From 6bf1357e5e8881cb3d9fd3bafce52c1ed38bf8b9 Mon Sep 17 00:00:00 2001 From: liyulin <501351981@qq.com> Date: Thu, 17 Aug 2023 13:51:56 +0800 Subject: [PATCH] =?UTF-8?q?change=EF=BC=9Aexcel=E5=AF=B9=E7=99=BE=E5=88=86?= =?UTF-8?q?=E6=95=B0=E5=92=8C=E5=8D=83=E5=88=86=E4=BD=8D=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E6=8C=81?= 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/excel.js | 44 ++++++- examples/dist/assets/DocxDemo-a0fa4afa.js | 1 + examples/dist/assets/ExcelDemo-241e947a.js | 1 + examples/dist/assets/JsDocxDemo-2175979c.js | 1 + examples/dist/assets/JsExcelDemo-da6c7b53.js | 1 + examples/dist/assets/JsPdfDemo-e01b6abb.js | 1 + examples/dist/assets/PdfDemo-711b6389.js | 1 + .../dist/assets/PreviewWrapper-95ad6bf9.js | 1 + examples/dist/assets/docx-a0687961.js | 96 ++++++++++++++ examples/dist/assets/hack-2409615a.js | 99 ++++++++++++++ examples/dist/assets/index-11290fb6.js | 121 ++++++++++++++++++ examples/dist/assets/omit-98776422.js | 1 + examples/dist/index.html | 2 +- 15 files changed, 369 insertions(+), 5 deletions(-) create mode 100644 examples/dist/assets/DocxDemo-a0fa4afa.js create mode 100644 examples/dist/assets/ExcelDemo-241e947a.js create mode 100644 examples/dist/assets/JsDocxDemo-2175979c.js create mode 100644 examples/dist/assets/JsExcelDemo-da6c7b53.js create mode 100644 examples/dist/assets/JsPdfDemo-e01b6abb.js create mode 100644 examples/dist/assets/PdfDemo-711b6389.js create mode 100644 examples/dist/assets/PreviewWrapper-95ad6bf9.js create mode 100644 examples/dist/assets/docx-a0687961.js create mode 100644 examples/dist/assets/hack-2409615a.js create mode 100644 examples/dist/assets/index-11290fb6.js create mode 100644 examples/dist/assets/omit-98776422.js diff --git a/core/packages/js-excel/package.json b/core/packages/js-excel/package.json index 2fcb747..39502af 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.3.0", + "version": "1.3.1", "description": "", "main": "lib/index.js", "files": [ diff --git a/core/packages/vue-excel/package.json b/core/packages/vue-excel/package.json index 26cdde0..cbbff1c 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.3.0", + "version": "1.3.1", "description": "", "main": "lib/index.js", "files": [ diff --git a/core/packages/vue-excel/src/excel.js b/core/packages/vue-excel/src/excel.js index 554e99b..1f0b498 100644 --- a/core/packages/vue-excel/src/excel.js +++ b/core/packages/vue-excel/src/excel.js @@ -148,6 +148,46 @@ function getCellText(cell){ const {numFmt, value, type} = cell; switch (type){ case 2: //数字 + //numFmt: + // "0.00%" + // "0.00_);(0.00)" + // "#,##0.000_);(#,##0.000)" 千分位 + // "#,##0.000;[Red]#,##0.000" + if(cell.style.numFmt){ + if(cell.style.numFmt.endsWith('%')){ + let precision = cell.style.numFmt.match(/\.(\d+)%/); + if(precision){ + return (value * 100).toFixed(precision[1].length) + '%'; + }else { + return value * 100 + '%'; + } + }else if(/(#(,#+)?)?0(\.0+)?/.test(cell.style.numFmt)){ + let precision = cell.style.numFmt.match(/\.(\d+)(_|;)/); + if(precision){ + precision = precision[1].length; + }else{ + precision = 0; + } + let result = value.toFixed(precision) + ''; + if(cell.style.numFmt.includes('#,##')){ + //千分位 + result = result.split('.'); + let number = result[0].split('').reverse(); + let newNumber = []; + for(let i = 0; i< number.length; i++){ + newNumber.push(number[i]); + if((i+1) % 3 === 0){ + newNumber.push(','); + } + + } + result[0] = newNumber.reverse().join(''); + result = result.join('.'); + } + return result; + } + + } return value + ''; case 3: //字符串 return value; @@ -295,7 +335,7 @@ function getStyle(cell){ export function transferExcelToSpreadSheet(workbook, options){ let workbookData = []; - // console.log(workbook, 'workbook') + //console.log(workbook, 'workbook'); workbook.eachSheet((sheet) => { //console.log(sheet,'sheet'); // 构造x-data-spreadsheet 的 sheet 数据源结构 @@ -348,7 +388,7 @@ export function transferExcelToSpreadSheet(workbook, options){ sheetData.rows.len = Math.max(Object.keys(sheetData.rows).length, 100); workbookData.push(sheetData); }); - // console.log(workbookData, 'workbookData') + //console.log(workbookData, 'workbookData') return { workbookData, workbookSource: workbook, diff --git a/examples/dist/assets/DocxDemo-a0fa4afa.js b/examples/dist/assets/DocxDemo-a0fa4afa.js new file mode 100644 index 0000000..7ba2f65 --- /dev/null +++ b/examples/dist/assets/DocxDemo-a0fa4afa.js @@ -0,0 +1 @@ +import{d as r}from"./docx-a0687961.js";import{d as x}from"./url-de9b02cf.js";import{d as m,_ as l,r as u,o as h,w as v,a as _,c as g,b as D,e as y,f as w,g as B,u as O}from"./index-11290fb6.js";import{P as R,u as f}from"./PreviewWrapper-95ad6bf9.js";import"./_commonjs-dynamic-modules-302442b1.js";const $=m({name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(e,{emit:o}){const t=u(null);let n=null;function a(){let c=t.value;r.getData(e.src,e.requestOptions).then(async d=>{n=await r.getBlob(d),r.render(n,c,e.options).then(()=>{o("rendered")}).catch(p=>{r.render("",c,e.options),o("error",p)})}).catch(d=>{r.render("",c,e.options),o("error",d)})}h(()=>{e.src&&a()}),v(()=>e.src,()=>{e.src?a():r.render("",t.value,e.options).then(()=>{o("rendered")})});function s(c){x(c||`vue-office-docx-${new Date().getTime()}.docx`,n)}return{rootRef:t,save:s}}}),b={class:"vue-office-docx"},k={class:"vue-office-docx-main",ref:"rootRef"};function V(e,o,t,n,a,s){return _(),g("div",b,[D("div",k,null,512)])}const i=l($,[["render",V]]);i.install=function(e){e.component(i.name,i)};const E={__name:"DocxDemo",setup(e){function o(){f.hideLoading()}function t(s){console.log("出差",s),f.hideLoading()}const n=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.docx",a=u();return(s,c)=>(_(),y(R,{accept:".docx",placeholder:"请输入docx文件地址","default-src":n},{default:w(d=>[B(O(i),{ref_key:"docxRef",ref:a,src:d.src,style:{flex:"1",height:"0"},onRendered:o,onError:t},null,8,["src"])]),_:1}))}},P=l(E,[["__scopeId","data-v-637d9a60"]]);export{P as default}; diff --git a/examples/dist/assets/ExcelDemo-241e947a.js b/examples/dist/assets/ExcelDemo-241e947a.js new file mode 100644 index 0000000..02b6a72 --- /dev/null +++ b/examples/dist/assets/ExcelDemo-241e947a.js @@ -0,0 +1 @@ +import{l as R,r as B,S as T,a as h,g as k,b as $,t as L,c as D}from"./hack-2409615a.js";import{d as q}from"./url-de9b02cf.js";import{d as F,_ as V,r as m,o as W,n as j,h as I,w as M,a as S,c as N,b as P,i as A,e as H,f as U,j as z,g as G,u as J}from"./index-11290fb6.js";import{P as K,u as O}from"./PreviewWrapper-95ad6bf9.js";import"./_commonjs-dynamic-modules-302442b1.js";const E={minColLength:20},Q=F({name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({...E})}},emits:["rendered","error"],setup(t,{emit:i}){const n=m(null),s=m(null);let r={_worksheets:[]},a=[],d=1,u=null,e=null,f=null,w=null;function _(c){w=c,$(c).then(l=>{if(!l._worksheets||l._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");const{workbookData:x,medias:g,workbookSource:o}=L(l,{...E,...t.options});a=g,r=o,f=null,d=1,D(),e.loadData(x),h(u,a,r._worksheets[d],f),i("rendered")}).catch(l=>{console.warn(l),a=[],r={_worksheets:[]},D(),e&&e.loadData({}),i("error",l)})}const v=R.debounce(B,200).bind(this,s.value),b=new MutationObserver(v),y={attributes:!0,childList:!0,subtree:!0};W(()=>{j(()=>{b.observe(s.value,y),v(s),e=new T(s.value,{mode:"read",showToolbar:!1,showContextmenu:t.options.showContextmenu||!1,view:{height:()=>n.value&&n.value.clientHeight||300,width:()=>n.value&&n.value.clientWidth||1200},row:{height:24,len:100},col:{len:26,width:80,indexWidth:60,minWidth:60},autoFocus:!1}).loadData({});let c=e.bottombar.swapFunc;e.bottombar.swapFunc=function(o){c.call(e.bottombar,o),d=o+1,setTimeout(()=>{e.reRender(),h(u,a,r._worksheets[d],f)})};let l=e.sheet.editor.clear;e.sheet.editor.clear=function(...o){l.apply(e.sheet.editor,o),setTimeout(()=>{h(u,a,r._worksheets[d],f)})};let x=e.sheet.editor.setOffset;e.sheet.editor.setOffset=function(...o){x.apply(e.sheet.editor,o),f=o[0],h(u,a,r._worksheets[d],f)},u=s.value.querySelector("canvas").getContext("2d"),t.src&&k(t.src,t.requestOptions).then(_).catch(o=>{e.loadData({}),i("error",o)})})}),I(()=>{b.disconnect(),e=null}),M(()=>t.src,()=>{t.src?k(t.src,t.requestOptions).then(_).catch(c=>{e.loadData({}),i("error",c)}):e.loadData({})});function C(c){q(c||`vue-office-excel-${new Date().getTime()}.xlsx`,w)}return{wrapperRef:n,rootRef:s,save:C}}}),X={class:"vue-office-excel",ref:"wrapperRef"},Y={class:"vue-office-excel-main",ref:"rootRef"};function Z(t,i,n,s,r,a){return S(),N("div",X,[P("div",Y,null,512)],512)}const p=V(Q,[["render",Z]]);p.install=function(t){t.component(p.name,p)};const re={__name:"ExcelDemo",setup(t){function i(){O.hideLoading()}function n(a){console.log("出差",a),O.hideLoading()}const s=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.xlsx",r=m();return(a,d)=>{const u=A("loading");return S(),H(K,{accept:".xlsx",placeholder:"请输入xlsx文件地址","default-src":s},{default:U(e=>[z(G(J(p),{ref_key:"docxRef",ref:r,src:e.src,style:{flex:"1",height:"0"},onRendered:i,onError:n},null,8,["src"]),[[u,!0]])]),_:1})}}};export{re as default}; diff --git a/examples/dist/assets/JsDocxDemo-2175979c.js b/examples/dist/assets/JsDocxDemo-2175979c.js new file mode 100644 index 0000000..0374312 --- /dev/null +++ b/examples/dist/assets/JsDocxDemo-2175979c.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 r=(i,e,t)=>(c(i,typeof e!="symbol"?e+"":e,t),t);import{d as n}from"./docx-a0687961.js";import{d as l}from"./url-de9b02cf.js";import{r as h,o as d,a as u,c as m}from"./index-11290fb6.js";import"./_commonjs-dynamic-modules-302442b1.js";class w{constructor(e,t={},s={}){r(this,"container",null);r(this,"wrapper",null);r(this,"wrapperMain",null);r(this,"options",{});r(this,"requestOptions",{});r(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)=>{n.getData(e,this.requestOptions).then(async o=>{this.fileData=await n.getBlob(o),n.render(this.fileData,this.wrapperMain,this.options).then(()=>{t()}).catch(a=>{n.render("",this.wrapperMain,this.options),s(a)})}).catch(o=>{n.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-da6c7b53.js b/examples/dist/assets/JsExcelDemo-da6c7b53.js new file mode 100644 index 0000000..b9f3ec3 --- /dev/null +++ b/examples/dist/assets/JsExcelDemo-da6c7b53.js @@ -0,0 +1 @@ +var c=Object.defineProperty;var p=(r,e,t)=>e in r?c(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var s=(r,e,t)=>(p(r,typeof e!="symbol"?e+"":e,t),t);import{S as u,a as n,b as d,t as w,c as l,l as x,r as m,g as f}from"./hack-2409615a.js";import{d as k}from"./url-de9b02cf.js";/* empty css */import{r as v,o as b,a as S,c as D}from"./index-11290fb6.js";import"./_commonjs-dynamic-modules-302442b1.js";const _={minColLength:20};class E{constructor(e,t={},i={}){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=i,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+1,setTimeout(()=>{e.xs.reRender(),n(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)})};let i=this.xs.sheet.editor.clear;this.xs.sheet.editor.clear=function(...a){i.apply(e.xs.sheet.editor,a),setTimeout(()=>{n(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)})};let o=this.xs.sheet.editor.setOffset;this.xs.sheet.editor.setOffset=function(...a){o.apply(e.xs.sheet.editor,a),e.offset=a[0],n(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)};const h=this.wrapperMain.querySelector("canvas");this.ctx=h.getContext("2d")}renderExcel(e){return this.fileData=e,d(e).then(t=>{if(!t._worksheets||t._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");const{workbookData:i,medias:o,workbookSource:h}=w(t,this.options);this.mediasSource=o,this.workbookDataSource=h,this.offset=null,this.sheetIndex=1,l(),this.xs.loadData(i),n(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=x.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,i)=>{f(e,this.requestOptions).then(o=>{this.renderExcel(o).then(t)}).catch(o=>{this.xs.loadData({}),i(o)})})}save(e){k(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(r,e,t){return new E(r,e,t)}const O={init:g},T={__name:"JsExcelDemo",setup(r){const e=v(null);return b(()=>{window.myExcelPreview=O.init(e.value,{}),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,i)=>(S(),D("div",{ref_key:"dom",ref:e,style:{height:"calc(100vh - 50px)"}},null,512))}};export{T as default}; diff --git a/examples/dist/assets/JsPdfDemo-e01b6abb.js b/examples/dist/assets/JsPdfDemo-e01b6abb.js new file mode 100644 index 0000000..e7a8c0b --- /dev/null +++ b/examples/dist/assets/JsPdfDemo-e01b6abb.js @@ -0,0 +1 @@ +var M=Object.defineProperty;var y=(d,l,Z)=>l in d?M(d,l,{enumerable:!0,configurable:!0,writable:!0,value:Z}):d[l]=Z;var G=(d,l,Z)=>(y(d,typeof l!="symbol"?l+"":l,Z),Z);import{l as u,g as h,d as T}from"./url-de9b02cf.js";import{o as L}from"./omit-98776422.js";/* empty css */import{r as R,o as p,a as z,c as I}from"./index-11290fb6.js";const s="IWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+e3ZhciBlPVssKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwO2EoMik7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMTE2KTthKDEyNik7YSgxMjgpO2EoMTMxKTthKDEzMyk7YSgxMzUpO2EoMTM3KTthKDEzOSk7YSgxNDMpO3ZhciByPWEoMTQ0KSxuPWEoMTQ5KSxpPWEoMTUwKSxzPWEoMTUyKSxvPWEoMTU2KSxjPWEoMjIyKSxsPWEoMjE2KSxoPWEoMjU3KSx1PWEoMjU4KTtjbGFzcyBXb3JrZXJUYXNre2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lO3RoaXMudGVybWluYXRlZD0hMTt0aGlzLl9jYXBhYmlsaXR5PW5ldyByLlByb21pc2VDYXBhYmlsaXR5fWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX10LldvcmtlclRhc2s9V29ya2VyVGFzaztjbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWMgc2V0dXAoZSx0KXtsZXQgYT0hMTtlLm9uKCJ0ZXN0IiwoZnVuY3Rpb24odCl7aWYoIWEpe2E9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSkpO2Uub24oImNvbmZpZ3VyZSIsKGZ1bmN0aW9uKGUpeygwLHIuc2V0VmVyYm9zaXR5TGV2ZWwpKGUudmVyYm9zaXR5KX0pKTtlLm9uKCJHZXREb2NSZXF1ZXN0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIFdvcmtlck1lc3NhZ2VIYW5kbGVyLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpfSkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxkPSExLGY9bnVsbDtjb25zdCBnPW5ldyBTZXQscD0oMCxyLmdldFZlcmJvc2l0eUxldmVsKSgpLHtkb2NJZDptLGFwaVZlcnNpb246Yn09ZSx5PSIzLjkuMTc5IjtpZihiIT09eSl0aHJvdyBuZXcgRXJyb3IoYFRoZSBBUEkgdmVyc2lvbiAiJHtifSIgZG9lcyBub3QgbWF0Y2ggdGhlIFdvcmtlciB2ZXJzaW9uICIke3l9Ii5gKTtjb25zdCB3PVtdO2Zvcihjb25zdCBlIGluW10pdy5wdXNoKGUpO2lmKHcubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGBBcnJheS5wcm90b3R5cGVgIGNvbnRhaW5zIHVuZXhwZWN0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzOiAiK3cuam9pbigiLCAiKSsiOyB0aHVzIGJyZWFraW5nIGUuZy4gYGZvci4uLmluYCBpdGVyYXRpb24gb2YgYEFycmF5YHMuIik7Y29uc3QgUz1tKyJfd29ya2VyIjtsZXQgeD1uZXcgaC5NZXNzYWdlSGFuZGxlcihTLG0sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7Zy5hZGQoZSl9ZnVuY3Rpb24gZmluaXNoV29ya2VyVGFzayhlKXtlLmZpbmlzaCgpO2cuZGVsZXRlKGUpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFGb250cyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBQcm9taXNlLmFsbChbYS5sb2FkWGZhRm9udHMoeCxlKS5jYXRjaCgoZT0+e30pKS50aGVuKCgoKT0+ZmluaXNoV29ya2VyVGFzayhlKSkpLGEubG9hZFhmYUltYWdlcygpXSl9Y29uc3RbcixuXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOnIsZmluZ2VycHJpbnRzOm4saHRtbEZvclhmYTp0P2F3YWl0IGEuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcihlKXtsZXR7ZGF0YTp0LHBhc3N3b3JkOmEsZGlzYWJsZUF1dG9GZXRjaDppLHJhbmdlQ2h1bmtTaXplOm8sbGVuZ3RoOmMsZG9jQmFzZVVybDpsLGVuYWJsZVhmYTpoLGV2YWx1YXRvck9wdGlvbnM6ZH09ZTtjb25zdCBnPXtzb3VyY2U6bnVsbCxkaXNhYmxlQXV0b0ZldGNoOmksZG9jQmFzZVVybDpsLGRvY0lkOm0sZW5hYmxlWGZhOmgsZXZhbHVhdG9yT3B0aW9uczpkLGhhbmRsZXI6eCxsZW5ndGg6YyxwYXNzd29yZDphLHJhbmdlQ2h1bmtTaXplOm99LHA9bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHk7bGV0IGI7aWYodCl7dHJ5e2cuc291cmNlPXQ7Yj1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIoZyk7cC5yZXNvbHZlKGIpfWNhdGNoKGUpe3AucmVqZWN0KGUpfXJldHVybiBwLnByb21pc2V9bGV0IHksdz1bXTt0cnl7eT1uZXcgdS5QREZXb3JrZXJTdHJlYW0oeCl9Y2F0Y2goZSl7cC5yZWplY3QoZSk7cmV0dXJuIHAucHJvbWlzZX1jb25zdCBTPXkuZ2V0RnVsbFJlYWRlcigpO1MuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoUy5pc1JhbmdlU3VwcG9ydGVkKXtnLnNvdXJjZT15O2cubGVuZ3RoPVMuY29udGVudExlbmd0aDtnLmRpc2FibGVBdXRvRmV0Y2h8fD1TLmlzU3RyZWFtaW5nU3VwcG9ydGVkO2I9bmV3IHMuTmV0d29ya1BkZk1hbmFnZXIoZyk7Zm9yKGNvbnN0IGUgb2YgdyliLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7dz1bXTtwLnJlc29sdmUoYik7Zj1udWxsfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5yZWplY3QoZSk7Zj1udWxsfSkpO2xldCBDPTA7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7Y29uc3QgcmVhZENodW5rPWZ1bmN0aW9uKGUpe2xldHt2YWx1ZTphLGRvbmU6aX09ZTt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGkpe2J8fGZ1bmN0aW9uKCl7Y29uc3QgZT0oMCxuLmFycmF5QnVmZmVyc1RvQnl0ZXMpKHcpO2MmJmUubGVuZ3RoIT09YyYmKDAsci53YXJuKSgicmVwb3J0ZWQgSFRUUCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYWN0dWFsIik7dHJ5e2cuc291cmNlPWU7Yj1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIoZyk7cC5yZXNvbHZlKGIpfWNhdGNoKGUpe3AucmVqZWN0KGUpfXc9W119KCk7Zj1udWxsO3JldHVybn1DKz1hLmJ5dGVMZW5ndGg7Uy5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8eC5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDpDLHRvdGFsOk1hdGgubWF4KEMsUy5jb250ZW50TGVuZ3RofHwwKX0pO2I/Yi5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGEpOncucHVzaChhKTtTLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07Uy5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucmVqZWN0KGUpO2Y9bnVsbH0pKTtmPWZ1bmN0aW9uKGUpe3kuY2FuY2VsQWxsUmVxdWVzdHMoZSl9O3JldHVybiBwLnByb21pc2V9eC5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmUoZSwicm90YXRlIiksYS5lbnN1cmUoZSwicmVmIiksYS5lbnN1cmUoZSwidXNlclVuaXQiKSxhLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihlKXtsZXRbdCxhLHIsbl09ZTtyZXR1cm57cm90YXRlOnQscmVmOmEsdXNlclVuaXQ6cix2aWV3Om59fSkpfSkpfSkpO3gub24oIkdldFBhZ2VJbmRleCIsKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9aS5SZWYuZ2V0KGUubnVtLGUuZ2VuKTtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFt0XSl9KSk7eC5vbigiR2V0RGVzdGluYXRpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KSk7eC5vbigiR2V0RGVzdGluYXRpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2UuaWRdKX0pKTt4Lm9uKCJHZXRQYWdlTGFiZWxzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSkpO3gub24oIkdldFBhZ2VMYXlvdXQiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7eC5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSkpO3gub24oIkdldFZpZXdlclByZWZlcmVuY2VzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pKTt4Lm9uKCJHZXRPcGVuQWN0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSkpO3gub24oIkdldEF0dGFjaG1lbnRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pKTt4Lm9uKCJHZXRKYXZhU2NyaXB0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiamF2YVNjcmlwdCIpfSkpO3gub24oIkdldERvY0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpfSkpO3gub24oIkdldFBhZ2VKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtsZXR7cGFnZUluZGV4OnR9PWU7cmV0dXJuIGEuZ2V0UGFnZSh0KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmUoZSwianNBY3Rpb25zIil9KSl9KSk7eC5vbigiR2V0T3V0bGluZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSkpO3gub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coIm9wdGlvbmFsQ29udGVudENvbmZpZyIpfSkpO3gub24oIkdldFBlcm1pc3Npb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pKTt4Lm9uKCJHZXRNZXRhZGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGEuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKV0pfSkpO3gub24oIkdldE1hcmtJbmZvIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTt4Lm9uKCJHZXREYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVzfSkpfSkpO3gub24oIkdldEFubm90YXRpb25zIiwoZnVuY3Rpb24oZSl7bGV0e3BhZ2VJbmRleDp0LGludGVudDpyfT1lO3JldHVybiBhLmdldFBhZ2UodCkudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHt0fWApO3N0YXJ0V29ya2VyVGFzayhhKTtyZXR1cm4gZS5nZXRBbm5vdGF0aW9uc0RhdGEoeCxhLHIpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKGEpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKGEpO3Rocm93IGV9KSl9KSl9KSk7eC5vbigiR2V0RmllbGRPYmplY3RzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKX0pKTt4Lm9uKCJIYXNKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImhhc0pTQWN0aW9ucyIpfSkpO3gub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImNhbGN1bGF0aW9uT3JkZXJJZHMiKX0pKTt4Lm9uKCJTYXZlRG9jdW1lbnQiLChhc3luYyBmdW5jdGlvbihlKXtsZXR7aXNQdXJlWGZhOnQsbnVtUGFnZXM6cyxhbm5vdGF0aW9uU3RvcmFnZTpjLGZpbGVuYW1lOmh9PWU7Y29uc3QgdT1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygic3RhcnRYUmVmIiksYS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKV0sZD10P251bGw6KDAsbi5nZXROZXdBbm5vdGF0aW9uc01hcCkoYyksZj1hd2FpdCBhLmVuc3VyZURvYygieHJlZiIpO2lmKGQpe2NvbnN0IGU9by5Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhjLnZhbHVlcygpLGYsYS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKTtmb3IoY29uc3RbdCxyXW9mIGQpdS5wdXNoKGEuZ2V0UGFnZSh0KS50aGVuKChhPT57Y29uc3Qgbj1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke3R9YCk7cmV0dXJuIGEuc2F2ZU5ld0Fubm90YXRpb25zKHgsbixyLGUpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhuKX0pKX0pKSl9aWYodCl1LnB1c2goYS5zZXJpYWxpemVYZmFEYXRhKGMpKTtlbHNlIGZvcihsZXQgZT0wO2U8cztlKyspdS5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbih0KXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBTYXZlOiBwYWdlICR7ZX1gKTtyZXR1cm4gdC5zYXZlKHgsYSxjKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSl9KSl9KSkpO3JldHVybiBQcm9taXNlLmFsbCh1KS50aGVuKChmdW5jdGlvbihlKXtsZXRbYSxuLHMsbyxjLC4uLnVdPWUsZD1bXSxnPW51bGw7aWYodCl7Zz11WzBdO2lmKCFnKXJldHVybiBhLmJ5dGVzfWVsc2V7ZD11LmZsYXQoMik7aWYoMD09PWQubGVuZ3RoKXJldHVybiBhLmJ5dGVzfWNvbnN0IHA9cyYmbiBpbnN0YW5jZW9mIGkuRGljdCYmZC5zb21lKChlPT5lLm5lZWRBcHBlYXJhbmNlcykpLG09biBpbnN0YW5jZW9mIGkuRGljdCYmbi5nZXQoIlhGQSIpfHxudWxsO2xldCBiPW51bGwseT0hMTtpZihBcnJheS5pc0FycmF5KG0pKXtmb3IobGV0IGU9MCx0PW0ubGVuZ3RoO2U8dDtlKz0yKWlmKCJkYXRhc2V0cyI9PT1tW2VdKXtiPW1bZSsxXTt5PSEwfW51bGw9PT1iJiYoYj1mLmdldE5ld1RlbXBvcmFyeVJlZigpKX1lbHNlIG0mJigwLHIud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpO2xldCB3PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZi50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1mLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5mb3JFYWNoKCgodCxhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmKGVbdF09KDAsci5zdHJpbmdUb1BERlN0cmluZykoYSkpfSkpO3c9e3Jvb3RSZWY6Zi50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsLGVuY3J5cHRSZWY6Zi50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpmLmdldE5ld1RlbXBvcmFyeVJlZigpLGluZm9SZWY6Zi50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOmYudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOmM/bzpmLmxhc3RYUmVmU3RyZWFtUG9zPz9vLGZpbGVuYW1lOmh9fXJldHVybigwLGwuaW5jcmVtZW50YWxVcGRhdGUpKHtvcmlnaW5hbERhdGE6YS5ieXRlcyx4cmVmSW5mbzp3LG5ld1JlZnM6ZCx4cmVmOmYsaGFzWGZhOiEhbSx4ZmFEYXRhc2V0c1JlZjpiLGhhc1hmYURhdGFzZXRzRW50cnk6eSxuZWVkQXBwZWFyYW5jZXM6cCxhY3JvRm9ybVJlZjpzLGFjcm9Gb3JtOm4seGZhRGF0YTpnfSkuZmluYWxseSgoKCk9PntmLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSl9KSk7eC5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCBuPWUucGFnZUluZGV4O2EuZ2V0UGFnZShuKS50aGVuKChmdW5jdGlvbihhKXtjb25zdCBpPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHtufWApO3N0YXJ0V29ya2VyVGFzayhpKTtjb25zdCBzPXA+PXIuVmVyYm9zaXR5TGV2ZWwuSU5GT1M/RGF0ZS5ub3coKTowO2EuZ2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOngsc2luazp0LHRhc2s6aSxpbnRlbnQ6ZS5pbnRlbnQsY2FjaGVLZXk6ZS5jYWNoZUtleSxhbm5vdGF0aW9uU3RvcmFnZTplLmFubm90YXRpb25TdG9yYWdlfSkudGhlbigoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhpKTtzJiYoMCxyLmluZm8pKGBwYWdlPSR7bisxfSAtIGdldE9wZXJhdG9yTGlzdDogdGltZT0ke0RhdGUubm93KCktc31tcywgbGVuPSR7ZS5sZW5ndGh9YCk7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3gub24oIkdldFRleHRDb250ZW50IiwoZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSW5kZXg6bixpbmNsdWRlTWFya2VkQ29udGVudDppLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9PWU7YS5nZXRQYWdlKG4pLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IGE9bmV3IFdvcmtlclRhc2soIkdldFRleHRDb250ZW50OiBwYWdlICIrbik7c3RhcnRXb3JrZXJUYXNrKGEpO2NvbnN0IG89cD49ci5WZXJib3NpdHlMZXZlbC5JTkZPUz9EYXRlLm5vdygpOjA7ZS5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6eCx0YXNrOmEsc2luazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OmksZGlzYWJsZU5vcm1hbGl6YXRpb246c30pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhhKTtvJiYoMCxyLmluZm8pKGBwYWdlPSR7bisxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktbykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soYSk7YS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3gub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmUoZSwiZ2V0U3RydWN0VHJlZSIpfSkpfSkpO3gub24oIkZvbnRGYWxsYmFjayIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmZvbnRGYWxsYmFjayhlLmlkLHgpfSkpO3gub24oIkNsZWFudXAiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5jbGVhbnVwKCEwKX0pKTt4Lm9uKCJUZXJtaW5hdGUiLChmdW5jdGlvbihlKXtkPSEwO2NvbnN0IHQ9W107aWYoYSl7YS50ZXJtaW5hdGUobmV3IHIuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgZT1hLmNsZWFudXAoKTt0LnB1c2goZSk7YT1udWxsfWVsc2UoMCxjLmNsZWFyR2xvYmFsQ2FjaGVzKSgpO2YmJmYobmV3IHIuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2YgZyl7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7eC5kZXN0cm95KCk7eD1udWxsfSkpfSkpO3gub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7IWZ1bmN0aW9uIHNldHVwRG9jKGUpe2Z1bmN0aW9uIG9uU3VjY2VzcyhlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7eC5zZW5kKCJHZXREb2MiLHtwZGZJbmZvOmV9KX1mdW5jdGlvbiBvbkZhaWx1cmUoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGUgaW5zdGFuY2VvZiByLlBhc3N3b3JkRXhjZXB0aW9uKXtjb25zdCB0PW5ldyBXb3JrZXJUYXNrKGBQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgJHtlLmNvZGV9YCk7c3RhcnRXb3JrZXJUYXNrKHQpO3guc2VuZFdpdGhQcm9taXNlKCJQYXNzd29yZFJlcXVlc3QiLGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2xldHtwYXNzd29yZDpyfT1lO2ZpbmlzaFdvcmtlclRhc2sodCk7YS51cGRhdGVQYXNzd29yZChyKTtwZGZNYW5hZ2VyUmVhZHkoKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKHQpO3guc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pKX1lbHNlIGUgaW5zdGFuY2VvZiByLkludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLk1pc3NpbmdQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIHIuVW5rbm93bkVycm9yRXhjZXB0aW9uP3guc2VuZCgiRG9jRXhjZXB0aW9uIixlKTp4LnNlbmQoIkRvY0V4Y2VwdGlvbiIsbmV3IHIuVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpKX1mdW5jdGlvbiBwZGZNYW5hZ2VyUmVhZHkoKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCExKS50aGVuKG9uU3VjY2VzcywoZnVuY3Rpb24oZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2UgaW5zdGFuY2VvZiBuLlhSZWZQYXJzZUV4Y2VwdGlvbj9hLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9KSk6b25GYWlsdXJlKGUpfSkpfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtnZXRQZGZNYW5hZ2VyKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGQpe2UudGVybWluYXRlKG5ldyByLkFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9YT1lO2EucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbigoZT0+e3guc2VuZCgiRGF0YUxvYWRlZCIse2xlbmd0aDplLmJ5dGVzLmJ5dGVMZW5ndGh9KX0pKX0pKS50aGVuKHBkZk1hbmFnZXJSZWFkeSxvbkZhaWx1cmUpfShlKTtlPW51bGx9KSk7cmV0dXJuIFN9c3RhdGljIGluaXRpYWxpemVGcm9tUG9ydChlKXtjb25zdCB0PW5ldyBoLk1lc3NhZ2VIYW5kbGVyKCJ3b3JrZXIiLCJtYWluIixlKTtXb3JrZXJNZXNzYWdlSGFuZGxlci5zZXR1cCh0LGUpO3Quc2VuZCgicmVhZHkiLG51bGwpfX10Lldvcmtlck1lc3NhZ2VIYW5kbGVyPVdvcmtlck1lc3NhZ2VIYW5kbGVyOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhci5pc05vZGVKUyYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIGV9KHNlbGYpJiZXb3JrZXJNZXNzYWdlSGFuZGxlci5pbml0aWFsaXplRnJvbVBvcnQoc2VsZil9LChlLHQsYSk9Pnt2YXIgcj1hKDMpLG49YSg0KSxpPWEoNjkpLHM9YSg3MCksbz0iV2ViQXNzZW1ibHkiLGM9bltvXSxsPTchPT1FcnJvcigiZSIse2NhdXNlOjd9KS5jYXVzZSxleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcj1mdW5jdGlvbihlLHQpe3ZhciBhPXt9O2FbZV09cyhlLHQsbCk7cih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGFyaXR5OjEsZm9yY2VkOmx9LGEpfSxleHBvcnRXZWJBc3NlbWJseUVycm9yQ2F1c2VXcmFwcGVyPWZ1bmN0aW9uKGUsdCl7aWYoYyYmY1tlXSl7dmFyIGE9e307YVtlXT1zKG8rIi4iK2UsdCxsKTtyKHt0YXJnZXQ6byxzdGF0OiEwLGNvbnN0cnVjdG9yOiEwLGFyaXR5OjEsZm9yY2VkOmx9LGEpfX07ZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIkVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIEVycm9yKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKTtleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiRXZhbEVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIEV2YWxFcnJvcih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSk7ZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIlJhbmdlRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gUmFuZ2VFcnJvcih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSk7ZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIlJlZmVyZW5jZUVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIFJlZmVyZW5jZUVycm9yKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKTtleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiU3ludGF4RXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gU3ludGF4RXJyb3IodCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpO2V4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJUeXBlRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gVHlwZUVycm9yKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKTtleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiVVJJRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gVVJJRXJyb3IodCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpO2V4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIoIkNvbXBpbGVFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBDb21waWxlRXJyb3IodCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpO2V4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIoIkxpbmtFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBMaW5rRXJyb3IodCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpO2V4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIoIlJ1bnRpbWVFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBSdW50aW1lRXJyb3IodCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpfSwoZSx0LGEpPT57dmFyIHI9YSg0KSxuPWEoNSkuZixpPWEoNDQpLHM9YSg0OCksbz1hKDM4KSxjPWEoNTYpLGw9YSg2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGEsaCx1LGQsZixnPWUudGFyZ2V0LHA9ZS5nbG9iYWwsbT1lLnN0YXQ7aWYoYT1wP3I6bT9yW2ddfHxvKGcse30pOihyW2ddfHx7fSkucHJvdG90eXBlKWZvcihoIGluIHQpe2Q9dFtoXTt1PWUuZG9udENhbGxHZXRTZXQ/KGY9bihhLGgpKSYmZi52YWx1ZTphW2hdO2lmKCFsKHA/aDpnKyhtPyIuIjoiIyIpK2gsZS5mb3JjZWQpJiZ2b2lkIDAhPT11KXtpZih0eXBlb2YgZD09dHlwZW9mIHUpY29udGludWU7YyhkLHUpfShlLnNoYW18fHUmJnUuc2hhbSkmJmkoZCwic2hhbSIsITApO3MoYSxoLGQsZSl9fX0sZnVuY3Rpb24oZSl7dmFyIGNoZWNrPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLk1hdGg9PU1hdGgmJmV9O2UuZXhwb3J0cz1jaGVjaygib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93KXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fHRoaXN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9LChlLHQsYSk9Pnt2YXIgcj1hKDYpLG49YSg4KSxpPWEoMTApLHM9YSgxMSksbz1hKDEyKSxjPWEoMTgpLGw9YSgzOSksaD1hKDQyKSx1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPXI/dTpmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KXtlPW8oZSk7dD1jKHQpO2lmKGgpdHJ5e3JldHVybiB1KGUsdCl9Y2F0Y2goZSl7fWlmKGwoZSx0KSlyZXR1cm4gcyghbihpLmYsZSx0KSxlW3RdKX19LChlLHQsYSk9Pnt2YXIgcj1hKDcpO2UuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSxlPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaChlKXtyZXR1cm4hMH19fSwoZSx0LGEpPT57dmFyIHI9YSg5KSxuPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO2UuZXhwb3J0cz1yP24uYmluZChuKTpmdW5jdGlvbigpe3JldHVybiBuLmFwcGx5KG4sYXJndW1lbnRzKX19LChlLHQsYSk9Pnt2YXIgcj1hKDcpO2UuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBlfHxlLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pKX0sKGUsdCk9PnsidXNlIHN0cmljdCI7dmFyIGE9e30ucHJvcGVydHlJc0VudW1lcmFibGUscj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG49ciYmIWEuY2FsbCh7MToyfSwxKTt0LmY9bj9mdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShlKXt2YXIgdD1yKHRoaXMsZSk7cmV0dXJuISF0JiZ0LmVudW1lcmFibGV9OmF9LGU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSwoZSx0LGEpPT57dmFyIHI9YSgxMyksbj1hKDE2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIobihlKSl9fSwoZSx0LGEpPT57dmFyIHI9YSgxNCksbj1hKDcpLGk9YSgxNSkscz1PYmplY3Qsbz1yKCIiLnNwbGl0KTtlLmV4cG9ydHM9bigoZnVuY3Rpb24oKXtyZXR1cm4hcygieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKGUpe3JldHVybiJTdHJpbmciPT1pKGUpP28oZSwiIik6cyhlKX06c30sKGUsdCxhKT0+e3ZhciByPWEoOSksbj1GdW5jdGlvbi5wcm90b3R5cGUsaT1uLmNhbGwscz1yJiZuLmJpbmQuYmluZChpLGkpO2UuZXhwb3J0cz1yP3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkoZSxhcmd1bWVudHMpfX19LChlLHQsYSk9Pnt2YXIgcj1hKDE0KSxuPXIoe30udG9TdHJpbmcpLGk9cigiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKG4oZSksOCwtMSl9fSwoZSx0LGEpPT57dmFyIHI9YSgxNyksbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHIoZSkpdGhyb3cgbigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIitlKTtyZXR1cm4gZX19LGU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9fSwoZSx0LGEpPT57dmFyIHI9YSgxOSksbj1hKDIzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9cihlLCJzdHJpbmciKTtyZXR1cm4gbih0KT90OnQrIiJ9fSwoZSx0LGEpPT57dmFyIHI9YSg4KSxuPWEoMjApLGk9YSgyMykscz1hKDMwKSxvPWEoMzMpLGM9YSgzNCksbD1UeXBlRXJyb3IsaD1jKCJ0b1ByaW1pdGl2ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFuKGUpfHxpKGUpKXJldHVybiBlO3ZhciBhLGM9cyhlLGgpO2lmKGMpe3ZvaWQgMD09PXQmJih0PSJkZWZhdWx0Iik7YT1yKGMsZSx0KTtpZighbihhKXx8aShhKSlyZXR1cm4gYTt0aHJvdyBsKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX12b2lkIDA9PT10JiYodD0ibnVtYmVyIik7cmV0dXJuIG8oZSx0KX19LChlLHQsYSk9Pnt2YXIgcj1hKDIxKSxuPWEoMjIpLGk9bi5hbGw7ZS5leHBvcnRzPW4uSVNfSFRNTEREQT9mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/bnVsbCE9PWU6cihlKXx8ZT09PWl9OmZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTpyKGUpfX0sKGUsdCxhKT0+e3ZhciByPWEoMjIpLG49ci5hbGw7ZS5leHBvcnRzPXIuSVNfSFRNTEREQT9mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZXx8ZT09PW59OmZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfX0sZT0+e3ZhciB0PSJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmFsbCxhPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ7ZS5leHBvcnRzPXthbGw6dCxJU19IVE1MRERBOmF9fSwoZSx0LGEpPT57dmFyIHI9YSgyNCksbj1hKDIxKSxpPWEoMjUpLHM9YSgyNiksbz1PYmplY3Q7ZS5leHBvcnRzPXM/ZnVuY3Rpb24oZSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBlfTpmdW5jdGlvbihlKXt2YXIgdD1yKCJTeW1ib2wiKTtyZXR1cm4gbih0KSYmaSh0LnByb3RvdHlwZSxvKGUpKX19LChlLHQsYSk9Pnt2YXIgcj1hKDQpLG49YSgyMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8oYT1yW2VdLG4oYSk/YTp2b2lkIDApOnJbZV0mJnJbZV1bdF07dmFyIGF9fSwoZSx0LGEpPT57dmFyIHI9YSgxNCk7ZS5leHBvcnRzPXIoe30uaXNQcm90b3R5cGVPZil9LChlLHQsYSk9Pnt2YXIgcj1hKDI3KTtlLmV4cG9ydHM9ciYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sKGUsdCxhKT0+e3ZhciByPWEoMjgpLG49YSg3KSxpPWEoNCkuU3RyaW5nO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFuKChmdW5jdGlvbigpe3ZhciBlPVN5bWJvbCgpO3JldHVybiFpKGUpfHwhKE9iamVjdChlKWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZyJiZyPDQxfSkpfSwoZSx0LGEpPT57dmFyIHIsbixpPWEoNCkscz1hKDI5KSxvPWkucHJvY2VzcyxjPWkuRGVubyxsPW8mJm8udmVyc2lvbnN8fGMmJmMudmVyc2lvbixoPWwmJmwudjg7aCYmKG49KHI9aC5zcGxpdCgiLiIpKVswXT4wJiZyWzBdPDQ/MTorKHJbMF0rclsxXSkpOyFuJiZzJiYoIShyPXMubWF0Y2goL0VkZ2VcLyhcZCspLykpfHxyWzFdPj03NCkmJihyPXMubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihuPStyWzFdKTtlLmV4cG9ydHM9bn0sZT0+e2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpfHwiIn0sKGUsdCxhKT0+e3ZhciByPWEoMzEpLG49YSgxNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGE9ZVt0XTtyZXR1cm4gbihhKT92b2lkIDA6cihhKX19LChlLHQsYSk9Pnt2YXIgcj1hKDIxKSxuPWEoMzIpLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihyKGUpKXJldHVybiBlO3Rocm93IGkobihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSxlPT57dmFyIHQ9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIHQoZSl9Y2F0Y2goZSl7cmV0dXJuIk9iamVjdCJ9fX0sKGUsdCxhKT0+e3ZhciByPWEoOCksbj1hKDIxKSxpPWEoMjApLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBhLG87aWYoInN0cmluZyI9PT10JiZuKGE9ZS50b1N0cmluZykmJiFpKG89cihhLGUpKSlyZXR1cm4gbztpZihuKGE9ZS52YWx1ZU9mKSYmIWkobz1yKGEsZSkpKXJldHVybiBvO2lmKCJzdHJpbmciIT09dCYmbihhPWUudG9TdHJpbmcpJiYhaShvPXIoYSxlKSkpcmV0dXJuIG87dGhyb3cgcygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSwoZSx0LGEpPT57dmFyIHI9YSg0KSxuPWEoMzUpLGk9YSgzOSkscz1hKDQxKSxvPWEoMjcpLGM9YSgyNiksbD1yLlN5bWJvbCxoPW4oIndrcyIpLHU9Yz9sLmZvcnx8bDpsJiZsLndpdGhvdXRTZXR0ZXJ8fHM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2koaCxlKXx8KGhbZV09byYmaShsLGUpP2xbZV06dSgiU3ltYm9sLiIrZSkpO3JldHVybiBoW2VdfX0sKGUsdCxhKT0+e3ZhciByPWEoMzYpLG49YSgzNyk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuW2VdfHwobltlXT12b2lkIDAhPT10P3Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4zMS4xIixtb2RlOnI/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDIzIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjMxLjEvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sZT0+e2UuZXhwb3J0cz0hMX0sKGUsdCxhKT0+e3ZhciByPWEoNCksbj1hKDM4KSxpPSJfX2NvcmUtanNfc2hhcmVkX18iLHM9cltpXXx8bihpLHt9KTtlLmV4cG9ydHM9c30sKGUsdCxhKT0+e3ZhciByPWEoNCksbj1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e24ocixlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKGEpe3JbZV09dH1yZXR1cm4gdH19LChlLHQsYSk9Pnt2YXIgcj1hKDE0KSxuPWEoNDApLGk9cih7fS5oYXNPd25Qcm9wZXJ0eSk7ZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uIGhhc093bihlLHQpe3JldHVybiBpKG4oZSksdCl9fSwoZSx0LGEpPT57dmFyIHI9YSgxNiksbj1PYmplY3Q7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKHIoZSkpfX0sKGUsdCxhKT0+e3ZhciByPWEoMTQpLG49MCxpPU1hdGgucmFuZG9tKCkscz1yKDEuLnRvU3RyaW5nKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1lPyIiOmUpKyIpXyIrcygrK24raSwzNil9fSwoZSx0LGEpPT57dmFyIHI9YSg2KSxuPWEoNyksaT1hKDQzKTtlLmV4cG9ydHM9IXImJiFuKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoaSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSwoZSx0LGEpPT57dmFyIHI9YSg0KSxuPWEoMjApLGk9ci5kb2N1bWVudCxzPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHM/aS5jcmVhdGVFbGVtZW50KGUpOnt9fX0sKGUsdCxhKT0+e3ZhciByPWEoNiksbj1hKDQ1KSxpPWEoMTEpO2UuZXhwb3J0cz1yP2Z1bmN0aW9uKGUsdCxhKXtyZXR1cm4gbi5mKGUsdCxpKDEsYSkpfTpmdW5jdGlvbihlLHQsYSl7ZVt0XT1hO3JldHVybiBlfX0sKGUsdCxhKT0+e3ZhciByPWEoNiksbj1hKDQyKSxpPWEoNDYpLHM9YSg0Nyksbz1hKDE4KSxjPVR5cGVFcnJvcixsPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdT0iZW51bWVyYWJsZSIsZD0iY29uZmlndXJhYmxlIixmPSJ3cml0YWJsZSI7dC5mPXI/aT9mdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShlLHQsYSl7cyhlKTt0PW8odCk7cyhhKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSYmInByb3RvdHlwZSI9PT10JiYidmFsdWUiaW4gYSYmZiBpbiBhJiYhYVtmXSl7dmFyIHI9aChlLHQpO2lmKHImJnJbZl0pe2VbdF09YS52YWx1ZTthPXtjb25maWd1cmFibGU6ZCBpbiBhP2FbZF06cltkXSxlbnVtZXJhYmxlOnUgaW4gYT9hW3VdOnJbdV0sd3JpdGFibGU6ITF9fX1yZXR1cm4gbChlLHQsYSl9Omw6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGEpe3MoZSk7dD1vKHQpO3MoYSk7aWYobil0cnl7cmV0dXJuIGwoZSx0LGEpfWNhdGNoKGUpe31pZigiZ2V0ImluIGF8fCJzZXQiaW4gYSl0aHJvdyBjKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpOyJ2YWx1ZSJpbiBhJiYoZVt0XT1hLnZhbHVlKTtyZXR1cm4gZX19LChlLHQsYSk9Pnt2YXIgcj1hKDYpLG49YSg3KTtlLmV4cG9ydHM9ciYmbigoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKXt9KSwicHJvdG90eXBlIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KSl9LChlLHQsYSk9Pnt2YXIgcj1hKDIwKSxuPVN0cmluZyxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocihlKSlyZXR1cm4gZTt0aHJvdyBpKG4oZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSwoZSx0LGEpPT57dmFyIHI9YSgyMSksbj1hKDQ1KSxpPWEoNDkpLHM9YSgzOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxhLG8pe298fChvPXt9KTt2YXIgYz1vLmVudW1lcmFibGUsbD12b2lkIDAhPT1vLm5hbWU/by5uYW1lOnQ7cihhKSYmaShhLGwsbyk7aWYoby5nbG9iYWwpYz9lW3RdPWE6cyh0LGEpO2Vsc2V7dHJ5e28udW5zYWZlP2VbdF0mJihjPSEwKTpkZWxldGUgZVt0XX1jYXRjaChlKXt9Yz9lW3RdPWE6bi5mKGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohby5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IW8ubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19LChlLHQsYSk9Pnt2YXIgcj1hKDE0KSxuPWEoNyksaT1hKDIxKSxzPWEoMzkpLG89YSg2KSxjPWEoNTApLkNPTkZJR1VSQUJMRSxsPWEoNTEpLGg9YSg1MiksdT1oLmVuZm9yY2UsZD1oLmdldCxmPVN0cmluZyxnPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxwPXIoIiIuc2xpY2UpLG09cigiIi5yZXBsYWNlKSxiPXIoW10uam9pbikseT1vJiYhbigoZnVuY3Rpb24oKXtyZXR1cm4gOCE9PWcoKGZ1bmN0aW9uKCl7fSksImxlbmd0aCIse3ZhbHVlOjh9KS5sZW5ndGh9KSksdz1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksUz1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGEpeyJTeW1ib2woIj09PXAoZih0KSwwLDcpJiYodD0iWyIrbShmKHQpLC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIik7YSYmYS5nZXR0ZXImJih0PSJnZXQgIit0KTthJiZhLnNldHRlciYmKHQ9InNldCAiK3QpOyghcyhlLCJuYW1lIil8fGMmJmUubmFtZSE9PXQpJiYobz9nKGUsIm5hbWUiLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT10KTt5JiZhJiZzKGEsImFyaXR5IikmJmUubGVuZ3RoIT09YS5hcml0eSYmZyhlLCJsZW5ndGgiLHt2YWx1ZTphLmFyaXR5fSk7dHJ5e2EmJnMoYSwiY29uc3RydWN0b3IiKSYmYS5jb25zdHJ1Y3Rvcj9vJiZnKGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6ZS5wcm90b3R5cGUmJihlLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGUpe312YXIgcj11KGUpO3Mociwic291cmNlIil8fChyLnNvdXJjZT1iKHcsInN0cmluZyI9PXR5cGVvZiB0P3Q6IiIpKTtyZXR1cm4gZX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPVMoKGZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuIGkodGhpcykmJmQodGhpcykuc291cmNlfHxsKHRoaXMpfSksInRvU3RyaW5nIil9LChlLHQsYSk9Pnt2YXIgcj1hKDYpLG49YSgzOSksaT1GdW5jdGlvbi5wcm90b3R5cGUscz1yJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89bihpLCJuYW1lIiksYz1vJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uIHNvbWV0aGluZygpe30ubmFtZSxsPW8mJighcnx8ciYmcyhpLCJuYW1lIikuY29uZmlndXJhYmxlKTtlLmV4cG9ydHM9e0VYSVNUUzpvLFBST1BFUjpjLENPTkZJR1VSQUJMRTpsfX0sKGUsdCxhKT0+e3ZhciByPWEoMTQpLG49YSgyMSksaT1hKDM3KSxzPXIoRnVuY3Rpb24udG9TdHJpbmcpO24oaS5pbnNwZWN0U291cmNlKXx8KGkuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gcyhlKX0pO2UuZXhwb3J0cz1pLmluc3BlY3RTb3VyY2V9LChlLHQsYSk9Pnt2YXIgcixuLGkscz1hKDUzKSxvPWEoNCksYz1hKDIwKSxsPWEoNDQpLGg9YSgzOSksdT1hKDM3KSxkPWEoNTQpLGY9YSg1NSksZz0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLHA9by5UeXBlRXJyb3IsbT1vLldlYWtNYXA7aWYoc3x8dS5zdGF0ZSl7dmFyIGI9dS5zdGF0ZXx8KHUuc3RhdGU9bmV3IG0pO2IuZ2V0PWIuZ2V0O2IuaGFzPWIuaGFzO2Iuc2V0PWIuc2V0O3I9ZnVuY3Rpb24oZSx0KXtpZihiLmhhcyhlKSl0aHJvdyBwKGcpO3QuZmFjYWRlPWU7Yi5zZXQoZSx0KTtyZXR1cm4gdH07bj1mdW5jdGlvbihlKXtyZXR1cm4gYi5nZXQoZSl8fHt9fTtpPWZ1bmN0aW9uKGUpe3JldHVybiBiLmhhcyhlKX19ZWxzZXt2YXIgeT1kKCJzdGF0ZSIpO2ZbeV09ITA7cj1mdW5jdGlvbihlLHQpe2lmKGgoZSx5KSl0aHJvdyBwKGcpO3QuZmFjYWRlPWU7bChlLHksdCk7cmV0dXJuIHR9O249ZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSx5KT9lW3ldOnt9fTtpPWZ1bmN0aW9uKGUpe3JldHVybiBoKGUseSl9fWUuZXhwb3J0cz17c2V0OnIsZ2V0Om4saGFzOmksZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gaShlKT9uKGUpOnIoZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGE7aWYoIWModCl8fChhPW4odCkpLnR5cGUhPT1lKXRocm93IHAoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitlKyIgcmVxdWlyZWQiKTtyZXR1cm4gYX19fX0sKGUsdCxhKT0+e3ZhciByPWEoNCksbj1hKDIxKSxpPXIuV2Vha01hcDtlLmV4cG9ydHM9bihpKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhpKSl9LChlLHQsYSk9Pnt2YXIgcj1hKDM1KSxuPWEoNDEpLGk9cigia2V5cyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaVtlXXx8KGlbZV09bihlKSl9fSxlPT57ZS5leHBvcnRzPXt9fSwoZSx0LGEpPT57dmFyIHI9YSgzOSksbj1hKDU3KSxpPWEoNSkscz1hKDQ1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGEpe2Zvcih2YXIgbz1uKHQpLGM9cy5mLGw9aS5mLGg9MDtoPG8ubGVuZ3RoO2grKyl7dmFyIHU9b1toXTtyKGUsdSl8fGEmJnIoYSx1KXx8YyhlLHUsbCh0LHUpKX19fSwoZSx0LGEpPT57dmFyIHI9YSgyNCksbj1hKDE0KSxpPWEoNTgpLHM9YSg2Nyksbz1hKDQ3KSxjPW4oW10uY29uY2F0KTtlLmV4cG9ydHM9cigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24gb3duS2V5cyhlKXt2YXIgdD1pLmYobyhlKSksYT1zLmY7cmV0dXJuIGE/Yyh0LGEoZSkpOnR9fSwoZSx0LGEpPT57dmFyIHI9YSg1OSksbj1hKDY2KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKXtyZXR1cm4gcihlLG4pfX0sKGUsdCxhKT0+e3ZhciByPWEoMTQpLG49YSgzOSksaT1hKDEyKSxzPWEoNjApLmluZGV4T2Ysbz1hKDU1KSxjPXIoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGEscj1pKGUpLGw9MCxoPVtdO2ZvcihhIGluIHIpIW4obyxhKSYmbihyLGEpJiZjKGgsYSk7Zm9yKDt0Lmxlbmd0aD5sOyluKHIsYT10W2wrK10pJiYofnMoaCxhKXx8YyhoLGEpKTtyZXR1cm4gaH19LChlLHQsYSk9Pnt2YXIgcj1hKDEyKSxuPWEoNjEpLGk9YSg2NCksY3JlYXRlTWV0aG9kPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LGEscyl7dmFyIG8sYz1yKHQpLGw9aShjKSxoPW4ocyxsKTtpZihlJiZhIT1hKXtmb3IoO2w+aDspaWYoKG89Y1toKytdKSE9bylyZXR1cm4hMH1lbHNlIGZvcig7bD5oO2grKylpZigoZXx8aCBpbiBjKSYmY1toXT09PWEpcmV0dXJuIGV8fGh8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpjcmVhdGVNZXRob2QoITApLGluZGV4T2Y6Y3JlYXRlTWV0aG9kKCExKX19LChlLHQsYSk9Pnt2YXIgcj1hKDYyKSxuPU1hdGgubWF4LGk9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGE9cihlKTtyZXR1cm4gYTwwP24oYSt0LDApOmkoYSx0KX19LChlLHQsYSk9Pnt2YXIgcj1hKDYzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6cih0KX19LGU9Pnt2YXIgdD1NYXRoLmNlaWwsYT1NYXRoLmZsb29yO2UuZXhwb3J0cz1NYXRoLnRydW5jfHxmdW5jdGlvbiB0cnVuYyhlKXt2YXIgcj0rZTtyZXR1cm4ocj4wP2E6dCkocil9fSwoZSx0LGEpPT57dmFyIHI9YSg2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGUubGVuZ3RoKX19LChlLHQsYSk9Pnt2YXIgcj1hKDYyKSxuPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT4wP24ocihlKSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZT0+e2UuZXhwb3J0cz1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdfSwoZSx0KT0+e3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwoZSx0LGEpPT57dmFyIHI9YSg3KSxuPWEoMjEpLGk9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgYT1vW3MoZSldO3JldHVybiBhPT1sfHxhIT1jJiYobih0KT9yKHQpOiEhdCl9LHM9aXNGb3JjZWQubm9ybWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZShpLCIuIikudG9Mb3dlckNhc2UoKX0sbz1pc0ZvcmNlZC5kYXRhPXt9LGM9aXNGb3JjZWQuTkFUSVZFPSJOIixsPWlzRm9yY2VkLlBPTFlGSUxMPSJQIjtlLmV4cG9ydHM9aXNGb3JjZWR9LChlLHQsYSk9Pnt2YXIgcj1hKDkpLG49RnVuY3Rpb24ucHJvdG90eXBlLGk9bi5hcHBseSxzPW4uY2FsbDtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwocj9zLmJpbmQoaSk6ZnVuY3Rpb24oKXtyZXR1cm4gcy5hcHBseShpLGFyZ3VtZW50cyl9KX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDI0KSxuPWEoMzkpLGk9YSg0NCkscz1hKDI1KSxvPWEoNzEpLGM9YSg1NiksbD1hKDc0KSxoPWEoNzUpLHU9YSg3NiksZD1hKDgwKSxmPWEoODEpLGc9YSg2KSxwPWEoMzYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsYSxtKXt2YXIgYj0ic3RhY2tUcmFjZUxpbWl0Iix5PW0/MjoxLHc9ZS5zcGxpdCgiLiIpLFM9d1t3Lmxlbmd0aC0xXSx4PXIuYXBwbHkobnVsbCx3KTtpZih4KXt2YXIgQz14LnByb3RvdHlwZTshcCYmbihDLCJjYXVzZSIpJiZkZWxldGUgQy5jYXVzZTtpZighYSlyZXR1cm4geDt2YXIgdj1yKCJFcnJvciIpLGs9dCgoZnVuY3Rpb24oZSx0KXt2YXIgYT11KG0/dDplLHZvaWQgMCkscj1tP25ldyB4KGUpOm5ldyB4O3ZvaWQgMCE9PWEmJmkociwibWVzc2FnZSIsYSk7ZihyLGssci5zdGFjaywyKTt0aGlzJiZzKEMsdGhpcykmJmgocix0aGlzLGspO2FyZ3VtZW50cy5sZW5ndGg+eSYmZChyLGFyZ3VtZW50c1t5XSk7cmV0dXJuIHJ9KSk7ay5wcm90b3R5cGU9QztpZigiRXJyb3IiIT09UylvP28oayx2KTpjKGssdix7bmFtZTohMH0pO2Vsc2UgaWYoZyYmYiBpbiB4KXtsKGsseCxiKTtsKGsseCwicHJlcGFyZVN0YWNrVHJhY2UiKX1jKGsseCk7aWYoIXApdHJ5e0MubmFtZSE9PVMmJmkoQywibmFtZSIsUyk7Qy5jb25zdHJ1Y3Rvcj1rfWNhdGNoKGUpe31yZXR1cm4ga319fSwoZSx0LGEpPT57dmFyIHI9YSg3Miksbj1hKDQ3KSxpPWEoNzMpO2UuZXhwb3J0cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgZSx0PSExLGE9e307dHJ5eyhlPXIoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIiwic2V0IikpKGEsW10pO3Q9YSBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKGUpe31yZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoYSxyKXtuKGEpO2kocik7dD9lKGEscik6YS5fX3Byb3RvX189cjtyZXR1cm4gYX19KCk6dm9pZCAwKX0sKGUsdCxhKT0+e3ZhciByPWEoMTQpLG49YSgzMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxhKXt0cnl7cmV0dXJuIHIobihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdClbYV0pKX1jYXRjaChlKXt9fX0sKGUsdCxhKT0+e3ZhciByPWEoMjEpLG49U3RyaW5nLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV8fHIoZSkpcmV0dXJuIGU7dGhyb3cgaSgiQ2FuJ3Qgc2V0ICIrbihlKSsiIGFzIGEgcHJvdG90eXBlIil9fSwoZSx0LGEpPT57dmFyIHI9YSg0NSkuZjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGEpe2EgaW4gZXx8cihlLGEse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFthXX0sc2V0OmZ1bmN0aW9uKGUpe3RbYV09ZX19KX19LChlLHQsYSk9Pnt2YXIgcj1hKDIxKSxuPWEoMjApLGk9YSg3MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxhKXt2YXIgcyxvO2kmJnIocz10LmNvbnN0cnVjdG9yKSYmcyE9PWEmJm4obz1zLnByb3RvdHlwZSkmJm8hPT1hLnByb3RvdHlwZSYmaShlLG8pO3JldHVybiBlfX0sKGUsdCxhKT0+e3ZhciByPWEoNzcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT1lP2FyZ3VtZW50cy5sZW5ndGg8Mj8iIjp0OnIoZSl9fSwoZSx0LGEpPT57dmFyIHI9YSg3OCksbj1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJTeW1ib2wiPT09cihlKSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIG4oZSl9fSwoZSx0LGEpPT57dmFyIHI9YSg3OSksbj1hKDIxKSxpPWEoMTUpLHM9YSgzNCkoInRvU3RyaW5nVGFnIiksbz1PYmplY3QsYz0iQXJndW1lbnRzIj09aShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1yP2k6ZnVuY3Rpb24oZSl7dmFyIHQsYSxyO3JldHVybiB2b2lkIDA9PT1lPyJVbmRlZmluZWQiOm51bGw9PT1lPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKGE9ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGVbdF19Y2F0Y2goZSl7fX0odD1vKGUpLHMpKT9hOmM/aSh0KToiT2JqZWN0Ij09KHI9aSh0KSkmJm4odC5jYWxsZWUpPyJBcmd1bWVudHMiOnJ9fSwoZSx0LGEpPT57dmFyIHI9e307clthKDM0KSgidG9TdHJpbmdUYWciKV09InoiO2UuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcocil9LChlLHQsYSk9Pnt2YXIgcj1hKDIwKSxuPWEoNDQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3IodCkmJiJjYXVzZSJpbiB0JiZuKGUsImNhdXNlIix0LmNhdXNlKX19LChlLHQsYSk9Pnt2YXIgcj1hKDQ0KSxuPWEoODIpLGk9YSg4Mykscz1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGEsbyl7aSYmKHM/cyhlLHQpOnIoZSwic3RhY2siLG4oYSxvKSkpfX0sKGUsdCxhKT0+e3ZhciByPWEoMTQpLG49RXJyb3IsaT1yKCIiLnJlcGxhY2UpLHM9U3RyaW5nKG4oInp4Y2FzZCIpLnN0YWNrKSxvPS9cblxzKmF0IFteOl0qOlteXG5dKi8sYz1vLnRlc3Qocyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoYyYmInN0cmluZyI9PXR5cGVvZiBlJiYhbi5wcmVwYXJlU3RhY2tUcmFjZSlmb3IoO3QtLTspZT1pKGUsbywiIik7cmV0dXJuIGV9fSwoZSx0LGEpPT57dmFyIHI9YSg3KSxuPWEoMTEpO2UuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXt2YXIgZT1FcnJvcigiYSIpO2lmKCEoInN0YWNrImluIGUpKXJldHVybiEwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdGFjayIsbigxLDcpKTtyZXR1cm4gNyE9PWUuc3RhY2t9KSl9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSg4NSksbj1hKDkwKS5maW5kTGFzdCxpPXIuYVR5cGVkQXJyYXk7KDAsci5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmluZExhc3QiLChmdW5jdGlvbiBmaW5kTGFzdChlKXtyZXR1cm4gbihpKHRoaXMpLGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByLG4saSxzPWEoODYpLG89YSg2KSxjPWEoNCksbD1hKDIxKSxoPWEoMjApLHU9YSgzOSksZD1hKDc4KSxmPWEoMzIpLGc9YSg0NCkscD1hKDQ4KSxtPWEoODcpLGI9YSgyNSkseT1hKDg4KSx3PWEoNzEpLFM9YSgzNCkseD1hKDQxKSxDPWEoNTIpLHY9Qy5lbmZvcmNlLGs9Qy5nZXQsTz1jLkludDhBcnJheSxUPU8mJk8ucHJvdG90eXBlLE09Yy5VaW50OENsYW1wZWRBcnJheSxFPU0mJk0ucHJvdG90eXBlLEQ9TyYmeShPKSxOPVQmJnkoVCksUj1PYmplY3QucHJvdG90eXBlLEw9Yy5UeXBlRXJyb3IsJD1TKCJ0b1N0cmluZ1RhZyIpLF89eCgiVFlQRURfQVJSQVlfVEFHIiksaj0iVHlwZWRBcnJheUNvbnN0cnVjdG9yIixVPXMmJiEhdyYmIk9wZXJhIiE9PWQoYy5vcGVyYSksWD0hMSxIPXtJbnQ4QXJyYXk6MSxVaW50OEFycmF5OjEsVWludDhDbGFtcGVkQXJyYXk6MSxJbnQxNkFycmF5OjIsVWludDE2QXJyYXk6MixJbnQzMkFycmF5OjQsVWludDMyQXJyYXk6NCxGbG9hdDMyQXJyYXk6NCxGbG9hdDY0QXJyYXk6OH0scT17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcj1mdW5jdGlvbihlKXt2YXIgdD15KGUpO2lmKGgodCkpe3ZhciBhPWsodCk7cmV0dXJuIGEmJnUoYSxqKT9hW2pdOmdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0KX19LGlzVHlwZWRBcnJheT1mdW5jdGlvbihlKXtpZighaChlKSlyZXR1cm4hMTt2YXIgdD1kKGUpO3JldHVybiB1KEgsdCl8fHUocSx0KX07Zm9yKHIgaW4gSCkoaT0obj1jW3JdKSYmbi5wcm90b3R5cGUpP3YoaSlbal09bjpVPSExO2ZvcihyIGluIHEpKGk9KG49Y1tyXSkmJm4ucHJvdG90eXBlKSYmKHYoaSlbal09bik7aWYoIVV8fCFsKEQpfHxEPT09RnVuY3Rpb24ucHJvdG90eXBlKXtEPWZ1bmN0aW9uIFR5cGVkQXJyYXkoKXt0aHJvdyBMKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfTtpZihVKWZvcihyIGluIEgpY1tyXSYmdyhjW3JdLEQpfWlmKCFVfHwhTnx8Tj09PVIpe049RC5wcm90b3R5cGU7aWYoVSlmb3IociBpbiBIKWNbcl0mJncoY1tyXS5wcm90b3R5cGUsTil9VSYmeShFKSE9PU4mJncoRSxOKTtpZihvJiYhdShOLCQpKXtYPSEwO20oTiwkLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGgodGhpcyk/dGhpc1tfXTp2b2lkIDB9fSk7Zm9yKHIgaW4gSCljW3JdJiZnKGNbcl0sXyxyKX1lLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6VSxUWVBFRF9BUlJBWV9UQUc6WCYmXyxhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihpc1R5cGVkQXJyYXkoZSkpcmV0dXJuIGU7dGhyb3cgTCgiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LGFUeXBlZEFycmF5Q29uc3RydWN0b3I6ZnVuY3Rpb24oZSl7aWYobChlKSYmKCF3fHxiKEQsZSkpKXJldHVybiBlO3Rocm93IEwoZihlKSsiIGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIil9LGV4cG9ydFR5cGVkQXJyYXlNZXRob2Q6ZnVuY3Rpb24oZSx0LGEscil7aWYobyl7aWYoYSlmb3IodmFyIG4gaW4gSCl7dmFyIGk9Y1tuXTtpZihpJiZ1KGkucHJvdG90eXBlLGUpKXRyeXtkZWxldGUgaS5wcm90b3R5cGVbZV19Y2F0Y2goYSl7dHJ5e2kucHJvdG90eXBlW2VdPXR9Y2F0Y2goZSl7fX19TltlXSYmIWF8fHAoTixlLGE/dDpVJiZUW2VdfHx0LHIpfX0sZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDpmdW5jdGlvbihlLHQsYSl7dmFyIHIsbjtpZihvKXtpZih3KXtpZihhKWZvcihyIGluIEgpaWYoKG49Y1tyXSkmJnUobixlKSl0cnl7ZGVsZXRlIG5bZV19Y2F0Y2goZSl7fWlmKERbZV0mJiFhKXJldHVybjt0cnl7cmV0dXJuIHAoRCxlLGE/dDpVJiZEW2VdfHx0KX1jYXRjaChlKXt9fWZvcihyIGluIEgpIShuPWNbcl0pfHxuW2VdJiYhYXx8cChuLGUsdCl9fSxnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I6Z2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGlzVmlldzpmdW5jdGlvbiBpc1ZpZXcoZSl7aWYoIWgoZSkpcmV0dXJuITE7dmFyIHQ9ZChlKTtyZXR1cm4iRGF0YVZpZXciPT09dHx8dShILHQpfHx1KHEsdCl9LGlzVHlwZWRBcnJheTppc1R5cGVkQXJyYXksVHlwZWRBcnJheTpELFR5cGVkQXJyYXlQcm90b3R5cGU6Tn19LGU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sKGUsdCxhKT0+e3ZhciByPWEoNDkpLG49YSg0NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxhKXthLmdldCYmcihhLmdldCx0LHtnZXR0ZXI6ITB9KTthLnNldCYmcihhLnNldCx0LHtzZXR0ZXI6ITB9KTtyZXR1cm4gbi5mKGUsdCxhKX19LChlLHQsYSk9Pnt2YXIgcj1hKDM5KSxuPWEoMjEpLGk9YSg0MCkscz1hKDU0KSxvPWEoODkpLGM9cygiSUVfUFJPVE8iKSxsPU9iamVjdCxoPWwucHJvdG90eXBlO2UuZXhwb3J0cz1vP2wuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlKTtpZihyKHQsYykpcmV0dXJuIHRbY107dmFyIGE9dC5jb25zdHJ1Y3RvcjtyZXR1cm4gbihhKSYmdCBpbnN0YW5jZW9mIGE/YS5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIGw/aDpudWxsfX0sKGUsdCxhKT0+e3ZhciByPWEoNyk7ZS5leHBvcnRzPSFyKChmdW5jdGlvbigpe2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbDtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKSE9PUYucHJvdG90eXBlfSkpfSwoZSx0LGEpPT57dmFyIHI9YSg5MSksbj1hKDEzKSxpPWEoNDApLHM9YSg2NCksY3JlYXRlTWV0aG9kPWZ1bmN0aW9uKGUpe3ZhciB0PTE9PWU7cmV0dXJuIGZ1bmN0aW9uKGEsbyxjKXtmb3IodmFyIGwsaD1pKGEpLHU9bihoKSxkPXIobyxjKSxmPXModSk7Zi0tID4wOylpZihkKGw9dVtmXSxmLGgpKXN3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGw7Y2FzZSAxOnJldHVybiBmfXJldHVybiB0Py0xOnZvaWQgMH19O2UuZXhwb3J0cz17ZmluZExhc3Q6Y3JlYXRlTWV0aG9kKDApLGZpbmRMYXN0SW5kZXg6Y3JlYXRlTWV0aG9kKDEpfX0sKGUsdCxhKT0+e3ZhciByPWEoOTIpLG49YSgzMSksaT1hKDkpLHM9cihyLmJpbmQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe24oZSk7cmV0dXJuIHZvaWQgMD09PXQ/ZTppP3MoZSx0KTpmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSwoZSx0LGEpPT57dmFyIHI9YSgxNSksbj1hKDE0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIkZ1bmN0aW9uIj09PXIoZSkpcmV0dXJuIG4oZSl9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoODUpLG49YSg5MCkuZmluZExhc3RJbmRleCxpPXIuYVR5cGVkQXJyYXk7KDAsci5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmluZExhc3RJbmRleCIsKGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoZSl7cmV0dXJuIG4oaSh0aGlzKSxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDQpLG49YSg4KSxpPWEoODUpLHM9YSg2NCksbz1hKDk1KSxjPWEoNDApLGw9YSg3KSxoPXIuUmFuZ2VFcnJvcix1PXIuSW50OEFycmF5LGQ9dSYmdS5wcm90b3R5cGUsZj1kJiZkLnNldCxnPWkuYVR5cGVkQXJyYXkscD1pLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsbT0hbCgoZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMik7bihmLGUse2xlbmd0aDoxLDA6M30sMSk7cmV0dXJuIDMhPT1lWzFdfSkpLGI9bSYmaS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTJiZsKChmdW5jdGlvbigpe3ZhciBlPW5ldyB1KDIpO2Uuc2V0KDEpO2Uuc2V0KCIyIiwxKTtyZXR1cm4gMCE9PWVbMF18fDIhPT1lWzFdfSkpO3AoInNldCIsKGZ1bmN0aW9uIHNldChlKXtnKHRoaXMpO3ZhciB0PW8oYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMSksYT1jKGUpO2lmKG0pcmV0dXJuIG4oZix0aGlzLGEsdCk7dmFyIHI9dGhpcy5sZW5ndGgsaT1zKGEpLGw9MDtpZihpK3Q+cil0aHJvdyBoKCJXcm9uZyBsZW5ndGgiKTtmb3IoO2w8aTspdGhpc1t0K2xdPWFbbCsrXX0pLCFtfHxiKX0sKGUsdCxhKT0+e3ZhciByPWEoOTYpLG49UmFuZ2VFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgYT1yKGUpO2lmKGEldCl0aHJvdyBuKCJXcm9uZyBvZmZzZXQiKTtyZXR1cm4gYX19LChlLHQsYSk9Pnt2YXIgcj1hKDYyKSxuPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXIoZSk7aWYodDwwKXRocm93IG4oIlRoZSBhcmd1bWVudCBjYW4ndCBiZSBsZXNzIHRoYW4gMCIpO3JldHVybiB0fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDk4KSxuPWEoODUpLGk9bi5hVHlwZWRBcnJheSxzPW4uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxvPW4uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO3MoInRvUmV2ZXJzZWQiLChmdW5jdGlvbiB0b1JldmVyc2VkKCl7cmV0dXJuIHIoaSh0aGlzKSxvKHRoaXMpKX0pKX0sKGUsdCxhKT0+e3ZhciByPWEoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgYT1yKGUpLG49bmV3IHQoYSksaT0wO2k8YTtpKyspbltpXT1lW2EtaS0xXTtyZXR1cm4gbn19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSg4NSksbj1hKDE0KSxpPWEoMzEpLHM9YSgxMDApLG89ci5hVHlwZWRBcnJheSxjPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGw9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGg9bihyLlR5cGVkQXJyYXlQcm90b3R5cGUuc29ydCk7bCgidG9Tb3J0ZWQiLChmdW5jdGlvbiB0b1NvcnRlZChlKXt2b2lkIDAhPT1lJiZpKGUpO3ZhciB0PW8odGhpcyksYT1zKGModCksdCk7cmV0dXJuIGgoYSxlKX0pKX0sKGUsdCxhKT0+e3ZhciByPWEoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgYT0wLG49cih0KSxpPW5ldyBlKG4pO24+YTspaVthXT10W2ErK107cmV0dXJuIGl9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoMTAyKSxuPWEoODUpLGk9YSgxMDMpLHM9YSg2Miksbz1hKDEwNCksYz1uLmFUeXBlZEFycmF5LGw9bi5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsaD1uLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsdT0hIWZ1bmN0aW9uKCl7dHJ5e25ldyBJbnQ4QXJyYXkoMSkud2l0aCgyLHt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgOH19KX1jYXRjaChlKXtyZXR1cm4gOD09PWV9fSgpO2goIndpdGgiLHt3aXRoOmZ1bmN0aW9uKGUsdCl7dmFyIGE9Yyh0aGlzKSxuPXMoZSksaD1pKGEpP28odCk6K3Q7cmV0dXJuIHIoYSxsKGEpLG4saCl9fS53aXRoLCF1KX0sKGUsdCxhKT0+e3ZhciByPWEoNjQpLG49YSg2MiksaT1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsYSxzKXt2YXIgbz1yKGUpLGM9bihhKSxsPWM8MD9vK2M6YztpZihsPj1vfHxsPDApdGhyb3cgaSgiSW5jb3JyZWN0IGluZGV4Iik7Zm9yKHZhciBoPW5ldyB0KG8pLHU9MDt1PG87dSsrKWhbdV09dT09PWw/czplW3VdO3JldHVybiBofX0sKGUsdCxhKT0+e3ZhciByPWEoNzgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiJCaWdJbnQ2NEFycmF5Ij09dHx8IkJpZ1VpbnQ2NEFycmF5Ij09dH19LChlLHQsYSk9Pnt2YXIgcj1hKDE5KSxuPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9cihlLCJudW1iZXIiKTtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbigiQ2FuJ3QgY29udmVydCBudW1iZXIgdG8gYmlnaW50Iik7cmV0dXJuIEJpZ0ludCh0KX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSg2KSxuPWEoODcpLGk9YSgxMDYpLHM9QXJyYXlCdWZmZXIucHJvdG90eXBlO3ImJiEoImRldGFjaGVkImluIHMpJiZuKHMsImRldGFjaGVkIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbiBkZXRhY2hlZCgpe3JldHVybiBpKHRoaXMpfX0pfSwoZSx0LGEpPT57dmFyIHI9YSgxNCksbj1hKDEwNyksaT1yKEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKDAhPT1uKGUpKXJldHVybiExO3RyeXtpKGUsMCwwKTtyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMH19fSwoZSx0LGEpPT57dmFyIHI9YSg3Miksbj1hKDE1KSxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9cihBcnJheUJ1ZmZlci5wcm90b3R5cGUsImJ5dGVMZW5ndGgiLCJnZXQiKXx8ZnVuY3Rpb24oZSl7aWYoIkFycmF5QnVmZmVyIiE9bihlKSl0aHJvdyBpKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoMyksbj1hKDEwOSk7biYmcih7dGFyZ2V0OiJBcnJheUJ1ZmZlciIscHJvdG86ITB9LHt0cmFuc2ZlcjpmdW5jdGlvbiB0cmFuc2Zlcigpe3JldHVybiBuKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCEwKX19KX0sKGUsdCxhKT0+e3ZhciByPWEoNCksbj1hKDE0KSxpPWEoNzIpLHM9YSgxMTApLG89YSgxMDYpLGM9YSgxMDcpLGw9YSgxMTEpLGg9ci5UeXBlRXJyb3IsdT1yLnN0cnVjdHVyZWRDbG9uZSxkPXIuQXJyYXlCdWZmZXIsZj1yLkRhdGFWaWV3LGc9TWF0aC5taW4scD1kLnByb3RvdHlwZSxtPWYucHJvdG90eXBlLGI9bihwLnNsaWNlKSx5PWkocCwicmVzaXphYmxlIiwiZ2V0Iiksdz1pKHAsIm1heEJ5dGVMZW5ndGgiLCJnZXQiKSxTPW4obS5nZXRJbnQ4KSx4PW4obS5zZXRJbnQ4KTtlLmV4cG9ydHM9bCYmZnVuY3Rpb24oZSx0LGEpe3ZhciByPWMoZSksbj12b2lkIDA9PT10P3I6cyh0KSxpPSF5fHwheShlKTtpZihvKGUpKXRocm93IGgoIkFycmF5QnVmZmVyIGlzIGRldGFjaGVkIik7dmFyIGw9dShlLHt0cmFuc2ZlcjpbZV19KTtpZihyPT1uJiYoYXx8aSkpcmV0dXJuIGw7aWYocj49biYmKCFhfHxpKSlyZXR1cm4gYihsLDAsbik7Zm9yKHZhciBwPWEmJiFpJiZ3P3ttYXhCeXRlTGVuZ3RoOncobCl9OnZvaWQgMCxtPW5ldyBkKG4scCksQz1uZXcgZihsKSx2PW5ldyBmKG0pLGs9ZyhuLHIpLE89MDtPPGs7TysrKXgodixPLFMoQyxPKSk7cmV0dXJuIG19fSwoZSx0LGEpPT57dmFyIHI9YSg2Miksbj1hKDY1KSxpPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIDA7dmFyIHQ9cihlKSxhPW4odCk7aWYodCE9PWEpdGhyb3cgaSgiV3JvbmcgbGVuZ3RoIG9yIGluZGV4Iik7cmV0dXJuIGF9fSwoZSx0LGEpPT57dmFyIHI9YSg0KSxuPWEoNyksaT1hKDI4KSxzPWEoMTEyKSxvPWEoMTEzKSxjPWEoMTE0KSxsPXIuc3RydWN0dXJlZENsb25lO2UuZXhwb3J0cz0hIWwmJiFuKChmdW5jdGlvbigpe2lmKG8mJmk+OTJ8fGMmJmk+OTR8fHMmJmk+OTcpcmV0dXJuITE7dmFyIGU9bmV3IEFycmF5QnVmZmVyKDgpLHQ9bChlLHt0cmFuc2ZlcjpbZV19KTtyZXR1cm4gMCE9ZS5ieXRlTGVuZ3RofHw4IT10LmJ5dGVMZW5ndGh9KSl9LChlLHQsYSk9Pnt2YXIgcj1hKDExMyksbj1hKDExNCk7ZS5leHBvcnRzPSFyJiYhbiYmIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnR9LGU9PntlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBEZW5vJiZEZW5vJiYib2JqZWN0Ij09dHlwZW9mIERlbm8udmVyc2lvbn0sKGUsdCxhKT0+e3ZhciByPWEoMTUpO2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJwcm9jZXNzIj09cihwcm9jZXNzKX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDMpLG49YSgxMDkpO24mJnIoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXJUb0ZpeGVkTGVuZ3RoOmZ1bmN0aW9uIHRyYW5zZmVyVG9GaXhlZExlbmd0aCgpe3JldHVybiBuKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCExKX19KX0sKGUsdCxhKT0+e3ZhciByPWEoMyksbj1hKDExNyk7cih7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFhKDEyNSkoImRpZmZlcmVuY2UiKX0se2RpZmZlcmVuY2U6bn0pfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoMTE4KSxuPWEoMTE5KSxpPWEoMTIwKSxzPWEoMTIzKSxvPWEoMTI0KSxjPWEoMTIxKSxsPWEoMTIyKSxoPW4uaGFzLHU9bi5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIGRpZmZlcmVuY2UoZSl7dmFyIHQ9cih0aGlzKSxhPW8oZSksbj1pKHQpO3ModCk8PWEuc2l6ZT9jKHQsKGZ1bmN0aW9uKGUpe2EuaW5jbHVkZXMoZSkmJnUobixlKX0pKTpsKGEuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7aCh0LGUpJiZ1KG4sZSl9KSk7cmV0dXJuIG59fSwoZSx0LGEpPT57dmFyIHI9YSgxMTkpLmhhcztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cihlKTtyZXR1cm4gZX19LChlLHQsYSk9Pnt2YXIgcj1hKDE0KSxuPVNldC5wcm90b3R5cGU7ZS5leHBvcnRzPXtTZXQ6U2V0LGFkZDpyKG4uYWRkKSxoYXM6cihuLmhhcykscmVtb3ZlOnIobi5kZWxldGUpLHByb3RvOm59fSwoZSx0LGEpPT57dmFyIHI9YSgxMTkpLG49YSgxMjEpLGk9ci5TZXQscz1yLmFkZDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGk7bihlLChmdW5jdGlvbihlKXtzKHQsZSl9KSk7cmV0dXJuIHR9fSwoZSx0LGEpPT57dmFyIHI9YSgxNCksbj1hKDEyMiksaT1hKDExOSkscz1pLlNldCxvPWkucHJvdG8sYz1yKG8uZm9yRWFjaCksbD1yKG8ua2V5cyksaD1sKG5ldyBzKS5uZXh0O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsYSl7cmV0dXJuIGE/bihsKGUpLHQsaCk6YyhlLHQpfX0sKGUsdCxhKT0+e3ZhciByPWEoOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxhKXtmb3IodmFyIG4saSxzPWF8fGUubmV4dDshKG49cihzLGUpKS5kb25lOylpZih2b2lkIDAhPT0oaT10KG4udmFsdWUpKSlyZXR1cm4gaX19LChlLHQsYSk9Pnt2YXIgcj1hKDcyKSxuPWEoMTE5KTtlLmV4cG9ydHM9cihuLnByb3RvLCJzaXplIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe3JldHVybiBlLnNpemV9fSwoZSx0LGEpPT57dmFyIHI9YSgzMSksbj1hKDQ3KSxpPWEoOCkscz1hKDYyKSxvPVR5cGVFcnJvcixjPU1hdGgubWF4LFNldFJlY29yZD1mdW5jdGlvbihlLHQsYSxyKXt0aGlzLnNldD1lO3RoaXMuc2l6ZT10O3RoaXMuaGFzPWE7dGhpcy5rZXlzPXJ9O1NldFJlY29yZC5wcm90b3R5cGU9e2dldEl0ZXJhdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG4oaSh0aGlzLmtleXMsdGhpcy5zZXQpKX0saW5jbHVkZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGkodGhpcy5oYXMsdGhpcy5zZXQsZSl9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7bihlKTt2YXIgdD0rZS5zaXplO2lmKHQhPXQpdGhyb3cgbygiSW52YWxpZCBzaXplIik7cmV0dXJuIG5ldyBTZXRSZWNvcmQoZSxjKHModCksMCkscihlLmhhcykscihlLmtleXMpKX19LChlLHQsYSk9Pnt2YXIgcj1hKDI0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5eyhuZXcocigiU2V0IikpKVtlXSh7c2l6ZTowLGhhczpmdW5jdGlvbigpe3JldHVybiExfSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohMH19fX19KTtyZXR1cm4hMH1jYXRjaChlKXtyZXR1cm4hMX19fSwoZSx0LGEpPT57dmFyIHI9YSgzKSxuPWEoNyksaT1hKDEyNyk7cih7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFhKDEyNSkoImludGVyc2VjdGlvbiIpfHxuKChmdW5jdGlvbigpe3JldHVybiIzLDIiIT1BcnJheS5mcm9tKG5ldyBTZXQoWzEsMiwzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsMl0pKSl9KSl9LHtpbnRlcnNlY3Rpb246aX0pfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoMTE4KSxuPWEoMTE5KSxpPWEoMTIzKSxzPWEoMTI0KSxvPWEoMTIxKSxjPWEoMTIyKSxsPW4uU2V0LGg9bi5hZGQsdT1uLmhhcztlLmV4cG9ydHM9ZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGUpe3ZhciB0PXIodGhpcyksYT1zKGUpLG49bmV3IGw7aSh0KT5hLnNpemU/YyhhLmdldEl0ZXJhdG9yKCksKGZ1bmN0aW9uKGUpe3UodCxlKSYmaChuLGUpfSkpOm8odCwoZnVuY3Rpb24oZSl7YS5pbmNsdWRlcyhlKSYmaChuLGUpfSkpO3JldHVybiBufX0sKGUsdCxhKT0+e3ZhciByPWEoMyksbj1hKDEyOSk7cih7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFhKDEyNSkoImlzRGlzam9pbnRGcm9tIil9LHtpc0Rpc2pvaW50RnJvbTpufSl9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSgxMTgpLG49YSgxMTkpLmhhcyxpPWEoMTIzKSxzPWEoMTI0KSxvPWEoMTIxKSxjPWEoMTIyKSxsPWEoMTMwKTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNEaXNqb2ludEZyb20oZSl7dmFyIHQ9cih0aGlzKSxhPXMoZSk7aWYoaSh0KTw9YS5zaXplKXJldHVybiExIT09byh0LChmdW5jdGlvbihlKXtpZihhLmluY2x1ZGVzKGUpKXJldHVybiExfSksITApO3ZhciBoPWEuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PWMoaCwoZnVuY3Rpb24oZSl7aWYobih0LGUpKXJldHVybiBsKGgsIm5vcm1hbCIsITEpfSkpfX0sKGUsdCxhKT0+e3ZhciByPWEoOCksbj1hKDQ3KSxpPWEoMzApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsYSl7dmFyIHMsbztuKGUpO3RyeXtpZighKHM9aShlLCJyZXR1cm4iKSkpe2lmKCJ0aHJvdyI9PT10KXRocm93IGE7cmV0dXJuIGF9cz1yKHMsZSl9Y2F0Y2goZSl7bz0hMDtzPWV9aWYoInRocm93Ij09PXQpdGhyb3cgYTtpZihvKXRocm93IHM7bihzKTtyZXR1cm4gYX19LChlLHQsYSk9Pnt2YXIgcj1hKDMpLG49YSgxMzIpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohYSgxMjUpKCJpc1N1YnNldE9mIil9LHtpc1N1YnNldE9mOm59KX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDExOCksbj1hKDEyMyksaT1hKDEyMSkscz1hKDEyNCk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzU3Vic2V0T2YoZSl7dmFyIHQ9cih0aGlzKSxhPXMoZSk7cmV0dXJuIShuKHQpPmEuc2l6ZSkmJiExIT09aSh0LChmdW5jdGlvbihlKXtpZighYS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKX19LChlLHQsYSk9Pnt2YXIgcj1hKDMpLG49YSgxMzQpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohYSgxMjUpKCJpc1N1cGVyc2V0T2YiKX0se2lzU3VwZXJzZXRPZjpufSl9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSgxMTgpLG49YSgxMTkpLmhhcyxpPWEoMTIzKSxzPWEoMTI0KSxvPWEoMTIyKSxjPWEoMTMwKTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdXBlcnNldE9mKGUpe3ZhciB0PXIodGhpcyksYT1zKGUpO2lmKGkodCk8YS5zaXplKXJldHVybiExO3ZhciBsPWEuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PW8obCwoZnVuY3Rpb24oZSl7aWYoIW4odCxlKSlyZXR1cm4gYyhsLCJub3JtYWwiLCExKX0pKX19LChlLHQsYSk9Pnt2YXIgcj1hKDMpLG49YSgxMzYpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohYSgxMjUpKCJzeW1tZXRyaWNEaWZmZXJlbmNlIil9LHtzeW1tZXRyaWNEaWZmZXJlbmNlOm59KX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDExOCksbj1hKDExOSksaT1hKDEyMCkscz1hKDEyNCksbz1hKDEyMiksYz1uLmFkZCxsPW4uaGFzLGg9bi5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UoZSl7dmFyIHQ9cih0aGlzKSxhPXMoZSkuZ2V0SXRlcmF0b3IoKSxuPWkodCk7byhhLChmdW5jdGlvbihlKXtsKHQsZSk/aChuLGUpOmMobixlKX0pKTtyZXR1cm4gbn19LChlLHQsYSk9Pnt2YXIgcj1hKDMpLG49YSgxMzgpO3Ioe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohYSgxMjUpKCJ1bmlvbiIpfSx7dW5pb246bn0pfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoMTE4KSxuPWEoMTE5KS5hZGQsaT1hKDEyMCkscz1hKDEyNCksbz1hKDEyMik7ZS5leHBvcnRzPWZ1bmN0aW9uIHVuaW9uKGUpe3ZhciB0PXIodGhpcyksYT1zKGUpLmdldEl0ZXJhdG9yKCksYz1pKHQpO28oYSwoZnVuY3Rpb24oZSl7bihjLGUpfSkpO3JldHVybiBjfX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDMpLG49YSg0MCksaT1hKDY0KSxzPWEoMTQwKSxvPWEoMTQyKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDphKDcpKChmdW5jdGlvbigpe3JldHVybiA0Mjk0OTY3Mjk3IT09W10ucHVzaC5jYWxsKHtsZW5ndGg6NDI5NDk2NzI5Nn0sMSl9KSl8fCFmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkucHVzaCgpfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKX0se3B1c2g6ZnVuY3Rpb24gcHVzaChlKXt2YXIgdD1uKHRoaXMpLGE9aSh0KSxyPWFyZ3VtZW50cy5sZW5ndGg7byhhK3IpO2Zvcih2YXIgYz0wO2M8cjtjKyspe3RbYV09YXJndW1lbnRzW2NdO2ErK31zKHQsYSk7cmV0dXJuIGF9fSl9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSg2KSxuPWEoMTQxKSxpPVR5cGVFcnJvcixzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isbz1yJiYhZnVuY3Rpb24oKXtpZih2b2lkIDAhPT10aGlzKXJldHVybiEwO3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkubGVuZ3RoPTF9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpO2UuZXhwb3J0cz1vP2Z1bmN0aW9uKGUsdCl7aWYobihlKSYmIXMoZSwibGVuZ3RoIikud3JpdGFibGUpdGhyb3cgaSgiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiBlLmxlbmd0aD10fTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD10fX0sKGUsdCxhKT0+e3ZhciByPWEoMTUpO2UuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbiBpc0FycmF5KGUpe3JldHVybiJBcnJheSI9PXIoZSl9fSxlPT57dmFyIHQ9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgdCgiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cmV0dXJuIGV9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoMyksbj1hKDQpLGk9YSg4Nykscz1hKDYpLG89VHlwZUVycm9yLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5LGw9bi5zZWxmIT09bjt0cnl7aWYocyl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCJzZWxmIik7IWwmJmgmJmguZ2V0JiZoLmVudW1lcmFibGV8fGkobiwic2VsZiIse2dldDpmdW5jdGlvbiBzZWxmKCl7cmV0dXJuIG59LHNldDpmdW5jdGlvbiBzZWxmKGUpe2lmKHRoaXMhPT1uKXRocm93IG8oIklsbGVnYWwgaW52b2NhdGlvbiIpO2Mobiwic2VsZiIse3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX1lbHNlIHIoe2dsb2JhbDohMCxzaW1wbGU6ITAsZm9yY2VkOmx9LHtzZWxmOm59KX1jYXRjaChlKXt9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlRleHRSZW5kZXJpbmdNb2RlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlByb21pc2VDYXBhYmlsaXR5PXQuUGVybWlzc2lvbkZsYWc9dC5QYXNzd29yZFJlc3BvbnNlcz10LlBhc3N3b3JkRXhjZXB0aW9uPXQuUGFnZUFjdGlvbkV2ZW50VHlwZT10Lk9QUz10Lk1pc3NpbmdQREZFeGNlcHRpb249dC5NQVhfSU1BR0VfU0laRV9UT19DQUNIRT10LkxJTkVfRkFDVE9SPXQuTElORV9ERVNDRU5UX0ZBQ1RPUj10LkludmFsaWRQREZFeGNlcHRpb249dC5JbWFnZUtpbmQ9dC5JREVOVElUWV9NQVRSSVg9dC5Gb3JtYXRFcnJvcj10LkZlYXR1cmVUZXN0PXQuRk9OVF9JREVOVElUWV9NQVRSSVg9dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT10LkNNYXBDb21wcmVzc2lvblR5cGU9dC5CYXNlRXhjZXB0aW9uPXQuQkFTRUxJTkVfRkFDVE9SPXQuQW5ub3RhdGlvblR5cGU9dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXQuQW5ub3RhdGlvbk1vZGU9dC5Bbm5vdGF0aW9uRmxhZz10LkFubm90YXRpb25GaWVsZEZsYWc9dC5Bbm5vdGF0aW9uRWRpdG9yVHlwZT10LkFubm90YXRpb25FZGl0b3JQcmVmaXg9dC5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT10LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9dC5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXQuQWJvcnRFeGNlcHRpb249dm9pZCAwO3QuYXNzZXJ0PWZ1bmN0aW9uIGFzc2VydChlLHQpe2V8fHVucmVhY2hhYmxlKHQpfTt0LmJ5dGVzVG9TdHJpbmc9Ynl0ZXNUb1N0cmluZzt0LmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihhJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGEuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IHI9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShyKSlyZXR1cm4gcn1jYXRjaHt9cmV0dXJuIG51bGx9O3QuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm5ldyBEYXRlO3JldHVybltlLmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwoZS5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9O3QuZ2V0VXVpZD1mdW5jdGlvbiBnZXRVdWlkKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8mJiJmdW5jdGlvbiI9PXR5cGVvZiBjcnlwdG8/LnJhbmRvbVVVSUQpcmV0dXJuIGNyeXB0by5yYW5kb21VVUlEKCk7Y29uc3QgZT1uZXcgVWludDhBcnJheSgzMik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8mJiJmdW5jdGlvbiI9PXR5cGVvZiBjcnlwdG8/LmdldFJhbmRvbVZhbHVlcyljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpO2Vsc2UgZm9yKGxldCB0PTA7dDwzMjt0KyspZVt0XT1NYXRoLmZsb29yKDI1NSpNYXRoLnJhbmRvbSgpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhlKX07dC5nZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBpfTt0LmluZm89ZnVuY3Rpb24gaW5mbyhlKXtpPj1uLklORk9TJiZjb25zb2xlLmxvZyhgSW5mbzogJHtlfWApfTt0LmlzQXJyYXlCdWZmZXI9ZnVuY3Rpb24gaXNBcnJheUJ1ZmZlcihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJnZvaWQgMCE9PWU/LmJ5dGVMZW5ndGh9O3QuaXNBcnJheUVxdWFsPWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKWlmKGVbYV0hPT10W2FdKXJldHVybiExO3JldHVybiEwfTt0LmlzTm9kZUpTPXZvaWQgMDt0Lm5vcm1hbGl6ZVVuaWNvZGU9ZnVuY3Rpb24gbm9ybWFsaXplVW5pY29kZShlKXtpZighbCl7bD0vKFtcdTAwYTBcdTAwYjVcdTAzN2VcdTBlYjNcdTIwMDAtXHUyMDBhXHUyMDJmXHUyMTI2XHVmYjAwLVx1ZmIwNFx1ZmIwNlx1ZmIyMC1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwLVx1ZmI0MVx1ZmI0My1cdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmMtXHVmYmZkXHVmYzAwLVx1ZmM1ZFx1ZmM2NC1cdWZjZjFcdWZjZjUtXHVmZDNkXHVmZDg4XHVmZGY0XHVmZGZhLVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7aD1uZXcgTWFwKFtbIu+shSIsIsW/dCJdXSl9cmV0dXJuIGUucmVwbGFjZUFsbChsLCgoZSx0LGEpPT50P3Qubm9ybWFsaXplKCJORktDIik6aC5nZXQoYSkpKX07dC5vYmplY3RGcm9tTWFwPWZ1bmN0aW9uIG9iamVjdEZyb21NYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSl0W2FdPXI7cmV0dXJuIHR9O3Qub2JqZWN0U2l6ZT1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9O3Quc2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKGk9ZSl9O3Quc2hhZG93PXNoYWRvdzt0LnN0cmluZzMyPWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfTt0LnN0cmluZ1RvQnl0ZXM9c3RyaW5nVG9CeXRlczt0LnN0cmluZ1RvUERGU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0OyLDviI9PT1lWzBdJiYiw78iPT09ZVsxXT90PSJ1dGYtMTZiZSI6IsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdP3Q9InV0Zi0xNmxlIjoiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBhPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLHI9c3RyaW5nVG9CeXRlcyhlKTtyZXR1cm4gYS5kZWNvZGUocil9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9Y1tlLmNoYXJDb2RlQXQoYSldO3QucHVzaChyP1N0cmluZy5mcm9tQ2hhckNvZGUocik6ZS5jaGFyQXQoYSkpfXJldHVybiB0LmpvaW4oIiIpfTt0LnN0cmluZ1RvVVRGOFN0cmluZz1zdHJpbmdUb1VURjhTdHJpbmc7dC51bnJlYWNoYWJsZT11bnJlYWNoYWJsZTt0LnV0ZjhTdHJpbmdUb1N0cmluZz1mdW5jdGlvbiB1dGY4U3RyaW5nVG9TdHJpbmcoZSl7cmV0dXJuIHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSl9O3Qud2Fybj13YXJuO2EoMik7YSgxNDUpO2EoMTQ3KTthKDE0OCk7YSgxMzkpO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTtjb25zdCByPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTt0LmlzTm9kZUpTPXI7dC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXTt0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF07dC5NQVhfSU1BR0VfU0laRV9UT19DQUNIRT0xZTc7dC5MSU5FX0ZBQ1RPUj0xLjM1O3QuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzU7dC5CQVNFTElORV9GQUNUT1I9LjI1OTI1OTI1OTI1OTI1OTI0O3QuUmVuZGVyaW5nSW50ZW50RmxhZz17QU5ZOjEsRElTUExBWToyLFBSSU5UOjQsU0FWRTo4LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fTt0LkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M307dC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIjt0LkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLFNUQU1QOjEzLElOSzoxNX07dC5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17UkVTSVpFOjEsRlJFRVRFWFRfU0laRToxMSxGUkVFVEVYVF9DT0xPUjoxMixGUkVFVEVYVF9PUEFDSVRZOjEzLElOS19DT0xPUjoyMSxJTktfVEhJQ0tORVNTOjIyLElOS19PUEFDSVRZOjIzfTt0LlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9O3QuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH07dC5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfTt0LkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn07dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXtHUk9VUDoiR3JvdXAiLFJFUExZOiJSIn07dC5Bbm5vdGF0aW9uRmxhZz17SU5WSVNJQkxFOjEsSElEREVOOjIsUFJJTlQ6NCxOT1pPT006OCxOT1JPVEFURToxNixOT1ZJRVc6MzIsUkVBRE9OTFk6NjQsTE9DS0VEOjEyOCxUT0dHTEVOT1ZJRVc6MjU2LExPQ0tFRENPTlRFTlRTOjUxMn07dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXtSRUFET05MWToxLFJFUVVJUkVEOjIsTk9FWFBPUlQ6NCxNVUxUSUxJTkU6NDA5NixQQVNTV09SRDo4MTkyLE5PVE9HR0xFVE9PRkY6MTYzODQsUkFESU86MzI3NjgsUFVTSEJVVFRPTjo2NTUzNixDT01CTzoxMzEwNzIsRURJVDoyNjIxNDQsU09SVDo1MjQyODgsRklMRVNFTEVDVDoxMDQ4NTc2LE1VTFRJU0VMRUNUOjIwOTcxNTIsRE9OT1RTUEVMTENIRUNLOjQxOTQzMDQsRE9OT1RTQ1JPTEw6ODM4ODYwOCxDT01COjE2Nzc3MjE2LFJJQ0hURVhUOjMzNTU0NDMyLFJBRElPU0lOVU5JU09OOjMzNTU0NDMyLENPTU1JVE9OU0VMQ0hBTkdFOjY3MTA4ODY0fTt0LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9e1NPTElEOjEsREFTSEVEOjIsQkVWRUxFRDozLElOU0VUOjQsVU5ERVJMSU5FOjV9O3QuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn07dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In07dC5QYWdlQWN0aW9uRXZlbnRUeXBlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn07Y29uc3Qgbj17RVJST1JTOjAsV0FSTklOR1M6MSxJTkZPUzo1fTt0LlZlcmJvc2l0eUxldmVsPW47dC5DTWFwQ29tcHJlc3Npb25UeXBlPXtOT05FOjAsQklOQVJZOjF9O3QuT1BTPXtkZXBlbmRlbmN5OjEsc2V0TGluZVdpZHRoOjIsc2V0TGluZUNhcDozLHNldExpbmVKb2luOjQsc2V0TWl0ZXJMaW1pdDo1LHNldERhc2g6NixzZXRSZW5kZXJpbmdJbnRlbnQ6NyxzZXRGbGF0bmVzczo4LHNldEdTdGF0ZTo5LHNhdmU6MTAscmVzdG9yZToxMSx0cmFuc2Zvcm06MTIsbW92ZVRvOjEzLGxpbmVUbzoxNCxjdXJ2ZVRvOjE1LGN1cnZlVG8yOjE2LGN1cnZlVG8zOjE3LGNsb3NlUGF0aDoxOCxyZWN0YW5nbGU6MTksc3Ryb2tlOjIwLGNsb3NlU3Ryb2tlOjIxLGZpbGw6MjIsZW9GaWxsOjIzLGZpbGxTdHJva2U6MjQsZW9GaWxsU3Ryb2tlOjI1LGNsb3NlRmlsbFN0cm9rZToyNixjbG9zZUVPRmlsbFN0cm9rZToyNyxlbmRQYXRoOjI4LGNsaXA6MjksZW9DbGlwOjMwLGJlZ2luVGV4dDozMSxlbmRUZXh0OjMyLHNldENoYXJTcGFjaW5nOjMzLHNldFdvcmRTcGFjaW5nOjM0LHNldEhTY2FsZTozNSxzZXRMZWFkaW5nOjM2LHNldEZvbnQ6Mzcsc2V0VGV4dFJlbmRlcmluZ01vZGU6Mzgsc2V0VGV4dFJpc2U6MzksbW92ZVRleHQ6NDAsc2V0TGVhZGluZ01vdmVUZXh0OjQxLHNldFRleHRNYXRyaXg6NDIsbmV4dExpbmU6NDMsc2hvd1RleHQ6NDQsc2hvd1NwYWNlZFRleHQ6NDUsbmV4dExpbmVTaG93VGV4dDo0NixuZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDo0NyxzZXRDaGFyV2lkdGg6NDgsc2V0Q2hhcldpZHRoQW5kQm91bmRzOjQ5LHNldFN0cm9rZUNvbG9yU3BhY2U6NTAsc2V0RmlsbENvbG9yU3BhY2U6NTEsc2V0U3Ryb2tlQ29sb3I6NTIsc2V0U3Ryb2tlQ29sb3JOOjUzLHNldEZpbGxDb2xvcjo1NCxzZXRGaWxsQ29sb3JOOjU1LHNldFN0cm9rZUdyYXk6NTYsc2V0RmlsbEdyYXk6NTcsc2V0U3Ryb2tlUkdCQ29sb3I6NTgsc2V0RmlsbFJHQkNvbG9yOjU5LHNldFN0cm9rZUNNWUtDb2xvcjo2MCxzZXRGaWxsQ01ZS0NvbG9yOjYxLHNoYWRpbmdGaWxsOjYyLGJlZ2luSW5saW5lSW1hZ2U6NjMsYmVnaW5JbWFnZURhdGE6NjQsZW5kSW5saW5lSW1hZ2U6NjUscGFpbnRYT2JqZWN0OjY2LG1hcmtQb2ludDo2NyxtYXJrUG9pbnRQcm9wczo2OCxiZWdpbk1hcmtlZENvbnRlbnQ6NjksYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6NzAsZW5kTWFya2VkQ29udGVudDo3MSxiZWdpbkNvbXBhdDo3MixlbmRDb21wYXQ6NzMscGFpbnRGb3JtWE9iamVjdEJlZ2luOjc0LHBhaW50Rm9ybVhPYmplY3RFbmQ6NzUsYmVnaW5Hcm91cDo3NixlbmRHcm91cDo3NyxiZWdpbkFubm90YXRpb246ODAsZW5kQW5ub3RhdGlvbjo4MSxwYWludEltYWdlTWFza1hPYmplY3Q6ODMscGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXA6ODQscGFpbnRJbWFnZVhPYmplY3Q6ODUscGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6ODYscGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDo4NyxwYWludEltYWdlWE9iamVjdFJlcGVhdDo4OCxwYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQ6ODkscGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrOjkwLGNvbnN0cnVjdFBhdGg6OTF9O3QuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07bGV0IGk9bi5XQVJOSU5HUztmdW5jdGlvbiB3YXJuKGUpe2k+PW4uV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIHNoYWRvdyhlLHQsYSl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTphLGVudW1lcmFibGU6IXIsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIGF9Y29uc3Qgcz1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPWU7dGhpcy5uYW1lPXR9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTt0LkJhc2VFeGNlcHRpb249czt0LlBhc3N3b3JkRXhjZXB0aW9uPWNsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgc3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPXR9fTt0LlVua25vd25FcnJvckV4Y2VwdGlvbj1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBze2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPXR9fTt0LkludmFsaWRQREZFeGNlcHRpb249Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIHN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX07dC5NaXNzaW5nUERGRXhjZXB0aW9uPWNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBze2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19O3QuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIHN7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz10fX07dC5Gb3JtYXRFcnJvcj1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIHN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRm9ybWF0RXJyb3IiKX19O3QuQWJvcnRFeGNlcHRpb249Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBze2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkFib3J0RXhjZXB0aW9uIil9fTtmdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsYT04MTkyO2lmKHQ8YSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjx0O24rPWEpe2NvbnN0IGk9TWF0aC5taW4obithLHQpLHM9ZS5zdWJhcnJheShuLGkpO3IucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscykpfXJldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoZSl7InN0cmluZyIhPXR5cGVvZiBlJiZ1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2NvbnN0IHQ9ZS5sZW5ndGgsYT1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IHI9MDtyPHQ7KytyKWFbcl09MjU1JmUuY2hhckNvZGVBdChyKTtyZXR1cm4gYX10LkZlYXR1cmVUZXN0PWNsYXNzIEZlYXR1cmVUZXN0e3N0YXRpYyBnZXQgaXNMaXR0bGVFbmRpYW4oKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzTGl0dGxlRW5kaWFuIixmdW5jdGlvbiBpc0xpdHRsZUVuZGlhbigpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoNCk7ZVswXT0xO3JldHVybiAxPT09bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsMSlbMF19KCkpfXN0YXRpYyBnZXQgaXNFdmFsU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0V2YWxTdXBwb3J0ZWQiLGZ1bmN0aW9uIGlzRXZhbFN1cHBvcnRlZCgpe3RyeXtuZXcgRnVuY3Rpb24oIiIpO3JldHVybiEwfWNhdGNoe3JldHVybiExfX0oKSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3I/c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNXaW46ITEsaXNNYWM6ITF9KTpzaGFkb3codGhpcywicGxhdGZvcm0iLHtpc1dpbjpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIldpbiIpLGlzTWFjOm5hdmlnYXRvci5wbGF0Zm9ybS5pbmNsdWRlcygiTWFjIil9KX19O2NvbnN0IG89Wy4uLkFycmF5KDI1Nikua2V5cygpXS5tYXAoKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkpO3QuVXRpbD1jbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LGEpe3JldHVybmAjJHtvW2VdfSR7b1t0XX0ke29bYV19YH1zdGF0aWMgc2NhbGVNaW5NYXgoZSx0KXtsZXQgYTtpZihlWzBdKXtpZihlWzBdPDApe2E9dFswXTt0WzBdPXRbMV07dFsxXT1hfXRbMF0qPWVbMF07dFsxXSo9ZVswXTtpZihlWzNdPDApe2E9dFsyXTt0WzJdPXRbM107dFszXT1hfXRbMl0qPWVbM107dFszXSo9ZVszXX1lbHNle2E9dFswXTt0WzBdPXRbMl07dFsyXT1hO2E9dFsxXTt0WzFdPXRbM107dFszXT1hO2lmKGVbMV08MCl7YT10WzJdO3RbMl09dFszXTt0WzNdPWF9dFsyXSo9ZVsxXTt0WzNdKj1lWzFdO2lmKGVbMl08MCl7YT10WzBdO3RbMF09dFsxXTt0WzFdPWF9dFswXSo9ZVsyXTt0WzFdKj1lWzJdfXRbMF0rPWVbNF07dFsxXSs9ZVs0XTt0WzJdKz1lWzVdO3RbM10rPWVbNV19c3RhdGljIHRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsyXSp0WzFdLGVbMV0qdFswXStlWzNdKnRbMV0sZVswXSp0WzJdK2VbMl0qdFszXSxlWzFdKnRbMl0rZVszXSp0WzNdLGVbMF0qdFs0XStlWzJdKnRbNV0rZVs0XSxlWzFdKnRbNF0rZVszXSp0WzVdK2VbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsxXSp0WzJdK3RbNF0sZVswXSp0WzFdK2VbMV0qdFszXSt0WzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKGUsdCl7Y29uc3QgYT10WzBdKnRbM10tdFsxXSp0WzJdO3JldHVyblsoZVswXSp0WzNdLWVbMV0qdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9hLCgtZVswXSp0WzFdK2VbMV0qdFswXSt0WzRdKnRbMV0tdFs1XSp0WzBdKS9hXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3goZSx0KXtjb25zdCBhPXRoaXMuYXBwbHlUcmFuc2Zvcm0oZSx0KSxyPXRoaXMuYXBwbHlUcmFuc2Zvcm0oZS5zbGljZSgyLDQpLHQpLG49dGhpcy5hcHBseVRyYW5zZm9ybShbZVswXSxlWzNdXSx0KSxpPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMl0sZVsxXV0sdCk7cmV0dXJuW01hdGgubWluKGFbMF0sclswXSxuWzBdLGlbMF0pLE1hdGgubWluKGFbMV0sclsxXSxuWzFdLGlbMV0pLE1hdGgubWF4KGFbMF0sclswXSxuWzBdLGlbMF0pLE1hdGgubWF4KGFbMV0sclsxXSxuWzFdLGlbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybShlKXtjb25zdCB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZSl7Y29uc3QgdD1bZVswXSxlWzJdLGVbMV0sZVszXV0sYT1lWzBdKnRbMF0rZVsxXSp0WzJdLHI9ZVswXSp0WzFdK2VbMV0qdFszXSxuPWVbMl0qdFswXStlWzNdKnRbMl0saT1lWzJdKnRbMV0rZVszXSp0WzNdLHM9KGEraSkvMixvPU1hdGguc3FydCgoYStpKSoqMi00KihhKmktbipyKSkvMixjPXMrb3x8MSxsPXMtb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGMpLE1hdGguc3FydChsKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QoZSl7Y29uc3QgdD1lLnNsaWNlKDApO2lmKGVbMF0+ZVsyXSl7dFswXT1lWzJdO3RbMl09ZVswXX1pZihlWzFdPmVbM10pe3RbMV09ZVszXTt0WzNdPWVbMV19cmV0dXJuIHR9c3RhdGljIGludGVyc2VjdChlLHQpe2NvbnN0IGE9TWF0aC5tYXgoTWF0aC5taW4oZVswXSxlWzJdKSxNYXRoLm1pbih0WzBdLHRbMl0pKSxyPU1hdGgubWluKE1hdGgubWF4KGVbMF0sZVsyXSksTWF0aC5tYXgodFswXSx0WzJdKSk7aWYoYT5yKXJldHVybiBudWxsO2NvbnN0IG49TWF0aC5tYXgoTWF0aC5taW4oZVsxXSxlWzNdKSxNYXRoLm1pbih0WzFdLHRbM10pKSxpPU1hdGgubWluKE1hdGgubWF4KGVbMV0sZVszXSksTWF0aC5tYXgodFsxXSx0WzNdKSk7cmV0dXJuIG4+aT9udWxsOlthLG4scixpXX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LGEscixuLGkscyxvKXtjb25zdCBjPVtdLGw9W1tdLFtdXTtsZXQgaCx1LGQsZixnLHAsbSxiO2ZvcihsZXQgbD0wO2w8MjsrK2wpe2lmKDA9PT1sKXt1PTYqZS0xMiphKzYqbjtoPS0zKmUrOSphLTkqbiszKnM7ZD0zKmEtMyplfWVsc2V7dT02KnQtMTIqcis2Kmk7aD0tMyp0Kzkqci05KmkrMypvO2Q9MypyLTMqdH1pZihNYXRoLmFicyhoKTwxZS0xMil7aWYoTWF0aC5hYnModSk8MWUtMTIpY29udGludWU7Zj0tZC91OzA8ZiYmZjwxJiZjLnB1c2goZil9ZWxzZXttPXUqdS00KmQqaDtiPU1hdGguc3FydChtKTtpZighKG08MCkpe2c9KC11K2IpLygyKmgpOzA8ZyYmZzwxJiZjLnB1c2goZyk7cD0oLXUtYikvKDIqaCk7MDxwJiZwPDEmJmMucHVzaChwKX19fWxldCB5LHc9Yy5sZW5ndGg7Y29uc3QgUz13O2Zvcig7dy0tOyl7Zj1jW3ddO3k9MS1mO2xbMF1bd109eSp5KnkqZSszKnkqeSpmKmErMyp5KmYqZipuK2YqZipmKnM7bFsxXVt3XT15KnkqeSp0KzMqeSp5KmYqciszKnkqZipmKmkrZipmKmYqb31sWzBdW1NdPWU7bFsxXVtTXT10O2xbMF1bUysxXT1zO2xbMV1bUysxXT1vO2xbMF0ubGVuZ3RoPWxbMV0ubGVuZ3RoPVMrMjtyZXR1cm5bTWF0aC5taW4oLi4ubFswXSksTWF0aC5taW4oLi4ubFsxXSksTWF0aC5tYXgoLi4ubFswXSksTWF0aC5tYXgoLi4ubFsxXSldfX07Y29uc3QgYz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX10LlByb21pc2VDYXBhYmlsaXR5PWNsYXNzIFByb21pc2VDYXBhYmlsaXR5eyNlPSExO2NvbnN0cnVjdG9yKCl7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKCgoZSx0KT0+e3RoaXMucmVzb2x2ZT10PT57dGhpcy4jZT0hMDtlKHQpfTt0aGlzLnJlamVjdD1lPT57dGhpcy4jZT0hMDt0KGUpfX0pKX1nZXQgc2V0dGxlZCgpe3JldHVybiB0aGlzLiNlfX07bGV0IGw9bnVsbCxoPW51bGx9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSg0OCksbj1hKDE0KSxpPWEoNzcpLHM9YSgxNDYpLG89VVJMU2VhcmNoUGFyYW1zLGM9by5wcm90b3R5cGUsbD1uKGMuYXBwZW5kKSxoPW4oYy5kZWxldGUpLHU9bihjLmZvckVhY2gpLGQ9bihbXS5wdXNoKSxmPW5ldyBvKCJhPTEmYT0yIik7Zi5kZWxldGUoImEiLDEpO2YrIiIhPSJhPTIiJiZyKGMsImRlbGV0ZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgsYT10PDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZih0JiZ2b2lkIDA9PT1hKXJldHVybiBoKHRoaXMsZSk7dmFyIHI9W107dSh0aGlzLChmdW5jdGlvbihlLHQpe2Qocix7a2V5OnQsdmFsdWU6ZX0pfSkpO3ModCwxKTtmb3IodmFyIG4sbz1pKGUpLGM9aShhKSxmPTAsZz0wLHA9ITEsbT1yLmxlbmd0aDtmPG07KXtuPXJbZisrXTtpZihwfHxuLmtleT09PW8pe3A9ITA7aCh0aGlzLG4ua2V5KX1lbHNlIGcrK31mb3IoO2c8bTspKG49cltnKytdKS5rZXk9PT1vJiZuLnZhbHVlPT09Y3x8bCh0aGlzLG4ua2V5LG4udmFsdWUpfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LGU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsYSl7aWYoZTxhKXRocm93IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoNDgpLG49YSgxNCksaT1hKDc3KSxzPWEoMTQ2KSxvPVVSTFNlYXJjaFBhcmFtcyxjPW8ucHJvdG90eXBlLGw9bihjLmdldEFsbCksaD1uKGMuaGFzKTtuZXcgbygiYT0xIikuaGFzKCJhIiwyKSYmcihjLCJoYXMiLChmdW5jdGlvbiBoYXMoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxhPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWEpcmV0dXJuIGgodGhpcyxlKTt2YXIgcj1sKHRoaXMsZSk7cyh0LDEpO2Zvcih2YXIgbj1pKGEpLG89MDtvPHIubGVuZ3RoOylpZihyW28rK109PT1uKXJldHVybiEwO3JldHVybiExfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSg2KSxuPWEoMTQpLGk9YSg4Nykscz1VUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLG89bihzLmZvckVhY2gpO3ImJiEoInNpemUiaW4gcykmJmkocywic2l6ZSIse2dldDpmdW5jdGlvbiBzaXplKCl7dmFyIGU9MDtvKHRoaXMsKGZ1bmN0aW9uKCl7ZSsrfSkpO3JldHVybiBlfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhSZWZQYXJzZUV4Y2VwdGlvbj10LlhSZWZFbnRyeUV4Y2VwdGlvbj10LlBhcnNlckVPRkV4Y2VwdGlvbj10LlBERl9WRVJTSU9OX1JFR0VYUD10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPXZvaWQgMDt0LmFycmF5QnVmZmVyc1RvQnl0ZXM9ZnVuY3Rpb24gYXJyYXlCdWZmZXJzVG9CeXRlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBuZXcgVWludDhBcnJheSgwKTtpZigxPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZVswXSk7bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7cisrKWErPWVbcl0uYnl0ZUxlbmd0aDtjb25zdCByPW5ldyBVaW50OEFycmF5KGEpO2xldCBuPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7Y29uc3QgdD1uZXcgVWludDhBcnJheShlW2FdKTtyLnNldCh0LG4pO24rPXQuYnl0ZUxlbmd0aH1yZXR1cm4gcn07dC5jb2xsZWN0QWN0aW9ucz1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsYSl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLHM9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihzKWZvcihsZXQgdD1zLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCByPXNbdF07aWYociBpbnN0YW5jZW9mIG4uRGljdClmb3IoY29uc3QgdCBvZiByLmdldEtleXMoKSl7Y29uc3Qgcz1hW3RdO2lmKCFzKWNvbnRpbnVlO2NvbnN0IG89W107X2NvbGxlY3RKUyhyLmdldFJhdyh0KSxlLG8sbmV3IG4uUmVmU2V0KTtvLmxlbmd0aD4wJiYoaVtzXT1vKX19aWYodC5oYXMoIkEiKSl7Y29uc3QgYT1bXTtfY29sbGVjdEpTKHQuZ2V0KCJBIiksZSxhLG5ldyBuLlJlZlNldCk7YS5sZW5ndGg+MCYmKGkuQWN0aW9uPWEpfXJldHVybigwLHIub2JqZWN0U2l6ZSkoaSk+MD9pOm51bGx9O3QuZW5jb2RlVG9YbWxTdHJpbmc9ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1uJiZuPD0xMjYpe2NvbnN0IGk9b1tuXTtpZihpKXthPHImJnQucHVzaChlLnN1YnN0cmluZyhhLHIpKTt0LnB1c2goaSk7YT1yKzF9fWVsc2V7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKGAmI3gke24udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmcisrO2E9cisxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7YTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX07dC5lc2NhcGVQREZOYW1lPWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYobjwzM3x8bj4xMjZ8fDM1PT09bnx8NDA9PT1ufHw0MT09PW58fDYwPT09bnx8NjI9PT1ufHw5MT09PW58fDkzPT09bnx8MTIzPT09bnx8MTI1PT09bnx8NDc9PT1ufHwzNz09PW4pe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7bi50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfTt0LmVzY2FwZVN0cmluZz1mdW5jdGlvbiBlc2NhcGVTdHJpbmcoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvKFsoKVxcXG5ccl0pL2csKGU9PiJcbiI9PT1lPyJcXG4iOiJcciI9PT1lPyJcXHIiOmBcXCR7ZX1gKSl9O3QuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eT1nZXRJbmhlcml0YWJsZVByb3BlcnR5O3QuZ2V0TG9va3VwVGFibGVGYWN0b3J5PWZ1bmN0aW9uIGdldExvb2t1cFRhYmxlRmFjdG9yeShlKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24oKXtpZihlKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSh0KTtlPW51bGx9cmV0dXJuIHR9fTt0LmdldE5ld0Fubm90YXRpb25zTWFwPWZ1bmN0aW9uIGdldE5ld0Fubm90YXRpb25zTWFwKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbYSxuXW9mIGUpe2lmKCFhLnN0YXJ0c1dpdGgoci5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4KSljb250aW51ZTtsZXQgZT10LmdldChuLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQobi5wYWdlSW5kZXgsZSl9ZS5wdXNoKG4pfXJldHVybiB0LnNpemU+MD90Om51bGx9O3QuZ2V0Um90YXRpb25NYXRyaXg9ZnVuY3Rpb24gZ2V0Um90YXRpb25NYXRyaXgoZSx0LGEpe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxhXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxhXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX07dC5pc0FzY2lpPWZ1bmN0aW9uIGlzQXNjaWkoZSl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KGUpfTt0LmlzV2hpdGVTcGFjZT1mdW5jdGlvbiBpc1doaXRlU3BhY2UoZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfTt0LmxvZzI9ZnVuY3Rpb24gbG9nMihlKXtpZihlPD0wKXJldHVybiAwO3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2cyKGUpKX07dC5udW1iZXJUb1N0cmluZz1mdW5jdGlvbiBudW1iZXJUb1N0cmluZyhlKXtpZihOdW1iZXIuaXNJbnRlZ2VyKGUpKXJldHVybiBlLnRvU3RyaW5nKCk7Y29uc3QgdD1NYXRoLnJvdW5kKDEwMCplKTtpZih0JTEwMD09MClyZXR1cm4odC8xMDApLnRvU3RyaW5nKCk7aWYodCUxMD09MClyZXR1cm4gZS50b0ZpeGVkKDEpO3JldHVybiBlLnRvRml4ZWQoMil9O3QucGFyc2VYRkFQYXRoPWZ1bmN0aW9uIHBhcnNlWEZBUGF0aChlKXtjb25zdCB0PS8oLispXFsoXGQrKVxdJC87cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoKGU9Pntjb25zdCBhPWUubWF0Y2godCk7cmV0dXJuIGE/e25hbWU6YVsxXSxwb3M6cGFyc2VJbnQoYVsyXSwxMCl9OntuYW1lOmUscG9zOjB9fSkpfTt0LnJlYWRJbnQ4PWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH07dC5yZWFkVWludDE2PWZ1bmN0aW9uIHJlYWRVaW50MTYoZSx0KXtyZXR1cm4gZVt0XTw8OHxlW3QrMV19O3QucmVhZFVpbnQzMj1mdW5jdGlvbiByZWFkVWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfTt0LnJlY292ZXJKc1VSTD1mdW5jdGlvbiByZWNvdmVySnNVUkwoZSl7Y29uc3QgdD1uZXcgUmVnRXhwKCJeXFxzKigiK1siYXBwLmxhdW5jaFVSTCIsIndpbmRvdy5vcGVuIiwieGZhLmhvc3QuZ290b1VSTCJdLmpvaW4oInwiKS5yZXBsYWNlQWxsKCIuIiwiXFwuIikrIilcXCgoPzonfFwiKShbXidcIl0qKSg/Oid8XCIpKD86LFxccyooXFx3KylcXCl8XFwpKSIsImkiKS5leGVjKGUpO2lmKHQ/LlsyXSl7Y29uc3QgZT10WzJdO2xldCBhPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihhPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93OmF9fXJldHVybiBudWxsfTt0LnN0cmluZ1RvVVRGMTZIZXhTdHJpbmc9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoYSk7dC5wdXNoKChyPj44JjI1NSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSwoMjU1JnIpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfTt0LnN0cmluZ1RvVVRGMTZTdHJpbmc9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2NvbnN0IGE9W107dCYmYS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWUuY2hhckNvZGVBdCh0KTthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmcikpfXJldHVybiBhLmpvaW4oIiIpfTt0LnRvUm9tYW5OdW1lcmFscz1mdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTsoMCxyLmFzc2VydCkoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT1bXTtsZXQgbjtmb3IoO2U+PTFlMzspe2UtPTFlMzthLnB1c2goIk0iKX1uPWUvMTAwfDA7ZSU9MTAwO2EucHVzaChzW25dKTtuPWUvMTB8MDtlJT0xMDthLnB1c2goc1sxMCtuXSk7YS5wdXNoKHNbMjArZV0pO2NvbnN0IGk9YS5qb2luKCIiKTtyZXR1cm4gdD9pLnRvTG93ZXJDYXNlKCk6aX07dC52YWxpZGF0ZUNTU0ZvbnQ9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6cixpdGFsaWNBbmdsZTpufT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGEsITApKXJldHVybiExO2NvbnN0IGk9cj9yLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKGkpP2k6IjQwMCI7Y29uc3Qgcz1wYXJzZUZsb2F0KG4pO2UuaXRhbGljQW5nbGU9aXNOYU4ocyl8fHM8LTkwfHxzPjkwPyIxNCI6bi50b1N0cmluZygpO3JldHVybiEwfTt0LnZhbGlkYXRlRm9udE5hbWU9dmFsaWRhdGVGb250TmFtZTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgxMzkpO2EoMTE2KTthKDEyNik7YSgxMjgpO2EoMTMxKTthKDEzMyk7YSgxMzUpO2EoMTM3KTthKDIpO3ZhciByPWEoMTQ0KSxuPWEoMTUwKSxpPWEoMTUxKTt0LlBERl9WRVJTSU9OX1JFR0VYUD0vXlsxLTldXC5cZCQvO2NsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPU1pc3NpbmdEYXRhRXhjZXB0aW9uO2NsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19dC5QYXJzZXJFT0ZFeGNlcHRpb249UGFyc2VyRU9GRXhjZXB0aW9uO2NsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19dC5YUmVmRW50cnlFeGNlcHRpb249WFJlZkVudHJ5RXhjZXB0aW9uO2NsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19dC5YUmVmUGFyc2VFeGNlcHRpb249WFJlZlBhcnNlRXhjZXB0aW9uO2Z1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoZSl7bGV0IHQse2RpY3Q6YSxrZXk6cixnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6cz0hMH09ZTtjb25zdCBvPW5ldyBuLlJlZlNldDtmb3IoO2EgaW5zdGFuY2VvZiBuLkRpY3QmJighYS5vYmpJZHx8IW8uaGFzKGEub2JqSWQpKTspe2Eub2JqSWQmJm8ucHV0KGEub2JqSWQpO2NvbnN0IGU9aT9hLmdldEFycmF5KHIpOmEuZ2V0KHIpO2lmKHZvaWQgMCE9PWUpe2lmKHMpcmV0dXJuIGU7KHR8fD1bXSkucHVzaChlKX1hPWEuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gdH1jb25zdCBzPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxzKXtpZighZSlyZXR1cm47bGV0IG89bnVsbDtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2lmKHMuaGFzKGUpKXJldHVybjtvPWU7cy5wdXQobyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxhLHMpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRGljdCl7aWYoKDAsbi5pc05hbWUpKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgbjt0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP249dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihuPXQpO24mJj0oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShuKS5yZXBsYWNlQWxsKCJcMCIsIiIpO24mJmEucHVzaChuKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLHMpfW8mJnMucmVtb3ZlKG8pfWNvbnN0IG89ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In07ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2NvbnN0IGE9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGEmJmFbMV09PT1hWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHthWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJigwLHIud2FybikoYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7YVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChhKXx8IS9eW1x3LVxcXSskLy50ZXN0KGEpKXt0JiYoMCxyLndhcm4pKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlJlZlNldENhY2hlPXQuUmVmU2V0PXQuUmVmPXQuTmFtZT10LkVPRj10LkRpY3Q9dC5DbWQ9dC5DSVJDVUxBUl9SRUY9dm9pZCAwO3QuY2xlYXJQcmltaXRpdmVDYWNoZXM9ZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXtzPU9iamVjdC5jcmVhdGUobnVsbCk7bz1PYmplY3QuY3JlYXRlKG51bGwpO2M9T2JqZWN0LmNyZWF0ZShudWxsKX07dC5pc0NtZD1mdW5jdGlvbiBpc0NtZChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgQ21kJiYodm9pZCAwPT09dHx8ZS5jbWQ9PT10KX07dC5pc0RpY3Q9ZnVuY3Rpb24gaXNEaWN0KGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0JiYodm9pZCAwPT09dHx8aXNOYW1lKGUuZ2V0KCJUeXBlIiksdCkpfTt0LmlzTmFtZT1pc05hbWU7dC5pc1JlZnNFcXVhbD1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufTthKDEzOSk7YSgxMTYpO2EoMTI2KTthKDEyOCk7YSgxMzEpO2EoMTMzKTthKDEzNSk7YSgxMzcpO3ZhciByPWEoMTQ0KTtjb25zdCBuPVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIik7dC5DSVJDVUxBUl9SRUY9bjtjb25zdCBpPVN5bWJvbCgiRU9GIik7dC5FT0Y9aTtsZXQgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89T2JqZWN0LmNyZWF0ZShudWxsKSxjPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBvW2VdfHw9bmV3IE5hbWUoZSl9fXQuTmFtZT1OYW1lO2NsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIHNbZV18fD1uZXcgQ21kKGUpfX10LkNtZD1DbWQ7Y29uc3QgbD1mdW5jdGlvbiBub25TZXJpYWxpemFibGVDbG9zdXJlKCl7cmV0dXJuIGx9O2NsYXNzIERpY3R7Y29uc3RydWN0b3IoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDt0aGlzLl9tYXA9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnhyZWY9ZTt0aGlzLm9iaklkPW51bGw7dGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITE7dGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPWx9YXNzaWduWHJlZihlKXt0aGlzLnhyZWY9ZX1nZXQgc2l6ZSgpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXApLmxlbmd0aH1nZXQoZSx0LGEpe2xldCByPXRoaXMuX21hcFtlXTtpZih2b2lkIDA9PT1yJiZ2b2lkIDAhPT10KXtyPXRoaXMuX21hcFt0XTt2b2lkIDA9PT1yJiZ2b2lkIDAhPT1hJiYocj10aGlzLl9tYXBbYV0pfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnJ9YXN5bmMgZ2V0QXN5bmMoZSx0LGEpe2xldCByPXRoaXMuX21hcFtlXTtpZih2b2lkIDA9PT1yJiZ2b2lkIDAhPT10KXtyPXRoaXMuX21hcFt0XTt2b2lkIDA9PT1yJiZ2b2lkIDAhPT1hJiYocj10aGlzLl9tYXBbYV0pfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9ciBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYocj10aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpO2lmKEFycmF5LmlzQXJyYXkocikpe3I9ci5zbGljZSgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylyW2VdaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKHJbZV09dGhpcy54cmVmLmZldGNoKHJbZV0sdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKX1yZXR1cm4gcn1nZXRSYXcoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1nZXRLZXlzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21hcCl9Z2V0UmF3VmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fbWFwKX1zZXQoZSx0KXt0aGlzLl9tYXBbZV09dH1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2Zvcihjb25zdCB0IGluIHRoaXMuX21hcCllKHQsdGhpcy5nZXQodCkpfXN0YXRpYyBnZXQgZW1wdHkoKXtjb25zdCBlPW5ldyBEaWN0KG51bGwpO2Uuc2V0PShlLHQpPT57KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgc2V0YCBvbiB0aGUgZW1wdHkgZGljdGlvbmFyeS4iKX07cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2UoZSl7bGV0e3hyZWY6dCxkaWN0QXJyYXk6YSxtZXJnZVN1YkRpY3RzOnI9ITF9PWU7Y29uc3Qgbj1uZXcgRGljdCh0KSxpPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgYSlpZihlIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpe2xldCBlPWkuZ2V0KHQpO2lmKHZvaWQgMD09PWUpe2U9W107aS5zZXQodCxlKX1lbHNlIGlmKCEociYmYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2UucHVzaChhKX1mb3IoY29uc3RbZSxhXW9mIGkpe2lmKDE9PT1hLmxlbmd0aHx8IShhWzBdaW5zdGFuY2VvZiBEaWN0KSl7bi5fbWFwW2VdPWFbMF07Y29udGludWV9Y29uc3Qgcj1uZXcgRGljdCh0KTtmb3IoY29uc3QgZSBvZiBhKWZvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMoZS5fbWFwKSl2b2lkIDA9PT1yLl9tYXBbdF0mJihyLl9tYXBbdF09YSk7ci5zaXplPjAmJihuLl9tYXBbZV09cil9aS5jbGVhcigpO3JldHVybiBuLnNpemU+MD9uOkRpY3QuZW1wdHl9fXQuRGljdD1EaWN0O2NsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZnJvbVN0cmluZyhlKXtjb25zdCB0PWNbZV07aWYodClyZXR1cm4gdDtjb25zdCBhPS9eKFxkKylSKFxkKikkLy5leGVjKGUpO3JldHVybiBhJiYiMCIhPT1hWzFdP2NbZV09bmV3IFJlZihwYXJzZUludChhWzFdKSxhWzJdP3BhcnNlSW50KGFbMl0pOjApOm51bGx9c3RhdGljIGdldChlLHQpe2NvbnN0IGE9MD09PXQ/YCR7ZX1SYDpgJHtlfVIke3R9YDtyZXR1cm4gY1thXXx8PW5ldyBSZWYoZSx0KX19dC5SZWY9UmVmO2NsYXNzIFJlZlNldHtjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3RoaXMuX3NldD1uZXcgU2V0KGU/Ll9zZXQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fc2V0LmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlKXt0aGlzLl9zZXQuYWRkKGUudG9TdHJpbmcoKSl9cmVtb3ZlKGUpe3RoaXMuX3NldC5kZWxldGUoZS50b1N0cmluZygpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9zZXQudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9zZXQuY2xlYXIoKX19dC5SZWZTZXQ9UmVmU2V0O2NsYXNzIFJlZlNldENhY2hle2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9cHV0QWxpYXMoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9fXQuUmVmU2V0Q2FjaGU9UmVmU2V0Q2FjaGU7ZnVuY3Rpb24gaXNOYW1lKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lJiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkJhc2VTdHJlYW09dm9pZCAwO3ZhciByPWEoMTQ0KTtjbGFzcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTdHJlYW0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RyZWFtLiIpfWdldCBsZW5ndGgoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBsZW5ndGhgIGFjY2Vzc2VkIil9Z2V0IGlzRW1wdHkoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBpc0VtcHR5YCBhY2Nlc3NlZCIpfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1wZWVrQnl0ZSgpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7LTEhPT1lJiZ0aGlzLnBvcy0tO3JldHVybiBlfXBlZWtCeXRlcyhlKXtjb25zdCB0PXRoaXMuZ2V0Qnl0ZXMoZSk7dGhpcy5wb3MtPXQubGVuZ3RoO3JldHVybiB0fWdldFVpbnQxNigpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCksdD10aGlzLmdldEJ5dGUoKTtyZXR1cm4tMT09PWV8fC0xPT09dD8tMTooZTw8OCkrdH1nZXRJbnQzMigpe3JldHVybih0aGlzLmdldEJ5dGUoKTw8MjQpKyh0aGlzLmdldEJ5dGUoKTw8MTYpKyh0aGlzLmdldEJ5dGUoKTw8OCkrdGhpcy5nZXRCeXRlKCl9Z2V0Qnl0ZVJhbmdlKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZVJhbmdlYCBjYWxsZWQiKX1nZXRTdHJpbmcoZSl7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKSh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fXQuQmFzZVN0cmVhbT1CYXNlU3RyZWFtfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5ldHdvcmtQZGZNYW5hZ2VyPXQuTG9jYWxQZGZNYW5hZ2VyPXZvaWQgMDt2YXIgcj1hKDE0NCksbj1hKDE1MyksaT1hKDE0OSkscz1hKDE1NSksbz1hKDE1NCk7Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIik7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD0oMCxyLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjsoMCxyLndhcm4pKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9ci5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zfWdldCBkb2NJZCgpe3JldHVybiB0aGlzLl9kb2NJZH1nZXQgcGFzc3dvcmQoKXtyZXR1cm4gdGhpcy5fcGFzc3dvcmR9Z2V0IGRvY0Jhc2VVcmwoKXtjb25zdCBlPXRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZztyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZG9jQmFzZVVybCIsZS5iYXNlVXJsfHx0aGlzLl9kb2NCYXNlVXJsKX1lbnN1cmVEb2MoZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudCxlLHQpfWVuc3VyZVhSZWYoZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC54cmVmLGUsdCl9ZW5zdXJlQ2F0YWxvZyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LmNhdGFsb2csZSx0KX1nZXRQYWdlKGUpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmdldFBhZ2UoZSl9Zm9udEZhbGxiYWNrKGUsdCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZm9udEZhbGxiYWNrKGUsdCl9bG9hZFhmYUZvbnRzKGUsdCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUZvbnRzKGUsdCl9bG9hZFhmYUltYWdlcygpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmxvYWRYZmFJbWFnZXMoKX1zZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LnNlcmlhbGl6ZVhmYURhdGEoZSl9Y2xlYW51cCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuY2xlYW51cChlKX1hc3luYyBlbnN1cmUoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGVuc3VyZWAgY2FsbGVkIil9cmVxdWVzdFJhbmdlKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdFJhbmdlYCBjYWxsZWQiKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdExvYWRlZFN0cmVhbWAgY2FsbGVkIil9c2VuZFByb2dyZXNzaXZlRGF0YShlKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZW5kUHJvZ3Jlc3NpdmVEYXRhYCBjYWxsZWQiKX11cGRhdGVQYXNzd29yZChlKXt0aGlzLl9wYXNzd29yZD1lfXRlcm1pbmF0ZShlKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGB0ZXJtaW5hdGVgIGNhbGxlZCIpfX10LkxvY2FsUGRmTWFuYWdlcj1jbGFzcyBMb2NhbFBkZk1hbmFnZXIgZXh0ZW5kcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PW5ldyBvLlN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLHQpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKHQpfWFzeW5jIGVuc3VyZShlLHQsYSl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKCl7cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbVByb21pc2V9dGVybWluYXRlKGUpe319O3QuTmV0d29ya1BkZk1hbmFnZXI9Y2xhc3MgTmV0d29ya1BkZk1hbmFnZXIgZXh0ZW5kcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IG4uQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLHRoaXMuc3RyZWFtTWFuYWdlci5nZXRTdHJlYW0oKSl9YXN5bmMgZW5zdXJlKGUsdCxhKXt0cnl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pKXRocm93IHI7YXdhaXQgdGhpcy5yZXF1ZXN0UmFuZ2Uoci5iZWdpbixyLmVuZCk7cmV0dXJuIHRoaXMuZW5zdXJlKGUsdCxhKX19cmVxdWVzdFJhbmdlKGUsdCl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0UmFuZ2UoZSx0KX1yZXF1ZXN0TG9hZGVkU3RyZWFtKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RBbGxDaHVua3MoZSl9c2VuZFByb2dyZXNzaXZlRGF0YShlKXt0aGlzLnN0cmVhbU1hbmFnZXIub25SZWNlaXZlRGF0YSh7Y2h1bms6ZX0pfXRlcm1pbmF0ZShlKXt0aGlzLnN0cmVhbU1hbmFnZXIuYWJvcnQoZSl9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DaHVua2VkU3RyZWFtTWFuYWdlcj10LkNodW5rZWRTdHJlYW09dm9pZCAwO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTthKDExNik7YSgxMjYpO2EoMTI4KTthKDEzMSk7YSgxMzMpO2EoMTM1KTthKDEzNyk7YSgxMzkpO2EoMik7dmFyIHI9YSgxNDkpLG49YSgxNDQpLGk9YSgxNTQpO2NsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBpLlN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoZSksMCxlLG51bGwpO3RoaXMuY2h1bmtTaXplPXQ7dGhpcy5fbG9hZGVkQ2h1bmtzPW5ldyBTZXQ7dGhpcy5udW1DaHVua3M9TWF0aC5jZWlsKGUvdCk7dGhpcy5tYW5hZ2VyPWE7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9MDt0aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rPS0xfWdldE1pc3NpbmdDaHVua3MoKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGE9dGhpcy5udW1DaHVua3M7dDxhOysrdCl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpfHxlLnB1c2godCk7cmV0dXJuIGV9Z2V0IG51bUNodW5rc0xvYWRlZCgpe3JldHVybiB0aGlzLl9sb2FkZWRDaHVua3Muc2l6ZX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N9b25SZWNlaXZlRGF0YShlLHQpe2NvbnN0IGE9dGhpcy5jaHVua1NpemU7aWYoZSVhIT0wKXRocm93IG5ldyBFcnJvcihgQmFkIGJlZ2luIG9mZnNldDogJHtlfWApO2NvbnN0IHI9ZSt0LmJ5dGVMZW5ndGg7aWYociVhIT0wJiZyIT09dGhpcy5ieXRlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBCYWQgZW5kIG9mZnNldDogJHtyfWApO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KHQpLGUpO2NvbnN0IG49TWF0aC5mbG9vcihlL2EpLGk9TWF0aC5mbG9vcigoci0xKS9hKSsxO2ZvcihsZXQgZT1uO2U8aTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEoZSl7bGV0IHQ9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg7Y29uc3QgYT1NYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KGUpLHQpO3QrPWUuYnl0ZUxlbmd0aDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD10O2NvbnN0IHI9dD49dGhpcy5lbmQ/dGhpcy5udW1DaHVua3M6TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTtmb3IobGV0IGU9YTtlPHI7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9ZW5zdXJlQnl0ZShlKXtpZihlPHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCB0PU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoISh0PnRoaXMubnVtQ2h1bmtzKSYmdCE9PXRoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bmspe2lmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpKXRocm93IG5ldyByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsZSsxKTt0aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rPXR9fWVuc3VyZVJhbmdlKGUsdCl7aWYoZT49dClyZXR1cm47aWYodDw9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IGE9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZihhPnRoaXMubnVtQ2h1bmtzKXJldHVybjtjb25zdCBuPU1hdGgubWluKE1hdGguZmxvb3IoKHQtMSkvdGhpcy5jaHVua1NpemUpKzEsdGhpcy5udW1DaHVua3MpO2ZvcihsZXQgaT1hO2k8bjsrK2kpaWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMoaSkpdGhyb3cgbmV3IHIuTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2NvbnN0IHI9KGUrYSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSlyZXR1cm4gcn1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxhPXRoaXMucG9zLHI9dGhpcy5lbmQ7aWYoIWUpe3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxyKTtyZXR1cm4gdC5zdWJhcnJheShhLHIpfWxldCBuPWErZTtuPnImJihuPXIpO24+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxuKTt0aGlzLnBvcz1uO3JldHVybiB0LnN1YmFycmF5KGEsbil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO3Q/ZSt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsZSt0KTplPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO2Z1bmN0aW9uIENodW5rZWRTdHJlYW1TdWJzdHJlYW0oKXt9Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZS5nZXRNaXNzaW5nQ2h1bmtzPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmNodW5rU2l6ZSx0PU1hdGguZmxvb3IodGhpcy5zdGFydC9lKSxhPU1hdGguZmxvb3IoKHRoaXMuZW5kLTEpL2UpKzEscj1bXTtmb3IobGV0IGU9dDtlPGE7KytlKXRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl8fHIucHVzaChlKTtyZXR1cm4gcn07T2JqZWN0LmRlZmluZVByb3BlcnR5KENodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLCJpc0RhdGFMb2FkZWQiLHtnZXQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc3x8MD09PXRoaXMuZ2V0TWlzc2luZ0NodW5rcygpLmxlbmd0aH0sY29uZmlndXJhYmxlOiEwfSk7Y29uc3Qgcj1uZXcgQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbTtyLnBvcz1yLnN0YXJ0PWU7ci5lbmQ9ZSt0fHx0aGlzLmVuZDtyLmRpY3Q9YTtyZXR1cm4gcn1nZXRCYXNlU3RyZWFtcygpe3JldHVyblt0aGlzXX19dC5DaHVua2VkU3RyZWFtPUNodW5rZWRTdHJlYW07dC5DaHVua2VkU3RyZWFtTWFuYWdlcj1jbGFzcyBDaHVua2VkU3RyZWFtTWFuYWdlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO3RoaXMuY2h1bmtTaXplPXQucmFuZ2VDaHVua1NpemU7dGhpcy5zdHJlYW09bmV3IENodW5rZWRTdHJlYW0odGhpcy5sZW5ndGgsdGhpcy5jaHVua1NpemUsdGhpcyk7dGhpcy5wZGZOZXR3b3JrU3RyZWFtPWU7dGhpcy5kaXNhYmxlQXV0b0ZldGNoPXQuZGlzYWJsZUF1dG9GZXRjaDt0aGlzLm1zZ0hhbmRsZXI9dC5tc2dIYW5kbGVyO3RoaXMuY3VyclJlcXVlc3RJZD0wO3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdD1uZXcgTWFwO3RoaXMuX3JlcXVlc3RzQnlDaHVuaz1uZXcgTWFwO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9MDt0aGlzLmFib3J0ZWQ9ITE7dGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eT1uZXcgbi5Qcm9taXNlQ2FwYWJpbGl0eX1zZW5kUmVxdWVzdChlLHQpe2NvbnN0IGE9dGhpcy5wZGZOZXR3b3JrU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUsdCk7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8KGEub25Qcm9ncmVzcz10aGlzLm9uUHJvZ3Jlc3MuYmluZCh0aGlzKSk7bGV0IG49W10saT0wO3JldHVybiBuZXcgUHJvbWlzZSgoKGUsdCk9Pntjb25zdCByZWFkQ2h1bms9cz0+e2xldHt2YWx1ZTpvLGRvbmU6Y309czt0cnl7aWYoYyl7Y29uc3QgdD0oMCxyLmFycmF5QnVmZmVyc1RvQnl0ZXMpKG4pO249bnVsbDtlKHQpO3JldHVybn1pKz1vLmJ5dGVMZW5ndGg7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6aX0pO24ucHVzaChvKTthLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07YS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkudGhlbigodD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX1yZXF1ZXN0QWxsQ2h1bmtzKCl7aWYoIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdKSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssYT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxhLmFkZCh0KTtpZigwPT09YS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCByPW5ldyBuLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnNldCh0LHIpO2NvbnN0IGk9W107Zm9yKGNvbnN0IGUgb2YgYSl7bGV0IGE9dGhpcy5fcmVxdWVzdHNCeUNodW5rLmdldChlKTtpZighYSl7YT1bXTt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuc2V0KGUsYSk7aS5wdXNoKGUpfWEucHVzaCh0KX1pZihpLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMuZ3JvdXBDaHVua3MoaSk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10LmJlZ2luQ2h1bmsqdGhpcy5jaHVua1NpemUsYT1NYXRoLm1pbih0LmVuZENodW5rKnRoaXMuY2h1bmtTaXplLHRoaXMubGVuZ3RoKTt0aGlzLnNlbmRSZXF1ZXN0KGUsYSkuY2F0Y2goci5yZWplY3QpfX1yZXR1cm4gci5wcm9taXNlLmNhdGNoKChlPT57aWYoIXRoaXMuYWJvcnRlZCl0aHJvdyBlfSkpfWdldFN0cmVhbSgpe3JldHVybiB0aGlzLnN0cmVhbX1yZXF1ZXN0UmFuZ2UoZSx0KXt0PU1hdGgubWluKHQsdGhpcy5sZW5ndGgpO2NvbnN0IGE9dGhpcy5nZXRCZWdpbkNodW5rKGUpLHI9dGhpcy5nZXRFbmRDaHVuayh0KSxuPVtdO2ZvcihsZXQgZT1hO2U8cjsrK2Upbi5wdXNoKGUpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKG4pfXJlcXVlc3RSYW5nZXMoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W107Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPXRoaXMuZ2V0QmVnaW5DaHVuayhhLmJlZ2luKSxyPXRoaXMuZ2V0RW5kQ2h1bmsoYS5lbmQpO2ZvcihsZXQgYT1lO2E8cjsrK2EpdC5pbmNsdWRlcyhhKXx8dC5wdXNoKGEpfXQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IGE9LTEscj0tMTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTsrK24pe2NvbnN0IGk9ZVtuXTthPDAmJihhPWkpO2lmKHI+PTAmJnIrMSE9PWkpe3QucHVzaCh7YmVnaW5DaHVuazphLGVuZENodW5rOnIrMX0pO2E9aX1uKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6aSsxfSk7cj1pfXJldHVybiB0fW9uUHJvZ3Jlc3MoZSl7dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCp0aGlzLmNodW5rU2l6ZStlLmxvYWRlZCx0b3RhbDp0aGlzLmxlbmd0aH0pfW9uUmVjZWl2ZURhdGEoZSl7Y29uc3QgdD1lLmNodW5rLGE9dm9pZCAwPT09ZS5iZWdpbixyPWE/dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixuPXIrdC5ieXRlTGVuZ3RoLGk9TWF0aC5mbG9vcihyL3RoaXMuY2h1bmtTaXplKSxzPW48dGhpcy5sZW5ndGg/TWF0aC5mbG9vcihuL3RoaXMuY2h1bmtTaXplKTpNYXRoLmNlaWwobi90aGlzLmNodW5rU2l6ZSk7aWYoYSl7dGhpcy5zdHJlYW0ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHQpO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPW59ZWxzZSB0aGlzLnN0cmVhbS5vblJlY2VpdmVEYXRhKHIsdCk7dGhpcy5zdHJlYW0uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUodGhpcy5zdHJlYW0pO2NvbnN0IG89W107Zm9yKGxldCBlPWk7ZTxzOysrZSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUoZSk7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3QgdD10aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3QuZ2V0KGEpO3QuaGFzKGUpJiZ0LmRlbGV0ZShlKTt0LnNpemU+MHx8by5wdXNoKGEpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXtsZXQgZTtpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PXRoaXMuc3RyZWFtLm51bUNodW5rcy0xO3RoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHwoZT10KX1lbHNlIGU9dGhpcy5zdHJlYW0ubmV4dEVtcHR5Q2h1bmsocyk7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKTt0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplLHRvdGFsOnRoaXMubGVuZ3RofSl9b25FcnJvcihlKXt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlamVjdChlKX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuYWJvcnRlZD0hMDt0aGlzLnBkZk5ldHdvcmtTdHJlYW0mJnRoaXMucGRmTmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC52YWx1ZXMoKSl0LnJlamVjdChlKX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0cmluZ1N0cmVhbT10LlN0cmVhbT10Lk51bGxTdHJlYW09dm9pZCAwO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTt2YXIgcj1hKDE1MSksbj1hKDE0NCk7Y2xhc3MgU3RyZWFtIGV4dGVuZHMgci5CYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKCk7dGhpcy5ieXRlcz1lIGluc3RhbmNlb2YgVWludDhBcnJheT9lOm5ldyBVaW50OEFycmF5KGUpO3RoaXMuc3RhcnQ9dHx8MDt0aGlzLnBvcz10aGlzLnN0YXJ0O3RoaXMuZW5kPXQrYXx8dGhpcy5ieXRlcy5sZW5ndGg7dGhpcy5kaWN0PXJ9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aH1nZXRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxhPXRoaXMucG9zLHI9dGhpcy5lbmQ7aWYoIWUpcmV0dXJuIHQuc3ViYXJyYXkoYSxyKTtsZXQgbj1hK2U7bj5yJiYobj1yKTt0aGlzLnBvcz1uO3JldHVybiB0LnN1YmFycmF5KGEsbil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1yZXNldCgpe3RoaXMucG9zPXRoaXMuc3RhcnR9bW92ZVN0YXJ0KCl7dGhpcy5zdGFydD10aGlzLnBvc31tYWtlU3ViU3RyZWFtKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfX10LlN0cmVhbT1TdHJlYW07dC5TdHJpbmdTdHJlYW09Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCgwLG4uc3RyaW5nVG9CeXRlcykoZSkpfX07dC5OdWxsU3RyZWFtPWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QYWdlPXQuUERGRG9jdW1lbnQ9dm9pZCAwO2EoMik7YSgxMzkpO2EoMTE2KTthKDEyNik7YSgxMjgpO2EoMTMxKTthKDEzMyk7YSgxMzUpO2EoMTM3KTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7dmFyIHI9YSgxNDQpLG49YSgxNTYpLGk9YSgxNDkpLHM9YSgxNTApLG89YSgyMDEpLGM9YSgxNTEpLGw9YSgyMTgpLGg9YSgyMjApLHU9YSgyMjIpLGQ9YSgyNTUpLGY9YSgxNjYpLGc9YSgxNTQpLHA9YSgyMjYpLG09YSgyMTQpLGI9YSgxNjMpLHk9YSgxNjgpLHc9YSgyMjUpLFM9YSgyMTYpLHg9YSgyMjcpLEM9YSgyNTYpO2NvbnN0IHY9WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdle2NvbnN0cnVjdG9yKGUpe2xldHtwZGZNYW5hZ2VyOnQseHJlZjphLHBhZ2VJbmRleDpyLHBhZ2VEaWN0Om4scmVmOmksZ2xvYmFsSWRGYWN0b3J5OnMsZm9udENhY2hlOm8sYnVpbHRJbkNNYXBDYWNoZTpjLHN0YW5kYXJkRm9udERhdGFDYWNoZTpsLGdsb2JhbEltYWdlQ2FjaGU6aCxzeXN0ZW1Gb250Q2FjaGU6dSxub25CbGVuZE1vZGVzU2V0OmQseGZhRmFjdG9yeTpmfT1lO3RoaXMucGRmTWFuYWdlcj10O3RoaXMucGFnZUluZGV4PXI7dGhpcy5wYWdlRGljdD1uO3RoaXMueHJlZj1hO3RoaXMucmVmPWk7dGhpcy5mb250Q2FjaGU9bzt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9Yzt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1sO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1oO3RoaXMuc3lzdGVtRm9udENhY2hlPXU7dGhpcy5ub25CbGVuZE1vZGVzU2V0PWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXQuZXZhbHVhdG9yT3B0aW9uczt0aGlzLnJlc291cmNlc1Byb21pc2U9bnVsbDt0aGlzLnhmYUZhY3Rvcnk9Zjtjb25zdCBnPXtvYmo6MH07dGhpcy5fbG9jYWxJZEZhY3Rvcnk9Y2xhc3MgZXh0ZW5kcyBze3N0YXRpYyBjcmVhdGVPYmpJZCgpe3JldHVybmBwJHtyfV8keysrZy5vYmp9YH1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7cmV0dXJuYHAke2kudG9TdHJpbmcoKX1gfX19X2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtjb25zdCBhPSgwLGkuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dGhpcy5wYWdlRGljdCxrZXk6ZSxnZXRBcnJheTp0LHN0b3BXaGVuRm91bmQ6ITF9KTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT8xIT09YS5sZW5ndGgmJmFbMF1pbnN0YW5jZW9mIHMuRGljdD9zLkRpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTphfSk6YVswXTphfWdldCBjb250ZW50KCl7cmV0dXJuIHRoaXMucGFnZURpY3QuZ2V0QXJyYXkoIkNvbnRlbnRzIil9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiUmVzb3VyY2VzIik7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInJlc291cmNlcyIsZSBpbnN0YW5jZW9mIHMuRGljdD9lOnMuRGljdC5lbXB0eSl9X2dldEJvdW5kaW5nQm94KGUpe2lmKHRoaXMueGZhRGF0YSlyZXR1cm4gdGhpcy54ZmFEYXRhLmJib3g7bGV0IHQ9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLCEwKTtpZihBcnJheS5pc0FycmF5KHQpJiY0PT09dC5sZW5ndGgpe3Q9ci5VdGlsLm5vcm1hbGl6ZVJlY3QodCk7aWYodFsyXS10WzBdPjAmJnRbM10tdFsxXT4wKXJldHVybiB0OygwLHIud2FybikoYEVtcHR5LCBvciBpbnZhbGlkLCAvJHtlfSBlbnRyeS5gKX1yZXR1cm4gbnVsbH1nZXQgbWVkaWFCb3goKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHx2KX1nZXQgY3JvcEJveCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJjcm9wQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtsZXQgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTsoIm51bWJlciIhPXR5cGVvZiBlfHxlPD0wKSYmKGU9MSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhKDAsci5pc0FycmF5RXF1YWwpKGUsdCkpe2NvbnN0IGE9ci5VdGlsLmludGVyc2VjdChlLHQpO2lmKGEmJmFbMl0tYVswXT4wJiZhWzNdLWFbMV0+MClyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidmlldyIsYSk7KDAsci53YXJuKSgiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9Z2V0Q29udGVudFN0cmVhbSgpe3JldHVybiB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImNvbnRlbnQiKS50aGVuKChlPT5lIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtP2U6QXJyYXkuaXNBcnJheShlKT9uZXcgeS5TdHJlYW1zU2VxdWVuY2VTdHJlYW0oZSx0aGlzLl9vblN1YlN0cmVhbUVycm9yLmJpbmQodGhpcykpOm5ldyBnLk51bGxTdHJlYW0pKX1nZXQgeGZhRGF0YSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ4ZmFEYXRhIix0aGlzLnhmYUZhY3Rvcnk/e2Jib3g6dGhpcy54ZmFGYWN0b3J5LmdldEJvdW5kaW5nQm94KHRoaXMucGFnZUluZGV4KX06bnVsbCl9I3QoZSx0LGEpe2Zvcihjb25zdCBuIG9mIGUpaWYobi5pZCl7Y29uc3QgZT1zLlJlZi5mcm9tU3RyaW5nKG4uaWQpO2lmKCFlKXsoMCxyLndhcm4pKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7bi5pZH1gKTtjb250aW51ZX1pZihuLmRlbGV0ZWQpe3QucHV0KGUpO2NvbnRpbnVlfWE/LnB1dChlKTtuLnJlZj1lO2RlbGV0ZSBuLmlkfX1hc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEscil7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3QgaT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLG89bmV3IHMuUmVmU2V0LGM9bmV3IHMuUmVmU2V0O3RoaXMuI3QoYSxvLGMpO2NvbnN0IGw9dGhpcy5wYWdlRGljdCxoPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKChlPT4hKGUgaW5zdGFuY2VvZiBzLlJlZiYmby5oYXMoZSkpKSksdT1hd2FpdCBuLkFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhpLHQsYSxyKTtmb3IoY29uc3R7cmVmOmV9b2YgdS5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2Ygcy5SZWYmJiFjLmhhcyhlKSYmaC5wdXNoKGUpO2NvbnN0IGQ9bC5nZXQoIkFubm90cyIpO2wuc2V0KCJBbm5vdHMiLGgpO2NvbnN0IGY9W107bGV0IGc9bnVsbDt0aGlzLnhyZWYuZW5jcnlwdCYmKGc9dGhpcy54cmVmLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHRoaXMucmVmLm51bSx0aGlzLnJlZi5nZW4pKTthd2FpdCgwLFMud3JpdGVPYmplY3QpKHRoaXMucmVmLGwsZixnKTtkJiZsLnNldCgiQW5ub3RzIixkKTtjb25zdCBwPXUuZGVwZW5kZW5jaWVzO3AucHVzaCh7cmVmOnRoaXMucmVmLGRhdGE6Zi5qb2luKCIiKX0sLi4udS5hbm5vdGF0aW9ucyk7cmV0dXJuIHB9c2F2ZShlLHQsYSl7Y29uc3Qgbj1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pO3JldHVybiB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucy50aGVuKChmdW5jdGlvbihlKXtjb25zdCBpPVtdO2Zvcihjb25zdCBzIG9mIGUpcy5tdXN0QmVQcmludGVkKGEpJiZpLnB1c2gocy5zYXZlKG4sdCxhKS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsci53YXJuKShgc2F2ZSAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoaSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKChlPT4hIWUpKX0pKX0pKX1sb2FkUmVzb3VyY2VzKGUpe3RoaXMucmVzb3VyY2VzUHJvbWlzZXx8KHRoaXMucmVzb3VyY2VzUHJvbWlzZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpKTtyZXR1cm4gdGhpcy5yZXNvdXJjZXNQcm9taXNlLnRoZW4oKCgpPT5uZXcgcC5PYmplY3RMb2FkZXIodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpLmxvYWQoKSkpfWdldE9wZXJhdG9yTGlzdChlKXtsZXR7aGFuZGxlcjp0LHNpbms6YSx0YXNrOm8saW50ZW50OmMsY2FjaGVLZXk6bCxhbm5vdGF0aW9uU3RvcmFnZTpoPW51bGx9PWU7Y29uc3QgdT10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxkPXRoaXMubG9hZFJlc291cmNlcyhbIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdKSxmPW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6dCxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksZz10aGlzLnhmYUZhY3Rvcnk/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShoKTtsZXQgcD1udWxsLHk9UHJvbWlzZS5yZXNvbHZlKG51bGwpO2lmKGcpe2xldCBlO2NvbnN0IHQ9Zy5nZXQodGhpcy5wYWdlSW5kZXgpO2lmKHQpe2NvbnN0IGE9bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6ZSxiaXRtYXA6cn1vZiB0KSFlfHxyfHxhLmhhcyhlKXx8YS5hZGQoZSk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6aX09dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKGEuc2l6ZT4wKXtjb25zdCBzPXQuc2xpY2UoKTtmb3IoY29uc3RbZSx0XW9mIGgpZS5zdGFydHNXaXRoKHIuQW5ub3RhdGlvbkVkaXRvclByZWZpeCkmJnQuYml0bWFwJiZhLmhhcyh0LmJpdG1hcElkKSYmcy5wdXNoKHQpO2U9bi5Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhzLHRoaXMueHJlZixpKX1lbHNlIGU9bi5Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyh0LHRoaXMueHJlZixpKTtwPW5ldyBzLlJlZlNldDt0aGlzLiN0KHQscCxudWxsKTt5PW4uQW5ub3RhdGlvbkZhY3RvcnkucHJpbnROZXdBbm5vdGF0aW9ucyhmLG8sdCxlKX19Y29uc3Qgdz1Qcm9taXNlLmFsbChbdSxkXSkudGhlbigoZT0+e2xldFtyXT1lO2NvbnN0IG49bmV3IG0uT3BlcmF0b3JMaXN0KGMsYSk7dC5zZW5kKCJTdGFydFJlbmRlclBhZ2UiLHt0cmFuc3BhcmVuY3k6Zi5oYXNCbGVuZE1vZGVzKHRoaXMucmVzb3VyY2VzLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGNhY2hlS2V5Omx9KTtyZXR1cm4gZi5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpyLHRhc2s6byxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsb3BlcmF0b3JMaXN0Om59KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBufSkpfSkpO3JldHVybiBQcm9taXNlLmFsbChbdyx0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyx5XSkudGhlbigoZnVuY3Rpb24oZSl7bGV0W3QsYSxuXT1lO2lmKG4pe2E9YS5maWx0ZXIoKGU9PiEoZS5yZWYmJnAuaGFzKGUucmVmKSkpKTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHI9bltlXTtpZihyLnJlZlRvUmVwbGFjZSl7Y29uc3QgaT1hLmZpbmRJbmRleCgoZT0+ZS5yZWYmJigwLHMuaXNSZWZzRXF1YWwpKGUucmVmLHIucmVmVG9SZXBsYWNlKSkpO2lmKGk+PTApe2Euc3BsaWNlKGksMSxyKTtuLnNwbGljZShlLS0sMSk7dC0tfX19YT1hLmNvbmNhdChuKX1pZigwPT09YS5sZW5ndGh8fGMmci5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEUpe3QuZmx1c2goITApO3JldHVybntsZW5ndGg6dC50b3RhbExlbmd0aH19Y29uc3QgaT0hIShjJnIuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUyksbD0hIShjJnIuUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLHU9ISEoYyZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksZD0hIShjJnIuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCksZz1bXTtmb3IoY29uc3QgZSBvZiBhKShsfHx1JiZlLm11c3RCZVZpZXdlZChoKXx8ZCYmZS5tdXN0QmVQcmludGVkKGgpKSYmZy5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KGYsbyxjLGksaCkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7by5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZykudGhlbigoZnVuY3Rpb24oZSl7bGV0IGE9ITEscj0hMTtmb3IoY29uc3R7b3BMaXN0Om4sc2VwYXJhdGVGb3JtOmksc2VwYXJhdGVDYW52YXM6c31vZiBlKXt0LmFkZE9wTGlzdChuKTthfHw9aTtyfHw9c310LmZsdXNoKCEwLHtmb3JtOmEsY2FudmFzOnJ9KTtyZXR1cm57bGVuZ3RoOnQudG90YWxMZW5ndGh9fSkpfSkpfWV4dHJhY3RUZXh0Q29udGVudChlKXtsZXR7aGFuZGxlcjp0LHRhc2s6YSxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOm4sc2luazppfT1lO2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbz10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSk7cmV0dXJuIFByb21pc2UuYWxsKFtzLG9dKS50aGVuKChlPT57bGV0W3NdPWU7cmV0dXJuIG5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6dCxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpzLHRhc2s6YSxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cixkaXNhYmxlTm9ybWFsaXphdGlvbjpuLHNpbms6aSx2aWV3Qm94OnRoaXMudmlld30pfSkpfWFzeW5jIGdldFN0cnVjdFRyZWUoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpO2lmKCFlKXJldHVybiBudWxsO3JldHVybihhd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsIl9wYXJzZVN0cnVjdFRyZWUiLFtlXSkpLnNlcmlhbGl6YWJsZX1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IHcuU3RydWN0VHJlZVBhZ2UoZSx0aGlzLnBhZ2VEaWN0KTt0LnBhcnNlKCk7cmV0dXJuIHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxhKXtjb25zdCBuPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1uLmxlbmd0aClyZXR1cm5bXTtjb25zdCBpPVtdLHM9W107bGV0IG87Y29uc3QgYz0hIShhJnIuUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLGw9ISEoYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD0hIShhJnIuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7Zm9yKGNvbnN0IGEgb2Ygbil7Y29uc3Qgbj1jfHxsJiZhLnZpZXdhYmxlOyhufHxoJiZhLnByaW50YWJsZSkmJmkucHVzaChhLmRhdGEpO2lmKGEuaGFzVGV4dENvbnRlbnQmJm4pe298fD1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pO3MucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChvLHQsWy0xLzAsLTEvMCwxLzAsMS8wXSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLHIud2FybikoYGdldEFubm90YXRpb25zRGF0YSAtIGlnbm9yaW5nIHRleHRDb250ZW50IGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCl9KSkpfX1hd2FpdCBQcm9taXNlLmFsbChzKTtyZXR1cm4gaX1nZXQgYW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIkFubm90cyIpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImFubm90YXRpb25zIikudGhlbigoKCk9Pntjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuYW5ub3RhdGlvbnMpZS5wdXNoKG4uQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZix0LHRoaXMucGRmTWFuYWdlcix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLHIud2FybikoYF9wYXJzZWRBbm5vdGF0aW9uczogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZSkudGhlbigoZnVuY3Rpb24oZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiBlO2NvbnN0IHQ9W107bGV0IGE7Zm9yKGNvbnN0IHIgb2YgZSlyJiYociBpbnN0YW5jZW9mIG4uUG9wdXBBbm5vdGF0aW9uPyhhfHw9W10pLnB1c2gocik6dC5wdXNoKHIpKTthJiZ0LnB1c2goLi4uYSk7cmV0dXJuIHR9KSl9KSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIl9wYXJzZWRBbm5vdGF0aW9ucyIsZSl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9KDAsaS5jb2xsZWN0QWN0aW9ucykodGhpcy54cmVmLHRoaXMucGFnZURpY3Qsci5QYWdlQWN0aW9uRXZlbnRUeXBlKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywianNBY3Rpb25zIixlKX19dC5QYWdlPVBhZ2U7Y29uc3Qgaz1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxPPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksVD1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTExLDk4LDEwNl0pO2Z1bmN0aW9uIGZpbmQoZSx0KXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAyNCxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107Y29uc3Qgbj10Lmxlbmd0aCxpPWUucGVla0J5dGVzKGEpLHM9aS5sZW5ndGgtbjtpZihzPD0wKXJldHVybiExO2lmKHIpe2NvbnN0IGE9bi0xO2xldCByPWkubGVuZ3RoLTE7Zm9yKDtyPj1hOyl7bGV0IHM9MDtmb3IoO3M8biYmaVtyLXNdPT09dFthLXNdOylzKys7aWYocz49bil7ZS5wb3MrPXItYTtyZXR1cm4hMH1yLS19fWVsc2V7bGV0IGE9MDtmb3IoO2E8PXM7KXtsZXQgcj0wO2Zvcig7cjxuJiZpW2Ercl09PT10W3JdOylyKys7aWYocj49bil7ZS5wb3MrPWE7cmV0dXJuITB9YSsrfX1yZXR1cm4hMX10LlBERkRvY3VtZW50PWNsYXNzIFBERkRvY3VtZW50e2NvbnN0cnVjdG9yKGUsdCl7aWYodC5sZW5ndGg8PTApdGhyb3cgbmV3IHIuSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5zdHJlYW09dDt0aGlzLnhyZWY9bmV3IEMuWFJlZih0LGUpO3RoaXMuX3BhZ2VQcm9taXNlcz1uZXcgTWFwO3RoaXMuX3ZlcnNpb249bnVsbDtjb25zdCBhPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm5gZ18ke2UuZG9jSWR9YH1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK2EuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKTt0aGlzLmNhdGFsb2c9bmV3IGguQ2F0YWxvZyh0aGlzLnBkZk1hbmFnZXIsdGhpcy54cmVmKX1nZXQgbGluZWFyaXphdGlvbigpe2xldCBlPW51bGw7dHJ5e2U9Zi5MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLmluZm8pKGUpfXJldHVybigwLHIuc2hhZG93KSh0aGlzLCJsaW5lYXJpemF0aW9uIixlKX1nZXQgc3RhcnRYUmVmKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtsZXQgdD0wO2lmKHRoaXMubGluZWFyaXphdGlvbil7ZS5yZXNldCgpO2ZpbmQoZSxUKSYmKHQ9ZS5wb3MrNi1lLnN0YXJ0KX1lbHNle2NvbnN0IGE9MTAyNCxyPU8ubGVuZ3RoO2xldCBuPSExLHM9ZS5lbmQ7Zm9yKDshbiYmcz4wOyl7cy09YS1yO3M8MCYmKHM9MCk7ZS5wb3M9cztuPWZpbmQoZSxPLGEsITApfWlmKG4pe2Uuc2tpcCg5KTtsZXQgYTtkb3thPWUuZ2V0Qnl0ZSgpfXdoaWxlKCgwLGkuaXNXaGl0ZVNwYWNlKShhKSk7bGV0IHI9IiI7Zm9yKDthPj0zMiYmYTw9NTc7KXtyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZS5nZXRCeXRlKCl9dD1wYXJzZUludChyLDEwKTtpc05hTih0KSYmKHQ9MCl9fXJldHVybigwLHIuc2hhZG93KSh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxrKSlyZXR1cm47ZS5tb3ZlU3RhcnQoKTtlLnNraXAoay5sZW5ndGgpO2xldCB0LGE9IiI7Zm9yKDsodD1lLmdldEJ5dGUoKSk+MzImJmEubGVuZ3RoPDc7KWErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aS5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChhKT90aGlzLl92ZXJzaW9uPWE6KDAsci53YXJuKShgSW52YWxpZCBQREYgaGVhZGVyIHZlcnNpb246ICR7YX1gKX1wYXJzZVN0YXJ0WFJlZigpe3RoaXMueHJlZi5zZXRTdGFydFhSZWYodGhpcy5zdGFydFhSZWYpfWdldCBudW1QYWdlcygpe2xldCBlPTA7ZT10aGlzLmNhdGFsb2cuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5jYXRhbG9nLm51bVBhZ2VzOnRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0TnVtUGFnZXMoKTp0aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnRoaXMuY2F0YWxvZy5udW1QYWdlcztyZXR1cm4oMCxyLnNoYWRvdykodGhpcywibnVtUGFnZXMiLGUpfV9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeSgoZT0+e2lmKCEoKGU9dGhpcy54cmVmLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiExO2lmKGUuaGFzKCJLaWRzIikpe2lmKCsrdD4xMCl7KDAsci53YXJuKSgiX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXM6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIHJlYWNoZWQiKTtyZXR1cm4hMX1yZXR1cm4gdGhpcy5faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLmdldCgiS2lkcyIpLHQpfWNvbnN0IGE9KDAscy5pc05hbWUpKGUuZ2V0KCJGVCIpLCJTaWciKSxuPWUuZ2V0KCJSZWN0IiksaT1BcnJheS5pc0FycmF5KG4pJiZuLmV2ZXJ5KChlPT4wPT09ZSkpO3JldHVybiBhJiZpfSkpfWdldCBfeGZhU3RyZWFtcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5nZXQoIlhGQSIpLGE9eyJ4ZHA6eGRwIjoiIix0ZW1wbGF0ZToiIixkYXRhc2V0czoiIixjb25maWc6IiIsY29ubmVjdGlvblNldDoiIixsb2NhbGVTZXQ6IiIsc3R5bGVzaGVldDoiIiwiL3hkcDp4ZHAiOiIifTtpZih0IGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXthWyJ4ZHA6eGRwIl09dDtyZXR1cm4gYX1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrPTIpe2xldCBuO249MD09PWU/InhkcDp4ZHAiOmU9PT1yLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFhLmhhc093blByb3BlcnR5KG4pKWNvbnRpbnVlO2NvbnN0IGk9dGhpcy54cmVmLmZldGNoSWZSZWYodFtlKzFdKTtpIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtJiYhaS5pc0VtcHR5JiYoYVtuXT1pKX1yZXR1cm4gYX1nZXQgeGZhRGF0YXNldHMoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInhmYURhdGFzZXRzIixudWxsKTtmb3IoY29uc3QgdCBvZlsiZGF0YXNldHMiLCJ4ZHA6eGRwIl0pe2NvbnN0IGE9ZVt0XTtpZihhKXRyeXtjb25zdCBlPXtbdF06KDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKGEuZ2V0U3RyaW5nKCkpfTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG5ldyBkLkRhdGFzZXRSZWFkZXIoZSkpfWNhdGNoeygwLHIud2FybikoIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4oMCxyLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG51bGwpfWdldCB4ZmFEYXRhKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbYSxuXW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKG4pdHJ5e3RbYV09KDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKG4uZ2V0U3RyaW5nKCkpfWNhdGNoeygwLHIud2FybikoIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO3JldHVybiBudWxsfXJldHVybiB0fWdldCB4ZmFGYWN0b3J5KCl7bGV0IGU7dGhpcy5wZGZNYW5hZ2VyLmVuYWJsZVhmYSYmdGhpcy5jYXRhbG9nLm5lZWRzUmVuZGVyaW5nJiZ0aGlzLmZvcm1JbmZvLmhhc1hmYSYmIXRoaXMuZm9ybUluZm8uaGFzQWNyb0Zvcm0mJihlPXRoaXMueGZhRGF0YSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInhmYUZhY3RvcnkiLGU/bmV3IHguWEZBRmFjdG9yeShlKTpudWxsKX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLnhmYUZhY3RvcnkmJnRoaXMueGZhRmFjdG9yeS5pc1ZhbGlkKCl9Z2V0IGh0bWxGb3JYZmEoKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXRQYWdlcygpOm51bGx9YXN5bmMgbG9hZFhmYUltYWdlcygpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2lmKCFlKXJldHVybjtjb25zdCB0PWUuZ2V0S2V5cygpLGE9bmV3IHAuT2JqZWN0TG9hZGVyKGUsdCx0aGlzLnhyZWYpO2F3YWl0IGEubG9hZCgpO2NvbnN0IHI9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWUuZ2V0KGEpO3QgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJnIuc2V0KGEsdC5nZXRCeXRlcygpKX10aGlzLnhmYUZhY3Rvcnkuc2V0SW1hZ2VzKHIpfWFzeW5jIGxvYWRYZmFGb250cyhlLHQpe2NvbnN0IGE9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIik7aWYoIWEpcmV0dXJuO2NvbnN0IG49YXdhaXQgYS5nZXRBc3luYygiRFIiKTtpZighKG4gaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBjPW5ldyBwLk9iamVjdExvYWRlcihuLFsiRm9udCJdLHRoaXMueHJlZik7YXdhaXQgYy5sb2FkKCk7Y29uc3QgbD1uLmdldCgiRm9udCIpO2lmKCEobCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGg9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zKTtoLnVzZVN5c3RlbUZvbnRzPSExO2NvbnN0IHU9bmV3IGIuUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDotMSxpZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmNhdGFsb2cuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5jYXRhbG9nLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuY2F0YWxvZy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsb3B0aW9uczpofSksZD1uZXcgbS5PcGVyYXRvckxpc3QsZj1bXSxnPXtnZXQgZm9udCgpe3JldHVybiBmLmF0KC0xKX0sc2V0IGZvbnQoZSl7Zi5wdXNoKGUpfSxjbG9uZSgpe3JldHVybiB0aGlzfX0seT1uZXcgTWFwO2wuZm9yRWFjaCgoKGUsdCk9Pnt5LnNldChlLHQpfSkpO2NvbnN0IHc9W107Zm9yKGNvbnN0W2UsYV1vZiB5KXtjb25zdCBvPWEuZ2V0KCJGb250RGVzY3JpcHRvciIpO2lmKCEobyBpbnN0YW5jZW9mIHMuRGljdCkpY29udGludWU7bGV0IGM9by5nZXQoIkZvbnRGYW1pbHkiKTtjPWMucmVwbGFjZUFsbCgvWyBdKyhcZCkvZywiJDEiKTtjb25zdCBsPXtmb250RmFtaWx5OmMsZm9udFdlaWdodDpvLmdldCgiRm9udFdlaWdodCIpLGl0YWxpY0FuZ2xlOi1vLmdldCgiSXRhbGljQW5nbGUiKX07KDAsaS52YWxpZGF0ZUNTU0ZvbnQpKGwpJiZ3LnB1c2godS5oYW5kbGVTZXRGb250KG4sW3MuTmFtZS5nZXQoZSksMV0sbnVsbCxkLHQsZyxudWxsLGwpLmNhdGNoKChmdW5jdGlvbihlKXsoMCxyLndhcm4pKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwodyk7Y29uc3QgUz10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoZik7aWYoIVMpcmV0dXJuO2guaWdub3JlRXJyb3JzPSEwO3cubGVuZ3RoPTA7Zi5sZW5ndGg9MDtjb25zdCB4PW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgUykoMCxvLmdldFhmYUZvbnROYW1lKShgJHtlfS1SZWd1bGFyYCl8fHguYWRkKGUpO3guc2l6ZSYmUy5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIFMpaWYoIXguaGFzKGUpKWZvcihjb25zdCBhIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCBpPWAke2V9LSR7YS5uYW1lfWAsYz0oMCxvLmdldFhmYUZvbnREaWN0KShpKTt3LnB1c2godS5oYW5kbGVTZXRGb250KG4sW3MuTmFtZS5nZXQoaSksMV0sbnVsbCxkLHQsZyxjLHtmb250RmFtaWx5OmUsZm9udFdlaWdodDphLmZvbnRXZWlnaHQsaXRhbGljQW5nbGU6YS5pdGFsaWNBbmdsZX0pLmNhdGNoKChmdW5jdGlvbihlKXsoMCxyLndhcm4pKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwodyk7dGhpcy54ZmFGYWN0b3J5LmFwcGVuZEZvbnRzKGYseCl9YXN5bmMgc2VyaWFsaXplWGZhRGF0YShlKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5zZXJpYWxpemVEYXRhKGUpOm51bGx9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5jYXRhbG9nLnZlcnNpb258fHRoaXMuX3ZlcnNpb259Z2V0IGZvcm1JbmZvKCl7Y29uc3QgZT17aGFzRmllbGRzOiExLGhhc0Fjcm9Gb3JtOiExLGhhc1hmYTohMSxoYXNTaWduYXR1cmVzOiExfSx0PXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighdClyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZm9ybUluZm8iLGUpO3RyeXtjb25zdCBhPXQuZ2V0KCJGaWVsZHMiKSxyPUFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoPjA7ZS5oYXNGaWVsZHM9cjtjb25zdCBuPXQuZ2V0KCJYRkEiKTtlLmhhc1hmYT1BcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aD4wfHxuIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtJiYhbi5pc0VtcHR5O2NvbnN0IGk9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSkscz1pJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGEpO2UuaGFzQWNyb0Zvcm09ciYmIXM7ZS5oYXNTaWduYXR1cmVzPWl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBDYW5ub3QgZmV0Y2ggZm9ybSBpbmZvcm1hdGlvbjogIiR7ZX0iLmApfXJldHVybigwLHIuc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSl9Z2V0IGRvY3VtZW50SW5mbygpe2NvbnN0IGU9e1BERkZvcm1hdFZlcnNpb246dGhpcy52ZXJzaW9uLExhbmd1YWdlOnRoaXMuY2F0YWxvZy5sYW5nLEVuY3J5cHRGaWx0ZXJOYW1lOnRoaXMueHJlZi5lbmNyeXB0P3RoaXMueHJlZi5lbmNyeXB0LmZpbHRlck5hbWU6bnVsbCxJc0xpbmVhcml6ZWQ6ISF0aGlzLmxpbmVhcml6YXRpb24sSXNBY3JvRm9ybVByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSxJc1hGQVByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNYZmEsSXNDb2xsZWN0aW9uUHJlc2VudDohIXRoaXMuY2F0YWxvZy5jb2xsZWN0aW9uLElzU2lnbmF0dXJlc1ByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNTaWduYXR1cmVzfTtsZXQgdDt0cnl7dD10aGlzLnhyZWYudHJhaWxlci5nZXQoIkluZm8iKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIuaW5mbykoIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZG9jdW1lbnRJbmZvIixlKTtmb3IoY29uc3QgYSBvZiB0LmdldEtleXMoKSl7Y29uc3Qgbj10LmdldChhKTtzd2l0Y2goYSl7Y2FzZSJUaXRsZSI6Y2FzZSJBdXRob3IiOmNhc2UiU3ViamVjdCI6Y2FzZSJLZXl3b3JkcyI6Y2FzZSJDcmVhdG9yIjpjYXNlIlByb2R1Y2VyIjpjYXNlIkNyZWF0aW9uRGF0ZSI6Y2FzZSJNb2REYXRlIjppZigic3RyaW5nIj09dHlwZW9mIG4pe2VbYV09KDAsci5zdHJpbmdUb1BERlN0cmluZykobik7Y29udGludWV9YnJlYWs7Y2FzZSJUcmFwcGVkIjppZihuIGluc3RhbmNlb2Ygcy5OYW1lKXtlW2FdPW47Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIG4pe2Nhc2Uic3RyaW5nIjp0PSgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKG4pO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9bjticmVhaztkZWZhdWx0Om4gaW5zdGFuY2VvZiBzLk5hbWUmJih0PW4pfWlmKHZvaWQgMD09PXQpeygwLHIud2FybikoYEJhZCB2YWx1ZSwgZm9yIGN1c3RvbSBrZXkgIiR7YX0iLCBpbiBJbmZvOiAke259LmApO2NvbnRpbnVlfWUuQ3VzdG9tfHwoZS5DdXN0b209T2JqZWN0LmNyZWF0ZShudWxsKSk7ZS5DdXN0b21bYV09dDtjb250aW51ZX0oMCxyLndhcm4pKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBJbmZvOiAke259LmApfXJldHVybigwLHIuc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLGUpfWdldCBmaW5nZXJwcmludHMoKXtmdW5jdGlvbiB2YWxpZGF0ZShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJmUubGVuZ3RoPjAmJiJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIhPT1lfWZ1bmN0aW9uIGhleFN0cmluZyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9YS50b1N0cmluZygxNik7dC5wdXNoKGUucGFkU3RhcnQoMiwiMCIpKX1yZXR1cm4gdC5qb2luKCIiKX1jb25zdCBlPXRoaXMueHJlZi50cmFpbGVyLmdldCgiSUQiKTtsZXQgdCxhO2lmKEFycmF5LmlzQXJyYXkoZSkmJnZhbGlkYXRlKGVbMF0pKXt0PSgwLHIuc3RyaW5nVG9CeXRlcykoZVswXSk7ZVsxXSE9PWVbMF0mJnZhbGlkYXRlKGVbMV0pJiYoYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGVbMV0pKX1lbHNlIHQ9KDAsbC5jYWxjdWxhdGVNRDUpKHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImZpbmdlcnByaW50cyIsW2hleFN0cmluZyh0KSxhP2hleFN0cmluZyhhKTpudWxsXSl9YXN5bmMgX2dldExpbmVhcml6YXRpb25QYWdlKGUpe2NvbnN0e2NhdGFsb2c6dCxsaW5lYXJpemF0aW9uOmEseHJlZjpufT10aGlzLGk9cy5SZWYuZ2V0KGEub2JqZWN0TnVtYmVyRmlyc3QsMCk7dHJ5e2NvbnN0IGU9YXdhaXQgbi5mZXRjaEFzeW5jKGkpO2lmKGUgaW5zdGFuY2VvZiBzLkRpY3Qpe2xldCBhPWUuZ2V0UmF3KCJUeXBlIik7YSBpbnN0YW5jZW9mIHMuUmVmJiYoYT1hd2FpdCBuLmZldGNoQXN5bmMoYSkpO2lmKCgwLHMuaXNOYW1lKShhLCJQYWdlIil8fCFlLmhhcygiVHlwZSIpJiYhZS5oYXMoIktpZHMiKSl7dC5wYWdlS2lkc0NvdW50Q2FjaGUuaGFzKGkpfHx0LnBhZ2VLaWRzQ291bnRDYWNoZS5wdXQoaSwxKTt0LnBhZ2VJbmRleENhY2hlLmhhcyhpKXx8dC5wYWdlSW5kZXhDYWNoZS5wdXQoaSwwKTtyZXR1cm5bZSxpXX19dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChhKXsoMCxyLndhcm4pKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2EubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy5fcGFnZVByb21pc2VzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0e2NhdGFsb2c6YSxsaW5lYXJpemF0aW9uOnIseGZhRmFjdG9yeTpufT10aGlzO2xldCBpO2k9bj9Qcm9taXNlLnJlc29sdmUoW3MuRGljdC5lbXB0eSxudWxsXSk6cj8ucGFnZUZpcnN0PT09ZT90aGlzLl9nZXRMaW5lYXJpemF0aW9uUGFnZShlKTphLmdldFBhZ2VEaWN0KGUpO2k9aS50aGVuKCh0PT57bGV0W3IsaV09dDtyZXR1cm4gbmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnIscmVmOmksZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTphLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OmEubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Om59KX0pKTt0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUsaSk7cmV0dXJuIGl9YXN5bmMgY2hlY2tGaXJzdFBhZ2UoKXtpZighKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOmF9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCBuO3RyeXthd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxhLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGEuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47bj10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIobikpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYobjw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKG4tMSl9Y2F0Y2gocyl7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShuLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHMgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uOygwLHIud2FybikoYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHtufS5gKTtsZXQgbzt0cnl7bz1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChhKXtpZihhIGluc3RhbmNlb2YgaS5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbjt0LnNldEFjdHVhbE51bVBhZ2VzKDEpO3JldHVybn1mb3IoY29uc3RbZSxbcixuXV1vZiBvKXtsZXQgaTtpZihyIGluc3RhbmNlb2YgRXJyb3Ipe2k9UHJvbWlzZS5yZWplY3Qocik7aS5jYXRjaCgoKCk9Pnt9KSl9ZWxzZSBpPVByb21pc2UucmVzb2x2ZShuZXcgUGFnZSh7cGRmTWFuYWdlcjphLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnIscmVmOm4sZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dC5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0LmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnQuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dC5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0LnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OnQubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Om51bGx9KSk7dGhpcy5fcGFnZVByb21pc2VzLnNldChlLGkpfXQuc2V0QWN0dWFsTnVtUGFnZXMoby5zaXplKX19Zm9udEZhbGxiYWNrKGUsdCl7cmV0dXJuIHRoaXMuY2F0YWxvZy5mb250RmFsbGJhY2soZSx0KX1hc3luYyBjbGVhbnVwKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOigwLHUuY2xlYXJHbG9iYWxDYWNoZXMpKCl9X2NvbGxlY3RGaWVsZE9iamVjdHMoZSx0LGEpe2NvbnN0IGk9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoaS5oYXMoIlQiKSl7Y29uc3QgdD0oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShpLmdldCgiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfSFpLmhhcygiS2lkcyIpJiYvXFtcZCtcXSQvLnRlc3QoZSkmJihlPWUuc3Vic3RyaW5nKDAsZS5sYXN0SW5kZXhPZigiWyIpKSk7YS5oYXMoZSl8fGEuc2V0KGUsW10pO2EuZ2V0KGUpLnB1c2gobi5Bbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLHQsdGhpcy5wZGZNYW5hZ2VyLHRoaXMuX2xvY2FsSWRGYWN0b3J5LCEwKS50aGVuKChlPT5lPy5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLHIud2FybikoYF9jb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKGkuaGFzKCJLaWRzIikpe2NvbnN0IHQ9aS5nZXQoIktpZHMiKTtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoZSxyLGEpfX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLHIuc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0aGlzLmNhdGFsb2cuYWNyb0Zvcm0uZ2V0KCJGaWVsZHMiKSl0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGUsdCk7Y29uc3QgYT1bXTtmb3IoY29uc3RbcixuXW9mIHQpYS5wdXNoKFByb21pc2UuYWxsKG4pLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoZVtyXT10KX0pKSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoYSkudGhlbigoKCk9PmUpKSl9Z2V0IGhhc0pTQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIik7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImhhc0pTQWN0aW9ucyIsZSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQmJk9iamVjdC52YWx1ZXModCkuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlPy5oYXMoIkNPIikpcmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBzLlJlZiYmYS5wdXNoKGUudG9TdHJpbmcoKSk7cmV0dXJuIDA9PT1hLmxlbmd0aD8oMCxyLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsci5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLGEpfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9wdXBBbm5vdGF0aW9uPXQuTWFya3VwQW5ub3RhdGlvbj10LkFubm90YXRpb25GYWN0b3J5PXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPXQuQW5ub3RhdGlvbj12b2lkIDA7dC5nZXRRdWFkUG9pbnRzPWdldFF1YWRQb2ludHM7YSgxMzkpO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTthKDE1Nyk7YSgxNTkpO3ZhciByPWEoMTQ0KSxuPWEoMTQ5KSxpPWEoMTYxKSxzPWEoMTUwKSxvPWEoMTU0KSxjPWEoMjE2KSxsPWEoMTUxKSxoPWEoMjEwKSx1PWEoMjIwKSxkPWEoMTYyKSxmPWEoMjIzKSxnPWEoMTc2KSxwPWEoMjI2KSxtPWEoMjE0KSxiPWEoMjI3KTt0LkFubm90YXRpb25GYWN0b3J5PWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0LGEscixuKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksYS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksbj90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEpOi0xXSkudGhlbigoaT0+e2xldFtzLG8sYyxsLGhdPWk7cmV0dXJuIGEuZW5zdXJlKHRoaXMsIl9jcmVhdGUiLFtlLHQsYSxyLHMsYyxsLG4saF0pfSkpfXN0YXRpYyBfY3JlYXRlKGUsdCxhLGksbyl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsbD1hcmd1bWVudHMubGVuZ3RoPjY/YXJndW1lbnRzWzZdOnZvaWQgMCxoPWFyZ3VtZW50cy5sZW5ndGg+Nz9hcmd1bWVudHNbN106dm9pZCAwLHU9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOi0xO2NvbnN0IGQ9ZS5mZXRjaElmUmVmKHQpO2lmKCEoZCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGY9dCBpbnN0YW5jZW9mIHMuUmVmP3QudG9TdHJpbmcoKTpgYW5ub3RfJHtpLmNyZWF0ZU9iaklkKCl9YDtsZXQgZz1kLmdldCgiU3VidHlwZSIpO2c9ZyBpbnN0YW5jZW9mIHMuTmFtZT9nLm5hbWU6bnVsbDtjb25zdCBwPW8gaW5zdGFuY2VvZiBzLkRpY3Q/bzpzLkRpY3QuZW1wdHksbT17eHJlZjplLHJlZjp0LGRpY3Q6ZCxzdWJ0eXBlOmcsaWQ6ZixwZGZNYW5hZ2VyOmEsYWNyb0Zvcm06cCxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOmwsY29sbGVjdEZpZWxkczpoLG5lZWRBcHBlYXJhbmNlczohaCYmITA9PT1wLmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4OnUsZXZhbHVhdG9yT3B0aW9uczphLmV2YWx1YXRvck9wdGlvbnN9O3N3aXRjaChnKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24obSk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKG0pO2Nhc2UiV2lkZ2V0IjpsZXQgZT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OmQsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBzLk5hbWU/ZS5uYW1lOm51bGw7c3dpdGNoKGUpe2Nhc2UiVHgiOnJldHVybiBuZXcgVGV4dFdpZGdldEFubm90YXRpb24obSk7Y2FzZSJCdG4iOnJldHVybiBuZXcgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbihtKTtjYXNlIkNoIjpyZXR1cm4gbmV3IENob2ljZVdpZGdldEFubm90YXRpb24obSk7Y2FzZSJTaWciOnJldHVybiBuZXcgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbihtKX0oMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIHdpZGdldCBmaWVsZCB0eXBlICIke2V9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgZmllbGQgdHlwZS5gKTtyZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb24obSk7Y2FzZSJQb3B1cCI6cmV0dXJuIG5ldyBQb3B1cEFubm90YXRpb24obSk7Y2FzZSJGcmVlVGV4dCI6cmV0dXJuIG5ldyBGcmVlVGV4dEFubm90YXRpb24obSk7Y2FzZSJMaW5lIjpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uKG0pO2Nhc2UiU3F1YXJlIjpyZXR1cm4gbmV3IFNxdWFyZUFubm90YXRpb24obSk7Y2FzZSJDaXJjbGUiOnJldHVybiBuZXcgQ2lyY2xlQW5ub3RhdGlvbihtKTtjYXNlIlBvbHlMaW5lIjpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbihtKTtjYXNlIlBvbHlnb24iOnJldHVybiBuZXcgUG9seWdvbkFubm90YXRpb24obSk7Y2FzZSJDYXJldCI6cmV0dXJuIG5ldyBDYXJldEFubm90YXRpb24obSk7Y2FzZSJJbmsiOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbihtKTtjYXNlIkhpZ2hsaWdodCI6cmV0dXJuIG5ldyBIaWdobGlnaHRBbm5vdGF0aW9uKG0pO2Nhc2UiVW5kZXJsaW5lIjpyZXR1cm4gbmV3IFVuZGVybGluZUFubm90YXRpb24obSk7Y2FzZSJTcXVpZ2dseSI6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb24obSk7Y2FzZSJTdHJpa2VPdXQiOnJldHVybiBuZXcgU3RyaWtlT3V0QW5ub3RhdGlvbihtKTtjYXNlIlN0YW1wIjpyZXR1cm4gbmV3IFN0YW1wQW5ub3RhdGlvbihtKTtjYXNlIkZpbGVBdHRhY2htZW50IjpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbihtKTtkZWZhdWx0Omh8fChnPygwLHIud2FybikoYFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke2d9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gKTooMCxyLndhcm4pKCJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpKTtyZXR1cm4gbmV3IEFubm90YXRpb24obSl9fXN0YXRpYyBhc3luYyBfZ2V0UGFnZUluZGV4KGUsdCxhKXt0cnl7Y29uc3Qgcj1hd2FpdCBlLmZldGNoSWZSZWZBc3luYyh0KTtpZighKHIgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybi0xO2NvbnN0IG49ci5nZXRSYXcoIlAiKTtpZighKG4gaW5zdGFuY2VvZiBzLlJlZikpcmV0dXJuLTE7cmV0dXJuIGF3YWl0IGEuZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4Iixbbl0pfWNhdGNoKGUpeygwLHIud2FybikoYF9nZXRQYWdlSW5kZXg6ICIke2V9Ii5gKTtyZXR1cm4tMX19c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxhKXtpZighYSl7KDAsci53YXJuKSgiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBuO2Zvcihjb25zdHtiaXRtYXBJZDphLGJpdG1hcDpyfW9mIGUpaWYocil7bnx8PW5ldyBNYXA7bi5zZXQoYSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocix0KSl9cmV0dXJuIG59c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSxuKXtjb25zdCBpPWUueHJlZjtsZXQgbztjb25zdCBsPVtdLGg9W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnV9PWUub3B0aW9ucztmb3IoY29uc3QgZCBvZiBhKWlmKCFkLmRlbGV0ZWQpc3dpdGNoKGQuYW5ub3RhdGlvblR5cGUpe2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDppZighbyl7Y29uc3QgZT1uZXcgcy5EaWN0KGkpO2Uuc2V0KCJCYXNlRm9udCIscy5OYW1lLmdldCgiSGVsdmV0aWNhIikpO2Uuc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJUeXBlMSIpKTtlLnNldCgiRW5jb2RpbmciLHMuTmFtZS5nZXQoIldpbkFuc2lFbmNvZGluZyIpKTtjb25zdCB0PVtdO289aS5nZXROZXdUZW1wb3JhcnlSZWYoKTthd2FpdCgwLGMud3JpdGVPYmplY3QpKG8sZSx0LG51bGwpO2wucHVzaCh7cmVmOm8sZGF0YTp0LmpvaW4oIiIpfSl9aC5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKGksZCxsLHtldmFsdWF0b3I6ZSx0YXNrOnQsYmFzZUZvbnRSZWY6b30pKTticmVhaztjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOmgucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24oaSxkLGwpKTticmVhaztjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuU1RBTVA6aWYoIXUpYnJlYWs7Y29uc3QgYT1hd2FpdCBuLmdldChkLmJpdG1hcElkKTtpZihhLmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWEscj1bXTtpZih0KXtjb25zdCBhPWkuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7YXdhaXQoMCxjLndyaXRlT2JqZWN0KShhLHQscixudWxsKTtsLnB1c2goe3JlZjphLGRhdGE6ci5qb2luKCIiKX0pO2UuZGljdC5zZXQoIlNNYXNrIixhKTtyLmxlbmd0aD0wfWNvbnN0IG49YS5pbWFnZVJlZj1pLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0KDAsYy53cml0ZU9iamVjdCkobixlLHIsbnVsbCk7bC5wdXNoKHtyZWY6bixkYXRhOnIuam9pbigiIil9KTthLmltYWdlU3RyZWFtPWEuc21hc2tTdHJlYW09bnVsbH1oLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24oaSxkLGwse2ltYWdlOmF9KSl9cmV0dXJue2Fubm90YXRpb25zOmF3YWl0IFByb21pc2UuYWxsKGgpLGRlcGVuZGVuY2llczpsfX1zdGF0aWMgYXN5bmMgcHJpbnROZXdBbm5vdGF0aW9ucyhlLHQsYSxuKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdHtvcHRpb25zOmkseHJlZjpzfT1lLG89W107Zm9yKGNvbnN0IGMgb2YgYSlpZighYy5kZWxldGVkKXN3aXRjaChjLmFubm90YXRpb25UeXBlKXtjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24ocyxjLHtldmFsdWF0b3I6ZSx0YXNrOnQsZXZhbHVhdG9yT3B0aW9uczppfSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKHMsYyx7ZXZhbHVhdG9yT3B0aW9uczppfSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5TVEFNUDppZighaS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZClicmVhaztjb25zdCBhPWF3YWl0IG4uZ2V0KGMuYml0bWFwSWQpO2lmKGEuaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06dH09YTt0JiZlLmRpY3Quc2V0KCJTTWFzayIsdCk7YS5pbWFnZVJlZj1uZXcgZy5KcGVnU3RyZWFtKGUsZS5sZW5ndGgpO2EuaW1hZ2VTdHJlYW09YS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKHMsYyx7aW1hZ2U6YSxldmFsdWF0b3JPcHRpb25zOml9KSl9cmV0dXJuIFByb21pc2UuYWxsKG8pfX07ZnVuY3Rpb24gZ2V0UmdiQ29sb3IoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdDtjb25zdCBhPXR8fG5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDE6ZC5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgMzpkLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtjYXNlIDQ6ZC5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIGdldFBkZkNvbG9yQXJyYXkoZSl7cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+ZS8yNTUpKX1mdW5jdGlvbiBnZXRRdWFkUG9pbnRzKGUsdCl7Y29uc3QgYT1lLmdldEFycmF5KCJRdWFkUG9pbnRzIik7aWYoIUFycmF5LmlzQXJyYXkoYSl8fDA9PT1hLmxlbmd0aHx8YS5sZW5ndGglOD4wKXJldHVybiBudWxsO2NvbnN0IHI9W107Zm9yKGxldCBlPTAsbj1hLmxlbmd0aC84O2U8bjtlKyspe2xldCBuPTEvMCxpPS0xLzAscz0xLzAsbz0tMS8wO2ZvcihsZXQgdD04KmUscj04KmUrODt0PHI7dCs9Mil7Y29uc3QgZT1hW3RdLHI9YVt0KzFdO249TWF0aC5taW4oZSxuKTtpPU1hdGgubWF4KGUsaSk7cz1NYXRoLm1pbihyLHMpO289TWF0aC5tYXgocixvKX1pZihudWxsIT09dCYmKG48dFswXXx8aT50WzJdfHxzPHRbMV18fG8+dFszXSkpcmV0dXJuIG51bGw7ci5wdXNoKFt7eDpuLHk6b30se3g6aSx5Om99LHt4Om4seTpzfSx7eDppLHk6c31dKX1yZXR1cm4gcn1mdW5jdGlvbiBnZXRUcmFuc2Zvcm1NYXRyaXgoZSx0LGEpe2NvbnN0W24saSxzLG9dPXIuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LGEpO2lmKG49PT1zfHxpPT09bylyZXR1cm5bMSwwLDAsMSxlWzBdLGVbMV1dO2NvbnN0IGM9KGVbMl0tZVswXSkvKHMtbiksbD0oZVszXS1lWzFdKS8oby1pKTtyZXR1cm5bYywwLDAsbCxlWzBdLW4qYyxlWzFdLWkqbF19Y2xhc3MgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSk7dGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSk7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpO3RoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSk7dGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKTt0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSk7dGhpcy5zZXRCb3JkZXJTdHlsZSh0KTt0aGlzLnNldEFwcGVhcmFuY2UodCk7dGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3QgaT10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoaSk7dGhpcy5zZXRSb3RhdGlvbihpLHQpO3RoaXMucmVmPWUucmVmIGluc3RhbmNlb2Ygcy5SZWY/ZS5yZWY6bnVsbDt0aGlzLl9zdHJlYW1zPVtdO3RoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7Y29uc3Qgbz0hISh0aGlzLmZsYWdzJnIuQW5ub3RhdGlvbkZsYWcuTE9DS0VEKSxjPSEhKHRoaXMuZmxhZ3Mmci5Bbm5vdGF0aW9uRmxhZy5MT0NLRURDT05URU5UUyk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZyLkFubm90YXRpb25GbGFnLk5PUk9UQVRFKSxub0hUTUw6byYmY307aWYoZS5jb2xsZWN0RmllbGRzKXtjb25zdCBpPXQuZ2V0KCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShpKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBpKXQgaW5zdGFuY2VvZiBzLlJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz0oMCxuLmNvbGxlY3RBY3Rpb25zKShhLHQsci5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKSYmIXRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLk5PVklFVyl9X2lzUHJpbnRhYmxlKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5QUklOVCkmJiF0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5JTlZJU0lCTEUpfW11c3RCZVZpZXdlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5oaWRkZW47cmV0dXJuIHZvaWQgMCE9PXQ/IXQ6dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxyLkFubm90YXRpb25GbGFnLkhJRERFTil9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5wcmludDtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXMucHJpbnRhYmxlfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09KDAsaC5iaWRpKSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0IHQ9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDplLmRpY3Qsa2V5OiJEQSJ9KXx8ZS5hY3JvRm9ybS5nZXQoIkRBIik7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9InN0cmluZyI9PXR5cGVvZiB0P3Q6IiI7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MH1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPUFycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD9yLlV0aWwubm9ybWFsaXplUmVjdChlKTpbMCwwLDAsMF19c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9KDAsci53YXJuKShgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUsdCl7dGhpcy5yb3RhdGlvbj0wO2xldCBhPWUgaW5zdGFuY2VvZiBzLkRpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmMCE9PWEpe2ElPTM2MDthPDAmJihhKz0zNjApO2ElOTA9PTAmJih0aGlzLnJvdGF0aW9uPWEpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBzLkRpY3Qpe3RoaXMuYm9yZGVyQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkMiKSxudWxsKTt0aGlzLmJhY2tncm91bmRDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCRyIpLG51bGwpfWVsc2UgdGhpcy5ib3JkZXJDb2xvcj10aGlzLmJhY2tncm91bmRDb2xvcj1udWxsfXNldEJvcmRlclN0eWxlKGUpe3RoaXMuYm9yZGVyU3R5bGU9bmV3IEFubm90YXRpb25Cb3JkZXJTdHlsZTtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KWlmKGUuaGFzKCJCUyIpKXtjb25zdCB0PWUuZ2V0KCJCUyIpLGE9dC5nZXQoIlR5cGUiKTtpZighYXx8KDAscy5pc05hbWUpKGEsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19ZWxzZSBpZihlLmhhcygiQm9yZGVyIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiQm9yZGVyIik7aWYoQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+PTMpe3RoaXMuYm9yZGVyU3R5bGUuc2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyh0WzBdKTt0aGlzLmJvcmRlclN0eWxlLnNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKHRbMV0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodFsyXSx0aGlzLnJlY3RhbmdsZSk7ND09PXQubGVuZ3RoJiZ0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0WzNdLCEwKX19ZWxzZSB0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKDApfXNldEFwcGVhcmFuY2UoZSl7dGhpcy5hcHBlYXJhbmNlPW51bGw7Y29uc3QgdD1lLmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBhPXQuZ2V0KCJOIik7aWYoYSBpbnN0YW5jZW9mIGwuQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWE7cmV0dXJufWlmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9ZS5nZXQoIkFTIik7aWYoIShyIGluc3RhbmNlb2Ygcy5OYW1lJiZhLmhhcyhyLm5hbWUpKSlyZXR1cm47Y29uc3Qgbj1hLmdldChyLm5hbWUpO24gaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9bil9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBzLk5hbWU/KDAsci53YXJuKSgic2V0T3B0aW9uYWxDb250ZW50OiBTdXBwb3J0IGZvciAvTmFtZS1lbnRyeSBpcyBub3QgaW1wbGVtZW50ZWQuIik6dCBpbnN0YW5jZW9mIHMuRGljdCYmKHRoaXMub2M9dCl9bG9hZFJlc291cmNlcyhlLHQpe3JldHVybiB0LmRpY3QuZ2V0QXN5bmMoIlJlc291cmNlcyIpLnRoZW4oKHQ9PntpZighdClyZXR1cm47cmV0dXJuIG5ldyBwLk9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKXtjb25zdCBjPXRoaXMuZGF0YTtsZXQgbD10aGlzLmFwcGVhcmFuY2U7Y29uc3QgaD0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZhJnIuUmVuZGVyaW5nSW50ZW50RmxhZy5ESVNQTEFZKTtpZighbCl7aWYoIWgpcmV0dXJue29wTGlzdDpuZXcgbS5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtsPW5ldyBvLlN0cmluZ1N0cmVhbSgiIik7bC5kaWN0PW5ldyBzLkRpY3R9Y29uc3QgdT1sLmRpY3QsZD1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJDb2xvclNwYWNlIiwiUGF0dGVybiIsIlNoYWRpbmciLCJYT2JqZWN0IiwiRm9udCJdLGwpLGY9dS5nZXRBcnJheSgiQkJveCIpfHxbMCwwLDEsMV0sZz11LmdldEFycmF5KCJNYXRyaXgiKXx8WzEsMCwwLDEsMCwwXSxwPWdldFRyYW5zZm9ybU1hdHJpeChjLnJlY3QsZixnKSxiPW5ldyBtLk9wZXJhdG9yTGlzdDtsZXQgeTt0aGlzLm9jJiYoeT1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PXkmJmIuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIseV0pO2IuYWRkT3Aoci5PUFMuYmVnaW5Bbm5vdGF0aW9uLFtjLmlkLGMucmVjdCxwLGcsaF0pO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bCx0YXNrOnQscmVzb3VyY2VzOmQsb3BlcmF0b3JMaXN0OmIsZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSk7Yi5hZGRPcChyLk9QUy5lbmRBbm5vdGF0aW9uLFtdKTt2b2lkIDAhPT15JiZiLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmIsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmh9fWFzeW5jIHNhdmUoZSx0LGEpe3JldHVybiBudWxsfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsYSl7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3Qgbj1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSx0aGlzLmFwcGVhcmFuY2UpLGk9W10scz1bXTtsZXQgbz1udWxsO2NvbnN0IGM9e2Rlc2lyZWRTaXplOk1hdGguSW5maW5pdHkscmVhZHk6ITAsZW5xdWV1ZShlLHQpe2Zvcihjb25zdCB0IG9mIGUuaXRlbXMpaWYodm9pZCAwIT09dC5zdHIpe298fD10LnRyYW5zZm9ybS5zbGljZSgtMik7cy5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7aS5wdXNoKHMuam9pbigiIikpO3MubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpuLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLHNpbms6Yyx2aWV3Qm94OmF9KTt0aGlzLnJlc2V0KCk7cy5sZW5ndGgmJmkucHVzaChzLmpvaW4oIiIpKTtpZihpLmxlbmd0aD4xfHxpWzBdKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZS5kaWN0LHQ9ZS5nZXRBcnJheSgiQkJveCIpfHxbMCwwLDEsMV0sYT1lLmdldEFycmF5KCJNYXRyaXgiKXx8WzEsMCwwLDEsMCwwXSxuPXRoaXMuZGF0YS5yZWN0LHM9Z2V0VHJhbnNmb3JtTWF0cml4KG4sdCxhKTtzWzRdLT1uWzBdO3NbNV0tPW5bMV07bz1yLlV0aWwuYXBwbHlUcmFuc2Zvcm0obyxzKTtvPXIuVXRpbC5hcHBseVRyYW5zZm9ybShvLGEpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249bzt0aGlzLmRhdGEudGV4dENvbnRlbnQ9aX19Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7KDAsci53YXJuKSgiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IG49bmV3IHMuUmVmU2V0O2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2Zvcig7YS5oYXMoIlBhcmVudCIpOyl7YT1hLmdldCgiUGFyZW50Iik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KXx8YS5vYmpJZCYmbi5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmbi5wdXQoYS5vYmpJZCk7aWYoYS5oYXMoIlQiKSl7Y29uc3QgZT0oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShhLmdldCgiVCIpKTtlLnN0YXJ0c1dpdGgoIiMiKXx8dC51bnNoaWZ0KGUpfX1yZXR1cm4gdC5qb2luKCIuIil9fXQuQW5ub3RhdGlvbj1Bbm5vdGF0aW9uO2NsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDt0aGlzLmRhc2hBcnJheT1bM107dGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPTA7dGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz0wfXNldFdpZHRoKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbMCwwLDAsMF07aWYoZSBpbnN0YW5jZW9mIHMuTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7Y29uc3QgYT0odFsyXS10WzBdKS8yLG49KHRbM10tdFsxXSkvMjtpZihhPjAmJm4+MCYmKGU+YXx8ZT5uKSl7KDAsci53YXJuKShgQW5ub3RhdGlvbkJvcmRlclN0eWxlLnNldFdpZHRoIC0gaWdub3Jpbmcgd2lkdGg6ICR7ZX1gKTtlPTF9fXRoaXMud2lkdGg9ZX19c2V0U3R5bGUoZSl7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlMiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlNPTElEO2JyZWFrO2Nhc2UiRCI6dGhpcy5zdHlsZT1yLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuREFTSEVEO2JyZWFrO2Nhc2UiQiI6dGhpcy5zdHlsZT1yLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuQkVWRUxFRDticmVhaztjYXNlIkkiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLklOU0VUO2JyZWFrO2Nhc2UiVSI6dGhpcy5zdHlsZT1yLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuVU5ERVJMSU5FfX1zZXREYXNoQXJyYXkoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXtsZXQgYT0hMCxyPSEwO2Zvcihjb25zdCB0IG9mIGUpe2lmKCEoK3Q+PTApKXthPSExO2JyZWFrfXQ+MCYmKHI9ITEpfWlmKGEmJiFyKXt0aGlzLmRhc2hBcnJheT1lO3QmJnRoaXMuc2V0U3R5bGUocy5OYW1lLmdldCgiRCIpKX1lbHNlIHRoaXMud2lkdGg9MH1lbHNlIGUmJih0aGlzLndpZHRoPTApfXNldEhvcml6b250YWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz1lKX1zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz1lKX19dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGU9QW5ub3RhdGlvbkJvcmRlclN0eWxlO2NsYXNzIE1hcmt1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIHMuUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2Ygcy5OYW1lP2EubmFtZTpyLkFubm90YXRpb25SZXBseVR5cGUuUkVQTFl9bGV0IGE9bnVsbDtpZih0aGlzLmRhdGEucmVwbHlUeXBlPT09ci5Bbm5vdGF0aW9uUmVwbHlUeXBlLkdST1VQKXtjb25zdCBlPXQuZ2V0KCJJUlQiKTt0aGlzLnNldFRpdGxlKGUuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKGUuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7aWYoZS5oYXMoIkNyZWF0aW9uRGF0ZSIpKXt0aGlzLnNldENyZWF0aW9uRGF0ZShlLmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEuY3JlYXRpb25EYXRlPW51bGw7aWYoZS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGUuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7YT1lLmdldFJhdygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7YT10LmdldFJhdygiUG9wdXAiKTt0LmhhcygiQyIpfHwodGhpcy5kYXRhLmNvbG9yPW51bGwpfXRoaXMuZGF0YS5wb3B1cFJlZj1hIGluc3RhbmNlb2Ygcy5SZWY/YS50b1N0cmluZygpOm51bGw7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9Yi5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKGUpe2xldHt4cmVmOnQsZXh0cmE6YSxzdHJva2VDb2xvcjpyLGZpbGxDb2xvcjpuLGJsZW5kTW9kZTppLHN0cm9rZUFscGhhOmMsZmlsbEFscGhhOmwscG9pbnRzQ2FsbGJhY2s6aH09ZSx1PU51bWJlci5NQVhfVkFMVUUsZD1OdW1iZXIuTUFYX1ZBTFVFLGY9TnVtYmVyLk1JTl9WQUxVRSxnPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgcD1bInEiXTthJiZwLnB1c2goYSk7ciYmcC5wdXNoKGAke3JbMF19ICR7clsxXX0gJHtyWzJdfSBSR2ApO24mJnAucHVzaChgJHtuWzBdfSAke25bMV19ICR7blsyXX0gcmdgKTtsZXQgbT10aGlzLmRhdGEucXVhZFBvaW50czttfHwobT1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIG0pe2NvbnN0W3QsYSxyLG5dPWgocCxlKTt1PU1hdGgubWluKHUsdCk7Zj1NYXRoLm1heChmLGEpO2Q9TWF0aC5taW4oZCxyKTtnPU1hdGgubWF4KGcsbil9cC5wdXNoKCJRIik7Y29uc3QgYj1uZXcgcy5EaWN0KHQpLHk9bmV3IHMuRGljdCh0KTt5LnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtjb25zdCB3PW5ldyBvLlN0cmluZ1N0cmVhbShwLmpvaW4oIiAiKSk7dy5kaWN0PXk7Yi5zZXQoIkZtMCIsdyk7Y29uc3QgUz1uZXcgcy5EaWN0KHQpO2kmJlMuc2V0KCJCTSIscy5OYW1lLmdldChpKSk7Im51bWJlciI9PXR5cGVvZiBjJiZTLnNldCgiQ0EiLGMpOyJudW1iZXIiPT10eXBlb2YgbCYmUy5zZXQoImNhIixsKTtjb25zdCB4PW5ldyBzLkRpY3QodCk7eC5zZXQoIkdTMCIsUyk7Y29uc3QgQz1uZXcgcy5EaWN0KHQpO0Muc2V0KCJFeHRHU3RhdGUiLHgpO0Muc2V0KCJYT2JqZWN0IixiKTtjb25zdCB2PW5ldyBzLkRpY3QodCk7di5zZXQoIlJlc291cmNlcyIsQyk7Y29uc3Qgaz10aGlzLmRhdGEucmVjdD1bdSxkLGYsZ107di5zZXQoIkJCb3giLGspO3RoaXMuYXBwZWFyYW5jZT1uZXcgby5TdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PXY7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSx3KX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBuPXQucmVmfHxlLmdldE5ld1RlbXBvcmFyeVJlZigpLGk9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxyKSxzPVtdO2xldCBvO2lmKGkpe2NvbnN0IHI9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtvPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOnJ9KTtjb25zdCBuPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHIubnVtLHIuZ2VuKTpudWxsO2F3YWl0KDAsYy53cml0ZU9iamVjdCkocixpLHMsbik7YS5wdXNoKHtyZWY6cixkYXRhOnMuam9pbigiIil9KX1lbHNlIG89dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7cy5sZW5ndGg9MDtjb25zdCBsPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKTpudWxsO2F3YWl0KDAsYy53cml0ZU9iamVjdCkobixvLHMsbCk7cmV0dXJue3JlZjpuLGRhdGE6cy5qb2luKCIiKX19c3RhdGljIGFzeW5jIGNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpLG49dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXA6cn0pLGk9bmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0Om4seHJlZjplLGV2YWx1YXRvck9wdGlvbnM6YS5ldmFsdWF0b3JPcHRpb25zfSk7dC5yZWYmJihpLnJlZj1pLnJlZlRvUmVwbGFjZT10LnJlZik7cmV0dXJuIGl9fXQuTWFya3VwQW5ub3RhdGlvbj1NYXJrdXBBbm5vdGF0aW9uO2NsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWUsaT10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO2kuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ7dm9pZCAwPT09aS5maWVsZE5hbWUmJihpLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO2kuZmllbGROYW1lJiYvXFtcZCtcXSQvLnRlc3QoaS5maWVsZE5hbWUpJiYhdC5oYXMoIktpZHMiKSYmKGkuYmFzZUZpZWxkTmFtZT1pLmZpZWxkTmFtZS5zdWJzdHJpbmcoMCxpLmZpZWxkTmFtZS5sYXN0SW5kZXhPZigiWyIpKSk7dm9pZCAwPT09aS5hY3Rpb25zJiYoaS5hY3Rpb25zPSgwLG4uY29sbGVjdEFjdGlvbnMpKGEsdCxyLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgbz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO2kuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobyk7Y29uc3QgYz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTtpLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTtpZih2b2lkIDA9PT1vJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjtpZih0KXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7aS5maWVsZFZhbHVlPW89ZS54ZmFEYXRhc2V0cy5nZXRWYWx1ZSh0KX19dm9pZCAwPT09byYmbnVsbCE9PWkuZGVmYXVsdEZpZWxkVmFsdWUmJihpLmZpZWxkVmFsdWU9aS5kZWZhdWx0RmllbGRWYWx1ZSk7aS5hbHRlcm5hdGl2ZVRleHQ9KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlRVIil8fCIiKTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO2kuaGFzQXBwZWFyYW5jZXx8PXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmdm9pZCAwIT09aS5maWVsZFZhbHVlJiZudWxsIT09aS5maWVsZFZhbHVlO2NvbnN0IGw9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0LGtleToiRlQifSk7aS5maWVsZFR5cGU9bCBpbnN0YW5jZW9mIHMuTmFtZT9sLm5hbWU6bnVsbDtjb25zdCBoPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkRSIn0pLHU9ZS5hY3JvRm9ybS5nZXQoIkRSIiksZD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6aCxhY3JvRm9ybVJlc291cmNlczp1LGFwcGVhcmFuY2VSZXNvdXJjZXM6ZCxtZXJnZWRSZXNvdXJjZXM6cy5EaWN0Lm1lcmdlKHt4cmVmOmEsZGljdEFycmF5OltoLGQsdV0sbWVyZ2VTdWJEaWN0czohMH0pfTtpLmZpZWxkRmxhZ3M9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0LGtleToiRmYifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKGkuZmllbGRGbGFncyl8fGkuZmllbGRGbGFnczwwKSYmKGkuZmllbGRGbGFncz0wKTtpLnJlYWRPbmx5PXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5SRUFET05MWSk7aS5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkVRVUlSRUQpO2kuaGlkZGVuPXRoaXMuX2hhc0ZsYWcoaS5hbm5vdGF0aW9uRmxhZ3Msci5Bbm5vdGF0aW9uRmxhZy5ISURERU4pfV9kZWNvZGVGb3JtVmFsdWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5maWx0ZXIoKGU9PiJzdHJpbmciPT10eXBlb2YgZSkpLm1hcCgoZT0+KDAsci5zdHJpbmdUb1BERlN0cmluZykoZSkpKTplIGluc3RhbmNlb2Ygcy5OYW1lPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gci5JREVOVElUWV9NQVRSSVg7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxpPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdO3JldHVybigwLG4uZ2V0Um90YXRpb25NYXRyaXgpKHQsYSxpKX1nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoZSl7bGV0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnJvdGF0aW9uO3ZvaWQgMD09PXQmJih0PXRoaXMucm90YXRpb24pO2lmKCF0aGlzLmJhY2tncm91bmRDb2xvciYmIXRoaXMuYm9yZGVyQ29sb3IpcmV0dXJuIiI7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxyPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLG49MD09PXR8fDE4MD09PXQ/YDAgMCAke2F9ICR7cn0gcmVgOmAwIDAgJHtyfSAke2F9IHJlYDtsZXQgcz0iIjt0aGlzLmJhY2tncm91bmRDb2xvciYmKHM9YCR7KDAsaS5nZXRQZGZDb2xvcikodGhpcy5iYWNrZ3JvdW5kQ29sb3IsITApfSAke259IGYgYCk7aWYodGhpcy5ib3JkZXJDb2xvcil7cys9YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MX0gdyAkeygwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYm9yZGVyQ29sb3IsITEpfSAke259IFMgYH1yZXR1cm4gc31hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKXtpZihuJiYhKHRoaXMgaW5zdGFuY2VvZiBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKSYmIXRoaXMuZGF0YS5ub0hUTUwmJiF0aGlzLmRhdGEuaGFzT3duQ2FudmFzKXJldHVybntvcExpc3Q6bmV3IG0uT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMCxzZXBhcmF0ZUNhbnZhczohMX07aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxuLGkpO2NvbnN0IHM9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSxpKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTtjb25zdCBjPW5ldyBtLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6YyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD1bMCwwLHRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdXSx1PWdldFRyYW5zZm9ybU1hdHJpeCh0aGlzLmRhdGEucmVjdCxoLFsxLDAsMCwxLDAsMF0pO2xldCBkO3RoaXMub2MmJihkPWF3YWl0IGUucGFyc2VNYXJrZWRDb250ZW50UHJvcHModGhpcy5vYyxudWxsKSk7dm9pZCAwIT09ZCYmYy5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixkXSk7Yy5hZGRPcChyLk9QUy5iZWdpbkFubm90YXRpb24sW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCx1LHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSksbF0pO2NvbnN0IGY9bmV3IG8uU3RyaW5nU3RyZWFtKHMpO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06Zix0YXNrOnQscmVzb3VyY2VzOnRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyxvcGVyYXRvckxpc3Q6Y30pO2MuYWRkT3Aoci5PUFMuZW5kQW5ub3RhdGlvbixbXSk7dm9pZCAwIT09ZCYmYy5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKTtyZXR1cm57b3BMaXN0OmMsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmx9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgcy5EaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLGdldFBkZkNvbG9yQXJyYXkodGhpcy5ib3JkZXJDb2xvcikpO3RoaXMuYmFja2dyb3VuZENvbG9yJiZ0LnNldCgiQkciLGdldFBkZkNvbG9yQXJyYXkodGhpcy5iYWNrZ3JvdW5kQ29sb3IpKTtyZXR1cm4gdC5zaXplPjA/dDpudWxsfWFtZW5kU2F2ZWREaWN0KGUsdCl7fWFzeW5jIHNhdmUoZSx0LGEpe2NvbnN0IGk9YT8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGw9aT8udmFsdWUsaD1pPy5yb3RhdGlvbjtpZihsPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PWwpe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PWgpcmV0dXJuIG51bGw7bHx8PXRoaXMuZGF0YS5maWVsZFZhbHVlfWlmKHZvaWQgMD09PWgmJiF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJkFycmF5LmlzQXJyYXkobCkmJkFycmF5LmlzQXJyYXkodGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZsLmxlbmd0aD09PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCYmbC5ldmVyeSgoKGUsdCk9PmU9PT10aGlzLmRhdGEuZmllbGRWYWx1ZVt0XSkpKXJldHVybiBudWxsO3ZvaWQgMD09PWgmJihoPXRoaXMucm90YXRpb24pO2xldCB1PW51bGw7aWYoIXRoaXMuX25lZWRBcHBlYXJhbmNlcyl7dT1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxyLlJlbmRlcmluZ0ludGVudEZsYWcuU0FWRSxhKTtpZihudWxsPT09dSlyZXR1cm4gbnVsbH1sZXQgZD0hMTtpZih1Py5uZWVkQXBwZWFyYW5jZXMpe2Q9ITA7dT1udWxsfWNvbnN0e3hyZWY6Zn09ZSxnPWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShnIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBwPW5ldyBzLkRpY3QoZik7Zm9yKGNvbnN0IGUgb2YgZy5nZXRLZXlzKCkpIkFQIiE9PWUmJnAuc2V0KGUsZy5nZXRSYXcoZSkpO2NvbnN0IG09e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpsfSxlbmNvZGVyPWU9PigwLG4uaXNBc2NpaSkoZSk/ZTooMCxuLnN0cmluZ1RvVVRGMTZTdHJpbmcpKGUsITApO3Auc2V0KCJWIixBcnJheS5pc0FycmF5KGwpP2wubWFwKGVuY29kZXIpOmVuY29kZXIobCkpO3RoaXMuYW1lbmRTYXZlZERpY3QoYSxwKTtjb25zdCBiPXRoaXMuX2dldE1LRGljdChoKTtiJiZwLnNldCgiTUsiLGIpO2NvbnN0IHk9Zi5lbmNyeXB0LHc9eT95LmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKTpudWxsLFM9W10seD1be3JlZjp0aGlzLnJlZixkYXRhOiIiLHhmYTptLG5lZWRBcHBlYXJhbmNlczpkfV07aWYobnVsbCE9PXUpe2NvbnN0IGU9Zi5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBzLkRpY3QoZik7cC5zZXQoIkFQIix0KTt0LnNldCgiTiIsZSk7bGV0IG49bnVsbDt5JiYobj15LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbikpO2NvbnN0IGk9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGYpLGw9bmV3IG8uU3RyaW5nU3RyZWFtKHUpLGg9bC5kaWN0PW5ldyBzLkRpY3QoZik7aC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7aC5zZXQoIlJlc291cmNlcyIsaSk7aC5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBkPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSk7ZCE9PXIuSURFTlRJVFlfTUFUUklYJiZoLnNldCgiTWF0cml4IixkKTthd2FpdCgwLGMud3JpdGVPYmplY3QpKGUsbCxTLG4pO3gucHVzaCh7cmVmOmUsZGF0YTpTLmpvaW4oIiIpLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pO1MubGVuZ3RoPTB9cC5zZXQoIk0iLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2F3YWl0KDAsYy53cml0ZU9iamVjdCkodGhpcy5yZWYscCxTLHcpO3hbMF0uZGF0YT1TLmpvaW4oIiIpO3JldHVybiB4fWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxhLHMpe2lmKHRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QQVNTV09SRCkpcmV0dXJuIG51bGw7Y29uc3Qgbz1zPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgYyxsO2lmKG8pe2M9by5mb3JtYXR0ZWRWYWx1ZXx8by52YWx1ZTtsPW8ucm90YXRpb259aWYodm9pZCAwPT09bCYmdm9pZCAwPT09YyYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgaD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhzKTtpZih2b2lkIDA9PT1jKXtjPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFjKXJldHVybmAvVHggQk1DIHEgJHtofVEgRU1DYH1BcnJheS5pc0FycmF5KGMpJiYxPT09Yy5sZW5ndGgmJihjPWNbMF0pOygwLHIuYXNzZXJ0KSgic3RyaW5nIj09dHlwZW9mIGMsIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7Yz1jLnRyaW0oKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoZT0+e2xldHtleHBvcnRWYWx1ZTp0fT1lO3JldHVybiBjPT09dH0pKTtjPWU/LmRpc3BsYXlWYWx1ZXx8Y31pZigiIj09PWMpcmV0dXJuYC9UeCBCTUMgcSAke2h9USBFTUNgO3ZvaWQgMD09PWwmJihsPXRoaXMucm90YXRpb24pO2xldCB1LGQ9LTE7aWYodGhpcy5kYXRhLm11bHRpTGluZSl7dT1jLnNwbGl0KC9cclxuP3xcbi8pLm1hcCgoZT0+ZS5ub3JtYWxpemUoIk5GQyIpKSk7ZD11Lmxlbmd0aH1lbHNlIHU9W2MucmVwbGFjZSgvXHJcbj98XG4vLCIiKS5ub3JtYWxpemUoIk5GQyIpXTtsZXQgZj10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxnPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdOzkwIT09bCYmMjcwIT09bHx8KFtnLGZdPVtmLGddKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9KDAsaS5wYXJzZURlZmF1bHRBcHBlYXJhbmNlKSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtsZXQgcCxtLGIseT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2NvbnN0IHc9W107bGV0IFM9ITE7Zm9yKGNvbnN0IGUgb2YgdSl7Y29uc3QgdD15LmVuY29kZVN0cmluZyhlKTt0Lmxlbmd0aD4xJiYoUz0hMCk7dy5wdXNoKHQuam9pbigiIikpfWlmKFMmJmEmci5SZW5kZXJpbmdJbnRlbnRGbGFnLlNBVkUpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYoUyYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGE9dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLHI9bmV3IGkuRmFrZVVuaWNvZGVGb250KGUueHJlZixhKSxzPXIuY3JlYXRlRm9udFJlc291cmNlcyh1LmpvaW4oIiIpKSxvPXMuZ2V0UmF3KCJGb250Iik7aWYodGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmhhcygiRm9udCIpKXtjb25zdCBlPXRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5nZXQoIkZvbnQiKTtmb3IoY29uc3QgdCBvZiBvLmdldEtleXMoKSllLnNldCh0LG8uZ2V0UmF3KHQpKX1lbHNlIHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5zZXQoIkZvbnQiLG8pO2NvbnN0IGw9ci5mb250TmFtZS5uYW1lO3k9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHtmb250TmFtZTpsLGZvbnRTaXplOjB9LHMpO2ZvcihsZXQgZT0wLHQ9dy5sZW5ndGg7ZTx0O2UrKyl3W2VdPSgwLG4uc3RyaW5nVG9VVEYxNlN0cmluZykodVtlXSk7Y29uc3QgaD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT0wO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udE5hbWU9bDtbcCxtLGJdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShmLTIsZy00LGMseSxkKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPWh9ZWxzZXt0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZHx8KDAsci53YXJuKSgiX2dldEFwcGVhcmFuY2U6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKTtbcCxtLGJdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShmLTIsZy00LGMseSxkKX1sZXQgeD15LmRlc2NlbnQ7eD1pc05hTih4KT9yLkJBU0VMSU5FX0ZBQ1RPUipiOk1hdGgubWF4KHIuQkFTRUxJTkVfRkFDVE9SKmIsTWF0aC5hYnMoeCkqbSk7Y29uc3QgQz1NYXRoLm1pbihNYXRoLmZsb29yKChmLW0pLzIpLDEpLHY9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShwLHcseSxtLGcsZix2LDIsQyx4LGIscyk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKHAseSx3WzBdLG0sZyxmLDIsQyx4LGIscyk7Y29uc3Qgaz1DK3g7aWYoMD09PXZ8fHY+MilyZXR1cm5gL1R4IEJNQyBxICR7aH1CVCBgK3ArYCAxIDAgMCAxICR7KDAsbi5udW1iZXJUb1N0cmluZykoMil9ICR7KDAsbi5udW1iZXJUb1N0cmluZykoayl9IFRtICgkeygwLG4uZXNjYXBlU3RyaW5nKSh3WzBdKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7aH1CVCBgK3ArYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQod1swXSx5LG0sZyx2LHtzaGlmdDowfSwyLGspfSBFVCBRIEVNQ2B9c3RhdGljIGFzeW5jIF9nZXRGb250RGF0YShlLHQsYSxyKXtjb25zdCBuPW5ldyBtLk9wZXJhdG9yTGlzdCxpPXtmb250Om51bGwsY2xvbmUoKXtyZXR1cm4gdGhpc319LHtmb250TmFtZTpvLGZvbnRTaXplOmN9PWE7YXdhaXQgZS5oYW5kbGVTZXRGb250KHIsW28mJnMuTmFtZS5nZXQobyksY10sbnVsbCxuLHQsaSxudWxsKTtyZXR1cm4gaS5mb250fV9nZXRUZXh0V2lkdGgoZSx0KXtyZXR1cm4gdC5jaGFyc1RvR2x5cGhzKGUpLnJlZHVjZSgoKGUsdCk9PmUrdC53aWR0aCksMCkvMWUzfV9jb21wdXRlRm9udFNpemUoZSx0LGEsbixzKXtsZXR7Zm9udFNpemU6b309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSxjPShvfHwxMikqci5MSU5FX0ZBQ1RPUixsPU1hdGgucm91bmQoZS9jKTtpZighbyl7Y29uc3Qgcm91bmRXaXRoVHdvRGlnaXRzPWU9Pk1hdGguZmxvb3IoMTAwKmUpLzEwMDtpZigtMT09PXMpe2NvbnN0IGk9dGhpcy5fZ2V0VGV4dFdpZHRoKGEsbik7bz1yb3VuZFdpdGhUd29EaWdpdHMoTWF0aC5taW4oZS9yLkxJTkVfRkFDVE9SLGk+dD90L2k6MS8wKSk7bD0xfWVsc2V7Y29uc3QgaT1hLnNwbGl0KC9cclxuP3xcbi8pLGg9W107Zm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1uLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxhPW4uY2hhcnNUb0dseXBocyh0KSxyPW4uZ2V0Q2hhclBvc2l0aW9ucyh0KTtoLnB1c2goe2xpbmU6dCxnbHlwaHM6YSxwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPWE9PntsZXQgcj0wO2Zvcihjb25zdCBpIG9mIGgpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLG4sYSx0LGkpLmxlbmd0aCphO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07bD1NYXRoLm1heChsLHMpO2Zvcig7Oyl7Yz1lL2w7bz1yb3VuZFdpdGhUd29EaWdpdHMoYy9yLkxJTkVfRkFDVE9SKTtpZighaXNUb29CaWcobykpYnJlYWs7bCsrfX1jb25zdHtmb250TmFtZTpoLGZvbnRDb2xvcjp1fT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSgwLGkuY3JlYXRlRGVmYXVsdEFwcGVhcmFuY2UpKHtmb250U2l6ZTpvLGZvbnROYW1lOmgsZm9udENvbG9yOnV9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UsbyxlL2xdfV9yZW5kZXJUZXh0KGUsdCxhLHIsaSxzLG8sYyl7bGV0IGw7aWYoMT09PWkpe2w9KHItdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqYSkvMn1lbHNlIGlmKDI9PT1pKXtsPXItdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqYS1vfWVsc2UgbD1vO2NvbnN0IGg9KDAsbi5udW1iZXJUb1N0cmluZykobC1zLnNoaWZ0KTtzLnNoaWZ0PWw7cmV0dXJuYCR7aH0gJHtjPSgwLG4ubnVtYmVyVG9TdHJpbmcpKGMpfSBUZCAoJHsoMCxuLmVzY2FwZVN0cmluZykoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6YSxhY3JvRm9ybVJlc291cmNlczpyfT10aGlzLl9maWVsZFJlc291cmNlcyxuPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFuKXJldHVybiB0fHxzLkRpY3QuZW1wdHk7Zm9yKGNvbnN0IGUgb2ZbdCxhXSlpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXtjb25zdCB0PWUuZ2V0KCJGb250Iik7aWYodCBpbnN0YW5jZW9mIHMuRGljdCYmdC5oYXMobikpcmV0dXJuIGV9aWYociBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgYT1yLmdldCgiRm9udCIpO2lmKGEgaW5zdGFuY2VvZiBzLkRpY3QmJmEuaGFzKG4pKXtjb25zdCByPW5ldyBzLkRpY3QoZSk7ci5zZXQobixhLmdldFJhdyhuKSk7Y29uc3QgaT1uZXcgcy5EaWN0KGUpO2kuc2V0KCJGb250IixyKTtyZXR1cm4gcy5EaWN0Lm1lcmdlKHt4cmVmOmUsZGljdEFycmF5OltpLHRdLG1lcmdlU3ViRGljdHM6ITB9KX19cmV0dXJuIHR8fHMuRGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7Y29uc3QgdD1lLmRpY3Q7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgYT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxhPjIpJiYoYT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1hO2xldCBpPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MCkmJihpPTApO3RoaXMuZGF0YS5tYXhMZW49aTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5GSUxFU0VMRUNUKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5ET05PVFNDUk9MTCl9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxhLHIsaSxzLG8sYyxsLGgsdSl7Y29uc3QgZD1pL3RoaXMuZGF0YS5tYXhMZW4sZj10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyh1KSxnPVtdLHA9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgcClnLnB1c2goYCgkeygwLG4uZXNjYXBlU3RyaW5nKShhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7Y29uc3QgbT1nLmpvaW4oYCAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKGQpfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtmfUJUIGArZStgIDEgMCAwIDEgJHsoMCxuLm51bWJlclRvU3RyaW5nKShvKX0gJHsoMCxuLm51bWJlclRvU3RyaW5nKShjK2wpfSBUbSAke219IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsYSxyLGkscyxvLGMsbCxoLHUsZCl7Y29uc3QgZj1bXSxnPWktMipjLHA9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLHM9dGhpcy5fc3BsaXRMaW5lKG4sYSxyLGcpO2ZvcihsZXQgdD0wLG49cy5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1zW3RdLGQ9MD09PWUmJjA9PT10Py1sLSh1LWgpOi11O2YucHVzaCh0aGlzLl9yZW5kZXJUZXh0KG4sYSxyLGksbyxwLGMsZCkpfX1jb25zdCBtPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGQpLGI9Zi5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHttfUJUIGArZStgIDEgMCAwIDEgMCAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKHMpfSBUbSAke2J9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxhLHIpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTp7fTtlPW4ubGluZXx8ZTtjb25zdCBpPW4uZ2x5cGhzfHx0LmNoYXJzVG9HbHlwaHMoZSk7aWYoaS5sZW5ndGg8PTEpcmV0dXJuW2VdO2NvbnN0IHM9bi5wb3NpdGlvbnN8fHQuZ2V0Q2hhclBvc2l0aW9ucyhlKSxvPWEvMWUzLGM9W107bGV0IGw9LTEsaD0tMSx1PS0xLGQ9MCxmPTA7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKXtjb25zdFthLG5dPXNbdF0sZz1pW3RdLHA9Zy53aWR0aCpvO2lmKCIgIj09PWcudW5pY29kZSlpZihmK3A+cil7Yy5wdXNoKGUuc3Vic3RyaW5nKGQsYSkpO2Q9YTtmPXA7bD0tMTt1PS0xfWVsc2V7Zis9cDtsPWE7aD1uO3U9dH1lbHNlIGlmKGYrcD5yKWlmKC0xIT09bCl7Yy5wdXNoKGUuc3Vic3RyaW5nKGQsaCkpO2Q9aDt0PXUrMTtsPS0xO2Y9MH1lbHNle2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wfWVsc2UgZis9cH1kPGUubGVuZ3RoJiZjLnB1c2goZS5zdWJzdHJpbmcoZCxlLmxlbmd0aCkpO3JldHVybiBjfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUEFTU1dPUkQpLGNoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVuLGNvbWI6dGhpcy5kYXRhLmNvbWIsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOiJ0ZXh0In19fWNsYXNzIEJ1dHRvbldpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDt0aGlzLmRhdGEuY2hlY2tCb3g9IXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5SQURJTykmJiF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUFVTSEJVVFRPTik7dGhpcy5kYXRhLnJhZGlvQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5SQURJTykmJiF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUFVTSEJVVFRPTik7dGhpcy5kYXRhLnB1c2hCdXR0b249dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO2lmKHRoaXMuZGF0YS5jaGVja0JveCl0aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk7ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pdGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpO2Vsc2UgaWYodGhpcy5kYXRhLnB1c2hCdXR0b24pe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5fcHJvY2Vzc1B1c2hCdXR0b24oZSl9ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsYSxuLGkpe2lmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsITEsaSk7bGV0IHM9bnVsbCxvPW51bGw7aWYoaSl7Y29uc3QgZT1pLmdldCh0aGlzLmRhdGEuaWQpO3M9ZT9lLnZhbHVlOm51bGw7bz1lP2Uucm90YXRpb246bnVsbH1pZihudWxsPT09cyYmdGhpcy5hcHBlYXJhbmNlKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTtudWxsPT1zJiYocz10aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpO2NvbnN0IGM9cz90aGlzLmNoZWNrZWRBcHBlYXJhbmNlOnRoaXMudW5jaGVja2VkQXBwZWFyYW5jZTtpZihjKXtjb25zdCBzPXRoaXMuYXBwZWFyYW5jZSxsPWMuZGljdC5nZXRBcnJheSgiTWF0cml4Iil8fHIuSURFTlRJVFlfTUFUUklYO28mJmMuZGljdC5zZXQoIk1hdHJpeCIsdGhpcy5nZXRSb3RhdGlvbk1hdHJpeChpKSk7dGhpcy5hcHBlYXJhbmNlPWM7Y29uc3QgaD1zdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTt0aGlzLmFwcGVhcmFuY2U9cztjLmRpY3Quc2V0KCJNYXRyaXgiLGwpO3JldHVybiBofXJldHVybntvcExpc3Q6bmV3IG0uT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19YXN5bmMgc2F2ZShlLHQsYSl7cmV0dXJuIHRoaXMuZGF0YS5jaGVja0JveD90aGlzLl9zYXZlQ2hlY2tib3goZSx0LGEpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbj90aGlzLl9zYXZlUmFkaW9CdXR0b24oZSx0LGEpOm51bGx9YXN5bmMgX3NhdmVDaGVja2JveChlLHQsYSl7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgbj1hLmdldCh0aGlzLmRhdGEuaWQpO2xldCBpPW4/LnJvdGF0aW9uLG89bj8udmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09bylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZT09PW8pcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1pJiYoaT10aGlzLnJvdGF0aW9uKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7Y29uc3QgaD17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSx1PXMuTmFtZS5nZXQobz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6Ik9mZiIpO2wuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpO2wuc2V0KCJNIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTtjb25zdCBkPXRoaXMuX2dldE1LRGljdChpKTtkJiZsLnNldCgiTUsiLGQpO2NvbnN0IGY9ZS54cmVmLmVuY3J5cHQ7bGV0IGc9bnVsbDtmJiYoZz1mLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSk7Y29uc3QgcD1bYCR7dGhpcy5yZWYubnVtfSAke3RoaXMucmVmLmdlbn0gb2JqXG5gXTthd2FpdCgwLGMud3JpdGVEaWN0KShsLHAsZyk7cC5wdXNoKCJcbmVuZG9ialxuIik7cmV0dXJuW3tyZWY6dGhpcy5yZWYsZGF0YTpwLmpvaW4oIiIpLHhmYTpofV19YXN5bmMgX3NhdmVSYWRpb0J1dHRvbihlLHQsYSl7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgbj1hLmdldCh0aGlzLmRhdGEuaWQpO2xldCBpPW4/LnJvdGF0aW9uLG89bj8udmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09bylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PW8pcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgaD17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSx1PXMuTmFtZS5nZXQobz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6Ik9mZiIpO2xldCBkPW51bGw7Y29uc3QgZj1lLnhyZWYuZW5jcnlwdDtpZihvKWlmKHRoaXMucGFyZW50IGluc3RhbmNlb2Ygcy5SZWYpe2NvbnN0IHQ9ZS54cmVmLmZldGNoKHRoaXMucGFyZW50KTtsZXQgYT1udWxsO2YmJihhPWYuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHRoaXMucGFyZW50Lm51bSx0aGlzLnBhcmVudC5nZW4pKTt0LnNldCgiViIsdSk7ZD1bYCR7dGhpcy5wYXJlbnQubnVtfSAke3RoaXMucGFyZW50Lmdlbn0gb2JqXG5gXTthd2FpdCgwLGMud3JpdGVEaWN0KSh0LGQsYSk7ZC5wdXNoKCJcbmVuZG9ialxuIil9ZWxzZSB0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHMuRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpO2wuc2V0KCJNIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChpKTtnJiZsLnNldCgiTUsiLGcpO2xldCBwPW51bGw7ZiYmKHA9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IG09W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07YXdhaXQoMCxjLndyaXRlRGljdCkobCxtLHApO20ucHVzaCgiXG5lbmRvYmpcbiIpO2NvbnN0IGI9W3tyZWY6dGhpcy5yZWYsZGF0YTptLmpvaW4oIiIpLHhmYTpofV07bnVsbCE9PWQmJmIucHVzaCh7cmVmOnRoaXMucGFyZW50LGRhdGE6ZC5qb2luKCIiKSx4ZmE6bnVsbH0pO3JldHVybiBifV9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSx0KXtjb25zdCBhPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLGk9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz1bMCwwLGEsaV0sbD0uOCpNYXRoLm1pbihhLGkpO2xldCBoLHU7aWYoImNoZWNrIj09PXQpe2g9e3dpZHRoOi43NTUqbCxoZWlnaHQ6LjcwNSpsfTt1PSIzIn1lbHNlIGlmKCJkaXNjIj09PXQpe2g9e3dpZHRoOi43OTEqbCxoZWlnaHQ6LjcwNSpsfTt1PSJsIn1lbHNlKDAsci51bnJlYWNoYWJsZSkoYF9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UgLSB1bnN1cHBvcnRlZCB0eXBlOiAke3R9YCk7Y29uc3QgZD1gcSBCVCAvUGRmSnNaYURiICR7bH0gVGYgMCBnICR7KDAsbi5udW1iZXJUb1N0cmluZykoKGEtaC53aWR0aCkvMil9ICR7KDAsbi5udW1iZXJUb1N0cmluZykoKGktaC5oZWlnaHQpLzIpfSBUZCAoJHt1fSkgVGogRVQgUWAsZj1uZXcgcy5EaWN0KGUueHJlZik7Zi5zZXQoIkZvcm1UeXBlIiwxKTtmLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtmLnNldCgiVHlwZSIscy5OYW1lLmdldCgiWE9iamVjdCIpKTtmLnNldCgiQkJveCIsYyk7Zi5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsMCwwXSk7Zi5zZXQoIkxlbmd0aCIsZC5sZW5ndGgpO2NvbnN0IGc9bmV3IHMuRGljdChlLnhyZWYpLHA9bmV3IHMuRGljdChlLnhyZWYpO3Auc2V0KCJQZGZKc1phRGIiLHRoaXMuZmFsbGJhY2tGb250RGljdCk7Zy5zZXQoIkZvbnQiLHApO2Yuc2V0KCJSZXNvdXJjZXMiLGcpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9bmV3IG8uU3RyaW5nU3RyZWFtKGQpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2UuZGljdD1mO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKX1fcHJvY2Vzc0NoZWNrQm94KGUpe2NvbnN0IHQ9ZS5kaWN0LmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBhPXQuZ2V0KCJOIik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZS5kaWN0LmdldCgiQVMiKSk7InN0cmluZyI9PXR5cGVvZiByJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9cik7Y29uc3Qgbj1udWxsIT09dGhpcy5kYXRhLmZpZWxkVmFsdWUmJiJPZmYiIT09dGhpcy5kYXRhLmZpZWxkVmFsdWU/dGhpcy5kYXRhLmZpZWxkVmFsdWU6IlllcyIsaT1hLmdldEtleXMoKTtpZigwPT09aS5sZW5ndGgpaS5wdXNoKCJPZmYiLG4pO2Vsc2UgaWYoMT09PWkubGVuZ3RoKSJPZmYiPT09aVswXT9pLnB1c2gobik6aS51bnNoaWZ0KCJPZmYiKTtlbHNlIGlmKGkuaW5jbHVkZXMobikpe2kubGVuZ3RoPTA7aS5wdXNoKCJPZmYiLG4pfWVsc2V7Y29uc3QgZT1pLmZpbmQoKGU9PiJPZmYiIT09ZSkpO2kubGVuZ3RoPTA7aS5wdXNoKCJPZmYiLGUpfWkuaW5jbHVkZXModGhpcy5kYXRhLmZpZWxkVmFsdWUpfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9Ik9mZiIpO3RoaXMuZGF0YS5leHBvcnRWYWx1ZT1pWzFdO2NvbnN0IG89YS5nZXQodGhpcy5kYXRhLmV4cG9ydFZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0/bzpudWxsO2NvbnN0IGM9YS5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1jIGluc3RhbmNlb2YgbC5CYXNlU3RyZWFtP2M6bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5EaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBhPXQuZ2V0KCJWIik7YSBpbnN0YW5jZW9mIHMuTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9YS5nZXQoIk4iKTtpZighKHIgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSk7YnJlYWt9Y29uc3Qgbj1yLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9biBpbnN0YW5jZW9mIGwuQmFzZVN0cmVhbT9uOm51bGw7Y29uc3QgaT1yLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWkgaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0/aTpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdH1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7aWYoZS5kaWN0LmhhcygiQSIpfHxlLmRpY3QuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hZS5kaWN0LmhhcygiQSIpJiYhZS5kaWN0LmhhcygiQUEiKTt1LkNhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZS5kaWN0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDplLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czplLmF0dGFjaG1lbnRzfSl9ZWxzZSgwLHIud2FybikoIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IHMuRGljdDtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5pbmRpY2VzPXQuZ2V0QXJyYXkoIkkiKTt0aGlzLmhhc0luZGljZXM9QXJyYXkuaXNBcnJheSh0aGlzLmluZGljZXMpJiZ0aGlzLmluZGljZXMubGVuZ3RoPjA7dGhpcy5kYXRhLm9wdGlvbnM9W107Y29uc3QgaT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9YS5mZXRjaElmUmVmKGlbZV0pLHI9QXJyYXkuaXNBcnJheSh0KTt0aGlzLmRhdGEub3B0aW9uc1tlXT17ZXhwb3J0VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHI/YS5mZXRjaElmUmVmKHRbMF0pOnQpLGRpc3BsYXlWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9hLmZldGNoSWZSZWYodFsxXSk6dCl9fWlmKHRoaXMuaGFzSW5kaWNlcyl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9W107Y29uc3QgZT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg7Zm9yKGNvbnN0IHQgb2YgdGhpcy5pbmRpY2VzKU51bWJlci5pc0ludGVnZXIodCkmJnQ+PTAmJnQ8ZSYmdGhpcy5kYXRhLmZpZWxkVmFsdWUucHVzaCh0aGlzLmRhdGEub3B0aW9uc1t0XS5leHBvcnRWYWx1ZSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWU/dGhpcy5kYXRhLmZpZWxkVmFsdWU9W3RoaXMuZGF0YS5maWVsZFZhbHVlXTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPVtdKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLkNPTUJPKTt0aGlzLmRhdGEubXVsdGlTZWxlY3Q9dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLk1VTFRJU0VMRUNUKTt0aGlzLl9oYXNUZXh0PSEwfWdldEZpZWxkT2JqZWN0KCl7Y29uc3QgZT10aGlzLmRhdGEuY29tYm8/ImNvbWJvYm94IjoibGlzdGJveCIsdD10aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MD90aGlzLmRhdGEuZmllbGRWYWx1ZVswXTpudWxsO3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dCxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsbnVtSXRlbXM6dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoLG11bHRpcGxlU2VsZWN0aW9uOnRoaXMuZGF0YS5tdWx0aVNlbGVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLGl0ZW1zOnRoaXMuZGF0YS5vcHRpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOmV9fWFtZW5kU2F2ZWREaWN0KGUsdCl7aWYoIXRoaXMuaGFzSW5kaWNlcylyZXR1cm47bGV0IGE9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnZhbHVlO0FycmF5LmlzQXJyYXkoYSl8fChhPVthXSk7Y29uc3Qgcj1bXSx7b3B0aW9uczpufT10aGlzLmRhdGE7Zm9yKGxldCBlPTAsdD0wLGk9bi5sZW5ndGg7ZTxpO2UrKylpZihuW2VdLmV4cG9ydFZhbHVlPT09YVt0XSl7ci5wdXNoKGUpO3QrPTF9dC5zZXQoIkkiLHIpfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxhLG4pe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGEsbik7bGV0IHMsbztjb25zdCBjPW4/LmdldCh0aGlzLmRhdGEuaWQpO2lmKGMpe289Yy5yb3RhdGlvbjtzPWMudmFsdWV9aWYodm9pZCAwPT09byYmdm9pZCAwPT09cyYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcylyZXR1cm4gbnVsbDt2b2lkIDA9PT1zP3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU6QXJyYXkuaXNBcnJheShzKXx8KHM9W3NdKTtsZXQgbD10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxoPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdOzkwIT09byYmMjcwIT09b3x8KFtoLGxdPVtsLGhdKTtjb25zdCB1PXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCxkPVtdO2ZvcihsZXQgZT0wO2U8dTtlKyspe2NvbnN0e2V4cG9ydFZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdO3MuaW5jbHVkZXModCkmJmQucHVzaChlKX10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9KDAsaS5wYXJzZURlZmF1bHRBcHBlYXJhbmNlKSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtjb25zdCBmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7bGV0IGcse2ZvbnRTaXplOnB9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYocClnPXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO2Vsc2V7Y29uc3QgZT0obC0xKS91O2xldCB0LGE9LTE7Zm9yKGNvbnN0e2Rpc3BsYXlWYWx1ZTplfW9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCByPXRoaXMuX2dldFRleHRXaWR0aChlLGYpO2lmKHI+YSl7YT1yO3Q9ZX19W2cscF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKGUsaC00LHQsZiwtMSl9Y29uc3QgbT1wKnIuTElORV9GQUNUT1IsYj0obS1wKS8yLHk9TWF0aC5mbG9vcihsL20pO2xldCB3PTA7aWYoZC5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi5kKSx0PU1hdGgubWF4KC4uLmQpO3c9TWF0aC5tYXgoMCx0LXkrMSk7dz5lJiYodz1lKX1jb25zdCBTPU1hdGgubWluKHcreSsxLHUpLHg9WyIvVHggQk1DIHEiLGAxIDEgJHtofSAke2x9IHJlIFcgbmBdO2lmKGQubGVuZ3RoKXt4LnB1c2goIjAuNjAwMDA2IDAuNzU2ODY2IDAuODU0OTA0IHJnIik7Zm9yKGNvbnN0IGUgb2YgZCl3PD1lJiZlPFMmJngucHVzaChgMSAke2wtKGUtdysxKSptfSAke2h9ICR7bX0gcmUgZmApfXgucHVzaCgiQlQiLGcsYDEgMCAwIDEgMCAke2x9IFRtYCk7Y29uc3QgQz17c2hpZnQ6MH07Zm9yKGxldCBlPXc7ZTxTO2UrKyl7Y29uc3R7ZGlzcGxheVZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdLGE9ZT09PXc/YjowO3gucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHQsZixwLGgsMCxDLDIsLW0rYSkpfXgucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4geC5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTtjb25zdHtkaWN0OnR9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuVEVYVDtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkxJTks7Y29uc3QgdD1nZXRRdWFkUG9pbnRzKGUuZGljdCx0aGlzLnJlY3RhbmdsZSk7dCYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPXQpO3RoaXMuZGF0YS5ib3JkZXJDb2xvcnx8PXRoaXMuZGF0YS5jb2xvcjt1LkNhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZS5kaWN0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDplLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czplLmF0dGFjaG1lbnRzfSl9fWNsYXNzIFBvcHVwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPUFVQO3RoaXMuZGF0YS5yZWN0WzBdIT09dGhpcy5kYXRhLnJlY3RbMl0mJnRoaXMuZGF0YS5yZWN0WzFdIT09dGhpcy5kYXRhLnJlY3RbM118fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgYT10LmdldCgiUGFyZW50Iik7aWYoIWEpeygwLHIud2FybikoIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn1jb25zdCBuPWEuZ2V0QXJyYXkoIlJlY3QiKTt0aGlzLmRhdGEucGFyZW50UmVjdD1BcnJheS5pc0FycmF5KG4pJiY0PT09bi5sZW5ndGg/ci5VdGlsLm5vcm1hbGl6ZVJlY3Qobik6bnVsbDtjb25zdCBpPWEuZ2V0KCJSVCIpOygwLHMuaXNOYW1lKShpLHIuQW5ub3RhdGlvblJlcGx5VHlwZS5HUk9VUCkmJihhPWEuZ2V0KCJJUlQiKSk7aWYoYS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGEuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoYS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihhLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9YS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoYS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoYS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50czthLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1iLlhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwoYS5nZXQoIlJDIikpKTt0aGlzLmRhdGEub3Blbj0hIXQuZ2V0KCJPcGVuIil9fXQuUG9wdXBBbm5vdGF0aW9uPVBvcHVwQW5ub3RhdGlvbjtjbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7Y29uc3R7ZXZhbHVhdG9yT3B0aW9uczp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5GUkVFVEVYVDt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO2lmKHRoaXMuYXBwZWFyYW5jZSl7Y29uc3R7Zm9udENvbG9yOmUsZm9udFNpemU6cn09KDAsaS5wYXJzZUFwcGVhcmFuY2VTdHJlYW0pKHRoaXMuYXBwZWFyYW5jZSx0LGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udENvbG9yPWU7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT1yfHwxMH1lbHNlIGlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCB0PWUuZGljdC5nZXQoIkNBIikscj1uZXcgaS5GYWtlVW5pY29kZUZvbnQoYSwic2Fucy1zZXJpZiIpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fD0xMDtjb25zdHtmb250Q29sb3I6bixmb250U2l6ZTpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuYXBwZWFyYW5jZT1yLmNyZWF0ZUFwcGVhcmFuY2UodGhpcy5fY29udGVudHMuc3RyLHRoaXMucmVjdGFuZ2xlLHRoaXMucm90YXRpb24scyxuLHQpO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsaS5GYWtlVW5pY29kZUZvbnQudG9Vbmljb2RlU3RyZWFtKX1lbHNlKDAsci53YXJuKSgiRnJlZVRleHRBbm5vdGF0aW9uOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIil9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LGEpe2xldHthcFJlZjpvLGFwOmN9PWE7Y29uc3R7Y29sb3I6bCxmb250U2l6ZTpoLHJlY3Q6dSxyb3RhdGlvbjpkLHVzZXI6Zix2YWx1ZTpnfT1lLHA9bmV3IHMuRGljdCh0KTtwLnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSk7cC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZyZWVUZXh0IikpO3Auc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO3Auc2V0KCJSZWN0Iix1KTtjb25zdCBtPWAvSGVsdiAke2h9IFRmICR7KDAsaS5nZXRQZGZDb2xvcikobCwhMCl9YDtwLnNldCgiREEiLG0pO3Auc2V0KCJDb250ZW50cyIsKDAsbi5pc0FzY2lpKShnKT9nOigwLG4uc3RyaW5nVG9VVEYxNlN0cmluZykoZywhMCkpO3Auc2V0KCJGIiw0KTtwLnNldCgiQm9yZGVyIixbMCwwLDBdKTtwLnNldCgiUm90YXRlIixkKTtmJiZwLnNldCgiVCIsKDAsbi5pc0FzY2lpKShmKT9mOigwLG4uc3RyaW5nVG9VVEYxNlN0cmluZykoZiwhMCkpO2lmKG98fGMpe2NvbnN0IGU9bmV3IHMuRGljdCh0KTtwLnNldCgiQVAiLGUpO28/ZS5zZXQoIk4iLG8pOmUuc2V0KCJOIixjKX1yZXR1cm4gcH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7YmFzZUZvbnRSZWY6YyxldmFsdWF0b3I6bCx0YXNrOmh9PWEse2NvbG9yOnUsZm9udFNpemU6ZCxyZWN0OmYscm90YXRpb246Zyx2YWx1ZTpwfT1lLG09bmV3IHMuRGljdCh0KSxiPW5ldyBzLkRpY3QodCk7aWYoYyliLnNldCgiSGVsdiIsYyk7ZWxzZXtjb25zdCBlPW5ldyBzLkRpY3QodCk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2Iuc2V0KCJIZWx2IixlKX1tLnNldCgiRm9udCIsYik7Y29uc3QgeT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShsLGgse2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpkfSxtKSxbdyxTLHgsQ109ZjtsZXQgdj14LXcsaz1DLVM7ZyUxODAhPTAmJihbdixrXT1bayx2XSk7Y29uc3QgTz1wLnNwbGl0KCJcbiIpLFQ9ZC8xZTM7bGV0IE09LTEvMDtjb25zdCBFPVtdO2ZvcihsZXQgZSBvZiBPKXtjb25zdCB0PXkuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO0UucHVzaChlKTtsZXQgYT0wO2NvbnN0IHI9eS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIHIpYSs9ZS53aWR0aCpUO009TWF0aC5tYXgoTSxhKX1sZXQgRD0xO00+diYmKEQ9di9NKTtsZXQgTj0xO2NvbnN0IFI9ci5MSU5FX0ZBQ1RPUipkLEw9KHIuTElORV9GQUNUT1Itci5MSU5FX0RFU0NFTlRfRkFDVE9SKSpkLCQ9UipPLmxlbmd0aDskPmsmJihOPWsvJCk7Y29uc3QgXz1kKk1hdGgubWluKEQsTik7bGV0IGosVSxYO3N3aXRjaChnKXtjYXNlIDA6WD1bMSwwLDAsMV07VT1bZlswXSxmWzFdLHYsa107aj1bZlswXSxmWzNdLUxdO2JyZWFrO2Nhc2UgOTA6WD1bMCwxLC0xLDBdO1U9W2ZbMV0sLWZbMl0sdixrXTtqPVtmWzFdLC1mWzBdLUxdO2JyZWFrO2Nhc2UgMTgwOlg9Wy0xLDAsMCwtMV07VT1bLWZbMl0sLWZbM10sdixrXTtqPVstZlsyXSwtZlsxXS1MXTticmVhaztjYXNlIDI3MDpYPVswLC0xLDEsMF07VT1bLWZbM10sZlswXSx2LGtdO2o9Wy1mWzNdLGZbMl0tTF19Y29uc3QgSD1bInEiLGAke1guam9pbigiICIpfSAwIDAgY21gLGAke1Uuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7KDAsaS5nZXRQZGZDb2xvcikodSwhMCl9YCxgMCBUYyAvSGVsdiAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKF8pfSBUZmBdO0gucHVzaChgJHtqLmpvaW4oIiAiKX0gVGQgKCR7KDAsbi5lc2NhcGVTdHJpbmcpKEVbMF0pfSkgVGpgKTtjb25zdCBxPSgwLG4ubnVtYmVyVG9TdHJpbmcpKFIpO2ZvcihsZXQgZT0xLHQ9RS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1FW2VdO0gucHVzaChgMCAtJHtxfSBUZCAoJHsoMCxuLmVzY2FwZVN0cmluZykodCl9KSBUamApfUgucHVzaCgiRVQiLCJRIik7Y29uc3Qgej1ILmpvaW4oIlxuIiksVz1uZXcgcy5EaWN0KHQpO1cuc2V0KCJGb3JtVHlwZSIsMSk7Vy5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7Vy5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7Vy5zZXQoIkJCb3giLGYpO1cuc2V0KCJSZXNvdXJjZXMiLG0pO1cuc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1mWzBdLC1mWzFdXSk7Y29uc3QgRz1uZXcgby5TdHJpbmdTdHJlYW0oeik7Ry5kaWN0PVc7cmV0dXJuIEd9fWNsYXNzIExpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkxJTkU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7Y29uc3Qgbj10LmdldEFycmF5KCJMIik7dGhpcy5kYXRhLmxpbmVDb29yZGluYXRlcz1yLlV0aWwubm9ybWFsaXplUmVjdChuKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0saT10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksbz1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxjPW8/aTpudWxsLGw9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxoPTIqbCx1PVt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzBdLWgsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1sxXS1oLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMl0raCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzNdK2hdO3IuVXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsdSl8fCh0aGlzLnJlY3RhbmdsZT11KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOm8sc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6Yyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHtuWzBdfSAke25bMV19IG1gLGAke25bMl19ICR7blszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LWwsdFsxXS54K2wsdFszXS55LWwsdFsxXS55K2xdfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TUVVBUkU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxyPXQuZ2V0KCJDQSIpLG49Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxpPW4/Z2V0UGRmQ29sb3JBcnJheShuKTpudWxsLHM9aT9yOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFpKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOmksc3Ryb2tlQWxwaGE6cixmaWxsQWxwaGE6cyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dFsyXS54K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbMl0ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzNdLngtdFsyXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgscz10WzFdLnktdFszXS55LXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7ZS5wdXNoKGAke2F9ICR7cn0gJHtufSAke3N9IHJlYCk7aT9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19fWNsYXNzIENpcmNsZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0lSQ0xFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxuPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksaT1uP2dldFBkZkNvbG9yQXJyYXkobik6bnVsbCxzPWk/cjpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhaSlyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOmksc3Ryb2tlQWxwaGE6cixmaWxsQWxwaGE6cyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dFswXS54K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbMF0ueS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzNdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHM9dFszXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixjPWErKG4tYSkvMixsPXIrKHMtcikvMixoPShuLWEpLzIqbyx1PShzLXIpLzIqbztlLnB1c2goYCR7Y30gJHtzfSBtYCxgJHtjK2h9ICR7c30gJHtufSAke2wrdX0gJHtufSAke2x9IGNgLGAke259ICR7bC11fSAke2MraH0gJHtyfSAke2N9ICR7cn0gY2AsYCR7Yy1ofSAke3J9ICR7YX0gJHtsLXV9ICR7YX0gJHtsfSBjYCxgJHthfSAke2wrdX0gJHtjLWh9ICR7c30gJHtjfSAke3N9IGNgLCJoIik7aT9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEudmVydGljZXM9W107aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IG49dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihBcnJheS5pc0FycmF5KG4pKXtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKz0yKXRoaXMuZGF0YS52ZXJ0aWNlcy5wdXNoKHt4Om5bZV0seTpuW2UrMV19KTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLG49dC5nZXQoIkNBIiksaT10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLHM9MippLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEudmVydGljZXMpe29bMF09TWF0aC5taW4ob1swXSxlLngtcyk7b1sxXT1NYXRoLm1pbihvWzFdLGUueS1zKTtvWzJdPU1hdGgubWF4KG9bMl0sZS54K3MpO29bM109TWF0aC5tYXgob1szXSxlLnkrcyl9ci5VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxvKXx8KHRoaXMucmVjdGFuZ2xlPW8pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7aX0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10aGlzLmRhdGEudmVydGljZXM7Zm9yKGxldCB0PTAscj1hLmxlbmd0aDt0PHI7dCsrKWUucHVzaChgJHthW3RdLnh9ICR7YVt0XS55fSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuUE9MWUdPTn19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5DQVJFVH19Y2xhc3MgSW5rQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5JTks7dGhpcy5kYXRhLmlua0xpc3RzPVtdO2NvbnN0IG49dC5nZXRBcnJheSgiSW5rTGlzdCIpO2lmKEFycmF5LmlzQXJyYXkobikpe2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0OysrZSl7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2goW10pO2ZvcihsZXQgdD0wLHI9bltlXS5sZW5ndGg7dDxyO3QrPTIpdGhpcy5kYXRhLmlua0xpc3RzW2VdLnB1c2goe3g6YS5mZXRjaElmUmVmKG5bZV1bdF0pLHk6YS5mZXRjaElmUmVmKG5bZV1bdCsxXSl9KX1pZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLG49dC5nZXQoIkNBIiksaT10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLHM9MippLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGNvbnN0IHQgb2YgZSl7b1swXT1NYXRoLm1pbihvWzBdLHQueC1zKTtvWzFdPU1hdGgubWluKG9bMV0sdC55LXMpO29bMl09TWF0aC5tYXgob1syXSx0Lngrcyk7b1szXT1NYXRoLm1heChvWzNdLHQueStzKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYTpgJHtpfSB3YCxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpe2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyllLnB1c2goYCR7dFthXS54fSAke3RbYV0ueX0gJHswPT09YT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LGEpe2xldHthcFJlZjpuLGFwOml9PWE7Y29uc3R7Y29sb3I6byxvcGFjaXR5OmMscGF0aHM6bCxyZWN0Omgscm90YXRpb246dSx0aGlja25lc3M6ZH09ZSxmPW5ldyBzLkRpY3QodCk7Zi5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpO2Yuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJJbmsiKSk7Zi5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Zi5zZXQoIlJlY3QiLGgpO2Yuc2V0KCJJbmtMaXN0IixsLm1hcCgoZT0+ZS5wb2ludHMpKSk7Zi5zZXQoIkYiLDQpO2Yuc2V0KCJSb3RhdGUiLHUpO2NvbnN0IGc9bmV3IHMuRGljdCh0KTtmLnNldCgiQlMiLGcpO2cuc2V0KCJXIixkKTtmLnNldCgiQyIsQXJyYXkuZnJvbShvLChlPT5lLzI1NSkpKTtmLnNldCgiQ0EiLGMpO2NvbnN0IHA9bmV3IHMuRGljdCh0KTtmLnNldCgiQVAiLHApO24/cC5zZXQoIk4iLG4pOnAuc2V0KCJOIixpKTtyZXR1cm4gZn1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0OmMscGF0aHM6bCx0aGlja25lc3M6aCxvcGFjaXR5OnV9PWUsZD1bYCR7aH0gdyAxIEogMSBqYCxgJHsoMCxpLmdldFBkZkNvbG9yKShyLCExKX1gXTsxIT09dSYmZC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBmPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBsKXtmLmxlbmd0aD0wO2YucHVzaChgJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzBdKX0gJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTYpe2NvbnN0IGE9ZS5zbGljZSh0LHQrNikubWFwKG4ubnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtmLnB1c2goYCR7YX0gY2ApfWYucHVzaCgiUyIpO2QucHVzaChmLmpvaW4oIlxuIikpfWNvbnN0IGc9ZC5qb2luKCJcbiIpLHA9bmV3IHMuRGljdCh0KTtwLnNldCgiRm9ybVR5cGUiLDEpO3Auc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO3Auc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO3Auc2V0KCJCQm94IixjKTtwLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7aWYoMSE9PXUpe2NvbnN0IGU9bmV3IHMuRGljdCh0KSxhPW5ldyBzLkRpY3QodCkscj1uZXcgcy5EaWN0KHQpO3Iuc2V0KCJDQSIsdSk7ci5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTthLnNldCgiUjAiLHIpO2Uuc2V0KCJFeHRHU3RhdGUiLGEpO3Auc2V0KCJSZXNvdXJjZXMiLGUpfWNvbnN0IG09bmV3IG8uU3RyaW5nU3RyZWFtKGcpO20uZGljdD1wO3JldHVybiBtfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsci53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0sbj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF0ueH0gJHt0WzBdLnl9IG1gLGAke3RbMV0ueH0gJHt0WzFdLnl9IGxgLGAke3RbM10ueH0gJHt0WzNdLnl9IGxgLGAke3RbMl0ueH0gJHt0WzJdLnl9IGxgLCJmIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9fWNsYXNzIFVuZGVybGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuVU5ERVJMSU5FO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxyPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6IltdIDAgZCAwLjU3MSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFsyXS54fSAke3RbMl0ueSsxLjN9IG1gLGAke3RbM10ueH0gJHt0WzNdLnkrMS4zfSBsYCwiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLHI9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT0odFswXS55LXRbMl0ueSkvNjtsZXQgcj1hLG49dFsyXS54O2NvbnN0IGk9dFsyXS55LHM9dFszXS54O2UucHVzaChgJHtufSAke2krcn0gbWApO2Rve24rPTI7cj0wPT09cj9hOjA7ZS5wdXNoKGAke259ICR7aStyfSBsYCl9d2hpbGUobjxzKTtlLnB1c2goIlMiKTtyZXR1cm5bdFsyXS54LHMsaS0yKmEsaSsyKmFdfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlNUUklLRU9VVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0ueCt0WzJdLngpLzIrIiAiKyh0WzBdLnkrdFsyXS55KS8yKyIgbSIsKHRbMV0ueCt0WzNdLngpLzIrIiAiKyh0WzFdLnkrdFszXS55KS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH19Y2xhc3MgU3RhbXBBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TVEFNUDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0KXtjb25zdHt3aWR0aDphLGhlaWdodDpufT1lLGk9bmV3IE9mZnNjcmVlbkNhbnZhcyhhLG4pLGM9aS5nZXRDb250ZXh0KCIyZCIse2FscGhhOiEwfSk7Yy5kcmF3SW1hZ2UoZSwwLDApO2NvbnN0IGw9Yy5nZXRJbWFnZURhdGEoMCwwLGEsbikuZGF0YSxoPW5ldyBVaW50MzJBcnJheShsLmJ1ZmZlciksdT1oLnNvbWUoci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj9lPT5lPj4+MjQhPTI1NTplPT4yNTUhPSgyNTUmZSkpO2lmKHUpe2MuZmlsbFN0eWxlPSJ3aGl0ZSI7Yy5maWxsUmVjdCgwLDAsYSxuKTtjLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgZD1pLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oKGU9PmUuYXJyYXlCdWZmZXIoKSkpLGY9cy5OYW1lLmdldCgiWE9iamVjdCIpLGc9cy5OYW1lLmdldCgiSW1hZ2UiKSxwPW5ldyBzLkRpY3QodCk7cC5zZXQoIlR5cGUiLGYpO3Auc2V0KCJTdWJ0eXBlIixnKTtwLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7cC5zZXQoIkNvbG9yU3BhY2UiLHMuTmFtZS5nZXQoIkRldmljZVJHQiIpKTtwLnNldCgiRmlsdGVyIixzLk5hbWUuZ2V0KCJEQ1REZWNvZGUiKSk7cC5zZXQoIkJCb3giLFswLDAsYSxuXSk7cC5zZXQoIldpZHRoIixhKTtwLnNldCgiSGVpZ2h0IixuKTtsZXQgbT1udWxsO2lmKHUpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoaC5sZW5ndGgpO2lmKHIuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsYT1oLmxlbmd0aDt0PGE7dCsrKWVbdF09aFt0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsYT1oLmxlbmd0aDt0PGE7dCsrKWVbdF09MjU1JmhbdF07Y29uc3QgaT1uZXcgcy5EaWN0KHQpO2kuc2V0KCJUeXBlIixmKTtpLnNldCgiU3VidHlwZSIsZyk7aS5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO2kuc2V0KCJDb2xvclNwYWNlIixzLk5hbWUuZ2V0KCJEZXZpY2VHcmF5IikpO2kuc2V0KCJXaWR0aCIsYSk7aS5zZXQoIkhlaWdodCIsbik7bT1uZXcgby5TdHJlYW0oZSwwLDAsaSl9cmV0dXJue2ltYWdlU3RyZWFtOm5ldyBvLlN0cmVhbShhd2FpdCBkLDAsMCxwKSxzbWFza1N0cmVhbTptLHdpZHRoOmEsaGVpZ2h0Om59fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCxhKXtsZXR7YXBSZWY6aSxhcDpvfT1hO2NvbnN0e3JlY3Q6Yyxyb3RhdGlvbjpsLHVzZXI6aH09ZSx1PW5ldyBzLkRpY3QodCk7dS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpO3Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJTdGFtcCIpKTt1LnNldCgiQ3JlYXRpb25EYXRlIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTt1LnNldCgiUmVjdCIsYyk7dS5zZXQoIkYiLDQpO3Uuc2V0KCJCb3JkZXIiLFswLDAsMF0pO3Uuc2V0KCJSb3RhdGUiLGwpO2gmJnUuc2V0KCJUIiwoMCxuLmlzQXNjaWkpKGgpP2g6KDAsbi5zdHJpbmdUb1VURjE2U3RyaW5nKShoLCEwKSk7aWYoaXx8byl7Y29uc3QgZT1uZXcgcy5EaWN0KHQpO3Uuc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLG8pfXJldHVybiB1fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtjb25zdHtyb3RhdGlvbjpyfT1lLHtpbWFnZVJlZjppLHdpZHRoOmMsaGVpZ2h0Omx9PWEuaW1hZ2UsaD1uZXcgcy5EaWN0KHQpLHU9bmV3IHMuRGljdCh0KTtoLnNldCgiWE9iamVjdCIsdSk7dS5zZXQoIkltMCIsaSk7Y29uc3QgZD1gcSAke2N9IDAgMCAke2x9IDAgMCBjbSAvSW0wIERvIFFgLGY9bmV3IHMuRGljdCh0KTtmLnNldCgiRm9ybVR5cGUiLDEpO2Yuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2Yuc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO2Yuc2V0KCJCQm94IixbMCwwLGMsbF0pO2Yuc2V0KCJSZXNvdXJjZXMiLGgpO2lmKHIpe2NvbnN0IGU9KDAsbi5nZXRSb3RhdGlvbk1hdHJpeCkocixjLGwpO2Yuc2V0KCJNYXRyaXgiLGUpfWNvbnN0IGc9bmV3IG8uU3RyaW5nU3RyZWFtKGQpO2cuZGljdD1mO3JldHVybiBnfX1jbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWUsbj1uZXcgZi5GaWxlU3BlYyh0LmdldCgiRlMiKSxhKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEuZmlsZT1uLnNlcmlhbGl6YWJsZTtjb25zdCBpPXQuZ2V0KCJOYW1lIik7dGhpcy5kYXRhLm5hbWU9aSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShpLm5hbWUpOiJQdXNoUGluIn19fSwoZSx0LGEpPT57dmFyIHI9YSg0KSxuPWEoNiksaT1hKDg3KSxzPWEoMTU4KSxvPWEoNyksYz1yLlJlZ0V4cCxsPWMucHJvdG90eXBlO24mJm8oKGZ1bmN0aW9uKCl7dmFyIGU9ITA7dHJ5e2MoIi4iLCJkIil9Y2F0Y2godCl7ZT0hMX12YXIgdD17fSxhPSIiLHI9ZT8iZGdpbXN5IjoiZ2ltc3kiLGFkZEdldHRlcj1mdW5jdGlvbihlLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2dldDpmdW5jdGlvbigpe2ErPXI7cmV0dXJuITB9fSl9LG49e2RvdEFsbDoicyIsZ2xvYmFsOiJnIixpZ25vcmVDYXNlOiJpIixtdWx0aWxpbmU6Im0iLHN0aWNreToieSJ9O2UmJihuLmhhc0luZGljZXM9ImQiKTtmb3IodmFyIGkgaW4gbilhZGRHZXR0ZXIoaSxuW2ldKTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLCJmbGFncyIpLmdldC5jYWxsKHQpIT09cnx8YSE9PXJ9KSkmJmkobCwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0OnN9KX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDQ3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1yKHRoaXMpLHQ9IiI7ZS5oYXNJbmRpY2VzJiYodCs9ImQiKTtlLmdsb2JhbCYmKHQrPSJnIik7ZS5pZ25vcmVDYXNlJiYodCs9ImkiKTtlLm11bHRpbGluZSYmKHQrPSJtIik7ZS5kb3RBbGwmJih0Kz0icyIpO2UudW5pY29kZSYmKHQrPSJ1Iik7ZS51bmljb2RlU2V0cyYmKHQrPSJ2Iik7ZS5zdGlja3kmJih0Kz0ieSIpO3JldHVybiB0fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1hKDMpLG49YSg0MCksaT1hKDY0KSxzPWEoMTQwKSxvPWEoMTYwKSxjPWEoMTQyKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDoxIT09W10udW5zaGlmdCgwKXx8IWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS51bnNoaWZ0KCl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpfSx7dW5zaGlmdDpmdW5jdGlvbiB1bnNoaWZ0KGUpe3ZhciB0PW4odGhpcyksYT1pKHQpLHI9YXJndW1lbnRzLmxlbmd0aDtpZihyKXtjKGErcik7Zm9yKHZhciBsPWE7bC0tOyl7dmFyIGg9bCtyO2wgaW4gdD90W2hdPXRbbF06byh0LGgpfWZvcih2YXIgdT0wO3U8cjt1KyspdFt1XT1hcmd1bWVudHNbdV19cmV0dXJuIHModCxhK3IpfX0pfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO3ZhciByPWEoMzIpLG49VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFkZWxldGUgZVt0XSl0aHJvdyBuKCJDYW5ub3QgZGVsZXRlIHByb3BlcnR5ICIrcih0KSsiIG9mICIrcihlKSl9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkZha2VVbmljb2RlRm9udD12b2lkIDA7dC5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbiBjcmVhdGVEZWZhdWx0QXBwZWFyYW5jZShlKXtsZXR7Zm9udFNpemU6dCxmb250TmFtZTphLGZvbnRDb2xvcjpyfT1lO3JldHVybmAvJHsoMCxuLmVzY2FwZVBERk5hbWUpKGEpfSAke3R9IFRmICR7Z2V0UGRmQ29sb3IociwhMCl9YH07dC5nZXRQZGZDb2xvcj1nZXRQZGZDb2xvcjt0LnBhcnNlQXBwZWFyYW5jZVN0cmVhbT1mdW5jdGlvbiBwYXJzZUFwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsYSkucGFyc2UoKX07dC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgxMzkpO3ZhciByPWEoMTUwKSxuPWEoMTQ5KSxpPWEoMTQ0KSxzPWEoMTYyKSxvPWEoMTYzKSxjPWEoMjA5KSxsPWEoMjA3KSxoPWEoMTU0KTtjbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIG8uRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBoLlN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjphLGFyZ3M6bn09ZTtzd2l0Y2goMHxhKXtjYXNlIGkuT1BTLnNldEZvbnQ6Y29uc3RbZSxhXT1uO2UgaW5zdGFuY2VvZiByLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBhJiZhPjAmJih0LmZvbnRTaXplPWEpO2JyZWFrO2Nhc2UgaS5PUFMuc2V0RmlsbFJHQkNvbG9yOnMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGkuT1BTLnNldEZpbGxHcmF5OnMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBpLk9QUy5zZXRGaWxsQ01ZS0NvbG9yOnMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCl9fX1jYXRjaChlKXsoMCxpLndhcm4pKGBwYXJzZURlZmF1bHRBcHBlYXJhbmNlIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9cmV0dXJuIHR9fWNsYXNzIEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IgZXh0ZW5kcyBvLkV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9YTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpzLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSxhPSExO2NvbnN0IG49W107dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKGF8fCF0aGlzLnJlYWQoZSkpYnJlYWs7Y29uc3R7Zm46byxhcmdzOmN9PWU7c3dpdGNoKDB8byl7Y2FzZSBpLk9QUy5zYXZlOm4ucHVzaCh7c2NhbGVGYWN0b3I6dC5zY2FsZUZhY3Rvcixmb250U2l6ZTp0LmZvbnRTaXplLGZvbnROYW1lOnQuZm9udE5hbWUsZm9udENvbG9yOnQuZm9udENvbG9yLnNsaWNlKCksZmlsbENvbG9yU3BhY2U6dC5maWxsQ29sb3JTcGFjZX0pO2JyZWFrO2Nhc2UgaS5PUFMucmVzdG9yZTp0PW4ucG9wKCl8fHQ7YnJlYWs7Y2FzZSBpLk9QUy5zZXRUZXh0TWF0cml4OnQuc2NhbGVGYWN0b3IqPU1hdGguaHlwb3QoY1swXSxjWzFdKTticmVhaztjYXNlIGkuT1BTLnNldEZvbnQ6Y29uc3RbZSxvXT1jO2UgaW5zdGFuY2VvZiByLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBvJiZvPjAmJih0LmZvbnRTaXplPW8qdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBpLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlPXMuQ29sb3JTcGFjZS5wYXJzZSh7Y3M6Y1swXSx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTp0aGlzLl9sb2NhbENvbG9yU3BhY2VDYWNoZX0pO2JyZWFrO2Nhc2UgaS5PUFMuc2V0RmlsbENvbG9yOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShjLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBpLk9QUy5zZXRGaWxsUkdCQ29sb3I6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgaS5PUFMuc2V0RmlsbEdyYXk6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGkuT1BTLnNldEZpbGxDTVlLQ29sb3I6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGkuT1BTLnNob3dUZXh0OmNhc2UgaS5PUFMuc2hvd1NwYWNlZFRleHQ6Y2FzZSBpLk9QUy5uZXh0TGluZVNob3dUZXh0OmNhc2UgaS5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6YT0hMH19fWNhdGNoKGUpeygwLGkud2FybikoYHBhcnNlQXBwZWFyYW5jZVN0cmVhbSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXRoaXMuc3RyZWFtLnJlc2V0KCk7ZGVsZXRlIHQuc2NhbGVGYWN0b3I7ZGVsZXRlIHQuZmlsbENvbG9yU3BhY2U7cmV0dXJuIHR9Z2V0IF9sb2NhbENvbG9yU3BhY2VDYWNoZSgpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfbG9jYWxDb2xvclNwYWNlQ2FjaGUiLG5ldyBjLkxvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe2NvbnN0IGU9bmV3IGwuUERGRnVuY3Rpb25GYWN0b3J5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5ldmFsdWF0b3JPcHRpb25zLmlzRXZhbFN1cHBvcnRlZH0pO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfcGRmRnVuY3Rpb25GYWN0b3J5IixlKX19ZnVuY3Rpb24gZ2V0UGRmQ29sb3IoZSx0KXtpZihlWzBdPT09ZVsxXSYmZVsxXT09PWVbMl0pe2NvbnN0IGE9ZVswXS8yNTU7cmV0dXJuYCR7KDAsbi5udW1iZXJUb1N0cmluZykoYSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+KDAsbi5udW1iZXJUb1N0cmluZykoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9YS5nZXRDb250ZXh0KCIyZCIpO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPXIuTmFtZS5nZXQoYEludmFsaWRQREZqc0ZvbnRfJHt0fV8ke0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZCsrfWApfWdldCB0b1VuaWNvZGVSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll90b1VuaWNvZGVSZWYpe2NvbnN0IGU9Ii9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpblxuMTIgZGljdCBiZWdpblxuYmVnaW5jbWFwXG4vQ0lEU3lzdGVtSW5mb1xuPDwgL1JlZ2lzdHJ5IChBZG9iZSlcbi9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+IGRlZlxuL0NNYXBOYW1lIC9BZG9iZS1JZGVudGl0eS1VQ1MgZGVmXG4vQ01hcFR5cGUgMiBkZWZcbjEgYmVnaW5jb2Rlc3BhY2VyYW5nZVxuPDAwMDA+IDxGRkZGPlxuZW5kY29kZXNwYWNlcmFuZ2VcbjEgYmVnaW5iZnJhbmdlXG48MDAwMD4gPEZGRkY+IDwwMDAwPlxuZW5kYmZyYW5nZVxuZW5kY21hcCBDTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3AgZW5kIGVuZCIsdD1GYWtlVW5pY29kZUZvbnQudG9Vbmljb2RlU3RyZWFtPW5ldyBoLlN0cmluZ1N0cmVhbShlKSxhPW5ldyByLkRpY3QodGhpcy54cmVmKTt0LmRpY3Q9YTthLnNldCgiTGVuZ3RoIixlLmxlbmd0aCk7RmFrZVVuaWNvZGVGb250Ll90b1VuaWNvZGVSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYodCl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fdG9Vbmljb2RlUmVmfWdldCBmb250RGVzY3JpcHRvclJlZigpe2lmKCFGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmKXtjb25zdCBlPW5ldyByLkRpY3QodGhpcy54cmVmKTtlLnNldCgiVHlwZSIsci5OYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsci5OYW1lLmdldCgiTm9ybWFsIikpO2Uuc2V0KCJGb250V2VpZ2h0Iiw0MDApO2Uuc2V0KCJJdGFsaWNBbmdsZSIsMCk7RmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZj10aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1yZXR1cm4gRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZn1nZXQgZGVzY2VuZGFudEZvbnRSZWYoKXtjb25zdCBlPW5ldyByLkRpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixyLk5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixyLk5hbWUuZ2V0KCJDSURGb250VHlwZTAiKSk7ZS5zZXQoIkNJRFRvR0lETWFwIixyLk5hbWUuZ2V0KCJJZGVudGl0eSIpKTtlLnNldCgiRmlyc3RDaGFyIix0aGlzLmZpcnN0Q2hhcik7ZS5zZXQoIkxhc3RDaGFyIix0aGlzLmxhc3RDaGFyKTtlLnNldCgiRm9udERlc2NyaXB0b3IiLHRoaXMuZm9udERlc2NyaXB0b3JSZWYpO2Uuc2V0KCJEVyIsMWUzKTtjb25zdCB0PVtdLGE9Wy4uLnRoaXMud2lkdGhzLmVudHJpZXMoKV0uc29ydCgpO2xldCBuPW51bGwsaT1udWxsO2Zvcihjb25zdFtlLHJdb2YgYSlpZihuKWlmKGU9PT1uK2kubGVuZ3RoKWkucHVzaChyKTtlbHNle3QucHVzaChuLGkpO249ZTtpPVtyXX1lbHNle249ZTtpPVtyXX1uJiZ0LnB1c2gobixpKTtlLnNldCgiVyIsdCk7Y29uc3Qgcz1uZXcgci5EaWN0KHRoaXMueHJlZik7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IHIuRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLHIuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHIuTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsci5OYW1lLmdldCgiSWRlbnRpdHktSCIpKTtlLnNldCgiRGVzY2VuZGFudEZvbnRzIixbdGhpcy5kZXNjZW5kYW50Rm9udFJlZl0pO2Uuc2V0KCJUb1VuaWNvZGUiLHRoaXMudG9Vbmljb2RlUmVmKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IHIuRGljdCh0aGlzLnhyZWYpLHQ9bmV3IHIuRGljdCh0aGlzLnhyZWYpO3Quc2V0KHRoaXMuZm9udE5hbWUubmFtZSx0aGlzLmJhc2VGb250UmVmKTtlLnNldCgiRm9udCIsdCk7cmV0dXJuIGV9X2NyZWF0ZUNvbnRleHQoKXt0aGlzLndpZHRocz1uZXcgTWFwO3RoaXMuY3R4TWVhc3VyZS5mb250PWAxMDAwcHggJHt0aGlzLmZvbnRGYW1pbHl9YDtyZXR1cm4gdGhpcy5jdHhNZWFzdXJlfWNyZWF0ZUZvbnRSZXNvdXJjZXMoZSl7Y29uc3QgdD10aGlzLl9jcmVhdGVDb250ZXh0KCk7Zm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSlmb3IoY29uc3QgZSBvZiBhLnNwbGl0KCIiKSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoMCk7aWYodGhpcy53aWR0aHMuaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHI9dC5tZWFzdXJlVGV4dChlKSxuPU1hdGguY2VpbChyLndpZHRoKTt0aGlzLndpZHRocy5zZXQoYSxuKTt0aGlzLmZpcnN0Q2hhcj1NYXRoLm1pbihhLHRoaXMuZmlyc3RDaGFyKTt0aGlzLmxhc3RDaGFyPU1hdGgubWF4KGEsdGhpcy5sYXN0Q2hhcil9cmV0dXJuIHRoaXMucmVzb3VyY2VzfWNyZWF0ZUFwcGVhcmFuY2UoZSx0LGEscyxvLGMpe2NvbnN0IGw9dGhpcy5fY3JlYXRlQ29udGV4dCgpLHU9W107bGV0IGQ9LTEvMDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKXt1LnB1c2godCk7Y29uc3QgZT1sLm1lYXN1cmVUZXh0KHQpLndpZHRoO2Q9TWF0aC5tYXgoZCxlKTtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk7bGV0IGE9dGhpcy53aWR0aHMuZ2V0KHQpO2lmKHZvaWQgMD09PWEpe2NvbnN0IHI9bC5tZWFzdXJlVGV4dChlKTthPU1hdGguY2VpbChyLndpZHRoKTt0aGlzLndpZHRocy5zZXQodCxhKTt0aGlzLmZpcnN0Q2hhcj1NYXRoLm1pbih0LHRoaXMuZmlyc3RDaGFyKTt0aGlzLmxhc3RDaGFyPU1hdGgubWF4KHQsdGhpcy5sYXN0Q2hhcil9fX1kKj1zLzFlMztjb25zdFtmLGcscCxtXT10O2xldCBiPXAtZix5PW0tZzthJTE4MCE9MCYmKFtiLHldPVt5LGJdKTtsZXQgdz0xO2Q+YiYmKHc9Yi9kKTtsZXQgUz0xO2NvbnN0IHg9aS5MSU5FX0ZBQ1RPUipzLEM9aS5MSU5FX0RFU0NFTlRfRkFDVE9SKnMsdj14KnUubGVuZ3RoO3Y+eSYmKFM9eS92KTtjb25zdCBrPXMqTWF0aC5taW4odyxTKSxPPVsicSIsYDAgMCAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKGIpfSAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKHkpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKHkrQyl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihvLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7KDAsbi5udW1iZXJUb1N0cmluZykoayl9IFRmYF0se3Jlc291cmNlczpUfT10aGlzO2lmKDEhPT0oYz0ibnVtYmVyIj09dHlwZW9mIGMmJmM+PTAmJmM8PTE/YzoxKSl7Ty5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyByLkRpY3QodGhpcy54cmVmKSx0PW5ldyByLkRpY3QodGhpcy54cmVmKTt0LnNldCgiY2EiLGMpO3Quc2V0KCJDQSIsYyk7dC5zZXQoIlR5cGUiLHIuTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO1Quc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IE09KDAsbi5udW1iZXJUb1N0cmluZykoeCk7Zm9yKGNvbnN0IGUgb2YgdSlPLnB1c2goYDAgLSR7TX0gVGQgPCR7KDAsbi5zdHJpbmdUb1VURjE2SGV4U3RyaW5nKShlKX0+IFRqYCk7Ty5wdXNoKCJFVCIsIlEiKTtjb25zdCBFPU8uam9pbigiXG4iKSxEPW5ldyByLkRpY3QodGhpcy54cmVmKTtELnNldCgiU3VidHlwZSIsci5OYW1lLmdldCgiRm9ybSIpKTtELnNldCgiVHlwZSIsci5OYW1lLmdldCgiWE9iamVjdCIpKTtELnNldCgiQkJveCIsWzAsMCxiLHldKTtELnNldCgiTGVuZ3RoIixFLmxlbmd0aCk7RC5zZXQoIlJlc291cmNlcyIsVCk7aWYoYSl7Y29uc3QgZT0oMCxuLmdldFJvdGF0aW9uTWF0cml4KShhLGIseSk7RC5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgTj1uZXcgaC5TdHJpbmdTdHJlYW0oRSk7Ti5kaWN0PUQ7cmV0dXJuIE59fXQuRmFrZVVuaWNvZGVGb250PUZha2VVbmljb2RlRm9udH0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Db2xvclNwYWNlPXZvaWQgMDthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgyKTt2YXIgcj1hKDE0NCksbj1hKDE1MCksaT1hKDE1MSkscz1hKDE0OSk7Y2xhc3MgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuY29uc3RydWN0b3I9PT1Db2xvclNwYWNlJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQ29sb3JTcGFjZS4iKTt0aGlzLm5hbWU9ZTt0aGlzLm51bUNvbXBzPXR9Z2V0UmdiKGUsdCl7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7dGhpcy5nZXRSZ2JJdGVtKGUsdCxhLDApO3JldHVybiBhfWdldFJnYkl0ZW0oZSx0LGEsbil7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkl0ZW0iKX1nZXRSZ2JCdWZmZXIoZSx0LGEsbixpLHMsbyl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkJ1ZmZlciIpfWdldE91dHB1dExlbmd0aChlLHQpeygwLHIudW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRPdXRwdXRMZW5ndGgiKX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiExfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiBDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZShlLHRoaXMubnVtQ29tcHMpfWZpbGxSZ2IoZSx0LGEscixuLGkscyxvLGMpe2NvbnN0IGw9dCphO2xldCBoPW51bGw7Y29uc3QgdT0xPDxzLGQ9YSE9PW58fHQhPT1yO2lmKHRoaXMuaXNQYXNzdGhyb3VnaChzKSloPW87ZWxzZSBpZigxPT09dGhpcy5udW1Db21wcyYmbD51JiYiRGV2aWNlR3JheSIhPT10aGlzLm5hbWUmJiJEZXZpY2VSR0IiIT09dGhpcy5uYW1lKXtjb25zdCB0PXM8PTg/bmV3IFVpbnQ4QXJyYXkodSk6bmV3IFVpbnQxNkFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTtlKyspdFtlXT1lO2NvbnN0IGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqdSk7dGhpcy5nZXRSZ2JCdWZmZXIodCwwLHUsYSwwLHMsMCk7aWYoZCl7aD1uZXcgVWludDhBcnJheSgzKmwpO2xldCBlPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7Y29uc3Qgcj0zKm9bdF07aFtlKytdPWFbcl07aFtlKytdPWFbcisxXTtoW2UrK109YVtyKzJdfX1lbHNle2xldCB0PTA7Zm9yKGxldCByPTA7cjxsOysrcil7Y29uc3Qgbj0zKm9bcl07ZVt0KytdPWFbbl07ZVt0KytdPWFbbisxXTtlW3QrK109YVtuKzJdO3QrPWN9fX1lbHNlIGlmKGQpe2g9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbCk7dGhpcy5nZXRSZ2JCdWZmZXIobywwLGwsaCwwLHMsMCl9ZWxzZSB0aGlzLmdldFJnYkJ1ZmZlcihvLDAscippLGUsMCxzLGMpO2lmKGgpaWYoZCkhZnVuY3Rpb24gcmVzaXplUmdiSW1hZ2UoZSx0LGEscixuLGkscyl7cz0xIT09cz8wOnM7Y29uc3Qgbz1hL24sYz1yL2k7bGV0IGwsaD0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KG4pLGQ9MyphO2ZvcihsZXQgZT0wO2U8bjtlKyspdVtlXT0zKk1hdGguZmxvb3IoZSpvKTtmb3IobGV0IGE9MDthPGk7YSsrKXtjb25zdCByPU1hdGguZmxvb3IoYSpjKSpkO2ZvcihsZXQgYT0wO2E8bjthKyspe2w9cit1W2FdO3RbaCsrXT1lW2wrK107dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO2grPXN9fX0oaCxlLHQsYSxyLG4sYyk7ZWxzZXtsZXQgdD0wLGE9MDtmb3IobGV0IG49MCxzPXIqaTtuPHM7bisrKXtlW3QrK109aFthKytdO2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTt0Kz1jfX19Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgX2NhY2hlKGUsdCxhLHIpe2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKCFyKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkQ29sb3JTcGFjZSIgYXJndW1lbnQuJyk7bGV0IGkscztpZihlIGluc3RhbmNlb2Ygbi5SZWYpe3M9ZTtlPXQuZmV0Y2goZSl9ZSBpbnN0YW5jZW9mIG4uTmFtZSYmKGk9ZS5uYW1lKTsoaXx8cykmJmEuc2V0KGkscyxyKX1zdGF0aWMgZ2V0Q2FjaGVkKGUsdCxhKXtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuZ2V0Q2FjaGVkIC0gZXhwZWN0ZWQgImxvY2FsQ29sb3JTcGFjZUNhY2hlIiBhcmd1bWVudC4nKTtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2NvbnN0IHI9YS5nZXRCeVJlZihlKTtpZihyKXJldHVybiByO3RyeXtlPXQuZmV0Y2goZSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZX19aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl7Y29uc3QgdD1hLmdldEJ5TmFtZShlLm5hbWUpO2lmKHQpcmV0dXJuIHR9cmV0dXJuIG51bGx9c3RhdGljIGFzeW5jIHBhcnNlQXN5bmMoZSl7bGV0e2NzOnQseHJlZjphLHJlc291cmNlczpyPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX09ZTtjb25zdCBzPXRoaXMuX3BhcnNlKHQsYSxyLG4pO3RoaXMuX2NhY2hlKHQsYSxpLHMpO3JldHVybiBzfXN0YXRpYyBwYXJzZShlKXtsZXR7Y3M6dCx4cmVmOmEscmVzb3VyY2VzOnI9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6bixsb2NhbENvbG9yU3BhY2VDYWNoZTppfT1lO2NvbnN0IHM9dGhpcy5nZXRDYWNoZWQodCxhLGkpO2lmKHMpcmV0dXJuIHM7Y29uc3Qgbz10aGlzLl9wYXJzZSh0LGEscixuKTt0aGlzLl9jYWNoZSh0LGEsaSxvKTtyZXR1cm4gb31zdGF0aWMgX3BhcnNlKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsaT1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMDtpZigoZT10LmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBuLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4gbmV3IFBhdHRlcm5DUyhudWxsKTtkZWZhdWx0OmlmKGEgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IHI9YS5nZXQoIkNvbG9yU3BhY2UiKTtpZihyIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCBzPXIuZ2V0KGUubmFtZSk7aWYocyl7aWYocyBpbnN0YW5jZW9mIG4uTmFtZSlyZXR1cm4gdGhpcy5fcGFyc2Uocyx0LGEsaSk7ZT1zO2JyZWFrfX19dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVucmVjb2duaXplZCBDb2xvclNwYWNlOiAke2UubmFtZX1gKX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBuPXQuZmV0Y2hJZlJlZihlWzBdKS5uYW1lO2xldCBzLG8sdSxkLGYsZztzd2l0Y2gobil7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJDYWxHcmF5IjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtnPXMuZ2V0KCJHYW1tYSIpO3JldHVybiBuZXcgYyhkLGYsZyk7Y2FzZSJDYWxSR0IiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2Q9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2Y9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2c9cy5nZXRBcnJheSgiR2FtbWEiKTtjb25zdCBwPXMuZ2V0QXJyYXkoIk1hdHJpeCIpO3JldHVybiBuZXcgbChkLGYsZyxwKTtjYXNlIklDQ0Jhc2VkIjpjb25zdCBtPXQuZmV0Y2hJZlJlZihlWzFdKS5kaWN0O289bS5nZXQoIk4iKTtjb25zdCBiPW0uZ2V0KCJBbHRlcm5hdGUiKTtpZihiKXtjb25zdCBlPXRoaXMuX3BhcnNlKGIsdCxhLGkpO2lmKGUubnVtQ29tcHM9PT1vKXJldHVybiBlOygwLHIud2FybikoIklDQ0Jhc2VkIGNvbG9yIHNwYWNlOiBJZ25vcmluZyBpbmNvcnJlY3QgL0FsdGVybmF0ZSBlbnRyeS4iKX1pZigxPT09bylyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7aWYoMz09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7aWYoND09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2JyZWFrO2Nhc2UiUGF0dGVybiI6dT1lWzFdfHxudWxsO3UmJih1PXRoaXMuX3BhcnNlKHUsdCxhLGkpKTtyZXR1cm4gbmV3IFBhdHRlcm5DUyh1KTtjYXNlIkkiOmNhc2UiSW5kZXhlZCI6dT10aGlzLl9wYXJzZShlWzFdLHQsYSxpKTtjb25zdCB5PXQuZmV0Y2hJZlJlZihlWzJdKSsxLHc9dC5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgSW5kZXhlZENTKHUseSx3KTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3QgUz10LmZldGNoSWZSZWYoZVsxXSk7bz1BcnJheS5pc0FycmF5KFMpP1MubGVuZ3RoOjE7dT10aGlzLl9wYXJzZShlWzJdLHQsYSxpKTtjb25zdCB4PWkuY3JlYXRlKGVbM10pO3JldHVybiBuZXcgQWx0ZXJuYXRlQ1Mobyx1LHgpO2Nhc2UiTGFiIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtjb25zdCBDPXMuZ2V0QXJyYXkoIlJhbmdlIik7cmV0dXJuIG5ldyBoKGQsZixDKTtkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmltcGxlbWVudGVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke259YCl9fXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7ZX1gKX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMip0IT09ZS5sZW5ndGgpeygwLHIud2FybikoIlRoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgiKTtyZXR1cm4hMH1mb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBnZXQgc2luZ2xldG9ucygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJzaW5nbGV0b25zIix7Z2V0IGdyYXkoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZ3JheSIsbmV3IERldmljZUdyYXlDUyl9LGdldCByZ2IoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfSxnZXQgY215aygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJjbXlrIixuZXcgbyl9fSl9fXQuQ29sb3JTcGFjZT1Db2xvclNwYWNlO2NsYXNzIEFsdGVybmF0ZUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkFsdGVybmF0ZSIsZSk7dGhpcy5iYXNlPXQ7dGhpcy50aW50Rm49YTt0aGlzLnRtcEJ1Zj1uZXcgRmxvYXQzMkFycmF5KHQubnVtQ29tcHMpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3Qgbj10aGlzLnRtcEJ1Zjt0aGlzLnRpbnRGbihlLHQsbiwwKTt0aGlzLmJhc2UuZ2V0UmdiSXRlbShuLDAsYSxyKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz10aGlzLnRpbnRGbixjPXRoaXMuYmFzZSxsPTEvKCgxPDxpKS0xKSxoPWMubnVtQ29tcHMsdT1jLnVzZXNaZXJvVG9PbmVSYW5nZSxkPShjLmlzUGFzc3Rocm91Z2goOCl8fCF1KSYmMD09PXM7bGV0IGY9ZD9uOjA7Y29uc3QgZz1kP3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqYSkscD10aGlzLm51bUNvbXBzLG09bmV3IEZsb2F0MzJBcnJheShwKSxiPW5ldyBGbG9hdDMyQXJyYXkoaCk7bGV0IHksdztmb3IoeT0wO3k8YTt5Kyspe2Zvcih3PTA7dzxwO3crKyltW3ddPWVbdCsrXSpsO28obSwwLGIsMCk7aWYodSlmb3Iodz0wO3c8aDt3KyspZ1tmKytdPTI1NSpiW3ddO2Vsc2V7Yy5nZXRSZ2JJdGVtKGIsMCxnLGYpO2YrPWh9fWR8fGMuZ2V0UmdiQnVmZmVyKGcsMCxhLHIsbiw4LHMpfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzL3RoaXMubnVtQ29tcHMsdCl9fWNsYXNzIFBhdHRlcm5DUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoIlBhdHRlcm4iLG51bGwpO3RoaXMuYmFzZT1lfWlzRGVmYXVsdERlY29kZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgUGF0dGVybkNTLmlzRGVmYXVsdERlY29kZSIpfX1jbGFzcyBJbmRleGVkQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiSW5kZXhlZCIsMSk7dGhpcy5iYXNlPWU7dGhpcy5oaWdoVmFsPXQ7Y29uc3Qgbj1lLm51bUNvbXBzKnQ7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkobik7aWYoYSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbSl7Y29uc3QgZT1hLmdldEJ5dGVzKG4pO3RoaXMubG9va3VwLnNldChlKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW5kZXhlZENTIC0gdW5yZWNvZ25pemVkIGxvb2t1cCB0YWJsZTogJHthfWApO2ZvcihsZXQgZT0wO2U8bjsrK2UpdGhpcy5sb29rdXBbZV09MjU1JmEuY2hhckNvZGVBdChlKX19Z2V0UmdiSXRlbShlLHQsYSxyKXtjb25zdCBuPXRoaXMuYmFzZS5udW1Db21wcyxpPWVbdF0qbjt0aGlzLmJhc2UuZ2V0UmdiQnVmZmVyKHRoaXMubG9va3VwLGksMSxhLHIsOCwwKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz10aGlzLmJhc2UsYz1vLm51bUNvbXBzLGw9by5nZXRPdXRwdXRMZW5ndGgoYyxzKSxoPXRoaXMubG9va3VwO2ZvcihsZXQgaT0wO2k8YTsrK2kpe2NvbnN0IGE9ZVt0KytdKmM7by5nZXRSZ2JCdWZmZXIoaCxhLDEscixuLDgscyk7bis9bH19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMsdCl9aXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMiE9PWUubGVuZ3RoKXsoMCxyLndhcm4pKCJEZWNvZGUgbWFwIGxlbmd0aCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PDEpeygwLHIud2FybikoIkJpdHMgcGVyIGNvbXBvbmVudCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfXJldHVybiAwPT09ZVswXSYmZVsxXT09PSgxPDx0KS0xfX1jbGFzcyBEZXZpY2VHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUdyYXkiLDEpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3Qgbj0yNTUqZVt0XTthW3JdPWFbcisxXT1hW3IrMl09bn1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0yNTUvKCgxPDxpKS0xKTtsZXQgYz10LGw9bjtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PW8qZVtjKytdO3JbbCsrXT10O3JbbCsrXT10O3JbbCsrXT10O2wrPXN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBEZXZpY2VSZ2JDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlUkdCIiwzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2Fbcl09MjU1KmVbdF07YVtyKzFdPTI1NSplW3QrMV07YVtyKzJdPTI1NSplW3QrMl19Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2lmKDg9PT1pJiYwPT09cyl7ci5zZXQoZS5zdWJhcnJheSh0LHQrMyphKSxuKTtyZXR1cm59Y29uc3Qgbz0yNTUvKCgxPDxpKS0xKTtsZXQgYz10LGw9bjtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtyW2wrK109byplW2MrK107cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9fWNvbnN0IG89ZnVuY3Rpb24gRGV2aWNlQ215a0NTQ2xvc3VyZSgpe2Z1bmN0aW9uIGNvbnZlcnRUb1JnYihlLHQsYSxyLG4pe2NvbnN0IGk9ZVt0XSphLHM9ZVt0KzFdKmEsbz1lW3QrMl0qYSxjPWVbdCszXSphO3Jbbl09MjU1K2kqKC00LjM4NzMzMjM4NDYwOTk4OCppKzU0LjQ4NjE1MTk0MTg5MTc2KnMrMTguODIyOTA1MDIxNjUzMDIqbysyMTIuMjU2NjI0NTE2Mzk1ODUqYy0yODUuMjMzMTAyNjEzNzAwNCkrcyooMS43MTQ5NzYzNDc3MzYyMTM0KnMtNS42MDk2NzM2OTA0MDQ3MzE1Km8rLTE3Ljg3Mzg3MDg2MTQxNTQ0NCpjLTUuNDk3MDA2NDI3MTk2MzY2KStvKigtMi41MjE3MzQwMTMxNjgzMDMzKm8tMjEuMjQ4OTIzMzM3MzUzMDczKmMrMTcuNTExOTI3MDg0MTgxMykrYyooLTIxLjg2MTIyMTQ3NDYzNjA1KmMtMTg5LjQ4MTgwODM1OTIyNzQ3KTtyW24rMV09MjU1K2kqKDguODQxMDQxNDIyMDM2MTQ5KmkrNjAuMTE4MDI3MDQ1NTk3MzY2KnMrNi44NzE0MjU1OTIwNDkwMDcqbyszMS4xNTkxMDAxMzAwNTU5MjIqYy03OS4yOTcwODQ0ODE2NTQ4KStzKigtMTUuMzEwMzYxMzA2OTY3ODE3KnMrMTcuNTc1MjUxMjYxMTA5NDgyKm8rMTMxLjM1MjUwOTEyNDkzOTc2KmMtMTkwLjk0NTMzMDI1ODg5NTEpK28qKDQuNDQ0MzM5MTAyODUyNzM5Km8rOS44NjMyODYxNDkzNDA1KmMtMjQuODY3NDE1ODI1NTU4NzgpK2MqKC0yMC43MzczMjU0NzExODEwMzQqYy0xODcuODA0NTM3MDk3MTk1NzgpO3JbbisyXT0yNTUraSooLjg4NDI1MjI0MzAwMDMyOTYqaSs4LjA3ODY3NzUwMzExMjkyOCpzKzMwLjg5OTc4MzA5NzAzNzI5Km8tLjIzODgzMjM4Njg5MTc4OTM0KmMtMTQuMTgzNTc2Nzk5NjczMjg2KStzKigxMC40OTU5MzI3MzQzMjA3MipzKzYzLjAyMzc4NDk0NzU0MDUyKm8rNTAuNjA2OTU3NjU2MzYwNzM0KmMtMTEyLjIzODg0MjUzNzE5MjQ4KStvKiguMDMyOTYwNDExMTQ4NzMyMTcqbysxMTUuNjAzODQ0NDk2NDY2NDEqYy0xOTMuNTgyMDkzNTY4NjE1MDUpK2MqKC0yMi4zMzgxNjgwNzMwOTg4NipjLTE4MC4xMjYxMzk3NDcwODM2Nyl9cmV0dXJuIGNsYXNzIERldmljZUNteWtDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlQ01ZSyIsNCl9Z2V0UmdiSXRlbShlLHQsYSxyKXtjb252ZXJ0VG9SZ2IoZSx0LDEsYSxyKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29udmVydFRvUmdiKGUsdCxvLHIsbik7dCs9NDtuKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlLzQqKDMrdCl8MH19fSgpLGM9ZnVuY3Rpb24gQ2FsR3JheUNTQ2xvc3VyZSgpe2Z1bmN0aW9uIGNvbnZlcnRUb1JnYihlLHQsYSxyLG4saSl7Y29uc3Qgcz0odFthXSppKSoqZS5HLG89ZS5ZVypzLGM9TWF0aC5tYXgoMjk1LjgqbyoqLjMzMzMzMzMzMzMzMzMzMzMtNDAuOCwwKTtyW25dPWM7cltuKzFdPWM7cltuKzJdPWN9cmV0dXJuIGNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXkiKTt0fHw9WzAsMCwwXTthfHw9MTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTt0aGlzLkc9YTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApeygwLHIuaW5mbykoYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fCgwLHIud2FybikoYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXsoMCxyLmluZm8pKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0xO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fX0oKSxsPWZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pLHQ9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pLGE9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKSxuPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSksaT1uZXcgRmxvYXQzMkFycmF5KDMpLHM9bmV3IEZsb2F0MzJBcnJheSgzKSxvPW5ldyBGbG9hdDMyQXJyYXkoMyksYz0oMjQvMTE2KSoqMy84O2Z1bmN0aW9uIG1hdHJpeFByb2R1Y3QoZSx0LGEpe2FbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07YVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTthWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfWZ1bmN0aW9uIHNSR0JUcmFuc2ZlckZ1bmN0aW9uKGUpe3JldHVybiBlPD0uMDAzMTMwOD9hZGp1c3RUb1JhbmdlKDAsMSwxMi45MiplKTplPj0uOTk1NTQ1MjU/MTphZGp1c3RUb1JhbmdlKDAsMSwxLjA1NSplKiooMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGFkanVzdFRvUmFuZ2UoZSx0LGEpe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKHQsYSkpfWZ1bmN0aW9uIGRlY29kZUwoZSl7cmV0dXJuIGU8MD8tZGVjb2RlTCgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKmN9ZnVuY3Rpb24gY29udmVydFRvUmdiKHIsYyxsLGgsdSxkKXtjb25zdCBmPWFkanVzdFRvUmFuZ2UoMCwxLGNbbF0qZCksZz1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMV0qZCkscD1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMl0qZCksbT0xPT09Zj8xOmYqKnIuR1IsYj0xPT09Zz8xOmcqKnIuR0cseT0xPT09cD8xOnAqKnIuR0Isdz1yLk1YQSptK3IuTVhCKmIrci5NWEMqeSxTPXIuTVlBKm0rci5NWUIqYityLk1ZQyp5LHg9ci5NWkEqbStyLk1aQipiK3IuTVpDKnksQz1zO0NbMF09dztDWzFdPVM7Q1syXT14O2NvbnN0IHY9bzshZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChhLHIsbil7aWYoMT09PWFbMF0mJjE9PT1hWzJdKXtuWzBdPXJbMF07blsxXT1yWzFdO25bMl09clsyXTtyZXR1cm59Y29uc3Qgcz1uO21hdHJpeFByb2R1Y3QoZSxyLHMpO2NvbnN0IG89aTshZnVuY3Rpb24gY29udmVydFRvRmxhdChlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19KGEscyxvKTttYXRyaXhQcm9kdWN0KHQsbyxuKX0oci53aGl0ZVBvaW50LEMsdik7Y29uc3Qgaz1zOyFmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9ZGVjb2RlTCgwKSxuPSgxLXIpLygxLWRlY29kZUwoZVswXSkpLGk9MS1uLHM9KDEtcikvKDEtZGVjb2RlTChlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS1kZWNvZGVMKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qbitpO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0oci5ibGFja1BvaW50LHYsayk7Y29uc3QgTz1vOyFmdW5jdGlvbiBub3JtYWxpemVXaGl0ZVBvaW50VG9ENjUoYSxyLG4pe2NvbnN0IHM9bjttYXRyaXhQcm9kdWN0KGUscixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShlLHQsYSl7YVswXT0uOTUwNDcqdFswXS9lWzBdO2FbMV09MSp0WzFdL2VbMV07YVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0oYSxzLG8pO21hdHJpeFByb2R1Y3QodCxvLG4pfShuLGssTyk7Y29uc3QgVD1zO21hdHJpeFByb2R1Y3QoYSxPLFQpO2hbdV09MjU1KnNSR0JUcmFuc2ZlckZ1bmN0aW9uKFRbMF0pO2hbdSsxXT0yNTUqc1JHQlRyYW5zZmVyRnVuY3Rpb24oVFsxXSk7aFt1KzJdPTI1NSpzUkdCVHJhbnNmZXJGdW5jdGlvbihUWzJdKX1yZXR1cm4gY2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7dHx8PW5ldyBGbG9hdDMyQXJyYXkoMyk7YXx8PW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7bnx8PW5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7Y29uc3QgaT1lWzBdLHM9ZVsxXSxvPWVbMl07dGhpcy53aGl0ZVBvaW50PWU7Y29uc3QgYz10WzBdLGw9dFsxXSxoPXRbMl07dGhpcy5ibGFja1BvaW50PXQ7dGhpcy5HUj1hWzBdO3RoaXMuR0c9YVsxXTt0aGlzLkdCPWFbMl07dGhpcy5NWEE9blswXTt0aGlzLk1ZQT1uWzFdO3RoaXMuTVpBPW5bMl07dGhpcy5NWEI9blszXTt0aGlzLk1ZQj1uWzRdO3RoaXMuTVpCPW5bNV07dGhpcy5NWEM9bls2XTt0aGlzLk1ZQz1uWzddO3RoaXMuTVpDPW5bOF07aWYoaTwwfHxvPDB8fDEhPT1zKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihjPDB8fGw8MHx8aDwwKXsoMCxyLmluZm8pKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtjfSwgJHtsfSwgJHtofV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApeygwLHIuaW5mbykoYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksaD1mdW5jdGlvbiBMYWJDU0Nsb3N1cmUoKXtmdW5jdGlvbiBmbl9nKGUpe3JldHVybiBlPj02LzI5P2UqKjM6MTA4Lzg0MSooZS00LzI5KX1mdW5jdGlvbiBkZWNvZGUoZSx0LGEscil7cmV0dXJuIGErZSooci1hKS90fWZ1bmN0aW9uIGNvbnZlcnRUb1JnYihlLHQsYSxyLG4saSl7bGV0IHM9dFthXSxvPXRbYSsxXSxjPXRbYSsyXTtpZighMSE9PXIpe3M9ZGVjb2RlKHMsciwwLDEwMCk7bz1kZWNvZGUobyxyLGUuYW1pbixlLmFtYXgpO2M9ZGVjb2RlKGMscixlLmJtaW4sZS5ibWF4KX1vPmUuYW1heD9vPWUuYW1heDpvPGUuYW1pbiYmKG89ZS5hbWluKTtjPmUuYm1heD9jPWUuYm1heDpjPGUuYm1pbiYmKGM9ZS5ibWluKTtjb25zdCBsPShzKzE2KS8xMTYsaD1sK28vNTAwLHU9bC1jLzIwMCxkPWUuWFcqZm5fZyhoKSxmPWUuWVcqZm5fZyhsKSxnPWUuWlcqZm5fZyh1KTtsZXQgcCxtLGI7aWYoZS5aVzwxKXtwPTMuMTMzOSpkKy0xLjYxNypmKy0uNDkwNipnO209LS45Nzg1KmQrMS45MTYqZisuMDMzMypnO2I9LjA3MipkKy0uMjI5KmYrMS40MDU3Kmd9ZWxzZXtwPTMuMjQwNipkKy0xLjUzNzIqZistLjQ5ODYqZzttPS0uOTY4OSpkKzEuODc1OCpmKy4wNDE1Kmc7Yj0uMDU1NypkKy0uMjA0KmYrMS4wNTcqZ31uW2ldPTI1NSpNYXRoLnNxcnQocCk7bltpKzFdPTI1NSpNYXRoLnNxcnQobSk7bltpKzJdPTI1NSpNYXRoLnNxcnQoYil9cmV0dXJuIGNsYXNzIExhYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkxhYiIsMyk7aWYoIWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBMYWIiKTt0fHw9WzAsMCwwXTthfHw9Wy0xMDAsMTAwLC0xMDAsMTAwXTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLmFtaW49YVswXTt0aGlzLmFtYXg9YVsxXTt0aGlzLmJtaW49YVsyXTt0aGlzLmJtYXg9YVszXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXsoMCxyLmluZm8pKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXsoMCxyLmluZm8pKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LCExLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89KDE8PGkpLTE7Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29udmVydFRvUmdiKHRoaXMsZSx0LG8scixuKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fX0oKX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QYXJ0aWFsRXZhbHVhdG9yPXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPXZvaWQgMDthKDEzOSk7YSgyKTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgxMTYpO2EoMTI2KTthKDEyOCk7YSgxMzEpO2EoMTMzKTthKDEzNSk7YSgxMzcpO2EoMTU3KTthKDE1OSk7dmFyIHI9YSgxNDQpLG49YSgxNjQpLGk9YSgxNTApLHM9YSgxODQpLG89YSgxODcpLGM9YSgxOTEpLGw9YSgyMDApLGg9YSgyMDEpLHU9YSgxOTIpLGQ9YSgyMDcpLGY9YSgxNjYpLGc9YSgyMDkpLHA9YSgxNTQpLG09YSgxNTEpLGI9YSgyMTApLHk9YSgxNjIpLHc9YSgxNjgpLFM9YSgxODgpLHg9YSgyMTEpLEM9YSgxODkpLHY9YSgxNDkpLGs9YSgxOTUpLE89YSgxOTApLFQ9YSgyMTIpLE09YSgyMTMpLEU9YSgyMTQpLEQ9YSgyMTUpO2NvbnN0IE49T2JqZWN0LmZyZWV6ZSh7bWF4SW1hZ2VTaXplOi0xLGRpc2FibGVGb250RmFjZTohMSxpZ25vcmVFcnJvcnM6ITEsaXNFdmFsU3VwcG9ydGVkOiEwLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiExLGNhbnZhc01heEFyZWFJbkJ5dGVzOi0xLGZvbnRFeHRyYVByb3BlcnRpZXM6ITEsdXNlU3lzdGVtRm9udHM6ITAsY01hcFVybDpudWxsLHN0YW5kYXJkRm9udERhdGFVcmw6bnVsbH0pLFI9MSxMPTIsJD1Qcm9taXNlLnJlc29sdmUoKTtmdW5jdGlvbiBub3JtYWxpemVCbGVuZE1vZGUoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPW5vcm1hbGl6ZUJsZW5kTW9kZSh0LCEwKTtpZihlKXJldHVybiBlfSgwLHIud2FybikoYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGUgQXJyYXk6ICR7ZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWlmKCEoZSBpbnN0YW5jZW9mIGkuTmFtZSkpcmV0dXJuIHQ/bnVsbDoic291cmNlLW92ZXIiO3N3aXRjaChlLm5hbWUpe2Nhc2UiTm9ybWFsIjpjYXNlIkNvbXBhdGlibGUiOnJldHVybiJzb3VyY2Utb3ZlciI7Y2FzZSJNdWx0aXBseSI6cmV0dXJuIm11bHRpcGx5IjtjYXNlIlNjcmVlbiI6cmV0dXJuInNjcmVlbiI7Y2FzZSJPdmVybGF5IjpyZXR1cm4ib3ZlcmxheSI7Y2FzZSJEYXJrZW4iOnJldHVybiJkYXJrZW4iO2Nhc2UiTGlnaHRlbiI6cmV0dXJuImxpZ2h0ZW4iO2Nhc2UiQ29sb3JEb2RnZSI6cmV0dXJuImNvbG9yLWRvZGdlIjtjYXNlIkNvbG9yQnVybiI6cmV0dXJuImNvbG9yLWJ1cm4iO2Nhc2UiSGFyZExpZ2h0IjpyZXR1cm4iaGFyZC1saWdodCI7Y2FzZSJTb2Z0TGlnaHQiOnJldHVybiJzb2Z0LWxpZ2h0IjtjYXNlIkRpZmZlcmVuY2UiOnJldHVybiJkaWZmZXJlbmNlIjtjYXNlIkV4Y2x1c2lvbiI6cmV0dXJuImV4Y2x1c2lvbiI7Y2FzZSJIdWUiOnJldHVybiJodWUiO2Nhc2UiU2F0dXJhdGlvbiI6cmV0dXJuInNhdHVyYXRpb24iO2Nhc2UiQ29sb3IiOnJldHVybiJjb2xvciI7Y2FzZSJMdW1pbm9zaXR5IjpyZXR1cm4ibHVtaW5vc2l0eSJ9aWYodClyZXR1cm4gbnVsbDsoMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWZ1bmN0aW9uIGluY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KGUpe2UuZm49PT1yLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QmJmUuYXJnc1swXT8uY291bnQ+MCYmZS5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7bGV0e3hyZWY6dCxoYW5kbGVyOmEscGFnZUluZGV4OnIsaWRGYWN0b3J5Om4sZm9udENhY2hlOmksYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpvLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6bCxvcHRpb25zOmg9bnVsbH09ZTt0aGlzLnhyZWY9dDt0aGlzLmhhbmRsZXI9YTt0aGlzLnBhZ2VJbmRleD1yO3RoaXMuaWRGYWN0b3J5PW47dGhpcy5mb250Q2FjaGU9aTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9czt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1vO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1jO3RoaXMuc3lzdGVtRm9udENhY2hlPWw7dGhpcy5vcHRpb25zPWh8fE47dGhpcy5wYXJzaW5nVHlwZTNGb250PSExO3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZT1uZXcgZy5SZWdpb25hbEltYWdlQ2FjaGU7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpO1QuSW1hZ2VSZXNpemVyLnNldE1heEFyZWEodGhpcy5vcHRpb25zLmNhbnZhc01heEFyZWFJbkJ5dGVzKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe2NvbnN0IGU9bmV3IGQuUERGRnVuY3Rpb25GYWN0b3J5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzRXZhbFN1cHBvcnRlZH0pO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJfcGRmRnVuY3Rpb25GYWN0b3J5IixlKX1jbG9uZSgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTt0Lm9wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucyxlKTtyZXR1cm4gdH1oYXNCbGVuZE1vZGVzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4hMTtpZihlLm9iaklkJiZ0LmhhcyhlLm9iaklkKSlyZXR1cm4hMTtjb25zdCBhPW5ldyBpLlJlZlNldCh0KTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCBuPVtlXSxzPXRoaXMueHJlZjtmb3IoO24ubGVuZ3RoOyl7Y29uc3QgZT1uLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIGkuRGljdClmb3IobGV0IGUgb2YgdC5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIGkuUmVmKXtpZihhLmhhcyhlKSljb250aW51ZTt0cnl7ZT1zLmZldGNoKGUpfWNhdGNoKHQpe2EucHV0KGUpOygwLHIuaW5mbykoYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSljb250aW51ZTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBpLk5hbWUpe2lmKCJOb3JtYWwiIT09dC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBpLk5hbWUmJiJOb3JtYWwiIT09ZS5uYW1lKXJldHVybiEwfWNvbnN0IG89ZS5nZXQoIlhPYmplY3QiKTtpZihvIGluc3RhbmNlb2YgaS5EaWN0KWZvcihsZXQgZSBvZiBvLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgaS5SZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7KDAsci5pbmZvKShgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgbS5CYXNlU3RyZWFtKSljb250aW51ZTtlLmRpY3Qub2JqSWQmJmEucHV0KGUuZGljdC5vYmpJZCk7Y29uc3QgdD1lLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTtpZih0IGluc3RhbmNlb2YgaS5EaWN0JiYoIXQub2JqSWR8fCFhLmhhcyh0Lm9iaklkKSkpe24ucHVzaCh0KTt0Lm9iaklkJiZhLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGEpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgYTtpZihudWxsIT09dGhpcy5vcHRpb25zLmNNYXBVcmwpe2NvbnN0IHQ9YCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGAsbj1hd2FpdCBmZXRjaCh0KTtpZighbi5vayl0aHJvdyBuZXcgRXJyb3IoYGZldGNoQnVpbHRJbkNNYXA6IGZhaWxlZCB0byBmZXRjaCBmaWxlICIke3R9IiB3aXRoICIke24uc3RhdHVzVGV4dH0iLmApO2E9e2NNYXBEYXRhOm5ldyBVaW50OEFycmF5KGF3YWl0IG4uYXJyYXlCdWZmZXIoKSksY29tcHJlc3Npb25UeXBlOnIuQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUll9fWVsc2UgYT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJ1aWx0SW5DTWFwIix7bmFtZTplfSk7YS5jb21wcmVzc2lvblR5cGUhPT1yLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORSYmdGhpcy5idWlsdEluQ01hcENhY2hlLnNldChlLGEpO3JldHVybiBhfWFzeW5jIGZldGNoU3RhbmRhcmRGb250RGF0YShlKXtjb25zdCB0PXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmdldChlKTtpZih0KXJldHVybiBuZXcgcC5TdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBhPSgwLGMuZ2V0Rm9udE5hbWVUb0ZpbGVNYXApKClbZV07bGV0IG47aWYobnVsbCE9PXRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsKXtjb25zdCBlPWAke3RoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsfSR7YX1gLHQ9YXdhaXQgZmV0Y2goZSk7dC5vaz9uPWF3YWl0IHQuYXJyYXlCdWZmZXIoKTooMCxyLndhcm4pKGBmZXRjaFN0YW5kYXJkRm9udERhdGE6IGZhaWxlZCB0byBmZXRjaCBmaWxlICIke2V9IiB3aXRoICIke3Quc3RhdHVzVGV4dH0iLmApfWVsc2UgdHJ5e249YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hTdGFuZGFyZEZvbnREYXRhIix7ZmlsZW5hbWU6YX0pfWNhdGNoKGUpeygwLHIud2FybikoYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7YX0iIHdpdGggIiR7ZX0iLmApfWlmKCFuKXJldHVybiBudWxsO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLG4pO3JldHVybiBuZXcgcC5TdHJlYW0obil9YXN5bmMgYnVpbGRGb3JtWE9iamVjdChlLHQsYSxuLHMsbyxjKXtjb25zdCBsPXQuZGljdCxoPWwuZ2V0QXJyYXkoIk1hdHJpeCIpO2xldCB1LGQsZj1sLmdldEFycmF5KCJCQm94Iik7Zj1BcnJheS5pc0FycmF5KGYpJiY0PT09Zi5sZW5ndGg/ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6bnVsbDtsLmhhcygiT0MiKSYmKHU9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhsLmdldCgiT0MiKSxlKSk7dm9pZCAwIT09dSYmbi5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIix1XSk7Y29uc3QgZz1sLmdldCgiR3JvdXAiKTtpZihnKXtkPXttYXRyaXg6aCxiYm94OmYsc21hc2s6YSxpc29sYXRlZDohMSxrbm9ja291dDohMX07Y29uc3QgdD1nLmdldCgiUyIpO2xldCBzPW51bGw7aWYoKDAsaS5pc05hbWUpKHQsIlRyYW5zcGFyZW5jeSIpKXtkLmlzb2xhdGVkPWcuZ2V0KCJJIil8fCExO2Qua25vY2tvdXQ9Zy5nZXQoIksiKXx8ITE7aWYoZy5oYXMoIkNTIikpe2NvbnN0IHQ9Zy5nZXRSYXcoIkNTIiksYT15LkNvbG9yU3BhY2UuZ2V0Q2FjaGVkKHQsdGhpcy54cmVmLGMpO3M9YXx8YXdhaXQgdGhpcy5wYXJzZUNvbG9yU3BhY2Uoe2NzOnQscmVzb3VyY2VzOmUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Y30pfX1pZihhPy5iYWNrZHJvcCl7c3x8PXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjthLmJhY2tkcm9wPXMuZ2V0UmdiKGEuYmFja2Ryb3AsMCl9bi5hZGRPcChyLk9QUy5iZWdpbkdyb3VwLFtkXSl9Y29uc3QgcD1nP1toLG51bGxdOltoLGZdO24uYWRkT3Aoci5PUFMucGFpbnRGb3JtWE9iamVjdEJlZ2luLHApO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazpzLHJlc291cmNlczpsLmdldCgiUmVzb3VyY2VzIil8fGUsb3BlcmF0b3JMaXN0Om4saW5pdGlhbFN0YXRlOm99KS50aGVuKChmdW5jdGlvbigpe24uYWRkT3Aoci5PUFMucGFpbnRGb3JtWE9iamVjdEVuZCxbXSk7ZyYmbi5hZGRPcChyLk9QUy5lbmRHcm91cCxbZF0pO3ZvaWQgMCE9PXUmJm4uYWRkT3Aoci5PUFMuZW5kTWFya2VkQ29udGVudCxbXSl9KSl9X3NlbmRJbWdEYXRhKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtjb25zdCByPXQ/W3QuYml0bWFwfHx0LmRhdGEuYnVmZmVyXTpudWxsO3JldHVybiB0aGlzLnBhcnNpbmdUeXBlM0ZvbnR8fGE/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW2UsIkltYWdlIix0XSxyKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbZSx0aGlzLnBhZ2VJbmRleCwiSW1hZ2UiLHRdLHIpfWFzeW5jIGJ1aWxkUGFpbnRJbWFnZVhPYmplY3QoZSl7bGV0e3Jlc291cmNlczp0LGltYWdlOmEsaXNJbmxpbmU6bj0hMSxvcGVyYXRvckxpc3Q6aSxjYWNoZUtleTpzLGxvY2FsSW1hZ2VDYWNoZTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmN9PWU7Y29uc3QgbD1hLmRpY3QsaD1sLm9iaklkLHU9bC5nZXQoIlciLCJXaWR0aCIpLGQ9bC5nZXQoIkgiLCJIZWlnaHQiKTtpZighdXx8Im51bWJlciIhPXR5cGVvZiB1fHwhZHx8Im51bWJlciIhPXR5cGVvZiBkKXsoMCxyLndhcm4pKCJJbWFnZSBkaW1lbnNpb25zIGFyZSBtaXNzaW5nLCBvciBub3QgbnVtYmVycy4iKTtyZXR1cm59Y29uc3QgZj10aGlzLm9wdGlvbnMubWF4SW1hZ2VTaXplO2lmKC0xIT09ZiYmdSpkPmYpe2NvbnN0IGU9IkltYWdlIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBzaXplIGFuZCB3YXMgcmVtb3ZlZC4iO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpeygwLHIud2FybikoZSk7cmV0dXJufXRocm93IG5ldyBFcnJvcihlKX1sZXQgZztsLmhhcygiT0MiKSYmKGc9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhsLmdldCgiT0MiKSx0KSk7bGV0IHAsbTtpZihsLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe2NvbnN0IGU9bC5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLHQ9dSs3Pj4zLG49YS5nZXRCeXRlcyh0KmQpLGM9bC5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl7cD1ELlBERkltYWdlLmNyZWF0ZVJhd01hc2soe2ltZ0FycmF5Om4sd2lkdGg6dSxoZWlnaHQ6ZCxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphIGluc3RhbmNlb2Ygdy5EZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTpjPy5bMF0+MCxpbnRlcnBvbGF0ZTplfSk7cC5jYWNoZWQ9ISFzO209W3BdO2kuYWRkSW1hZ2VPcHMoci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LG0sZyk7aWYocyl7Y29uc3QgZT17Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6bSxvcHRpb25hbENvbnRlbnQ6Z307by5zZXQocyxoLGUpO2gmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLGUpfXJldHVybn1wPWF3YWl0IEQuUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1nQXJyYXk6bix3aWR0aDp1LGhlaWdodDpkLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEgaW5zdGFuY2VvZiB3LkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmM/LlswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYocC5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtpLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxbXSxnKTtpZihzKXtjb25zdCBlPXtmbjpyLk9QUy5wYWludFNvbGlkQ29sb3JJbWFnZU1hc2ssYXJnczpbXSxvcHRpb25hbENvbnRlbnQ6Z307by5zZXQocyxoLGUpO2gmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLGUpfXJldHVybn1jb25zdCBmPWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO2kuYWRkRGVwZW5kZW5jeShmKTt0aGlzLl9zZW5kSW1nRGF0YShmLHApO209W3tkYXRhOmYsd2lkdGg6cC53aWR0aCxoZWlnaHQ6cC5oZWlnaHQsaW50ZXJwb2xhdGU6cC5pbnRlcnBvbGF0ZSxjb3VudDoxfV07aS5hZGRJbWFnZU9wcyhyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QsbSxnKTtpZihzKXtjb25zdCBlPXtmbjpyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QsYXJnczptLG9wdGlvbmFsQ29udGVudDpnfTtvLnNldChzLGgsZSk7aCYmdGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGgsZSl9cmV0dXJufWlmKG4mJiFsLmhhcygiU01hc2siKSYmIWwuaGFzKCJNYXNrIikmJnUrZDwyMDApe2NvbnN0IGU9bmV3IEQuUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczp0LGltYWdlOmEsaXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmN9KTtwPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCEwLCExKTtpLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPXRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDtpLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0LFtwXSxnKTtyZXR1cm59bGV0IGI9YGltZ18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YCx5PSExO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCliPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7Yn1gO2Vsc2UgaWYoaCl7eT10aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2hvdWxkQ2FjaGUoaCx0aGlzLnBhZ2VJbmRleCk7eSYmKGI9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtifWApfWkuYWRkRGVwZW5kZW5jeShiKTttPVtiLHUsZF07RC5QREZJbWFnZS5idWlsZEltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6dCxpbWFnZTphLGlzSW5saW5lOm4scGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSkudGhlbigoYXN5bmMgZT0+e3A9YXdhaXQgZS5jcmVhdGVJbWFnZURhdGEoITEsdGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKTtpZihzJiZoJiZ5KXtjb25zdCBlPXAuYml0bWFwP3Aud2lkdGgqcC5oZWlnaHQqNDpwLmRhdGEubGVuZ3RoO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGRCeXRlU2l6ZShoLGUpfXJldHVybiB0aGlzLl9zZW5kSW1nRGF0YShiLHAseSl9KSkuY2F0Y2goKGU9PnsoMCxyLndhcm4pKGBVbmFibGUgdG8gZGVjb2RlIGltYWdlICIke2J9IjogIiR7ZX0iLmApO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YShiLG51bGwseSl9KSk7aS5hZGRJbWFnZU9wcyhyLk9QUy5wYWludEltYWdlWE9iamVjdCxtLGcpO2lmKHMpe2NvbnN0IGU9e2ZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6bSxvcHRpb25hbENvbnRlbnQ6Z307by5zZXQocyxoLGUpO2lmKGgpe3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLGUpO2lmKHkpeygwLHIuYXNzZXJ0KSghbiwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShoLHtvYmpJZDpiLGZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6bSxvcHRpb25hbENvbnRlbnQ6ZyxieXRlU2l6ZTowfSl9fX19aGFuZGxlU01hc2soZSx0LGEscixuLGkpe2NvbnN0IHM9ZS5nZXQoIkciKSxvPXtzdWJ0eXBlOmUuZ2V0KCJTIikubmFtZSxiYWNrZHJvcDplLmdldCgiQkMiKX0sYz1lLmdldCgiVFIiKTtpZigoMCxkLmlzUERGRnVuY3Rpb24pKGMpKXtjb25zdCBlPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUoYyksdD1uZXcgVWludDhBcnJheSgyNTYpLGE9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2FbMF09ci8yNTU7ZShhLDAsYSwwKTt0W3JdPTI1NSphWzBdfDB9by50cmFuc2Zlck1hcD10fXJldHVybiB0aGlzLmJ1aWxkRm9ybVhPYmplY3QodCxzLG8sYSxyLG4uc3RhdGUuY2xvbmUoKSxpKX1oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGUpe2xldCB0O2lmKEFycmF5LmlzQXJyYXkoZSkpdD1lO2Vsc2V7aWYoISgwLGQuaXNQREZGdW5jdGlvbikoZSkpcmV0dXJuIG51bGw7dD1bZV19Y29uc3QgYT1bXTtsZXQgcj0wLG49MDtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO3IrKztpZigoMCxpLmlzTmFtZSkodCwiSWRlbnRpdHkiKSl7YS5wdXNoKG51bGwpO2NvbnRpbnVlfWlmKCEoMCxkLmlzUERGRnVuY3Rpb24pKHQpKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSh0KSxvPW5ldyBVaW50OEFycmF5KDI1NiksYz1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl7Y1swXT1lLzI1NTtzKGMsMCxjLDApO29bZV09MjU1KmNbMF18MH1hLnB1c2gobyk7bisrfXJldHVybiAxIT09ciYmNCE9PXJ8fDA9PT1uP251bGw6YX1oYW5kbGVUaWxpbmdUeXBlKGUsdCxhLG4scyxvLGMsaCl7Y29uc3QgdT1uZXcgRS5PcGVyYXRvckxpc3QsZD1pLkRpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbcy5nZXQoIlJlc291cmNlcyIpLGFdfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bix0YXNrOmMscmVzb3VyY2VzOmQsb3BlcmF0b3JMaXN0OnV9KS50aGVuKChmdW5jdGlvbigpe2NvbnN0IGE9dS5nZXRJUigpLHI9KDAsbC5nZXRUaWxpbmdQYXR0ZXJuSVIpKGEscyx0KTtvLmFkZERlcGVuZGVuY2llcyh1LmRlcGVuZGVuY2llcyk7by5hZGRPcChlLHIpO3Mub2JqSWQmJmguc2V0KG51bGwscy5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6YSxkaWN0OnN9KX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGhhbmRsZVRpbGluZ1R5cGUgLSBpZ25vcmluZyBwYXR0ZXJuOiAiJHtlfSIuYCl9fSkpfWhhbmRsZVNldEZvbnQoZSx0LGEscixuLG8pe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD43JiZ2b2lkIDAhPT1hcmd1bWVudHNbN10/YXJndW1lbnRzWzddOm51bGw7Y29uc3QgaD10Py5bMF1pbnN0YW5jZW9mIGkuTmFtZT90WzBdLm5hbWU6bnVsbDtyZXR1cm4gdGhpcy5sb2FkRm9udChoLGEsZSxjLGwpLnRoZW4oKHQ9PnQuZm9udC5pc1R5cGUzRm9udD90LmxvYWRUeXBlM0RhdGEodGhpcyxlLG4pLnRoZW4oKGZ1bmN0aW9uKCl7ci5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyk7cmV0dXJuIHR9KSkuY2F0Y2goKGU9Pm5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSkpOnQpKS50aGVuKChlPT57by5mb250PWUuZm9udDtlLnNlbmQodGhpcy5oYW5kbGVyKTtyZXR1cm4gZS5sb2FkZWROYW1lfSkpfWhhbmRsZVRleHQoZSx0KXtjb25zdCBhPXQuZm9udCxuPWEuY2hhcnNUb0dseXBocyhlKTtpZihhLmRhdGEpeyghISh0LnRleHRSZW5kZXJpbmdNb2RlJnIuVGV4dFJlbmRlcmluZ01vZGUuQUREX1RPX1BBVEhfRkxBRyl8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8YS5kaXNhYmxlRm9udEZhY2V8fHRoaXMub3B0aW9ucy5kaXNhYmxlRm9udEZhY2UpJiZQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKGEsbix0aGlzLmhhbmRsZXIsdGhpcy5vcHRpb25zKX1yZXR1cm4gbn1lbnN1cmVTdGF0ZUZvbnQoZSl7aWYoZS5mb250KXJldHVybjtjb25zdCB0PW5ldyByLkZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDsoMCxyLndhcm4pKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoZSl7bGV0e3Jlc291cmNlczp0LGdTdGF0ZTphLG9wZXJhdG9yTGlzdDpuLGNhY2hlS2V5OnMsdGFzazpvLHN0YXRlTWFuYWdlcjpjLGxvY2FsR1N0YXRlQ2FjaGU6bCxsb2NhbENvbG9yU3BhY2VDYWNoZTpofT1lO2NvbnN0IHU9YS5vYmpJZDtsZXQgZD0hMDtjb25zdCBmPVtdO2xldCBnPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBlIG9mIGEuZ2V0S2V5cygpKXtjb25zdCBzPWEuZ2V0KGUpO3N3aXRjaChlKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6Zi5wdXNoKFtlLHNdKTticmVhaztjYXNlIkZvbnQiOmQ9ITE7Zz1nLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQodCxudWxsLHNbMF0sbixvLGMuc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKHQpe24uYWRkRGVwZW5kZW5jeSh0KTtmLnB1c2goW2UsW3Qsc1sxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOmYucHVzaChbZSxub3JtYWxpemVCbGVuZE1vZGUocyldKTticmVhaztjYXNlIlNNYXNrIjppZigoMCxpLmlzTmFtZSkocywiTm9uZSIpKXtmLnB1c2goW2UsITFdKTticmVha31pZihzIGluc3RhbmNlb2YgaS5EaWN0KXtkPSExO2c9Zy50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhzLHQsbixvLGMsaCkpKTtmLnB1c2goW2UsITBdKX1lbHNlKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IGE9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKHMpO2YucHVzaChbZSxhXSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOigwLHIuaW5mbykoImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIitlKTticmVhaztkZWZhdWx0OigwLHIuaW5mbykoIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2UpfX1yZXR1cm4gZy50aGVuKChmdW5jdGlvbigpe2YubGVuZ3RoPjAmJm4uYWRkT3Aoci5PUFMuc2V0R1N0YXRlLFtmXSk7ZCYmbC5zZXQocyx1LGYpfSkpfWxvYWRGb250KGUsdCxhKXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxvPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTpudWxsO2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgcy5FcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSk7bGV0IGM7aWYodCl0IGluc3RhbmNlb2YgaS5SZWYmJihjPXQpO2Vsc2V7Y29uc3QgdD1hLmdldCgiRm9udCIpO3QmJihjPXQuZ2V0UmF3KGUpKX1pZihjKXtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQmJnRoaXMudHlwZTNGb250UmVmcy5oYXMoYykpcmV0dXJuIGVycm9yRm9udCgpO2lmKHRoaXMuZm9udENhY2hlLmhhcyhjKSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGMpO3Q9dGhpcy54cmVmLmZldGNoSWZSZWYoYyl9aWYoISh0IGluc3RhbmNlb2YgaS5EaWN0KSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMmJiF0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpeygwLHIud2FybikoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7cmV0dXJuIGVycm9yRm9udCgpfSgwLHIud2FybikoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUgLS0gYXR0ZW1wdGluZyB0byBmYWxsYmFjayB0byBhIGRlZmF1bHQgZm9udC5gKTt0PW58fFBhcnRpYWxFdmFsdWF0b3IuZmFsbGJhY2tGb250RGljdH1pZih0LmNhY2hlS2V5JiZ0aGlzLmZvbnRDYWNoZS5oYXModC5jYWNoZUtleSkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldCh0LmNhY2hlS2V5KTtjb25zdCBsPW5ldyByLlByb21pc2VDYXBhYmlsaXR5O2xldCBoO3RyeXtoPXRoaXMucHJlRXZhbHVhdGVGb250KHQpO2guY3NzRm9udEluZm89b31jYXRjaChlKXsoMCxyLndhcm4pKGBsb2FkRm9udCAtIHByZUV2YWx1YXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtyZXR1cm4gZXJyb3JGb250KCl9Y29uc3R7ZGVzY3JpcHRvcjp1LGhhc2g6ZH09aCxmPWMgaW5zdGFuY2VvZiBpLlJlZjtsZXQgZztpZihkJiZ1IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPXUuZm9udEFsaWFzZXN8fD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGVbZF0pe2NvbnN0IHQ9ZVtkXS5hbGlhc1JlZjtpZihmJiZ0JiZ0aGlzLmZvbnRDYWNoZS5oYXModCkpe3RoaXMuZm9udENhY2hlLnB1dEFsaWFzKGMsdCk7cmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChjKX19ZWxzZSBlW2RdPXtmb250SUQ6dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCl9O2YmJihlW2RdLmFsaWFzUmVmPWMpO2c9ZVtkXS5mb250SUR9ZWxzZSBnPXRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpOygwLHIuYXNzZXJ0KShnPy5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7aWYoZil0aGlzLmZvbnRDYWNoZS5wdXQoYyxsLnByb21pc2UpO2Vsc2V7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHtnfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksbC5wcm9taXNlKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtnfWA7dGhpcy50cmFuc2xhdGVGb250KGgpLnRoZW4oKGU9PntsLnJlc29sdmUobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57KDAsci53YXJuKShgbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO2wucmVzb2x2ZShuZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6dC5sb2FkZWROYW1lLGZvbnQ6bmV3IHMuRXJyb3JGb250KGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpO3JldHVybiBsLnByb21pc2V9YnVpbGRQYXRoKGUsdCxhKXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO2NvbnN0IGk9ZS5sZW5ndGgtMTthfHwoYT1bXSk7aWYoaTwwfHxlLmZuQXJyYXlbaV0hPT1yLk9QUy5jb25zdHJ1Y3RQYXRoKXtpZihuKXsoMCxyLndhcm4pKGBFbmNvdW50ZXJlZCBwYXRoIG9wZXJhdG9yICIke3R9IiBpbnNpZGUgb2YgYSB0ZXh0IG9iamVjdC5gKTtlLmFkZE9wKHIuT1BTLnNhdmUsbnVsbCl9bGV0IGk7c3dpdGNoKHQpe2Nhc2Ugci5PUFMucmVjdGFuZ2xlOmNvbnN0IGU9YVswXSthWzJdLHQ9YVsxXSthWzNdO2k9W01hdGgubWluKGFbMF0sZSksTWF0aC5tYXgoYVswXSxlKSxNYXRoLm1pbihhWzFdLHQpLE1hdGgubWF4KGFbMV0sdCldO2JyZWFrO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmk9W2FbMF0sYVswXSxhWzFdLGFbMV1dO2JyZWFrO2RlZmF1bHQ6aT1bMS8wLC0xLzAsMS8wLC0xLzBdfWUuYWRkT3Aoci5PUFMuY29uc3RydWN0UGF0aCxbW3RdLGEsaV0pO24mJmUuYWRkT3Aoci5PUFMucmVzdG9yZSxudWxsKX1lbHNle2NvbnN0IG49ZS5hcmdzQXJyYXlbaV07blswXS5wdXNoKHQpO25bMV0ucHVzaCguLi5hKTtjb25zdCBzPW5bMl07c3dpdGNoKHQpe2Nhc2Ugci5PUFMucmVjdGFuZ2xlOmNvbnN0IGU9YVswXSthWzJdLHQ9YVsxXSthWzNdO3NbMF09TWF0aC5taW4oc1swXSxhWzBdLGUpO3NbMV09TWF0aC5tYXgoc1sxXSxhWzBdLGUpO3NbMl09TWF0aC5taW4oc1syXSxhWzFdLHQpO3NbM109TWF0aC5tYXgoc1szXSxhWzFdLHQpO2JyZWFrO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOnNbMF09TWF0aC5taW4oc1swXSxhWzBdKTtzWzFdPU1hdGgubWF4KHNbMV0sYVswXSk7c1syXT1NYXRoLm1pbihzWzJdLGFbMV0pO3NbM109TWF0aC5tYXgoc1szXSxhWzFdKX19fXBhcnNlQ29sb3JTcGFjZShlKXtsZXR7Y3M6dCxyZXNvdXJjZXM6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufT1lO3JldHVybiB5LkNvbG9yU3BhY2UucGFyc2VBc3luYyh7Y3M6dCx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KS5jYXRjaCgoZT0+e2lmKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpeygwLHIud2FybikoYHBhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpfXBhcnNlU2hhZGluZyhlKXtsZXR7c2hhZGluZzp0LHJlc291cmNlczphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOm59PWUsaT1uLmdldCh0KTtpZighaSl7Y29uc3QgZT1sLlBhdHRlcm4ucGFyc2VTaGFkaW5nKHQsdGhpcy54cmVmLGEsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LHIpLmdldElSKCk7aT1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQmJihpPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7aX1gKTtuLnNldCh0LGkpO3RoaXMucGFyc2luZ1R5cGUzRm9udD90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbaSwiUGF0dGVybiIsZV0pOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtpLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixlXSl9cmV0dXJuIGl9aGFuZGxlQ29sb3JOKGUsdCxhLG4scyxvLGMsaCx1LGQpe2NvbnN0IGY9YS5wb3AoKTtpZihmIGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBnPXMuZ2V0UmF3KGYubmFtZSkscD1nIGluc3RhbmNlb2YgaS5SZWYmJnUuZ2V0QnlSZWYoZyk7aWYocCl0cnl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGwsaT0oMCxsLmdldFRpbGluZ1BhdHRlcm5JUikocC5vcGVyYXRvckxpc3RJUixwLmRpY3Qscik7ZS5hZGRPcCh0LGkpO3JldHVybn1jYXRjaHt9Y29uc3QgYj10aGlzLnhyZWYuZmV0Y2hJZlJlZihnKTtpZihiKXtjb25zdCBpPWIgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0/Yi5kaWN0OmIscz1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihzPT09Uil7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LHIsbyxiLGksZSxjLHUpfWlmKHM9PT1MKXtjb25zdCBhPWkuZ2V0KCJTaGFkaW5nIikscj1pLmdldEFycmF5KCJNYXRyaXgiKSxuPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6aCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6ZH0pO2UuYWRkT3AodCxbIlNoYWRpbmciLG4scl0pO3JldHVybn10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtzfWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtmfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxhKXtpZigrK3Q+MTApeygwLHIud2FybikoIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBuPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZzIGluc3RhbmNlb2YgaS5OYW1lKXtzd2l0Y2gocy5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChzLm5hbWUpO2JyZWFrO2RlZmF1bHQ6KDAsci53YXJuKShgSW52YWxpZCBvcGVyYXRvciAke3MubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8bjtyKyspe2NvbnN0IG49ZVtyXSxzPXRoaXMueHJlZi5mZXRjaElmUmVmKG4pO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24ocyx0LGUpfWVsc2UgbiBpbnN0YW5jZW9mIGkuUmVmJiZhLnB1c2gobi50b1N0cmluZygpKX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgYTtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9ZX1jb25zdCBuPWEuZ2V0KCJUeXBlIikubmFtZTtpZigiT0NHIj09PW4pcmV0dXJue3R5cGU6bixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1uKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBhIG9mIHQpZS5wdXNoKGEudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6bixpZHM6ZSxwb2xpY3k6YS5nZXQoIlAiKWluc3RhbmNlb2YgaS5OYW1lP2EuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIGkuUmVmKXJldHVybnt0eXBlOm4saWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3QoZSl7bGV0e3N0cmVhbTp0LHRhc2s6YSxyZXNvdXJjZXM6bixvcGVyYXRvckxpc3Q6cyxpbml0aWFsU3RhdGU6bz1udWxsLGZhbGxiYWNrRm9udERpY3Q6Yz1udWxsfT1lO258fD1pLkRpY3QuZW1wdHk7b3x8PW5ldyBFdmFsU3RhdGU7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3QgbD10aGlzLGg9dGhpcy54cmVmO2xldCB1PSExO2NvbnN0IGQ9bmV3IGcuTG9jYWxJbWFnZUNhY2hlLGY9bmV3IGcuTG9jYWxDb2xvclNwYWNlQ2FjaGUscD1uZXcgZy5Mb2NhbEdTdGF0ZUNhY2hlLGI9bmV3IGcuTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsdz1uZXcgTWFwLFM9bi5nZXQoIlhPYmplY3QiKXx8aS5EaWN0LmVtcHR5LHg9bi5nZXQoIlBhdHRlcm4iKXx8aS5EaWN0LmVtcHR5LEM9bmV3IFN0YXRlTWFuYWdlcihvKSx2PW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IodCxoLEMpLGs9bmV3IFRpbWVTbG90TWFuYWdlcjtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9di5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspcy5hZGRPcChyLk9QUy5yZXN0b3JlLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUsdCl7Y29uc3QgbmV4dD1mdW5jdGlvbihhKXtQcm9taXNlLmFsbChbYSxzLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSx0KX1jYXRjaChlKXt0KGUpfX0pLHQpfTthLmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtrLnJlc2V0KCk7Y29uc3Qgbz17fTtsZXQgZyxPLFQsTSxFLEQ7Zm9yKDshKGc9ay5jaGVjaygpKTspe28uYXJncz1udWxsO2lmKCF2LnJlYWQobykpYnJlYWs7bGV0IGU9by5hcmdzLHQ9by5mbjtzd2l0Y2goMHx0KXtjYXNlIHIuT1BTLnBhaW50WE9iamVjdDpEPWVbMF1pbnN0YW5jZW9mIGkuTmFtZTtFPWVbMF0ubmFtZTtpZihEKXtjb25zdCB0PWQuZ2V0QnlOYW1lKEUpO2lmKHQpe3MuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtpZighRCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IG89Uy5nZXRSYXcoRSk7aWYobyBpbnN0YW5jZW9mIGkuUmVmKXtjb25zdCB0PWQuZ2V0QnlSZWYobyl8fGwuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5nZXRCeVJlZihvKTtpZih0KXtzLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTtpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudCh0KTtlKCk7cmV0dXJufWNvbnN0IGE9bC5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEobyxsLnBhZ2VJbmRleCk7aWYoYSl7cy5hZGREZXBlbmRlbmN5KGEub2JqSWQpO3MuYWRkSW1hZ2VPcHMoYS5mbixhLmFyZ3MsYS5vcHRpb25hbENvbnRlbnQpO2UoKTtyZXR1cm59bz1oLmZldGNoKG8pfWlmKCEobyBpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgYz1vLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShjIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWMubmFtZSlpZigiSW1hZ2UiIT09Yy5uYW1lKXtpZigiUFMiIT09Yy5uYW1lKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICR7Yy5uYW1lfWApOygwLHIuaW5mbykoIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIik7ZSgpfWVsc2UgbC5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6bixpbWFnZTpvLG9wZXJhdG9yTGlzdDpzLGNhY2hlS2V5OkUsbG9jYWxJbWFnZUNhY2hlOmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pLnRoZW4oZSx0KTtlbHNle0Muc2F2ZSgpO2wuYnVpbGRGb3JtWE9iamVjdChuLG8sbnVsbCxzLGEsQy5zdGF0ZS5jbG9uZSgpLGYpLnRoZW4oKGZ1bmN0aW9uKCl7Qy5yZXN0b3JlKCk7ZSgpfSksdCl9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWwub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRGb250OnZhciBOPWVbMV07bmV4dChsLmhhbmRsZVNldEZvbnQobixlLG51bGwscyxhLEMuc3RhdGUsYykudGhlbigoZnVuY3Rpb24oZSl7cy5hZGREZXBlbmRlbmN5KGUpO3MuYWRkT3Aoci5PUFMuc2V0Rm9udCxbZSxOXSl9KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luVGV4dDp1PSEwO2JyZWFrO2Nhc2Ugci5PUFMuZW5kVGV4dDp1PSExO2JyZWFrO2Nhc2Ugci5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIFI9ZVswXS5jYWNoZUtleTtpZihSKXtjb25zdCB0PWQuZ2V0QnlOYW1lKFIpO2lmKHQpe3MuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChsLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczpuLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OnMsY2FjaGVLZXk6Uixsb2NhbEltYWdlQ2FjaGU6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSkpO3JldHVybjtjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCFDLnN0YXRlLmZvbnQpe2wuZW5zdXJlU3RhdGVGb250KEMuc3RhdGUpO2NvbnRpbnVlfWVbMF09bC5oYW5kbGVUZXh0KGVbMF0sQy5zdGF0ZSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZighQy5zdGF0ZS5mb250KXtsLmVuc3VyZVN0YXRlRm9udChDLnN0YXRlKTtjb250aW51ZX12YXIgTD1bXSxfPUMuc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/TC5wdXNoKC4uLmwuaGFuZGxlVGV4dCh0LF8pKToibnVtYmVyIj09dHlwZW9mIHQmJkwucHVzaCh0KTtlWzBdPUw7dD1yLk9QUy5zaG93VGV4dDticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIUMuc3RhdGUuZm9udCl7bC5lbnN1cmVTdGF0ZUZvbnQoQy5zdGF0ZSk7Y29udGludWV9cy5hZGRPcChyLk9QUy5uZXh0TGluZSk7ZVswXT1sLmhhbmRsZVRleHQoZVswXSxDLnN0YXRlKTt0PXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIUMuc3RhdGUuZm9udCl7bC5lbnN1cmVTdGF0ZUZvbnQoQy5zdGF0ZSk7Y29udGludWV9cy5hZGRPcChyLk9QUy5uZXh0TGluZSk7cy5hZGRPcChyLk9QUy5zZXRXb3JkU3BhY2luZyxbZS5zaGlmdCgpXSk7cy5hZGRPcChyLk9QUy5zZXRDaGFyU3BhY2luZyxbZS5zaGlmdCgpXSk7ZVswXT1sLmhhbmRsZVRleHQoZVswXSxDLnN0YXRlKTt0PXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6Qy5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yU3BhY2U6e2NvbnN0IHQ9eS5Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLGgsZik7aWYodCl7Qy5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQobC5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJihDLnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PXkuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxoLGYpO2lmKHQpe0Muc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQobC5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJihDLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHIuT1BTLnNldEZpbGxDb2xvcjpNPUMuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1NLmdldFJnYihlLDApO3Q9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6TT1DLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1NLmdldFJnYihlLDApO3Q9ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsR3JheTpDLnN0YXRlLmZpbGxDb2xvclNwYWNlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3Q9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTpDLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9eS5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7dD1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxDTVlLQ29sb3I6Qy5zdGF0ZS5maWxsQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9eS5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTt0PXIuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjpDLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9eS5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7dD1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjpDLnN0YXRlLmZpbGxDb2xvclNwYWNlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPXkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOkMuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOk09Qy5zdGF0ZS5maWxsQ29sb3JTcGFjZTtpZigiUGF0dGVybiI9PT1NLm5hbWUpe25leHQobC5oYW5kbGVDb2xvck4ocyxyLk9QUy5zZXRGaWxsQ29sb3JOLGUsTSx4LG4sYSxmLGIsdykpO3JldHVybn1lPU0uZ2V0UmdiKGUsMCk7dD1yLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46TT1DLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09TS5uYW1lKXtuZXh0KGwuaGFuZGxlQ29sb3JOKHMsci5PUFMuc2V0U3Ryb2tlQ29sb3JOLGUsTSx4LG4sYSxmLGIsdykpO3JldHVybn1lPU0uZ2V0UmdiKGUsMCk7dD1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOnZhciBqPW4uZ2V0KCJTaGFkaW5nIik7aWYoIWopdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgVT1qLmdldChlWzBdLm5hbWUpO2lmKCFVKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpO2U9W2wucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlUscmVzb3VyY2VzOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zixsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6d30pXTt0PXIuT1BTLnNoYWRpbmdGaWxsO2JyZWFrO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkQ9ZVswXWluc3RhbmNlb2YgaS5OYW1lO0U9ZVswXS5uYW1lO2lmKEQpe2NvbnN0IHQ9cC5nZXRCeU5hbWUoRSk7aWYodCl7dC5sZW5ndGg+MCYmcy5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIUQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbz1uLmdldCgiRXh0R1N0YXRlIik7aWYoIShvIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgYz1vLmdldChFKTtpZighKGMgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtsLnNldEdTdGF0ZSh7cmVzb3VyY2VzOm4sZ1N0YXRlOmMsb3BlcmF0b3JMaXN0OnMsY2FjaGVLZXk6RSx0YXNrOmEsc3RhdGVNYW5hZ2VyOkMsbG9jYWxHU3RhdGVDYWNoZTpwLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KS50aGVuKGUsdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmNhc2Ugci5PUFMuY3VydmVUbzpjYXNlIHIuT1BTLmN1cnZlVG8yOmNhc2Ugci5PUFMuY3VydmVUbzM6Y2FzZSByLk9QUy5jbG9zZVBhdGg6Y2FzZSByLk9QUy5yZWN0YW5nbGU6bC5idWlsZFBhdGgocyx0LGUsdSk7Y29udGludWU7Y2FzZSByLk9QUy5tYXJrUG9pbnQ6Y2FzZSByLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIHIuT1BTLmJlZ2luQ29tcGF0OmNhc2Ugci5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxyLndhcm4pKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGwucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxuKS50aGVuKChlPT57cy5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWwub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBiZWdpbk1hcmtlZENvbnRlbnRQcm9wczogIiR7ZX0iLmApfX0pKSk7cmV0dXJufWU9W2VbMF0ubmFtZSxlWzFdaW5zdGFuY2VvZiBpLkRpY3Q/ZVsxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudDpjYXNlIHIuT1BTLmVuZE1hcmtlZENvbnRlbnQ6ZGVmYXVsdDppZihudWxsIT09ZSl7Zm9yKE89MCxUPWUubGVuZ3RoO088VCYmIShlW09daW5zdGFuY2VvZiBpLkRpY3QpO08rKyk7aWYoTzxUKXsoMCxyLndhcm4pKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogIit0KTtjb250aW51ZX19fXMuYWRkT3AodCxlKX1pZihnKW5leHQoJCk7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2Nsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoKX19KSl9Z2V0VGV4dENvbnRlbnQoZSl7bGV0e3N0cmVhbTp0LHRhc2s6YSxyZXNvdXJjZXM6bixzdGF0ZU1hbmFnZXI6cz1udWxsLGluY2x1ZGVNYXJrZWRDb250ZW50Om89ITEsc2luazpjLHNlZW5TdHlsZXM6bD1uZXcgU2V0LHZpZXdCb3g6aCxtYXJrZWRDb250ZW50RGF0YTp1PW51bGwsZGlzYWJsZU5vcm1hbGl6YXRpb246ZD0hMX09ZTtufHw9aS5EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO28mJih1fHw9e2xldmVsOjB9KTtjb25zdCBmPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKX0scD17aW5pdGlhbGl6ZWQ6ITEsc3RyOltdLHRvdGFsV2lkdGg6MCx0b3RhbEhlaWdodDowLHdpZHRoOjAsaGVpZ2h0OjAsdmVydGljYWw6ITEscHJldlRyYW5zZm9ybTpudWxsLHRleHRBZHZhbmNlU2NhbGU6MCxzcGFjZUluRmxvd01pbjowLHNwYWNlSW5GbG93TWF4OjAsdHJhY2tpbmdTcGFjZU1pbjoxLzAsbmVnYXRpdmVTcGFjZU1heDotMS8wLG5vdEFTcGFjZTotMS8wLHRyYW5zZm9ybTpudWxsLGZvbnROYW1lOm51bGwsaGFzRU9MOiExfSx5PVsiICIsIiAiXTtsZXQgdz0wO2Z1bmN0aW9uIHNhdmVMYXN0Q2hhcihlKXtjb25zdCB0PSh3KzEpJTIsYT0iICIhPT15W3ddJiYiICI9PT15W3RdO3lbd109ZTt3PXQ7cmV0dXJuIGF9ZnVuY3Rpb24gc2hvdWxkQWRkV2hpdGVwc2FjZSgpe3JldHVybiIgIiE9PXlbd10mJiIgIj09PXlbKHcrMSklMl19ZnVuY3Rpb24gcmVzZXRMYXN0Q2hhcnMoKXt5WzBdPXlbMV09IiAiO3c9MH1jb25zdCBTPXRoaXMseD10aGlzLnhyZWYsQz1bXTtsZXQgdj1udWxsO2NvbnN0IGs9bmV3IGcuTG9jYWxJbWFnZUNhY2hlLE89bmV3IGcuTG9jYWxHU3RhdGVDYWNoZSxUPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IodCx4LHMpO2xldCBNO2Z1bmN0aW9uIHB1c2hXaGl0ZXNwYWNlKGUpe2xldHt3aWR0aDp0PTAsaGVpZ2h0OmE9MCx0cmFuc2Zvcm06cj1wLnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6bj1wLmZvbnROYW1lfT1lO2YuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6dCxoZWlnaHQ6YSx0cmFuc2Zvcm06cixmb250TmFtZTpuLGhhc0VPTDohMX0pfWZ1bmN0aW9uIGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCl7Y29uc3QgZT1NLmZvbnQsdD1bTS5mb250U2l6ZSpNLnRleHRIU2NhbGUsMCwwLE0uZm9udFNpemUsMCxNLnRleHRSaXNlXTtpZihlLmlzVHlwZTNGb250JiYoTS5mb250U2l6ZTw9MXx8ZS5pc0NoYXJCQm94KSYmISgwLHIuaXNBcnJheUVxdWFsKShNLmZvbnRNYXRyaXgsci5GT05UX0lERU5USVRZX01BVFJJWCkpe2NvbnN0IGE9ZS5iYm94WzNdLWUuYmJveFsxXTthPjAmJih0WzNdKj1hKk0uZm9udE1hdHJpeFszXSl9cmV0dXJuIHIuVXRpbC50cmFuc2Zvcm0oTS5jdG0sci5VdGlsLnRyYW5zZm9ybShNLnRleHRNYXRyaXgsdCkpfWZ1bmN0aW9uIGVuc3VyZVRleHRDb250ZW50SXRlbSgpe2lmKHAuaW5pdGlhbGl6ZWQpcmV0dXJuIHA7Y29uc3R7Zm9udDplLGxvYWRlZE5hbWU6dH09TTtpZighbC5oYXModCkpe2wuYWRkKHQpO2Yuc3R5bGVzW3RdPXtmb250RmFtaWx5OmUuZmFsbGJhY2tOYW1lLGFzY2VudDplLmFzY2VudCxkZXNjZW50OmUuZGVzY2VudCx2ZXJ0aWNhbDplLnZlcnRpY2FsfX1wLmZvbnROYW1lPXQ7Y29uc3QgYT1wLnRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2lmKGUudmVydGljYWwpe3Aud2lkdGg9cC50b3RhbFdpZHRoPU1hdGguaHlwb3QoYVswXSxhWzFdKTtwLmhlaWdodD1wLnRvdGFsSGVpZ2h0PTA7cC52ZXJ0aWNhbD0hMH1lbHNle3Aud2lkdGg9cC50b3RhbFdpZHRoPTA7cC5oZWlnaHQ9cC50b3RhbEhlaWdodD1NYXRoLmh5cG90KGFbMl0sYVszXSk7cC52ZXJ0aWNhbD0hMX1jb25zdCByPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSxuPU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pO3AudGV4dEFkdmFuY2VTY2FsZT1uKnI7Y29uc3R7Zm9udFNpemU6aX09TTtwLnRyYWNraW5nU3BhY2VNaW49LjEwMippO3Aubm90QVNwYWNlPS4wMyppO3AubmVnYXRpdmVTcGFjZU1heD0tLjIqaTtwLnNwYWNlSW5GbG93TWluPS4xMDIqaTtwLnNwYWNlSW5GbG93TWF4PS42Kmk7cC5oYXNFT0w9ITE7cC5pbml0aWFsaXplZD0hMDtyZXR1cm4gcH1mdW5jdGlvbiB1cGRhdGVBZHZhbmNlU2NhbGUoKXtpZighcC5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgZT1NYXRoLmh5cG90KE0udGV4dExpbmVNYXRyaXhbMF0sTS50ZXh0TGluZU1hdHJpeFsxXSksdD1NYXRoLmh5cG90KE0uY3RtWzBdLE0uY3RtWzFdKSplO2lmKHQhPT1wLnRleHRBZHZhbmNlU2NhbGUpe2lmKHAudmVydGljYWwpe3AudG90YWxIZWlnaHQrPXAuaGVpZ2h0KnAudGV4dEFkdmFuY2VTY2FsZTtwLmhlaWdodD0wfWVsc2V7cC50b3RhbFdpZHRoKz1wLndpZHRoKnAudGV4dEFkdmFuY2VTY2FsZTtwLndpZHRoPTB9cC50ZXh0QWR2YW5jZVNjYWxlPXR9fWZ1bmN0aW9uIGhhbmRsZVNldEZvbnQoZSx0KXtyZXR1cm4gUy5sb2FkRm9udChlLHQsbikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9udC5pc1R5cGUzRm9udD9lLmxvYWRUeXBlM0RhdGEoUyxuLGEpLmNhdGNoKChmdW5jdGlvbigpe30pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlfSkpOmV9KSkudGhlbigoZnVuY3Rpb24oZSl7TS5sb2FkZWROYW1lPWUubG9hZGVkTmFtZTtNLmZvbnQ9ZS5mb250O00uZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9yLChhWzJdKmUrYVszXSp0KS9yXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbihlKXtjb25zdCB0PWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7bGV0IGE9dFs0XSxyPXRbNV07aWYoTS5mb250Py52ZXJ0aWNhbCl7aWYoYTxoWzBdfHxhPmhbMl18fHIrZTxoWzFdfHxyPmhbM10pcmV0dXJuITF9ZWxzZSBpZihhK2U8aFswXXx8YT5oWzJdfHxyPGhbMV18fHI+aFszXSlyZXR1cm4hMTtpZighTS5mb250fHwhcC5wcmV2VHJhbnNmb3JtKXJldHVybiEwO2xldCBuPXAucHJldlRyYW5zZm9ybVs0XSxpPXAucHJldlRyYW5zZm9ybVs1XTtpZihuPT09YSYmaT09PXIpcmV0dXJuITA7bGV0IHM9LTE7dFswXSYmMD09PXRbMV0mJjA9PT10WzJdP3M9dFswXT4wPzA6MTgwOnRbMV0mJjA9PT10WzBdJiYwPT09dFszXSYmKHM9dFsxXT4wPzkwOjI3MCk7c3dpdGNoKHMpe2Nhc2UgMDpicmVhaztjYXNlIDkwOlthLHJdPVtyLGFdO1tuLGldPVtpLG5dO2JyZWFrO2Nhc2UgMTgwOlthLHIsbixpXT1bLWEsLXIsLW4sLWldO2JyZWFrO2Nhc2UgMjcwOlthLHJdPVstciwtYV07W24saV09Wy1pLC1uXTticmVhaztkZWZhdWx0OlthLHJdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGEscix0KTtbbixpXT1hcHBseUludmVyc2VSb3RhdGlvbihuLGkscC5wcmV2VHJhbnNmb3JtKX1pZihNLmZvbnQudmVydGljYWwpe2NvbnN0IGU9KGktcikvcC50ZXh0QWR2YW5jZVNjYWxlLHQ9YS1uLHM9TWF0aC5zaWduKHAuaGVpZ2h0KTtpZihlPHMqcC5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyh0KT4uNSpwLndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnModCk+cC53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9ZTw9cypwLm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihlPD1zKnAudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSBwLmhlaWdodCs9ZTtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGUscC5wcmV2VHJhbnNmb3JtLHMpKWlmKDA9PT1wLnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2UgcC5oZWlnaHQrPWU7TWF0aC5hYnModCk+LjI1KnAud2lkdGgmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9Y29uc3Qgbz0oYS1uKS9wLnRleHRBZHZhbmNlU2NhbGUsYz1yLWksbD1NYXRoLnNpZ24ocC53aWR0aCk7aWYobzxsKnAubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnMoYyk+LjUqcC5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhjKT5wLmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9bzw9bCpwLm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihvPD1sKnAudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIHAud2lkdGgrPW87ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhvLHAucHJldlRyYW5zZm9ybSxsKSlpZigwPT09cC5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgcC53aWR0aCs9bztNYXRoLmFicyhjKT4uMjUqcC5oZWlnaHQmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9ZnVuY3Rpb24gYnVpbGRUZXh0Q29udGVudEl0ZW0oZSl7bGV0e2NoYXJzOnQsZXh0cmFTcGFjaW5nOmF9PWU7Y29uc3Qgcj1NLmZvbnQ7aWYoIXQpe2NvbnN0IGU9TS5jaGFyU3BhY2luZythO2UmJihyLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpNLnRleHRIU2NhbGUsMCkpO3JldHVybn1jb25zdCBuPXIuY2hhcnNUb0dseXBocyh0KSxpPU0uZm9udE1hdHJpeFswXSpNLmZvbnRTaXplO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgcz1uW2VdLHtjYXRlZ29yeTpvfT1zO2lmKG8uaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBjPU0uY2hhclNwYWNpbmcrKGUrMT09PXQ/YTowKSxsPXMud2lkdGg7ci52ZXJ0aWNhbCYmKGw9cy52bWV0cmljP3Mudm1ldHJpY1swXTotbCk7bGV0IGg9bCppO2lmKG8uaXNXaGl0ZXNwYWNlKXtpZihyLnZlcnRpY2FsKXtjKz0taCtNLndvcmRTcGFjaW5nO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1jKX1lbHNle2MrPWgrTS53b3JkU3BhY2luZztNLnRyYW5zbGF0ZVRleHRNYXRyaXgoYypNLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIW8uaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbihoKSl7ci52ZXJ0aWNhbD9NLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxoKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoaCpNLnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtvLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYoaD0wKTtpZihyLnZlcnRpY2FsKXtNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxoKTtoPU1hdGguYWJzKGgpO3UuaGVpZ2h0Kz1ofWVsc2V7aCo9TS50ZXh0SFNjYWxlO00udHJhbnNsYXRlVGV4dE1hdHJpeChoLDApO3Uud2lkdGgrPWh9aCYmKHUucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtjb25zdCBkPXMudW5pY29kZTtzYXZlTGFzdENoYXIoZCkmJnUuc3RyLnB1c2goIiAiKTt1LnN0ci5wdXNoKGQpO2MmJihyLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1jKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoYypNLnRleHRIU2NhbGUsMCkpfX1mdW5jdGlvbiBhcHBlbmRFT0woKXtyZXNldExhc3RDaGFycygpO2lmKHAuaW5pdGlhbGl6ZWQpe3AuaGFzRU9MPSEwO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCl9ZWxzZSBmLml0ZW1zLnB1c2goe3N0cjoiIixkaXI6Imx0ciIsd2lkdGg6MCxoZWlnaHQ6MCx0cmFuc2Zvcm06Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpNLmxvYWRlZE5hbWUsaGFzRU9MOiEwfSl9ZnVuY3Rpb24gYWRkRmFrZVNwYWNlcyhlLHQsYSl7aWYoYSpwLnNwYWNlSW5GbG93TWluPD1lJiZlPD1hKnAuc3BhY2VJbkZsb3dNYXgpe2lmKHAuaW5pdGlhbGl6ZWQpe3Jlc2V0TGFzdENoYXJzKCk7cC5zdHIucHVzaCgiICIpfXJldHVybiExfWNvbnN0IHI9cC5mb250TmFtZTtsZXQgbj0wO2lmKHAudmVydGljYWwpe249ZTtlPTB9Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhlKSxoZWlnaHQ6TWF0aC5hYnMobiksdHJhbnNmb3JtOnR8fGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksZm9udE5hbWU6cn0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYocC5pbml0aWFsaXplZCYmcC5zdHIpe3AudmVydGljYWw/cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlOnAudG90YWxXaWR0aCs9cC53aWR0aCpwLnRleHRBZHZhbmNlU2NhbGU7Zi5pdGVtcy5wdXNoKGZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7bGV0IHQ9ZS5zdHIuam9pbigiIik7ZHx8KHQ9KDAsci5ub3JtYWxpemVVbmljb2RlKSh0KSk7Y29uc3QgYT0oMCxiLmJpZGkpKHQsLTEsZS52ZXJ0aWNhbCk7cmV0dXJue3N0cjphLnN0cixkaXI6YS5kaXIsd2lkdGg6TWF0aC5hYnMoZS50b3RhbFdpZHRoKSxoZWlnaHQ6TWF0aC5hYnMoZS50b3RhbEhlaWdodCksdHJhbnNmb3JtOmUudHJhbnNmb3JtLGZvbnROYW1lOmUuZm9udE5hbWUsaGFzRU9MOmUuaGFzRU9MfX0ocCkpO3AuaW5pdGlhbGl6ZWQ9ITE7cC5zdHIubGVuZ3RoPTB9fWZ1bmN0aW9uIGVucXVldWVDaHVuaygpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07Y29uc3QgdD1mLml0ZW1zLmxlbmd0aDtpZigwIT09dCYmIShlJiZ0PDEwKSl7Yy5lbnF1ZXVlKGYsdCk7Zi5pdGVtcz1bXTtmLnN0eWxlcz1PYmplY3QuY3JlYXRlKG51bGwpfX1jb25zdCBFPW5ldyBUaW1lU2xvdE1hbmFnZXI7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLHQpe2NvbnN0IG5leHQ9ZnVuY3Rpb24oYSl7ZW5xdWV1ZUNodW5rKCEwKTtQcm9taXNlLmFsbChbYSxjLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSx0KX1jYXRjaChlKXt0KGUpfX0pLHQpfTthLmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtFLnJlc2V0KCk7Y29uc3QgZz17fTtsZXQgcCxiPVtdO2Zvcig7IShwPUUuY2hlY2soKSk7KXtiLmxlbmd0aD0wO2cuYXJncz1iO2lmKCFULnJlYWQoZykpYnJlYWs7Y29uc3QgZT1NO009cy5zdGF0ZTtjb25zdCB0PWcuZm47Yj1nLmFyZ3M7c3dpdGNoKDB8dCl7Y2FzZSByLk9QUy5zZXRGb250OnZhciB5PWJbMF0ubmFtZSx3PWJbMV07aWYoTS5mb250JiZ5PT09TS5mb250TmFtZSYmdz09PU0uZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPXk7TS5mb250U2l6ZT13O25leHQoaGFuZGxlU2V0Rm9udCh5LG51bGwpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRUZXh0UmlzZTpNLnRleHRSaXNlPWJbMF07YnJlYWs7Y2FzZSByLk9QUy5zZXRIU2NhbGU6TS50ZXh0SFNjYWxlPWJbMF0vMTAwO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZzpNLmxlYWRpbmc9YlswXTticmVhaztjYXNlIHIuT1BTLm1vdmVUZXh0Ok0udHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoYlswXSxiWzFdKTtNLnRleHRNYXRyaXg9TS50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0Ok0ubGVhZGluZz0tYlsxXTtNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGJbMF0sYlsxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lOk0uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIHIuT1BTLnNldFRleHRNYXRyaXg6TS5zZXRUZXh0TWF0cml4KGJbMF0sYlsxXSxiWzJdLGJbM10sYls0XSxiWzVdKTtNLnNldFRleHRMaW5lTWF0cml4KGJbMF0sYlsxXSxiWzJdLGJbM10sYls0XSxiWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIHIuT1BTLnNldENoYXJTcGFjaW5nOk0uY2hhclNwYWNpbmc9YlswXTticmVhaztjYXNlIHIuT1BTLnNldFdvcmRTcGFjaW5nOk0ud29yZFNwYWNpbmc9YlswXTticmVhaztjYXNlIHIuT1BTLmJlZ2luVGV4dDpNLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTtNLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZighcy5zdGF0ZS5mb250KXtTLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1jb25zdCB0PShNLmZvbnQudmVydGljYWw/MTotMSkqTS5mb250U2l6ZS8xZTMsZz1iWzBdO2ZvcihsZXQgZT0wLGE9Zy5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT1nW2VdO2lmKCJzdHJpbmciPT10eXBlb2YgYSlDLnB1c2goYSk7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGEmJjAhPT1hKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6YSp0fSl9fWlmKEMubGVuZ3RoPjApe2NvbnN0IGU9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzowfSl9YnJlYWs7Y2FzZSByLk9QUy5zaG93VGV4dDppZighcy5zdGF0ZS5mb250KXtTLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1idWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6YlswXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTaG93VGV4dDppZighcy5zdGF0ZS5mb250KXtTLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1NLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmJbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OmlmKCFzLnN0YXRlLmZvbnQpe1MuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfU0ud29yZFNwYWNpbmc9YlswXTtNLmNoYXJTcGFjaW5nPWJbMV07TS5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpiWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSByLk9QUy5wYWludFhPYmplY3Q6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTt2fHwodj1uLmdldCgiWE9iamVjdCIpfHxpLkRpY3QuZW1wdHkpO3ZhciBEPWJbMF1pbnN0YW5jZW9mIGkuTmFtZSxOPWJbMF0ubmFtZTtpZihEJiZrLmdldEJ5TmFtZShOKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2lmKCFEKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgZj12LmdldFJhdyhOKTtpZihmIGluc3RhbmNlb2YgaS5SZWYpe2lmKGsuZ2V0QnlSZWYoZikpe2UoKTtyZXR1cm59aWYoUy5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEoZixTLnBhZ2VJbmRleCkpe2UoKTtyZXR1cm59Zj14LmZldGNoKGYpfWlmKCEoZiBpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgZz1mLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShnIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWcubmFtZSl7ay5zZXQoTixmLmRpY3Qub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3QgcD1zLnN0YXRlLmNsb25lKCksYj1uZXcgU3RhdGVNYW5hZ2VyKHApLHk9Zi5kaWN0LmdldEFycmF5KCJNYXRyaXgiKTtBcnJheS5pc0FycmF5KHkpJiY2PT09eS5sZW5ndGgmJmIudHJhbnNmb3JtKHkpO2VucXVldWVDaHVuaygpO2NvbnN0IHc9e2VucXVldWVJbnZva2VkOiExLGVucXVldWUoZSx0KXt0aGlzLmVucXVldWVJbnZva2VkPSEwO2MuZW5xdWV1ZShlLHQpfSxnZXQgZGVzaXJlZFNpemUoKXtyZXR1cm4gYy5kZXNpcmVkU2l6ZX0sZ2V0IHJlYWR5KCl7cmV0dXJuIGMucmVhZHl9fTtTLmdldFRleHRDb250ZW50KHtzdHJlYW06Zix0YXNrOmEscmVzb3VyY2VzOmYuZGljdC5nZXQoIlJlc291cmNlcyIpfHxuLHN0YXRlTWFuYWdlcjpiLGluY2x1ZGVNYXJrZWRDb250ZW50Om8sc2luazp3LHNlZW5TdHlsZXM6bCx2aWV3Qm94OmgsbWFya2VkQ29udGVudERhdGE6dSxkaXNhYmxlTm9ybWFsaXphdGlvbjpkfSkudGhlbigoZnVuY3Rpb24oKXt3LmVucXVldWVJbnZva2VkfHxrLnNldChOLGYuZGljdC5vYmpJZCwhMCk7ZSgpfSksdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighUy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkQ9YlswXWluc3RhbmNlb2YgaS5OYW1lO049YlswXS5uYW1lO2lmKEQmJk8uZ2V0QnlOYW1lKE4pKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIUQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3QgYT1uLmdldCgiRXh0R1N0YXRlIik7aWYoIShhIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1hLmdldChOKTtpZighKHMgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPXMuZ2V0KCJGb250Iik7aWYobyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPW51bGw7TS5mb250U2l6ZT1vWzFdO2hhbmRsZVNldEZvbnQobnVsbCxvWzBdKS50aGVuKGUsdCl9ZWxzZXtPLnNldChOLHMub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighUy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihvKXt1LmxldmVsKys7Zi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzpiWzBdaW5zdGFuY2VvZiBpLk5hbWU/YlswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7dS5sZXZlbCsrO2xldCBlPW51bGw7YlsxXWluc3RhbmNlb2YgaS5EaWN0JiYoZT1iWzFdLmdldCgiTUNJRCIpKTtmLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudFByb3BzIixpZDpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake1MuaWRGYWN0b3J5LmdldFBhZ2VPYmpJZCgpfV9tYyR7ZX1gOm51bGwsdGFnOmJbMF1pbnN0YW5jZW9mIGkuTmFtZT9iWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2Ugci5PUFMuZW5kTWFya2VkQ29udGVudDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG8pe2lmKDA9PT11LmxldmVsKWJyZWFrO3UubGV2ZWwtLTtmLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSByLk9QUy5yZXN0b3JlOiFlfHxlLmZvbnQ9PT1NLmZvbnQmJmUuZm9udFNpemU9PT1NLmZvbnRTaXplJiZlLmZvbnROYW1lPT09TS5mb250TmFtZXx8Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1pZihmLml0ZW1zLmxlbmd0aD49Yy5kZXNpcmVkU2l6ZSl7cD0hMDticmVha319aWYocCluZXh0KCQpO2Vsc2V7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKTtlKCl9fSkpLmNhdGNoKChlPT57aWYoIShlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke2EubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pKX1leHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0LGEpe2NvbnN0IG49dGhpcy54cmVmO2xldCBzO2NvbnN0IGw9dGhpcy5yZWFkVG9Vbmljb2RlKGEudG9Vbmljb2RlfHxlLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKSk7aWYoYS5jb21wb3NpdGUpe2NvbnN0IHQ9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTt0IGluc3RhbmNlb2YgaS5EaWN0JiYoYS5jaWRTeXN0ZW1JbmZvPXtyZWdpc3RyeTooMCxyLnN0cmluZ1RvUERGU3RyaW5nKSh0LmdldCgiUmVnaXN0cnkiKSksb3JkZXJpbmc6KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIk9yZGVyaW5nIikpLHN1cHBsZW1lbnQ6dC5nZXQoIlN1cHBsZW1lbnQiKX0pO3RyeXtjb25zdCB0PWUuZ2V0KCJDSURUb0dJRE1hcCIpO3QgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0mJihzPXQuZ2V0Qnl0ZXMoKSl9Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxyLndhcm4pKGBleHRyYWN0RGF0YVN0cnVjdHVyZXMgLSBpZ25vcmluZyBDSURUb0dJRE1hcCBkYXRhOiAiJHtlfSIuYCl9fWNvbnN0IGg9W107bGV0IHUsZD1udWxsO2lmKGUuaGFzKCJFbmNvZGluZyIpKXt1PWUuZ2V0KCJFbmNvZGluZyIpO2lmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe2Q9dS5nZXQoIkJhc2VFbmNvZGluZyIpO2Q9ZCBpbnN0YW5jZW9mIGkuTmFtZT9kLm5hbWU6bnVsbDtpZih1LmhhcygiRGlmZmVyZW5jZXMiKSl7Y29uc3QgZT11LmdldCgiRGlmZmVyZW5jZXMiKTtsZXQgdD0wO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9bi5mZXRjaElmUmVmKGEpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtoW3QrK109ZS5uYW1lfX19fWVsc2UgaWYodSBpbnN0YW5jZW9mIGkuTmFtZSlkPXUubmFtZTtlbHNle2NvbnN0IGU9IkVuY29kaW5nIGlzIG5vdCBhIE5hbWUgbm9yIGEgRGljdCI7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoZSk7KDAsci53YXJuKShlKX0iTWFjUm9tYW5FbmNvZGluZyIhPT1kJiYiTWFjRXhwZXJ0RW5jb2RpbmciIT09ZCYmIldpbkFuc2lFbmNvZGluZyIhPT1kJiYoZD1udWxsKX1jb25zdCBmPSFhLmZpbGV8fGEuaXNJbnRlcm5hbEZvbnQsZz0oMCxjLmdldFN5bWJvbHNGb250cykoKVthLm5hbWVdO2QmJmYmJmcmJihkPW51bGwpO2lmKGQpYS5kZWZhdWx0RW5jb2Rpbmc9KDAsby5nZXRFbmNvZGluZykoZCk7ZWxzZXtjb25zdCBlPSEhKGEuZmxhZ3MmUy5Gb250RmxhZ3MuU3ltYm9saWMpLHQ9ISEoYS5mbGFncyZTLkZvbnRGbGFncy5Ob25zeW1ib2xpYyk7dT1vLlN0YW5kYXJkRW5jb2Rpbmc7IlRydWVUeXBlIiE9PWEudHlwZXx8dHx8KHU9by5XaW5BbnNpRW5jb2RpbmcpO2lmKGV8fGcpe3U9by5NYWNSb21hbkVuY29kaW5nO2YmJigvU3ltYm9sL2kudGVzdChhLm5hbWUpP3U9by5TeW1ib2xTZXRFbmNvZGluZzovRGluZ2JhdHMvaS50ZXN0KGEubmFtZSk/dT1vLlphcGZEaW5nYmF0c0VuY29kaW5nOi9XaW5nZGluZ3MvaS50ZXN0KGEubmFtZSkmJih1PW8uV2luQW5zaUVuY29kaW5nKSl9YS5kZWZhdWx0RW5jb2Rpbmc9dX1hLmRpZmZlcmVuY2VzPWg7YS5iYXNlRW5jb2RpbmdOYW1lPWQ7YS5oYXNFbmNvZGluZz0hIWR8fGgubGVuZ3RoPjA7YS5kaWN0PWU7cmV0dXJuIGwudGhlbigoZT0+e2EudG9Vbmljb2RlPWU7cmV0dXJuIHRoaXMuYnVpbGRUb1VuaWNvZGUoYSl9KSkudGhlbigoZT0+e2EudG9Vbmljb2RlPWU7cyYmKGEuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAocyxlKSk7cmV0dXJuIGF9KSl9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTsoMCxyLmFzc2VydCkoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgYT1bXSxuPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCksaT1lLmJhc2VFbmNvZGluZ05hbWUscz1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXTsiLm5vdGRlZiIhPT10JiYobltlXT10KX1jb25zdCBjPSgwLEMuZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgciBpbiBuKXtsZXQgcz1uW3JdO2lmKCIiPT09cyljb250aW51ZTtsZXQgbD1jW3NdO2lmKHZvaWQgMCE9PWwpe2Fbcl09U3RyaW5nLmZyb21DaGFyQ29kZShsKTtjb250aW51ZX1sZXQgaD0wO3N3aXRjaChzWzBdKXtjYXNlIkciOjM9PT1zLmxlbmd0aCYmKGg9cGFyc2VJbnQocy5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlImciOjU9PT1zLmxlbmd0aCYmKGg9cGFyc2VJbnQocy5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlIkMiOmNhc2UiYyI6aWYocy5sZW5ndGg+PTMmJnMubGVuZ3RoPD00KXtjb25zdCBhPXMuc3Vic3RyaW5nKDEpO2lmKHQpe2g9cGFyc2VJbnQoYSwxNik7YnJlYWt9aD0rYTtpZihOdW1iZXIuaXNOYU4oaCkmJk51bWJlci5pc0ludGVnZXIocGFyc2VJbnQoYSwxNikpKXJldHVybiB0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUsITApfWJyZWFrO2Nhc2UidSI6bD0oMCxPLmdldFVuaWNvZGVGb3JHbHlwaCkocyxjKTstMSE9PWwmJihoPWwpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKHMpe2Nhc2UiZl9oIjpjYXNlImZfdCI6Y2FzZSJUX2giOmFbcl09cy5yZXBsYWNlQWxsKCJfIiwiIik7Y29udGludWV9fWlmKGg+MCYmaDw9MTExNDExMSYmTnVtYmVyLmlzSW50ZWdlcihoKSl7aWYoaSYmaD09PStyKXtjb25zdCBlPSgwLG8uZ2V0RW5jb2RpbmcpKGkpO2lmKGUmJihzPWVbcl0pKXthW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoY1tzXSk7Y29udGludWV9fWFbcl09U3RyaW5nLmZyb21Db2RlUG9pbnQoaCl9fXJldHVybiBhfWFzeW5jIGJ1aWxkVG9Vbmljb2RlKGUpe2UuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXA9ZS50b1VuaWNvZGU/Lmxlbmd0aD4wO2lmKGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXApeyFlLmNvbXBvc2l0ZSYmZS5oYXNFbmNvZGluZyYmKGUuZmFsbGJhY2tUb1VuaWNvZGU9dGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7cmV0dXJuIGUudG9Vbmljb2RlfWlmKCFlLmNvbXBvc2l0ZSlyZXR1cm4gbmV3IHUuVG9Vbmljb2RlTWFwKHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO2lmKGUuY29tcG9zaXRlJiYoZS5jTWFwLmJ1aWx0SW5DTWFwJiYhKGUuY01hcCBpbnN0YW5jZW9mIG4uSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mby5yZWdpc3RyeSYmKCJHQjEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiQ05TMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJKYXBhbjEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiS29yZWExIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZykpKXtjb25zdHtyZWdpc3RyeTp0LG9yZGVyaW5nOmF9PWUuY2lkU3lzdGVtSW5mbyxzPWkuTmFtZS5nZXQoYCR7dH0tJHthfS1VQ1MyYCksbz1hd2FpdCBuLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6cyxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxjPVtdLGw9W107ZS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2NvbnN0IGE9by5sb29rdXAodCk7aWYoYSl7bC5sZW5ndGg9MDtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKWwucHVzaCgoYS5jaGFyQ29kZUF0KGUpPDw4KSthLmNoYXJDb2RlQXQoZSsxKSk7Y1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmwpfX0pKTtyZXR1cm4gbmV3IHUuVG9Vbmljb2RlTWFwKGMpfXJldHVybiBuZXcgdS5JZGVudGl0eVRvVW5pY29kZU1hcChlLmZpcnN0Q2hhcixlLmxhc3RDaGFyKX1yZWFkVG9Vbmljb2RlKGUpe3JldHVybiBlP2UgaW5zdGFuY2VvZiBpLk5hbWU/bi5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcD9uZXcgdS5JZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTpuZXcgdS5Ub1VuaWNvZGVNYXAoZS5nZXRNYXAoKSl9KSk6ZSBpbnN0YW5jZW9mIG0uQmFzZVN0cmVhbT9uLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KS50aGVuKChmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2Ygbi5JZGVudGl0eUNNYXApcmV0dXJuIG5ldyB1LklkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpO2NvbnN0IHQ9bmV3IEFycmF5KGUubGVuZ3RoKTtlLmZvckVhY2goKGZ1bmN0aW9uKGUsYSl7aWYoIm51bWJlciI9PXR5cGVvZiBhKXt0W2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KGEpO3JldHVybn1jb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSs9Mil7Y29uc3QgdD1hLmNoYXJDb2RlQXQoZSk8PDh8YS5jaGFyQ29kZUF0KGUrMSk7aWYoNTUyOTYhPSg2MzQ4OCZ0KSl7ci5wdXNoKHQpO2NvbnRpbnVlfWUrPTI7Y29uc3Qgbj1hLmNoYXJDb2RlQXQoZSk8PDh8YS5jaGFyQ29kZUF0KGUrMSk7ci5wdXNoKCgoMTAyMyZ0KTw8MTApKygxMDIzJm4pKzY1NTM2KX10W2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KC4uLnIpfSkpO3JldHVybiBuZXcgdS5Ub1VuaWNvZGVNYXAodCl9KSwoZT0+e2lmKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpeygwLHIud2FybikoYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpOlByb21pc2UucmVzb2x2ZShudWxsKX1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lW3IrK108PDh8ZVtyXSxpPXI+PjE7KDAhPT1ufHx0LmhhcyhpKSkmJihhW2ldPW4pfXJldHVybiBhfWV4dHJhY3RXaWR0aHMoZSx0LGEpe2NvbnN0IHI9dGhpcy54cmVmO2xldCBuPVtdLHM9MDtjb25zdCBvPVtdO2xldCBjLGwsaCx1LGQsZixnLHA7aWYoYS5jb21wb3NpdGUpe3M9ZS5oYXMoIkRXIik/ZS5nZXQoIkRXIik6MWUzO3A9ZS5nZXQoIlciKTtpZihwKWZvcihsPTAsaD1wLmxlbmd0aDtsPGg7bCsrKXtmPXIuZmV0Y2hJZlJlZihwW2wrK10pO2c9ci5mZXRjaElmUmVmKHBbbF0pO2lmKEFycmF5LmlzQXJyYXkoZykpZm9yKHU9MCxkPWcubGVuZ3RoO3U8ZDt1KyspbltmKytdPXIuZmV0Y2hJZlJlZihnW3VdKTtlbHNle2NvbnN0IGU9ci5mZXRjaElmUmVmKHBbKytsXSk7Zm9yKHU9Zjt1PD1nO3UrKyluW3VdPWV9fWlmKGEudmVydGljYWwpe2xldCB0PWUuZ2V0QXJyYXkoIkRXMiIpfHxbODgwLC0xZTNdO2M9W3RbMV0sLjUqcyx0WzBdXTt0PWUuZ2V0KCJXMiIpO2lmKHQpZm9yKGw9MCxoPXQubGVuZ3RoO2w8aDtsKyspe2Y9ci5mZXRjaElmUmVmKHRbbCsrXSk7Zz1yLmZldGNoSWZSZWYodFtsXSk7aWYoQXJyYXkuaXNBcnJheShnKSlmb3IodT0wLGQ9Zy5sZW5ndGg7dTxkO3UrKylvW2YrK109W3IuZmV0Y2hJZlJlZihnW3UrK10pLHIuZmV0Y2hJZlJlZihnW3UrK10pLHIuZmV0Y2hJZlJlZihnW3VdKV07ZWxzZXtjb25zdCBlPVtyLmZldGNoSWZSZWYodFsrK2xdKSxyLmZldGNoSWZSZWYodFsrK2xdKSxyLmZldGNoSWZSZWYodFsrK2xdKV07Zm9yKHU9Zjt1PD1nO3UrKylvW3VdPWV9fX19ZWxzZXtjb25zdCBvPWEuZmlyc3RDaGFyO3A9ZS5nZXQoIldpZHRocyIpO2lmKHApe3U9bztmb3IobD0wLGg9cC5sZW5ndGg7bDxoO2wrKyluW3UrK109ci5mZXRjaElmUmVmKHBbbF0pO3M9cGFyc2VGbG9hdCh0LmdldCgiTWlzc2luZ1dpZHRoIikpfHwwfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7bj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgbT0hMCxiPXM7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO2lmKHQpaWYoYil7aWYoYiE9PXQpe209ITE7YnJlYWt9fWVsc2UgYj10fW0/YS5mbGFnc3w9Uy5Gb250RmxhZ3MuRml4ZWRQaXRjaDphLmZsYWdzJj1+Uy5Gb250RmxhZ3MuRml4ZWRQaXRjaDthLmRlZmF1bHRXaWR0aD1zO2Eud2lkdGhzPW47YS5kZWZhdWx0Vk1ldHJpY3M9YzthLnZtZXRyaWNzPW99aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxjLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBuPSgwLGMuZ2V0U3RkRm9udE1hcCkoKVtlXXx8ZTtjb25zdCBpPSgwLGsuZ2V0TWV0cmljcykoKTtuIGluIGl8fChuPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgcz1pW25dO2lmKCJudW1iZXIiPT10eXBlb2Ygcyl7dD1zO3I9ITB9ZWxzZSBhPXMoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOnIsd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9dC5kaWZmZXJlbmNlcyxuPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIHImJmVbclt0XV0/YVt0XT1lW3JbdF1dOnQgaW4gbiYmZVtuW3RdXSYmKGFbdF09ZVtuW3RdXSk7cmV0dXJuIGF9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgYT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bGV0IG4scyxvPSExO2lmKCJUeXBlMCI9PT1hLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTthPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtvPSEwfWNvbnN0IGM9ZS5nZXQoIkZpcnN0Q2hhciIpfHwwLGw9ZS5nZXQoIkxhc3RDaGFyIil8fChvPzY1NTM1OjI1NSksaD1lLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZihoKXtuPW5ldyBNLk11cm11ckhhc2gzXzY0O2NvbnN0IGE9dC5nZXRSYXcoIkVuY29kaW5nIik7aWYoYSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShhLm5hbWUpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgaS5EaWN0KWZvcihjb25zdCBlIG9mIGEuZ2V0UmF3VmFsdWVzKCkpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgaS5OYW1lP2Fbcl09dC5uYW1lOigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZikmJihhW3JdPXQudG9TdHJpbmcoKSl9bi51cGRhdGUoYS5qb2luKCkpfW4udXBkYXRlKGAke2N9LSR7bH1gKTtzPWUuZ2V0KCJUb1VuaWNvZGUiKXx8dC5nZXQoIlRvVW5pY29kZSIpO2lmKHMgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0pe2NvbnN0IGU9cy5zdHJ8fHMsdD1lLmJ1ZmZlcj9uZXcgVWludDhBcnJheShlLmJ1ZmZlci5idWZmZXIsMCxlLmJ1ZmZlckxlbmd0aCk6bmV3IFVpbnQ4QXJyYXkoZS5ieXRlcy5idWZmZXIsZS5zdGFydCxlLmVuZC1lLnN0YXJ0KTtuLnVwZGF0ZSh0KX1lbHNlIHMgaW5zdGFuY2VvZiBpLk5hbWUmJm4udXBkYXRlKHMubmFtZSk7Y29uc3Qgcj1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGkuUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7bi51cGRhdGUoZS5qb2luKCkpfWlmKG8pe24udXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgb2YgdCkoIm51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgaS5SZWYpJiZhLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2Euam9pbigpfV1gKX1uLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIGkuTmFtZT9uLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBpLlJlZj9uLnVwZGF0ZShyLnRvU3RyaW5nKCkpOnIgaW5zdGFuY2VvZiBtLkJhc2VTdHJlYW0mJm4udXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpoLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpvLHR5cGU6YS5uYW1lLGZpcnN0Q2hhcjpjLGxhc3RDaGFyOmwsdG9Vbmljb2RlOnMsaGFzaDpuP24uaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoZSl7bGV0e2Rlc2NyaXB0b3I6dCxkaWN0OmEsYmFzZURpY3Q6byxjb21wb3NpdGU6bCx0eXBlOnUsZmlyc3RDaGFyOmQsbGFzdENoYXI6Zix0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzptfT1lO2NvbnN0IGI9IlR5cGUzIj09PXU7bGV0IHk7aWYoIXQpe2lmKCFiKXtsZXQgZT1hLmdldCgiQmFzZUZvbnQiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IHQ9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSksbj1lLnNwbGl0KCItIilbMF0sbD0odGhpcy5pc1NlcmlmRm9udChuKT9TLkZvbnRGbGFncy5TZXJpZjowKXwodC5tb25vc3BhY2U/Uy5Gb250RmxhZ3MuRml4ZWRQaXRjaDowKXwoKDAsYy5nZXRTeW1ib2xzRm9udHMpKClbbl0/Uy5Gb250RmxhZ3MuU3ltYm9saWM6Uy5Gb250RmxhZ3MuTm9uc3ltYm9saWMpO3k9e3R5cGU6dSxuYW1lOmUsbG9hZGVkTmFtZTpvLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6dC53aWR0aHMsZGVmYXVsdFdpZHRoOnQuZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6bCxmaXJzdENoYXI6ZCxsYXN0Q2hhcjpmLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250OmJ9O2NvbnN0IGg9YS5nZXQoIldpZHRocyIpLHA9KDAsYy5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgbT1udWxsO2lmKHApe209YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEocCk7eS5pc0ludGVybmFsRm9udD0hIW19IXkuaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKHkuc3lzdGVtRm9udEluZm89KDAseC5nZXRGb250U3Vic3RpdHV0aW9uKSh0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLHApKTtyZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXMoYSxhLHkpLnRoZW4oKGE9PntpZihoKXtjb25zdCBlPVtdO2xldCB0PWQ7Zm9yKGNvbnN0IGEgb2YgaCllW3QrK109dGhpcy54cmVmLmZldGNoSWZSZWYoYSk7YS53aWR0aHM9ZX1lbHNlIGEud2lkdGhzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgodC53aWR0aHMsYSk7cmV0dXJuIG5ldyBzLkZvbnQoZSxtLGEpfSkpfXQ9bmV3IGkuRGljdChudWxsKTt0LnNldCgiRm9udE5hbWUiLGkuTmFtZS5nZXQodSkpO3Quc2V0KCJGb250QkJveCIsYS5nZXRBcnJheSgiRm9udEJCb3giKXx8WzAsMCwwLDBdKX1sZXQgdz10LmdldCgiRm9udE5hbWUiKSxDPWEuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgdyYmKHc9aS5OYW1lLmdldCh3KSk7InN0cmluZyI9PXR5cGVvZiBDJiYoQz1pLk5hbWUuZ2V0KEMpKTtjb25zdCB2PXc/Lm5hbWUsaz1DPy5uYW1lO2lmKCFiJiZ2IT09ayl7KDAsci5pbmZvKShgVGhlIEZvbnREZXNjcmlwdG9yJ3MgRm9udE5hbWUgaXMgIiR7dn0iIGJ1dCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEZvbnQncyBCYXNlRm9udCAiJHtrfSIuYCk7diYmayYmKGsuc3RhcnRzV2l0aCh2KXx8ISgwLGMuaXNLbm93bkZvbnROYW1lKSh2KSYmKDAsYy5pc0tub3duRm9udE5hbWUpKGspKSYmKHc9bnVsbCl9d3x8PUM7aWYoISh3IGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTtsZXQgTyxULE0sRSxEO3RyeXtPPXQuZ2V0KCJGb250RmlsZSIsIkZvbnRGaWxlMiIsIkZvbnRGaWxlMyIpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke3cubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO089bmV3IHAuTnVsbFN0cmVhbX1sZXQgTj0hMSxSPW51bGwsTD1udWxsO2lmKE8pe2lmKE8uZGljdCl7Y29uc3QgZT1PLmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIGkuTmFtZSYmKFQ9ZS5uYW1lKTtNPU8uZGljdC5nZXQoIkxlbmd0aDEiKTtFPU8uZGljdC5nZXQoIkxlbmd0aDIiKTtEPU8uZGljdC5nZXQoIkxlbmd0aDMiKX19ZWxzZSBpZihtKXtjb25zdCBlPSgwLGguZ2V0WGZhRm9udE5hbWUpKHcubmFtZSk7aWYoZSl7bS5mb250RmFtaWx5PWAke20uZm9udEZhbWlseX0tUGRmSlMtWEZBYDttLm1ldHJpY3M9ZS5tZXRyaWNzfHxudWxsO1I9ZS5mYWN0b3JzfHxudWxsO089YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZS5uYW1lKTtOPSEhTztvPWE9KDAsaC5nZXRYZmFGb250RGljdCkody5uYW1lKTtsPSEwfX1lbHNlIGlmKCFiKXtjb25zdCBlPSgwLGMuZ2V0U3RhbmRhcmRGb250TmFtZSkody5uYW1lKTtpZihlKXtPPWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpO049ISFPfSFOJiZ0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJihMPSgwLHguZ2V0Rm9udFN1YnN0aXR1dGlvbikodGhpcy5zeXN0ZW1Gb250Q2FjaGUsdGhpcy5pZEZhY3RvcnksdGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwsdy5uYW1lLGUpKX15PXt0eXBlOnUsbmFtZTp3Lm5hbWUsc3VidHlwZTpULGZpbGU6TyxsZW5ndGgxOk0sbGVuZ3RoMjpFLGxlbmd0aDM6RCxpc0ludGVybmFsRm9udDpOLGxvYWRlZE5hbWU6by5sb2FkZWROYW1lLGNvbXBvc2l0ZTpsLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDphLmdldEFycmF5KCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsZmlyc3RDaGFyOmQsbGFzdENoYXI6Zix0b1VuaWNvZGU6ZyxiYm94OnQuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fGEuZ2V0QXJyYXkoIkZvbnRCQm94IiksYXNjZW50OnQuZ2V0KCJBc2NlbnQiKSxkZXNjZW50OnQuZ2V0KCJEZXNjZW50IikseEhlaWdodDp0LmdldCgiWEhlaWdodCIpfHwwLGNhcEhlaWdodDp0LmdldCgiQ2FwSGVpZ2h0Iil8fDAsZmxhZ3M6dC5nZXQoIkZsYWdzIiksaXRhbGljQW5nbGU6dC5nZXQoIkl0YWxpY0FuZ2xlIil8fDAsaXNUeXBlM0ZvbnQ6Yixjc3NGb250SW5mbzptLHNjYWxlRmFjdG9yczpSLHN5c3RlbUZvbnRJbmZvOkx9O2lmKGwpe2NvbnN0IGU9by5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIGkuTmFtZSYmKHkuY2lkRW5jb2Rpbmc9ZS5uYW1lKTtjb25zdCB0PWF3YWl0IG4uQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3kuY01hcD10O3kudmVydGljYWw9eS5jTWFwLnZlcnRpY2FsfXJldHVybiB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyhhLG8seSkudGhlbigoZT0+e3RoaXMuZXh0cmFjdFdpZHRocyhhLHQsZSk7cmV0dXJuIG5ldyBzLkZvbnQody5uYW1lLE8sZSl9KSl9c3RhdGljIGJ1aWxkRm9udFBhdGhzKGUsdCxhLG4pe2Z1bmN0aW9uIGJ1aWxkUGF0aCh0KXtjb25zdCBpPWAke2UubG9hZGVkTmFtZX1fcGF0aF8ke3R9YDt0cnl7aWYoZS5yZW5kZXJlci5oYXNCdWlsdFBhdGgodCkpcmV0dXJuO2Euc2VuZCgiY29tbW9ub2JqIixbaSwiRm9udFBhdGgiLGUucmVuZGVyZXIuZ2V0UGF0aEpzKHQpXSl9Y2F0Y2goZSl7aWYobi5pZ25vcmVFcnJvcnMpeygwLHIud2FybikoYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0Py5mb250Q2hhciYmYnVpbGRQYXRoKHQuZm9udENoYXIpfX1zdGF0aWMgZ2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBpLkRpY3Q7ZS5zZXQoIkJhc2VGb250IixpLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLGkuTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiU3VidHlwZSIsaS5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJFbmNvZGluZyIsaS5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19dC5QYXJ0aWFsRXZhbHVhdG9yPVBhcnRpYWxFdmFsdWF0b3I7Y2xhc3MgVHJhbnNsYXRlZEZvbnR7Y29uc3RydWN0b3IoZSl7bGV0e2xvYWRlZE5hbWU6dCxmb250OmEsZGljdDpyLGV2YWx1YXRvck9wdGlvbnM6bn09ZTt0aGlzLmxvYWRlZE5hbWU9dDt0aGlzLmZvbnQ9YTt0aGlzLmRpY3Q9cjt0aGlzLl9ldmFsdWF0b3JPcHRpb25zPW58fE47dGhpcy50eXBlM0xvYWRlZD1udWxsO3RoaXMudHlwZTNEZXBlbmRlbmNpZXM9YS5pc1R5cGUzRm9udD9uZXcgU2V0Om51bGw7dGhpcy5zZW50PSExfXNlbmQoZSl7aWYoIXRoaXMuc2VudCl7dGhpcy5zZW50PSEwO2Uuc2VuZCgiY29tbW9ub2JqIixbdGhpcy5sb2FkZWROYW1lLCJGb250Iix0aGlzLmZvbnQuZXhwb3J0RGF0YSh0aGlzLl9ldmFsdWF0b3JPcHRpb25zLmZvbnRFeHRyYVByb3BlcnRpZXMpXSl9fWZhbGxiYWNrKGUpe2lmKHRoaXMuZm9udC5kYXRhKXt0aGlzLmZvbnQuZGlzYWJsZUZvbnRGYWNlPSEwO1BhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHModGhpcy5mb250LHRoaXMuZm9udC5nbHlwaENhY2hlVmFsdWVzLGUsdGhpcy5fZXZhbHVhdG9yT3B0aW9ucyl9fWxvYWRUeXBlM0RhdGEoZSx0LGEpe2lmKHRoaXMudHlwZTNMb2FkZWQpcmV0dXJuIHRoaXMudHlwZTNMb2FkZWQ7aWYoIXRoaXMuZm9udC5pc1R5cGUzRm9udCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYSBUeXBlMyBmb250LiIpO2NvbnN0IG49ZS5jbG9uZSh7aWdub3JlRXJyb3JzOiExfSk7bi5wYXJzaW5nVHlwZTNGb250PSEwO2NvbnN0IHM9bmV3IGkuUmVmU2V0KGUudHlwZTNGb250UmVmcyk7dGhpcy5kaWN0Lm9iaklkJiYhcy5oYXModGhpcy5kaWN0Lm9iaklkKSYmcy5wdXQodGhpcy5kaWN0Lm9iaklkKTtuLnR5cGUzRm9udFJlZnM9cztjb25zdCBvPXRoaXMuZm9udCxjPXRoaXMudHlwZTNEZXBlbmRlbmNpZXM7bGV0IGw9UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgaD10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSx1PXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LGQ9T2JqZWN0LmNyZWF0ZShudWxsKSxmPXIuVXRpbC5ub3JtYWxpemVSZWN0KG8uYmJveHx8WzAsMCwwLDBdKSxnPWZbMl0tZlswXSxwPWZbM10tZlsxXSxtPU1hdGguaHlwb3QoZyxwKTtmb3IoY29uc3QgZSBvZiBoLmdldEtleXMoKSlsPWwudGhlbigoKCk9Pntjb25zdCB0PWguZ2V0KGUpLGk9bmV3IEUuT3BlcmF0b3JMaXN0O3JldHVybiBuLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazphLHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDppfSkudGhlbigoKCk9PntpLmZuQXJyYXlbMF09PT1yLk9QUy5zZXRDaGFyV2lkdGhBbmRCb3VuZHMmJnRoaXMuX3JlbW92ZVR5cGUzQ29sb3JPcGVyYXRvcnMoaSxtKTtkW2VdPWkuZ2V0SVIoKTtmb3IoY29uc3QgZSBvZiBpLmRlcGVuZGVuY2llcyljLmFkZChlKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7KDAsci53YXJuKShgVHlwZTMgZm9udCByZXNvdXJjZSAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtjb25zdCBhPW5ldyBFLk9wZXJhdG9yTGlzdDtkW2VdPWEuZ2V0SVIoKX0pKX0pKTt0aGlzLnR5cGUzTG9hZGVkPWwudGhlbigoKCk9PntvLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWQ7aWYodGhpcy5fYmJveCl7by5pc0NoYXJCQm94PSEwO28uYmJveD10aGlzLl9iYm94fX0pKTtyZXR1cm4gdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06TmFOO2NvbnN0IGE9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZS5hcmdzQXJyYXlbMF0uc2xpY2UoMikpLG49YVsyXS1hWzBdLGk9YVszXS1hWzFdLHM9TWF0aC5oeXBvdChuLGkpO2lmKDA9PT1ufHwwPT09aSl7ZS5mbkFycmF5LnNwbGljZSgwLDEpO2UuYXJnc0FycmF5LnNwbGljZSgwLDEpfWVsc2UgaWYoMD09PXR8fE1hdGgucm91bmQocy90KT49MTApe3RoaXMuX2Jib3h8fCh0aGlzLl9iYm94PVsxLzAsMS8wLC0xLzAsLTEvMF0pO3RoaXMuX2Jib3hbMF09TWF0aC5taW4odGhpcy5fYmJveFswXSxhWzBdKTt0aGlzLl9iYm94WzFdPU1hdGgubWluKHRoaXMuX2Jib3hbMV0sYVsxXSk7dGhpcy5fYmJveFsyXT1NYXRoLm1heCh0aGlzLl9iYm94WzJdLGFbMl0pO3RoaXMuX2Jib3hbM109TWF0aC5tYXgodGhpcy5fYmJveFszXSxhWzNdKX1sZXQgbz0wLGM9ZS5sZW5ndGg7Zm9yKDtvPGM7KXtzd2l0Y2goZS5mbkFycmF5W29dKXtjYXNlIHIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kczpicmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNvbG9yU3BhY2U6Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTpjYXNlIHIuT1BTLnNldFN0cm9rZUNvbG9yOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JOOmNhc2Ugci5PUFMuc2V0RmlsbENvbG9yOmNhc2Ugci5PUFMuc2V0RmlsbENvbG9yTjpjYXNlIHIuT1BTLnNldFN0cm9rZUdyYXk6Y2FzZSByLk9QUy5zZXRGaWxsR3JheTpjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOmNhc2Ugci5PUFMuc2V0RmlsbFJHQkNvbG9yOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yOmNhc2Ugci5PUFMuc2V0RmlsbENNWUtDb2xvcjpjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOmNhc2Ugci5PUFMuc2V0UmVuZGVyaW5nSW50ZW50OmUuZm5BcnJheS5zcGxpY2UobywxKTtlLmFyZ3NBcnJheS5zcGxpY2UobywxKTtjLS07Y29udGludWU7Y2FzZSByLk9QUy5zZXRHU3RhdGU6Y29uc3RbdF09ZS5hcmdzQXJyYXlbb107bGV0IGE9MCxuPXQubGVuZ3RoO2Zvcig7YTxuOyl7Y29uc3RbZV09dFthXTtzd2l0Y2goZSl7Y2FzZSJUUiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjp0LnNwbGljZShhLDEpO24tLTtjb250aW51ZX1hKyt9fW8rK319fWNsYXNzIFN0YXRlTWFuYWdlcntjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpuZXcgRXZhbFN0YXRlO3RoaXMuc3RhdGU9ZTt0aGlzLnN0YXRlU3RhY2s9W119c2F2ZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZTt0aGlzLnN0YXRlU3RhY2sucHVzaCh0aGlzLnN0YXRlKTt0aGlzLnN0YXRlPWUuY2xvbmUoKX1yZXN0b3JlKCl7Y29uc3QgZT10aGlzLnN0YXRlU3RhY2sucG9wKCk7ZSYmKHRoaXMuc3RhdGU9ZSl9dHJhbnNmb3JtKGUpe3RoaXMuc3RhdGUuY3RtPXIuVXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoci5JREVOVElUWV9NQVRSSVgpO3RoaXMuZm9udE5hbWU9bnVsbDt0aGlzLmZvbnRTaXplPTA7dGhpcy5sb2FkZWROYW1lPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb250TWF0cml4PXIuRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy50ZXh0TWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7dGhpcy50ZXh0TGluZU1hdHJpeD1yLklERU5USVRZX01BVFJJWC5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGEscixuLGkpe2NvbnN0IHM9dGhpcy50ZXh0TWF0cml4O3NbMF09ZTtzWzFdPXQ7c1syXT1hO3NbM109cjtzWzRdPW47c1s1XT1pfXNldFRleHRMaW5lTWF0cml4KGUsdCxhLHIsbixpKXtjb25zdCBzPXRoaXMudGV4dExpbmVNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09bjtzWzVdPWl9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGE9dGhpcy50ZXh0TWF0cml4O2FbNF09YVswXSplK2FbMl0qdCthWzRdO2FbNV09YVsxXSplK2FbM10qdCthWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRMaW5lTWF0cml4O2FbNF09YVswXSplK2FbMl0qdCthWzRdO2FbNV09YVsxXSplK2FbM10qdCthWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShyLklERU5USVRZX01BVFJJWCk7dGhpcy5mb250PW51bGw7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1yLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy5maWxsQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O3RoaXMuc3Ryb2tlQ29sb3JTcGFjZT15LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fWNsb25lKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9fWNsYXNzIEV2YWx1YXRvclByZXByb2Nlc3NvcntzdGF0aWMgZ2V0IG9wTWFwKCl7Y29uc3QgZT0oMCx2LmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uudz17aWQ6ci5PUFMuc2V0TGluZVdpZHRoLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuSj17aWQ6ci5PUFMuc2V0TGluZUNhcCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmo9e2lkOnIuT1BTLnNldExpbmVKb2luLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuTT17aWQ6ci5PUFMuc2V0TWl0ZXJMaW1pdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmQ9e2lkOnIuT1BTLnNldERhc2gsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5yaT17aWQ6ci5PUFMuc2V0UmVuZGVyaW5nSW50ZW50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuaT17aWQ6ci5PUFMuc2V0RmxhdG5lc3MsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5ncz17aWQ6ci5PUFMuc2V0R1N0YXRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UucT17aWQ6ci5PUFMuc2F2ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlE9e2lkOnIuT1BTLnJlc3RvcmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5jbT17aWQ6ci5PUFMudHJhbnNmb3JtLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2UubT17aWQ6ci5PUFMubW92ZVRvLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UubD17aWQ6ci5PUFMubGluZVRvLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuYz17aWQ6ci5PUFMuY3VydmVUbyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfTtlLnY9e2lkOnIuT1BTLmN1cnZlVG8yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2UueT17aWQ6ci5PUFMuY3VydmVUbzMsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5oPXtpZDpyLk9QUy5jbG9zZVBhdGgsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5yZT17aWQ6ci5PUFMucmVjdGFuZ2xlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2UuUz17aWQ6ci5PUFMuc3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2Uucz17aWQ6ci5PUFMuY2xvc2VTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5mPXtpZDpyLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRj17aWQ6ci5PUFMuZmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlWyJmKiJdPXtpZDpyLk9QUy5lb0ZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5CPXtpZDpyLk9QUy5maWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbIkIqIl09e2lkOnIuT1BTLmVvRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmI9e2lkOnIuT1BTLmNsb3NlRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlWyJiKiJdPXtpZDpyLk9QUy5jbG9zZUVPRmlsbFN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLm49e2lkOnIuT1BTLmVuZFBhdGgsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5XPXtpZDpyLk9QUy5jbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbIlcqIl09e2lkOnIuT1BTLmVvQ2xpcCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkJUPXtpZDpyLk9QUy5iZWdpblRleHQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5FVD17aWQ6ci5PUFMuZW5kVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlRjPXtpZDpyLk9QUy5zZXRDaGFyU3BhY2luZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlR3PXtpZDpyLk9QUy5zZXRXb3JkU3BhY2luZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlR6PXtpZDpyLk9QUy5zZXRIU2NhbGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5UTD17aWQ6ci5PUFMuc2V0TGVhZGluZyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlRmPXtpZDpyLk9QUy5zZXRGb250LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVHI9e2lkOnIuT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHM9e2lkOnIuT1BTLnNldFRleHRSaXNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVGQ9e2lkOnIuT1BTLm1vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVEQ9e2lkOnIuT1BTLnNldExlYWRpbmdNb3ZlVGV4dCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLlRtPXtpZDpyLk9QUy5zZXRUZXh0TWF0cml4LG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2VbIlQqIl09e2lkOnIuT1BTLm5leHRMaW5lLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuVGo9e2lkOnIuT1BTLnNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVEo9e2lkOnIuT1BTLnNob3dTcGFjZWRUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2VbIiciXT17aWQ6ci5PUFMubmV4dExpbmVTaG93VGV4dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlWyciJ109e2lkOnIuT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2UuZDA9e2lkOnIuT1BTLnNldENoYXJXaWR0aCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLmQxPXtpZDpyLk9QUy5zZXRDaGFyV2lkdGhBbmRCb3VuZHMsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZS5DUz17aWQ6ci5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmNzPXtpZDpyLk9QUy5zZXRGaWxsQ29sb3JTcGFjZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlNDPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfTtlLlNDTj17aWQ6ci5PUFMuc2V0U3Ryb2tlQ29sb3JOLG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfTtlLnNjPXtpZDpyLk9QUy5zZXRGaWxsQ29sb3IsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH07ZS5zY249e2lkOnIuT1BTLnNldEZpbGxDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9O2UuRz17aWQ6ci5PUFMuc2V0U3Ryb2tlR3JheSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmc9e2lkOnIuT1BTLnNldEZpbGxHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuUkc9e2lkOnIuT1BTLnNldFN0cm9rZVJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2Uucmc9e2lkOnIuT1BTLnNldEZpbGxSR0JDb2xvcixudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfTtlLks9e2lkOnIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLms9e2lkOnIuT1BTLnNldEZpbGxDTVlLQ29sb3IsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5zaD17aWQ6ci5PUFMuc2hhZGluZ0ZpbGwsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5CST17aWQ6ci5PUFMuYmVnaW5JbmxpbmVJbWFnZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLklEPXtpZDpyLk9QUy5iZWdpbkltYWdlRGF0YSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkVJPXtpZDpyLk9QUy5lbmRJbmxpbmVJbWFnZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkRvPXtpZDpyLk9QUy5wYWludFhPYmplY3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5NUD17aWQ6ci5PUFMubWFya1BvaW50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuRFA9e2lkOnIuT1BTLm1hcmtQb2ludFByb3BzLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuQk1DPXtpZDpyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5CREM9e2lkOnIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuRU1DPXtpZDpyLk9QUy5lbmRNYXJrZWRDb250ZW50LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQlg9e2lkOnIuT1BTLmJlZ2luQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRVg9e2lkOnIuT1BTLmVuZENvbXBhdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkJNPW51bGw7ZS5CRD1udWxsO2UudHJ1ZT1udWxsO2UuZmE9bnVsbDtlLmZhbD1udWxsO2UuZmFscz1udWxsO2UuZmFsc2U9bnVsbDtlLm51PW51bGw7ZS5udWw9bnVsbDtlLm51bGw9bnVsbH0pKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywib3BNYXAiLGUoKSl9c3RhdGljIE1BWF9JTlZBTElEX1BBVEhfT1BTPTEwO2NvbnN0cnVjdG9yKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm5ldyBTdGF0ZU1hbmFnZXI7dGhpcy5wYXJzZXI9bmV3IGYuUGFyc2VyKHtsZXhlcjpuZXcgZi5MZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIGkuQ21kKXtjb25zdCBuPWEuY21kLGk9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW25dO2lmKCFpKXsoMCxyLndhcm4pKGBVbmtub3duIGNvbW1hbmQgIiR7bn0iLmApO2NvbnRpbnVlfWNvbnN0IHM9aS5pZCxvPWkubnVtQXJncztsZXQgYz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49ci5PUFMubW92ZVRvJiZzPD1yLk9QUy5lbmRQYXRoO2lmKGkudmFyaWFibGVBcmdzKWM+byYmKDAsci5pbmZvKShgQ29tbWFuZCAke259OiBleHBlY3RlZCBbMCwgJHtvfV0gYXJncywgYnV0IHJlY2VpdmVkICR7Y30gYXJncy5gKTtlbHNle2lmKGMhPT1vKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO2M+bzspe2UucHVzaCh0LnNoaWZ0KCkpO2MtLX1mb3IoO2M8byYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7YysrfX1pZihjPG8pe2NvbnN0IGU9YGNvbW1hbmQgJHtufTogZXhwZWN0ZWQgJHtvfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtjfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTsoMCxyLndhcm4pKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihhPT09aS5FT0YpcmV0dXJuITE7aWYobnVsbCE9PWEpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGEpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zYXZlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHIuT1BTLnJlc3RvcmU6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2Ugci5PUFMudHJhbnNmb3JtOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPUV2YWx1YXRvclByZXByb2Nlc3Nvcn0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5JZGVudGl0eUNNYXA9dC5DTWFwRmFjdG9yeT10LkNNYXA9dm9pZCAwO2EoMTM5KTthKDIpO3ZhciByPWEoMTQ0KSxuPWEoMTUwKSxpPWEoMTUxKSxzPWEoMTY1KSxvPWEoMTY2KSxjPWEoMTQ5KSxsPWEoMTU0KTtjb25zdCBoPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sdT0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3RoaXMuY29kZXNwYWNlUmFuZ2VzPVtbXSxbXSxbXSxbXV07dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXM9MDt0aGlzLl9tYXA9W107dGhpcy5uYW1lPSIiO3RoaXMudmVydGljYWw9ITE7dGhpcy51c2VDTWFwPW51bGw7dGhpcy5idWlsdEluQ01hcD1lfWFkZENvZGVzcGFjZVJhbmdlKGUsdCxhKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxhKTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfW1hcENpZFJhbmdlKGUsdCxhKXtpZih0LWU+dSl0aHJvdyBuZXcgRXJyb3IoIm1hcENpZFJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2Zvcig7ZTw9dDspdGhpcy5fbWFwW2UrK109YSsrfW1hcEJmUmFuZ2UoZSx0LGEpe2lmKHQtZT51KXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoLTE7Zm9yKDtlPD10Oyl7dGhpcy5fbWFwW2UrK109YTtjb25zdCB0PWEuY2hhckNvZGVBdChyKSsxO3Q+MjU1P2E9YS5zdWJzdHJpbmcoMCxyLTEpK1N0cmluZy5mcm9tQ2hhckNvZGUoYS5jaGFyQ29kZUF0KHItMSkrMSkrIlwwIjphPWEuc3Vic3RyaW5nKDAscikrU3RyaW5nLmZyb21DaGFyQ29kZSh0KX19bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpe2lmKHQtZT51KXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZVRvQXJyYXkgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3Qgcj1hLmxlbmd0aDtsZXQgbj0wO2Zvcig7ZTw9dCYmbjxyOyl7dGhpcy5fbWFwW2VdPWFbbisrXTsrK2V9fW1hcE9uZShlLHQpe3RoaXMuX21hcFtlXT10fWxvb2t1cChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNvbnRhaW5zKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtjb25zdCB0PXRoaXMuX21hcCxhPXQubGVuZ3RoO2lmKGE8PTY1NTM2KWZvcihsZXQgcj0wO3I8YTtyKyspdm9pZCAwIT09dFtyXSYmZShyLHRbcl0pO2Vsc2UgZm9yKGNvbnN0IGEgaW4gdCllKGEsdFthXSl9Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9Z2V0TWFwKCl7cmV0dXJuIHRoaXMuX21hcH1yZWFkQ2hhckNvZGUoZSx0LGEpe2xldCByPTA7Y29uc3Qgbj10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGk9MCxzPW4ubGVuZ3RoO2k8cztpKyspe3I9KHI8PDh8ZS5jaGFyQ29kZUF0KHQraSkpPj4+MDtjb25zdCBzPW5baV07Zm9yKGxldCBlPTAsdD1zLmxlbmd0aDtlPHQ7KXtjb25zdCB0PXNbZSsrXSxuPXNbZSsrXTtpZihyPj10JiZyPD1uKXthLmNoYXJjb2RlPXI7YS5sZW5ndGg9aSsxO3JldHVybn19fWEuY2hhcmNvZGU9MDthLmxlbmd0aD0xfWdldENoYXJDb2RlTGVuZ3RoKGUpe2NvbnN0IHQ9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtjb25zdCByPXRbYV07Zm9yKGxldCB0PTAsbj1yLmxlbmd0aDt0PG47KXtjb25zdCBuPXJbdCsrXSxpPXJbdCsrXTtpZihlPj1uJiZlPD1pKXJldHVybiBhKzF9fXJldHVybiAxfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1nZXQgaXNJZGVudGl0eUNNYXAoKXtpZigiSWRlbnRpdHktSCIhPT10aGlzLm5hbWUmJiJJZGVudGl0eS1WIiE9PXRoaXMubmFtZSlyZXR1cm4hMTtpZig2NTUzNiE9PXRoaXMuX21hcC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTw2NTUzNjtlKyspaWYodGhpcy5fbWFwW2VdIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19dC5DTWFwPUNNYXA7Y2xhc3MgSWRlbnRpdHlDTWFwIGV4dGVuZHMgQ01hcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7dGhpcy52ZXJ0aWNhbD1lO3RoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQsYSl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXtjb25zdCBlPW5ldyBBcnJheSg2NTUzNik7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWVbdF09dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19dC5JZGVudGl0eUNNYXA9SWRlbnRpdHlDTWFwO2Z1bmN0aW9uIHN0clRvSW50KGUpe2xldCB0PTA7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspdD10PDw4fGUuY2hhckNvZGVBdChhKTtyZXR1cm4gdD4+PjB9ZnVuY3Rpb24gZXhwZWN0U3RyaW5nKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIHN0cmluZy4iKX1mdW5jdGlvbiBleHBlY3RJbnQoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBpbnQuIil9ZnVuY3Rpb24gcGFyc2VCZkNoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGJmY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IGk9YTtlLm1hcE9uZShyLGkpfX1mdW5jdGlvbiBwYXJzZUJmUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGJmcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpfHwic3RyaW5nIj09dHlwZW9mIGEpe2NvbnN0IHQ9TnVtYmVyLmlzSW50ZWdlcihhKT9TdHJpbmcuZnJvbUNoYXJDb2RlKGEpOmE7ZS5tYXBCZlJhbmdlKHIsaSx0KX1lbHNle2lmKCEoMCxuLmlzQ21kKShhLCJbIikpYnJlYWs7e2E9dC5nZXRPYmooKTtjb25zdCBzPVtdO2Zvcig7ISgwLG4uaXNDbWQpKGEsIl0iKSYmYSE9PW4uRU9GOyl7cy5wdXNoKGEpO2E9dC5nZXRPYmooKX1lLm1hcEJmUmFuZ2VUb0FycmF5KHIsaSxzKX19fXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIGJmIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlQ2lkQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoKDAsbi5pc0NtZCkoYSwiZW5kY2lkY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGEpO2NvbnN0IGk9YTtlLm1hcE9uZShyLGkpfX1mdW5jdGlvbiBwYXJzZUNpZFJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRjaWRyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IGk9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBzPWE7ZS5tYXBDaWRSYW5nZShyLGkscyl9fWZ1bmN0aW9uIHBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGNvZGVzcGFjZXJhbmdlIikpcmV0dXJuO2lmKCJzdHJpbmciIT10eXBlb2YgYSlicmVhaztjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3QgaT1zdHJUb0ludChhKTtlLmFkZENvZGVzcGFjZVJhbmdlKGEubGVuZ3RoLHIsaSl9dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlV01vZGUoZSx0KXtjb25zdCBhPXQuZ2V0T2JqKCk7TnVtYmVyLmlzSW50ZWdlcihhKSYmKGUudmVydGljYWw9ISFhKX1mdW5jdGlvbiBwYXJzZUNNYXBOYW1lKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO2EgaW5zdGFuY2VvZiBuLk5hbWUmJihlLm5hbWU9YS5uYW1lKX1hc3luYyBmdW5jdGlvbiBwYXJzZUNNYXAoZSx0LGEsaSl7bGV0IHMsbztlOmZvcig7Oyl0cnl7Y29uc3QgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZihhIGluc3RhbmNlb2Ygbi5OYW1lKXsiV01vZGUiPT09YS5uYW1lP3BhcnNlV01vZGUoZSx0KToiQ01hcE5hbWUiPT09YS5uYW1lJiZwYXJzZUNNYXBOYW1lKGUsdCk7cz1hfWVsc2UgaWYoYSBpbnN0YW5jZW9mIG4uQ21kKXN3aXRjaChhLmNtZCl7Y2FzZSJlbmRjbWFwIjpicmVhayBlO2Nhc2UidXNlY21hcCI6cyBpbnN0YW5jZW9mIG4uTmFtZSYmKG89cy5uYW1lKTticmVhaztjYXNlImJlZ2luY29kZXNwYWNlcmFuZ2UiOnBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luYmZjaGFyIjpwYXJzZUJmQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRjaGFyIjpwYXJzZUNpZENoYXIoZSx0KTticmVhaztjYXNlImJlZ2luYmZyYW5nZSI6cGFyc2VCZlJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZHJhbmdlIjpwYXJzZUNpZFJhbmdlKGUsdCl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBjLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKSgiSW52YWxpZCBjTWFwIGRhdGE6ICIrZSk7Y29udGludWV9IWkmJm8mJihpPW8pO3JldHVybiBpP2V4dGVuZENNYXAoZSxhLGkpOmV9YXN5bmMgZnVuY3Rpb24gZXh0ZW5kQ01hcChlLHQsYSl7ZS51c2VDTWFwPWF3YWl0IGNyZWF0ZUJ1aWx0SW5DTWFwKGEsdCk7aWYoMD09PWUubnVtQ29kZXNwYWNlUmFuZ2VzKXtjb25zdCB0PWUudXNlQ01hcC5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspZS5jb2Rlc3BhY2VSYW5nZXNbYV09dFthXS5zbGljZSgpO2UubnVtQ29kZXNwYWNlUmFuZ2VzPWUudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9ZS51c2VDTWFwLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZS5jb250YWlucyh0KXx8ZS5tYXBPbmUodCxlLnVzZUNNYXAubG9va3VwKHQpKX0pKTtyZXR1cm4gZX1hc3luYyBmdW5jdGlvbiBjcmVhdGVCdWlsdEluQ01hcChlLHQpe2lmKCJJZGVudGl0eS1IIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITEsMik7aWYoIklkZW50aXR5LVYiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMCwyKTtpZighaC5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6YSxjb21wcmVzc2lvblR5cGU6bn09YXdhaXQgdChlKSxpPW5ldyBDTWFwKCEwKTtpZihuPT09ci5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWSlyZXR1cm4obmV3IHMuQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhhLGksKGU9PmV4dGVuZENNYXAoaSx0LGUpKSk7aWYobj09PXIuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FKXtjb25zdCBlPW5ldyBvLkxleGVyKG5ldyBsLlN0cmVhbShhKSk7cmV0dXJuIHBhcnNlQ01hcChpLGUsdCxudWxsKX10aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgQ01hcCAiY29tcHJlc3Npb25UeXBlIiB2YWx1ZTogJHtufWApfXQuQ01hcEZhY3Rvcnk9Y2xhc3MgQ01hcEZhY3Rvcnl7c3RhdGljIGFzeW5jIGNyZWF0ZShlKXtsZXR7ZW5jb2Rpbmc6dCxmZXRjaEJ1aWx0SW5DTWFwOmEsdXNlQ01hcDpyfT1lO2lmKHQgaW5zdGFuY2VvZiBuLk5hbWUpcmV0dXJuIGNyZWF0ZUJ1aWx0SW5DTWFwKHQubmFtZSxhKTtpZih0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtKXtjb25zdCBlPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgby5MZXhlcih0KSxhLHIpO3JldHVybiBlLmlzSWRlbnRpdHlDTWFwP2NyZWF0ZUJ1aWx0SW5DTWFwKGUubmFtZSxhKTplfXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgcmVxdWlyZWQuIil9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CaW5hcnlDTWFwUmVhZGVyPXZvaWQgMDthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgyKTt2YXIgcj1hKDE0NCk7ZnVuY3Rpb24gaGV4VG9JbnQoZSx0KXtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8PXQ7cisrKWE9YTw8OHxlW3JdO3JldHVybiBhPj4+MH1mdW5jdGlvbiBoZXhUb1N0cihlLHQpe3JldHVybiAxPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSk6Mz09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0sZVsyXSxlWzNdKTpTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPWE7bj49MDtuLS0pe3IrPWVbbl0rdFtuXTtlW25dPTI1NSZyO3I+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgYT0xO2ZvcihsZXQgcj10O3I+PTAmJmE+MDtyLS0pe2ErPWVbcl07ZVtyXT0yNTUmYTthPj49OH19Y29uc3Qgbj0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmYSk7dD10PDw3fDEyNyZhfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgYTtjb25zdCBuPXRoaXMudG1wQnVmO2xldCBpPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7bltpKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgcz10LG89MCxjPTA7Zm9yKDtzPj0wOyl7Zm9yKDtjPDgmJm4ubGVuZ3RoPjA7KXtvfD1uWy0taV08PGM7Yys9N31lW3NdPTI1NSZvO3MtLTtvPj49ODtjLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IHI9MDtmb3IobGV0IG49MDtuPD10O24rKyl7cj0oMSZyKTw8OHxlW25dO2Vbbl09cj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKSx0PW5ldyBBcnJheShlKTtmb3IobGV0IGE9MDthPGU7YSsrKXRbYV09dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoLi4udCl9fXQuQmluYXJ5Q01hcFJlYWRlcj1jbGFzcyBCaW5hcnlDTWFwUmVhZGVye2FzeW5jIHByb2Nlc3MoZSx0LGEpe2NvbnN0IHI9bmV3IEJpbmFyeUNNYXBTdHJlYW0oZSksaT1yLnJlYWRCeXRlKCk7dC52ZXJ0aWNhbD0hISgxJmkpO2xldCBzPW51bGw7Y29uc3Qgbz1uZXcgVWludDhBcnJheShuKSxjPW5ldyBVaW50OEFycmF5KG4pLGw9bmV3IFVpbnQ4QXJyYXkobiksaD1uZXcgVWludDhBcnJheShuKSx1PW5ldyBVaW50OEFycmF5KG4pO2xldCBkLGY7Zm9yKDsoZj1yLnJlYWRCeXRlKCkpPj0wOyl7Y29uc3QgZT1mPj41O2lmKDc9PT1lKXtzd2l0Y2goMzEmZil7Y2FzZSAwOnIucmVhZFN0cmluZygpO2JyZWFrO2Nhc2UgMTpzPXIucmVhZFN0cmluZygpfWNvbnRpbnVlfWNvbnN0IGE9ISEoMTYmZiksaT0xNSZmO2lmKGkrMT5uKXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IGc9MSxwPXIucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6ci5yZWFkSGV4KG8saSk7ci5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTt0LmFkZENvZGVzcGFjZVJhbmdlKGkrMSxoZXhUb0ludChvLGkpLGhleFRvSW50KGMsaSkpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChjLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLGMsaSk7ci5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTt0LmFkZENvZGVzcGFjZVJhbmdlKGkrMSxoZXhUb0ludChvLGkpLGhleFRvSW50KGMsaSkpfWJyZWFrO2Nhc2UgMTpyLnJlYWRIZXgobyxpKTtyLnJlYWRIZXhOdW1iZXIoYyxpKTthZGRIZXgoYyxvLGkpO3IucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChjLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLGMsaSk7ci5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTtyLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6ci5yZWFkSGV4KGwsaSk7ZD1yLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChsLGkpLGQpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChsLGkpO2lmKCFhKXtyLnJlYWRIZXhOdW1iZXIodSxpKTthZGRIZXgobCx1LGkpfWQ9ci5yZWFkU2lnbmVkKCkrKGQrMSk7dC5tYXBPbmUoaGV4VG9JbnQobCxpKSxkKX1icmVhaztjYXNlIDM6ci5yZWFkSGV4KG8saSk7ci5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTtkPXIucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpLGQpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChjLGkpO2lmKGEpby5zZXQoYyk7ZWxzZXtyLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpfXIucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7ZD1yLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG8saSksaGV4VG9JbnQoYyxpKSxkKX1icmVhaztjYXNlIDQ6ci5yZWFkSGV4KGwsZyk7ci5yZWFkSGV4KGgsaSk7dC5tYXBPbmUoaGV4VG9JbnQobCxnKSxoZXhUb1N0cihoLGkpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxnKTtpZighYSl7ci5yZWFkSGV4TnVtYmVyKHUsZyk7YWRkSGV4KGwsdSxnKX1pbmNIZXgoaCxpKTtyLnJlYWRIZXhTaWduZWQodSxpKTthZGRIZXgoaCx1LGkpO3QubWFwT25lKGhleFRvSW50KGwsZyksaGV4VG9TdHIoaCxpKSl9YnJlYWs7Y2FzZSA1OnIucmVhZEhleChvLGcpO3IucmVhZEhleE51bWJlcihjLGcpO2FkZEhleChjLG8sZyk7ci5yZWFkSGV4KGgsaSk7dC5tYXBCZlJhbmdlKGhleFRvSW50KG8sZyksaGV4VG9JbnQoYyxnKSxoZXhUb1N0cihoLGkpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxnKTtpZihhKW8uc2V0KGMpO2Vsc2V7ci5yZWFkSGV4TnVtYmVyKG8sZyk7YWRkSGV4KG8sYyxnKX1yLnJlYWRIZXhOdW1iZXIoYyxnKTthZGRIZXgoYyxvLGcpO3IucmVhZEhleChoLGkpO3QubWFwQmZSYW5nZShoZXhUb0ludChvLGcpLGhleFRvSW50KGMsZyksaGV4VG9TdHIoaCxpKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcz9hKHMpOnR9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QYXJzZXI9dC5MaW5lYXJpemF0aW9uPXQuTGV4ZXI9dm9pZCAwO2EoMTM5KTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgyKTt2YXIgcj1hKDE0NCksbj1hKDE1MCksaT1hKDE0OSkscz1hKDE1NCksbz1hKDE2NyksYz1hKDE2OSksbD1hKDE3MCksaD1hKDE3MiksdT1hKDE3MyksZD1hKDE3NiksZj1hKDE3OSksZz1hKDE4MSkscD1hKDE4MiksbT1hKDE4Myk7Y2xhc3MgUGFyc2Vye2NvbnN0cnVjdG9yKGUpe2xldHtsZXhlcjp0LHhyZWY6YSxhbGxvd1N0cmVhbXM6cj0hMSxyZWNvdmVyeU1vZGU6bj0hMX09ZTt0aGlzLmxleGVyPXQ7dGhpcy54cmVmPWE7dGhpcy5hbGxvd1N0cmVhbXM9cjt0aGlzLnJlY292ZXJ5TW9kZT1uO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2Ygbi5DbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2Ygbi5DbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1uLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBhO2Nhc2UiPDwiOmNvbnN0IHM9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09bi5FT0Y7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIG4uTmFtZSkpeygwLHIuaW5mbykoIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW4uRU9GKWJyZWFrO3Muc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PW4uRU9GKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gczt0aHJvdyBuZXcgaS5QYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKCgwLG4uaXNDbWQpKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShzLGUpOnM7dGhpcy5zaGlmdCgpO3JldHVybiBzO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiYoMCxuLmlzQ21kKSh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1uLlJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0e2tub3duQ29tbWFuZHM6dH09dGhpcy5sZXhlcixhPWUucG9zO2xldCBvLGMsbD0wO2Zvcig7LTEhPT0obz1lLmdldEJ5dGUoKSk7KWlmKDA9PT1sKWw9Njk9PT1vPzE6MDtlbHNlIGlmKDE9PT1sKWw9NzM9PT1vPzI6MDtlbHNlIGlmKDMyPT09b3x8MTA9PT1vfHwxMz09PW8pe2M9ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxNSksaT1hLmxlbmd0aDtpZigwPT09aSlicmVhaztmb3IobGV0IGU9MDtlPGk7ZSsrKXtvPWFbZV07aWYoKDAhPT1vfHwwPT09YVtlKzFdKSYmKDEwIT09byYmMTMhPT1vJiYobzwzMnx8bz4xMjcpKSl7bD0wO2JyZWFrfX1pZigyIT09bCljb250aW51ZTtpZighdCl7KDAsci53YXJuKSgiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBgbGV4ZXIua25vd25Db21tYW5kc2AgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWNvbnN0IGg9bmV3IExleGVyKG5ldyBzLlN0cmVhbShhLnNsaWNlKCkpLHQpO2guX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCB1PTA7Zm9yKDs7KXtjb25zdCBlPWguZ2V0T2JqKCk7aWYoZT09PW4uRU9GKXtsPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIG4uQ21kKXtjb25zdCBhPXRbZS5jbWRdO2lmKCFhKXtsPTA7YnJlYWt9aWYoYS52YXJpYWJsZUFyZ3M/dTw9YS5udW1BcmdzOnU9PT1hLm51bUFyZ3MpYnJlYWs7dT0wfWVsc2UgdSsrfWlmKDI9PT1sKWJyZWFrfWVsc2UgbD0wO2lmKC0xPT09byl7KDAsci53YXJuKSgiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQ6IFJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhvdXQgZmluZGluZyBhIHZhbGlkIEVJIG1hcmtlciIpO2lmKGMpeygwLHIud2FybikoJy4uLiB0cnlpbmcgdG8gcmVjb3ZlciBieSB1c2luZyB0aGUgbGFzdCAiRUkiIG9jY3VycmVuY2UuJyk7ZS5za2lwKC0oZS5wb3MtYykpfX1sZXQgaD00O2Uuc2tpcCgtaCk7bz1lLnBlZWtCeXRlKCk7ZS5za2lwKGgpOygwLGkuaXNXaGl0ZVNwYWNlKShvKXx8aC0tO3JldHVybiBlLnBvcy1oLWF9ZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhLG4saT0hMTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigyNTU9PT1hKXtzd2l0Y2goZS5nZXRCeXRlKCkpe2Nhc2UgMDpicmVhaztjYXNlIDI1NTplLnNraXAoLTEpO2JyZWFrO2Nhc2UgMjE3Omk9ITA7YnJlYWs7Y2FzZSAxOTI6Y2FzZSAxOTM6Y2FzZSAxOTQ6Y2FzZSAxOTU6Y2FzZSAxOTc6Y2FzZSAxOTg6Y2FzZSAxOTk6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDM6Y2FzZSAyMDU6Y2FzZSAyMDY6Y2FzZSAyMDc6Y2FzZSAxOTY6Y2FzZSAyMDQ6Y2FzZSAyMTg6Y2FzZSAyMTk6Y2FzZSAyMjA6Y2FzZSAyMjE6Y2FzZSAyMjI6Y2FzZSAyMjM6Y2FzZSAyMjQ6Y2FzZSAyMjU6Y2FzZSAyMjY6Y2FzZSAyMjc6Y2FzZSAyMjg6Y2FzZSAyMjk6Y2FzZSAyMzA6Y2FzZSAyMzE6Y2FzZSAyMzI6Y2FzZSAyMzM6Y2FzZSAyMzQ6Y2FzZSAyMzU6Y2FzZSAyMzY6Y2FzZSAyMzc6Y2FzZSAyMzg6Y2FzZSAyMzk6Y2FzZSAyNTQ6bj1lLmdldFVpbnQxNigpO24+Mj9lLnNraXAobi0yKTplLnNraXAoLTIpfWlmKGkpYnJlYWt9Y29uc3Qgcz1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIERDVERlY29kZSBpbWFnZSBzdHJlYW06IEVPSSBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXMpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBzfWZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMTI2PT09YSl7Y29uc3QgdD1lLnBvczthPWUucGVla0J5dGUoKTtmb3IoOygwLGkuaXNXaGl0ZVNwYWNlKShhKTspe2Uuc2tpcCgpO2E9ZS5wZWVrQnl0ZSgpfWlmKDYyPT09YSl7ZS5za2lwKCk7YnJlYWt9aWYoZS5wb3M+dCl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtpZig2OT09PXRbMF0mJjczPT09dFsxXSlicmVha319Y29uc3Qgbj1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIEFTQ0lJODVEZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0QgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1uKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gbn1maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpJiY2MiE9PWE7KTtjb25zdCBuPWUucG9zLXQ7aWYoLTE9PT1hKXsoMCxyLndhcm4pKCJJbmxpbmUgQVNDSUlIZXhEZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0QgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1uKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gbn1pbmxpbmVTdHJlYW1Ta2lwRUkoZSl7bGV0IHQsYT0wO2Zvcig7LTEhPT0odD1lLmdldEJ5dGUoKSk7KWlmKDA9PT1hKWE9Njk9PT10PzE6MDtlbHNlIGlmKDE9PT1hKWE9NzM9PT10PzI6MDtlbHNlIGlmKDI9PT1hKWJyZWFrfW1ha2VJbmxpbmVJbWFnZShlKXtjb25zdCB0PXRoaXMubGV4ZXIsYT10LnN0cmVhbSxpPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHM7Zm9yKDshKDAsbi5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bi5FT0YpYnJlYWs7aVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHM9YS5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCBvPXRoaXMueHJlZi5mZXRjaElmUmVmKGkuRnx8aS5GaWx0ZXIpO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBuLk5hbWUpYz1vLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKG9bMF0pO2UgaW5zdGFuY2VvZiBuLk5hbWUmJihjPWUubmFtZSl9Y29uc3QgbD1hLnBvcztsZXQgaCx1O3N3aXRjaChjKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmg9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGEpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6aD10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztkZWZhdWx0Omg9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChhKX1pZihoPDFlMyYmcz4wKXtjb25zdCBlPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvczt1PWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxhPWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPGEtMTspdC5wdXNoKGVbcisrXTw8OHxlW3IrK10pO3I8YSYmdC5wdXNoKGVbcl0pO3JldHVybiBhKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGEuZ2V0Qnl0ZXMocytoKSk7YS5wb3M9ZTtjb25zdCByPXRoaXMuaW1hZ2VDYWNoZVt1XTtpZih2b2lkIDAhPT1yKXt0aGlzLmJ1ZjI9bi5DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtyLnJlc2V0KCk7cmV0dXJuIHJ9fWNvbnN0IGQ9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Zvcihjb25zdCBlIGluIGkpZC5zZXQoZSxpW2VdKTtsZXQgZj1hLm1ha2VTdWJTdHJlYW0obCxoLGQpO2UmJihmPWUuY3JlYXRlU3RyZWFtKGYsaCkpO2Y9dGhpcy5maWx0ZXIoZixkLGgpO2YuZGljdD1kO2lmKHZvaWQgMCE9PXUpe2YuY2FjaGVLZXk9ImlubGluZV9pbWdfIisgKyt0aGlzLl9pbWFnZUlkO3RoaXMuaW1hZ2VDYWNoZVt1XT1mfXRoaXMuYnVmMj1uLkNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBmfV9maW5kU3RyZWFtTGVuZ3RoKGUsdCl7Y29uc3R7c3RyZWFtOmF9PXRoaXMubGV4ZXI7YS5wb3M9ZTtjb25zdCByPXQubGVuZ3RoO2Zvcig7YS5wb3M8YS5lbmQ7KXtjb25zdCBuPWEucGVla0J5dGVzKDIwNDgpLGk9bi5sZW5ndGgtcjtpZihpPD0wKWJyZWFrO2xldCBzPTA7Zm9yKDtzPGk7KXtsZXQgaT0wO2Zvcig7aTxyJiZuW3MraV09PT10W2ldOylpKys7aWYoaT49cil7YS5wb3MrPXM7cmV0dXJuIGEucG9zLWV9cysrfWEucG9zKz1pfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBhPXRoaXMubGV4ZXI7bGV0IHM9YS5zdHJlYW07YS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IG89cy5wb3MtMTtsZXQgYz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpeygwLHIuaW5mbykoYEJhZCBsZW5ndGggIiR7YyYmYy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO2M9MH1zLnBvcz1vK2M7YS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmKDAsbi5pc0NtZCkodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSk7bGV0IHQ9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGUpO2lmKHQ8MCl7Y29uc3QgYT0xO2ZvcihsZXQgbj0xO248PWE7bisrKXtjb25zdCBhPWUubGVuZ3RoLW4sYz1lLnNsaWNlKDAsYSksbD10aGlzLl9maW5kU3RyZWFtTGVuZ3RoKG8sYyk7aWYobD49MCl7Y29uc3QgZT1zLnBlZWtCeXRlcyhhKzEpW2FdO2lmKCEoMCxpLmlzV2hpdGVTcGFjZSkoZSkpYnJlYWs7KDAsci5pbmZvKShgRm91bmQgIiR7KDAsci5ieXRlc1RvU3RyaW5nKShjKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTt0PWw7YnJlYWt9fWlmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKX1jPXQ7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3M9cy5tYWtlU3ViU3RyZWFtKG8sYyxlKTt0JiYocz10LmNyZWF0ZVN0cmVhbShzLGMpKTtzPXRoaXMuZmlsdGVyKHMsZSxjKTtzLmRpY3Q9ZTtyZXR1cm4gc31maWx0ZXIoZSx0LGEpe2xldCBpPXQuZ2V0KCJGIiwiRmlsdGVyIikscz10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGkgaW5zdGFuY2VvZiBuLk5hbWUpe0FycmF5LmlzQXJyYXkocykmJigwLHIud2FybikoIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsYSxzKX1sZXQgbz1hO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IHQ9aSxhPXM7Zm9yKGxldCBjPTAsbD10Lmxlbmd0aDtjPGw7KytjKXtpPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbY10pO2lmKCEoaSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtpfSJgKTtzPW51bGw7QXJyYXkuaXNBcnJheShhKSYmYyBpbiBhJiYocz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW2NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsbyxzKTtvPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEsbil7aWYoMD09PWEpeygwLHIud2FybikoYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBzLk51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gbj9uZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGguRmxhdGVTdHJlYW0oZSxhKSxhLG4pOm5ldyBoLkZsYXRlU3RyZWFtKGUsYSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKG4pe24uaGFzKCJFYXJseUNoYW5nZSIpJiYodD1uLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBwLlByZWRpY3RvclN0cmVhbShuZXcgZy5MWldTdHJlYW0oZSxhLHQpLGEsbil9cmV0dXJuIG5ldyBnLkxaV1N0cmVhbShlLGEsdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IGQuSnBlZ1N0cmVhbShlLGEsbik7Y2FzZSJKUFgiOmNhc2UiSlBYRGVjb2RlIjpyZXR1cm4gbmV3IGYuSnB4U3RyZWFtKGUsYSxuKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IG8uQXNjaWk4NVN0cmVhbShlLGEpO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpyZXR1cm4gbmV3IGMuQXNjaWlIZXhTdHJlYW0oZSxhKTtjYXNlIkNDRiI6Y2FzZSJDQ0lUVEZheERlY29kZSI6cmV0dXJuIG5ldyBsLkNDSVRURmF4U3RyZWFtKGUsYSxuKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBtLlJ1bkxlbmd0aFN0cmVhbShlLGEpO2Nhc2UiSkJJRzJEZWNvZGUiOnJldHVybiBuZXcgdS5KYmlnMlN0cmVhbShlLGEsbil9KDAsci53YXJuKShgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgcy5OdWxsU3RyZWFtfX19dC5QYXJzZXI9UGFyc2VyO2NvbnN0IGI9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXTt0aGlzLmtub3duQ29tbWFuZHM9dDt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7dGhpcy5iZWdpbklubGluZUltYWdlUG9zPS0xfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXBlZWtDaGFyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtCeXRlKCl9Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcix0PSExLGE9MCxuPTE7aWYoNDU9PT1lKXtuPS0xO2U9dGhpcy5uZXh0Q2hhcigpOzQ1PT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKX1lbHNlIDQzPT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKTtpZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXthPTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoKDAsaS5pc1doaXRlU3BhY2UpKGUpfHwtMT09PWUpeygwLHIuaW5mbykoYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcih0KX1sZXQgcz1lLTQ4LG89MCxjPTE7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wOylpZihlPj00OCYmZTw9NTcpe2NvbnN0IHI9ZS00ODtpZih0KW89MTAqbytyO2Vsc2V7MCE9PWEmJihhKj0xMCk7cz0xMCpzK3J9fWVsc2UgaWYoNDY9PT1lKXtpZigwIT09YSlicmVhazthPTF9ZWxzZSBpZig0NT09PWUpKDAsci53YXJuKSgiQmFkbHkgZm9ybWF0dGVkIG51bWJlcjogbWludXMgc2lnbiBpbiB0aGUgbWlkZGxlIik7ZWxzZXtpZig2OSE9PWUmJjEwMSE9PWUpYnJlYWs7ZT10aGlzLnBlZWtDaGFyKCk7aWYoNDM9PT1lfHw0NT09PWUpe2M9NDU9PT1lPy0xOjE7dGhpcy5uZXh0Q2hhcigpfWVsc2UgaWYoZTw0OHx8ZT41NylicmVhazt0PSEwfTAhPT1hJiYocy89YSk7dCYmKHMqPTEwKiooYypvKSk7cmV0dXJuIG4qc31nZXRTdHJpbmcoKXtsZXQgZT0xLHQ9ITE7Y29uc3QgYT10aGlzLnN0ckJ1ZjthLmxlbmd0aD0wO2xldCBuPXRoaXMubmV4dENoYXIoKTtmb3IoOzspe2xldCBpPSExO3N3aXRjaCgwfG4pe2Nhc2UtMTooMCxyLndhcm4pKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDQwOisrZTthLnB1c2goIigiKTticmVhaztjYXNlIDQxOmlmKDA9PS0tZSl7dGhpcy5uZXh0Q2hhcigpO3Q9ITB9ZWxzZSBhLnB1c2goIikiKTticmVhaztjYXNlIDkyOm49dGhpcy5uZXh0Q2hhcigpO3N3aXRjaChuKXtjYXNlLTE6KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSAxMTA6YS5wdXNoKCJcbiIpO2JyZWFrO2Nhc2UgMTE0OmEucHVzaCgiXHIiKTticmVhaztjYXNlIDExNjphLnB1c2goIlx0Iik7YnJlYWs7Y2FzZSA5ODphLnB1c2goIlxiIik7YnJlYWs7Y2FzZSAxMDI6YS5wdXNoKCJcZiIpO2JyZWFrO2Nhc2UgOTI6Y2FzZSA0MDpjYXNlIDQxOmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTticmVhaztjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6bGV0IGU9MTUmbjtuPXRoaXMubmV4dENoYXIoKTtpPSEwO2lmKG4+PTQ4JiZuPD01NSl7ZT0oZTw8MykrKDE1Jm4pO249dGhpcy5uZXh0Q2hhcigpO2lmKG4+PTQ4JiZuPD01NSl7aT0hMTtlPShlPDwzKSsoMTUmbil9fWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTticmVhaztjYXNlIDEzOjEwPT09dGhpcy5wZWVrQ2hhcigpJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWs7Y2FzZSAxMDpicmVhaztkZWZhdWx0OmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKX1icmVhaztkZWZhdWx0OmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKX1pZih0KWJyZWFrO2l8fChuPXRoaXMubmV4dENoYXIoKSl9cmV0dXJuIGEuam9pbigiIil9Z2V0TmFtZSgpe2xldCBlLHQ7Y29uc3QgYT10aGlzLnN0ckJ1ZjthLmxlbmd0aD0wO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWJbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYoYltlXSl7KDAsci53YXJuKSgiTGV4ZXJfZ2V0TmFtZTogTlVNQkVSIFNJR04gKCMpIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIGhleGFkZWNpbWFsIG51bWJlci4iKTthLnB1c2goIiMiKTticmVha31jb25zdCBuPXRvSGV4RGlnaXQoZSk7aWYoLTEhPT1uKXt0PWU7ZT10aGlzLm5leHRDaGFyKCk7Y29uc3QgaT10b0hleERpZ2l0KGUpO2lmKC0xPT09aSl7KDAsci53YXJuKShgTGV4ZXJfZ2V0TmFtZTogSWxsZWdhbCBkaWdpdCAoJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSkgaW4gaGV4YWRlY2ltYWwgbnVtYmVyLmApO2EucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7aWYoYltlXSlicmVhazthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29udGludWV9YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobjw8NHxpKSl9ZWxzZSBhLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfWVsc2UgYS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2EubGVuZ3RoPjEyNyYmKDAsci53YXJuKShgTmFtZSB0b2tlbiBpcyBsb25nZXIgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzcGVjOiAke2EubGVuZ3RofWApO3JldHVybiBuLk5hbWUuZ2V0KGEuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fCgwLHIud2FybikoYGdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAke2V9YCk6KDAsci53YXJuKSgiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9Z2V0SGV4U3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0ckJ1ZjtlLmxlbmd0aD0wO2xldCB0LGEsbj10aGlzLmN1cnJlbnRDaGFyLGk9ITA7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO2Zvcig7Oyl7aWYobjwwKXsoMCxyLndhcm4pKCJVbnRlcm1pbmF0ZWQgaGV4IHN0cmluZyIpO2JyZWFrfWlmKDYyPT09bil7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEhPT1iW25dKXtpZihpKXt0PXRvSGV4RGlnaXQobik7aWYoLTE9PT10KXt0aGlzLl9oZXhTdHJpbmdXYXJuKG4pO249dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfX1lbHNle2E9dG9IZXhEaWdpdChuKTtpZigtMT09PWEpe3RoaXMuX2hleFN0cmluZ1dhcm4obik7bj10aGlzLm5leHRDaGFyKCk7Y29udGludWV9ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodDw8NHxhKSl9aT0haTtuPXRoaXMubmV4dENoYXIoKX1lbHNlIG49dGhpcy5uZXh0Q2hhcigpfXJldHVybiBlLmpvaW4oIiIpfWdldE9iaigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gbi5FT0Y7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZigxIT09Ylt0XSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiB0aGlzLmdldE51bWJlcigpO2Nhc2UgNDA6cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5nZXROYW1lKCk7Y2FzZSA5MTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgiWyIpO2Nhc2UgOTM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoIl0iKTtjYXNlIDYwOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYwPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoIjw8Iil9cmV0dXJuIHRoaXMuZ2V0SGV4U3RyaW5nKCk7Y2FzZSA2Mjp0PXRoaXMubmV4dENoYXIoKTtpZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCI+PiIpfXJldHVybiBuLkNtZC5nZXQoIj4iKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgieyIpO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCJ9Iik7Y2FzZSA0MTp0aGlzLm5leHRDaGFyKCk7dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYElsbGVnYWwgY2hhcmFjdGVyOiAke3R9YCl9bGV0IGE9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZih0PDMyfHx0PjEyNyl7Y29uc3QgZT10aGlzLnBlZWtDaGFyKCk7aWYoZT49MzImJmU8PTEyNyl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoYSl9fWNvbnN0IGk9dGhpcy5rbm93bkNvbW1hbmRzO2xldCBzPXZvaWQgMCE9PWk/LlthXTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJiFiW3RdOyl7Y29uc3QgZT1hK1N0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYocyYmdm9pZCAwPT09aVtlXSlicmVhaztpZigxMjg9PT1hLmxlbmd0aCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogJHthLmxlbmd0aH1gKTthPWU7cz12b2lkIDAhPT1pPy5bYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIG4uQ21kLmdldChhKX1za2lwVG9OZXh0TGluZSgpe2xldCBlPXRoaXMuY3VycmVudENoYXI7Zm9yKDtlPj0wOyl7aWYoMTM9PT1lKXtlPXRoaXMubmV4dENoYXIoKTsxMD09PWUmJnRoaXMubmV4dENoYXIoKTticmVha31pZigxMD09PWUpe3RoaXMubmV4dENoYXIoKTticmVha31lPXRoaXMubmV4dENoYXIoKX19fXQuTGV4ZXI9TGV4ZXI7dC5MaW5lYXJpemF0aW9uPWNsYXNzIExpbmVhcml6YXRpb257c3RhdGljIGNyZWF0ZShlKXtmdW5jdGlvbiBnZXRJbnQoZSx0KXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2NvbnN0IHI9ZS5nZXQodCk7aWYoTnVtYmVyLmlzSW50ZWdlcihyKSYmKGE/cj49MDpyPjApKXJldHVybiByO3Rocm93IG5ldyBFcnJvcihgVGhlICIke3R9IiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfWNvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUpLHhyZWY6bnVsbH0pLGE9dC5nZXRPYmooKSxyPXQuZ2V0T2JqKCksaT10LmdldE9iaigpLHM9dC5nZXRPYmooKTtsZXQgbyxjO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmTnVtYmVyLmlzSW50ZWdlcihyKSYmKDAsbi5pc0NtZCkoaSwib2JqIikmJnMgaW5zdGFuY2VvZiBuLkRpY3QmJiJudW1iZXIiPT10eXBlb2Yobz1zLmdldCgiTGluZWFyaXplZCIpKSYmbz4wKSlyZXR1cm4gbnVsbDtpZigoYz1nZXRJbnQocywiTCIpKSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcignVGhlICJMIiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2VzIG5vdCBlcXVhbCB0aGUgc3RyZWFtIGxlbmd0aC4nKTtyZXR1cm57bGVuZ3RoOmMsaGludHM6ZnVuY3Rpb24gZ2V0SGludHMoZSl7Y29uc3QgdD1lLmdldCgiSCIpO2xldCBhO2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09KGE9dC5sZW5ndGgpfHw0PT09YSkpe2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGE9dFtlXTtpZighKE51bWJlci5pc0ludGVnZXIoYSkmJmE+MCkpdGhyb3cgbmV3IEVycm9yKGBIaW50ICgke2V9KSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJIaW50IGFycmF5IGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX0ocyksb2JqZWN0TnVtYmVyRmlyc3Q6Z2V0SW50KHMsIk8iKSxlbmRGaXJzdDpnZXRJbnQocywiRSIpLG51bVBhZ2VzOmdldEludChzLCJOIiksbWFpblhSZWZFbnRyaWVzT2Zmc2V0OmdldEludChzLCJUIikscGFnZUZpcnN0OnMuaGFzKCJQIik/Z2V0SW50KHMsIlAiLCEwKTowfX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkFzY2lpODVTdHJlYW09dm9pZCAwO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTt2YXIgcj1hKDE2OCksbj1hKDE0OSk7Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7KDAsbi5pc1doaXRlU3BhY2UpKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDsoMCxuLmlzV2hpdGVTcGFjZSkodCk7KXQ9ZS5nZXRCeXRlKCk7c1tpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKXNbaV09MTE3O3RoaXMuZW9mPSEwfWxldCBvPTA7Zm9yKGk9MDtpPDU7KytpKW89ODUqbysoc1tpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZvO28+Pj04fX19fXQuQXNjaWk4NVN0cmVhbT1Bc2NpaTg1U3RyZWFtfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT10LkRlY29kZVN0cmVhbT12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMTM5KTt2YXIgcj1hKDE1MSksbj1hKDE1NCk7Y29uc3QgaT1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyByLkJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDt0aGlzLnBvcz0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5lb2Y9ITE7dGhpcy5idWZmZXI9aTt0aGlzLm1pbkJ1ZmZlckxlbmd0aD01MTI7aWYoZSlmb3IoO3RoaXMubWluQnVmZmVyTGVuZ3RoPGU7KXRoaXMubWluQnVmZmVyTGVuZ3RoKj0yfWdldCBpc0VtcHR5KCl7Zm9yKDshdGhpcy5lb2YmJjA9PT10aGlzLmJ1ZmZlckxlbmd0aDspdGhpcy5yZWFkQmxvY2soKTtyZXR1cm4gMD09PXRoaXMuYnVmZmVyTGVuZ3RofWVuc3VyZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnVmZmVyO2lmKGU8PXQuYnl0ZUxlbmd0aClyZXR1cm4gdDtsZXQgYT10aGlzLm1pbkJ1ZmZlckxlbmd0aDtmb3IoO2E8ZTspYSo9Mjtjb25zdCByPW5ldyBVaW50OEFycmF5KGEpO3Iuc2V0KHQpO3JldHVybiB0aGlzLmJ1ZmZlcj1yfWdldEJ5dGUoKXtjb25zdCBlPXRoaXMucG9zO2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWU7KXtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLnJlYWRCbG9jaygpfXJldHVybiB0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMucG9zO2xldCBhO2lmKGUpe3RoaXMuZW5zdXJlQnVmZmVyKHQrZSk7YT10K2U7Zm9yKDshdGhpcy5lb2YmJnRoaXMuYnVmZmVyTGVuZ3RoPGE7KXRoaXMucmVhZEJsb2NrKCk7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aDthPnImJihhPXIpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCk7YT10aGlzLmJ1ZmZlckxlbmd0aH10aGlzLnBvcz1hO3JldHVybiB0aGlzLmJ1ZmZlci5zdWJhcnJheSh0LGEpfXJlc2V0KCl7dGhpcy5wb3M9MH1tYWtlU3ViU3RyZWFtKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IG4uU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxhKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fXQuRGVjb2RlU3RyZWFtPURlY29kZVN0cmVhbTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsYT0wO2Zvcihjb25zdCB0IG9mIGUpYSs9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIoYSk7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBhO3RyeXthPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXIrYS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIobikuc2V0KGEscik7dGhpcy5idWZmZXJMZW5ndGg9bn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBhPXQuZ2V0QmFzZVN0cmVhbXMoKTthJiZlLnB1c2goLi4uYSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQXNjaWlIZXhTdHJlYW09dm9pZCAwO3ZhciByPWEoMTY4KTtjbGFzcyBBc2NpaUhleFN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsYT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYobjwwKW49ZTtlbHNle2FbcisrXT1uPDw0fGU7bj0tMX19aWYobj49MCYmdGhpcy5lb2Ype2FbcisrXT1uPDw0O249LTF9dGhpcy5maXJzdERpZ2l0PW47dGhpcy5idWZmZXJMZW5ndGg9cn19dC5Bc2NpaUhleFN0cmVhbT1Bc2NpaUhleFN0cmVhbX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNzEpLG49YSgxNjgpLGk9YSgxNTApO2NsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDthIGluc3RhbmNlb2YgaS5EaWN0fHwoYT1pLkRpY3QuZW1wdHkpO2NvbnN0IG49e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgci5DQ0lUVEZheERlY29kZXIobix7SzphLmdldCgiSyIpLEVuZE9mTGluZTphLmdldCgiRW5kT2ZMaW5lIiksRW5jb2RlZEJ5dGVBbGlnbjphLmdldCgiRW5jb2RlZEJ5dGVBbGlnbiIpLENvbHVtbnM6YS5nZXQoIkNvbHVtbnMiKSxSb3dzOmEuZ2V0KCJSb3dzIiksRW5kT2ZCbG9jazphLmdldCgiRW5kT2ZCbG9jayIpLEJsYWNrSXMxOmEuZ2V0KCJCbGFja0lzMSIpfSl9cmVhZEJsb2NrKCl7Zm9yKDshdGhpcy5lb2Y7KXtjb25zdCBlPXRoaXMuY2NpdHRGYXhEZWNvZGVyLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJufXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoKzEpO3RoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWV9fX10LkNDSVRURmF4U3RyZWFtPUNDSVRURmF4U3RyZWFtfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNDSVRURmF4RGVjb2Rlcj12b2lkIDA7YSgyKTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7dmFyIHI9YSgxNDQpO2NvbnN0IG49LTEsaT1bWy0xLC0xXSxbLTEsLTFdLFs3LDhdLFs3LDddLFs2LDZdLFs2LDZdLFs2LDVdLFs2LDVdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdXSxzPVtbLTEsLTFdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNTYwXV0sbz1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sYz1bWy0xLC0xXSxbLTEsLTFdLFsxMiwtMl0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjA0OF0sWzEyLDIxMTJdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjI0MF0sWzEyLDIzMDRdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjM2OF0sWzEyLDI0MzJdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI0OTZdLFsxMiwyNTYwXSxbMTIsMjU2MF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMiw1Ml0sWzEyLDUyXSxbMTMsNjQwXSxbMTMsNzA0XSxbMTMsNzY4XSxbMTMsODMyXSxbMTIsNTVdLFsxMiw1NV0sWzEyLDU2XSxbMTIsNTZdLFsxMywxMjgwXSxbMTMsMTM0NF0sWzEzLDE0MDhdLFsxMywxNDcyXSxbMTIsNTldLFsxMiw1OV0sWzEyLDYwXSxbMTIsNjBdLFsxMywxNTM2XSxbMTMsMTYwMF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMywxNjY0XSxbMTMsMTcyOF0sWzEyLDMyMF0sWzEyLDMyMF0sWzEyLDM4NF0sWzEyLDM4NF0sWzEyLDQ0OF0sWzEyLDQ0OF0sWzEzLDUxMl0sWzEzLDU3Nl0sWzEyLDUzXSxbMTIsNTNdLFsxMiw1NF0sWzEyLDU0XSxbMTMsODk2XSxbMTMsOTYwXSxbMTMsMTAyNF0sWzEzLDEwODhdLFsxMywxMTUyXSxbMTMsMTIxNl0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdXSxsPVtbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzExLDIzXSxbMTEsMjNdLFsxMiw1MF0sWzEyLDUxXSxbMTIsNDRdLFsxMiw0NV0sWzEyLDQ2XSxbMTIsNDddLFsxMiw1N10sWzEyLDU4XSxbMTIsNjFdLFsxMiwyNTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE3XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTIsNDhdLFsxMiw0OV0sWzEyLDYyXSxbMTIsNjNdLFsxMiwzMF0sWzEyLDMxXSxbMTIsMzJdLFsxMiwzM10sWzEyLDQwXSxbMTIsNDFdLFsxMSwyMl0sWzExLDIyXSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzEyLDEyOF0sWzEyLDE5Ml0sWzEyLDI2XSxbMTIsMjddLFsxMiwyOF0sWzEyLDI5XSxbMTEsMTldLFsxMSwxOV0sWzExLDIwXSxbMTEsMjBdLFsxMiwzNF0sWzEyLDM1XSxbMTIsMzZdLFsxMiwzN10sWzEyLDM4XSxbMTIsMzldLFsxMSwyMV0sWzExLDIxXSxbMTIsNDJdLFsxMiw0M10sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzEwLDBdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl1dLGg9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO3QuQ0NJVFRGYXhEZWNvZGVyPWNsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlKXtsZXQgdCxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUubmV4dCl0aHJvdyBuZXcgRXJyb3IoJ0NDSVRURmF4RGVjb2RlciAtIGludmFsaWQgInNvdXJjZSIgcGFyYW1ldGVyLicpO3RoaXMuc291cmNlPWU7dGhpcy5lb2Y9ITE7dGhpcy5lbmNvZGluZz1hLkt8fDA7dGhpcy5lb2xpbmU9YS5FbmRPZkxpbmV8fCExO3RoaXMuYnl0ZUFsaWduPWEuRW5jb2RlZEJ5dGVBbGlnbnx8ITE7dGhpcy5jb2x1bW5zPWEuQ29sdW1uc3x8MTcyODt0aGlzLnJvd3M9YS5Sb3dzfHwwO3RoaXMuZW9ibG9jaz1hLkVuZE9mQmxvY2s/PyEwO3RoaXMuYmxhY2s9YS5CbGFja0lzMXx8ITE7dGhpcy5jb2RpbmdMaW5lPW5ldyBVaW50MzJBcnJheSh0aGlzLmNvbHVtbnMrMSk7dGhpcy5yZWZMaW5lPW5ldyBVaW50MzJBcnJheSh0aGlzLmNvbHVtbnMrMik7dGhpcy5jb2RpbmdMaW5lWzBdPXRoaXMuY29sdW1uczt0aGlzLmNvZGluZ1Bvcz0wO3RoaXMucm93PTA7dGhpcy5uZXh0TGluZTJEPXRoaXMuZW5jb2Rpbmc8MDt0aGlzLmlucHV0Qml0cz0wO3RoaXMuaW5wdXRCdWY9MDt0aGlzLm91dHB1dEJpdHM9MDt0aGlzLnJvd3NEb25lPSExO2Zvcig7MD09PSh0PXRoaXMuX2xvb2tCaXRzKDEyKSk7KXRoaXMuX2VhdEJpdHMoMSk7MT09PXQmJnRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5uZXh0TGluZTJEPSF0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfX1yZWFkTmV4dENoYXIoKXtpZih0aGlzLmVvZilyZXR1cm4tMTtjb25zdCBlPXRoaXMucmVmTGluZSx0PXRoaXMuY29kaW5nTGluZSxhPXRoaXMuY29sdW1ucztsZXQgaSxzLG8sYyxsO2lmKDA9PT10aGlzLm91dHB1dEJpdHMpe3RoaXMucm93c0RvbmUmJih0aGlzLmVvZj0hMCk7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5lcnI9ITE7bGV0IG8sbCxoO2lmKHRoaXMubmV4dExpbmUyRCl7Zm9yKGM9MDt0W2NdPGE7KytjKWVbY109dFtjXTtlW2MrK109YTtlW2NdPWE7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7aT0wO3M9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGE7KXtvPXRoaXMuX2dldFR3b0RpbUNvZGUoKTtzd2l0Y2gobyl7Y2FzZSAwOnRoaXMuX2FkZFBpeGVscyhlW2krMV0scyk7ZVtpKzFdPGEmJihpKz0yKTticmVhaztjYXNlIDE6bz1sPTA7aWYocyl7ZG97bys9aD10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShoPj02NCk7ZG97bCs9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCl9ZWxzZXtkb3tvKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tsKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KX10aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rbyxzKTt0W3RoaXMuY29kaW5nUG9zXTxhJiZ0aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rbCwxXnMpO2Zvcig7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08YTspaSs9MjticmVhaztjYXNlIDc6dGhpcy5fYWRkUGl4ZWxzKGVbaV0rMyxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA1OnRoaXMuX2FkZFBpeGVscyhlW2ldKzIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgMzp0aGlzLl9hZGRQaXhlbHMoZVtpXSsxLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytpO2Zvcig7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08YTspaSs9Mn1icmVhaztjYXNlIDI6dGhpcy5fYWRkUGl4ZWxzKGVbaV0scyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgODp0aGlzLl9hZGRQaXhlbHNOZWcoZVtpXS0zLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7aT4wPy0taTorK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgNjp0aGlzLl9hZGRQaXhlbHNOZWcoZVtpXS0yLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7aT4wPy0taTorK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgNDp0aGlzLl9hZGRQaXhlbHNOZWcoZVtpXS0xLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7aT4wPy0taTorK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2Ugbjp0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OigwLHIuaW5mbykoImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGEsMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO3M9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGE7KXtvPTA7aWYocylkb3tvKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KTtlbHNlIGRve28rPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpO3NePTF9fWxldCB1PSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe289dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7byE9PW4mJjEhPT1vOyl7dGhpcy5fZWF0Qml0cygxKTtvPXRoaXMuX2xvb2tCaXRzKDEyKX1lbHNlIGZvcig7MD09PW87KXt0aGlzLl9lYXRCaXRzKDEpO289dGhpcy5fbG9va0JpdHMoMTIpfWlmKDE9PT1vKXt0aGlzLl9lYXRCaXRzKDEyKTt1PSEwfWVsc2Ugbz09PW4mJih0aGlzLmVvZj0hMCl9ZWxzZSB0aGlzLnJvd3NEb25lPSEwO2lmKCF0aGlzLmVvZiYmdGhpcy5lbmNvZGluZz4wJiYhdGhpcy5yb3dzRG9uZSl7dGhpcy5uZXh0TGluZTJEPSF0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfWlmKHRoaXMuZW9ibG9jayYmdSYmdGhpcy5ieXRlQWxpZ24pe289dGhpcy5fbG9va0JpdHMoMTIpO2lmKDE9PT1vKXt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lbmNvZGluZz49MClmb3IoYz0wO2M8NDsrK2Mpe289dGhpcy5fbG9va0JpdHMoMTIpOzEhPT1vJiYoMCxyLmluZm8pKCJiYWQgcnRjIGNvZGU6ICIrbyk7dGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfX10aGlzLmVvZj0hMH19ZWxzZSBpZih0aGlzLmVyciYmdGhpcy5lb2xpbmUpe2Zvcig7Oyl7bz10aGlzLl9sb29rQml0cygxMyk7aWYobz09PW4pe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKG8+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZvKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe2w9MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtvPTg7bD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+byl7bDw8PW87MSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKTt0aGlzLm91dHB1dEJpdHMtPW87bz0wfWVsc2V7bDw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7by09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihvPjApe2w8PD1vO289MH19fXdoaWxlKG8pfXRoaXMuYmxhY2smJihsXj0yNTUpO3JldHVybiBsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgbj10aGlzLmNvZGluZ1BvcztpZihlPmFbbl0pe2lmKGU+dGhpcy5jb2x1bW5zKXsoMCxyLmluZm8pKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZuXnQmJisrbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IG49dGhpcy5jb2RpbmdQb3M7aWYoZT5hW25dKXtpZihlPnRoaXMuY29sdW1ucyl7KDAsci5pbmZvKSgicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmbl50JiYrK247YVtuXT1lfWVsc2UgaWYoZTxhW25dKXtpZihlPDApeygwLHIuaW5mbykoImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO24+MCYmZTxhW24tMV07KS0tbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fZmluZFRhYmxlQ29kZShlLHQsYSxyKXtjb25zdCBpPXJ8fDA7Zm9yKGxldCByPWU7cjw9dDsrK3Ipe2xldCBlPXRoaXMuX2xvb2tCaXRzKHIpO2lmKGU9PT1uKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighaXx8ZT49aSl7Y29uc3QgdD1hW2UtaV07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPWlbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxpKTtpZihlWzBdJiZlWzJdKXJldHVybiBlWzFdfSgwLHIuaW5mbykoIkJhZCB0d28gZGltIGNvZGUiKTtyZXR1cm4gbn1fZ2V0V2hpdGVDb2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cygxMik7aWYodD09PW4pcmV0dXJuIDE7ZT10Pj41PT0wP3NbdF06b1t0Pj4zXTtpZihlWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDksbyk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIscyk7aWYoZVswXSlyZXR1cm4gZVsxXX0oMCxyLmluZm8pKCJiYWQgd2hpdGUgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2dldEJsYWNrQ29kZSgpe2xldCBlLHQ7aWYodGhpcy5lb2Jsb2NrKXtlPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihlPT09bilyZXR1cm4gMTt0PWU+Pjc9PTA/Y1tlXTplPj45PT0wJiZlPj43IT0wP2xbKGU+PjEpLTY0XTpoW2U+PjddO2lmKHRbMF0+MCl7dGhpcy5fZWF0Qml0cyh0WzBdKTtyZXR1cm4gdFsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDIsNixoKTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLGwsNjQpO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDEwLDEzLGMpO2lmKGVbMF0pcmV0dXJuIGVbMV19KDAsci5pbmZvKSgiYmFkIGJsYWNrIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9sb29rQml0cyhlKXtsZXQgdDtmb3IoO3RoaXMuaW5wdXRCaXRzPGU7KXtpZigtMT09PSh0PXRoaXMuc291cmNlLm5leHQoKSkpcmV0dXJuIDA9PT10aGlzLmlucHV0Qml0cz9uOnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GbGF0ZVN0cmVhbT12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO3ZhciByPWEoMTY4KSxuPWEoMTQ0KTtjb25zdCBpPW5ldyBJbnQzMkFycmF5KFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSkscz1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxvPW5ldyBJbnQzMkFycmF5KFsxLDIsMyw0LDY1NTQxLDY1NTQzLDEzMTA4MSwxMzEwODUsMTk2NjI1LDE5NjYzMywyNjIxNzcsMjYyMTkzLDMyNzc0NSwzMjc3NzcsMzkzMzQ1LDM5MzQwOSw0NTkwMDksNDU5MTM3LDUyNDgwMSw1MjUwNTcsNTkwODQ5LDU5MTM2MSw2NTc0MDksNjU4NDMzLDcyNDk5Myw3MjcwNDEsNzk0NjI1LDc5ODcyMSw4NjgzNTMsODc2NTQ1XSksYz1bbmV3IEludDMyQXJyYXkoWzQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTYsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg0LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OCw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjgsNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMyLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5ZTQsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY0LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjQsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkyLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Niw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzYsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQwLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOCw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzIsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMCw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODgsNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUyLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Miw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzYsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA0LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OCw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI4LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Niw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjAsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgwLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NCw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTIsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc2LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTgsNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg2LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MCw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzAsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM0LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMiw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjYsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNiw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTQsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU4LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OCw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDIsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDEwLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NCw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIyLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MCw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTQsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc0LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOCw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDYsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcwLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzAsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk4LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Miw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODIsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ2LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNCw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzgsNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNyw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODUsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ5LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OSw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzMsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTkwMDAxLDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NSw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI1LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Myw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTcsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc3LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MSw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDksNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDczLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjEsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg5LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Myw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzMsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM3LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNSw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjksNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOSw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTcsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYxLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MSw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDUsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEzLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Nyw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE5LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Nyw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTEsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcxLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNSw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDMsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY3LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjcsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk1LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OSw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzksNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQzLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMSw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzUsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMyw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTEsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU1LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NSw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzksNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA3LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MSw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMxLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OSw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjMsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgzLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Nyw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTUsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc5XSksOV0sbD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3QgYT1lLmdldEJ5dGUoKSxyPWUuZ2V0Qnl0ZSgpO2lmKC0xPT09YXx8LTE9PT1yKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBJbnZhbGlkIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZig4IT0oMTUmYSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKCgoYTw8OCkrciklMzEhPTApdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYEJhZCBGQ0hFQ0sgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7aWYoMzImcil0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgRkRJQ1QgYml0IHNldCBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTt0aGlzLmNvZGVTaXplPTA7dGhpcy5jb2RlQnVmPTB9Z2V0Qml0cyhlKXtjb25zdCB0PXRoaXMuc3RyO2xldCBhLHI9dGhpcy5jb2RlU2l6ZSxpPXRoaXMuY29kZUJ1Zjtmb3IoO3I8ZTspe2lmKC0xPT09KGE9dC5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7aXw9YTw8cjtyKz04fWE9aSYoMTw8ZSktMTt0aGlzLmNvZGVCdWY9aT4+ZTt0aGlzLmNvZGVTaXplPXItPWU7cmV0dXJuIGF9Z2V0Q29kZShlKXtjb25zdCB0PXRoaXMuc3RyLGE9ZVswXSxyPWVbMV07bGV0IGkscz10aGlzLmNvZGVTaXplLG89dGhpcy5jb2RlQnVmO2Zvcig7czxyJiYtMSE9PShpPXQuZ2V0Qnl0ZSgpKTspe298PWk8PHM7cys9OH1jb25zdCBjPWFbbyYoMTw8ciktMV0sbD1jPj4xNixoPTY1NTM1JmM7aWYobDwxfHxzPGwpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9bz4+bDt0aGlzLmNvZGVTaXplPXMtbDtyZXR1cm4gaH1nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhLHI9MDtmb3IoYT0wO2E8dDsrK2EpZVthXT5yJiYocj1lW2FdKTtjb25zdCBuPTE8PHIsaT1uZXcgSW50MzJBcnJheShuKTtmb3IobGV0IHM9MSxvPTAsYz0yO3M8PXI7KytzLG88PD0xLGM8PD0xKWZvcihsZXQgcj0wO3I8dDsrK3IpaWYoZVtyXT09PXMpe2xldCBlPTAsdD1vO2ZvcihhPTA7YTxzOysrYSl7ZT1lPDwxfDEmdDt0Pj49MX1mb3IoYT1lO2E8bjthKz1jKWlbYV09czw8MTZ8cjsrK299cmV0dXJuW2kscl19cmVhZEJsb2NrKCl7bGV0IGUsdDtjb25zdCBhPXRoaXMuc3RyO2xldCByLGgsdT10aGlzLmdldEJpdHMoMyk7MSZ1JiYodGhpcy5lb2Y9ITApO3U+Pj0xO2lmKDA9PT11KXtsZXQgdDtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtsZXQgcj10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3J8PXQ8PDg7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7bGV0IGk9dDtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtpfD10PDw4O2lmKGkhPT0oNjU1MzUmfnIpJiYoMCE9PXJ8fDAhPT1pKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIHVuY29tcHJlc3NlZCBibG9jayBsZW5ndGggaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPTA7dGhpcy5jb2RlU2l6ZT0wO2NvbnN0IHM9dGhpcy5idWZmZXJMZW5ndGgsbz1zK3I7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKTt0aGlzLmJ1ZmZlckxlbmd0aD1vO2lmKDA9PT1yKS0xPT09YS5wZWVrQnl0ZSgpJiYodGhpcy5lb2Y9ITApO2Vsc2V7Y29uc3QgdD1hLmdldEJ5dGVzKHIpO2Uuc2V0KHQscyk7dC5sZW5ndGg8ciYmKHRoaXMuZW9mPSEwKX1yZXR1cm59aWYoMT09PXUpe3I9YztoPWx9ZWxzZXtpZigyIT09dSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsYT10aGlzLmdldEJpdHMoNSkrMSxuPXRoaXMuZ2V0Qml0cyg0KSs0LHM9bmV3IFVpbnQ4QXJyYXkoaS5sZW5ndGgpO2xldCBvO2ZvcihvPTA7bzxuOysrbylzW2lbb11dPXRoaXMuZ2V0Qml0cygzKTtjb25zdCBjPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUocyk7dD0wO289MDtjb25zdCBsPWUrYSx1PW5ldyBVaW50OEFycmF5KGwpO2xldCBkLGYsZztmb3IoO288bDspe2NvbnN0IGU9dGhpcy5nZXRDb2RlKGMpO2lmKDE2PT09ZSl7ZD0yO2Y9MztnPXR9ZWxzZSBpZigxNz09PWUpe2Q9MztmPTM7Zz10PTB9ZWxzZXtpZigxOCE9PWUpe3VbbysrXT10PWU7Y29udGludWV9ZD03O2Y9MTE7Zz10PTB9bGV0IGE9dGhpcy5nZXRCaXRzKGQpK2Y7Zm9yKDthLS0gPjA7KXVbbysrXT1nfXI9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZSh1LnN1YmFycmF5KDAsZSkpO2g9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZSh1LnN1YmFycmF5KGUsbCkpfX1lPXRoaXMuYnVmZmVyO2xldCBkPWU/ZS5sZW5ndGg6MCxmPXRoaXMuYnVmZmVyTGVuZ3RoO2Zvcig7Oyl7bGV0IGE9dGhpcy5nZXRDb2RlKHIpO2lmKGE8MjU2KXtpZihmKzE+PWQpe2U9dGhpcy5lbnN1cmVCdWZmZXIoZisxKTtkPWUubGVuZ3RofWVbZisrXT1hO2NvbnRpbnVlfWlmKDI1Nj09PWEpe3RoaXMuYnVmZmVyTGVuZ3RoPWY7cmV0dXJufWEtPTI1NzthPXNbYV07bGV0IG49YT4+MTY7bj4wJiYobj10aGlzLmdldEJpdHMobikpO3Q9KDY1NTM1JmEpK247YT10aGlzLmdldENvZGUoaCk7YT1vW2FdO249YT4+MTY7bj4wJiYobj10aGlzLmdldEJpdHMobikpO2NvbnN0IGk9KDY1NTM1JmEpK247aWYoZit0Pj1kKXtlPXRoaXMuZW5zdXJlQnVmZmVyKGYrdCk7ZD1lLmxlbmd0aH1mb3IobGV0IGE9MDthPHQ7KythLCsrZillW2ZdPWVbZi1pXX19fXQuRmxhdGVTdHJlYW09RmxhdGVTdHJlYW19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJTdHJlYW09dm9pZCAwO2EoMTM5KTt2YXIgcj1hKDE1MSksbj1hKDE2OCksaT1hKDE1MCkscz1hKDE3NCksbz1hKDE0NCk7Y2xhc3MgSmJpZzJTdHJlYW0gZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1hfWdldCBieXRlcygpe3JldHVybigwLG8uc2hhZG93KSh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGU9bmV3IHMuSmJpZzJJbWFnZSx0PVtdO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPXRoaXMucGFyYW1zLmdldCgiSkJJRzJHbG9iYWxzIik7aWYoZSBpbnN0YW5jZW9mIHIuQmFzZVN0cmVhbSl7Y29uc3QgYT1lLmdldEJ5dGVzKCk7dC5wdXNoKHtkYXRhOmEsc3RhcnQ6MCxlbmQ6YS5sZW5ndGh9KX19dC5wdXNoKHtkYXRhOnRoaXMuYnl0ZXMsc3RhcnQ6MCxlbmQ6dGhpcy5ieXRlcy5sZW5ndGh9KTtjb25zdCBhPWUucGFyc2VDaHVua3ModCksbj1hLmxlbmd0aDtmb3IobGV0IGU9MDtlPG47ZSsrKWFbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5lb2Y9ITB9fXQuSmJpZzJTdHJlYW09SmJpZzJTdHJlYW19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJJbWFnZT12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMTM5KTthKDIpO3ZhciByPWEoMTQ0KSxuPWEoMTQ5KSxpPWEoMTc1KSxzPWEoMTcxKTtjbGFzcyBKYmlnMkVycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBKQklHMiBlcnJvcjogJHtlfWAsIkpiaWcyRXJyb3IiKX19Y2xhc3MgQ29udGV4dENhY2hle2dldENvbnRleHRzKGUpe3JldHVybiBlIGluIHRoaXM/dGhpc1tlXTp0aGlzW2VdPW5ldyBJbnQ4QXJyYXkoNjU1MzYpfX1jbGFzcyBEZWNvZGluZ0NvbnRleHR7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGF0YT1lO3RoaXMuc3RhcnQ9dDt0aGlzLmVuZD1hfWdldCBkZWNvZGVyKCl7Y29uc3QgZT1uZXcgaS5Bcml0aG1ldGljRGVjb2Rlcih0aGlzLmRhdGEsdGhpcy5zdGFydCx0aGlzLmVuZCk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImRlY29kZXIiLGUpfWdldCBjb250ZXh0Q2FjaGUoKXtjb25zdCBlPW5ldyBDb250ZXh0Q2FjaGU7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImNvbnRleHRDYWNoZSIsZSl9fWNvbnN0IG89MioqMzEtMSxjPS0oMioqMzEpO2Z1bmN0aW9uIGRlY29kZUludGVnZXIoZSx0LGEpe2NvbnN0IHI9ZS5nZXRDb250ZXh0cyh0KTtsZXQgbj0xO2Z1bmN0aW9uIHJlYWRCaXRzKGUpe2xldCB0PTA7Zm9yKGxldCBpPTA7aTxlO2krKyl7Y29uc3QgZT1hLnJlYWRCaXQocixuKTtuPW48MjU2P248PDF8ZTo1MTEmKG48PDF8ZSl8MjU2O3Q9dDw8MXxlfXJldHVybiB0Pj4+MH1jb25zdCBpPXJlYWRCaXRzKDEpLHM9cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMzIpKzQ0MzY6cmVhZEJpdHMoMTIpKzM0MDpyZWFkQml0cyg4KSs4NDpyZWFkQml0cyg2KSsyMDpyZWFkQml0cyg0KSs0OnJlYWRCaXRzKDIpO2xldCBsOzA9PT1pP2w9czpzPjAmJihsPS1zKTtyZXR1cm4gbD49YyYmbDw9bz9sOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IG49MTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtuPW48PDF8dC5yZWFkQml0KHIsbil9cmV0dXJuIGE8MzE/biYoMTw8YSktMToyMTQ3NDgzNjQ3Jm59Y29uc3QgbD1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLGg9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLHU9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxkPVszOTcxNywxOTQxLDIyOSw0MDVdLGY9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsYSxyLG4saSxzLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxhLCExKX1pZigwPT09ciYmIWkmJiFuJiY0PT09cy5sZW5ndGgmJjM9PT1zWzBdLngmJi0xPT09c1swXS55JiYtMz09PXNbMV0ueCYmLTE9PT1zWzFdLnkmJjI9PT1zWzJdLngmJi0yPT09c1syXS55JiYtMj09PXNbM10ueCYmLTI9PT1zWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsYSl7Y29uc3Qgcj1hLmRlY29kZXIsbj1hLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxpPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKyl7aD1pW29dPW5ldyBVaW50OEFycmF5KGUpO3U9bzwxP2g6aVtvLTFdO2Q9bzwyP2g6aVtvLTJdO3M9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NDtmb3IoYz0wO2M8ZTtjKyspe2hbY109bD1yLnJlYWRCaXQobixzKTtzPSgzMTczNSZzKTw8MXwoYyszPGU/ZFtjKzNdPDwxMTowKXwoYys0PGU/dVtjKzRdPDw0OjApfGx9fXJldHVybiBpfSh0LGEsbyk7Y29uc3QgYz0hIWksbD1oW3JdLmNvbmNhdChzKTtsLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgdT1sLmxlbmd0aCxmPW5ldyBJbnQ4QXJyYXkodSksZz1uZXcgSW50OEFycmF5KHUpLHA9W107bGV0IG0sYix5PTAsdz0wLFM9MCx4PTA7Zm9yKGI9MDtiPHU7YisrKXtmW2JdPWxbYl0ueDtnW2JdPWxbYl0ueTt3PU1hdGgubWluKHcsbFtiXS54KTtTPU1hdGgubWF4KFMsbFtiXS54KTt4PU1hdGgubWluKHgsbFtiXS55KTtiPHUtMSYmbFtiXS55PT09bFtiKzFdLnkmJmxbYl0ueD09PWxbYisxXS54LTE/eXw9MTw8dS0xLWI6cC5wdXNoKGIpfWNvbnN0IEM9cC5sZW5ndGgsdj1uZXcgSW50OEFycmF5KEMpLGs9bmV3IEludDhBcnJheShDKSxPPW5ldyBVaW50MTZBcnJheShDKTtmb3IobT0wO208QzttKyspe2I9cFttXTt2W21dPWxbYl0ueDtrW21dPWxbYl0ueTtPW21dPTE8PHUtMS1ifWNvbnN0IFQ9LXcsTT0teCxFPXQtUyxEPWRbcl07bGV0IE49bmV3IFVpbnQ4QXJyYXkodCk7Y29uc3QgUj1bXSxMPW8uZGVjb2RlciwkPW8uY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpO2xldCBfLGosVSxYLEgscT0wLHo9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpZihuKXtxXj1MLnJlYWRCaXQoJCxEKTtpZihxKXtSLnB1c2goTik7Y29udGludWV9fU49bmV3IFVpbnQ4QXJyYXkoTik7Ui5wdXNoKE4pO2ZvcihfPTA7Xzx0O18rKyl7aWYoYyYmaVtlXVtfXSl7TltfXT0wO2NvbnRpbnVlfWlmKF8+PVQmJl88RSYmZT49TSl7ej16PDwxJnk7Zm9yKGI9MDtiPEM7YisrKXtqPWUra1tiXTtVPV8rdltiXTtYPVJbal1bVV07aWYoWCl7WD1PW2JdO3p8PVh9fX1lbHNle3o9MDtIPXUtMTtmb3IoYj0wO2I8dTtiKyssSC0tKXtVPV8rZltiXTtpZihVPj0wJiZVPHQpe2o9ZStnW2JdO2lmKGo+PTApe1g9UltqXVtVXTtYJiYoenw9WDw8SCl9fX19Y29uc3QgYT1MLnJlYWRCaXQoJCx6KTtOW19dPWF9fXJldHVybiBSfWZ1bmN0aW9uIGRlY29kZVJlZmluZW1lbnQoZSx0LGEscixuLGkscyxvLGMpe2xldCBsPXVbYV0uY29kaW5nOzA9PT1hJiYobD1sLmNvbmNhdChbb1swXV0pKTtjb25zdCBoPWwubGVuZ3RoLGQ9bmV3IEludDMyQXJyYXkoaCksZz1uZXcgSW50MzJBcnJheShoKTtsZXQgcDtmb3IocD0wO3A8aDtwKyspe2RbcF09bFtwXS54O2dbcF09bFtwXS55fWxldCBtPXVbYV0ucmVmZXJlbmNlOzA9PT1hJiYobT1tLmNvbmNhdChbb1sxXV0pKTtjb25zdCBiPW0ubGVuZ3RoLHk9bmV3IEludDMyQXJyYXkoYiksdz1uZXcgSW50MzJBcnJheShiKTtmb3IocD0wO3A8YjtwKyspe3lbcF09bVtwXS54O3dbcF09bVtwXS55fWNvbnN0IFM9clswXS5sZW5ndGgseD1yLmxlbmd0aCxDPWZbYV0sdj1bXSxrPWMuZGVjb2RlcixPPWMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBUPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYocyl7VF49ay5yZWFkQml0KE8sQyk7aWYoVCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIil9Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTt2LnB1c2godCk7Zm9yKGxldCBzPTA7czxlO3MrKyl7bGV0IG8sYyxsPTA7Zm9yKHA9MDtwPGg7cCsrKXtvPWErZ1twXTtjPXMrZFtwXTtvPDB8fGM8MHx8Yz49ZT9sPDw9MTpsPWw8PDF8dltvXVtjXX1mb3IocD0wO3A8YjtwKyspe289YSt3W3BdLWk7Yz1zK3lbcF0tbjtvPDB8fG8+PXh8fGM8MHx8Yz49Uz9sPDw9MTpsPWw8PDF8cltvXVtjXX1jb25zdCB1PWsucmVhZEJpdChPLGwpO3Rbc109dX19cmV0dXJuIHZ9ZnVuY3Rpb24gZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxyLG4saSxzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5KXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3Qgdz1bXTtsZXQgUyx4O2ZvcihTPTA7UzxyO1MrKyl7eD1uZXcgVWludDhBcnJheShhKTtpZihuKWZvcihsZXQgZT0wO2U8YTtlKyspeFtlXT1uO3cucHVzaCh4KX1jb25zdCBDPW0uZGVjb2Rlcix2PW0uY29udGV4dENhY2hlO2xldCBrPWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKHYsIklBRFQiLEMpLE89MDtTPTA7Zm9yKDtTPGk7KXtrKz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIodiwiSUFEVCIsQyk7Tys9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKHYsIklBRlMiLEMpO2xldCByPU87Zm9yKDs7KXtsZXQgbj0wO3M+MSYmKG49ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIodiwiSUFJVCIsQykpO2NvbnN0IGk9cyprK24sTz1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRCh2LEMsYyksVD10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKHYsIklBUkkiLEMpKTtsZXQgTT1vW09dLEU9TVswXS5sZW5ndGgsRD1NLmxlbmd0aDtpZihUKXtjb25zdCBlPWRlY29kZUludGVnZXIodiwiSUFSRFciLEMpLHQ9ZGVjb2RlSW50ZWdlcih2LCJJQVJESCIsQyk7RSs9ZTtEKz10O009ZGVjb2RlUmVmaW5lbWVudChFLEQsZyxNLChlPj4xKStkZWNvZGVJbnRlZ2VyKHYsIklBUkRYIixDKSwodD4+MSkrZGVjb2RlSW50ZWdlcih2LCJJQVJEWSIsQyksITEscCxtKX1jb25zdCBOPWktKDEmdT8wOkQtMSksUj1yLSgyJnU/RS0xOjApO2xldCBMLCQsXztpZihsKXtmb3IoTD0wO0w8RDtMKyspe3g9d1tSK0xdO2lmKCF4KWNvbnRpbnVlO189TVtMXTtjb25zdCBlPU1hdGgubWluKGEtTixFKTtzd2l0Y2goZCl7Y2FzZSAwOmZvcigkPTA7JDxlOyQrKyl4W04rJF18PV9bJF07YnJlYWs7Y2FzZSAyOmZvcigkPTA7JDxlOyQrKyl4W04rJF1ePV9bJF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtkfSBpcyBub3Qgc3VwcG9ydGVkYCl9fXIrPUQtMX1lbHNle2ZvcigkPTA7JDxEOyQrKyl7eD13W04rJF07aWYoeCl7Xz1NWyRdO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPEU7TCsrKXhbUitMXXw9X1tMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPEU7TCsrKXhbUitMXV49X1tMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19fXIrPUUtMX1TKys7Y29uc3Qgaj1lP2YudGFibGVEZWx0YVMuZGVjb2RlKHkpOmRlY29kZUludGVnZXIodiwiSUFEUyIsQyk7aWYobnVsbD09PWopYnJlYWs7cis9aitofX1yZXR1cm4gd31mdW5jdGlvbiByZWFkU2VnbWVudEhlYWRlcihlLHQpe2NvbnN0IGE9e307YS5udW1iZXI9KDAsbi5yZWFkVWludDMyKShlLHQpO2NvbnN0IHI9ZVt0KzRdLGk9NjMmcjtpZighbFtpXSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBzZWdtZW50IHR5cGU6ICIraSk7YS50eXBlPWk7YS50eXBlTmFtZT1sW2ldO2EuZGVmZXJyZWROb25SZXRhaW49ISEoMTI4JnIpO2NvbnN0IHM9ISEoNjQmciksbz1lW3QrNV07bGV0IGM9bz4+NSY3O2NvbnN0IGg9WzMxJm9dO2xldCB1PXQrNjtpZig3PT09byl7Yz01MzY4NzA5MTEmKDAsbi5yZWFkVWludDMyKShlLHUtMSk7dSs9MztsZXQgdD1jKzc+PjM7aFswXT1lW3UrK107Zm9yKDstLXQ+MDspaC5wdXNoKGVbdSsrXSl9ZWxzZSBpZig1PT09b3x8Nj09PW8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgcmVmZXJyZWQtdG8gZmxhZ3MiKTthLnJldGFpbkJpdHM9aDtsZXQgZD00O2EubnVtYmVyPD0yNTY/ZD0xOmEubnVtYmVyPD02NTUzNiYmKGQ9Mik7Y29uc3QgZj1bXTtsZXQgcCxtO2ZvcihwPTA7cDxjO3ArKyl7bGV0IHQ7dD0xPT09ZD9lW3VdOjI9PT1kPygwLG4ucmVhZFVpbnQxNikoZSx1KTooMCxuLnJlYWRVaW50MzIpKGUsdSk7Zi5wdXNoKHQpO3UrPWR9YS5yZWZlcnJlZFRvPWY7aWYocyl7YS5wYWdlQXNzb2NpYXRpb249KDAsbi5yZWFkVWludDMyKShlLHUpO3UrPTR9ZWxzZSBhLnBhZ2VBc3NvY2lhdGlvbj1lW3UrK107YS5sZW5ndGg9KDAsbi5yZWFkVWludDMyKShlLHUpO3UrPTQ7aWYoNDI5NDk2NzI5NT09PWEubGVuZ3RoKXtpZigzOCE9PWkpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgdW5rbm93biBzZWdtZW50IGxlbmd0aCIpO3tjb25zdCB0PXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx1KSxyPSEhKDEmZVt1K2ddKSxuPTYsaT1uZXcgVWludDhBcnJheShuKTtpZighcil7aVswXT0yNTU7aVsxXT0xNzJ9aVsyXT10LmhlaWdodD4+PjI0JjI1NTtpWzNdPXQuaGVpZ2h0Pj4xNiYyNTU7aVs0XT10LmhlaWdodD4+OCYyNTU7aVs1XT0yNTUmdC5oZWlnaHQ7Zm9yKHA9dSxtPWUubGVuZ3RoO3A8bTtwKyspe2xldCB0PTA7Zm9yKDt0PG4mJmlbdF09PT1lW3ArdF07KXQrKztpZih0PT09bil7YS5sZW5ndGg9cCtuO2JyZWFrfX1pZig0Mjk0OTY3Mjk1PT09YS5sZW5ndGgpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNlZ21lbnQgZW5kIHdhcyBub3QgZm91bmQiKX19YS5oZWFkZXJFbmQ9dTtyZXR1cm4gYX1mdW5jdGlvbiByZWFkU2VnbWVudHMoZSx0LGEscil7Y29uc3Qgbj1bXTtsZXQgaT1hO2Zvcig7aTxyOyl7Y29uc3QgYT1yZWFkU2VnbWVudEhlYWRlcih0LGkpO2k9YS5oZWFkZXJFbmQ7Y29uc3Qgcj17aGVhZGVyOmEsZGF0YTp0fTtpZighZS5yYW5kb21BY2Nlc3Mpe3Iuc3RhcnQ9aTtpKz1hLmxlbmd0aDtyLmVuZD1pfW4ucHVzaChyKTtpZig1MT09PWEudHlwZSlicmVha31pZihlLnJhbmRvbUFjY2Vzcylmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe25bZV0uc3RhcnQ9aTtpKz1uW2VdLmhlYWRlci5sZW5ndGg7bltlXS5lbmQ9aX1yZXR1cm4gbn1mdW5jdGlvbiByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsdCl7cmV0dXJue3dpZHRoOigwLG4ucmVhZFVpbnQzMikoZSx0KSxoZWlnaHQ6KDAsbi5yZWFkVWludDMyKShlLHQrNCkseDooMCxuLnJlYWRVaW50MzIpKGUsdCs4KSx5OigwLG4ucmVhZFVpbnQzMikoZSx0KzEyKSxjb21iaW5hdGlvbk9wZXJhdG9yOjcmZVt0KzE2XX19Y29uc3QgZz0xNztmdW5jdGlvbiBwcm9jZXNzU2VnbWVudChlLHQpe2NvbnN0IGE9ZS5oZWFkZXIscj1lLmRhdGEsaT1lLmVuZDtsZXQgcyxvLGMsbCxoPWUuc3RhcnQ7c3dpdGNoKGEudHlwZSl7Y2FzZSAwOmNvbnN0IGU9e30sdD0oMCxuLnJlYWRVaW50MTYpKHIsaCk7ZS5odWZmbWFuPSEhKDEmdCk7ZS5yZWZpbmVtZW50PSEhKDImdCk7ZS5odWZmbWFuREhTZWxlY3Rvcj10Pj4yJjM7ZS5odWZmbWFuRFdTZWxlY3Rvcj10Pj40JjM7ZS5iaXRtYXBTaXplU2VsZWN0b3I9dD4+NiYxO2UuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj10Pj43JjE7ZS5iaXRtYXBDb2RpbmdDb250ZXh0VXNlZD0hISgyNTYmdCk7ZS5iaXRtYXBDb2RpbmdDb250ZXh0UmV0YWluZWQ9ISEoNTEyJnQpO2UudGVtcGxhdGU9dD4+MTAmMztlLnJlZmluZW1lbnRUZW1wbGF0ZT10Pj4xMiYxO2grPTI7aWYoIWUuaHVmZm1hbil7bD0wPT09ZS50ZW1wbGF0ZT80OjE7bz1bXTtmb3IoYz0wO2M8bDtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn1lLmF0PW99aWYoZS5yZWZpbmVtZW50JiYhZS5yZWZpbmVtZW50VGVtcGxhdGUpe289W107Zm9yKGM9MDtjPDI7YysrKXtvLnB1c2goe3g6KDAsbi5yZWFkSW50OCkocixoKSx5OigwLG4ucmVhZEludDgpKHIsaCsxKX0pO2grPTJ9ZS5yZWZpbmVtZW50QXQ9b31lLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzPSgwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O2UubnVtYmVyT2ZOZXdTeW1ib2xzPSgwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O3M9W2UsYS5udW1iZXIsYS5yZWZlcnJlZFRvLHIsaCxpXTticmVhaztjYXNlIDY6Y2FzZSA3OmNvbnN0IHU9e307dS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixoKTtoKz1nO2NvbnN0IGQ9KDAsbi5yZWFkVWludDE2KShyLGgpO2grPTI7dS5odWZmbWFuPSEhKDEmZCk7dS5yZWZpbmVtZW50PSEhKDImZCk7dS5sb2dTdHJpcFNpemU9ZD4+MiYzO3Uuc3RyaXBTaXplPTE8PHUubG9nU3RyaXBTaXplO3UucmVmZXJlbmNlQ29ybmVyPWQ+PjQmMzt1LnRyYW5zcG9zZWQ9ISEoNjQmZCk7dS5jb21iaW5hdGlvbk9wZXJhdG9yPWQ+PjcmMzt1LmRlZmF1bHRQaXhlbFZhbHVlPWQ+PjkmMTt1LmRzT2Zmc2V0PWQ8PDE3Pj4yNzt1LnJlZmluZW1lbnRUZW1wbGF0ZT1kPj4xNSYxO2lmKHUuaHVmZm1hbil7Y29uc3QgZT0oMCxuLnJlYWRVaW50MTYpKHIsaCk7aCs9Mjt1Lmh1ZmZtYW5GUz0zJmU7dS5odWZmbWFuRFM9ZT4+MiYzO3UuaHVmZm1hbkRUPWU+PjQmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFc9ZT4+NiYzO3UuaHVmZm1hblJlZmluZW1lbnRESD1lPj44JjM7dS5odWZmbWFuUmVmaW5lbWVudERYPWU+PjEwJjM7dS5odWZmbWFuUmVmaW5lbWVudERZPWU+PjEyJjM7dS5odWZmbWFuUmVmaW5lbWVudFNpemVTZWxlY3Rvcj0hISgxNjM4NCZlKX1pZih1LnJlZmluZW1lbnQmJiF1LnJlZmluZW1lbnRUZW1wbGF0ZSl7bz1bXTtmb3IoYz0wO2M8MjtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn11LnJlZmluZW1lbnRBdD1vfXUubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bdSxhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgMTY6Y29uc3QgZj17fSxwPXJbaCsrXTtmLm1tcj0hISgxJnApO2YudGVtcGxhdGU9cD4+MSYzO2YucGF0dGVybldpZHRoPXJbaCsrXTtmLnBhdHRlcm5IZWlnaHQ9cltoKytdO2YubWF4UGF0dGVybkluZGV4PSgwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O3M9W2YsYS5udW1iZXIscixoLGldO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpjb25zdCBtPXt9O20uaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsaCk7aCs9Zztjb25zdCBiPXJbaCsrXTttLm1tcj0hISgxJmIpO20udGVtcGxhdGU9Yj4+MSYzO20uZW5hYmxlU2tpcD0hISg4JmIpO20uY29tYmluYXRpb25PcGVyYXRvcj1iPj40Jjc7bS5kZWZhdWx0UGl4ZWxWYWx1ZT1iPj43JjE7bS5ncmlkV2lkdGg9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkSGVpZ2h0PSgwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZE9mZnNldFg9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRPZmZzZXRZPTQyOTQ5NjcyOTUmKDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkVmVjdG9yWD0oMCxuLnJlYWRVaW50MTYpKHIsaCk7aCs9MjttLmdyaWRWZWN0b3JZPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO3M9W20sYS5yZWZlcnJlZFRvLHIsaCxpXTticmVhaztjYXNlIDM4OmNhc2UgMzk6Y29uc3QgeT17fTt5LmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGgpO2grPWc7Y29uc3Qgdz1yW2grK107eS5tbXI9ISEoMSZ3KTt5LnRlbXBsYXRlPXc+PjEmMzt5LnByZWRpY3Rpb249ISEoOCZ3KTtpZigheS5tbXIpe2w9MD09PXkudGVtcGxhdGU/NDoxO289W107Zm9yKGM9MDtjPGw7YysrKXtvLnB1c2goe3g6KDAsbi5yZWFkSW50OCkocixoKSx5OigwLG4ucmVhZEludDgpKHIsaCsxKX0pO2grPTJ9eS5hdD1vfXM9W3kscixoLGldO2JyZWFrO2Nhc2UgNDg6Y29uc3QgUz17d2lkdGg6KDAsbi5yZWFkVWludDMyKShyLGgpLGhlaWdodDooMCxuLnJlYWRVaW50MzIpKHIsaCs0KSxyZXNvbHV0aW9uWDooMCxuLnJlYWRVaW50MzIpKHIsaCs4KSxyZXNvbHV0aW9uWTooMCxuLnJlYWRVaW50MzIpKHIsaCsxMil9OzQyOTQ5NjcyOTU9PT1TLmhlaWdodCYmZGVsZXRlIFMuaGVpZ2h0O2NvbnN0IHg9cltoKzE2XTsoMCxuLnJlYWRVaW50MTYpKHIsaCsxNyk7Uy5sb3NzbGVzcz0hISgxJngpO1MucmVmaW5lbWVudD0hISgyJngpO1MuZGVmYXVsdFBpeGVsVmFsdWU9eD4+MiYxO1MuY29tYmluYXRpb25PcGVyYXRvcj14Pj4zJjM7Uy5yZXF1aXJlc0J1ZmZlcj0hISgzMiZ4KTtTLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT0hISg2NCZ4KTtzPVtTXTticmVhaztjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDYyOmJyZWFrO2Nhc2UgNTM6cz1bYS5udW1iZXIscixoLGldO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHNlZ21lbnQgdHlwZSAke2EudHlwZU5hbWV9KCR7YS50eXBlfSkgaXMgbm90IGltcGxlbWVudGVkYCl9Y29uc3QgdT0ib24iK2EudHlwZU5hbWU7dSBpbiB0JiZ0W3VdLmFwcGx5KHQscyl9ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnRzKGUsdCl7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXByb2Nlc3NTZWdtZW50KGVbYV0sdCl9Y2xhc3MgU2ltcGxlU2VnbWVudFZpc2l0b3J7b25QYWdlSW5mb3JtYXRpb24oZSl7dGhpcy5jdXJyZW50UGFnZUluZm89ZTtjb25zdCB0PWUud2lkdGgrNz4+MyxhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmUuaGVpZ2h0KTtlLmRlZmF1bHRQaXhlbFZhbHVlJiZhLmZpbGwoMjU1KTt0aGlzLmJ1ZmZlcj1hfWRyYXdCaXRtYXAoZSx0KXtjb25zdCBhPXRoaXMuY3VycmVudFBhZ2VJbmZvLHI9ZS53aWR0aCxuPWUuaGVpZ2h0LGk9YS53aWR0aCs3Pj4zLHM9YS5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU/ZS5jb21iaW5hdGlvbk9wZXJhdG9yOmEuY29tYmluYXRpb25PcGVyYXRvcixvPXRoaXMuYnVmZmVyLGM9MTI4Pj4oNyZlLngpO2xldCBsLGgsdSxkLGY9ZS55KmkrKGUueD4+Myk7c3dpdGNoKHMpe2Nhc2UgMDpmb3IobD0wO2w8bjtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXXw9dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9aX1icmVhaztjYXNlIDI6Zm9yKGw9MDtsPG47bCsrKXt1PWM7ZD1mO2ZvcihoPTA7aDxyO2grKyl7dFtsXVtoXSYmKG9bZF1ePXUpO3U+Pj0xO2lmKCF1KXt1PTEyODtkKyt9fWYrPWl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtzfSBpcyBub3Qgc3VwcG9ydGVkYCl9fW9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbihlLHQsYSxyKXtjb25zdCBuPWUuaW5mbyxpPW5ldyBEZWNvZGluZ0NvbnRleHQodCxhLHIpLHM9ZGVjb2RlQml0bWFwKGUubW1yLG4ud2lkdGgsbi5oZWlnaHQsZS50ZW1wbGF0ZSxlLnByZWRpY3Rpb24sbnVsbCxlLmF0LGkpO3RoaXMuZHJhd0JpdG1hcChuLHMpfW9uSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oLi4uYXJndW1lbnRzKX1vblN5bWJvbERpY3Rpb25hcnkoZSx0LGEscixpLHMpe2xldCBvLGM7aWYoZS5odWZmbWFuKXtvPWZ1bmN0aW9uIGdldFN5bWJvbERpY3Rpb25hcnlIdWZmbWFuVGFibGVzKGUsdCxhKXtsZXQgcixuLGkscyxvPTA7c3dpdGNoKGUuaHVmZm1hbkRIU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6cj1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRIU2VsZWN0b3IrNCk7YnJlYWs7Y2FzZSAzOnI9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERIIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRXU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6bj1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRXU2VsZWN0b3IrMik7YnJlYWs7Y2FzZSAzOm49Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERXIHNlbGVjdG9yIil9aWYoZS5iaXRtYXBTaXplU2VsZWN0b3Ipe2k9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTtvKyt9ZWxzZSBpPWdldFN0YW5kYXJkVGFibGUoMSk7cz1lLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I/Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTpnZXRTdGFuZGFyZFRhYmxlKDEpO3JldHVybnt0YWJsZURlbHRhSGVpZ2h0OnIsdGFibGVEZWx0YVdpZHRoOm4sdGFibGVCaXRtYXBTaXplOmksdGFibGVBZ2dyZWdhdGVJbnN0YW5jZXM6c319KGUsYSx0aGlzLmN1c3RvbVRhYmxlcyk7Yz1uZXcgUmVhZGVyKHIsaSxzKX1sZXQgbD10aGlzLnN5bWJvbHM7bHx8KHRoaXMuc3ltYm9scz1sPXt9KTtjb25zdCBoPVtdO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9bFtlXTt0JiZoLnB1c2goLi4udCl9Y29uc3QgdT1uZXcgRGVjb2RpbmdDb250ZXh0KHIsaSxzKTtsW3RdPWZ1bmN0aW9uIGRlY29kZVN5bWJvbERpY3Rpb25hcnkoZSx0LGEscixpLHMsbyxjLGwsaCx1LGQpe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInN5bWJvbCByZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3QgZj1bXTtsZXQgZz0wLHA9KDAsbi5sb2cyKShhLmxlbmd0aCtyKTtjb25zdCBtPXUuZGVjb2RlcixiPXUuY29udGV4dENhY2hlO2xldCB5LHc7aWYoZSl7eT1nZXRTdGFuZGFyZFRhYmxlKDEpO3c9W107cD1NYXRoLm1heChwLDEpfWZvcig7Zi5sZW5ndGg8cjspe2crPWU/cy50YWJsZURlbHRhSGVpZ2h0LmRlY29kZShkKTpkZWNvZGVJbnRlZ2VyKGIsIklBREgiLG0pO2xldCByPTAsbj0wO2NvbnN0IGk9ZT93Lmxlbmd0aDowO2Zvcig7Oyl7Y29uc3QgaT1lP3MudGFibGVEZWx0YVdpZHRoLmRlY29kZShkKTpkZWNvZGVJbnRlZ2VyKGIsIklBRFciLG0pO2lmKG51bGw9PT1pKWJyZWFrO3IrPWk7bis9cjtsZXQgeTtpZih0KXtjb25zdCBuPWRlY29kZUludGVnZXIoYiwiSUFBSSIsbSk7aWYobj4xKXk9ZGVjb2RlVGV4dFJlZ2lvbihlLHQscixnLDAsbiwxLGEuY29uY2F0KGYpLHAsMCwwLDEsMCxzLGwsaCx1LDAsZCk7ZWxzZXtjb25zdCBlPWRlY29kZUlBSUQoYixtLHApLHQ9ZGVjb2RlSW50ZWdlcihiLCJJQVJEWCIsbSksbj1kZWNvZGVJbnRlZ2VyKGIsIklBUkRZIixtKTt5PWRlY29kZVJlZmluZW1lbnQocixnLGwsZTxhLmxlbmd0aD9hW2VdOmZbZS1hLmxlbmd0aF0sdCxuLCExLGgsdSl9Zi5wdXNoKHkpfWVsc2UgaWYoZSl3LnB1c2gocik7ZWxzZXt5PWRlY29kZUJpdG1hcCghMSxyLGcsbywhMSxudWxsLGMsdSk7Zi5wdXNoKHkpfX1pZihlJiYhdCl7Y29uc3QgZT1zLnRhYmxlQml0bWFwU2l6ZS5kZWNvZGUoZCk7ZC5ieXRlQWxpZ24oKTtsZXQgdDtpZigwPT09ZSl0PXJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZCxuLGcpO2Vsc2V7Y29uc3QgYT1kLmVuZCxyPWQucG9zaXRpb24rZTtkLmVuZD1yO3Q9ZGVjb2RlTU1SQml0bWFwKGQsbixnLCExKTtkLmVuZD1hO2QucG9zaXRpb249cn1jb25zdCBhPXcubGVuZ3RoO2lmKGk9PT1hLTEpZi5wdXNoKHQpO2Vsc2V7bGV0IGUscixuLHMsbyxjPTA7Zm9yKGU9aTtlPGE7ZSsrKXtzPXdbZV07bj1jK3M7bz1bXTtmb3Iocj0wO3I8ZztyKyspby5wdXNoKHRbcl0uc3ViYXJyYXkoYyxuKSk7Zi5wdXNoKG8pO2M9bn19fX1jb25zdCBTPVtdLHg9W107bGV0IEMsdixrPSExO2NvbnN0IE89YS5sZW5ndGgrcjtmb3IoO3gubGVuZ3RoPE87KXtsZXQgdD1lP3kuZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFFWCIsbSk7Zm9yKDt0LS07KXgucHVzaChrKTtrPSFrfWZvcihDPTAsdj1hLmxlbmd0aDtDPHY7QysrKXhbQ10mJlMucHVzaChhW0NdKTtmb3IobGV0IGU9MDtlPHI7QysrLGUrKyl4W0NdJiZTLnB1c2goZltlXSk7cmV0dXJuIFN9KGUuaHVmZm1hbixlLnJlZmluZW1lbnQsaCxlLm51bWJlck9mTmV3U3ltYm9scyxlLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLG8sZS50ZW1wbGF0ZSxlLmF0LGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LHUsYyl9b25JbW1lZGlhdGVUZXh0UmVnaW9uKGUsdCxhLHIsaSl7Y29uc3Qgcz1lLmluZm87bGV0IG8sYztjb25zdCBsPXRoaXMuc3ltYm9scyxoPVtdO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9bFtlXTt0JiZoLnB1c2goLi4udCl9Y29uc3QgdT0oMCxuLmxvZzIpKGgubGVuZ3RoKTtpZihlLmh1ZmZtYW4pe2M9bmV3IFJlYWRlcihhLHIsaSk7bz1mdW5jdGlvbiBnZXRUZXh0UmVnaW9uSHVmZm1hblRhYmxlcyhlLHQsYSxyLG4pe2NvbnN0IGk9W107Zm9yKGxldCBlPTA7ZTw9MzQ7ZSsrKXtjb25zdCB0PW4ucmVhZEJpdHMoNCk7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKX1jb25zdCBzPW5ldyBIdWZmbWFuVGFibGUoaSwhMSk7aS5sZW5ndGg9MDtmb3IobGV0IGU9MDtlPHI7KXtjb25zdCB0PXMuZGVjb2RlKG4pO2lmKHQ+PTMyKXtsZXQgYSxyLHM7c3dpdGNoKHQpe2Nhc2UgMzI6aWYoMD09PWUpdGhyb3cgbmV3IEpiaWcyRXJyb3IoIm5vIHByZXZpb3VzIHZhbHVlIGluIHN5bWJvbCBJRCB0YWJsZSIpO3I9bi5yZWFkQml0cygyKSszO2E9aVtlLTFdLnByZWZpeExlbmd0aDticmVhaztjYXNlIDMzOnI9bi5yZWFkQml0cygzKSszO2E9MDticmVhaztjYXNlIDM0OnI9bi5yZWFkQml0cyg3KSsxMTthPTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aCBpbiBzeW1ib2wgSUQgdGFibGUiKX1mb3Iocz0wO3M8cjtzKyspe2kucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsYSwwLDBdKSk7ZSsrfX1lbHNle2kucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSk7ZSsrfX1uLmJ5dGVBbGlnbigpO2NvbnN0IG89bmV3IEh1ZmZtYW5UYWJsZShpLCExKTtsZXQgYyxsLGgsdT0wO3N3aXRjaChlLmh1ZmZtYW5GUyl7Y2FzZSAwOmNhc2UgMTpjPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRlMrNik7YnJlYWs7Y2FzZSAzOmM9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIEZTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRTKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpsPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFMrOCk7YnJlYWs7Y2FzZSAzOmw9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRUKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpoPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFQrMTEpO2JyZWFrO2Nhc2UgMzpoPWdldEN1c3RvbUh1ZmZtYW5UYWJsZSh1LHQsYSk7dSsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVCBzZWxlY3RvciIpfWlmKGUucmVmaW5lbWVudCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO3JldHVybntzeW1ib2xJRFRhYmxlOm8sdGFibGVGaXJzdFM6Yyx0YWJsZURlbHRhUzpsLHRhYmxlRGVsdGFUOmh9fShlLHQsdGhpcy5jdXN0b21UYWJsZXMsaC5sZW5ndGgsYyl9Y29uc3QgZD1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxmPWRlY29kZVRleHRSZWdpb24oZS5odWZmbWFuLGUucmVmaW5lbWVudCxzLndpZHRoLHMuaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcyxlLnN0cmlwU2l6ZSxoLHUsZS50cmFuc3Bvc2VkLGUuZHNPZmZzZXQsZS5yZWZlcmVuY2VDb3JuZXIsZS5jb21iaW5hdGlvbk9wZXJhdG9yLG8sZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsZCxlLmxvZ1N0cmlwU2l6ZSxjKTt0aGlzLmRyYXdCaXRtYXAocyxmKX1vbkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVUZXh0UmVnaW9uKC4uLmFyZ3VtZW50cyl9b25QYXR0ZXJuRGljdGlvbmFyeShlLHQsYSxyLG4pe2xldCBpPXRoaXMucGF0dGVybnM7aXx8KHRoaXMucGF0dGVybnM9aT17fSk7Y29uc3Qgcz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixuKTtpW3RdPWZ1bmN0aW9uIGRlY29kZVBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsbixpKXtjb25zdCBzPVtdO2lmKCFlKXtzLnB1c2goe3g6LXQseTowfSk7MD09PW4mJnMucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBvPWRlY29kZUJpdG1hcChlLChyKzEpKnQsYSxuLCExLG51bGwscyxpKSxjPVtdO2ZvcihsZXQgZT0wO2U8PXI7ZSsrKXtjb25zdCByPVtdLG49dCplLGk9bit0O2ZvcihsZXQgZT0wO2U8YTtlKyspci5wdXNoKG9bZV0uc3ViYXJyYXkobixpKSk7Yy5wdXNoKHIpfXJldHVybiBjfShlLm1tcixlLnBhdHRlcm5XaWR0aCxlLnBhdHRlcm5IZWlnaHQsZS5tYXhQYXR0ZXJuSW5kZXgsZS50ZW1wbGF0ZSxzKX1vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSl7Y29uc3Qgcz10aGlzLnBhdHRlcm5zW3RbMF1dLG89ZS5pbmZvLGM9bmV3IERlY29kaW5nQ29udGV4dChhLHIsaSksbD1mdW5jdGlvbiBkZWNvZGVIYWxmdG9uZVJlZ2lvbihlLHQsYSxyLGkscyxvLGMsbCxoLHUsZCxmLGcscCl7aWYobyl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2tpcCBpcyBub3Qgc3VwcG9ydGVkIik7aWYoMCE9PWMpdGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICIke2N9IiBpcyBub3Qgc3VwcG9ydGVkIGluIGhhbGZ0b25lIHJlZ2lvbmApO2NvbnN0IG09W107bGV0IGIseSx3O2ZvcihiPTA7YjxpO2IrKyl7dz1uZXcgVWludDhBcnJheShyKTtpZihzKWZvcih5PTA7eTxyO3krKyl3W3ldPXM7bS5wdXNoKHcpfWNvbnN0IFM9dC5sZW5ndGgseD10WzBdLEM9eFswXS5sZW5ndGgsdj14Lmxlbmd0aCxrPSgwLG4ubG9nMikoUyksTz1bXTtpZighZSl7Ty5wdXNoKHt4OmE8PTE/MzoyLHk6LTF9KTswPT09YSYmTy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IFQ9W107bGV0IE0sRSxELE4sUixMLCQsXyxqLFUsWDtlJiYoTT1uZXcgUmVhZGVyKHAuZGF0YSxwLnN0YXJ0LHAuZW5kKSk7Zm9yKGI9ay0xO2I+PTA7Yi0tKXtFPWU/ZGVjb2RlTU1SQml0bWFwKE0sbCxoLCEwKTpkZWNvZGVCaXRtYXAoITEsbCxoLGEsITEsbnVsbCxPLHApO1RbYl09RX1mb3IoRD0wO0Q8aDtEKyspZm9yKE49MDtOPGw7TisrKXtSPTA7TD0wO2Zvcih5PWstMTt5Pj0wO3ktLSl7Ul49VFt5XVtEXVtOXTtMfD1SPDx5fSQ9dFtMXTtfPXUrRCpnK04qZj4+ODtqPWQrRCpmLU4qZz4+ODtpZihfPj0wJiZfK0M8PXImJmo+PTAmJmordjw9aSlmb3IoYj0wO2I8djtiKyspe1g9bVtqK2JdO1U9JFtiXTtmb3IoeT0wO3k8Qzt5KyspWFtfK3ldfD1VW3ldfWVsc2V7bGV0IGUsdDtmb3IoYj0wO2I8djtiKyspe3Q9aitiO2lmKCEodDwwfHx0Pj1pKSl7WD1tW3RdO1U9JFtiXTtmb3IoeT0wO3k8Qzt5Kyspe2U9Xyt5O2U+PTAmJmU8ciYmKFhbZV18PVVbeV0pfX19fX1yZXR1cm4gbX0oZS5tbXIscyxlLnRlbXBsYXRlLG8ud2lkdGgsby5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLmVuYWJsZVNraXAsZS5jb21iaW5hdGlvbk9wZXJhdG9yLGUuZ3JpZFdpZHRoLGUuZ3JpZEhlaWdodCxlLmdyaWRPZmZzZXRYLGUuZ3JpZE9mZnNldFksZS5ncmlkVmVjdG9yWCxlLmdyaWRWZWN0b3JZLGMpO3RoaXMuZHJhd0JpdG1hcChvLGwpfW9uSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiguLi5hcmd1bWVudHMpfW9uVGFibGVzKGUsdCxhLHIpe2xldCBpPXRoaXMuY3VzdG9tVGFibGVzO2l8fCh0aGlzLmN1c3RvbVRhYmxlcz1pPXt9KTtpW2VdPWZ1bmN0aW9uIGRlY29kZVRhYmxlc1NlZ21lbnQoZSx0LGEpe2NvbnN0IHI9ZVt0XSxpPTQyOTQ5NjcyOTUmKDAsbi5yZWFkVWludDMyKShlLHQrMSkscz00Mjk0OTY3Mjk1JigwLG4ucmVhZFVpbnQzMikoZSx0KzUpLG89bmV3IFJlYWRlcihlLHQrOSxhKSxjPTErKHI+PjEmNyksbD0xKyhyPj40JjcpLGg9W107bGV0IHUsZCxmPWk7ZG97dT1vLnJlYWRCaXRzKGMpO2Q9by5yZWFkQml0cyhsKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtmLHUsZCwwXSkpO2YrPTE8PGR9d2hpbGUoZjxzKTt1PW8ucmVhZEJpdHMoYyk7aC5wdXNoKG5ldyBIdWZmbWFuTGluZShbaS0xLHUsMzIsMCwibG93ZXIiXSkpO3U9by5yZWFkQml0cyhjKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtzLHUsMzIsMF0pKTtpZigxJnIpe3U9by5yZWFkQml0cyhjKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFt1LDBdKSl9cmV0dXJuIG5ldyBIdWZmbWFuVGFibGUoaCwhMSl9KHQsYSxyKX19Y2xhc3MgSHVmZm1hbkxpbmV7Y29uc3RydWN0b3IoZSl7aWYoMj09PWUubGVuZ3RoKXt0aGlzLmlzT09CPSEwO3RoaXMucmFuZ2VMb3c9MDt0aGlzLnByZWZpeExlbmd0aD1lWzBdO3RoaXMucmFuZ2VMZW5ndGg9MDt0aGlzLnByZWZpeENvZGU9ZVsxXTt0aGlzLmlzTG93ZXJSYW5nZT0hMX1lbHNle3RoaXMuaXNPT0I9ITE7dGhpcy5yYW5nZUxvdz1lWzBdO3RoaXMucHJlZml4TGVuZ3RoPWVbMV07dGhpcy5yYW5nZUxlbmd0aD1lWzJdO3RoaXMucHJlZml4Q29kZT1lWzNdO3RoaXMuaXNMb3dlclJhbmdlPSJsb3dlciI9PT1lWzRdfX19Y2xhc3MgSHVmZm1hblRyZWVOb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMuY2hpbGRyZW49W107aWYoZSl7dGhpcy5pc0xlYWY9ITA7dGhpcy5yYW5nZUxlbmd0aD1lLnJhbmdlTGVuZ3RoO3RoaXMucmFuZ2VMb3c9ZS5yYW5nZUxvdzt0aGlzLmlzTG93ZXJSYW5nZT1lLmlzTG93ZXJSYW5nZTt0aGlzLmlzT09CPWUuaXNPT0J9ZWxzZSB0aGlzLmlzTGVhZj0hMX1idWlsZFRyZWUoZSx0KXtjb25zdCBhPWUucHJlZml4Q29kZT4+dCYxO2lmKHQ8PTApdGhpcy5jaGlsZHJlblthXT1uZXcgSHVmZm1hblRyZWVOb2RlKGUpO2Vsc2V7bGV0IHI9dGhpcy5jaGlsZHJlblthXTtyfHwodGhpcy5jaGlsZHJlblthXT1yPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCkpO3IuYnVpbGRUcmVlKGUsdC0xKX19ZGVjb2RlTm9kZShlKXtpZih0aGlzLmlzTGVhZil7aWYodGhpcy5pc09PQilyZXR1cm4gbnVsbDtjb25zdCB0PWUucmVhZEJpdHModGhpcy5yYW5nZUxlbmd0aCk7cmV0dXJuIHRoaXMucmFuZ2VMb3crKHRoaXMuaXNMb3dlclJhbmdlPy10OnQpfWNvbnN0IHQ9dGhpcy5jaGlsZHJlbltlLnJlYWRCaXQoKV07aWYoIXQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBkYXRhIik7cmV0dXJuIHQuZGVjb2RlTm9kZShlKX19Y2xhc3MgSHVmZm1hblRhYmxle2NvbnN0cnVjdG9yKGUsdCl7dHx8dGhpcy5hc3NpZ25QcmVmaXhDb2RlcyhlKTt0aGlzLnJvb3ROb2RlPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCk7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWVbdF07YS5wcmVmaXhMZW5ndGg+MCYmdGhpcy5yb290Tm9kZS5idWlsZFRyZWUoYSxhLnByZWZpeExlbmd0aC0xKX19ZGVjb2RlKGUpe3JldHVybiB0aGlzLnJvb3ROb2RlLmRlY29kZU5vZGUoZSl9YXNzaWduUHJlZml4Q29kZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKyspYT1NYXRoLm1heChhLGVbcl0ucHJlZml4TGVuZ3RoKTtjb25zdCByPW5ldyBVaW50MzJBcnJheShhKzEpO2ZvcihsZXQgYT0wO2E8dDthKyspcltlW2FdLnByZWZpeExlbmd0aF0rKztsZXQgbixpLHMsbz0xLGM9MDtyWzBdPTA7Zm9yKDtvPD1hOyl7Yz1jK3Jbby0xXTw8MTtuPWM7aT0wO2Zvcig7aTx0Oyl7cz1lW2ldO2lmKHMucHJlZml4TGVuZ3RoPT09byl7cy5wcmVmaXhDb2RlPW47bisrfWkrK31vKyt9fX1jb25zdCBwPXt9O2Z1bmN0aW9uIGdldFN0YW5kYXJkVGFibGUoZSl7bGV0IHQsYT1wW2VdO2lmKGEpcmV0dXJuIGE7c3dpdGNoKGUpe2Nhc2UgMTp0PVtbMCwxLDQsMF0sWzE2LDIsOCwyXSxbMjcyLDMsMTYsNl0sWzY1ODA4LDMsMzIsN11dO2JyZWFrO2Nhc2UgMjp0PVtbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFs3NSw2LDMyLDYyXSxbNiw2M11dO2JyZWFrO2Nhc2UgMzp0PVtbLTI1Niw4LDgsMjU0XSxbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFstMjU3LDgsMzIsMjU1LCJsb3dlciJdLFs3NSw3LDMyLDEyNl0sWzYsNjJdXTticmVhaztjYXNlIDQ6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbNzYsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgNTp0PVtbLTI1NSw3LDgsMTI2XSxbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFstMjU2LDcsMzIsMTI3LCJsb3dlciJdLFs3Niw2LDMyLDYyXV07YnJlYWs7Y2FzZSA2OnQ9W1stMjA0OCw1LDEwLDI4XSxbLTEwMjQsNCw5LDhdLFstNTEyLDQsOCw5XSxbLTI1Niw0LDcsMTBdLFstMTI4LDUsNiwyOV0sWy02NCw1LDUsMzBdLFstMzIsNCw1LDExXSxbMCwyLDcsMF0sWzEyOCwzLDcsMl0sWzI1NiwzLDgsM10sWzUxMiw0LDksMTJdLFsxMDI0LDQsMTAsMTNdLFstMjA0OSw2LDMyLDYyLCJsb3dlciJdLFsyMDQ4LDYsMzIsNjNdXTticmVhaztjYXNlIDc6dD1bWy0xMDI0LDQsOSw4XSxbLTUxMiwzLDgsMF0sWy0yNTYsNCw3LDldLFstMTI4LDUsNiwyNl0sWy02NCw1LDUsMjddLFstMzIsNCw1LDEwXSxbMCw0LDUsMTFdLFszMiw1LDUsMjhdLFs2NCw1LDYsMjldLFsxMjgsNCw3LDEyXSxbMjU2LDMsOCwxXSxbNTEyLDMsOSwyXSxbMTAyNCwzLDEwLDNdLFstMTAyNSw1LDMyLDMwLCJsb3dlciJdLFsyMDQ4LDUsMzIsMzFdXTticmVhaztjYXNlIDg6dD1bWy0xNSw4LDMsMjUyXSxbLTcsOSwxLDUwOF0sWy01LDgsMSwyNTNdLFstMyw5LDAsNTA5XSxbLTIsNywwLDEyNF0sWy0xLDQsMCwxMF0sWzAsMiwxLDBdLFsyLDUsMCwyNl0sWzMsNiwwLDU4XSxbNCwzLDQsNF0sWzIwLDYsMSw1OV0sWzIyLDQsNCwxMV0sWzM4LDQsNSwxMl0sWzcwLDUsNiwyN10sWzEzNCw1LDcsMjhdLFsyNjIsNiw3LDYwXSxbMzkwLDcsOCwxMjVdLFs2NDYsNiwxMCw2MV0sWy0xNiw5LDMyLDUxMCwibG93ZXIiXSxbMTY3MCw5LDMyLDUxMV0sWzIsMV1dO2JyZWFrO2Nhc2UgOTp0PVtbLTMxLDgsNCwyNTJdLFstMTUsOSwyLDUwOF0sWy0xMSw4LDIsMjUzXSxbLTcsOSwxLDUwOV0sWy01LDcsMSwxMjRdLFstMyw0LDEsMTBdLFstMSwzLDEsMl0sWzEsMywxLDNdLFszLDUsMSwyNl0sWzUsNiwxLDU4XSxbNywzLDUsNF0sWzM5LDYsMiw1OV0sWzQzLDQsNSwxMV0sWzc1LDQsNiwxMl0sWzEzOSw1LDcsMjddLFsyNjcsNSw4LDI4XSxbNTIzLDYsOCw2MF0sWzc3OSw3LDksMTI1XSxbMTI5MSw2LDExLDYxXSxbLTMyLDksMzIsNTEwLCJsb3dlciJdLFszMzM5LDksMzIsNTExXSxbMiwwXV07YnJlYWs7Y2FzZSAxMDp0PVtbLTIxLDcsNCwxMjJdLFstNSw4LDAsMjUyXSxbLTQsNywwLDEyM10sWy0zLDUsMCwyNF0sWy0yLDIsMiwwXSxbMiw1LDAsMjVdLFszLDYsMCw1NF0sWzQsNywwLDEyNF0sWzUsOCwwLDI1M10sWzYsMiw2LDFdLFs3MCw1LDUsMjZdLFsxMDIsNiw1LDU1XSxbMTM0LDYsNiw1Nl0sWzE5OCw2LDcsNTddLFszMjYsNiw4LDU4XSxbNTgyLDYsOSw1OV0sWzEwOTQsNiwxMCw2MF0sWzIxMTgsNywxMSwxMjVdLFstMjIsOCwzMiwyNTQsImxvd2VyIl0sWzQxNjYsOCwzMiwyNTVdLFsyLDJdXTticmVhaztjYXNlIDExOnQ9W1sxLDEsMCwwXSxbMiwyLDEsMl0sWzQsNCwwLDEyXSxbNSw0LDEsMTNdLFs3LDUsMSwyOF0sWzksNSwyLDI5XSxbMTMsNiwyLDYwXSxbMTcsNywyLDEyMl0sWzIxLDcsMywxMjNdLFsyOSw3LDQsMTI0XSxbNDUsNyw1LDEyNV0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDEyOnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywxLDZdLFs1LDUsMCwyOF0sWzYsNSwxLDI5XSxbOCw2LDEsNjBdLFsxMCw3LDAsMTIyXSxbMTEsNywxLDEyM10sWzEzLDcsMiwxMjRdLFsxNyw3LDMsMTI1XSxbMjUsNyw0LDEyNl0sWzQxLDgsNSwyNTRdLFs3Myw4LDMyLDI1NV1dO2JyZWFrO2Nhc2UgMTM6dD1bWzEsMSwwLDBdLFsyLDMsMCw0XSxbMyw0LDAsMTJdLFs0LDUsMCwyOF0sWzUsNCwxLDEzXSxbNywzLDMsNV0sWzE1LDYsMSw1OF0sWzE3LDYsMiw1OV0sWzIxLDYsMyw2MF0sWzI5LDYsNCw2MV0sWzQ1LDYsNSw2Ml0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDE0OnQ9W1stMiwzLDAsNF0sWy0xLDMsMCw1XSxbMCwxLDAsMF0sWzEsMywwLDZdLFsyLDMsMCw3XV07YnJlYWs7Y2FzZSAxNTp0PVtbLTI0LDcsNCwxMjRdLFstOCw2LDIsNjBdLFstNCw1LDEsMjhdLFstMiw0LDAsMTJdLFstMSwzLDAsNF0sWzAsMSwwLDBdLFsxLDMsMCw1XSxbMiw0LDAsMTNdLFszLDUsMSwyOV0sWzUsNiwyLDYxXSxbOSw3LDQsMTI1XSxbLTI1LDcsMzIsMTI2LCJsb3dlciJdLFsyNSw3LDMyLDEyN11dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHN0YW5kYXJkIHRhYmxlIEIuJHtlfSBkb2VzIG5vdCBleGlzdGApfWZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdPW5ldyBIdWZmbWFuTGluZSh0W2VdKTthPW5ldyBIdWZmbWFuVGFibGUodCwhMCk7cFtlXT1hO3JldHVybiBhfWNsYXNzIFJlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWE7dGhpcy5wb3NpdGlvbj10O3RoaXMuc2hpZnQ9LTE7dGhpcy5jdXJyZW50Qnl0ZT0wfXJlYWRCaXQoKXtpZih0aGlzLnNoaWZ0PDApe2lmKHRoaXMucG9zaXRpb24+PXRoaXMuZW5kKXRocm93IG5ldyBKYmlnMkVycm9yKCJlbmQgb2YgZGF0YSB3aGlsZSByZWFkaW5nIGJpdCIpO3RoaXMuY3VycmVudEJ5dGU9dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK107dGhpcy5zaGlmdD03fWNvbnN0IGU9dGhpcy5jdXJyZW50Qnl0ZT4+dGhpcy5zaGlmdCYxO3RoaXMuc2hpZnQtLTtyZXR1cm4gZX1yZWFkQml0cyhlKXtsZXQgdCxhPTA7Zm9yKHQ9ZS0xO3Q+PTA7dC0tKWF8PXRoaXMucmVhZEJpdCgpPDx0O3JldHVybiBhfWJ5dGVBbGlnbigpe3RoaXMuc2hpZnQ9LTF9bmV4dCgpe3JldHVybiB0aGlzLnBvc2l0aW9uPj10aGlzLmVuZD8tMTp0aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXX19ZnVuY3Rpb24gZ2V0Q3VzdG9tSHVmZm1hblRhYmxlKGUsdCxhKXtsZXQgcj0wO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT1hW3Rbbl1dO2lmKGkpe2lmKGU9PT1yKXJldHVybiBpO3IrK319dGhyb3cgbmV3IEpiaWcyRXJyb3IoImNhbid0IGZpbmQgY3VzdG9tIEh1ZmZtYW4gdGFibGUiKX1mdW5jdGlvbiByZWFkVW5jb21wcmVzc2VkQml0bWFwKGUsdCxhKXtjb25zdCByPVtdO2ZvcihsZXQgbj0wO248YTtuKyspe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkodCk7ci5wdXNoKGEpO2ZvcihsZXQgcj0wO3I8dDtyKyspYVtyXT1lLnJlYWRCaXQoKTtlLmJ5dGVBbGlnbigpfXJldHVybiByfWZ1bmN0aW9uIGRlY29kZU1NUkJpdG1hcChlLHQsYSxyKXtjb25zdCBuPXtLOi0xLENvbHVtbnM6dCxSb3dzOmEsQmxhY2tJczE6ITAsRW5kT2ZCbG9jazpyfSxpPW5ldyBzLkNDSVRURmF4RGVjb2RlcihlLG4pLG89W107bGV0IGMsbD0hMTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO28ucHVzaChlKTtsZXQgYT0tMTtmb3IobGV0IHI9MDtyPHQ7cisrKXtpZihhPDApe2M9aS5yZWFkTmV4dENoYXIoKTtpZigtMT09PWMpe2M9MDtsPSEwfWE9N31lW3JdPWM+PmEmMTthLS19fWlmKHImJiFsKXtjb25zdCBlPTU7Zm9yKGxldCB0PTA7dDxlJiYtMSE9PWkucmVhZE5leHRDaGFyKCk7dCsrKTt9cmV0dXJuIG99dC5KYmlnMkltYWdlPWNsYXNzIEpiaWcySW1hZ2V7cGFyc2VDaHVua3MoZSl7cmV0dXJuIGZ1bmN0aW9uIHBhcnNlSmJpZzJDaHVua3MoZSl7Y29uc3QgdD1uZXcgU2ltcGxlU2VnbWVudFZpc2l0b3I7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWVbYV07cHJvY2Vzc1NlZ21lbnRzKHJlYWRTZWdtZW50cyh7fSxyLmRhdGEsci5zdGFydCxyLmVuZCksdCl9cmV0dXJuIHQuYnVmZmVyfShlKX1wYXJzZShlKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZDogSmJpZzJJbWFnZS5wYXJzZSIpfX19LChlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkFyaXRobWV0aWNEZWNvZGVyPXZvaWQgMDtjb25zdCBhPVt7cWU6MjIwMTcsbm1wczoxLG5scHM6MSxzd2l0Y2hGbGFnOjF9LHtxZToxMzMxMyxubXBzOjIsbmxwczo2LHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczozLG5scHM6OSxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6NCxubHBzOjEyLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczo1LG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzgsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjcsbmxwczo2LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6OCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6OSxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTAsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjExLG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjEyLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjEzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI5LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczoxNSxubHBzOjE0LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6MTYsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToyMDczNyxubXBzOjE3LG5scHM6MTUsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczoxOCxubHBzOjE2LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTksbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZToxMzMxMyxubXBzOjIwLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoyMSxubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjEwMjQxLG5tcHM6MjIsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MjMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo4NzA1LG5tcHM6MjQsbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MjUsbmxwczoyMixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MjYsbmxwczoyMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjcsbmxwczoyNCxzd2l0Y2hGbGFnOjB9LHtxZTo1MTIxLG5tcHM6MjgsbmxwczoyNSxzd2l0Y2hGbGFnOjB9LHtxZTo0NjA5LG5tcHM6MjksbmxwczoyNixzd2l0Y2hGbGFnOjB9LHtxZTo0MzUzLG5tcHM6MzAsbmxwczoyNyxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6MzEsbmxwczoyOCxzd2l0Y2hGbGFnOjB9LHtxZToyNDk3LG5tcHM6MzIsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZToyMjA5LG5tcHM6MzMsbmxwczozMCxzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6MzQsbmxwczozMSxzd2l0Y2hGbGFnOjB9LHtxZToxMDg5LG5tcHM6MzUsbmxwczozMixzd2l0Y2hGbGFnOjB9LHtxZTo2NzMsbm1wczozNixubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM3LG5scHM6MzQsc3dpdGNoRmxhZzowfSx7cWU6MzIxLG5tcHM6MzgsbmxwczozNSxzd2l0Y2hGbGFnOjB9LHtxZToyNzMsbm1wczozOSxubHBzOjM2LHN3aXRjaEZsYWc6MH0se3FlOjEzMyxubXBzOjQwLG5scHM6Mzcsc3dpdGNoRmxhZzowfSx7cWU6NzMsbm1wczo0MSxubHBzOjM4LHN3aXRjaEZsYWc6MH0se3FlOjM3LG5tcHM6NDIsbmxwczozOSxzd2l0Y2hGbGFnOjB9LHtxZToyMSxubXBzOjQzLG5scHM6NDAsc3dpdGNoRmxhZzowfSx7cWU6OSxubXBzOjQ0LG5scHM6NDEsc3dpdGNoRmxhZzowfSx7cWU6NSxubXBzOjQ1LG5scHM6NDIsc3dpdGNoRmxhZzowfSx7cWU6MSxubXBzOjQ1LG5scHM6NDMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo0NixubHBzOjQ2LHN3aXRjaEZsYWc6MH1dO3QuQXJpdGhtZXRpY0RlY29kZXI9Y2xhc3MgQXJpdGhtZXRpY0RlY29kZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGF0YT1lO3RoaXMuYnA9dDt0aGlzLmRhdGFFbmQ9YTt0aGlzLmNoaWdoPWVbdF07dGhpcy5jbG93PTA7dGhpcy5ieXRlSW4oKTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDcmNjU1MzV8dGhpcy5jbG93Pj45JjEyNzt0aGlzLmNsb3c9dGhpcy5jbG93PDw3JjY1NTM1O3RoaXMuY3QtPTc7dGhpcy5hPTMyNzY4fWJ5dGVJbigpe2NvbnN0IGU9dGhpcy5kYXRhO2xldCB0PXRoaXMuYnA7aWYoMjU1PT09ZVt0XSlpZihlW3QrMV0+MTQzKXt0aGlzLmNsb3crPTY1MjgwO3RoaXMuY3Q9OH1lbHNle3QrKzt0aGlzLmNsb3crPWVbdF08PDk7dGhpcy5jdD03O3RoaXMuYnA9dH1lbHNle3QrKzt0aGlzLmNsb3crPXQ8dGhpcy5kYXRhRW5kP2VbdF08PDg6NjUyODA7dGhpcy5jdD04O3RoaXMuYnA9dH1pZih0aGlzLmNsb3c+NjU1MzUpe3RoaXMuY2hpZ2grPXRoaXMuY2xvdz4+MTY7dGhpcy5jbG93Jj02NTUzNX19cmVhZEJpdChlLHQpe2xldCByPWVbdF0+PjEsbj0xJmVbdF07Y29uc3QgaT1hW3JdLHM9aS5xZTtsZXQgbyxjPXRoaXMuYS1zO2lmKHRoaXMuY2hpZ2g8cylpZihjPHMpe2M9cztvPW47cj1pLm5tcHN9ZWxzZXtjPXM7bz0xXm47MT09PWkuc3dpdGNoRmxhZyYmKG49byk7cj1pLm5scHN9ZWxzZXt0aGlzLmNoaWdoLT1zO2lmKDAhPSgzMjc2OCZjKSl7dGhpcy5hPWM7cmV0dXJuIG59aWYoYzxzKXtvPTFebjsxPT09aS5zd2l0Y2hGbGFnJiYobj1vKTtyPWkubmxwc31lbHNle289bjtyPWkubm1wc319ZG97MD09PXRoaXMuY3QmJnRoaXMuYnl0ZUluKCk7Yzw8PTE7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDwxJjY1NTM1fHRoaXMuY2xvdz4+MTUmMTt0aGlzLmNsb3c9dGhpcy5jbG93PDwxJjY1NTM1O3RoaXMuY3QtLX13aGlsZSgwPT0oMzI3NjgmYykpO3RoaXMuYT1jO2VbdF09cjw8MXxuO3JldHVybiBvfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSnBlZ1N0cmVhbT12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO3ZhciByPWEoMTY4KSxuPWEoMTUwKSxpPWEoMTc3KSxzPWEoMTQ0KTtjbGFzcyBKcGVnU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe2xldCByO2Zvcig7LTEhPT0ocj1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PXIpe2Uuc2tpcCgtMSk7YnJlYWt9c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1hfWdldCBieXRlcygpe3JldHVybigwLHMuc2hhZG93KSh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGU9e2RlY29kZVRyYW5zZm9ybTp2b2lkIDAsY29sb3JUcmFuc2Zvcm06dm9pZCAwfSx0PXRoaXMuZGljdC5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKCh0aGlzLmZvcmNlUkdCQXx8dGhpcy5mb3JjZVJHQikmJkFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LHI9dC5sZW5ndGgsbj1uZXcgSW50MzJBcnJheShyKTtsZXQgaT0hMTtjb25zdCBzPSgxPDxhKS0xO2ZvcihsZXQgZT0wO2U8cjtlKz0yKXtuW2VdPTI1NioodFtlKzFdLXRbZV0pfDA7bltlKzFdPXRbZV0qc3wwOzI1Nj09PW5bZV0mJjA9PT1uW2UrMV18fChpPSEwKX1pJiYoZS5kZWNvZGVUcmFuc2Zvcm09bil9aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IHQ9dGhpcy5wYXJhbXMuZ2V0KCJDb2xvclRyYW5zZm9ybSIpO051bWJlci5pc0ludGVnZXIodCkmJihlLmNvbG9yVHJhbnNmb3JtPXQpfWNvbnN0IGE9bmV3IGkuSnBlZ0ltYWdlKGUpO2EucGFyc2UodGhpcy5ieXRlcyk7Y29uc3Qgcj1hLmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPXIubGVuZ3RoO3RoaXMuZW9mPSEwfX10LkpwZWdTdHJlYW09SnBlZ1N0cmVhbX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnSW1hZ2U9dm9pZCAwO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTthKDEzOSk7dmFyIHI9YSgxNDQpLG49YSgxNzgpLGk9YSgxNDkpO2NsYXNzIEpwZWdFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBFRyBlcnJvcjogJHtlfWAsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3Qgcz1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLG89NDAxNyxjPTc5OSxsPTM0MDYsaD0yMjc2LHU9MTU2NyxkPTM3ODQsZj01NzkzLGc9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsbj0wLGk9MTY7Zm9yKDtpPjAmJiFlW2ktMV07KWktLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8aTthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtuXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31uKyt9aWYoYSsxPGkpe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEsbixvLGMsbCxoLHUpe2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+OSYmdm9pZCAwIT09YXJndW1lbnRzWzldJiZhcmd1bWVudHNbOV07Y29uc3QgZj1hLm1jdXNQZXJMaW5lLGc9YS5wcm9ncmVzc2l2ZSxwPXQ7bGV0IG09MCxiPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGI+MCl7Yi0tO3JldHVybiBtPj5iJjF9bT1lW3QrK107aWYoMjU1PT09bSl7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmZCl7dCs9Mjtjb25zdCByPSgwLGkucmVhZFVpbnQxNikoZSx0KTt0Kz0yO2lmKHI+MCYmciE9PWEuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIscil9ZWxzZSBpZigyMTc9PT1yKXtpZihkKXtjb25zdCBlPXgqKDg9PT1hLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChhLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhtPDw4fHIpLnRvU3RyaW5nKDE2KX1gKX19Yj03O3JldHVybiBtPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB5PTA7bGV0IHcsUz0wO2xldCB4PTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxhLHIsbil7Y29uc3QgaT1hJWY7eD0oYS9mfDApKmUudityO2NvbnN0IHM9aSplLmgrbjt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx4LHMpKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsYSl7eD1hL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IHI9YSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseCxyKSl9Y29uc3QgQz1uLmxlbmd0aDtsZXQgdixrLE8sVCxNLEU7RT1nPzA9PT1jPzA9PT1oP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQykscj0wPT09YT8wOnJlY2VpdmVBbmRFeHRlbmQoYSk8PHU7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1yfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDx1fTowPT09aD9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYoeT4wKXt5LS07cmV0dXJufWxldCBhPWM7Y29uc3Qgcj1sO2Zvcig7YTw9cjspe2NvbnN0IHI9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxuPTE1JnIsaT1yPj40O2lmKDA9PT1uKXtpZihpPDE1KXt5PXJlY2VpdmUoaSkrKDE8PGkpLTE7YnJlYWt9YSs9MTY7Y29udGludWV9YSs9aTtjb25zdCBvPXNbYV07ZS5ibG9ja0RhdGFbdCtvXT1yZWNlaXZlQW5kRXh0ZW5kKG4pKigxPDx1KTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1jO2NvbnN0IHI9bDtsZXQgbixpLG89MDtmb3IoO2E8PXI7KXtjb25zdCByPXQrc1thXSxjPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goUyl7Y2FzZSAwOmk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtuPTE1Jmk7bz1pPj40O2lmKDA9PT1uKWlmKG88MTUpe3k9cmVjZWl2ZShvKSsoMTw8byk7Uz00fWVsc2V7bz0xNjtTPTF9ZWxzZXtpZigxIT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO3c9cmVjZWl2ZUFuZEV4dGVuZChuKTtTPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSk7ZWxzZXtvLS07MD09PW8mJihTPTI9PT1TPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1jKihyZWFkQml0KCk8PHUpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09dzw8dTtTPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSkpfWErK31pZig0PT09Uyl7eS0tOzA9PT15JiYoUz0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgbj0xO2Zvcig7bjw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEsaT1hPj40O2lmKDA9PT1yKXtpZihpPDE1KWJyZWFrO24rPTE2O2NvbnRpbnVlfW4rPWk7Y29uc3Qgbz1zW25dO2UuYmxvY2tEYXRhW3Qrb109cmVjZWl2ZUFuZEV4dGVuZChyKTtuKyt9fTtsZXQgRCxOPTA7Y29uc3QgUj0xPT09Qz9uWzBdLmJsb2Nrc1BlckxpbmUqblswXS5ibG9ja3NQZXJDb2x1bW46ZiphLm1jdXNQZXJDb2x1bW47bGV0IEwsJDtmb3IoO048PVI7KXtjb25zdCBhPW8/TWF0aC5taW4oUi1OLG8pOlI7aWYoYT4wKXtmb3Ioaz0wO2s8QztrKyspbltrXS5wcmVkPTA7eT0wO2lmKDE9PT1DKXt2PW5bMF07Zm9yKE09MDtNPGE7TSsrKXtkZWNvZGVCbG9jayh2LEUsTik7TisrfX1lbHNlIGZvcihNPTA7TTxhO00rKyl7Zm9yKGs9MDtrPEM7aysrKXt2PW5ba107TD12Lmg7JD12LnY7Zm9yKE89MDtPPCQ7TysrKWZvcihUPTA7VDxMO1QrKylkZWNvZGVNY3UodixFLE4sTyxUKX1OKyt9fWI9MDtEPWZpbmROZXh0RmlsZU1hcmtlcihlLHQpO2lmKCFEKWJyZWFrO2lmKEQuaW52YWxpZCl7Y29uc3QgZT1hPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUiOygwLHIud2FybikoYGRlY29kZVNjYW4gLSAke2V9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtELmludmFsaWR9YCk7dD1ELm9mZnNldH1pZighKEQubWFya2VyPj02NTQ4OCYmRC5tYXJrZXI8PTY1NDk1KSlicmVhazt0Kz0yfXJldHVybiB0LXB9ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxhKXtjb25zdCByPWUucXVhbnRpemF0aW9uVGFibGUsbj1lLmJsb2NrRGF0YTtsZXQgaSxzLHAsbSxiLHksdyxTLHgsQyx2LGssTyxULE0sRSxEO2lmKCFyKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7eD1uW3QrZV07Qz1uW3QrZSsxXTt2PW5bdCtlKzJdO2s9blt0K2UrM107Tz1uW3QrZSs0XTtUPW5bdCtlKzVdO009blt0K2UrNl07RT1uW3QrZSs3XTt4Kj1yW2VdO2lmKDAhPShDfHZ8a3xPfFR8TXxFKSl7Qyo9cltlKzFdO3YqPXJbZSsyXTtrKj1yW2UrM107Tyo9cltlKzRdO1QqPXJbZSs1XTtNKj1yW2UrNl07RSo9cltlKzddO2k9Zip4KzEyOD4+ODtzPWYqTysxMjg+Pjg7cD12O209TTtiPWcqKEMtRSkrMTI4Pj44O1M9ZyooQytFKSsxMjg+Pjg7eT1rPDw0O3c9VDw8NDtpPWkrcysxPj4xO3M9aS1zO0Q9cCpkK20qdSsxMjg+Pjg7cD1wKnUtbSpkKzEyOD4+ODttPUQ7Yj1iK3crMT4+MTt3PWItdztTPVMreSsxPj4xO3k9Uy15O2k9aSttKzE+PjE7bT1pLW07cz1zK3ArMT4+MTtwPXMtcDtEPWIqaCtTKmwrMjA0OD4+MTI7Yj1iKmwtUypoKzIwNDg+PjEyO1M9RDtEPXkqYyt3Km8rMjA0OD4+MTI7eT15Km8tdypjKzIwNDg+PjEyO3c9RDthW2VdPWkrUzthW2UrN109aS1TO2FbZSsxXT1zK3c7YVtlKzZdPXMtdzthW2UrMl09cCt5O2FbZSs1XT1wLXk7YVtlKzNdPW0rYjthW2UrNF09bS1ifWVsc2V7RD1mKngrNTEyPj4xMDthW2VdPUQ7YVtlKzFdPUQ7YVtlKzJdPUQ7YVtlKzNdPUQ7YVtlKzRdPUQ7YVtlKzVdPUQ7YVtlKzZdPUQ7YVtlKzddPUR9fWZvcihsZXQgZT0wO2U8ODsrK2Upe3g9YVtlXTtDPWFbZSs4XTt2PWFbZSsxNl07az1hW2UrMjRdO089YVtlKzMyXTtUPWFbZSs0MF07TT1hW2UrNDhdO0U9YVtlKzU2XTtpZigwIT0oQ3x2fGt8T3xUfE18RSkpe2k9Zip4KzIwNDg+PjEyO3M9ZipPKzIwNDg+PjEyO3A9djttPU07Yj1nKihDLUUpKzIwNDg+PjEyO1M9ZyooQytFKSsyMDQ4Pj4xMjt5PWs7dz1UO2k9NDExMisoaStzKzE+PjEpO3M9aS1zO0Q9cCpkK20qdSsyMDQ4Pj4xMjtwPXAqdS1tKmQrMjA0OD4+MTI7bT1EO2I9Yit3KzE+PjE7dz1iLXc7Uz1TK3krMT4+MTt5PVMteTtpPWkrbSsxPj4xO209aS1tO3M9cytwKzE+PjE7cD1zLXA7RD1iKmgrUypsKzIwNDg+PjEyO2I9YipsLVMqaCsyMDQ4Pj4xMjtTPUQ7RD15KmMrdypvKzIwNDg+PjEyO3k9eSpvLXcqYysyMDQ4Pj4xMjt3PUQ7eD1pK1M7RT1pLVM7Qz1zK3c7TT1zLXc7dj1wK3k7VD1wLXk7az1tK2I7Tz1tLWI7eDwxNj94PTA6eD49NDA4MD94PTI1NTp4Pj49NDtDPDE2P0M9MDpDPj00MDgwP0M9MjU1OkM+Pj00O3Y8MTY/dj0wOnY+PTQwODA/dj0yNTU6dj4+PTQ7azwxNj9rPTA6az49NDA4MD9rPTI1NTprPj49NDtPPDE2P089MDpPPj00MDgwP089MjU1Ok8+Pj00O1Q8MTY/VD0wOlQ+PTQwODA/VD0yNTU6VD4+PTQ7TTwxNj9NPTA6TT49NDA4MD9NPTI1NTpNPj49NDtFPDE2P0U9MDpFPj00MDgwP0U9MjU1OkU+Pj00O25bdCtlXT14O25bdCtlKzhdPUM7blt0K2UrMTZdPXY7blt0K2UrMjRdPWs7blt0K2UrMzJdPU87blt0K2UrNDBdPVQ7blt0K2UrNDhdPU07blt0K2UrNTZdPUV9ZWxzZXtEPWYqeCs4MTkyPj4xNDtEPUQ8LTIwNDA/MDpEPj0yMDI0PzI1NTpEKzIwNTY+PjQ7blt0K2VdPUQ7blt0K2UrOF09RDtuW3QrZSsxNl09RDtuW3QrZSsyNF09RDtuW3QrZSszMl09RDtuW3QrZSs0MF09RDtuW3QrZSs0OF09RDtuW3QrZSs1Nl09RH19fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGE9dC5ibG9ja3NQZXJMaW5lLHI9dC5ibG9ja3NQZXJDb2x1bW4sbj1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHI9MDtyPGE7cisrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsciksbil9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0O2NvbnN0IHI9ZS5sZW5ndGgtMTtsZXQgbj1hPHQ/YTp0O2lmKHQ+PXIpcmV0dXJuIG51bGw7Y29uc3Qgcz0oMCxpLnJlYWRVaW50MTYpKGUsdCk7aWYocz49NjU0NzImJnM8PTY1NTM0KXJldHVybntpbnZhbGlkOm51bGwsbWFya2VyOnMsb2Zmc2V0OnR9O2xldCBvPSgwLGkucmVhZFVpbnQxNikoZSxuKTtmb3IoOyEobz49NjU0NzImJm88PTY1NTM0KTspe2lmKCsrbj49cilyZXR1cm4gbnVsbDtvPSgwLGkucmVhZFVpbnQxNikoZSxuKX1yZXR1cm57aW52YWxpZDpzLnRvU3RyaW5nKDE2KSxtYXJrZXI6byxvZmZzZXQ6bn19dC5KcGVnSW1hZ2U9Y2xhc3MgSnBlZ0ltYWdle2NvbnN0cnVjdG9yKCl7bGV0e2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSl7bGV0e2RubFNjYW5MaW5lczp0PW51bGx9PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtmdW5jdGlvbiByZWFkRGF0YUJsb2NrKCl7Y29uc3QgdD0oMCxpLnJlYWRVaW50MTYpKGUsbyk7bys9MjtsZXQgYT1vK3QtMjtjb25zdCBuPWZpbmROZXh0RmlsZU1hcmtlcihlLGEsbyk7aWYobj8uaW52YWxpZCl7KDAsci53YXJuKSgicmVhZERhdGFCbG9jayAtIGluY29ycmVjdCBsZW5ndGgsIGN1cnJlbnQgbWFya2VyIGlzOiAiK24uaW52YWxpZCk7YT1uLm9mZnNldH1jb25zdCBzPWUuc3ViYXJyYXkobyxhKTtvKz1zLmxlbmd0aDtyZXR1cm4gc31mdW5jdGlvbiBwcmVwYXJlQ29tcG9uZW50cyhlKXtjb25zdCB0PU1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgvZS5tYXhIKSxhPU1hdGguY2VpbChlLnNjYW5MaW5lcy84L2UubWF4Vik7Zm9yKGNvbnN0IHIgb2YgZS5jb21wb25lbnRzKXtjb25zdCBuPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84KSpyLmgvZS5tYXhIKSxpPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zY2FuTGluZXMvOCkqci52L2UubWF4Vikscz10KnIuaCxvPTY0KihhKnIudikqKHMrMSk7ci5ibG9ja0RhdGE9bmV3IEludDE2QXJyYXkobyk7ci5ibG9ja3NQZXJMaW5lPW47ci5ibG9ja3NQZXJDb2x1bW49aX1lLm1jdXNQZXJMaW5lPXQ7ZS5tY3VzUGVyQ29sdW1uPWF9bGV0IGEsbixvPTAsYz1udWxsLGw9bnVsbCxoPTA7Y29uc3QgdT1bXSxkPVtdLGY9W107bGV0IGc9KDAsaS5yZWFkVWludDE2KShlLG8pO28rPTI7aWYoNjU0OTYhPT1nKXRocm93IG5ldyBKcGVnRXJyb3IoIlNPSSBub3QgZm91bmQiKTtnPSgwLGkucmVhZFVpbnQxNikoZSxvKTtvKz0yO2U6Zm9yKDs2NTQ5NyE9PWc7KXtsZXQgcCxtLGI7c3dpdGNoKGcpe2Nhc2UgNjU1MDQ6Y2FzZSA2NTUwNTpjYXNlIDY1NTA2OmNhc2UgNjU1MDc6Y2FzZSA2NTUwODpjYXNlIDY1NTA5OmNhc2UgNjU1MTA6Y2FzZSA2NTUxMTpjYXNlIDY1NTEyOmNhc2UgNjU1MTM6Y2FzZSA2NTUxNDpjYXNlIDY1NTE1OmNhc2UgNjU1MTY6Y2FzZSA2NTUxNzpjYXNlIDY1NTE4OmNhc2UgNjU1MTk6Y2FzZSA2NTUzNDpjb25zdCB5PXJlYWREYXRhQmxvY2soKTs2NTUwND09PWcmJjc0PT09eVswXSYmNzA9PT15WzFdJiY3Mz09PXlbMl0mJjcwPT09eVszXSYmMD09PXlbNF0mJihjPXt2ZXJzaW9uOnttYWpvcjp5WzVdLG1pbm9yOnlbNl19LGRlbnNpdHlVbml0czp5WzddLHhEZW5zaXR5OnlbOF08PDh8eVs5XSx5RGVuc2l0eTp5WzEwXTw8OHx5WzExXSx0aHVtYldpZHRoOnlbMTJdLHRodW1iSGVpZ2h0OnlbMTNdLHRodW1iRGF0YTp5LnN1YmFycmF5KDE0LDE0KzMqeVsxMl0qeVsxM10pfSk7NjU1MTg9PT1nJiY2NT09PXlbMF0mJjEwMD09PXlbMV0mJjExMT09PXlbMl0mJjk4PT09eVszXSYmMTAxPT09eVs0XSYmKGw9e3ZlcnNpb246eVs1XTw8OHx5WzZdLGZsYWdzMDp5WzddPDw4fHlbOF0sZmxhZ3MxOnlbOV08PDh8eVsxMF0sdHJhbnNmb3JtQ29kZTp5WzExXX0pO2JyZWFrO2Nhc2UgNjU0OTk6Y29uc3Qgdz0oMCxpLnJlYWRVaW50MTYpKGUsbyk7bys9Mjtjb25zdCBTPXcrby0yO2xldCB4O2Zvcig7bzxTOyl7Y29uc3QgdD1lW28rK10sYT1uZXcgVWludDE2QXJyYXkoNjQpO2lmKHQ+PjQ9PTApZm9yKG09MDttPDY0O20rKyl7eD1zW21dO2FbeF09ZVtvKytdfWVsc2V7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IobT0wO208NjQ7bSsrKXt4PXNbbV07YVt4XT0oMCxpLnJlYWRVaW50MTYpKGUsbyk7bys9Mn19dVsxNSZ0XT1hfWJyZWFrO2Nhc2UgNjU0NzI6Y2FzZSA2NTQ3MzpjYXNlIDY1NDc0OmlmKGEpdGhyb3cgbmV3IEpwZWdFcnJvcigiT25seSBzaW5nbGUgZnJhbWUgSlBFR3Mgc3VwcG9ydGVkIik7bys9MjthPXt9O2EuZXh0ZW5kZWQ9NjU0NzM9PT1nO2EucHJvZ3Jlc3NpdmU9NjU0NzQ9PT1nO2EucHJlY2lzaW9uPWVbbysrXTtjb25zdCBDPSgwLGkucmVhZFVpbnQxNikoZSxvKTtvKz0yO2Euc2NhbkxpbmVzPXR8fEM7YS5zYW1wbGVzUGVyTGluZT0oMCxpLnJlYWRVaW50MTYpKGUsbyk7bys9MjthLmNvbXBvbmVudHM9W107YS5jb21wb25lbnRJZHM9e307Y29uc3Qgdj1lW28rK107bGV0IGs9MCxPPTA7Zm9yKHA9MDtwPHY7cCsrKXtjb25zdCB0PWVbb10scj1lW28rMV0+PjQsbj0xNSZlW28rMV07azxyJiYoaz1yKTtPPG4mJihPPW4pO2NvbnN0IGk9ZVtvKzJdO2I9YS5jb21wb25lbnRzLnB1c2goe2g6cix2Om4scXVhbnRpemF0aW9uSWQ6aSxxdWFudGl6YXRpb25UYWJsZTpudWxsfSk7YS5jb21wb25lbnRJZHNbdF09Yi0xO28rPTN9YS5tYXhIPWs7YS5tYXhWPU87cHJlcGFyZUNvbXBvbmVudHMoYSk7YnJlYWs7Y2FzZSA2NTQ3Njpjb25zdCBUPSgwLGkucmVhZFVpbnQxNikoZSxvKTtvKz0yO2ZvcihwPTI7cDxUOyl7Y29uc3QgdD1lW28rK10sYT1uZXcgVWludDhBcnJheSgxNik7bGV0IHI9MDtmb3IobT0wO208MTY7bSsrLG8rKylyKz1hW21dPWVbb107Y29uc3Qgbj1uZXcgVWludDhBcnJheShyKTtmb3IobT0wO208cjttKyssbysrKW5bbV09ZVtvXTtwKz0xNytyOyh0Pj40PT0wP2Y6ZClbMTUmdF09YnVpbGRIdWZmbWFuVGFibGUoYSxuKX1icmVhaztjYXNlIDY1NTAxOm8rPTI7bj0oMCxpLnJlYWRVaW50MTYpKGUsbyk7bys9MjticmVhaztjYXNlIDY1NDk4OmNvbnN0IE09MT09KytoJiYhdDtvKz0yO2NvbnN0IEU9ZVtvKytdLEQ9W107Zm9yKHA9MDtwPEU7cCsrKXtjb25zdCB0PWVbbysrXSxyPWEuY29tcG9uZW50SWRzW3RdLG49YS5jb21wb25lbnRzW3JdO24uaW5kZXg9dDtjb25zdCBpPWVbbysrXTtuLmh1ZmZtYW5UYWJsZURDPWZbaT4+NF07bi5odWZmbWFuVGFibGVBQz1kWzE1JmldO0QucHVzaChuKX1jb25zdCBOPWVbbysrXSxSPWVbbysrXSxMPWVbbysrXTt0cnl7Y29uc3QgdD1kZWNvZGVTY2FuKGUsbyxhLEQsbixOLFIsTD4+NCwxNSZMLE0pO28rPXR9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIEROTE1hcmtlckVycm9yKXsoMCxyLndhcm4pKGAke3QubWVzc2FnZX0gLS0gYXR0ZW1wdGluZyB0byByZS1wYXJzZSB0aGUgSlBFRyBpbWFnZS5gKTtyZXR1cm4gdGhpcy5wYXJzZShlLHtkbmxTY2FuTGluZXM6dC5zY2FuTGluZXN9KX1pZih0IGluc3RhbmNlb2YgRU9JTWFya2VyRXJyb3IpeygwLHIud2FybikoYCR7dC5tZXNzYWdlfSAtLSBpZ25vcmluZyB0aGUgcmVzdCBvZiB0aGUgaW1hZ2UgZGF0YS5gKTticmVhayBlfXRocm93IHR9YnJlYWs7Y2FzZSA2NTUwMDpvKz00O2JyZWFrO2Nhc2UgNjU1MzU6MjU1IT09ZVtvXSYmby0tO2JyZWFrO2RlZmF1bHQ6Y29uc3QgJD1maW5kTmV4dEZpbGVNYXJrZXIoZSxvLTIsby0zKTtpZigkPy5pbnZhbGlkKXsoMCxyLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiKyQuaW52YWxpZCk7bz0kLm9mZnNldDticmVha31pZighJHx8bz49ZS5sZW5ndGgtMSl7KDAsci53YXJuKSgiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrZy50b1N0cmluZygxNikpfWc9KDAsaS5yZWFkVWludDE2KShlLG8pO28rPTJ9dGhpcy53aWR0aD1hLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWEuc2NhbkxpbmVzO3RoaXMuamZpZj1jO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgYS5jb21wb25lbnRzKXtjb25zdCB0PXVbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvYS5tYXhILHNjYWxlWTplLnYvYS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtjb25zdCByPXRoaXMud2lkdGgvZSxuPXRoaXMuaGVpZ2h0L3Q7bGV0IGkscyxvLGMsbCxoLHUsZCxmLGcscCxtPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHk9ZSp0KmIsdz1uZXcgVWludDhDbGFtcGVkQXJyYXkoeSksUz1uZXcgVWludDMyQXJyYXkoZSkseD00Mjk0OTY3Mjg4O2xldCBDO2Zvcih1PTA7dTxiO3UrKyl7aT10aGlzLmNvbXBvbmVudHNbdV07cz1pLnNjYWxlWCpyO289aS5zY2FsZVkqbjttPXU7cD1pLm91dHB1dDtjPWkuYmxvY2tzUGVyTGluZSsxPDwzO2lmKHMhPT1DKXtmb3IobD0wO2w8ZTtsKyspe2Q9MHxsKnM7U1tsXT0oZCZ4KTw8M3w3JmR9Qz1zfWZvcihoPTA7aDx0O2grKyl7ZD0wfGgqbztnPWMqKGQmeCl8KDcmZCk8PDM7Zm9yKGw9MDtsPGU7bCsrKXt3W21dPXBbZytTW2xdXTttKz1ifX19bGV0IHY9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHx2fHwodj1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYodilmb3IodT0wO3U8eTspZm9yKGQ9MCxmPTA7ZDxiO2QrKyx1KyssZis9Mil3W3VdPSh3W3VdKnZbZl0+PjgpK3ZbZisxXTtyZXR1cm4gd31nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLHI7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bis9Myl7dD1lW25dO2E9ZVtuKzFdO3I9ZVtuKzJdO2Vbbl09dC0xNzkuNDU2KzEuNDAyKnI7ZVtuKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpyO2VbbisyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgYT0wLHI9MCxuPWUubGVuZ3RoO2E8bjthKz0zLHIrPTQpe2NvbnN0IG49ZVthXSxpPWVbYSsxXSxzPWVbYSsyXTt0W3JdPW4tMTc5LjQ1NisxLjQwMipzO3RbcisxXT1uKzEzNS40NTktLjM0NCppLS43MTQqczt0W3IrMl09bi0yMjYuODE2KzEuNzcyKmk7dFtyKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxhLHIsbixpPTA7Zm9yKGxldCBzPTAsbz1lLmxlbmd0aDtzPG87cys9NCl7dD1lW3NdO2E9ZVtzKzFdO3I9ZVtzKzJdO249ZVtzKzNdO2VbaSsrXT1hKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSphKy4wMDA0MzcxMzA0NzU5MjYyMzIqci01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqbi0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrciooLS4wMDA5NTc5NjQzNzg0NDU3NzMqcisuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3Km4rMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypuKy40ODM1NzA4ODQ1MTI2NSkrbiooLS4wMDAzMzYxOTcxNzc2MTgzOTQqbisuNDg0NzkxNTYxNDkwNzc2KTtlW2krK109MTA3LjI2ODAzOTM5NzcyNCthKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmEtLjAwMDY0MDk5MjAxODI5Nzk0NSpyKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3Km4tLjE3NjQ5MTc5MjQ2Mjg3NSkrciooLS4wMDA3NzgyNjk5NDE1MTM2ODMqcisuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKm4tLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4Km4rLjI1ODAyOTEwMjA2ODQ1KStuKigtLjAwMDMxODkxMzExNzU4ODMyOCpuLS4yMTM3NDI0MDAzMjM2NjUpO2VbaSsrXT1hKigtLjAwMDU3MDExNTE5Njk3MzY3NyphLTI2MzQwOTA1MTAwNDU4OWUtMTkqcisuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipuKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytyKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpyLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKm4tLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3Km4rLjExNjkzNTAyMDQ2NTE0NSkrbiooLS4wMDAzNDM1MzE5OTY1MTA1NTUqbisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAsaSl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrPTQpe2NvbnN0IGE9ZVt0XSxyPWVbdCsxXSxuPWVbdCsyXSxpPWVbdCszXTtlW3RdPXIqKC02NjA2MzU2Njk0MjAzNjRlLTE5KnIrLjAwMDQzNzEzMDQ3NTkyNjIzMipuLTU0MDgwNjEwMDY0NTk5ZS0xOCphKy4wMDA0ODQ0OTc5NzEyMDI4MSppLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCtuKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MypuKy4wMDA4MTcwNzY5MTEzNDY2MjUqYS0uMDA0NzcyNzE0MDU0MDg3NDcqaSsxLjUzMzgwMjUzMjIxNzM0KSthKiguMDAwOTYxMjUwMTg0MTMwNjg4KmEtLjAwMjY2MjU3MzMyMjgzOTMzKmkrLjQ4MzU3MDg4NDUxMjY1KStpKigtLjAwMDMzNjE5NzE3NzYxODM5NCppKy40ODQ3OTE1NjE0OTA3NzYpO2VbdCsxXT0xMDcuMjY4MDM5Mzk3NzI0K3IqKDIxOTkyNzEwNDUyNTc0MWUtMTkqci0uMDAwNjQwOTkyMDE4Mjk3OTQ1Km4rLjAwMDY1OTM5NzAwMTI0NTU3NyphKy4wMDA0MjYxMDU2NTI5Mzg4MzcqaS0uMTc2NDkxNzkyNDYyODc1KStuKigtLjAwMDc3ODI2OTk0MTUxMzY4MypuKy4wMDEzMDg3MjI2MTQwODI3NSphKy4wMDA3NzA0ODI2MzE4MDExMzIqaS0uMTUxMDUxNDkyNzc1NTYyKSthKiguMDAxMjY5MzUzNjgxMTQ4NDMqYS0uMDAyNjUwOTAxODkwMTA4OTgqaSsuMjU4MDI5MTAyMDY4NDUpK2kqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KmktLjIxMzc0MjQwMDMyMzY2NSk7ZVt0KzJdPXIqKC0uMDAwNTcwMTE1MTk2OTczNjc3KnItMjYzNDA5MDUxMDA0NTg5ZS0xOSpuKy4wMDIwNzQxMDg4MTE1MDEyKmEtLjAwMjg4MjYwMjM2ODUzNDQyKmkrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K24qKC0xNTM0OTYwNTc0NDA5NzVlLTE5Km4tLjAwMDEzMjY4OTA0Mzk2MTQ0NiphKy4wMDA1NjA4MzM2OTEyNDI4MTIqaS0uMTk1MTUyMDI3NTM0MDQ5KSthKiguMDAxNzQ0MTgxMzI5Mjc1ODIqYS0uMDAyNTUyNDMzMjE0MzkzNDcqaSsuMTE2OTM1MDIwNDY1MTQ1KStpKigtLjAwMDM0MzUzMTk5NjUxMDU1NSppKy4yNDE2NTI2MDIzMjQwNyk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsYSxyO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rPTQpe3Q9ZVtuXTthPWVbbisxXTtyPWVbbisyXTtlW25dPTQzNC40NTYtdC0xLjQwMipyO2VbbisxXT0xMTkuNTQxLXQrLjM0NCphKy43MTQqcjtlW24rMl09NDgxLjgxNi10LTEuNzcyKmF9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7bGV0IHQsYSxyLG4saT0wO2ZvcihsZXQgcz0wLG89ZS5sZW5ndGg7czxvO3MrPTQpe3Q9ZVtzXTthPWVbcysxXTtyPWVbcysyXTtuPWVbcyszXTtlW2krK109MjU1K3QqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCp0Ky4wMDA4Mzc5MjYyMTIxMDEzNzI3KmErLjAwMDI4OTQ3MTgxODg2NDMyOTQqcisuMDAzMjY0MjMxMDU3NTM3ODA2Km4tMS4xMTg1NjExODY3MjAzOTM3KSthKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqYS04NjI2OTQ5MTU4NjM4NTcyZS0yMCpyLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKm4tLjAyMTU1Njg4Nzk0OTc4OTY3KStyKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqci0uMDAwMzI2NzgwODI3OTQ4NTI4NipuKy4wNjg2NzQyMjM4NTk1MzQ1KS1uKiguMDAwMzM2MTk3MTc3NjE4MzkzNypuKy43NDMwNjU5MTUxMzQyMjU0KTtlW2krK109MjU1K3QqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCp0Ky4wMDA5MjQ1MzcxMzI1NzM1ODUqYSsuMDAwMTA1NjczNTk2MTg2ODM1OTMqcisuMDAwNDc5MTg2NDY4NzQzNjUxMipuLS4zMTA5Njg5NTg3NTE1ODc1KSthKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KmErLjAwMDI3MDI4NDUyNTM1MzQ3MTQqcisuMDAyMDIwMDMwODk3NzMwNzE1NipuLS43NDg4MDUyMTY3MDE1NDk0KStyKig2ODM0ODE1OTk4MjM1NjYyZS0yMCpyKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypuLS4wOTc1MTkyNzc3NDcyODkzMyktbiooLjAwMDMxODkxMzExNzU4ODMyODEqbisuNzM2NDg4MzgwNzczMzE2OCk7ZVtpKytdPTI1NSt0KigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqdCsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqYSsuMDAwNDc1MTk4NTA5NzU4MzU4OSpyLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipuLS4wNTU2MjE4Njk4MDI2NDAzNCkrYSooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KmErLjAwMDk2OTIyMzkxMzA3MjUxODYqcisuMDAwNzc4MjY5MjQ1MDAzNjI1MypuLS40NDAxNTIzMjM2NzUyNjQ2MykrciooNS4wNjg4ODI5MTQwNjg3NjllLTcqcisuMDAxNzc3ODM2OTAxMTM3NTA3MSpuLS43NTkxNDU0NjQ5NzQ5NjA5KS1uKiguMDAwMzQzNTMxOTk2NTEwNTU1MypuKy43MDYzNzcwMTg2MTYwMTQ0KX1yZXR1cm4gZS5zdWJhcnJheSgwLGkpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kz00KXtjb25zdCBhPWVbdF0scj1lW3QrMV0sbj1lW3QrMl0saT1lW3QrM107ZVt0XT0yNTUrYSooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKmErLjAwMDgzNzkyNjIxMjEwMTM3MjcqcisuMDAwMjg5NDcxODE4ODY0MzI5NCpuKy4wMDMyNjQyMzEwNTc1Mzc4MDYqaS0xLjExODU2MTE4NjcyMDM5MzcpK3IqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSpyLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKm4tLjAwMDI3NDg3NjkwNjc0OTk0OTEqaS0uMDIxNTU2ODg3OTQ5Nzg5NjcpK24qKC0zODc4MDk5MjEyODY5MzYzZS0yMCpuLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KmkrLjA2ODY3NDIyMzg1OTUzNDUpLWkqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KmkrLjc0MzA2NTkxNTEzNDIyNTQpO2VbdCsxXT0yNTUrYSooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KmErLjAwMDkyNDUzNzEzMjU3MzU4NSpyKy4wMDAxMDU2NzM1OTYxODY4MzU5MypuKy4wMDA0NzkxODY0Njg3NDM2NTEyKmktLjMxMDk2ODk1ODc1MTU4NzUpK3IqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqcisuMDAwMjcwMjg0NTI1MzUzNDcxNCpuKy4wMDIwMjAwMzA4OTc3MzA3MTU2KmktLjc0ODgwNTIxNjcwMTU0OTQpK24qKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKm4rLjAwMDE1MTY4NDUyMzYzNDYwOTczKmktLjA5NzUxOTI3Nzc0NzI4OTMzKS1pKiguMDAwMzE4OTEzMTE3NTg4MzI4MSppKy43MzY0ODgzODA3NzMzMTY4KTtlW3QrMl09MjU1K2EqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSphKy4wMDAxMjQyMzk1NjE3NTQ5MDg1MSpyKy4wMDA0NzUxOTg1MDk3NTgzNTg5Km4tMzY3MjkzMTc0NzY2MzA0MjJlLTIyKmktLjA1NTYyMTg2OTgwMjY0MDM0KStyKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqcisuMDAwOTY5MjIzOTEzMDcyNTE4NipuKy4wMDA3NzgyNjkyNDUwMDM2MjUzKmktLjQ0MDE1MjMyMzY3NTI2NDYzKStuKig1LjA2ODg4MjkxNDA2ODc2OWUtNypuKy4wMDE3Nzc4MzY5MDExMzc1MDcxKmktLjc1OTE0NTQ2NDk3NDk2MDkpLWkqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKmkrLjcwNjM3NzAxODYxNjAxNDQpO2VbdCszXT0yNTV9cmV0dXJuIGV9Z2V0RGF0YShlKXtsZXR7d2lkdGg6dCxoZWlnaHQ6YSxmb3JjZVJHQkE6cj0hMSxmb3JjZVJHQjppPSExLGlzU291cmNlUERGOnM9ITF9PWU7aWYodGhpcy5udW1Db21wb25lbnRzPjQpdGhyb3cgbmV3IEpwZWdFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgbW9kZSIpO2NvbnN0IG89dGhpcy5fZ2V0TGluZWFyaXplZEJsb2NrRGF0YSh0LGEscyk7aWYoMT09PXRoaXMubnVtQ29tcG9uZW50cyYmKHJ8fGkpKXtjb25zdCBlPW8ubGVuZ3RoKihyPzQ6MyksdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7bGV0IGE9MDtpZihyKSgwLG4uZ3JheVRvUkdCQSkobyxuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIG8pe3RbYSsrXT1lO3RbYSsrXT1lO3RbYSsrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihyKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShvLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKG8sZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihvKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gcj90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShvKTppP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iobyk6dGhpcy5fY29udmVydFljY2tUb0NteWsobyk7aWYocilyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEobyk7aWYoaSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihvKX1yZXR1cm4gb319fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBPWNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBO3QuY29udmVydFRvUkdCQT1mdW5jdGlvbiBjb252ZXJ0VG9SR0JBKGUpe3N3aXRjaChlLmtpbmQpe2Nhc2Ugci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6cmV0dXJuIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKGUpO2Nhc2Ugci5JbWFnZUtpbmQuUkdCXzI0QlBQOnJldHVybiBmdW5jdGlvbiBjb252ZXJ0UkdCVG9SR0JBKGUpe2xldHtzcmM6dCxzcmNQb3M6YT0wLGRlc3Q6bixkZXN0UG9zOmk9MCx3aWR0aDpzLGhlaWdodDpvfT1lLGM9MDtjb25zdCBsPXQubGVuZ3RoPj4yLGg9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLGEsbCk7aWYoci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7Zm9yKDtjPGwtMjtjKz0zLGkrPTQpe2NvbnN0IGU9aFtjXSx0PWhbYysxXSxhPWhbYysyXTtuW2ldPTQyNzgxOTAwODB8ZTtuW2krMV09ZT4+PjI0fHQ8PDh8NDI3ODE5MDA4MDtuW2krMl09dD4+PjE2fGE8PDE2fDQyNzgxOTAwODA7bltpKzNdPWE+Pj44fDQyNzgxOTAwODB9Zm9yKGxldCBlPTQqYyxhPXQubGVuZ3RoO2U8YTtlKz0zKW5baSsrXT10W2VdfHRbZSsxXTw8OHx0W2UrMl08PDE2fDQyNzgxOTAwODB9ZWxzZXtmb3IoO2M8bC0yO2MrPTMsaSs9NCl7Y29uc3QgZT1oW2NdLHQ9aFtjKzFdLGE9aFtjKzJdO25baV09MjU1fGU7bltpKzFdPWU8PDI0fHQ+Pj44fDI1NTtuW2krMl09dDw8MTZ8YT4+PjE2fDI1NTtuW2krM109YTw8OHwyNTV9Zm9yKGxldCBlPTQqYyxhPXQubGVuZ3RoO2U8YTtlKz0zKW5baSsrXT10W2VdPDwyNHx0W2UrMV08PDE2fHRbZSsyXTw8OHwyNTV9cmV0dXJue3NyY1BvczphLGRlc3RQb3M6aX19KGUpfXJldHVybiBudWxsfTt0LmdyYXlUb1JHQkE9ZnVuY3Rpb24gZ3JheVRvUkdCQShlLHQpe2lmKHIuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXRbYV09NjU3OTMqZVthXXw0Mjc4MTkwMDgwO2Vsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXRbYV09MTY4NDMwMDgqZVthXXwyNTV9O2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTt2YXIgcj1hKDE0NCk7ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoZSl7bGV0e3NyYzp0LHNyY1BvczphPTAsZGVzdDpuLHdpZHRoOmksaGVpZ2h0OnMsbm9uQmxhY2tDb2xvcjpvPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpjPSExfT1lO2NvbnN0IGw9ci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbaCx1XT1jP1tvLGxdOltsLG9dLGQ9aT4+MyxmPTcmaSxnPXQubGVuZ3RoO249bmV3IFVpbnQzMkFycmF5KG4uYnVmZmVyKTtsZXQgcD0wO2ZvcihsZXQgZT0wO2U8cztlKyspe2Zvcihjb25zdCBlPWErZDthPGU7YSsrKXtjb25zdCBlPWE8Zz90W2FdOjI1NTtuW3ArK109MTI4JmU/dTpoO25bcCsrXT02NCZlP3U6aDtuW3ArK109MzImZT91Omg7bltwKytdPTE2JmU/dTpoO25bcCsrXT04JmU/dTpoO25bcCsrXT00JmU/dTpoO25bcCsrXT0yJmU/dTpoO25bcCsrXT0xJmU/dTpofWlmKDA9PT1mKWNvbnRpbnVlO2NvbnN0IGU9YTxnP3RbYSsrXToyNTU7Zm9yKGxldCB0PTA7dDxmO3QrKyluW3ArK109ZSYxPDw3LXQ/dTpofXJldHVybntzcmNQb3M6YSxkZXN0UG9zOnB9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcHhTdHJlYW09dm9pZCAwO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTt2YXIgcj1hKDE2OCksbj1hKDE4MCksaT1hKDE0NCk7Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBuLkpweEltYWdlO2UucGFyc2UodGhpcy5ieXRlcyk7Y29uc3QgdD1lLndpZHRoLGE9ZS5oZWlnaHQscj1lLmNvbXBvbmVudHNDb3VudCxpPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1pKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtjb25zdCBuPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqcik7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1lLnRpbGVzW2FdLHM9aS53aWR0aCxvPWkuaGVpZ2h0LGM9aS5sZWZ0LGw9aS50b3AsaD1pLml0ZW1zO2xldCB1PTAsZD0odCpsK2MpKnI7Y29uc3QgZj10KnIsZz1zKnI7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3QgZT1oLnN1YmFycmF5KHUsdStnKTtuLnNldChlLGQpO3UrPWc7ZCs9Zn19dGhpcy5idWZmZXI9bn10aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITB9fXQuSnB4U3RyZWFtPUpweFN0cmVhbX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcHhJbWFnZT12b2lkIDA7YSgxMzkpO2EoMik7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO3ZhciByPWEoMTQ0KSxuPWEoMTQ5KSxpPWEoMTc1KTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBYIGVycm9yOiAke2V9YCwiSnB4RXJyb3IiKX19Y29uc3Qgcz17TEw6MCxMSDoxLEhMOjEsSEg6Mn07dC5KcHhJbWFnZT1jbGFzcyBKcHhJbWFnZXtjb25zdHJ1Y3Rvcigpe3RoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2U9ITF9cGFyc2UoZSl7aWYoNjUzNTk9PT0oMCxuLnJlYWRVaW50MTYpKGUsMCkpe3RoaXMucGFyc2VDb2Rlc3RyZWFtKGUsMCxlLmxlbmd0aCk7cmV0dXJufWNvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8dDspe2xldCBpPTgscz0oMCxuLnJlYWRVaW50MzIpKGUsYSk7Y29uc3Qgbz0oMCxuLnJlYWRVaW50MzIpKGUsYSs0KTthKz1pO2lmKDE9PT1zKXtzPTQyOTQ5NjcyOTYqKDAsbi5yZWFkVWludDMyKShlLGEpKygwLG4ucmVhZFVpbnQzMikoZSxhKzQpO2ErPTg7aSs9OH0wPT09cyYmKHM9dC1hK2kpO2lmKHM8aSl0aHJvdyBuZXcgSnB4RXJyb3IoIkludmFsaWQgYm94IGZpZWxkIHNpemUiKTtjb25zdCBjPXMtaTtsZXQgbD0hMDtzd2l0Y2gobyl7Y2FzZSAxNzg1NzM3ODMyOmw9ITE7YnJlYWs7Y2FzZSAxNjY4MjQ2NjQyOmNvbnN0IHQ9ZVthXTtpZigxPT09dCl7Y29uc3QgdD0oMCxuLnJlYWRVaW50MzIpKGUsYSszKTtzd2l0Y2godCl7Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6YnJlYWs7ZGVmYXVsdDooMCxyLndhcm4pKCJVbmtub3duIGNvbG9yc3BhY2UgIit0KX19ZWxzZSAyPT09dCYmKDAsci5pbmZvKSgiSUNDIHByb2ZpbGUgbm90IHN1cHBvcnRlZCIpO2JyZWFrO2Nhc2UgMTc4NTczNzgyNzp0aGlzLnBhcnNlQ29kZXN0cmVhbShlLGEsYStjKTticmVhaztjYXNlIDE3ODM2MzZlMzoyMTg3OTM3MzghPT0oMCxuLnJlYWRVaW50MzIpKGUsYSkmJigwLHIud2FybikoIkludmFsaWQgSlAyIHNpZ25hdHVyZSIpO2JyZWFrO2Nhc2UgMTc4MzYzNDQ1ODpjYXNlIDE3MTg5MDkyOTY6Y2FzZSAxOTIwMDk5Njk3OmNhc2UgMTkxOTI1MTIzMjpjYXNlIDE3Njg0NDkxMzg6YnJlYWs7ZGVmYXVsdDpjb25zdCBpPVN0cmluZy5mcm9tQ2hhckNvZGUobz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyk7KDAsci53YXJuKShgVW5zdXBwb3J0ZWQgaGVhZGVyIHR5cGUgJHtvfSAoJHtpfSkuYCl9bCYmKGErPWMpfX1wYXJzZUltYWdlUHJvcGVydGllcyhlKXtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO3Q+PTA7KXtjb25zdCBhPXQ7dD1lLmdldEJ5dGUoKTtpZig2NTM2MT09PShhPDw4fHQpKXtlLnNraXAoNCk7Y29uc3QgdD1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAsbj1lLmdldEludDMyKCk+Pj4wO2Uuc2tpcCgxNik7Y29uc3QgaT1lLmdldFVpbnQxNigpO3RoaXMud2lkdGg9dC1yO3RoaXMuaGVpZ2h0PWEtbjt0aGlzLmNvbXBvbmVudHNDb3VudD1pO3RoaXMuYml0c1BlckNvbXBvbmVudD04O3JldHVybn19dGhyb3cgbmV3IEpweEVycm9yKCJObyBzaXplIG1hcmtlciBmb3VuZCBpbiBKUFggc3RyZWFtIil9cGFyc2VDb2Rlc3RyZWFtKGUsdCxhKXtjb25zdCBpPXt9O2xldCBzPSExO3RyeXtsZXQgbz10O2Zvcig7bysxPGE7KXtjb25zdCB0PSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2xldCBhLGMsbCxoLHUsZCxmPTA7c3dpdGNoKHQpe2Nhc2UgNjUzNTk6aS5tYWluSGVhZGVyPSEwO2JyZWFrO2Nhc2UgNjU0OTc6YnJlYWs7Y2FzZSA2NTM2MTpmPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtjb25zdCBnPXt9O2cuWHNpej0oMCxuLnJlYWRVaW50MzIpKGUsbys0KTtnLllzaXo9KDAsbi5yZWFkVWludDMyKShlLG8rOCk7Zy5YT3Npej0oMCxuLnJlYWRVaW50MzIpKGUsbysxMik7Zy5ZT3Npej0oMCxuLnJlYWRVaW50MzIpKGUsbysxNik7Zy5YVHNpej0oMCxuLnJlYWRVaW50MzIpKGUsbysyMCk7Zy5ZVHNpej0oMCxuLnJlYWRVaW50MzIpKGUsbysyNCk7Zy5YVE9zaXo9KDAsbi5yZWFkVWludDMyKShlLG8rMjgpO2cuWVRPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzMyKTtjb25zdCBwPSgwLG4ucmVhZFVpbnQxNikoZSxvKzM2KTtnLkNzaXo9cDtjb25zdCBtPVtdO2E9byszODtmb3IobGV0IHQ9MDt0PHA7dCsrKXtjb25zdCB0PXtwcmVjaXNpb246MSsoMTI3JmVbYV0pLGlzU2lnbmVkOiEhKDEyOCZlW2FdKSxYUnNpejplW2ErMV0sWVJzaXo6ZVthKzJdfTthKz0zO2NhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnModCxnKTttLnB1c2godCl9aS5TSVo9ZztpLmNvbXBvbmVudHM9bTtjYWxjdWxhdGVUaWxlR3JpZHMoaSxtKTtpLlFDQz1bXTtpLkNPQz1bXTticmVhaztjYXNlIDY1MzcyOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IGI9e307YT1vKzI7Yz1lW2ErK107c3dpdGNoKDMxJmMpe2Nhc2UgMDpoPTg7dT0hMDticmVhaztjYXNlIDE6aD0xNjt1PSExO2JyZWFrO2Nhc2UgMjpoPTE2O3U9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgU1FjZCB2YWx1ZSAiK2MpfWIubm9RdWFudGl6YXRpb249OD09PWg7Yi5zY2FsYXJFeHBvdW5kZWQ9dTtiLmd1YXJkQml0cz1jPj41O2w9W107Zm9yKDthPGYrbzspe2NvbnN0IHQ9e307aWYoOD09PWgpe3QuZXBzaWxvbj1lW2ErK10+PjM7dC5tdT0wfWVsc2V7dC5lcHNpbG9uPWVbYV0+PjM7dC5tdT0oNyZlW2FdKTw8OHxlW2ErMV07YSs9Mn1sLnB1c2godCl9Yi5TUHFjZHM9bDtpZihpLm1haW5IZWFkZXIpaS5RQ0Q9YjtlbHNle2kuY3VycmVudFRpbGUuUUNEPWI7aS5jdXJyZW50VGlsZS5RQ0M9W119YnJlYWs7Y2FzZSA2NTM3MzpmPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtjb25zdCB5PXt9O2E9bysyO2xldCB3O2lmKGkuU0laLkNzaXo8MjU3KXc9ZVthKytdO2Vsc2V7dz0oMCxuLnJlYWRVaW50MTYpKGUsYSk7YSs9Mn1jPWVbYSsrXTtzd2l0Y2goMzEmYyl7Y2FzZSAwOmg9ODt1PSEwO2JyZWFrO2Nhc2UgMTpoPTE2O3U9ITE7YnJlYWs7Y2FzZSAyOmg9MTY7dT0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9eS5ub1F1YW50aXphdGlvbj04PT09aDt5LnNjYWxhckV4cG91bmRlZD11O3kuZ3VhcmRCaXRzPWM+PjU7bD1bXTtmb3IoO2E8ZitvOyl7Y29uc3QgdD17fTtpZig4PT09aCl7dC5lcHNpbG9uPWVbYSsrXT4+Mzt0Lm11PTB9ZWxzZXt0LmVwc2lsb249ZVthXT4+Mzt0Lm11PSg3JmVbYV0pPDw4fGVbYSsxXTthKz0yfWwucHVzaCh0KX15LlNQcWNkcz1sO2kubWFpbkhlYWRlcj9pLlFDQ1t3XT15OmkuY3VycmVudFRpbGUuUUNDW3ddPXk7YnJlYWs7Y2FzZSA2NTM2MjpmPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtjb25zdCBTPXt9O2E9bysyO2NvbnN0IHg9ZVthKytdO1MuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cz0hISgxJngpO1Muc29wTWFya2VyVXNlZD0hISgyJngpO1MuZXBoTWFya2VyVXNlZD0hISg0JngpO1MucHJvZ3Jlc3Npb25PcmRlcj1lW2ErK107Uy5sYXllcnNDb3VudD0oMCxuLnJlYWRVaW50MTYpKGUsYSk7YSs9MjtTLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtPWVbYSsrXTtTLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudD1lW2ErK107Uy54Y2I9MisoMTUmZVthKytdKTtTLnljYj0yKygxNSZlW2ErK10pO2NvbnN0IEM9ZVthKytdO1Muc2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcz0hISgxJkMpO1MucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcz0hISgyJkMpO1MudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzPSEhKDQmQyk7Uy52ZXJ0aWNhbGx5U3RyaXBlPSEhKDgmQyk7Uy5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uPSEhKDE2JkMpO1Muc2VnbWVudGF0aW9uU3ltYm9sVXNlZD0hISgzMiZDKTtTLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbj1lW2ErK107aWYoUy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzKXtjb25zdCB0PVtdO2Zvcig7YTxmK287KXtjb25zdCByPWVbYSsrXTt0LnB1c2goe1BQeDoxNSZyLFBQeTpyPj40fSl9Uy5wcmVjaW5jdHNTaXplcz10fWNvbnN0IHY9W107Uy5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzJiZ2LnB1c2goInNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MiKTtTLnRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyYmdi5wdXNoKCJ0ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3MiKTtTLnZlcnRpY2FsbHlTdHJpcGUmJnYucHVzaCgidmVydGljYWxseVN0cmlwZSIpO1MucHJlZGljdGFibGVUZXJtaW5hdGlvbiYmdi5wdXNoKCJwcmVkaWN0YWJsZVRlcm1pbmF0aW9uIik7aWYodi5sZW5ndGg+MCl7cz0hMDsoMCxyLndhcm4pKGBKUFg6IFVuc3VwcG9ydGVkIENPRCBvcHRpb25zICgke3Yuam9pbigiLCAiKX0pLmApfWlmKGkubWFpbkhlYWRlcilpLkNPRD1TO2Vsc2V7aS5jdXJyZW50VGlsZS5DT0Q9UztpLmN1cnJlbnRUaWxlLkNPQz1bXX1icmVhaztjYXNlIDY1NDI0OmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2Q9e307ZC5pbmRleD0oMCxuLnJlYWRVaW50MTYpKGUsbysyKTtkLmxlbmd0aD0oMCxuLnJlYWRVaW50MzIpKGUsbys0KTtkLmRhdGFFbmQ9ZC5sZW5ndGgrby0yO2QucGFydEluZGV4PWVbbys4XTtkLnBhcnRzQ291bnQ9ZVtvKzldO2kubWFpbkhlYWRlcj0hMTtpZigwPT09ZC5wYXJ0SW5kZXgpe2QuQ09EPWkuQ09EO2QuQ09DPWkuQ09DLnNsaWNlKDApO2QuUUNEPWkuUUNEO2QuUUNDPWkuUUNDLnNsaWNlKDApfWkuY3VycmVudFRpbGU9ZDticmVhaztjYXNlIDY1NDI3OmQ9aS5jdXJyZW50VGlsZTtpZigwPT09ZC5wYXJ0SW5kZXgpe2luaXRpYWxpemVUaWxlKGksZC5pbmRleCk7YnVpbGRQYWNrZXRzKGkpfWY9ZC5kYXRhRW5kLW87cGFyc2VUaWxlUGFja2V0cyhpLGUsbyxmKTticmVhaztjYXNlIDY1MzYzOigwLHIud2FybikoIkpQWDogQ29kZXN0cmVhbSBjb2RlIDB4RkY1MyAoQ09DKSBpcyBub3QgaW1wbGVtZW50ZWQuIik7Y2FzZSA2NTM2NTpjYXNlIDY1MzY3OmNhc2UgNjUzNjg6Y2FzZSA2NTM4MDpmPSgwLG4ucmVhZFVpbnQxNikoZSxvKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb2Rlc3RyZWFtIGNvZGU6ICIrdC50b1N0cmluZygxNikpfW8rPWZ9fWNhdGNoKGUpe2lmKHN8fHRoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2UpdGhyb3cgbmV3IEpweEVycm9yKGUubWVzc2FnZSk7KDAsci53YXJuKShgSlBYOiBUcnlpbmcgdG8gcmVjb3ZlciBmcm9tOiAiJHtlLm1lc3NhZ2V9Ii5gKX10aGlzLnRpbGVzPWZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudHMoZSl7Y29uc3QgdD1lLlNJWixhPWUuY29tcG9uZW50cyxyPXQuQ3NpeixuPVtdO2ZvcihsZXQgdD0wLGk9ZS50aWxlcy5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1lLnRpbGVzW3RdLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzW3RdPXRyYW5zZm9ybVRpbGUoZSxpLHQpO2NvbnN0IG89c1swXSxjPW5ldyBVaW50OENsYW1wZWRBcnJheShvLml0ZW1zLmxlbmd0aCpyKSxsPXtsZWZ0Om8ubGVmdCx0b3A6by50b3Asd2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHQsaXRlbXM6Y307bGV0IGgsdSxkLGYsZyxwLG0sYj0wO2lmKGkuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5tdWx0aXBsZUNvbXBvbmVudFRyYW5zZm9ybSl7Y29uc3QgZT00PT09cix0PXNbMF0uaXRlbXMsbj1zWzFdLml0ZW1zLG89c1syXS5pdGVtcyxsPWU/c1szXS5pdGVtczpudWxsO2g9YVswXS5wcmVjaXNpb24tODt1PS41KygxMjg8PGgpO2NvbnN0IHk9aS5jb21wb25lbnRzWzBdLHc9ci0zO2Y9dC5sZW5ndGg7aWYoeS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uKWZvcihkPTA7ZDxmO2QrKyxiKz13KXtnPXRbZF0rdTtwPW5bZF07bT1vW2RdO2NvbnN0IGU9Zy0obStwPj4yKTtjW2IrK109ZSttPj5oO2NbYisrXT1lPj5oO2NbYisrXT1lK3A+Pmh9ZWxzZSBmb3IoZD0wO2Q8ZjtkKyssYis9dyl7Zz10W2RdK3U7cD1uW2RdO209b1tkXTtjW2IrK109ZysxLjQwMiptPj5oO2NbYisrXT1nLS4zNDQxMypwLS43MTQxNCptPj5oO2NbYisrXT1nKzEuNzcyKnA+Pmh9aWYoZSlmb3IoZD0wLGI9MztkPGY7ZCsrLGIrPTQpY1tiXT1sW2RdK3U+Pmh9ZWxzZSBmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCB0PXNbZV0uaXRlbXM7aD1hW2VdLnByZWNpc2lvbi04O3U9LjUrKDEyODw8aCk7Zm9yKGI9ZSxkPTAsZj10Lmxlbmd0aDtkPGY7ZCsrKXtjW2JdPXRbZF0rdT4+aDtiKz1yfX1uLnB1c2gobCl9cmV0dXJuIG59KGkpO3RoaXMud2lkdGg9aS5TSVouWHNpei1pLlNJWi5YT3Npejt0aGlzLmhlaWdodD1pLlNJWi5Zc2l6LWkuU0laLllPc2l6O3RoaXMuY29tcG9uZW50c0NvdW50PWkuU0laLkNzaXp9fTtmdW5jdGlvbiBjYWxjdWxhdGVDb21wb25lbnREaW1lbnNpb25zKGUsdCl7ZS54MD1NYXRoLmNlaWwodC5YT3Npei9lLlhSc2l6KTtlLngxPU1hdGguY2VpbCh0LlhzaXovZS5YUnNpeik7ZS55MD1NYXRoLmNlaWwodC5ZT3Npei9lLllSc2l6KTtlLnkxPU1hdGguY2VpbCh0LllzaXovZS5ZUnNpeik7ZS53aWR0aD1lLngxLWUueDA7ZS5oZWlnaHQ9ZS55MS1lLnkwfWZ1bmN0aW9uIGNhbGN1bGF0ZVRpbGVHcmlkcyhlLHQpe2NvbnN0IGE9ZS5TSVoscj1bXTtsZXQgbjtjb25zdCBpPU1hdGguY2VpbCgoYS5Yc2l6LWEuWFRPc2l6KS9hLlhUc2l6KSxzPU1hdGguY2VpbCgoYS5Zc2l6LWEuWVRPc2l6KS9hLllUc2l6KTtmb3IobGV0IGU9MDtlPHM7ZSsrKWZvcihsZXQgdD0wO3Q8aTt0Kyspe249e307bi50eDA9TWF0aC5tYXgoYS5YVE9zaXordCphLlhUc2l6LGEuWE9zaXopO24udHkwPU1hdGgubWF4KGEuWVRPc2l6K2UqYS5ZVHNpeixhLllPc2l6KTtuLnR4MT1NYXRoLm1pbihhLlhUT3NpeisodCsxKSphLlhUc2l6LGEuWHNpeik7bi50eTE9TWF0aC5taW4oYS5ZVE9zaXorKGUrMSkqYS5ZVHNpeixhLllzaXopO24ud2lkdGg9bi50eDEtbi50eDA7bi5oZWlnaHQ9bi50eTEtbi50eTA7bi5jb21wb25lbnRzPVtdO3IucHVzaChuKX1lLnRpbGVzPXI7Zm9yKGxldCBlPTAsaT1hLkNzaXo7ZTxpO2UrKyl7Y29uc3QgYT10W2VdO2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT17fTtuPXJbdF07aS50Y3gwPU1hdGguY2VpbChuLnR4MC9hLlhSc2l6KTtpLnRjeTA9TWF0aC5jZWlsKG4udHkwL2EuWVJzaXopO2kudGN4MT1NYXRoLmNlaWwobi50eDEvYS5YUnNpeik7aS50Y3kxPU1hdGguY2VpbChuLnR5MS9hLllSc2l6KTtpLndpZHRoPWkudGN4MS1pLnRjeDA7aS5oZWlnaHQ9aS50Y3kxLWkudGN5MDtuLmNvbXBvbmVudHNbZV09aX19fWZ1bmN0aW9uIGdldEJsb2Nrc0RpbWVuc2lvbnMoZSx0LGEpe2NvbnN0IHI9dC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsbj17fTtpZihyLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe24uUFB4PXIucHJlY2luY3RzU2l6ZXNbYV0uUFB4O24uUFB5PXIucHJlY2luY3RzU2l6ZXNbYV0uUFB5fWVsc2V7bi5QUHg9MTU7bi5QUHk9MTV9bi54Y2JfPWE+MD9NYXRoLm1pbihyLnhjYixuLlBQeC0xKTpNYXRoLm1pbihyLnhjYixuLlBQeCk7bi55Y2JfPWE+MD9NYXRoLm1pbihyLnljYixuLlBQeS0xKTpNYXRoLm1pbihyLnljYixuLlBQeSk7cmV0dXJuIG59ZnVuY3Rpb24gYnVpbGRQcmVjaW5jdHMoZSx0LGEpe2NvbnN0IHI9MTw8YS5QUHgsbj0xPDxhLlBQeSxpPTA9PT10LnJlc0xldmVsLHM9MTw8YS5QUHgrKGk/MDotMSksbz0xPDxhLlBQeSsoaT8wOi0xKSxjPXQudHJ4MT50LnRyeDA/TWF0aC5jZWlsKHQudHJ4MS9yKS1NYXRoLmZsb29yKHQudHJ4MC9yKTowLGw9dC50cnkxPnQudHJ5MD9NYXRoLmNlaWwodC50cnkxL24pLU1hdGguZmxvb3IodC50cnkwL24pOjAsaD1jKmw7dC5wcmVjaW5jdFBhcmFtZXRlcnM9e3ByZWNpbmN0V2lkdGg6cixwcmVjaW5jdEhlaWdodDpuLG51bXByZWNpbmN0c3dpZGU6YyxudW1wcmVjaW5jdHNoaWdoOmwsbnVtcHJlY2luY3RzOmgscHJlY2luY3RXaWR0aEluU3ViYmFuZDpzLHByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kOm99fWZ1bmN0aW9uIGJ1aWxkQ29kZWJsb2NrcyhlLHQsYSl7Y29uc3Qgcj1hLnhjYl8sbj1hLnljYl8saT0xPDxyLHM9MTw8bixvPXQudGJ4MD4+cixjPXQudGJ5MD4+bixsPXQudGJ4MStpLTE+PnIsaD10LnRieTErcy0xPj5uLHU9dC5yZXNvbHV0aW9uLnByZWNpbmN0UGFyYW1ldGVycyxkPVtdLGY9W107bGV0IGcscCxtLGI7Zm9yKHA9YztwPGg7cCsrKWZvcihnPW87ZzxsO2crKyl7bT17Y2J4OmcsY2J5OnAsdGJ4MDppKmcsdGJ5MDpzKnAsdGJ4MTppKihnKzEpLHRieTE6cyoocCsxKX07bS50YngwXz1NYXRoLm1heCh0LnRieDAsbS50YngwKTttLnRieTBfPU1hdGgubWF4KHQudGJ5MCxtLnRieTApO20udGJ4MV89TWF0aC5taW4odC50YngxLG0udGJ4MSk7bS50YnkxXz1NYXRoLm1pbih0LnRieTEsbS50YnkxKTtiPU1hdGguZmxvb3IoKG0udGJ4MF8tdC50YngwKS91LnByZWNpbmN0V2lkdGhJblN1YmJhbmQpK01hdGguZmxvb3IoKG0udGJ5MF8tdC50YnkwKS91LnByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kKSp1Lm51bXByZWNpbmN0c3dpZGU7bS5wcmVjaW5jdE51bWJlcj1iO20uc3ViYmFuZFR5cGU9dC50eXBlO20uTGJsb2NrPTM7aWYobS50YngxXzw9bS50YngwX3x8bS50YnkxXzw9bS50YnkwXyljb250aW51ZTtkLnB1c2gobSk7bGV0IGU9ZltiXTtpZih2b2lkIDAhPT1lKXtnPGUuY2J4TWluP2UuY2J4TWluPWc6Zz5lLmNieE1heCYmKGUuY2J4TWF4PWcpO3A8ZS5jYnlNaW4/ZS5jYnhNaW49cDpwPmUuY2J5TWF4JiYoZS5jYnlNYXg9cCl9ZWxzZSBmW2JdPWU9e2NieE1pbjpnLGNieU1pbjpwLGNieE1heDpnLGNieU1heDpwfTttLnByZWNpbmN0PWV9dC5jb2RlYmxvY2tQYXJhbWV0ZXJzPXtjb2RlYmxvY2tXaWR0aDpyLGNvZGVibG9ja0hlaWdodDpuLG51bWNvZGVibG9ja3dpZGU6bC1vKzEsbnVtY29kZWJsb2NraGlnaDpoLWMrMX07dC5jb2RlYmxvY2tzPWQ7dC5wcmVjaW5jdHM9Zn1mdW5jdGlvbiBjcmVhdGVQYWNrZXQoZSx0LGEpe2NvbnN0IHI9W10sbj1lLnN1YmJhbmRzO2ZvcihsZXQgZT0wLGE9bi5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT1uW2VdLmNvZGVibG9ja3M7Zm9yKGxldCBlPTAsbj1hLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPWFbZV07bi5wcmVjaW5jdE51bWJlcj09PXQmJnIucHVzaChuKX19cmV0dXJue2xheWVyTnVtYmVyOmEsY29kZWJsb2NrczpyfX1mdW5jdGlvbiBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxpPXQuQ3NpejtsZXQgcz0wO2ZvcihsZXQgZT0wO2U8aTtlKyspcz1NYXRoLm1heChzLHIuY29tcG9uZW50c1tlXS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KTtsZXQgbz0wLGM9MCxsPTAsaD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPG47bysrKXtmb3IoO2M8PXM7YysrKXtmb3IoO2w8aTtsKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2xdO2lmKGM+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tjXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztmb3IoO2g8YTspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsaCxvKTtoKys7cmV0dXJuIGV9aD0wfWw9MH1jPTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBSZXNvbHV0aW9uTGF5ZXJDb21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxpPXQuQ3NpejtsZXQgcz0wO2ZvcihsZXQgZT0wO2U8aTtlKyspcz1NYXRoLm1heChzLHIuY29tcG9uZW50c1tlXS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KTtsZXQgbz0wLGM9MCxsPTAsaD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPD1zO28rKyl7Zm9yKDtjPG47YysrKXtmb3IoO2w8aTtsKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2xdO2lmKG8+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tvXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztmb3IoO2g8YTspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsaCxjKTtoKys7cmV0dXJuIGV9aD0wfWw9MH1jPTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBSZXNvbHV0aW9uUG9zaXRpb25Db21wb25lbnRMYXllckl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxpPXQuQ3NpejtsZXQgcyxvLGMsbCxoPTA7Zm9yKGM9MDtjPGk7YysrKXtjb25zdCBlPXIuY29tcG9uZW50c1tjXTtoPU1hdGgubWF4KGgsZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KX1jb25zdCB1PW5ldyBJbnQzMkFycmF5KGgrMSk7Zm9yKG89MDtvPD1oOysrbyl7bGV0IGU9MDtmb3IoYz0wO2M8aTsrK2Mpe2NvbnN0IHQ9ci5jb21wb25lbnRzW2NdLnJlc29sdXRpb25zO288dC5sZW5ndGgmJihlPU1hdGgubWF4KGUsdFtvXS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzKSl9dVtvXT1lfXM9MDtvPTA7Yz0wO2w9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7bzw9aDtvKyspe2Zvcig7bDx1W29dO2wrKyl7Zm9yKDtjPGk7YysrKXtjb25zdCBlPXIuY29tcG9uZW50c1tjXTtpZihvPmUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCljb250aW51ZTtjb25zdCB0PWUucmVzb2x1dGlvbnNbb10sYT10LnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHM7aWYoIShsPj1hKSl7Zm9yKDtzPG47KXtjb25zdCBlPWNyZWF0ZVBhY2tldCh0LGwscyk7cysrO3JldHVybiBlfXM9MH19Yz0wfWw9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFBvc2l0aW9uQ29tcG9uZW50UmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LHM9Z2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZShyKSxvPXM7bGV0IGM9MCxsPTAsaD0wLHU9MCxkPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO2Q8by5tYXhOdW1IaWdoO2QrKyl7Zm9yKDt1PG8ubWF4TnVtV2lkZTt1Kyspe2Zvcig7aDxpO2grKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbaF0sdD1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDtsPD10O2wrKyl7Y29uc3QgdD1lLnJlc29sdXRpb25zW2xdLGE9cy5jb21wb25lbnRzW2hdLnJlc29sdXRpb25zW2xdLHI9Z2V0UHJlY2luY3RJbmRleElmRXhpc3QodSxkLGEsbyx0KTtpZihudWxsIT09cil7Zm9yKDtjPG47KXtjb25zdCBlPWNyZWF0ZVBhY2tldCh0LHIsYyk7YysrO3JldHVybiBlfWM9MH19bD0wfWg9MH11PTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBDb21wb25lbnRQb3NpdGlvblJlc29sdXRpb25MYXllckl0ZXJhdG9yKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxpPXQuQ3NpeixzPWdldFByZWNpbmN0U2l6ZXNJbkltYWdlU2NhbGUocik7bGV0IG89MCxjPTAsbD0wLGg9MCx1PTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO2w8aTsrK2wpe2NvbnN0IGU9ci5jb21wb25lbnRzW2xdLHQ9cy5jb21wb25lbnRzW2xdLGE9ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50O2Zvcig7dTx0Lm1heE51bUhpZ2g7dSsrKXtmb3IoO2g8dC5tYXhOdW1XaWRlO2grKyl7Zm9yKDtjPD1hO2MrKyl7Y29uc3QgYT1lLnJlc29sdXRpb25zW2NdLHI9dC5yZXNvbHV0aW9uc1tjXSxpPWdldFByZWNpbmN0SW5kZXhJZkV4aXN0KGgsdSxyLHQsYSk7aWYobnVsbCE9PWkpe2Zvcig7bzxuOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQoYSxpLG8pO28rKztyZXR1cm4gZX1vPTB9fWM9MH1oPTB9dT0wfXRocm93IG5ldyBKcHhFcnJvcigiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gZ2V0UHJlY2luY3RJbmRleElmRXhpc3QoZSx0LGEscixuKXtjb25zdCBpPWUqci5taW5XaWR0aCxzPXQqci5taW5IZWlnaHQ7aWYoaSVhLndpZHRoIT0wfHxzJWEuaGVpZ2h0IT0wKXJldHVybiBudWxsO2NvbnN0IG89cy9hLndpZHRoKm4ucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c3dpZGU7cmV0dXJuIGkvYS5oZWlnaHQrb31mdW5jdGlvbiBnZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKGUpe2NvbnN0IHQ9ZS5jb21wb25lbnRzLmxlbmd0aDtsZXQgYT1OdW1iZXIuTUFYX1ZBTFVFLHI9TnVtYmVyLk1BWF9WQUxVRSxuPTAsaT0wO2NvbnN0IHM9bmV3IEFycmF5KHQpO2ZvcihsZXQgbz0wO288dDtvKyspe2NvbnN0IHQ9ZS5jb21wb25lbnRzW29dLGM9dC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50LGw9bmV3IEFycmF5KGMrMSk7bGV0IGg9TnVtYmVyLk1BWF9WQUxVRSx1PU51bWJlci5NQVhfVkFMVUUsZD0wLGY9MCxnPTE7Zm9yKGxldCBlPWM7ZT49MDstLWUpe2NvbnN0IGE9dC5yZXNvbHV0aW9uc1tlXSxyPWcqYS5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RXaWR0aCxuPWcqYS5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RIZWlnaHQ7aD1NYXRoLm1pbihoLHIpO3U9TWF0aC5taW4odSxuKTtkPU1hdGgubWF4KGQsYS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZSk7Zj1NYXRoLm1heChmLGEucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c2hpZ2gpO2xbZV09e3dpZHRoOnIsaGVpZ2h0Om59O2c8PD0xfWE9TWF0aC5taW4oYSxoKTtyPU1hdGgubWluKHIsdSk7bj1NYXRoLm1heChuLGQpO2k9TWF0aC5tYXgoaSxmKTtzW29dPXtyZXNvbHV0aW9uczpsLG1pbldpZHRoOmgsbWluSGVpZ2h0OnUsbWF4TnVtV2lkZTpkLG1heE51bUhpZ2g6Zn19cmV0dXJue2NvbXBvbmVudHM6cyxtaW5XaWR0aDphLG1pbkhlaWdodDpyLG1heE51bVdpZGU6bixtYXhOdW1IaWdoOml9fWZ1bmN0aW9uIGJ1aWxkUGFja2V0cyhlKXtjb25zdCB0PWUuU0laLGE9ZS5jdXJyZW50VGlsZS5pbmRleCxyPWUudGlsZXNbYV0sbj10LkNzaXo7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgdD1yLmNvbXBvbmVudHNbZV0sYT10LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbj1bXSxpPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXtjb25zdCByPWdldEJsb2Nrc0RpbWVuc2lvbnMoMCx0LGUpLHM9e30sbz0xPDxhLWU7cy50cngwPU1hdGguY2VpbCh0LnRjeDAvbyk7cy50cnkwPU1hdGguY2VpbCh0LnRjeTAvbyk7cy50cngxPU1hdGguY2VpbCh0LnRjeDEvbyk7cy50cnkxPU1hdGguY2VpbCh0LnRjeTEvbyk7cy5yZXNMZXZlbD1lO2J1aWxkUHJlY2luY3RzKDAscyxyKTtuLnB1c2gocyk7bGV0IGM7aWYoMD09PWUpe2M9e307Yy50eXBlPSJMTCI7Yy50YngwPU1hdGguY2VpbCh0LnRjeDAvbyk7Yy50YnkwPU1hdGguY2VpbCh0LnRjeTAvbyk7Yy50YngxPU1hdGguY2VpbCh0LnRjeDEvbyk7Yy50YnkxPU1hdGguY2VpbCh0LnRjeTEvbyk7Yy5yZXNvbHV0aW9uPXM7YnVpbGRDb2RlYmxvY2tzKDAsYyxyKTtpLnB1c2goYyk7cy5zdWJiYW5kcz1bY119ZWxzZXtjb25zdCBuPTE8PGEtZSsxLG89W107Yz17fTtjLnR5cGU9IkhMIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9uLS41KTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9uKTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9uLS41KTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9uKTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtvLnB1c2goYyk7Yz17fTtjLnR5cGU9IkxIIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9uKTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9uLS41KTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9uKTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9uLS41KTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtvLnB1c2goYyk7Yz17fTtjLnR5cGU9IkhIIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9uLS41KTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9uLS41KTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9uLS41KTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9uLS41KTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtvLnB1c2goYyk7cy5zdWJiYW5kcz1vfX10LnJlc29sdXRpb25zPW47dC5zdWJiYW5kcz1pfWNvbnN0IGk9ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLnByb2dyZXNzaW9uT3JkZXI7c3dpdGNoKGkpe2Nhc2UgMDpyLnBhY2tldHNJdGVyYXRvcj1uZXcgTGF5ZXJSZXNvbHV0aW9uQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihlKTticmVhaztjYXNlIDE6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IFJlc29sdXRpb25MYXllckNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSk7YnJlYWs7Y2FzZSAyOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBSZXNvbHV0aW9uUG9zaXRpb25Db21wb25lbnRMYXllckl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgMzpyLnBhY2tldHNJdGVyYXRvcj1uZXcgUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKTticmVhaztjYXNlIDQ6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IENvbXBvbmVudFBvc2l0aW9uUmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSnB4RXJyb3IoYFVuc3VwcG9ydGVkIHByb2dyZXNzaW9uIG9yZGVyICR7aX1gKX19ZnVuY3Rpb24gcGFyc2VUaWxlUGFja2V0cyhlLHQsYSxyKXtsZXQgaSxzPTAsbz0wLGM9ITE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7Zm9yKDtvPGU7KXtjb25zdCBlPXRbYStzXTtzKys7aWYoYyl7aT1pPDw3fGU7bys9NztjPSExfWVsc2V7aT1pPDw4fGU7bys9OH0yNTU9PT1lJiYoYz0hMCl9by09ZTtyZXR1cm4gaT4+Pm8mKDE8PGUpLTF9ZnVuY3Rpb24gc2tpcE1hcmtlcklmRXF1YWwoZSl7aWYoMjU1PT09dFthK3MtMV0mJnRbYStzXT09PWUpe3NraXBCeXRlcygxKTtyZXR1cm4hMH1pZigyNTU9PT10W2Erc10mJnRbYStzKzFdPT09ZSl7c2tpcEJ5dGVzKDIpO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHNraXBCeXRlcyhlKXtzKz1lfWZ1bmN0aW9uIGFsaWduVG9CeXRlKCl7bz0wO2lmKGMpe3MrKztjPSExfX1mdW5jdGlvbiByZWFkQ29kaW5ncGFzc2VzKCl7aWYoMD09PXJlYWRCaXRzKDEpKXJldHVybiAxO2lmKDA9PT1yZWFkQml0cygxKSlyZXR1cm4gMjtsZXQgZT1yZWFkQml0cygyKTtpZihlPDMpcmV0dXJuIGUrMztlPXJlYWRCaXRzKDUpO2lmKGU8MzEpcmV0dXJuIGUrNjtlPXJlYWRCaXRzKDcpO3JldHVybiBlKzM3fWNvbnN0IGw9ZS5jdXJyZW50VGlsZS5pbmRleCxoPWUudGlsZXNbbF0sdT1lLkNPRC5zb3BNYXJrZXJVc2VkLGQ9ZS5DT0QuZXBoTWFya2VyVXNlZCxmPWgucGFja2V0c0l0ZXJhdG9yO2Zvcig7czxyOyl7YWxpZ25Ub0J5dGUoKTt1JiZza2lwTWFya2VySWZFcXVhbCgxNDUpJiZza2lwQnl0ZXMoNCk7Y29uc3QgZT1mLm5leHRQYWNrZXQoKTtpZighcmVhZEJpdHMoMSkpY29udGludWU7Y29uc3Qgcj1lLmxheWVyTnVtYmVyLGk9W107bGV0IG87Zm9yKGxldCB0PTAsYT1lLmNvZGVibG9ja3MubGVuZ3RoO3Q8YTt0Kyspe289ZS5jb2RlYmxvY2tzW3RdO2xldCBhPW8ucHJlY2luY3Q7Y29uc3Qgcz1vLmNieC1hLmNieE1pbixjPW8uY2J5LWEuY2J5TWluO2xldCBsLGgsdT0hMSxkPSExO2lmKHZvaWQgMCE9PW8uaW5jbHVkZWQpdT0hIXJlYWRCaXRzKDEpO2Vsc2V7YT1vLnByZWNpbmN0O2xldCBlO2lmKHZvaWQgMCE9PWEuaW5jbHVzaW9uVHJlZSllPWEuaW5jbHVzaW9uVHJlZTtlbHNle2NvbnN0IHQ9YS5jYnhNYXgtYS5jYnhNaW4rMSxuPWEuY2J5TWF4LWEuY2J5TWluKzE7ZT1uZXcgSW5jbHVzaW9uVHJlZSh0LG4scik7aD1uZXcgVGFnVHJlZSh0LG4pO2EuaW5jbHVzaW9uVHJlZT1lO2EuemVyb0JpdFBsYW5lc1RyZWU9aDtmb3IobGV0IGU9MDtlPHI7ZSsrKWlmKDAhPT1yZWFkQml0cygxKSl0aHJvdyBuZXcgSnB4RXJyb3IoIkludmFsaWQgdGFnIHRyZWUiKX1pZihlLnJlc2V0KHMsYyxyKSlmb3IoOzspe2lmKCFyZWFkQml0cygxKSl7ZS5pbmNyZW1lbnRWYWx1ZShyKTticmVha31sPSFlLm5leHRMZXZlbCgpO2lmKGwpe28uaW5jbHVkZWQ9ITA7dT1kPSEwO2JyZWFrfX19aWYoIXUpY29udGludWU7aWYoZCl7aD1hLnplcm9CaXRQbGFuZXNUcmVlO2gucmVzZXQocyxjKTtmb3IoOzspaWYocmVhZEJpdHMoMSkpe2w9IWgubmV4dExldmVsKCk7aWYobClicmVha31lbHNlIGguaW5jcmVtZW50VmFsdWUoKTtvLnplcm9CaXRQbGFuZXM9aC52YWx1ZX1jb25zdCBmPXJlYWRDb2RpbmdwYXNzZXMoKTtmb3IoO3JlYWRCaXRzKDEpOylvLkxibG9jaysrO2NvbnN0IGc9KDAsbi5sb2cyKShmKSxwPXJlYWRCaXRzKChmPDE8PGc/Zy0xOmcpK28uTGJsb2NrKTtpLnB1c2goe2NvZGVibG9jazpvLGNvZGluZ3Bhc3NlczpmLGRhdGFMZW5ndGg6cH0pfWFsaWduVG9CeXRlKCk7ZCYmc2tpcE1hcmtlcklmRXF1YWwoMTQ2KTtmb3IoO2kubGVuZ3RoPjA7KXtjb25zdCBlPWkuc2hpZnQoKTtvPWUuY29kZWJsb2NrO3ZvaWQgMD09PW8uZGF0YSYmKG8uZGF0YT1bXSk7by5kYXRhLnB1c2goe2RhdGE6dCxzdGFydDphK3MsZW5kOmErcytlLmRhdGFMZW5ndGgsY29kaW5ncGFzc2VzOmUuY29kaW5ncGFzc2VzfSk7cys9ZS5kYXRhTGVuZ3RofX1yZXR1cm4gc31mdW5jdGlvbiBjb3B5Q29lZmZpY2llbnRzKGUsdCxhLHIsbixzLG8sYyxsKXtjb25zdCBoPXIudGJ4MCx1PXIudGJ5MCxkPXIudGJ4MS1yLnRieDAsZj1yLmNvZGVibG9ja3MsZz0iSCI9PT1yLnR5cGUuY2hhckF0KDApPzE6MCxwPSJIIj09PXIudHlwZS5jaGFyQXQoMSk/dDowO2ZvcihsZXQgYT0wLG09Zi5sZW5ndGg7YTxtOysrYSl7Y29uc3QgbT1mW2FdLGI9bS50YngxXy1tLnRieDBfLHk9bS50YnkxXy1tLnRieTBfO2lmKDA9PT1ifHwwPT09eSljb250aW51ZTtpZih2b2lkIDA9PT1tLmRhdGEpY29udGludWU7Y29uc3Qgdz1uZXcgQml0TW9kZWwoYix5LG0uc3ViYmFuZFR5cGUsbS56ZXJvQml0UGxhbmVzLHMpO2xldCBTPTI7Y29uc3QgeD1tLmRhdGE7bGV0IEMsdixrLE89MCxUPTA7Zm9yKEM9MCx2PXgubGVuZ3RoO0M8djtDKyspe2s9eFtDXTtPKz1rLmVuZC1rLnN0YXJ0O1QrPWsuY29kaW5ncGFzc2VzfWNvbnN0IE09bmV3IFVpbnQ4QXJyYXkoTyk7bGV0IEU9MDtmb3IoQz0wLHY9eC5sZW5ndGg7Qzx2O0MrKyl7az14W0NdO2NvbnN0IGU9ay5kYXRhLnN1YmFycmF5KGsuc3RhcnQsay5lbmQpO00uc2V0KGUsRSk7RSs9ZS5sZW5ndGh9Y29uc3QgRD1uZXcgaS5Bcml0aG1ldGljRGVjb2RlcihNLDAsTyk7dy5zZXREZWNvZGVyKEQpO2ZvcihDPTA7QzxUO0MrKyl7c3dpdGNoKFMpe2Nhc2UgMDp3LnJ1blNpZ25pZmljYW5jZVByb3BhZ2F0aW9uUGFzcygpO2JyZWFrO2Nhc2UgMTp3LnJ1bk1hZ25pdHVkZVJlZmluZW1lbnRQYXNzKCk7YnJlYWs7Y2FzZSAyOncucnVuQ2xlYW51cFBhc3MoKTtjJiZ3LmNoZWNrU2VnbWVudGF0aW9uU3ltYm9sKCl9bCYmdy5yZXNldCgpO1M9KFMrMSklM31sZXQgTj1tLnRieDBfLWgrKG0udGJ5MF8tdSkqZDtjb25zdCBSPXcuY29lZmZpY2VudHNTaWduLEw9dy5jb2VmZmljZW50c01hZ25pdHVkZSwkPXcuYml0c0RlY29kZWQsXz1vPzA6LjU7bGV0IGosVSxYO0U9MDtjb25zdCBIPSJMTCIhPT1yLnR5cGU7Zm9yKEM9MDtDPHk7QysrKXtjb25zdCBhPTIqKE4vZHwwKSoodC1kKStnK3A7Zm9yKGo9MDtqPGI7aisrKXtVPUxbRV07aWYoMCE9PVUpe1U9KFUrXykqbjswIT09UltFXSYmKFU9LVUpO1g9JFtFXTtlW0g/YSsoTjw8MSk6Tl09byYmWD49cz9VOlUqKDE8PHMtWCl9TisrO0UrK31OKz1kLWJ9fX1mdW5jdGlvbiB0cmFuc2Zvcm1UaWxlKGUsdCxhKXtjb25zdCByPXQuY29tcG9uZW50c1thXSxuPXIuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLGk9ci5xdWFudGl6YXRpb25QYXJhbWV0ZXJzLG89bi5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsYz1pLlNQcWNkcyxsPWkuc2NhbGFyRXhwb3VuZGVkLGg9aS5ndWFyZEJpdHMsdT1uLnNlZ21lbnRhdGlvblN5bWJvbFVzZWQsZD1uLnJlc2V0Q29udGV4dFByb2JhYmlsaXRpZXMsZj1lLmNvbXBvbmVudHNbYV0ucHJlY2lzaW9uLGc9bi5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24scD1nP25ldyBSZXZlcnNpYmxlVHJhbnNmb3JtOm5ldyBJcnJldmVyc2libGVUcmFuc2Zvcm0sbT1bXTtsZXQgYj0wO2ZvcihsZXQgZT0wO2U8PW87ZSsrKXtjb25zdCB0PXIucmVzb2x1dGlvbnNbZV0sYT10LnRyeDEtdC50cngwLG49dC50cnkxLXQudHJ5MCxpPW5ldyBGbG9hdDMyQXJyYXkoYSpuKTtmb3IobGV0IHI9MCxuPXQuc3ViYmFuZHMubGVuZ3RoO3I8bjtyKyspe2xldCBuLG87aWYobCl7bj1jW2JdLm11O289Y1tiXS5lcHNpbG9uO2IrK31lbHNle249Y1swXS5tdTtvPWNbMF0uZXBzaWxvbisoZT4wPzEtZTowKX1jb25zdCBwPXQuc3ViYmFuZHNbcl0sbT1zW3AudHlwZV07Y29weUNvZWZmaWNpZW50cyhpLGEsMCxwLGc/MToyKiooZittLW8pKigxK24vMjA0OCksaCtvLTEsZyx1LGQpfW0ucHVzaCh7d2lkdGg6YSxoZWlnaHQ6bixpdGVtczppfSl9Y29uc3QgeT1wLmNhbGN1bGF0ZShtLHIudGN4MCxyLnRjeTApO3JldHVybntsZWZ0OnIudGN4MCx0b3A6ci50Y3kwLHdpZHRoOnkud2lkdGgsaGVpZ2h0OnkuaGVpZ2h0LGl0ZW1zOnkuaXRlbXN9fWZ1bmN0aW9uIGluaXRpYWxpemVUaWxlKGUsdCl7Y29uc3QgYT1lLlNJWi5Dc2l6LHI9ZS50aWxlc1t0XTtmb3IobGV0IHQ9MDt0PGE7dCsrKXtjb25zdCBhPXIuY29tcG9uZW50c1t0XSxuPXZvaWQgMCE9PWUuY3VycmVudFRpbGUuUUNDW3RdP2UuY3VycmVudFRpbGUuUUNDW3RdOmUuY3VycmVudFRpbGUuUUNEO2EucXVhbnRpemF0aW9uUGFyYW1ldGVycz1uO2NvbnN0IGk9dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5DT0NbdF0/ZS5jdXJyZW50VGlsZS5DT0NbdF06ZS5jdXJyZW50VGlsZS5DT0Q7YS5jb2RpbmdTdHlsZVBhcmFtZXRlcnM9aX1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnM9ZS5jdXJyZW50VGlsZS5DT0R9Y2xhc3MgVGFnVHJlZXtjb25zdHJ1Y3RvcihlLHQpe2NvbnN0IGE9KDAsbi5sb2cyKShNYXRoLm1heChlLHQpKSsxO3RoaXMubGV2ZWxzPVtdO2ZvcihsZXQgcj0wO3I8YTtyKyspe2NvbnN0IGE9e3dpZHRoOmUsaGVpZ2h0OnQsaXRlbXM6W119O3RoaXMubGV2ZWxzLnB1c2goYSk7ZT1NYXRoLmNlaWwoZS8yKTt0PU1hdGguY2VpbCh0LzIpfX1yZXNldChlLHQpe2xldCBhLHI9MCxuPTA7Zm9yKDtyPHRoaXMubGV2ZWxzLmxlbmd0aDspe2E9dGhpcy5sZXZlbHNbcl07Y29uc3QgaT1lK3QqYS53aWR0aDtpZih2b2lkIDAhPT1hLml0ZW1zW2ldKXtuPWEuaXRlbXNbaV07YnJlYWt9YS5pbmRleD1pO2U+Pj0xO3Q+Pj0xO3IrK31yLS07YT10aGlzLmxldmVsc1tyXTthLml0ZW1zW2EuaW5kZXhdPW47dGhpcy5jdXJyZW50TGV2ZWw9cjtkZWxldGUgdGhpcy52YWx1ZX1pbmNyZW1lbnRWYWx1ZSgpe2NvbnN0IGU9dGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdO2UuaXRlbXNbZS5pbmRleF0rK31uZXh0TGV2ZWwoKXtsZXQgZT10aGlzLmN1cnJlbnRMZXZlbCx0PXRoaXMubGV2ZWxzW2VdO2NvbnN0IGE9dC5pdGVtc1t0LmluZGV4XTtlLS07aWYoZTwwKXt0aGlzLnZhbHVlPWE7cmV0dXJuITF9dGhpcy5jdXJyZW50TGV2ZWw9ZTt0PXRoaXMubGV2ZWxzW2VdO3QuaXRlbXNbdC5pbmRleF09YTtyZXR1cm4hMH19Y2xhc3MgSW5jbHVzaW9uVHJlZXtjb25zdHJ1Y3RvcihlLHQsYSl7Y29uc3Qgcj0oMCxuLmxvZzIpKE1hdGgubWF4KGUsdCkpKzE7dGhpcy5sZXZlbHM9W107Zm9yKGxldCBuPTA7bjxyO24rKyl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlKnQpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylyW2VdPWE7Y29uc3Qgbj17d2lkdGg6ZSxoZWlnaHQ6dCxpdGVtczpyfTt0aGlzLmxldmVscy5wdXNoKG4pO2U9TWF0aC5jZWlsKGUvMik7dD1NYXRoLmNlaWwodC8yKX19cmVzZXQoZSx0LGEpe2xldCByPTA7Zm9yKDtyPHRoaXMubGV2ZWxzLmxlbmd0aDspe2NvbnN0IG49dGhpcy5sZXZlbHNbcl0saT1lK3Qqbi53aWR0aDtuLmluZGV4PWk7Y29uc3Qgcz1uLml0ZW1zW2ldO2lmKDI1NT09PXMpYnJlYWs7aWYocz5hKXt0aGlzLmN1cnJlbnRMZXZlbD1yO3RoaXMucHJvcGFnYXRlVmFsdWVzKCk7cmV0dXJuITF9ZT4+PTE7dD4+PTE7cisrfXRoaXMuY3VycmVudExldmVsPXItMTtyZXR1cm4hMH1pbmNyZW1lbnRWYWx1ZShlKXtjb25zdCB0PXRoaXMubGV2ZWxzW3RoaXMuY3VycmVudExldmVsXTt0Lml0ZW1zW3QuaW5kZXhdPWUrMTt0aGlzLnByb3BhZ2F0ZVZhbHVlcygpfXByb3BhZ2F0ZVZhbHVlcygpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3QgYT10Lml0ZW1zW3QuaW5kZXhdO2Zvcig7LS1lPj0wOyl7dD10aGlzLmxldmVsc1tlXTt0Lml0ZW1zW3QuaW5kZXhdPWF9fW5leHRMZXZlbCgpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3QgYT10Lml0ZW1zW3QuaW5kZXhdO3QuaXRlbXNbdC5pbmRleF09MjU1O2UtLTtpZihlPDApcmV0dXJuITE7dGhpcy5jdXJyZW50TGV2ZWw9ZTt0PXRoaXMubGV2ZWxzW2VdO3QuaXRlbXNbdC5pbmRleF09YTtyZXR1cm4hMH19Y2xhc3MgQml0TW9kZWx7c3RhdGljIFVOSUZPUk1fQ09OVEVYVD0xNztzdGF0aWMgUlVOTEVOR1RIX0NPTlRFWFQ9MTg7c3RhdGljIExMQW5kTEhDb250ZXh0c0xhYmVsPW5ldyBVaW50OEFycmF5KFswLDUsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDEsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOF0pO3N0YXRpYyBITENvbnRleHRMYWJlbD1uZXcgVWludDhBcnJheShbMCwzLDQsMCw1LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwxLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDhdKTtzdGF0aWMgSEhDb250ZXh0TGFiZWw9bmV3IFVpbnQ4QXJyYXkoWzAsMSwyLDAsMSwyLDIsMCwyLDIsMiwwLDAsMCwwLDAsMyw0LDUsMCw0LDUsNSwwLDUsNSw1LDAsMCwwLDAsMCw2LDcsNywwLDcsNyw3LDAsNyw3LDcsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOCwwLDAsMCwwLDAsOCw4LDgsMCw4LDgsOCwwLDgsOCw4XSk7Y29uc3RydWN0b3IoZSx0LGEscixuKXt0aGlzLndpZHRoPWU7dGhpcy5oZWlnaHQ9dDtsZXQgaTtpPSJISCI9PT1hP0JpdE1vZGVsLkhIQ29udGV4dExhYmVsOiJITCI9PT1hP0JpdE1vZGVsLkhMQ29udGV4dExhYmVsOkJpdE1vZGVsLkxMQW5kTEhDb250ZXh0c0xhYmVsO3RoaXMuY29udGV4dExhYmVsVGFibGU9aTtjb25zdCBzPWUqdDt0aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZT1uZXcgVWludDhBcnJheShzKTt0aGlzLmNvZWZmaWNlbnRzU2lnbj1uZXcgVWludDhBcnJheShzKTtsZXQgbztvPW4+MTQ/bmV3IFVpbnQzMkFycmF5KHMpOm4+Nj9uZXcgVWludDE2QXJyYXkocyk6bmV3IFVpbnQ4QXJyYXkocyk7dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZT1vO3RoaXMucHJvY2Vzc2luZ0ZsYWdzPW5ldyBVaW50OEFycmF5KHMpO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkocyk7aWYoMCE9PXIpZm9yKGxldCBlPTA7ZTxzO2UrKyljW2VdPXI7dGhpcy5iaXRzRGVjb2RlZD1jO3RoaXMucmVzZXQoKX1zZXREZWNvZGVyKGUpe3RoaXMuZGVjb2Rlcj1lfXJlc2V0KCl7dGhpcy5jb250ZXh0cz1uZXcgSW50OEFycmF5KDE5KTt0aGlzLmNvbnRleHRzWzBdPTg7dGhpcy5jb250ZXh0c1tCaXRNb2RlbC5VTklGT1JNX0NPTlRFWFRdPTkyO3RoaXMuY29udGV4dHNbQml0TW9kZWwuUlVOTEVOR1RIX0NPTlRFWFRdPTZ9c2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGUsdCxhKXtjb25zdCByPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLG49dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LHM9dD4wLG89dCsxPG47bGV0IGM7aWYoZT4wKXtjPWEtbjtzJiYocltjLTFdKz0xNik7byYmKHJbYysxXSs9MTYpO3JbY10rPTR9aWYoZSsxPGkpe2M9YStuO3MmJihyW2MtMV0rPTE2KTtvJiYocltjKzFdKz0xNik7cltjXSs9NH1zJiYoclthLTFdKz0xKTtvJiYoclthKzFdKz0xKTtyW2FdfD0xMjh9cnVuU2lnbmlmaWNhbmNlUHJvcGFnYXRpb25QYXNzKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLG49dGhpcy5jb2VmZmljZW50c1NpZ24saT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxzPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLG89dGhpcy5jb250ZXh0cyxjPXRoaXMuY29udGV4dExhYmVsVGFibGUsbD10aGlzLmJpdHNEZWNvZGVkO2ZvcihsZXQgaD0wO2g8YTtoKz00KWZvcihsZXQgdT0wO3U8dDt1Kyspe2xldCBkPWgqdCt1O2ZvcihsZXQgZj0wO2Y8NDtmKyssZCs9dCl7Y29uc3QgdD1oK2Y7aWYodD49YSlicmVhaztzW2RdJj0tMjtpZihyW2RdfHwhaVtkXSljb250aW51ZTtjb25zdCBnPWNbaVtkXV07aWYoZS5yZWFkQml0KG8sZykpe2NvbnN0IGU9dGhpcy5kZWNvZGVTaWduQml0KHQsdSxkKTtuW2RdPWU7cltkXT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKHQsdSxkKTtzW2RdfD0yfWxbZF0rKztzW2RdfD0xfX19ZGVjb2RlU2lnbkJpdChlLHQsYSl7Y29uc3Qgcj10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLHM9dGhpcy5jb2VmZmljZW50c1NpZ247bGV0IG8sYyxsLGgsdSxkO2g9dD4wJiYwIT09aVthLTFdO2lmKHQrMTxyJiYwIT09aVthKzFdKXtsPXNbYSsxXTtpZihoKXtjPXNbYS0xXTtvPTEtbC1jfWVsc2Ugbz0xLWwtbH1lbHNlIGlmKGgpe2M9c1thLTFdO289MS1jLWN9ZWxzZSBvPTA7Y29uc3QgZj0zKm87aD1lPjAmJjAhPT1pW2Etcl07aWYoZSsxPG4mJjAhPT1pW2Ercl0pe2w9c1thK3JdO2lmKGgpe2M9c1thLXJdO289MS1sLWMrZn1lbHNlIG89MS1sLWwrZn1lbHNlIGlmKGgpe2M9c1thLXJdO289MS1jLWMrZn1lbHNlIG89ZjtpZihvPj0wKXt1PTkrbztkPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSl9ZWxzZXt1PTktbztkPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyx1KX1yZXR1cm4gZH1ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxuPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb250ZXh0cyxzPXRoaXMuYml0c0RlY29kZWQsbz10aGlzLnByb2Nlc3NpbmdGbGFncyxjPXQqYSxsPTQqdDtmb3IobGV0IGEsaD0wO2g8YztoPWEpe2E9TWF0aC5taW4oYyxoK2wpO2ZvcihsZXQgYz0wO2M8dDtjKyspZm9yKGxldCBsPWgrYztsPGE7bCs9dCl7aWYoIXJbbF18fDAhPSgxJm9bbF0pKWNvbnRpbnVlO2xldCB0PTE2O2lmKDAhPSgyJm9bbF0pKXtvW2xdXj0yO3Q9MD09PSgxMjcmbltsXSk/MTU6MTR9Y29uc3QgYT1lLnJlYWRCaXQoaSx0KTtyW2xdPXJbbF08PDF8YTtzW2xdKys7b1tsXXw9MX19fXJ1bkNsZWFudXBQYXNzKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxuPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsaT10aGlzLmNvZWZmaWNlbnRzU2lnbixzPXRoaXMuY29udGV4dHMsbz10aGlzLmNvbnRleHRMYWJlbFRhYmxlLGM9dGhpcy5iaXRzRGVjb2RlZCxsPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLGg9dCx1PTIqdCxkPTMqdDtsZXQgZjtmb3IobGV0IGc9MDtnPGE7Zz1mKXtmPU1hdGgubWluKGcrNCxhKTtjb25zdCBwPWcqdCxtPWcrMzxhO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IGI9cCthO2xldCB5LHc9MCxTPWIseD1nO2lmKG0mJjA9PT1sW2JdJiYwPT09bFtiK2hdJiYwPT09bFtiK3VdJiYwPT09bFtiK2RdJiYwPT09cltiXSYmMD09PXJbYitoXSYmMD09PXJbYit1XSYmMD09PXJbYitkXSl7aWYoIWUucmVhZEJpdChzLEJpdE1vZGVsLlJVTkxFTkdUSF9DT05URVhUKSl7Y1tiXSsrO2NbYitoXSsrO2NbYit1XSsrO2NbYitkXSsrO2NvbnRpbnVlfXc9ZS5yZWFkQml0KHMsQml0TW9kZWwuVU5JRk9STV9DT05URVhUKTw8MXxlLnJlYWRCaXQocyxCaXRNb2RlbC5VTklGT1JNX0NPTlRFWFQpO2lmKDAhPT13KXt4PWcrdztTKz13KnR9eT10aGlzLmRlY29kZVNpZ25CaXQoeCxhLFMpO2lbU109eTtuW1NdPTE7dGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UoeCxhLFMpO2xbU118PTI7Uz1iO2ZvcihsZXQgZT1nO2U8PXg7ZSsrLFMrPXQpY1tTXSsrO3crK31mb3IoeD1nK3c7eDxmO3grKyxTKz10KXtpZihuW1NdfHwwIT0oMSZsW1NdKSljb250aW51ZTtjb25zdCB0PW9bcltTXV07aWYoMT09PWUucmVhZEJpdChzLHQpKXt5PXRoaXMuZGVjb2RlU2lnbkJpdCh4LGEsUyk7aVtTXT15O25bU109MTt0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZSh4LGEsUyk7bFtTXXw9Mn1jW1NdKyt9fX19Y2hlY2tTZWdtZW50YXRpb25TeW1ib2woKXtjb25zdCBlPXRoaXMuZGVjb2Rlcix0PXRoaXMuY29udGV4dHM7aWYoMTAhPT0oZS5yZWFkQml0KHQsQml0TW9kZWwuVU5JRk9STV9DT05URVhUKTw8M3xlLnJlYWRCaXQodCxCaXRNb2RlbC5VTklGT1JNX0NPTlRFWFQpPDwyfGUucmVhZEJpdCh0LEJpdE1vZGVsLlVOSUZPUk1fQ09OVEVYVCk8PDF8ZS5yZWFkQml0KHQsQml0TW9kZWwuVU5JRk9STV9DT05URVhUKSkpdGhyb3cgbmV3IEpweEVycm9yKCJJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wiKX19Y2xhc3MgVHJhbnNmb3Jte2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PVRyYW5zZm9ybSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIFRyYW5zZm9ybS4iKX1jYWxjdWxhdGUoZSx0LGEpe2xldCByPWVbMF07Zm9yKGxldCBuPTEsaT1lLmxlbmd0aDtuPGk7bisrKXI9dGhpcy5pdGVyYXRlKHIsZVtuXSx0LGEpO3JldHVybiByfWV4dGVuZChlLHQsYSl7bGV0IHI9dC0xLG49dCsxLGk9dCthLTIscz10K2E7ZVtyLS1dPWVbbisrXTtlW3MrK109ZVtpLS1dO2Vbci0tXT1lW24rK107ZVtzKytdPWVbaS0tXTtlW3ItLV09ZVtuKytdO2VbcysrXT1lW2ktLV07ZVtyXT1lW25dO2Vbc109ZVtpXX1maWx0ZXIoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGZpbHRlcmAgY2FsbGVkIil9aXRlcmF0ZShlLHQsYSxyKXtjb25zdCBuPWUud2lkdGgsaT1lLmhlaWdodDtsZXQgcz1lLml0ZW1zO2NvbnN0IG89dC53aWR0aCxjPXQuaGVpZ2h0LGw9dC5pdGVtcztsZXQgaCx1LGQsZixnLHA7Zm9yKGQ9MCxoPTA7aDxpO2grKyl7Zj0yKmgqbztmb3IodT0wO3U8bjt1KyssZCsrLGYrPTIpbFtmXT1zW2RdfXM9ZS5pdGVtcz1udWxsO2NvbnN0IG09bmV3IEZsb2F0MzJBcnJheShvKzgpO2lmKDE9PT1vKXtpZigwIT0oMSZhKSlmb3IocD0wLGQ9MDtwPGM7cCsrLGQrPW8pbFtkXSo9LjV9ZWxzZSBmb3IocD0wLGQ9MDtwPGM7cCsrLGQrPW8pe20uc2V0KGwuc3ViYXJyYXkoZCxkK28pLDQpO3RoaXMuZXh0ZW5kKG0sNCxvKTt0aGlzLmZpbHRlcihtLDQsbyk7bC5zZXQobS5zdWJhcnJheSg0LDQrbyksZCl9bGV0IGI9MTY7Y29uc3QgeT1bXTtmb3IoaD0wO2g8YjtoKyspeS5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoYys4KSk7bGV0IHcsUz0wO2U9NCtjO2lmKDE9PT1jKXtpZigwIT0oMSZyKSlmb3IoZz0wO2c8bztnKyspbFtnXSo9LjV9ZWxzZSBmb3IoZz0wO2c8bztnKyspe2lmKDA9PT1TKXtiPU1hdGgubWluKG8tZyxiKTtmb3IoZD1nLGY9NDtmPGU7ZCs9byxmKyspZm9yKHc9MDt3PGI7dysrKXlbd11bZl09bFtkK3ddO1M9Yn1TLS07Y29uc3QgdD15W1NdO3RoaXMuZXh0ZW5kKHQsNCxjKTt0aGlzLmZpbHRlcih0LDQsYyk7aWYoMD09PVMpe2Q9Zy1iKzE7Zm9yKGY9NDtmPGU7ZCs9byxmKyspZm9yKHc9MDt3PGI7dysrKWxbZCt3XT15W3ddW2ZdfX1yZXR1cm57d2lkdGg6byxoZWlnaHQ6YyxpdGVtczpsfX19Y2xhc3MgSXJyZXZlcnNpYmxlVHJhbnNmb3JtIGV4dGVuZHMgVHJhbnNmb3Jte2ZpbHRlcihlLHQsYSl7Y29uc3Qgcj1hPj4xO2xldCBuLGkscyxvO2NvbnN0IGM9LTEuNTg2MTM0MzQyMDU5OTI0LGw9LS4wNTI5ODAxMTg1NzI5NjEsaD0uODgyOTExMDc1NTMwOTM0LHU9LjQ0MzUwNjg1MjA0Mzk3MSxkPTEuMjMwMTc0MTA0OTE0MDAxO249KHR8PTApLTM7Zm9yKGk9cis0O2ktLTtuKz0yKWVbbl0qPS44MTI4OTMwNjYxMTU5NjA5O249dC0yO3M9dSplW24tMV07Zm9yKGk9ciszO2ktLTtuKz0yKXtvPXUqZVtuKzFdO2Vbbl09ZCplW25dLXMtbztpZighaS0tKWJyZWFrO24rPTI7cz11KmVbbisxXTtlW25dPWQqZVtuXS1zLW99bj10LTE7cz1oKmVbbi0xXTtmb3IoaT1yKzI7aS0tO24rPTIpe289aCplW24rMV07ZVtuXS09cytvO2lmKCFpLS0pYnJlYWs7bis9MjtzPWgqZVtuKzFdO2Vbbl0tPXMrb31uPXQ7cz1sKmVbbi0xXTtmb3IoaT1yKzE7aS0tO24rPTIpe289bCplW24rMV07ZVtuXS09cytvO2lmKCFpLS0pYnJlYWs7bis9MjtzPWwqZVtuKzFdO2Vbbl0tPXMrb31pZigwIT09cil7bj10KzE7cz1jKmVbbi0xXTtmb3IoaT1yO2ktLTtuKz0yKXtvPWMqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1jKmVbbisxXTtlW25dLT1zK299fX19Y2xhc3MgUmV2ZXJzaWJsZVRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybXtmaWx0ZXIoZSx0LGEpe2NvbnN0IHI9YT4+MTtsZXQgbixpO2ZvcihuPXR8PTAsaT1yKzE7aS0tO24rPTIpZVtuXS09ZVtuLTFdK2VbbisxXSsyPj4yO2ZvcihuPXQrMSxpPXI7aS0tO24rPTIpZVtuXSs9ZVtuLTFdK2VbbisxXT4+MX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxaV1N0cmVhbT12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO3ZhciByPWEoMTY4KTtjbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuY2FjaGVkRGF0YT0wO3RoaXMuYml0c0NhY2hlZD0wO2NvbnN0IHI9NDA5NixuPXtlYXJseUNoYW5nZTphLGNvZGVMZW5ndGg6OSxuZXh0Q29kZToyNTgsZGljdGlvbmFyeVZhbHVlczpuZXcgVWludDhBcnJheShyKSxkaWN0aW9uYXJ5TGVuZ3RoczpuZXcgVWludDE2QXJyYXkociksZGljdGlvbmFyeVByZXZDb2RlczpuZXcgVWludDE2QXJyYXkociksY3VycmVudFNlcXVlbmNlOm5ldyBVaW50OEFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZUxlbmd0aDowfTtmb3IobGV0IGU9MDtlPDI1NjsrK2Upe24uZGljdGlvbmFyeVZhbHVlc1tlXT1lO24uZGljdGlvbmFyeUxlbmd0aHNbZV09MX10aGlzLmx6d1N0YXRlPW59cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5iaXRzQ2FjaGVkLGE9dGhpcy5jYWNoZWREYXRhO2Zvcig7dDxlOyl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm4gbnVsbH1hPWE8PDh8ZTt0Kz04fXRoaXMuYml0c0NhY2hlZD10LT1lO3RoaXMuY2FjaGVkRGF0YT1hO3RoaXMubGFzdENvZGU9bnVsbDtyZXR1cm4gYT4+PnQmKDE8PGUpLTF9cmVhZEJsb2NrKCl7bGV0IGUsdCxhLHI9MTAyNDtjb25zdCBuPXRoaXMubHp3U3RhdGU7aWYoIW4pcmV0dXJuO2NvbnN0IGk9bi5lYXJseUNoYW5nZTtsZXQgcz1uLm5leHRDb2RlO2NvbnN0IG89bi5kaWN0aW9uYXJ5VmFsdWVzLGM9bi5kaWN0aW9uYXJ5TGVuZ3RocyxsPW4uZGljdGlvbmFyeVByZXZDb2RlcztsZXQgaD1uLmNvZGVMZW5ndGgsdT1uLnByZXZDb2RlO2NvbnN0IGQ9bi5jdXJyZW50U2VxdWVuY2U7bGV0IGY9bi5jdXJyZW50U2VxdWVuY2VMZW5ndGgsZz0wLHA9dGhpcy5idWZmZXJMZW5ndGgsbT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKTtmb3IoZT0wO2U8NTEyO2UrKyl7Y29uc3QgZT10aGlzLnJlYWRCaXRzKGgpLG49Zj4wO2lmKGU8MjU2KXtkWzBdPWU7Zj0xfWVsc2V7aWYoIShlPj0yNTgpKXtpZigyNTY9PT1lKXtoPTk7cz0yNTg7Zj0wO2NvbnRpbnVlfXRoaXMuZW9mPSEwO2RlbGV0ZSB0aGlzLmx6d1N0YXRlO2JyZWFrfWlmKGU8cyl7Zj1jW2VdO2Zvcih0PWYtMSxhPWU7dD49MDt0LS0pe2RbdF09b1thXTthPWxbYV19fWVsc2UgZFtmKytdPWRbMF19aWYobil7bFtzXT11O2Nbc109Y1t1XSsxO29bc109ZFswXTtzKys7aD1zK2kmcytpLTE/aDowfE1hdGgubWluKE1hdGgubG9nKHMraSkvLjY5MzE0NzE4MDU1OTk0NTMrMSwxMil9dT1lO2crPWY7aWYocjxnKXtkb3tyKz01MTJ9d2hpbGUocjxnKTttPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK3IpfWZvcih0PTA7dDxmO3QrKyltW3ArK109ZFt0XX1uLm5leHRDb2RlPXM7bi5jb2RlTGVuZ3RoPWg7bi5wcmV2Q29kZT11O24uY3VycmVudFNlcXVlbmNlTGVuZ3RoPWY7dGhpcy5idWZmZXJMZW5ndGg9cH19dC5MWldTdHJlYW09TFpXU3RyZWFtfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO3ZhciByPWEoMTY4KSxuPWEoMTUwKSxpPWEoMTQ0KTtjbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4gZTtjb25zdCByPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihyPD0xKXJldHVybiBlO2lmKDIhPT1yJiYocjwxMHx8cj4xNSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbz10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxjPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypvKzc+PjM7dGhpcy5yb3dCeXRlcz1jKnMqbys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsbj10aGlzLmNvbG9ycyxpPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFpLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PW4pZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1pW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8bjsrK3MpYVt1KytdPWlbc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1uXStpW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MipuO2ZvcihzPTA7czx0OysrcylhW3UrK109aVtzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jmlbc10pPDw4KSsoMjU1JmlbcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4rMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxuOysrdCl7aWYobDxyKXtvPW88PDh8MjU1JmlbZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IG49dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihuK2UpO2xldCBvPXMuc3ViYXJyYXkobi1lLG4pOzA9PT1vLmxlbmd0aCYmKG89bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBjLGwsaCx1PW47c3dpdGNoKGEpe2Nhc2UgMDpmb3IoYz0wO2M8ZTsrK2Mpc1t1KytdPXJbY107YnJlYWs7Y2FzZSAxOmZvcihjPTA7Yzx0OysrYylzW3UrK109cltjXTtmb3IoO2M8ZTsrK2Mpe3NbdV09c1t1LXRdK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK3JbY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStyW2NdO2Zvcig7YzxlOysrYyl7c1t1XT0ob1tjXStzW3UtdF0+PjEpK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXtsPW9bY107aD1yW2NdO3NbdSsrXT1sK2h9Zm9yKDtjPGU7KytjKXtsPW9bY107Y29uc3QgZT1vW2MtdF0sYT1zW3UtdF0sbj1hK2wtZTtsZXQgaT1uLWE7aTwwJiYoaT0taSk7bGV0IGQ9bi1sO2Q8MCYmKGQ9LWQpO2xldCBmPW4tZTtmPDAmJihmPS1mKTtoPXJbY107c1t1KytdPWk8PWQmJmk8PWY/YStoOmQ8PWY/bCtoOmUraH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19dC5QcmVkaWN0b3JTdHJlYW09UHJlZGljdG9yU3RyZWFtfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlJ1bkxlbmd0aFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNjgpO2NsYXNzIFJ1bkxlbmd0aFN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9ZVswXTtpZihyPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7dFthKytdPWVbMV07aWYocj4wKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKHIpO3Quc2V0KGUsYSk7YSs9cn19ZWxzZXtyPTI1Ny1yO2NvbnN0IG49ZVsxXTt0PXRoaXMuZW5zdXJlQnVmZmVyKGErcisxKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXRbYSsrXT1ufXRoaXMuYnVmZmVyTGVuZ3RoPWF9fXQuUnVuTGVuZ3RoU3RyZWFtPVJ1bkxlbmd0aFN0cmVhbX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250PXQuRXJyb3JGb250PXZvaWQgMDthKDExNik7YSgxMjYpO2EoMTI4KTthKDEzMSk7YSgxMzMpO2EoMTM1KTthKDEzNyk7YSgxMzkpO2EoMTU3KTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7dmFyIHI9YSgxNDQpLG49YSgxODUpLGk9YSgxODgpLHM9YSgxOTApLG89YSgxODkpLGM9YSgxODcpLGw9YSgxOTEpLGg9YSgxOTIpLHU9YSgxOTMpLGQ9YSgxOTQpLGY9YSgxOTUpLGc9YSgxOTYpLHA9YSgxNjQpLG09YSgxOTcpLGI9YSgxNDkpLHk9YSgxNTQpLHc9YSgxOTgpO2NvbnN0IFM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHg9MWUzLEM9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibWlzc2luZ0ZpbGUiLCJuYW1lIiwicmVtZWFzdXJlIiwic3VidHlwZSIsInN5c3RlbUZvbnRJbmZvIiwidHlwZSIsInZlcnRpY2FsIl0sdj1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09ci5GT05UX0lERU5USVRZX01BVFJJWFswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxhPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGEpYVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLHMsbyxjKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPW47dGhpcy52bWV0cmljPWk7dGhpcy5vcGVyYXRvckxpc3RJZD1zO3RoaXMuaXNTcGFjZT1vO3RoaXMuaXNJbkZvbnQ9Y31nZXQgY2F0ZWdvcnkoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY2F0ZWdvcnkiLCgwLHMuZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeSkodGhpcy51bmljb2RlKSwhMCl9fWZ1bmN0aW9uIGludDE2KGUsdCl7cmV0dXJuKGU8PDgpK3R9ZnVuY3Rpb24gd3JpdGVTaWduZWRJbnQxNihlLHQsYSl7ZVt0KzFdPWE7ZVt0XT1hPj4+OH1mdW5jdGlvbiBzaWduZWRJbnQxNihlLHQpe2NvbnN0IGE9KGU8PDgpK3Q7cmV0dXJuIDMyNzY4JmE/YS02NTUzNjphfWZ1bmN0aW9uIHN0cmluZzE2KGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBzYWZlU3RyaW5nMTYoZSl7ZT4zMjc2Nz9lPTMyNzY3OmU8LTMyNzY4JiYoZT0tMzI3NjgpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4idHRjZiI9PT0oMCxyLmJ5dGVzVG9TdHJpbmcpKHQpfWZ1bmN0aW9uIGdldEZvbnRGaWxlVHlwZShlLHQpe2xldCBhLG4se3R5cGU6aSxzdWJ0eXBlOnMsY29tcG9zaXRlOm99PXQ7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT0oMCxiLnJlYWRVaW50MzIpKHQsMCl8fCJ0cnVlIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpYT1vPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiJPVFRPIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpKWE9bz8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlhPW8/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09aT8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihvKXthPSJDSURGb250VHlwZTAiO249IkNJREZvbnRUeXBlMEMifWVsc2V7YT0iTU1UeXBlMSI9PT1pPyJNTVR5cGUxIjoiVHlwZTEiO249IlR5cGUxQyJ9ZWxzZXsoMCxyLndhcm4pKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO2E9aTtuPXN9cmV0dXJuW2Esbl19ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IHI9W107bGV0IG47Zm9yKGxldCBhPTAsaT1lLmxlbmd0aDthPGk7YSsrKXtuPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlW2FdLHQpOy0xIT09biYmKHJbYV09bil9Zm9yKGNvbnN0IGUgaW4gYSl7bj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYVtlXSx0KTstMSE9PW4mJihyWytlXT1uKX1yZXR1cm4gcn1mdW5jdGlvbiBpc01hY05hbWVSZWNvcmQoZSl7cmV0dXJuIDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gaXNXaW5OYW1lUmVjb3JkKGUpe3JldHVybiAzPT09ZS5wbGF0Zm9ybSYmMT09PWUuZW5jb2RpbmcmJjEwMzM9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGNvbnZlcnRDaWRTdHJpbmcoZSx0KXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiB0LmNoYXJDb2RlQXQoMCk7Y2FzZSAyOnJldHVybiB0LmNoYXJDb2RlQXQoMCk8PDh8dC5jaGFyQ29kZUF0KDEpfWNvbnN0IG49YFVuc3VwcG9ydGVkIENJRCBzdHJpbmcgKGNoYXJDb2RlICR7ZX0pOiAiJHt0fSIuYDtpZihhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKG4pOygwLHIud2Fybikobik7cmV0dXJuIHR9ZnVuY3Rpb24gYWRqdXN0TWFwcGluZyhlLHQsYSxuKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCkscz1uZXcgTWFwLG89W10sYz1uZXcgU2V0O2xldCBsPTA7bGV0IGg9U1tsXVswXSx1PVNbbF1bMV07Zm9yKGxldCBmIGluIGUpe2Z8PTA7bGV0IGc9ZVtmXTtpZighdChnKSljb250aW51ZTtpZihoPnUpe2wrKztpZihsPj1TLmxlbmd0aCl7KDAsci53YXJuKSgiUmFuIG91dCBvZiBzcGFjZSBpbiBmb250IHByaXZhdGUgdXNlIGFyZWEuIik7YnJlYWt9aD1TW2xdWzBdO3U9U1tsXVsxXX1jb25zdCBwPWgrKzswPT09ZyYmKGc9YSk7bGV0IG09bi5nZXQoZik7InN0cmluZyI9PXR5cGVvZiBtJiYobT1tLmNvZGVQb2ludEF0KDApKTtpZihtJiYhKGQ9bSxTWzBdWzBdPD1kJiZkPD1TWzBdWzFdfHxTWzFdWzBdPD1kJiZkPD1TWzFdWzFdKSYmIWMuaGFzKGcpKXtzLnNldChtLGcpO2MuYWRkKGcpfWlbcF09ZztvW2ZdPXB9dmFyIGQ7cmV0dXJue3RvRm9udENoYXI6byxjaGFyQ29kZVRvR2x5cGhJZDppLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTpofX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGEpe2NvbnN0IG49ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxhKXtjb25zdCByPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Usbl1vZiB0KW4+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpufSk7MD09PXIubGVuZ3RoJiZyLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO3Iuc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgbj1bXSxpPXIubGVuZ3RoO2ZvcihsZXQgZT0wO2U8aTspe2NvbnN0IHQ9cltlXS5mb250Q2hhckNvZGUsYT1bcltlXS5nbHlwaElkXTsrK2U7bGV0IHM9dDtmb3IoO2U8aSYmcysxPT09cltlXS5mb250Q2hhckNvZGU7KXthLnB1c2gocltlXS5nbHlwaElkKTsrK3M7KytlO2lmKDY1NTM1PT09cylicmVha31uLnB1c2goW3QscyxhXSl9cmV0dXJuIG59KGUsdCxhKSxpPW4uYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxvLGMsbCxoPSJcMFwwIitzdHJpbmcxNihpKSsiXDADXDABIisoMCxyLnN0cmluZzMyKSg0KzgqaSk7Zm9yKHM9bi5sZW5ndGgtMTtzPj0wJiYhKG5bc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IHU9cysxO25bc11bMF08NjU1MzUmJjY1NTM1PT09bltzXVsxXSYmKG5bc11bMV09NjU1MzQpO2NvbnN0IGQ9bltzXVsxXTw2NTUzNT8xOjAsZj11K2QsZz1tLk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGYsMik7bGV0IHAsYix5LHcsUz0iIix4PSIiLEM9IiIsdj0iIixrPSIiLE89MDtmb3Iocz0wLG89dTtzPG87cysrKXtwPW5bc107Yj1wWzBdO3k9cFsxXTtTKz1zdHJpbmcxNihiKTt4Kz1zdHJpbmcxNih5KTt3PXBbMl07bGV0IGU9ITA7Zm9yKGM9MSxsPXcubGVuZ3RoO2M8bDsrK2MpaWYod1tjXSE9PXdbYy0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe0MrPXN0cmluZzE2KHdbMF0tYiY2NTUzNSk7dis9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKGYtcykrMipPO08rPXktYisxO0MrPXN0cmluZzE2KDApO3YrPXN0cmluZzE2KGUpO2ZvcihjPTAsbD13Lmxlbmd0aDtjPGw7KytjKWsrPXN0cmluZzE2KHdbY10pfX1pZihkPjApe3grPSLDv8O/IjtTKz0iw7/DvyI7Qys9IlwwASI7dis9IlwwXDAifWNvbnN0IFQ9IlwwXDAiK3N0cmluZzE2KDIqZikrc3RyaW5nMTYoZy5yYW5nZSkrc3RyaW5nMTYoZy5lbnRyeSkrc3RyaW5nMTYoZy5yYW5nZVNoaWZ0KSt4KyJcMFwwIitTK0MrditrO2xldCBNPSIiLEU9IiI7aWYoaT4xKXtoKz0iXDADXDBcbiIrKDAsci5zdHJpbmczMikoNCs4KmkrNCtULmxlbmd0aCk7TT0iIjtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKyl7cD1uW3NdO2I9cFswXTt3PXBbMl07bGV0IGU9d1swXTtmb3IoYz0xLGw9dy5sZW5ndGg7YzxsOysrYylpZih3W2NdIT09d1tjLTFdKzEpe3k9cFswXStjLTE7TSs9KDAsci5zdHJpbmczMikoYikrKDAsci5zdHJpbmczMikoeSkrKDAsci5zdHJpbmczMikoZSk7Yj15KzE7ZT13W2NdfU0rPSgwLHIuc3RyaW5nMzIpKGIpKygwLHIuc3RyaW5nMzIpKHBbMV0pKygwLHIuc3RyaW5nMzIpKGUpfUU9IlwwXGZcMFwwIisoMCxyLnN0cmluZzMyKShNLmxlbmd0aCsxNikrIlwwXDBcMFwwIisoMCxyLnN0cmluZzMyKShNLmxlbmd0aC8xMil9cmV0dXJuIGgrIlwwBCIrc3RyaW5nMTYoVC5sZW5ndGgrNCkrVCtFK019ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2F8fD17dW5pdHNQZXJFbTowLHlNYXg6MCx5TWluOjAsYXNjZW50OjAsZGVzY2VudDowfTtsZXQgbj0wLGk9MCxvPTAsYz0wLGw9bnVsbCxoPTAsdT0tMTtpZih0KXtmb3IobGV0IGUgaW4gdCl7ZXw9MDsobD5lfHwhbCkmJihsPWUpO2g8ZSYmKGg9ZSk7dT0oMCxzLmdldFVuaWNvZGVSYW5nZUZvcikoZSx1KTtpZih1PDMyKW58PTE8PHU7ZWxzZSBpZih1PDY0KWl8PTE8PHUtMzI7ZWxzZSBpZih1PDk2KW98PTE8PHUtNjQ7ZWxzZXtpZighKHU8MTIzKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7Y3w9MTw8dS05Nn19aD42NTUzNSYmKGg9NjU1MzUpfWVsc2V7bD0wO2g9MjU1fWNvbnN0IGQ9ZS5iYm94fHxbMCwwLDAsMF0sZj1hLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWClbMF0sZz1lLmFzY2VudFNjYWxlZD8xOmYveCxwPWEuYXNjZW50fHxNYXRoLnJvdW5kKGcqKGUuYXNjZW50fHxkWzNdKSk7bGV0IG09YS5kZXNjZW50fHxNYXRoLnJvdW5kKGcqKGUuZGVzY2VudHx8ZFsxXSkpO20+MCYmZS5kZXNjZW50PjAmJmRbMV08MCYmKG09LW0pO2NvbnN0IGI9YS55TWF4fHxwLHk9LWEueU1pbnx8LW07cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrKDAsci5zdHJpbmczMikobikrKDAsci5zdHJpbmczMikoaSkrKDAsci5zdHJpbmczMikobykrKDAsci5zdHJpbmczMikoYykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihsfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoaHx8ZS5sYXN0Q2hhcikrc3RyaW5nMTYocCkrc3RyaW5nMTYobSkrIlwwZCIrc3RyaW5nMTYoYikrc3RyaW5nMTYoeSkrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KGx8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7Y29uc3QgdD1NYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpO3JldHVybiJcMANcMFwwIisoMCxyLnN0cmluZzMyKSh0KSsiXDBcMFwwXDAiKygwLHIuc3RyaW5nMzIpKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0scj1bXTtsZXQgbixpLHMsbyxjO2ZvcihuPTAsaT1hLmxlbmd0aDtuPGk7bisrKXtjPXRbMV1bbl18fGFbbl07Y29uc3QgZT1bXTtmb3Iocz0wLG89Yy5sZW5ndGg7czxvO3MrKyllLnB1c2goc3RyaW5nMTYoYy5jaGFyQ29kZUF0KHMpKSk7ci5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W2Escl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPWEubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitzdHJpbmcxNihmKStzdHJpbmcxNigxMipmKzYpLHA9MDtmb3Iobj0wLGk9aC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgZT1sW25dO2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKXtjPWVbc107Zys9aFtuXSt1W25dK2Rbbl0rc3RyaW5nMTYocykrc3RyaW5nMTYoYy5sZW5ndGgpK3N0cmluZzE2KHApO3ArPWMubGVuZ3RofX1nKz1hLmpvaW4oIiIpK3Iuam9pbigiIik7cmV0dXJuIGd9dC5Gb250PWNsYXNzIEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPSExO3RoaXMubG9hZGVkTmFtZT1hLmxvYWRlZE5hbWU7dGhpcy5pc1R5cGUzRm9udD1hLmlzVHlwZTNGb250O3RoaXMubWlzc2luZ0ZpbGU9ITE7dGhpcy5jc3NGb250SW5mbz1hLmNzc0ZvbnRJbmZvO3RoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IG49ISEoYS5mbGFncyZpLkZvbnRGbGFncy5TZXJpZik7aWYoIW4mJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9ZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5zcGxpdCgiLSIpWzBdLGE9KDAsbC5nZXRTZXJpZkZvbnRzKSgpO2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIisiKSlpZihhW2VdKXtuPSEwO2JyZWFrfX10aGlzLmlzU2VyaWZGb250PW47dGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKTt0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7bGV0e3R5cGU6cyxzdWJ0eXBlOm99PWE7dGhpcy50eXBlPXM7dGhpcy5zdWJ0eXBlPW87dGhpcy5zeXN0ZW1Gb250SW5mbz1hLnN5c3RlbUZvbnRJbmZvO2NvbnN0IGM9ZS5tYXRjaCgvXkludmFsaWRQREZqc0ZvbnRfKC4qKV9cZCskLyk7dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ9ISFjO3RoaXMuaXNJbnZhbGlkUERGanNGb250P3RoaXMuZmFsbGJhY2tOYW1lPWNbMV06dGhpcy5pc01vbm9zcGFjZT90aGlzLmZhbGxiYWNrTmFtZT0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250P3RoaXMuZmFsbGJhY2tOYW1lPSJzZXJpZiI6dGhpcy5mYWxsYmFja05hbWU9InNhbnMtc2VyaWYiO2lmKHRoaXMuc3lzdGVtRm9udEluZm8/Lmd1ZXNzRmFsbGJhY2spe3RoaXMuc3lzdGVtRm9udEluZm8uZ3Vlc3NGYWxsYmFjaz0hMTt0aGlzLnN5c3RlbUZvbnRJbmZvLmNzcys9YCwke3RoaXMuZmFsbGJhY2tOYW1lfWB9dGhpcy5kaWZmZXJlbmNlcz1hLmRpZmZlcmVuY2VzO3RoaXMud2lkdGhzPWEud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWEuZGVmYXVsdFdpZHRoO3RoaXMuY29tcG9zaXRlPWEuY29tcG9zaXRlO3RoaXMuY01hcD1hLmNNYXA7dGhpcy5jYXBIZWlnaHQ9YS5jYXBIZWlnaHQveDt0aGlzLmFzY2VudD1hLmFzY2VudC94O3RoaXMuZGVzY2VudD1hLmRlc2NlbnQveDt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50O3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy5iYm94PWEuYmJveDt0aGlzLmRlZmF1bHRFbmNvZGluZz1hLmRlZmF1bHRFbmNvZGluZzt0aGlzLnRvVW5pY29kZT1hLnRvVW5pY29kZTt0aGlzLnRvRm9udENoYXI9W107aWYoIlR5cGUzIj09PWEudHlwZSl7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxhLmRlZmF1bHRFbmNvZGluZ1tlXTtyZXR1cm59dGhpcy5jaWRFbmNvZGluZz1hLmNpZEVuY29kaW5nfHwiIjt0aGlzLnZlcnRpY2FsPSEhYS52ZXJ0aWNhbDtpZih0aGlzLnZlcnRpY2FsKXt0aGlzLnZtZXRyaWNzPWEudm1ldHJpY3M7dGhpcy5kZWZhdWx0Vk1ldHJpY3M9YS5kZWZhdWx0Vk1ldHJpY3N9aWYoIXR8fHQuaXNFbXB0eSl7dCYmKDAsci53YXJuKSgnRm9udCBmaWxlIGlzIGVtcHR5IGluICInK2UrJyIgKCcrdGhpcy5sb2FkZWROYW1lKyIpIik7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChhKTtyZXR1cm59W3Msb109Z2V0Rm9udEZpbGVUeXBlKHQsYSk7cz09PXRoaXMudHlwZSYmbz09PXRoaXMuc3VidHlwZXx8KDAsci5pbmZvKShgSW5jb25zaXN0ZW50IGZvbnQgZmlsZSBUeXBlL1N1YlR5cGUsIGV4cGVjdGVkOiAke3RoaXMudHlwZX0vJHt0aGlzLnN1YnR5cGV9IGJ1dCBmb3VuZDogJHtzfS8ke299LmApO2xldCBoO3RyeXtzd2l0Y2gocyl7Y2FzZSJNTVR5cGUxIjooMCxyLmluZm8pKCJNTVR5cGUxIGZvbnQgKCIrZSsiKSwgZmFsbGluZyBiYWNrIHRvIFR5cGUxLiIpO2Nhc2UiVHlwZTEiOmNhc2UiQ0lERm9udFR5cGUwIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtjb25zdCBuPSJUeXBlMUMiPT09b3x8IkNJREZvbnRUeXBlMEMiPT09bz9uZXcgdS5DRkZGb250KHQsYSk6bmV3IHcuVHlwZTFGb250KGUsdCxhKTthZGp1c3RXaWR0aHMoYSk7aD10aGlzLmNvbnZlcnQoZSxuLGEpO2JyZWFrO2Nhc2UiT3BlblR5cGUiOmNhc2UiVHJ1ZVR5cGUiOmNhc2UiQ0lERm9udFR5cGUyIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtoPXRoaXMuY2hlY2tBbmRSZXBhaXIoZSx0LGEpO2lmKHRoaXMuaXNPcGVuVHlwZSl7YWRqdXN0V2lkdGhzKGEpO3M9Ik9wZW5UeXBlIn1icmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBGb250ICR7c30gaXMgbm90IHN1cHBvcnRlZGApfX1jYXRjaChlKXsoMCxyLndhcm4pKGUpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSk7cmV0dXJufWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoYSk7dGhpcy5kYXRhPWg7dGhpcy50eXBlPXM7dGhpcy5zdWJ0eXBlPW87dGhpcy5mb250TWF0cml4PWEuZm9udE1hdHJpeDt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLnRvVW5pY29kZT1hLnRvVW5pY29kZTt0aGlzLnNlYWNNYXA9YS5zZWFjTWFwfWdldCByZW5kZXJlcigpe2NvbnN0IGU9ZC5Gb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmVuZGVyZXIiLGUpfWV4cG9ydERhdGEoKXtjb25zdCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0/Wy4uLkMsLi4udl06Qyx0PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGEscjtmb3IoYSBvZiBlKXtyPXRoaXNbYV07dm9pZCAwIT09ciYmKHRbYV09cil9cmV0dXJuIHR9ZmFsbGJhY2tUb1N5c3RlbUZvbnQoZSl7dGhpcy5taXNzaW5nRmlsZT0hMDtjb25zdHtuYW1lOnQsdHlwZTphfT10aGlzO2xldCByPSgwLGkubm9ybWFsaXplRm9udE5hbWUpKHQpO2NvbnN0IG49KDAsbC5nZXRTdGRGb250TWFwKSgpLHU9KDAsbC5nZXROb25TdGRGb250TWFwKSgpLGQ9ISFuW3JdLGc9ISghdVtyXXx8IW5bdVtyXV0pO3I9bltyXXx8dVtyXXx8cjtjb25zdCBwPSgwLGYuZ2V0Rm9udEJhc2ljTWV0cmljcykoKVtyXTtpZihwKXtpc05hTih0aGlzLmFzY2VudCkmJih0aGlzLmFzY2VudD1wLmFzY2VudC94KTtpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PXAuZGVzY2VudC94KTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1wLmNhcEhlaWdodC94KX10aGlzLmJvbGQ9L2JvbGQvZ2kudGVzdChyKTt0aGlzLml0YWxpYz0vb2JsaXF1ZXxpdGFsaWMvZ2kudGVzdChyKTt0aGlzLmJsYWNrPS9CbGFjay9nLnRlc3QodCk7Y29uc3QgbT0vTmFycm93L2cudGVzdCh0KTt0aGlzLnJlbWVhc3VyZT0oIWR8fG0pJiZPYmplY3Qua2V5cyh0aGlzLndpZHRocykubGVuZ3RoPjA7aWYoKGR8fGcpJiYiQ0lERm9udFR5cGUyIj09PWEmJnRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIikpe2NvbnN0IGE9ZS5jaWRUb0dpZE1hcCxyPVtdO2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAociwoMCxsLmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykoKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrKSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAociwoMCxsLmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaSkoKSk7aWYoYSl7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO3ZvaWQgMCE9PWFbdF0mJihyWytlXT1hW3RdKX1hLmxlbmd0aCE9PXRoaXMudG9Vbmljb2RlLmxlbmd0aCYmZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2NvbnN0IG49cltlXTt2b2lkIDA9PT1hW25dJiYoclsrZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe3JbK2VdPXR9KSk7dGhpcy50b0ZvbnRDaGFyPXI7dGhpcy50b1VuaWNvZGU9bmV3IGguVG9Vbmljb2RlTWFwKHIpfWVsc2UgaWYoL1N5bWJvbC9pLnRlc3QocikpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihjLlN5bWJvbFNldEVuY29kaW5nLCgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QocikpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihjLlphcGZEaW5nYmF0c0VuY29kaW5nLCgwLG8uZ2V0RGluZ2JhdHNHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoZCl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpOyJDSURGb250VHlwZTIiIT09YXx8dGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKXx8dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2VbK3RdPWF9KSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKSxhPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LHIpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBhPXRoaXMuZGlmZmVyZW5jZXNbdF18fHRoaXMuZGVmYXVsdEVuY29kaW5nW3RdLG49KDAscy5nZXRVbmljb2RlRm9yR2x5cGgpKGEsZSk7LTEhPT1uJiYocj1uKX1hWyt0XT1yfSkpO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSwoMCxsLmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykoKSk7dGhpcy50b0ZvbnRDaGFyPWF9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9ci5zcGxpdCgiLSIpWzBdfWNoZWNrQW5kUmVwYWlyKGUsdCxhKXtjb25zdCBzPVsiT1MvMiIsImNtYXAiLCJoZWFkIiwiaGhlYSIsImhtdHgiLCJtYXhwIiwibmFtZSIsInBvc3QiLCJsb2NhIiwiZ2x5ZiIsImZwZ20iLCJwcmVwIiwiY3Z0ICIsIkNGRiAiXTtmdW5jdGlvbiByZWFkVGFibGVzKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2FbIk9TLzIiXT1udWxsO2EuY21hcD1udWxsO2EuaGVhZD1udWxsO2EuaGhlYT1udWxsO2EuaG10eD1udWxsO2EubWF4cD1udWxsO2EubmFtZT1udWxsO2EucG9zdD1udWxsO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9cmVhZFRhYmxlRW50cnkoZSk7cy5pbmNsdWRlcyh0LnRhZykmJigwIT09dC5sZW5ndGgmJihhW3QudGFnXT10KSl9cmV0dXJuIGF9ZnVuY3Rpb24gcmVhZFRhYmxlRW50cnkoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KSxhPWUuZ2V0SW50MzIoKT4+PjAscj1lLmdldEludDMyKCk+Pj4wLG49ZS5nZXRJbnQzMigpPj4+MCxpPWUucG9zO2UucG9zPWUuc3RhcnR8fDA7ZS5za2lwKHIpO2NvbnN0IHM9ZS5nZXRCeXRlcyhuKTtlLnBvcz1pO2lmKCJoZWFkIj09PXQpe3NbOF09c1s5XT1zWzEwXT1zWzExXT0wO3NbMTddfD0zMn1yZXR1cm57dGFnOnQsY2hlY2tzdW06YSxsZW5ndGg6bixvZmZzZXQ6cixkYXRhOnN9fWZ1bmN0aW9uIHJlYWRPcGVuVHlwZUhlYWRlcihlKXtyZXR1cm57dmVyc2lvbjplLmdldFN0cmluZyg0KSxudW1UYWJsZXM6ZS5nZXRVaW50MTYoKSxzZWFyY2hSYW5nZTplLmdldFVpbnQxNigpLGVudHJ5U2VsZWN0b3I6ZS5nZXRVaW50MTYoKSxyYW5nZVNoaWZ0OmUuZ2V0VWludDE2KCl9fWZ1bmN0aW9uIHNhbml0aXplR2x5cGgoZSx0LGEscixuLGkpe2NvbnN0IHM9e2xlbmd0aDowLHNpemVPZkluc3RydWN0aW9uczowfTtpZih0PDB8fHQ+PWUubGVuZ3RofHxhPmUubGVuZ3RofHxhLXQ8PTEyKXJldHVybiBzO2NvbnN0IG89ZS5zdWJhcnJheSh0LGEpLGM9c2lnbmVkSW50MTYob1syXSxvWzNdKSxsPXNpZ25lZEludDE2KG9bNF0sb1s1XSksaD1zaWduZWRJbnQxNihvWzZdLG9bN10pLHU9c2lnbmVkSW50MTYob1s4XSxvWzldKTtpZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobywyLGgpO3dyaXRlU2lnbmVkSW50MTYobyw2LGMpfWlmKGw+dSl7d3JpdGVTaWduZWRJbnQxNihvLDQsdSk7d3JpdGVTaWduZWRJbnQxNihvLDgsbCl9Y29uc3QgZD1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGQ8MCl7aWYoZDwtMSlyZXR1cm4gcztyLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBmLGc9MTAscD0wO2ZvcihmPTA7ZjxkO2YrKyl7cD0ob1tnXTw8OHxvW2crMV0pKzE7Zys9Mn1jb25zdCBtPWcsYj1vW2ddPDw4fG9bZysxXTtzLnNpemVPZkluc3RydWN0aW9ucz1iO2crPTIrYjtjb25zdCB5PWc7bGV0IHc9MDtmb3IoZj0wO2Y8cDtmKyspe2NvbnN0IGU9b1tnKytdOzE5MiZlJiYob1tnLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7dys9cjtpZig4JmUpe2NvbnN0IGU9b1tnKytdOzA9PT1lJiYob1tnLTFdXj04KTtmKz1lO3crPWUqcn19aWYoMD09PXcpcmV0dXJuIHM7bGV0IFM9Zyt3O2lmKFM+by5sZW5ndGgpcmV0dXJuIHM7aWYoIWkmJmI+MCl7ci5zZXQoby5zdWJhcnJheSgwLG0pLG4pO3Iuc2V0KFswLDBdLG4rbSk7ci5zZXQoby5zdWJhcnJheSh5LFMpLG4rbSsyKTtTLT1iO28ubGVuZ3RoLVM+MyYmKFM9UyszJi00KTtzLmxlbmd0aD1TO3JldHVybiBzfWlmKG8ubGVuZ3RoLVM+Myl7Uz1TKzMmLTQ7ci5zZXQoby5zdWJhcnJheSgwLFMpLG4pO3MubGVuZ3RoPVM7cmV0dXJuIHN9ci5zZXQobyxuKTtzLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gc31mdW5jdGlvbiByZWFkTmFtZVRhYmxlKGUpe2NvbnN0IGE9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPWE7Y29uc3Qgcj1bW10sW11dLG49W10saT1lLmxlbmd0aCxzPWEraTtpZigwIT09dC5nZXRVaW50MTYoKXx8aTw2KXJldHVybltyLG5dO2NvbnN0IG89dC5nZXRVaW50MTYoKSxjPXQuZ2V0VWludDE2KCk7bGV0IGwsaDtmb3IobD0wO2w8byYmdC5wb3MrMTI8PXM7bCsrKXtjb25zdCBlPXtwbGF0Zm9ybTp0LmdldFVpbnQxNigpLGVuY29kaW5nOnQuZ2V0VWludDE2KCksbGFuZ3VhZ2U6dC5nZXRVaW50MTYoKSxuYW1lOnQuZ2V0VWludDE2KCksbGVuZ3RoOnQuZ2V0VWludDE2KCksb2Zmc2V0OnQuZ2V0VWludDE2KCl9Oyhpc01hY05hbWVSZWNvcmQoZSl8fGlzV2luTmFtZVJlY29yZChlKSkmJm4ucHVzaChlKX1mb3IobD0wLGg9bi5sZW5ndGg7bDxoO2wrKyl7Y29uc3QgZT1uW2xdO2lmKGUubGVuZ3RoPD0wKWNvbnRpbnVlO2NvbnN0IGk9YStjK2Uub2Zmc2V0O2lmKGkrZS5sZW5ndGg+cyljb250aW51ZTt0LnBvcz1pO2NvbnN0IG89ZS5uYW1lO2lmKGUuZW5jb2Rpbmcpe2xldCBhPSIiO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldFVpbnQxNigpKTtyWzFdW29dPWF9ZWxzZSByWzBdW29dPXQuZ2V0U3RyaW5nKGUubGVuZ3RoKX1yZXR1cm5bcixuXX1jb25zdCBsPVswLDAsMCwwLDAsMCwwLDAsLTIsLTIsLTIsLTIsMCwwLC0yLC01LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLC0xLC0xLDEsLTEsLTk5OSwwLDEsMCwtMSwtMiwwLC0xLC0yLC0xLC0xLDAsLTEsLTEsMCwwLC05OTksLTk5OSwtMSwtMSwtMSwtMSwtMiwtOTk5LC0yLC0yLC05OTksMCwtMiwtMiwwLDAsLTIsMCwtMiwwLDAsMCwtMiwtMSwtMSwxLDEsMCwwLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwtMSwwLC0xLC0xLDAsLTk5OSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwtMiwtOTk5LC05OTksLTk5OSwtOTk5LC05OTksLTEsLTEsLTIsLTIsMCwwLDAsMCwtMSwtMSwtOTk5LC0yLC0yLDAsMCwtMSwtMiwtMiwwLDAsMCwtMSwtMSwtMSwtMl07ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW0oZSx0KXtsZXQgYSxuLGkscyxvLGM9ZS5kYXRhLGg9MCx1PTAsZD0wO2NvbnN0IGY9W10sZz1bXSxwPVtdO2xldCBtPXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zLGI9ITEseT0wLHc9MDtmb3IobGV0IGU9Yy5sZW5ndGg7aDxlOyl7Y29uc3QgZT1jW2grK107aWYoNjQ9PT1lKXtuPWNbaCsrXTtpZihifHx3KWgrPW47ZWxzZSBmb3IoYT0wO2E8bjthKyspZi5wdXNoKGNbaCsrXSl9ZWxzZSBpZig2NT09PWUpe249Y1toKytdO2lmKGJ8fHcpaCs9MipuO2Vsc2UgZm9yKGE9MDthPG47YSsrKXtpPWNbaCsrXTtmLnB1c2goaTw8OHxjW2grK10pfX1lbHNlIGlmKDE3Nj09KDI0OCZlKSl7bj1lLTE3NisxO2lmKGJ8fHcpaCs9bjtlbHNlIGZvcihhPTA7YTxuO2ErKylmLnB1c2goY1toKytdKX1lbHNlIGlmKDE4ND09KDI0OCZlKSl7bj1lLTE4NCsxO2lmKGJ8fHcpaCs9MipuO2Vsc2UgZm9yKGE9MDthPG47YSsrKXtpPWNbaCsrXTtmLnB1c2goaTw8OHxjW2grK10pfX1lbHNlIGlmKDQzIT09ZXx8bSlpZig0NCE9PWV8fG0pe2lmKDQ1PT09ZSlpZihiKXtiPSExO3U9aH1lbHNle289Zy5wb3AoKTtpZighbyl7KDAsci53YXJuKSgiVFQ6IEVOREYgYmFkIHN0YWNrIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1zPXAucG9wKCk7Yz1vLmRhdGE7aD1vLmk7dC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXT1mLmxlbmd0aC1vLnN0YWNrVG9wfWVsc2UgaWYoMTM3PT09ZSl7aWYoYnx8dyl7KDAsci53YXJuKSgiVFQ6IG5lc3RlZCBJREVGcyBub3QgYWxsb3dlZCIpO209ITB9Yj0hMDtkPWh9ZWxzZSBpZig4OD09PWUpKyt5O2Vsc2UgaWYoMjc9PT1lKXc9eTtlbHNlIGlmKDg5PT09ZSl7dz09PXkmJih3PTApOy0teX1lbHNlIGlmKDI4PT09ZSYmIWImJiF3KXtjb25zdCBlPWYuYXQoLTEpO2U+MCYmKGgrPWUtMSl9fWVsc2V7aWYoYnx8dyl7KDAsci53YXJuKSgiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpO209ITB9Yj0hMDtkPWg7cz1mLnBvcCgpO3QuZnVuY3Rpb25zRGVmaW5lZFtzXT17ZGF0YTpjLGk6aH19ZWxzZSBpZighYiYmIXcpe3M9Zi5hdCgtMSk7aWYoaXNOYU4ocykpKDAsci5pbmZvKSgiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2V7dC5mdW5jdGlvbnNVc2VkW3NdPSEwO2lmKHMgaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT1mLmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW3NdO2lmKGU8MCl7KDAsci53YXJuKSgiVFQ6IENBTEwgaW52YWxpZCBmdW5jdGlvbnMgc3RhY2sgZGVsdGEuIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1mLmxlbmd0aD1lfWVsc2UgaWYocyBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFwLmluY2x1ZGVzKHMpKXtnLnB1c2goe2RhdGE6YyxpOmgsc3RhY2tUb3A6Zi5sZW5ndGgtMX0pO3AucHVzaChzKTtvPXQuZnVuY3Rpb25zRGVmaW5lZFtzXTtpZighbyl7KDAsci53YXJuKSgiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1jPW8uZGF0YTtoPW8uaX19fWlmKCFiJiYhdyl7bGV0IHQ9MDtlPD0xNDI/dD1sW2VdOmU+PTE5MiYmZTw9MjIzP3Q9LTE6ZT49MjI0JiYodD0tMik7aWYoZT49MTEzJiZlPD0xMTcpe249Zi5wb3AoKTtpc05hTihuKXx8KHQ9Miotbil9Zm9yKDt0PDAmJmYubGVuZ3RoPjA7KXtmLnBvcCgpO3QrK31mb3IoO3Q+MDspe2YucHVzaChOYU4pO3QtLX19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPW07Y29uc3QgUz1bY107aD5jLmxlbmd0aCYmUy5wdXNoKG5ldyBVaW50OEFycmF5KGgtYy5sZW5ndGgpKTtpZihkPnUpeygwLHIud2FybikoIlRUOiBjb21wbGVtZW50aW5nIGEgbWlzc2luZyBmdW5jdGlvbiB0YWlsIik7Uy5wdXNoKG5ldyBVaW50OEFycmF5KFszNCw0NV0pKX0hZnVuY3Rpb24gZm9sZFRUVGFibGUoZSx0KXtpZih0Lmxlbmd0aD4xKXtsZXQgYSxyLG49MDtmb3IoYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyluKz10W2FdLmxlbmd0aDtuPW4rMyYtNDtjb25zdCBpPW5ldyBVaW50OEFycmF5KG4pO2xldCBzPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2kuc2V0KHRbYV0scyk7cys9dFthXS5sZW5ndGh9ZS5kYXRhPWk7ZS5sZW5ndGg9bn19KGUsUyl9bGV0IGQsZixiLHc7aWYoaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKHQ9bmV3IHkuU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmEsb2Zmc2V0VGFibGU6bn09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpOygwLHIuYXNzZXJ0KSgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGE9ZS5nZXRVaW50MTYoKSxuPWUuZ2V0VWludDE2KCksaT1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxpO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbz17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmEsbWlub3JWZXJzaW9uOm4sbnVtRm9udHM6aSxvZmZzZXRUYWJsZTpzfTtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybiBvO2Nhc2UgMjpvLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtvLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtvLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gb310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBUcnVlVHlwZSBDb2xsZWN0aW9uIG1ham9yVmVyc2lvbjogJHthfS5gKX0oZSksaT10LnNwbGl0KCIrIik7bGV0IHM7Zm9yKGxldCBvPTA7bzxhO28rKyl7ZS5wb3M9KGUuc3RhcnR8fDApK25bb107Y29uc3QgYT1yZWFkT3BlblR5cGVIZWFkZXIoZSksYz1yZWFkVGFibGVzKGUsYS5udW1UYWJsZXMpO2lmKCFjLm5hbWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoJ1RydWVUeXBlIENvbGxlY3Rpb24gZm9udCBtdXN0IGNvbnRhaW4gYSAibmFtZSIgdGFibGUuJyk7Y29uc3RbbF09cmVhZE5hbWVUYWJsZShjLm5hbWUpO2ZvcihsZXQgZT0wLHI9bC5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxuPWxbZV0ubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49bFtlXVtyXT8ucmVwbGFjZUFsbCgvXHMvZywiIik7aWYobil7aWYobj09PXQpcmV0dXJue2hlYWRlcjphLHRhYmxlczpjfTtpZighKGkubGVuZ3RoPDIpKWZvcihjb25zdCBlIG9mIGkpbj09PWUmJihzPXtuYW1lOmUsaGVhZGVyOmEsdGFibGVzOmN9KX19fWlmKHMpeygwLHIud2FybikoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udCwgZmFsbGluZyBiYWNrIHRvICIke3MubmFtZX0iIGZvbnQgaW5zdGVhZC5gKTtyZXR1cm57aGVhZGVyOnMuaGVhZGVyLHRhYmxlczpzLnRhYmxlc319dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO2Q9ZS5oZWFkZXI7Zj1lLnRhYmxlc31lbHNle2Q9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO2Y9cmVhZFRhYmxlcyh0LGQubnVtVGFibGVzKX1jb25zdCBTPSFmWyJDRkYgIl07aWYoUyl7aWYoIWYubG9jYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImxvY2EiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKCFmLmdseWYpeygwLHIud2FybikoJ1JlcXVpcmVkICJnbHlmIiB0YWJsZSBpcyBub3QgZm91bmQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7Zi5nbHlmPXt0YWc6ImdseWYiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9fXRoaXMuaXNPcGVuVHlwZT0hMX1lbHNle2NvbnN0IHQ9YS5jb21wb3NpdGUmJihhLmNpZFRvR2lkTWFwPy5sZW5ndGg+MHx8IShhLmNNYXAgaW5zdGFuY2VvZiBwLklkZW50aXR5Q01hcCkpO2lmKCJPVFRPIj09PWQudmVyc2lvbiYmIXR8fCFmLmhlYWR8fCFmLmhoZWF8fCFmLm1heHB8fCFmLnBvc3Qpe3c9bmV3IHkuU3RyZWFtKGZbIkNGRiAiXS5kYXRhKTtiPW5ldyB1LkNGRkZvbnQodyxhKTthZGp1c3RXaWR0aHMoYSk7cmV0dXJuIHRoaXMuY29udmVydChlLGIsYSl9ZGVsZXRlIGYuZ2x5ZjtkZWxldGUgZi5sb2NhO2RlbGV0ZSBmLmZwZ207ZGVsZXRlIGYucHJlcDtkZWxldGUgZlsiY3Z0ICJdO3RoaXMuaXNPcGVuVHlwZT0hMH1pZighZi5tYXhwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibWF4cCIgdGFibGUgaXMgbm90IGZvdW5kJyk7dC5wb3M9KHQuc3RhcnR8fDApK2YubWF4cC5vZmZzZXQ7Y29uc3QgeD10LmdldEludDMyKCksQz10LmdldFVpbnQxNigpO2lmKGEuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1DJiZTKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09YSx0PWludDE2KGYuaGVhZC5kYXRhWzUwXSxmLmhlYWQuZGF0YVs1MV0pLHI9bmV3IGcuR2x5ZlRhYmxlKHtnbHlmVGFibGU6Zi5nbHlmLmRhdGEsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6Zi5sb2NhLmRhdGEsbnVtR2x5cGhzOkN9KTtyLnNjYWxlKGUpO2NvbnN0e2dseWY6bixsb2NhOmksaXNMb2NhdGlvbkxvbmc6c309ci53cml0ZSgpO2YuZ2x5Zi5kYXRhPW47Zi5sb2NhLmRhdGE9aTtpZihzIT09ISF0KXtmLmhlYWQuZGF0YVs1MF09MDtmLmhlYWQuZGF0YVs1MV09cz8xOjB9Y29uc3Qgbz1mLmhtdHguZGF0YTtmb3IobGV0IHQ9MDt0PEM7dCsrKXtjb25zdCBhPTQqdCxyPU1hdGgucm91bmQoZVt0XSppbnQxNihvW2FdLG9bYSsxXSkpO29bYV09cj4+OCYyNTU7b1thKzFdPTI1NSZyO3dyaXRlU2lnbmVkSW50MTYobyxhKzIsTWF0aC5yb3VuZChlW3RdKnNpZ25lZEludDE2KG9bYSsyXSxvW2ErM10pKSl9fWxldCB2PUMrMSxrPSEwO2lmKHY+NjU1MzUpe2s9ITE7dj1DOygwLHIud2FybikoIk5vdCBlbm91Z2ggc3BhY2UgaW4gZ2x5ZnMgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpfWxldCBPPTAsVD0wO2lmKHg+PTY1NTM2JiZmLm1heHAubGVuZ3RoPj0yMil7dC5wb3MrPTg7aWYodC5nZXRVaW50MTYoKT4yKXtmLm1heHAuZGF0YVsxNF09MDtmLm1heHAuZGF0YVsxNV09Mn10LnBvcys9NDtPPXQuZ2V0VWludDE2KCk7dC5wb3MrPTQ7VD10LmdldFVpbnQxNigpfWYubWF4cC5kYXRhWzRdPXY+Pjg7Zi5tYXhwLmRhdGFbNV09MjU1JnY7Y29uc3QgTT1mdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbXMoZSx0LGEsbil7Y29uc3QgaT17ZnVuY3Rpb25zRGVmaW5lZDpbXSxmdW5jdGlvbnNVc2VkOltdLGZ1bmN0aW9uc1N0YWNrRGVsdGFzOltdLHRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9uczohMSxoaW50c1ZhbGlkOiEwfTtlJiZzYW5pdGl6ZVRUUHJvZ3JhbShlLGkpO3QmJnNhbml0aXplVFRQcm9ncmFtKHQsaSk7ZSYmZnVuY3Rpb24gY2hlY2tJbnZhbGlkRnVuY3Rpb25zKGUsdCl7aWYoIWUudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zKWlmKGUuZnVuY3Rpb25zRGVmaW5lZC5sZW5ndGg+dCl7KDAsci53YXJuKSgiVFQ6IG1vcmUgZnVuY3Rpb25zIGRlZmluZWQgdGhhbiBleHBlY3RlZCIpO2UuaGludHNWYWxpZD0hMX1lbHNlIGZvcihsZXQgYT0wLG49ZS5mdW5jdGlvbnNVc2VkLmxlbmd0aDthPG47YSsrKXtpZihhPnQpeygwLHIud2FybikoIlRUOiBpbnZhbGlkIGZ1bmN0aW9uIGlkOiAiK2EpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59aWYoZS5mdW5jdGlvbnNVc2VkW2FdJiYhZS5mdW5jdGlvbnNEZWZpbmVkW2FdKXsoMCxyLndhcm4pKCJUVDogdW5kZWZpbmVkIGZ1bmN0aW9uOiAiK2EpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59fX0oaSxuKTtpZihhJiYxJmEubGVuZ3RoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzEpO2Uuc2V0KGEuZGF0YSk7YS5kYXRhPWV9cmV0dXJuIGkuaGludHNWYWxpZH0oZi5mcGdtLGYucHJlcCxmWyJjdnQgIl0sTyk7aWYoIU0pe2RlbGV0ZSBmLmZwZ207ZGVsZXRlIGYucHJlcDtkZWxldGUgZlsiY3Z0ICJdfSFmdW5jdGlvbiBzYW5pdGl6ZU1ldHJpY3MoZSx0LGEsbixpLHMpe2lmKCF0KXthJiYoYS5kYXRhPW51bGwpO3JldHVybn1lLnBvcz0oZS5zdGFydHx8MCkrdC5vZmZzZXQ7ZS5wb3MrPTQ7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7Y29uc3Qgbz1lLmdldFVpbnQxNigpO2UucG9zKz04O2UucG9zKz0yO2xldCBjPWUuZ2V0VWludDE2KCk7aWYoMCE9PW8pe2lmKCEoMiZpbnQxNihuLmRhdGFbNDRdLG4uZGF0YVs0NV0pKSl7dC5kYXRhWzIyXT0wO3QuZGF0YVsyM109MH19aWYoYz5pKXsoMCxyLmluZm8pKGBUaGUgbnVtT2ZNZXRyaWNzICgke2N9KSBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtR2x5cGhzICgke2l9KS5gKTtjPWk7dC5kYXRhWzM0XT0oNjUyODAmYyk+Pjg7dC5kYXRhWzM1XT0yNTUmY31jb25zdCBsPWktYy0oYS5sZW5ndGgtNCpjPj4xKTtpZihsPjApe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgrMipsKTtlLnNldChhLmRhdGEpO2lmKHMpe2VbYS5sZW5ndGhdPWEuZGF0YVsyXTtlW2EubGVuZ3RoKzFdPWEuZGF0YVszXX1hLmRhdGE9ZX19KHQsZi5oaGVhLGYuaG10eCxmLmhlYWQsdixrKTtpZighZi5oZWFkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGVhZCIgdGFibGUgaXMgbm90IGZvdW5kJyk7IWZ1bmN0aW9uIHNhbml0aXplSGVhZChlLHQsYSl7Y29uc3Qgbj1lLmRhdGEsaT1mdW5jdGlvbiBpbnQzMihlLHQsYSxyKXtyZXR1cm4oZTw8MjQpKyh0PDwxNikrKGE8PDgpK3J9KG5bMF0sblsxXSxuWzJdLG5bM10pO2lmKGk+PjE2IT0xKXsoMCxyLmluZm8pKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIHZlcnNpb24gaW4gaGVhZCB0YWJsZTogIitpKTtuWzBdPTA7blsxXT0xO25bMl09MDtuWzNdPTB9Y29uc3Qgcz1pbnQxNihuWzUwXSxuWzUxXSk7aWYoczwwfHxzPjEpeygwLHIuaW5mbykoIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgaW5kZXhUb0xvY0Zvcm1hdCBpbiBoZWFkIHRhYmxlOiAiK3MpO2NvbnN0IGU9dCsxO2lmKGE9PT1lPDwxKXtuWzUwXT0wO25bNTFdPTB9ZWxzZXtpZihhIT09ZTw8Mil0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO25bNTBdPTA7bls1MV09MX19fShmLmhlYWQsQyxTP2YubG9jYS5sZW5ndGg6MCk7bGV0IEU9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihTKXtjb25zdCBlPWludDE2KGYuaGVhZC5kYXRhWzUwXSxmLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsYSxyLG4saSxzKXtsZXQgbyxjLGw7aWYocil7bz00O2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07bD1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGEpe2VbdF09YT4+PjI0JjI1NTtlW3QrMV09YT4+MTYmMjU1O2VbdCsyXT1hPj44JjI1NTtlW3QrM109MjU1JmF9fWVsc2V7bz0yO2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGEpe2VbdF09YT4+OSYyNTU7ZVt0KzFdPWE+PjEmMjU1fX1jb25zdCBoPWk/YSsxOmEsdT1vKigxK2gpLGQ9bmV3IFVpbnQ4QXJyYXkodSk7ZC5zZXQoZS5kYXRhLnN1YmFycmF5KDAsdSkpO2UuZGF0YT1kO2NvbnN0IGY9dC5kYXRhLGc9Zi5sZW5ndGgscD1uZXcgVWludDhBcnJheShnKTtsZXQgbSxiO2NvbnN0IHk9W107Zm9yKG09MCxiPTA7bTxhKzE7bSsrLGIrPW8pe2xldCBlPWMoZCxiKTtlPmcmJihlPWcpO3kucHVzaCh7aW5kZXg6bSxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXkuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKG09MDttPGE7bSsrKXlbbV0uZW5kT2Zmc2V0PXlbbSsxXS5vZmZzZXQ7eS5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKG09MDttPGE7bSsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09eVttXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgYT15W20rMV0ub2Zmc2V0O2lmKDAhPT1hKXt5W21dLmVuZE9mZnNldD1hO2JyZWFrfX1jb25zdCB3PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IFM9MDtsKGQsMCxTKTtmb3IobT0wLGI9bzttPGE7bSsrLGIrPW8pe2NvbnN0IGU9c2FuaXRpemVHbHlwaChmLHlbbV0ub2Zmc2V0LHlbbV0uZW5kT2Zmc2V0LHAsUyxuKSx0PWUubGVuZ3RoOzA9PT10JiYod1ttXT0hMCk7ZS5zaXplT2ZJbnN0cnVjdGlvbnM+cyYmKHM9ZS5zaXplT2ZJbnN0cnVjdGlvbnMpO1MrPXQ7bChkLGIsUyl9aWYoMD09PVMpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OSwwXSk7Zm9yKG09MCxiPW87bTxoO20rKyxiKz1vKWwoZCxiLGUubGVuZ3RoKTt0LmRhdGE9ZX1lbHNlIGlmKGkpe2NvbnN0IGE9YyhkLG8pO2lmKHAubGVuZ3RoPmErUyl0LmRhdGE9cC5zdWJhcnJheSgwLGErUyk7ZWxzZXt0LmRhdGE9bmV3IFVpbnQ4QXJyYXkoYStTKTt0LmRhdGEuc2V0KHAuc3ViYXJyYXkoMCxTKSl9dC5kYXRhLnNldChwLnN1YmFycmF5KDAsYSksUyk7bChlLmRhdGEsZC5sZW5ndGgtbyxTK2EpfWVsc2UgdC5kYXRhPXAuc3ViYXJyYXkoMCxTKTtyZXR1cm57bWlzc2luZ0dseXBoczp3LG1heFNpemVPZkluc3RydWN0aW9uczpzfX0oZi5sb2NhLGYuZ2x5ZixDLGUsTSxrLFQpO0U9dC5taXNzaW5nR2x5cGhzO2lmKHg+PTY1NTM2JiZmLm1heHAubGVuZ3RoPj0yMil7Zi5tYXhwLmRhdGFbMjZdPXQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zPj44O2YubWF4cC5kYXRhWzI3XT0yNTUmdC5tYXhTaXplT2ZJbnN0cnVjdGlvbnN9fWlmKCFmLmhoZWEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoaGVhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZigwPT09Zi5oaGVhLmRhdGFbMTBdJiYwPT09Zi5oaGVhLmRhdGFbMTFdKXtmLmhoZWEuZGF0YVsxMF09MjU1O2YuaGhlYS5kYXRhWzExXT0yNTV9Y29uc3QgRD17dW5pdHNQZXJFbTppbnQxNihmLmhlYWQuZGF0YVsxOF0sZi5oZWFkLmRhdGFbMTldKSx5TWF4OnNpZ25lZEludDE2KGYuaGVhZC5kYXRhWzQyXSxmLmhlYWQuZGF0YVs0M10pLHlNaW46c2lnbmVkSW50MTYoZi5oZWFkLmRhdGFbMzhdLGYuaGVhZC5kYXRhWzM5XSksYXNjZW50OnNpZ25lZEludDE2KGYuaGhlYS5kYXRhWzRdLGYuaGhlYS5kYXRhWzVdKSxkZXNjZW50OnNpZ25lZEludDE2KGYuaGhlYS5kYXRhWzZdLGYuaGhlYS5kYXRhWzddKSxsaW5lR2FwOnNpZ25lZEludDE2KGYuaGhlYS5kYXRhWzhdLGYuaGhlYS5kYXRhWzldKX07dGhpcy5hc2NlbnQ9RC5hc2NlbnQvRC51bml0c1BlckVtO3RoaXMuZGVzY2VudD1ELmRlc2NlbnQvRC51bml0c1BlckVtO3RoaXMubGluZUdhcD1ELmxpbmVHYXAvRC51bml0c1BlckVtO2lmKHRoaXMuY3NzRm9udEluZm8/LmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtmLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxhLG4pe2NvbnN0IHM9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXM7Y29uc3Qgbz1zK2UubGVuZ3RoLGM9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IGwsaCx1PSEwO3N3aXRjaChjKXtjYXNlIDY1NTM2Omw9aS5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1uKXt1PSExO2JyZWFrfWNvbnN0IHM9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe3U9ITE7YnJlYWt9cy5wdXNoKGUpfWlmKCF1KWJyZWFrO2NvbnN0IGQ9W10sZj1bXTtmb3IoO3QucG9zPG87KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2YubGVuZ3RoPWU7Zm9yKGg9MDtoPGU7KytoKWZbaF09U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7ZC5wdXNoKGYuam9pbigiIikpfWw9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXNbaF07ZTwyNTg/bC5wdXNoKGkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW2VdKTpsLnB1c2goZFtlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsci53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitjKTt1PSExO2EuZGVmYXVsdEVuY29kaW5nJiYobD1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPWw7cmV0dXJuIHV9KGYucG9zdCxhLEMpO2YucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3QgTj1bXTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hRVtlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oYSxuKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoYSxuLCEwKSk7aWYobj42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBpPS0xO3Q/aT1uOnZvaWQgMCE9PWVbbl0mJihpPWVbbl0pO2k+PTAmJmk8QyYmaGFzR2x5cGgoaSkmJihOW2FdPWkpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLG4pe2lmKCFlKXsoMCxyLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IGkscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLGk9dC5nZXRVaW50MTYoKSxzPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYoYz8ucGxhdGZvcm1JZCE9PXJ8fGM/LmVuY29kaW5nSWQhPT1pKXtpZigwIT09cnx8MCE9PWkmJjEhPT1pJiYzIT09aSlpZigxPT09ciYmMD09PWkpaD0hMDtlbHNlIGlmKDMhPT1yfHwxIT09aXx8IW4mJmMpe2lmKGEmJjM9PT1yJiYwPT09aSl7aD0hMDtsZXQgYT0hMDtpZihlPG8tMSl7Y29uc3QgZT10LnBlZWtCeXRlcygyKTtpbnQxNihlWzBdLGVbMV0pPHImJihhPSExKX1hJiYobD0hMCl9fWVsc2V7aD0hMDthfHwobD0hMCl9ZWxzZSBoPSEwO2gmJihjPXtwbGF0Zm9ybUlkOnIsZW5jb2RpbmdJZDppLG9mZnNldDpzfSk7aWYobClicmVha319YyYmKHQucG9zPXMrYy5vZmZzZXQpO2lmKCFjfHwtMT09PXQucGVla0J5dGUoKSl7KDAsci53YXJuKSgiQ291bGQgbm90IGZpbmQgYSBwcmVmZXJyZWQgY21hcCB0YWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19Y29uc3QgaD10LmdldFVpbnQxNigpO2xldCB1PSExO2NvbnN0IGQ9W107bGV0IGYsZztpZigwPT09aCl7dC5za2lwKDQpO2ZvcihmPTA7ZjwyNTY7ZisrKXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2UmJmQucHVzaCh7Y2hhckNvZGU6ZixnbHlwaElkOmV9KX11PSEwfWVsc2UgaWYoMj09PWgpe3Quc2tpcCg0KTtjb25zdCBlPVtdO2xldCBhPTA7Zm9yKGxldCByPTA7cjwyNTY7cisrKXtjb25zdCByPXQuZ2V0VWludDE2KCk+PjM7ZS5wdXNoKHIpO2E9TWF0aC5tYXgocixhKX1jb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXIucHVzaCh7Zmlyc3RDb2RlOnQuZ2V0VWludDE2KCksZW50cnlDb3VudDp0LmdldFVpbnQxNigpLGlkRGVsdGE6c2lnbmVkSW50MTYodC5nZXRCeXRlKCksdC5nZXRCeXRlKCkpLGlkUmFuZ2VQb3M6dC5wb3MrdC5nZXRVaW50MTYoKX0pO2ZvcihsZXQgYT0wO2E8MjU2O2ErKylpZigwPT09ZVthXSl7dC5wb3M9clswXS5pZFJhbmdlUG9zKzIqYTtnPXQuZ2V0VWludDE2KCk7ZC5wdXNoKHtjaGFyQ29kZTphLGdseXBoSWQ6Z30pfWVsc2V7Y29uc3Qgbj1yW2VbYV1dO2ZvcihmPTA7ZjxuLmVudHJ5Q291bnQ7ZisrKXtjb25zdCBlPShhPDw4KStmK24uZmlyc3RDb2RlO3QucG9zPW4uaWRSYW5nZVBvcysyKmY7Zz10LmdldFVpbnQxNigpOzAhPT1nJiYoZz0oZytuLmlkRGVsdGEpJTY1NTM2KTtkLnB1c2goe2NoYXJDb2RlOmUsZ2x5cGhJZDpnfSl9fX1lbHNlIGlmKDQ9PT1oKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpPj4xO3Quc2tpcCg2KTtjb25zdCBhPVtdO2xldCByO2ZvcihyPTA7cjxlO3IrKylhLnB1c2goe2VuZDp0LmdldFVpbnQxNigpfSk7dC5za2lwKDIpO2ZvcihyPTA7cjxlO3IrKylhW3JdLnN0YXJ0PXQuZ2V0VWludDE2KCk7Zm9yKHI9MDtyPGU7cisrKWFbcl0uZGVsdGE9dC5nZXRVaW50MTYoKTtsZXQgbixvPTA7Zm9yKHI9MDtyPGU7cisrKXtpPWFbcl07Y29uc3Qgcz10LmdldFVpbnQxNigpO2lmKHMpe249KHM+PjEpLShlLXIpO2kub2Zmc2V0SW5kZXg9bjtvPU1hdGgubWF4KG8sbitpLmVuZC1pLnN0YXJ0KzEpfWVsc2UgaS5vZmZzZXRJbmRleD0tMX1jb25zdCBjPVtdO2ZvcihmPTA7ZjxvO2YrKyljLnB1c2godC5nZXRVaW50MTYoKSk7Zm9yKHI9MDtyPGU7cisrKXtpPWFbcl07cz1pLnN0YXJ0O2NvbnN0IGU9aS5lbmQsdD1pLmRlbHRhO249aS5vZmZzZXRJbmRleDtmb3IoZj1zO2Y8PWU7ZisrKWlmKDY1NTM1IT09Zil7Zz1uPDA/ZjpjW24rZi1zXTtnPWcrdCY2NTUzNTtkLnB1c2goe2NoYXJDb2RlOmYsZ2x5cGhJZDpnfSl9fX1lbHNlIGlmKDY9PT1oKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpLGE9dC5nZXRVaW50MTYoKTtmb3IoZj0wO2Y8YTtmKyspe2c9dC5nZXRVaW50MTYoKTtjb25zdCBhPWUrZjtkLnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpnfSl9fWVsc2V7aWYoMTIhPT1oKXsoMCxyLndhcm4pKCJjbWFwIHRhYmxlIGhhcyB1bnN1cHBvcnRlZCBmb3JtYXQ6ICIraCk7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fXt0LnNraXAoMTApO2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MDtmb3IoZj0wO2Y8ZTtmKyspe2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MCxhPXQuZ2V0SW50MzIoKT4+PjA7bGV0IHI9dC5nZXRJbnQzMigpPj4+MDtmb3IobGV0IHQ9ZTt0PD1hO3QrKylkLnB1c2goe2NoYXJDb2RlOnQsZ2x5cGhJZDpyKyt9KX19fWQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jaGFyQ29kZS10LmNoYXJDb2RlfSkpO2ZvcihsZXQgZT0xO2U8ZC5sZW5ndGg7ZSsrKWlmKGRbZS0xXS5jaGFyQ29kZT09PWRbZV0uY2hhckNvZGUpe2Quc3BsaWNlKGUsMSk7ZS0tfXJldHVybntwbGF0Zm9ybUlkOmMucGxhdGZvcm1JZCxlbmNvZGluZ0lkOmMuZW5jb2RpbmdJZCxtYXBwaW5nczpkLGhhc1Nob3J0Q21hcDp1fX0oZi5jbWFwLHQsdGhpcy5pc1N5bWJvbGljRm9udCxhLmhhc0VuY29kaW5nKSxuPWUucGxhdGZvcm1JZCxzPWUuZW5jb2RpbmdJZCxsPWUubWFwcGluZ3M7bGV0IHU9W10sZD0hMTshYS5oYXNFbmNvZGluZ3x8Ik1hY1JvbWFuRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lJiYiV2luQW5zaUVuY29kaW5nIiE9PWEuYmFzZUVuY29kaW5nTmFtZXx8KHU9KDAsYy5nZXRFbmNvZGluZykoYS5iYXNlRW5jb2RpbmdOYW1lKSk7aWYoYS5oYXNFbmNvZGluZyYmIXRoaXMuaXNTeW1ib2xpY0ZvbnQmJigzPT09biYmMT09PXN8fDE9PT1uJiYwPT09cykpe2NvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IHI7cj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06dS5sZW5ndGgmJiIiIT09dVt0XT91W3RdOmMuU3RhbmRhcmRFbmNvZGluZ1t0XTtpZighciljb250aW51ZTtjb25zdCBvPSgwLGkucmVjb3ZlckdseXBoTmFtZSkocixlKTtsZXQgZDszPT09biYmMT09PXM/ZD1lW29dOjE9PT1uJiYwPT09cyYmKGQ9Yy5NYWNSb21hbkVuY29kaW5nLmluZGV4T2YobykpO2lmKHZvaWQgMD09PWQpe2lmKCFhLmdseXBoTmFtZXMmJmEuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJiEodGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwKSl7Y29uc3QgZT10aGlzLnRvVW5pY29kZS5nZXQodCk7ZSYmKGQ9ZS5jb2RlUG9pbnRBdCgwKSl9aWYodm9pZCAwPT09ZCljb250aW51ZX1mb3IoY29uc3QgZSBvZiBsKWlmKGUuY2hhckNvZGU9PT1kKXtOW3RdPWUuZ2x5cGhJZDticmVha319fWVsc2UgaWYoMD09PW4pe2Zvcihjb25zdCBlIG9mIGwpTltlLmNoYXJDb2RlXT1lLmdseXBoSWQ7ZD0hMH1lbHNlIGZvcihjb25zdCBlIG9mIGwpe2xldCB0PWUuY2hhckNvZGU7Mz09PW4mJnQ+PTYxNDQwJiZ0PD02MTY5NSYmKHQmPTI1NSk7Tlt0XT1lLmdseXBoSWR9aWYoYS5nbHlwaE5hbWVzJiYodS5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFkJiZ2b2lkIDAhPT1OW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dVtlXTtpZighdCljb250aW51ZTtjb25zdCByPWEuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO3I+MCYmaGFzR2x5cGgocikmJihOW2VdPXIpfX0wPT09Ti5sZW5ndGgmJihOWzBdPTApO2xldCBSPXYtMTtrfHwoUj0wKTtpZighYS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKE4saGFzR2x5cGgsUix0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtmLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLHYpfTtmWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgYT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3Qgcj10LmdldFVpbnQxNigpO2lmKGE8NCYmNzY4JnIpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KGZbIk9TLzIiXSx0KXx8KGZbIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGEsZS5jaGFyQ29kZVRvR2x5cGhJZCxEKX0pfWlmKCFTKXRyeXt3PW5ldyB5LlN0cmVhbShmWyJDRkYgIl0uZGF0YSk7Yj1uZXcgbi5DRkZQYXJzZXIodyxhLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5wYXJzZSgpO2IuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IGU9bmV3IG4uQ0ZGQ29tcGlsZXIoYik7ZlsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7KDAsci53YXJuKSgiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2EubG9hZGVkTmFtZSl9aWYoZi5uYW1lKXtjb25zdFt0LHJdPXJlYWROYW1lVGFibGUoZi5uYW1lKTtmLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2EuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsYSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtpZighdClyZXR1cm47aWYoMD09PWEubGVuZ3RoKXJldHVybjtpZihlLmRlZmF1bHRFbmNvZGluZz09PWMuV2luQW5zaUVuY29kaW5nKXJldHVybjtmb3IoY29uc3QgZSBvZiBhKWlmKCFpc1dpbk5hbWVSZWNvcmQoZSkpcmV0dXJuO2NvbnN0IHI9Yy5XaW5BbnNpRW5jb2Rpbmcsbj1bXSxpPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYoIiI9PT10KWNvbnRpbnVlO2NvbnN0IGE9aVt0XTt2b2lkIDAhPT1hJiYobltlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1uLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChuKX0oYSx0aGlzLmlzU3ltYm9saWNGb250LHIpfWVsc2UgZi5uYW1lPXt0YWc6Im5hbWUiLGRhdGE6Y3JlYXRlTmFtZVRhYmxlKHRoaXMubmFtZSl9O2NvbnN0IEw9bmV3IG0uT3BlblR5cGVGaWxlQnVpbGRlcihkLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIGYpTC5hZGRUYWJsZShlLGZbZV0uZGF0YSk7cmV0dXJuIEwudG9BcnJheSgpfWNvbnZlcnQoZSx0LGEpe2EuZml4ZWRQaXRjaD0hMTthLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgbiBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoZS5iYXNlRW5jb2RpbmdOYW1lfHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW25dKSljb250aW51ZTtjb25zdCBpPXRbbl0sbz0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoaSxyKTstMSE9PW8mJihhW25dPVN0cmluZy5mcm9tQ2hhckNvZGUobykpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtsZXQgbj0xO3QgaW5zdGFuY2VvZiB1LkNGRkZvbnQmJihuPXQubnVtR2x5cGhzLTEpO2NvbnN0IGw9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGQ9bnVsbCxmPWwsZz1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtkPWFkanVzdE1hcHBpbmcobCx0Lmhhc0dseXBoSWQuYmluZCh0KSxuLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZC50b0ZvbnRDaGFyO2Y9ZC5jaGFyQ29kZVRvR2x5cGhJZDtnPWQudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgcD10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCByIGluIGUpdD09PWVbcl0mJihhfHw9W10pLnB1c2goMHxyKTtyZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gZC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYj10LnNlYWNzO2lmKGQmJmkuU0VBQ19BTkFMWVNJU19FTkFCTEVEJiZiPy5sZW5ndGgpe2NvbnN0IGU9YS5mb250TWF0cml4fHxyLkZPTlRfSURFTlRJVFlfTUFUUklYLG49dC5nZXRDaGFyc2V0KCksaT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgdCBpbiBiKXt0fD0wO2NvbnN0IGE9Ylt0XSxyPWMuU3RhbmRhcmRFbmNvZGluZ1thWzJdXSxzPWMuU3RhbmRhcmRFbmNvZGluZ1thWzNdXSxvPW4uaW5kZXhPZihyKSxoPW4uaW5kZXhPZihzKTtpZihvPDB8fGg8MCljb250aW51ZTtjb25zdCB1PXt4OmFbMF0qZVswXSthWzFdKmVbMl0rZVs0XSx5OmFbMF0qZVsxXSthWzFdKmVbM10rZVs1XX0sZj1nZXRDaGFyQ29kZXMobCx0KTtpZihmKWZvcihjb25zdCBlIG9mIGYpe2NvbnN0IHQ9ZC5jaGFyQ29kZVRvR2x5cGhJZCxhPWNyZWF0ZUNoYXJDb2RlKHQsbykscj1jcmVhdGVDaGFyQ29kZSh0LGgpO2lbZV09e2Jhc2VGb250Q2hhckNvZGU6YSxhY2NlbnRGb250Q2hhckNvZGU6cixhY2NlbnRPZmZzZXQ6dX19fWEuc2VhY01hcD1pfWNvbnN0IHk9MS8oYS5mb250TWF0cml4fHxyLkZPTlRfSURFTlRJVFlfTUFUUklYKVswXSx3PW5ldyBtLk9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTt3LmFkZFRhYmxlKCJDRkYgIix0LmRhdGEpO3cuYWRkVGFibGUoIk9TLzIiLGNyZWF0ZU9TMlRhYmxlKGEsZikpO3cuYWRkVGFibGUoImNtYXAiLGNyZWF0ZUNtYXBUYWJsZShmLGcscCkpO3cuYWRkVGFibGUoImhlYWQiLCJcMAFcMFwwXDBcMBBcMFwwXDBcMFwwXw88w7VcMFwwIitzYWZlU3RyaW5nMTYoeSkrIlwwXDBcMFwwwp5cdn4nXDBcMFwwXDDCnlx2fidcMFwwIitzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiD8O/IitzYWZlU3RyaW5nMTYoYS5hc2NlbnQpK3N0cmluZzE2KGEuaXRhbGljQW5nbGU/MjowKSsiXDARXDBcMFwwXDBcMFwwIik7dy5hZGRUYWJsZSgiaGhlYSIsIlwwAVwwXDAiK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc2FmZVN0cmluZzE2KGEuZGVzY2VudCkrIlwwXDDDv8O/XDBcMFwwXDBcMFwwIitzYWZlU3RyaW5nMTYoYS5jYXBIZWlnaHQpK3NhZmVTdHJpbmcxNihNYXRoLnRhbihhLml0YWxpY0FuZ2xlKSphLnhIZWlnaHQpKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KHApKTt3LmFkZFRhYmxlKCJobXR4IixmdW5jdGlvbiBmb250RmllbGRzSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxhPXQuY2ZmP3QuY2ZmLndpZHRoczpudWxsO2xldCByPSJcMFwwXDBcMCI7Zm9yKGxldCB0PTEsbj1wO3Q8bjt0Kyspe2xldCBuPTA7aWYoZSl7Y29uc3QgYT1lW3QtMV07bj0id2lkdGgiaW4gYT9hLndpZHRoOjB9ZWxzZSBhJiYobj1NYXRoLmNlaWwoYVt0XXx8MCkpO3IrPXN0cmluZzE2KG4pK3N0cmluZzE2KDApfXJldHVybiByfSgpKTt3LmFkZFRhYmxlKCJtYXhwIiwiXDBcMFBcMCIrc3RyaW5nMTYocCkpO3cuYWRkVGFibGUoIm5hbWUiLGNyZWF0ZU5hbWVUYWJsZShlKSk7dy5hZGRUYWJsZSgicG9zdCIsY3JlYXRlUG9zdFRhYmxlKGEpKTtyZXR1cm4gdy50b0FycmF5KCl9Z2V0IHNwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGEgb2YgZSl7aWYoYSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1thXTticmVha31jb25zdCBlPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKVthXTtsZXQgcj0wO2lmKHRoaXMuY29tcG9zaXRlJiZ0aGlzLmNNYXAuY29udGFpbnMoZSkpe3I9dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIHImJihyPWNvbnZlcnRDaWRTdHJpbmcoZSxyKSl9IXImJnRoaXMudG9Vbmljb2RlJiYocj10aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpKTtyPD0wJiYocj1lKTt0PXRoaXMud2lkdGhzW3JdO2lmKHQpYnJlYWt9cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInNwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSl7bGV0IHQsYSxuLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxvPXRoaXMuX2dseXBoQ2FjaGVbZV07aWYobz8uaXNTcGFjZT09PWkpcmV0dXJuIG87bGV0IGM9ZTtpZih0aGlzLmNNYXA/LmNvbnRhaW5zKGUpKXtjPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBjJiYoYz1jb252ZXJ0Q2lkU3RyaW5nKGUsYykpfWE9dGhpcy53aWR0aHNbY107Im51bWJlciIhPXR5cGVvZiBhJiYoYT10aGlzLmRlZmF1bHRXaWR0aCk7Y29uc3QgbD10aGlzLnZtZXRyaWNzPy5bY107bGV0IGg9dGhpcy50b1VuaWNvZGUuZ2V0KGUpfHxlOyJudW1iZXIiPT10eXBlb2YgaCYmKGg9U3RyaW5nLmZyb21DaGFyQ29kZShoKSk7bGV0IHU9dm9pZCAwIT09dGhpcy50b0ZvbnRDaGFyW2VdO3Q9dGhpcy50b0ZvbnRDaGFyW2VdfHxlO2lmKHRoaXMubWlzc2luZ0ZpbGUpe2NvbnN0IGE9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbZV07Ii5ub3RkZWYiIT09YSYmIiIhPT1hfHwiVHlwZTEiIT09dGhpcy50eXBlfHwodD0zMik7dD0oMCxzLm1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKSh0KX10aGlzLmlzVHlwZTNGb250JiYobj10KTtsZXQgZD1udWxsO2lmKHRoaXMuc2VhY01hcD8uW2VdKXt1PSEwO2NvbnN0IGE9dGhpcy5zZWFjTWFwW2VdO3Q9YS5iYXNlRm9udENoYXJDb2RlO2Q9e2ZvbnRDaGFyOlN0cmluZy5mcm9tQ29kZVBvaW50KGEuYWNjZW50Rm9udENoYXJDb2RlKSxvZmZzZXQ6YS5hY2NlbnRPZmZzZXR9fWxldCBmPSIiOyJudW1iZXIiPT10eXBlb2YgdCYmKHQ8PTExMTQxMTE/Zj1TdHJpbmcuZnJvbUNvZGVQb2ludCh0KTooMCxyLndhcm4pKGBjaGFyVG9HbHlwaCAtIGludmFsaWQgZm9udENoYXJDb2RlOiAke3R9YCkpO289bmV3IEdseXBoKGUsZixoLGQsYSxsLG4saSx1KTtyZXR1cm4gdGhpcy5fZ2x5cGhDYWNoZVtlXT1vfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy5fY2hhcnNDYWNoZVtlXTtpZih0KXJldHVybiB0O3Q9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscj1lLmxlbmd0aDtsZXQgbj0wO2Zvcig7bjxyOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLG4sYSk7Y29uc3R7Y2hhcmNvZGU6cixsZW5ndGg6aX09YTtuKz1pO2NvbnN0IHM9dGhpcy5fY2hhclRvR2x5cGgociwxPT09aSYmMzI9PT1lLmNoYXJDb2RlQXQobi0xKSk7dC5wdXNoKHMpfX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoYSksbj10aGlzLl9jaGFyVG9HbHlwaChyLDMyPT09cik7dC5wdXNoKG4pfXJldHVybiB0aGlzLl9jaGFyc0NhY2hlW2VdPXR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByPTA7Zm9yKDtyPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLHIsYSk7Y29uc3Qgbj1hLmxlbmd0aDt0LnB1c2goW3IscituXSk7cis9bn19ZWxzZSBmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2EpdC5wdXNoKFthLGErMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fZ2x5cGhDYWNoZSl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10sYT1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLHI9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwP2U9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSk6ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihTdHJpbmcuZnJvbUNvZGVQb2ludChlKSk7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWUuY29kZVBvaW50QXQobik7aT41NTI5NSYmKGk8NTczNDR8fGk+NjU1MzMpJiZuKys7aWYodGhpcy50b1VuaWNvZGUpe2NvbnN0IGU9cihpKTtpZigtMSE9PWUpe2lmKGhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGEuam9pbigiIikpO2EubGVuZ3RoPTB9Zm9yKGxldCB0PSh0aGlzLmNNYXA/dGhpcy5jTWFwLmdldENoYXJDb2RlTGVuZ3RoKGUpOjEpLTE7dD49MDt0LS0pYS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCp0JjI1NSkpO2NvbnRpbnVlfX1pZighaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1hLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQoaSkpfXQucHVzaChhLmpvaW4oIiIpKTtyZXR1cm4gdH19O3QuRXJyb3JGb250PWNsYXNzIEVycm9yRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWU7dGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiO3RoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YSgpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRlRvcERpY3Q9dC5DRkZTdHJpbmdzPXQuQ0ZGU3RhbmRhcmRTdHJpbmdzPXQuQ0ZGUHJpdmF0ZURpY3Q9dC5DRkZQYXJzZXI9dC5DRkZJbmRleD10LkNGRkhlYWRlcj10LkNGRkZEU2VsZWN0PXQuQ0ZGQ29tcGlsZXI9dC5DRkZDaGFyc2V0PXQuQ0ZGPXZvaWQgMDthKDEzOSk7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO3ZhciByPWEoMTQ0KSxuPWEoMTg2KSxpPWEoMTg3KTtjb25zdCBzPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCIsIjAwMS4wMDAiLCIwMDEuMDAxIiwiMDAxLjAwMiIsIjAwMS4wMDMiLCJCbGFjayIsIkJvbGQiLCJCb29rIiwiTGlnaHQiLCJNZWRpdW0iLCJSZWd1bGFyIiwiUm9tYW4iLCJTZW1pYm9sZCJdO3QuQ0ZGU3RhbmRhcmRTdHJpbmdzPXM7Y29uc3Qgbz0zOTEsYz1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoicmV0dXJuIixtaW46MCx1bmRlZlN0YWNrOiEwfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxsPVtudWxsLG51bGwsbnVsbCx7aWQ6ImFuZCIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJvciIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJub3QiLG1pbjoxLHN0YWNrRGVsdGE6MH0sbnVsbCxudWxsLG51bGwse2lkOiJhYnMiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJhZGQiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0rZVt0LTFdfX0se2lkOiJzdWIiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0tZVt0LTFdfX0se2lkOiJkaXYiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0vZVt0LTFdfX0sbnVsbCx7aWQ6Im5lZyIsbWluOjEsc3RhY2tEZWx0YTowLHN0YWNrRm4oZSx0KXtlW3QtMV09LWVbdC0xXX19LHtpZDoiZXEiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LG51bGwsbnVsbCx7aWQ6ImRyb3AiLG1pbjoxLHN0YWNrRGVsdGE6LTF9LG51bGwse2lkOiJwdXQiLG1pbjoyLHN0YWNrRGVsdGE6LTJ9LHtpZDoiZ2V0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiaWZlbHNlIixtaW46NCxzdGFja0RlbHRhOi0zfSx7aWQ6InJhbmRvbSIsbWluOjAsc3RhY2tEZWx0YToxfSx7aWQ6Im11bCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXSplW3QtMV19fSxudWxsLHtpZDoic3FydCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImR1cCIsbWluOjEsc3RhY2tEZWx0YToxfSx7aWQ6ImV4Y2giLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJpbmRleCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6InJvbGwiLG1pbjozLHN0YWNrRGVsdGE6LTJ9LG51bGwsbnVsbCxudWxsLHtpZDoiaGZsZXgiLG1pbjo3LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleCIsbWluOjEzLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGZsZXgxIixtaW46OSxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgxIixtaW46MTEscmVzZXRTdGFjazohMH1dO3QuQ0ZGUGFyc2VyPWNsYXNzIENGRlBhcnNlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5ieXRlcz1lLmdldEJ5dGVzKCk7dGhpcy5wcm9wZXJ0aWVzPXQ7dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhYX1wYXJzZSgpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzLHQ9bmV3IENGRjt0aGlzLmNmZj10O2NvbnN0IGE9dGhpcy5wYXJzZUhlYWRlcigpLHI9dGhpcy5wYXJzZUluZGV4KGEuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChyLmVuZFBvcyksaT10aGlzLnBhcnNlSW5kZXgobi5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KGkuZW5kUG9zKSxvPXRoaXMucGFyc2VEaWN0KG4ub2JqLmdldCgwKSksYz10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCxvLHQuc3RyaW5ncyk7dC5oZWFkZXI9YS5vYmo7dC5uYW1lcz10aGlzLnBhcnNlTmFtZUluZGV4KHIub2JqKTt0LnN0cmluZ3M9dGhpcy5wYXJzZVN0cmluZ0luZGV4KGkub2JqKTt0LnRvcERpY3Q9Yzt0Lmdsb2JhbFN1YnJJbmRleD1zLm9iajt0aGlzLnBhcnNlUHJpdmF0ZURpY3QodC50b3BEaWN0KTt0LmlzQ0lERm9udD1jLmhhc05hbWUoIlJPUyIpO2NvbnN0IGw9Yy5nZXRCeU5hbWUoIkNoYXJTdHJpbmdzIiksaD10aGlzLnBhcnNlSW5kZXgobCkub2JqLHU9Yy5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTt1JiYoZS5mb250TWF0cml4PXUpO2NvbnN0IGQ9Yy5nZXRCeU5hbWUoIkZvbnRCQm94Iik7aWYoZCl7ZS5hc2NlbnQ9TWF0aC5tYXgoZFszXSxkWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oZFsxXSxkWzNdKTtlLmFzY2VudFNjYWxlZD0hMH1sZXQgZixnO2lmKHQuaXNDSURGb250KXtjb25zdCBlPXRoaXMucGFyc2VJbmRleChjLmdldEJ5TmFtZSgiRkRBcnJheSIpKS5vYmo7Zm9yKGxldCBhPTAscj1lLmNvdW50O2E8cjsrK2Epe2NvbnN0IHI9ZS5nZXQoYSksbj10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCx0aGlzLnBhcnNlRGljdChyKSx0LnN0cmluZ3MpO3RoaXMucGFyc2VQcml2YXRlRGljdChuKTt0LmZkQXJyYXkucHVzaChuKX1nPW51bGw7Zj10aGlzLnBhcnNlQ2hhcnNldHMoYy5nZXRCeU5hbWUoImNoYXJzZXQiKSxoLmNvdW50LHQuc3RyaW5ncywhMCk7dC5mZFNlbGVjdD10aGlzLnBhcnNlRkRTZWxlY3QoYy5nZXRCeU5hbWUoIkZEU2VsZWN0IiksaC5jb3VudCl9ZWxzZXtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCExKTtnPXRoaXMucGFyc2VFbmNvZGluZyhjLmdldEJ5TmFtZSgiRW5jb2RpbmciKSxlLHQuc3RyaW5ncyxmLmNoYXJzZXQpfXQuY2hhcnNldD1mO3QuZW5jb2Rpbmc9Zztjb25zdCBwPXRoaXMucGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6aCxsb2NhbFN1YnJJbmRleDpjLnByaXZhdGVEaWN0LnN1YnJzSW5kZXgsZ2xvYmFsU3VickluZGV4OnMub2JqLGZkU2VsZWN0OnQuZmRTZWxlY3QsZmRBcnJheTp0LmZkQXJyYXkscHJpdmF0ZURpY3Q6Yy5wcml2YXRlRGljdH0pO3QuY2hhclN0cmluZ3M9cC5jaGFyU3RyaW5nczt0LnNlYWNzPXAuc2VhY3M7dC53aWR0aHM9cC53aWR0aHM7cmV0dXJuIHR9cGFyc2VIZWFkZXIoKXtsZXQgZT10aGlzLmJ5dGVzO2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8dCYmMSE9PWVbYV07KSsrYTtpZihhPj10KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIENGRiBoZWFkZXIiKTtpZigwIT09YSl7KDAsci5pbmZvKSgiY2ZmIGRhdGEgaXMgc2hpZnRlZCIpO2U9ZS5zdWJhcnJheShhKTt0aGlzLmJ5dGVzPWV9Y29uc3Qgbj1lWzBdLGk9ZVsxXSxzPWVbMl0sbz1lWzNdO3JldHVybntvYmo6bmV3IENGRkhlYWRlcihuLGkscyxvKSxlbmRQb3M6c319cGFyc2VEaWN0KGUpe2xldCB0PTA7ZnVuY3Rpb24gcGFyc2VPcGVyYW5kKCl7bGV0IGE9ZVt0KytdO2lmKDMwPT09YSlyZXR1cm4gZnVuY3Rpb24gcGFyc2VGbG9hdE9wZXJhbmQoKXtsZXQgYT0iIjtjb25zdCByPTE1LG49WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiLiIsIkUiLCJFLSIsbnVsbCwiLSJdLGk9ZS5sZW5ndGg7Zm9yKDt0PGk7KXtjb25zdCBpPWVbdCsrXSxzPWk+PjQsbz0xNSZpO2lmKHM9PT1yKWJyZWFrO2ErPW5bc107aWYobz09PXIpYnJlYWs7YSs9bltvXX1yZXR1cm4gcGFyc2VGbG9hdChhKX0oKTtpZigyOD09PWEpe2E9ZVt0KytdO2E9KGE8PDI0fGVbdCsrXTw8MTYpPj4xNjtyZXR1cm4gYX1pZigyOT09PWEpe2E9ZVt0KytdO2E9YTw8OHxlW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO3JldHVybiBhfWlmKGE+PTMyJiZhPD0yNDYpcmV0dXJuIGEtMTM5O2lmKGE+PTI0NyYmYTw9MjUwKXJldHVybiAyNTYqKGEtMjQ3KStlW3QrK10rMTA4O2lmKGE+PTI1MSYmYTw9MjU0KXJldHVybi0yNTYqKGEtMjUxKS1lW3QrK10tMTA4OygwLHIud2FybikoJ0NGRlBhcnNlcl9wYXJzZURpY3Q6ICInK2ErJyIgaXMgYSByZXNlcnZlZCBjb21tYW5kLicpO3JldHVybiBOYU59bGV0IGE9W107Y29uc3Qgbj1bXTt0PTA7Y29uc3QgaT1lLmxlbmd0aDtmb3IoO3Q8aTspe2xldCByPWVbdF07aWYocjw9MjEpezEyPT09ciYmKHI9cjw8OHxlWysrdF0pO24ucHVzaChbcixhXSk7YT1bXTsrK3R9ZWxzZSBhLnB1c2gocGFyc2VPcGVyYW5kKCkpfXJldHVybiBufXBhcnNlSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXgsYT10aGlzLmJ5dGVzLHI9YVtlKytdPDw4fGFbZSsrXSxuPVtdO2xldCBpLHMsbz1lO2lmKDAhPT1yKXtjb25zdCB0PWFbZSsrXSxjPWUrKHIrMSkqdC0xO2ZvcihpPTAscz1yKzE7aTxzOysraSl7bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7KytuKXtyPDw9ODtyKz1hW2UrK119bi5wdXNoKGMrcil9bz1uW3JdfWZvcihpPTAscz1uLmxlbmd0aC0xO2k8czsrK2kpe2NvbnN0IGU9bltpXSxyPW5baSsxXTt0LmFkZChhLnN1YmFycmF5KGUscikpfXJldHVybntvYmo6dCxlbmRQb3M6b319cGFyc2VOYW1lSW5kZXgoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxuPWUuY291bnQ7YTxuOysrYSl7Y29uc3Qgbj1lLmdldChhKTt0LnB1c2goKDAsci5ieXRlc1RvU3RyaW5nKShuKSl9cmV0dXJuIHR9cGFyc2VTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZTdHJpbmdzO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QuYWRkKCgwLHIuYnl0ZXNUb1N0cmluZykobikpfXJldHVybiB0fWNyZWF0ZURpY3QoZSx0LGEpe2NvbnN0IHI9bmV3IGUoYSk7Zm9yKGNvbnN0W2UsYV1vZiB0KXIuc2V0QnlLZXkoZSxhKTtyZXR1cm4gcn1wYXJzZUNoYXJTdHJpbmcoZSx0LGEsbil7aWYoIXR8fGUuY2FsbERlcHRoPjEwKXJldHVybiExO2xldCBpPWUuc3RhY2tTaXplO2NvbnN0IHM9ZS5zdGFjaztsZXQgbz10Lmxlbmd0aDtmb3IobGV0IGg9MDtoPG87KXtjb25zdCB1PXRbaCsrXTtsZXQgZD1udWxsO2lmKDEyPT09dSl7Y29uc3QgZT10W2grK107aWYoMD09PWUpe3RbaC0yXT0xMzk7dFtoLTFdPTIyO2k9MH1lbHNlIGQ9bFtlXX1lbHNlIGlmKDI4PT09dSl7c1tpXT0odFtoXTw8MjR8dFtoKzFdPDwxNik+PjE2O2grPTI7aSsrfWVsc2UgaWYoMTQ9PT11KXtpZihpPj00KXtpLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPXMuc2xpY2UoaSxpKzQpO3JldHVybiExfX1kPWNbdV19ZWxzZSBpZih1Pj0zMiYmdTw9MjQ2KXtzW2ldPXUtMTM5O2krK31lbHNlIGlmKHU+PTI0NyYmdTw9MjU0KXtzW2ldPXU8MjUxPyh1LTI0Nzw8OCkrdFtoXSsxMDg6LSh1LTI1MTw8OCktdFtoXS0xMDg7aCsrO2krK31lbHNlIGlmKDI1NT09PXUpe3NbaV09KHRbaF08PDI0fHRbaCsxXTw8MTZ8dFtoKzJdPDw4fHRbaCszXSkvNjU1MzY7aCs9NDtpKyt9ZWxzZSBpZigxOT09PXV8fDIwPT09dSl7ZS5oaW50cys9aT4+MTtpZigwPT09ZS5oaW50cyl7dC5jb3B5V2l0aGluKGgtMSxoLC0xKTtoLT0xO28tPTE7Y29udGludWV9aCs9ZS5oaW50cys3Pj4zO2klPTI7ZD1jW3VdfWVsc2V7aWYoMTA9PT11fHwyOT09PXUpe2NvbnN0IHQ9MTA9PT11P2E6bjtpZighdCl7ZD1jW3VdOygwLHIud2FybikoIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitkLmlkKTtyZXR1cm4hMX1sZXQgbz0zMjc2ODt0LmNvdW50PDEyNDA/bz0xMDc6dC5jb3VudDwzMzkwMCYmKG89MTEzMSk7Y29uc3QgbD1zWy0taV0rbztpZihsPDB8fGw+PXQuY291bnR8fGlzTmFOKGwpKXtkPWNbdV07KDAsci53YXJuKSgiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrZC5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9aTtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KGwpLGEsbikpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtpPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09dSl7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1pZigwPT09dSYmaD09PXQubGVuZ3RoKXt0W2gtMV09MTQ7ZD1jWzE0XX1lbHNle2lmKDk9PT11KXt0LmNvcHlXaXRoaW4oaC0xLGgsLTEpO2gtPTE7by09MTtjb250aW51ZX1kPWNbdV19fWlmKGQpe2lmKGQuc3RlbSl7ZS5oaW50cys9aT4+MTtpZigzPT09dXx8MjM9PT11KWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09dXx8MTg9PT11KSl7KDAsci53YXJuKSgiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtoLTFdPTE9PT11PzM6MjN9fWlmKCJtaW4iaW4gZCYmIWUudW5kZWZTdGFjayYmaTxkLm1pbil7KDAsci53YXJuKSgiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2QuaWQrIjsgYWN0dWFsOiAiK2krIiwgZXhwZWN0ZWQ6ICIrZC5taW4pO2lmKDA9PT1pKXt0W2gtMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmQuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7aS09ZC5taW47aT49MiYmZC5zdGVtP2klPTI6aT4xJiYoMCxyLndhcm4pKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7aT4wJiYoZS53aWR0aD1zW2ktMV0pfWlmKCJzdGFja0RlbHRhImluIGQpeyJzdGFja0ZuImluIGQmJmQuc3RhY2tGbihzLGkpO2krPWQuc3RhY2tEZWx0YX1lbHNlIGlmKGQuc3RhY2tDbGVhcmluZylpPTA7ZWxzZSBpZihkLnJlc2V0U3RhY2spe2k9MDtlLnVuZGVmU3RhY2s9ITF9ZWxzZSBpZihkLnVuZGVmU3RhY2spe2k9MDtlLnVuZGVmU3RhY2s9ITA7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITF9fX1vPHQubGVuZ3RoJiZ0LmZpbGwoMTQsbyk7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKGUpe2xldHtjaGFyU3RyaW5nczp0LGxvY2FsU3VickluZGV4OmEsZ2xvYmFsU3VickluZGV4Om4sZmRTZWxlY3Q6aSxmZEFycmF5OnMscHJpdmF0ZURpY3Q6b309ZTtjb25zdCBjPVtdLGw9W10saD10LmNvdW50O2ZvcihsZXQgZT0wO2U8aDtlKyspe2NvbnN0IGg9dC5nZXQoZSksdT17Y2FsbERlcHRoOjAsc3RhY2tTaXplOjAsc3RhY2s6W10sdW5kZWZTdGFjazohMCxoaW50czowLGZpcnN0U3RhY2tDbGVhcmluZzohMCxzZWFjOm51bGwsd2lkdGg6bnVsbCxoYXNWU3RlbXM6ITF9O2xldCBkPSEwLGY9bnVsbCxnPW87aWYoaSYmcy5sZW5ndGgpe2NvbnN0IHQ9aS5nZXRGREluZGV4KGUpO2lmKC0xPT09dCl7KDAsci53YXJuKSgiR2x5cGggaW5kZXggaXMgbm90IGluIGZkIHNlbGVjdC4iKTtkPSExfWlmKHQ+PXMubGVuZ3RoKXsoMCxyLndhcm4pKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKTtkPSExfWlmKGQpe2c9c1t0XS5wcml2YXRlRGljdDtmPWcuc3VicnNJbmRleH19ZWxzZSBhJiYoZj1hKTtkJiYoZD10aGlzLnBhcnNlQ2hhclN0cmluZyh1LGgsZixuKSk7aWYobnVsbCE9PXUud2lkdGgpe2NvbnN0IHQ9Zy5nZXRCeU5hbWUoIm5vbWluYWxXaWR0aFgiKTtsW2VdPXQrdS53aWR0aH1lbHNle2NvbnN0IHQ9Zy5nZXRCeU5hbWUoImRlZmF1bHRXaWR0aFgiKTtsW2VdPXR9bnVsbCE9PXUuc2VhYyYmKGNbZV09dS5zZWFjKTtkfHx0LnNldChlLG5ldyBVaW50OEFycmF5KFsxNF0pKX1yZXR1cm57Y2hhclN0cmluZ3M6dCxzZWFjczpjLHdpZHRoczpsfX1lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9dGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LFtdLGUuc3RyaW5ncyk7ZS5zZXRCeUtleSgxOCxbMCwwXSk7ZS5wcml2YXRlRGljdD10fXBhcnNlUHJpdmF0ZURpY3QoZSl7aWYoIWUuaGFzTmFtZSgiUHJpdmF0ZSIpKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHQ9ZS5nZXRCeU5hbWUoIlByaXZhdGUiKTtpZighQXJyYXkuaXNBcnJheSh0KXx8MiE9PXQubGVuZ3RoKXtlLnJlbW92ZUJ5TmFtZSgiUHJpdmF0ZSIpO3JldHVybn1jb25zdCBhPXRbMF0scj10WzFdO2lmKDA9PT1hfHxyPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBuPXIrYSxpPXRoaXMuYnl0ZXMuc3ViYXJyYXkocixuKSxzPXRoaXMucGFyc2VEaWN0KGkpLG89dGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LHMsZS5zdHJpbmdzKTtlLnByaXZhdGVEaWN0PW87MD09PW8uZ2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiKSYmby5zZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIsLjA2KTtpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGM9by5nZXRCeU5hbWUoIlN1YnJzIiksbD1yK2M7aWYoMD09PWN8fGw+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGg9dGhpcy5wYXJzZUluZGV4KGwpO28uc3VicnNJbmRleD1oLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLGkpe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxkLklTT19BRE9CRSxuLklTT0Fkb2JlQ2hhcnNldCk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJULG4uRXhwZXJ0Q2hhcnNldCk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJUX1NVQlNFVCxuLkV4cGVydFN1YnNldENoYXJzZXQpO2NvbnN0IHM9dGhpcy5ieXRlcyxvPWUsYz1zW2UrK10sbD1baT8wOiIubm90ZGVmIl07bGV0IGgsdSxmO3QtPTE7c3dpdGNoKGMpe2Nhc2UgMDpmb3IoZj0wO2Y8dDtmKyspe2g9c1tlKytdPDw4fHNbZSsrXTtsLnB1c2goaT9oOmEuZ2V0KGgpKX1icmVhaztjYXNlIDE6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTtmb3IoZj0wO2Y8PXU7ZisrKWwucHVzaChpP2grKzphLmdldChoKyspKX1icmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTw8OHxzW2UrK107Zm9yKGY9MDtmPD11O2YrKylsLnB1c2goaT9oKys6YS5nZXQoaCsrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGc9ZSxwPXMuc3ViYXJyYXkobyxnKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsYyxsLHApfXBhcnNlRW5jb2RpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89dGhpcy5ieXRlcztsZXQgYyxsLGgsdT0hMSxkPW51bGw7aWYoMD09PWV8fDE9PT1lKXt1PSEwO2M9ZTtjb25zdCB0PWU/aS5FeHBlcnRFbmNvZGluZzppLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGw9MCxoPW4ubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9dC5pbmRleE9mKG5bbF0pOy0xIT09ZSYmKHNbZV09bCl9fWVsc2V7Y29uc3QgdD1lO2M9b1tlKytdO3N3aXRjaCgxMjcmYyl7Y2FzZSAwOmNvbnN0IHQ9b1tlKytdO2ZvcihsPTE7bDw9dDtsKyspc1tvW2UrK11dPWw7YnJlYWs7Y2FzZSAxOmNvbnN0IGE9b1tlKytdO2xldCBuPTE7Zm9yKGw9MDtsPGE7bCsrKXtjb25zdCB0PW9bZSsrXSxhPW9bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09bisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2N9IGluIENGRmApfWNvbnN0IGk9ZTtpZigxMjgmYyl7b1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9b1tlKytdO2ZvcihsPTA7bDx0O2wrKyl7Y29uc3QgdD1vW2UrK10scj0ob1tlKytdPDw4KSsoMjU1Jm9bZSsrXSk7c1t0XT1uLmluZGV4T2YoYS5nZXQocikpfX0oKX1kPW8uc3ViYXJyYXkodCxpKX1jJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyh1LGMscyxkKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLG49YVtlKytdLGk9W107bGV0IHM7c3dpdGNoKG4pe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9YVtlKytdO2kucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbz1hW2UrK108PDh8YVtlKytdO2ZvcihzPTA7czxvOysrcyl7bGV0IHQ9YVtlKytdPDw4fGFbZSsrXTtpZigwPT09cyYmMCE9PXQpeygwLHIud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3Qgbj1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtmb3IobGV0IGU9dDtlPG87KytlKWkucHVzaChuKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke259Ii5gKX1pZihpLmxlbmd0aCE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QobixpKX19O2NsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19dC5DRkY9Q0ZGO2NsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX10LkNGRkhlYWRlcj1DRkZIZWFkZXI7Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9zW2VdOmUtbzw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1vXTpzWzBdfWdldFNJRChlKXtsZXQgdD1zLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrbzotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fXQuQ0ZGU3RyaW5ncz1DRkZTdHJpbmdzO2NsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19dC5DRkZJbmRleD1DRkZJbmRleDtjbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7KDAsci53YXJuKShgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgaD1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoaCkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19dC5DRkZUb3BEaWN0PUNGRlRvcERpY3Q7Y29uc3QgdT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHUpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Q0ZGUHJpdmF0ZURpY3Q7Y29uc3QgZD17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19dC5DRkZDaGFyc2V0PUNGRkNoYXJzZXQ7Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9Q0ZGRkRTZWxlY3Q7Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IG49YS5kYXRhLGk9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUraSxzPWErMSxvPWErMixjPWErMyxsPWErNDtpZigyOSE9PW5bYV18fDAhPT1uW3NdfHwwIT09bltvXXx8MCE9PW5bY118fDAhPT1uW2xdKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGg9dFtlXTtuW2FdPTI5O25bc109aD4+MjQmMjU1O25bb109aD4+MTYmMjU1O25bY109aD4+OCYyNTU7bltsXT0yNTUmaH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dHJ5e3RoaXMuZGF0YS5wdXNoKC4uLmUpfWNhdGNoe3RoaXMuZGF0YT10aGlzLmRhdGEuY29uY2F0KGUpfXRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGh9fSxhPXRoaXMuY29tcGlsZUhlYWRlcihlLmhlYWRlcik7dC5hZGQoYSk7Y29uc3Qgbj10aGlzLmNvbXBpbGVOYW1lSW5kZXgoZS5uYW1lcyk7dC5hZGQobik7aWYoZS5pc0NJREZvbnQmJmUudG9wRGljdC5oYXNOYW1lKCJGb250TWF0cml4Iikpe2NvbnN0IHQ9ZS50b3BEaWN0LmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2UudG9wRGljdC5yZW1vdmVCeU5hbWUoIkZvbnRNYXRyaXgiKTtmb3IoY29uc3QgYSBvZiBlLmZkQXJyYXkpe2xldCBlPXQuc2xpY2UoMCk7YS5oYXNOYW1lKCJGb250TWF0cml4IikmJihlPXIuVXRpbC50cmFuc2Zvcm0oZSxhLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpKSk7YS5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLGUpfX1jb25zdCBpPWUudG9wRGljdC5nZXRCeU5hbWUoIlhVSUQiKTtpPy5sZW5ndGg+MTYmJmUudG9wRGljdC5yZW1vdmVCeU5hbWUoIlhVSUQiKTtlLnRvcERpY3Quc2V0QnlOYW1lKCJjaGFyc2V0IiwwKTtsZXQgcz10aGlzLmNvbXBpbGVUb3BEaWN0cyhbZS50b3BEaWN0XSx0Lmxlbmd0aCxlLmlzQ0lERm9udCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IG89cy50cmFja2Vyc1swXSxjPXRoaXMuY29tcGlsZVN0cmluZ0luZGV4KGUuc3RyaW5ncy5zdHJpbmdzKTt0LmFkZChjKTtjb25zdCBsPXRoaXMuY29tcGlsZUluZGV4KGUuZ2xvYmFsU3VickluZGV4KTt0LmFkZChsKTtpZihlLmVuY29kaW5nJiZlLnRvcERpY3QuaGFzTmFtZSgiRW5jb2RpbmciKSlpZihlLmVuY29kaW5nLnByZWRlZmluZWQpby5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW2UuZW5jb2RpbmcuZm9ybWF0XSx0KTtlbHNle2NvbnN0IGE9dGhpcy5jb21waWxlRW5jb2RpbmcoZS5lbmNvZGluZyk7by5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW3QubGVuZ3RoXSx0KTt0LmFkZChhKX1jb25zdCBoPXRoaXMuY29tcGlsZUNoYXJzZXQoZS5jaGFyc2V0LGUuY2hhclN0cmluZ3MuY291bnQsZS5zdHJpbmdzLGUuaXNDSURGb250KTtvLnNldEVudHJ5TG9jYXRpb24oImNoYXJzZXQiLFt0Lmxlbmd0aF0sdCk7dC5hZGQoaCk7Y29uc3QgdT10aGlzLmNvbXBpbGVDaGFyU3RyaW5ncyhlLmNoYXJTdHJpbmdzKTtvLnNldEVudHJ5TG9jYXRpb24oIkNoYXJTdHJpbmdzIixbdC5sZW5ndGhdLHQpO3QuYWRkKHUpO2lmKGUuaXNDSURGb250KXtvLnNldEVudHJ5TG9jYXRpb24oIkZEU2VsZWN0IixbdC5sZW5ndGhdLHQpO2NvbnN0IGE9dGhpcy5jb21waWxlRkRTZWxlY3QoZS5mZFNlbGVjdCk7dC5hZGQoYSk7cz10aGlzLmNvbXBpbGVUb3BEaWN0cyhlLmZkQXJyYXksdC5sZW5ndGgsITApO28uc2V0RW50cnlMb2NhdGlvbigiRkRBcnJheSIsW3QubGVuZ3RoXSx0KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgcj1zLnRyYWNrZXJzO3RoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhlLmZkQXJyYXkscix0KX10aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2UudG9wRGljdF0sW29dLHQpO3QuYWRkKFswXSk7cmV0dXJuIHQuZGF0YX1lbmNvZGVOdW1iZXIoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSk/dGhpcy5lbmNvZGVJbnRlZ2VyKGUpOnRoaXMuZW5jb2RlRmxvYXQoZSl9c3RhdGljIGdldCBFbmNvZGVGbG9hdFJlZ0V4cCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBhPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoYSl7Y29uc3Qgcj1wYXJzZUZsb2F0KCIxZSIrKChhWzJdPythWzJdOjApK2FbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKnIpL3IpLnRvU3RyaW5nKCl9bGV0IHIsbixpPSIiO2ZvcihyPTAsbj10Lmxlbmd0aDtyPG47KytyKXtjb25zdCBlPXRbcl07aSs9ImUiPT09ZT8iLSI9PT10Wysrcl0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfWkrPTEmaS5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgcz1bMzBdO2ZvcihyPTAsbj1pLmxlbmd0aDtyPG47cis9MilzLnB1c2gocGFyc2VJbnQoaS5zdWJzdHJpbmcocixyKzIpLDE2KSk7cmV0dXJuIHN9ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGEubGVuZ3RoLDEyNyk7bGV0IG49bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWFbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7blt0XT1lfW49bi5qb2luKCIiKTsiIj09PW4mJihuPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoKDAsci5zdHJpbmdUb0J5dGVzKShuKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsYSl7Y29uc3Qgcj1bXTtsZXQgbj1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoYSl7aS5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7aS5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO2kucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO2kucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO2kucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixzPXRoaXMuY29tcGlsZURpY3QoaSxlKTtyLnB1c2goZSk7bi5hZGQocyk7ZS5vZmZzZXQodCl9bj10aGlzLmNvbXBpbGVJbmRleChuLHIpO3JldHVybnt0cmFja2VyczpyLG91dHB1dDpufX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxhKXtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTsrK24pe2NvbnN0IGk9ZVtuXSxzPWkucHJpdmF0ZURpY3Q7aWYoIXN8fCFpLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVGhlcmUgbXVzdCBiZSBhIHByaXZhdGUgZGljdGlvbmFyeS4iKTtjb25zdCBvPW5ldyBDRkZPZmZzZXRUcmFja2VyLGM9dGhpcy5jb21waWxlRGljdChzLG8pO2xldCBsPWEubGVuZ3RoO28ub2Zmc2V0KGwpO2MubGVuZ3RofHwobD0wKTt0W25dLnNldEVudHJ5TG9jYXRpb24oIlByaXZhdGUiLFtjLmxlbmd0aCxsXSxhKTthLmFkZChjKTtpZihzLnN1YnJzSW5kZXgmJnMuaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChzLnN1YnJzSW5kZXgpO28uc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtjLmxlbmd0aF0sYSk7YS5hZGQoZSl9fX1jb21waWxlRGljdChlLHQpe2NvbnN0IGE9W107Zm9yKGNvbnN0IG4gb2YgZS5vcmRlcil7aWYoIShuIGluIGUudmFsdWVzKSljb250aW51ZTtsZXQgaT1lLnZhbHVlc1tuXSxzPWUudHlwZXNbbl07QXJyYXkuaXNBcnJheShzKXx8KHM9W3NdKTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2lmKDAhPT1pLmxlbmd0aCl7Zm9yKGxldCBvPTAsYz1zLmxlbmd0aDtvPGM7KytvKXtjb25zdCBjPXNbb10sbD1pW29dO3N3aXRjaChjKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmEucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihsKSk7YnJlYWs7Y2FzZSJvZmZzZXQiOmNvbnN0IHM9ZS5rZXlUb05hbWVNYXBbbl07dC5pc1RyYWNraW5nKHMpfHx0LnRyYWNrKHMsYS5sZW5ndGgpO2EucHVzaCgyOSwwLDAsMCwwKTticmVhaztjYXNlImFycmF5IjpjYXNlImRlbHRhIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2ZvcihsZXQgZT0xLHQ9aS5sZW5ndGg7ZTx0OysrZSlhLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoaVtlXSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZGF0YSB0eXBlIG9mICR7Y31gKX19YS5wdXNoKC4uLmUub3Bjb2Rlc1tuXSl9fXJldHVybiBhfWNvbXBpbGVTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgYSBvZiBlKXQuYWRkKCgwLHIuc3RyaW5nVG9CeXRlcykoYSkpO3JldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsbil7bGV0IGk7Y29uc3Qgcz10LTE7aWYobilpPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqcyk7aVswXT0wO2xldCB0PTA7Y29uc3Qgbj1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8aS5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PG4pe2NvbnN0IG49ZS5jaGFyc2V0W3QrK107Yz1hLmdldFNJRChuKTtpZigtMT09PWMpe2M9MDtpZighbyl7bz0hMDsoMCxyLndhcm4pKGBDb3VsZG4ndCBmaW5kICR7bn0gaW4gQ0ZGIHN0cmluZ3NgKX19fWlbc109Yz4+OCYyNTU7aVtzKzFdPTI1NSZjfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBuPTA7bGV0IGk9ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxuPj44JjI1NSwyNTUmbixpXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PWkpe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtpPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlKX1jb21waWxlSW5kZXgoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdO2NvbnN0IGE9ZS5vYmplY3RzLHI9YS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuWzAsMF07Y29uc3Qgbj1bcj4+OCYyNTUsMjU1JnJdO2xldCBpLHMsbz0xO2ZvcihpPTA7aTxyOysraSlvKz1hW2ldLmxlbmd0aDtzPW88MjU2PzE6bzw2NTUzNj8yOm88MTY3NzcyMTY/Mzo0O24ucHVzaChzKTtsZXQgYz0xO2ZvcihpPTA7aTxyKzE7aSsrKXsxPT09cz9uLnB1c2goMjU1JmMpOjI9PT1zP24ucHVzaChjPj44JjI1NSwyNTUmYyk6Mz09PXM/bi5wdXNoKGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyk6bi5wdXNoKGM+Pj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTthW2ldJiYoYys9YVtpXS5sZW5ndGgpfWZvcihpPTA7aTxyO2krKyl7dFtpXSYmdFtpXS5vZmZzZXQobi5sZW5ndGgpO24ucHVzaCguLi5hW2ldKX1yZXR1cm4gbn19dC5DRkZDb21waWxlcj1DRkZDb21waWxlcn0sKGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSVNPQWRvYmVDaGFyc2V0PXQuRXhwZXJ0U3Vic2V0Q2hhcnNldD10LkV4cGVydENoYXJzZXQ9dm9pZCAwO3QuSVNPQWRvYmVDaGFyc2V0PVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl07dC5FeHBlcnRDaGFyc2V0PVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdO3QuRXhwZXJ0U3Vic2V0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJoeXBoZW5zdXBlcmlvciIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJjZW50b2xkc3R5bGUiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiXX0sKGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9dC5XaW5BbnNpRW5jb2Rpbmc9dC5TeW1ib2xTZXRFbmNvZGluZz10LlN0YW5kYXJkRW5jb2Rpbmc9dC5NYWNSb21hbkVuY29kaW5nPXQuRXhwZXJ0RW5jb2Rpbmc9dm9pZCAwO3QuZ2V0RW5jb2Rpbmc9ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcztjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIG47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGM7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGE7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2NvbnN0IGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydEVuY29kaW5nPWE7Y29uc3Qgcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLG49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9bjtjb25zdCBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXTt0LlN0YW5kYXJkRW5jb2Rpbmc9aTtjb25zdCBzPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXTt0LldpbkFuc2lFbmNvZGluZz1zO2NvbnN0IG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPW87Y29uc3QgYz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9Y30sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9dC5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc9dC5Gb250RmxhZ3M9dm9pZCAwO3Qubm9ybWFsaXplRm9udE5hbWU9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9O3QucmVjb3ZlckdseXBoTmFtZT1yZWNvdmVyR2x5cGhOYW1lO3QudHlwZTFGb250R2x5cGhNYXBwaW5nPWZ1bmN0aW9uIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLHQsYSl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBzLGMsbDtjb25zdCBoPSEhKGUuZmxhZ3Mmby5TeW1ib2xpYyk7aWYoZS5pc0ludGVybmFsRm9udCl7bD10O2ZvcihjPTA7YzxsLmxlbmd0aDtjKyspe3M9YS5pbmRleE9mKGxbY10pO2lbY109cz49MD9zOjB9fWVsc2UgaWYoZS5iYXNlRW5jb2RpbmdOYW1lKXtsPSgwLHIuZ2V0RW5jb2RpbmcpKGUuYmFzZUVuY29kaW5nTmFtZSk7Zm9yKGM9MDtjPGwubGVuZ3RoO2MrKyl7cz1hLmluZGV4T2YobFtjXSk7aVtjXT1zPj0wP3M6MH19ZWxzZSBpZihoKWZvcihjIGluIHQpaVtjXT10W2NdO2Vsc2V7bD1yLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGM9MDtjPGwubGVuZ3RoO2MrKyl7cz1hLmluZGV4T2YobFtjXSk7aVtjXT1zPj0wP3M6MH19Y29uc3QgdT1lLmRpZmZlcmVuY2VzO2xldCBkO2lmKHUpZm9yKGMgaW4gdSl7Y29uc3QgZT11W2NdO3M9YS5pbmRleE9mKGUpO2lmKC0xPT09cyl7ZHx8KGQ9KDAsbi5nZXRHbHlwaHNVbmljb2RlKSgpKTtjb25zdCB0PXJlY292ZXJHbHlwaE5hbWUoZSxkKTt0IT09ZSYmKHM9YS5pbmRleE9mKHQpKX1pW2NdPXM+PTA/czowfXJldHVybiBpfTthKDE1Nyk7dmFyIHI9YSgxODcpLG49YSgxODkpLGk9YSgxOTApLHM9YSgxNDQpO3QuU0VBQ19BTkFMWVNJU19FTkFCTEVEPSEwO2NvbnN0IG89e0ZpeGVkUGl0Y2g6MSxTZXJpZjoyLFN5bWJvbGljOjQsU2NyaXB0OjgsTm9uc3ltYm9saWM6MzIsSXRhbGljOjY0LEFsbENhcDo2NTUzNixTbWFsbENhcDoxMzEwNzIsRm9yY2VCb2xkOjI2MjE0NH07dC5Gb250RmxhZ3M9bzt0Lk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZz1bIi5ub3RkZWYiLCIubnVsbCIsIm5vbm1hcmtpbmdyZXR1cm4iLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsIm5vbmJyZWFraW5nc3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsIkxzbGFzaCIsImxzbGFzaCIsIlNjYXJvbiIsInNjYXJvbiIsIlpjYXJvbiIsInpjYXJvbiIsImJyb2tlbmJhciIsIkV0aCIsImV0aCIsIllhY3V0ZSIsInlhY3V0ZSIsIlRob3JuIiwidGhvcm4iLCJtaW51cyIsIm11bHRpcGx5Iiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJvbmVoYWxmIiwib25lcXVhcnRlciIsInRocmVlcXVhcnRlcnMiLCJmcmFuYyIsIkdicmV2ZSIsImdicmV2ZSIsIklkb3RhY2NlbnQiLCJTY2VkaWxsYSIsInNjZWRpbGxhIiwiQ2FjdXRlIiwiY2FjdXRlIiwiQ2Nhcm9uIiwiY2Nhcm9uIiwiZGNyb2F0Il07ZnVuY3Rpb24gcmVjb3ZlckdseXBoTmFtZShlLHQpe2lmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIGU7Y29uc3QgYT0oMCxpLmdldFVuaWNvZGVGb3JHbHlwaCkoZSx0KTtpZigtMSE9PWEpZm9yKGNvbnN0IGUgaW4gdClpZih0W2VdPT09YSlyZXR1cm4gZTsoMCxzLmluZm8pKCJVbmFibGUgdG8gcmVjb3ZlciBhIHN0YW5kYXJkIGdseXBoIG5hbWUgZm9yOiAiK2UpO3JldHVybiBlfX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjthLnIodCk7YS5kKHQse2dldERpbmdiYXRzR2x5cGhzVW5pY29kZTooKT0+aSxnZXRHbHlwaHNVbmljb2RlOigpPT5ufSk7dmFyIHI9YSgxNDkpO2NvbnN0IG49KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSksaT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MzI7ZS5hMT05OTg1O2UuYTI9OTk4NjtlLmEyMDI9OTk4NztlLmEzPTk5ODg7ZS5hND05NzQyO2UuYTU9OTk5MDtlLmExMTk9OTk5MTtlLmExMTg9OTk5MjtlLmExMTc9OTk5MztlLmExMT05NzU1O2UuYTEyPTk3NTg7ZS5hMTM9OTk5NjtlLmExND05OTk3O2UuYTE1PTk5OTg7ZS5hMTY9OTk5OTtlLmExMDU9MWU0O2UuYTE3PTEwMDAxO2UuYTE4PTEwMDAyO2UuYTE5PTEwMDAzO2UuYTIwPTEwMDA0O2UuYTIxPTEwMDA1O2UuYTIyPTEwMDA2O2UuYTIzPTEwMDA3O2UuYTI0PTEwMDA4O2UuYTI1PTEwMDA5O2UuYTI2PTEwMDEwO2UuYTI3PTEwMDExO2UuYTI4PTEwMDEyO2UuYTY9MTAwMTM7ZS5hNz0xMDAxNDtlLmE4PTEwMDE1O2UuYTk9MTAwMTY7ZS5hMTA9MTAwMTc7ZS5hMjk9MTAwMTg7ZS5hMzA9MTAwMTk7ZS5hMzE9MTAwMjA7ZS5hMzI9MTAwMjE7ZS5hMzM9MTAwMjI7ZS5hMzQ9MTAwMjM7ZS5hMzU9OTczMztlLmEzNj0xMDAyNTtlLmEzNz0xMDAyNjtlLmEzOD0xMDAyNztlLmEzOT0xMDAyODtlLmE0MD0xMDAyOTtlLmE0MT0xMDAzMDtlLmE0Mj0xMDAzMTtlLmE0Mz0xMDAzMjtlLmE0ND0xMDAzMztlLmE0NT0xMDAzNDtlLmE0Nj0xMDAzNTtlLmE0Nz0xMDAzNjtlLmE0OD0xMDAzNztlLmE0OT0xMDAzODtlLmE1MD0xMDAzOTtlLmE1MT0xMDA0MDtlLmE1Mj0xMDA0MTtlLmE1Mz0xMDA0MjtlLmE1ND0xMDA0MztlLmE1NT0xMDA0NDtlLmE1Nj0xMDA0NTtlLmE1Nz0xMDA0NjtlLmE1OD0xMDA0NztlLmE1OT0xMDA0ODtlLmE2MD0xMDA0OTtlLmE2MT0xMDA1MDtlLmE2Mj0xMDA1MTtlLmE2Mz0xMDA1MjtlLmE2ND0xMDA1MztlLmE2NT0xMDA1NDtlLmE2Nj0xMDA1NTtlLmE2Nz0xMDA1NjtlLmE2OD0xMDA1NztlLmE2OT0xMDA1ODtlLmE3MD0xMDA1OTtlLmE3MT05Njc5O2UuYTcyPTEwMDYxO2UuYTczPTk2MzI7ZS5hNzQ9MTAwNjM7ZS5hMjAzPTEwMDY0O2UuYTc1PTEwMDY1O2UuYTIwND0xMDA2NjtlLmE3Nj05NjUwO2UuYTc3PTk2NjA7ZS5hNzg9OTY3MDtlLmE3OT0xMDA3MDtlLmE4MT05Njg3O2UuYTgyPTEwMDcyO2UuYTgzPTEwMDczO2UuYTg0PTEwMDc0O2UuYTk3PTEwMDc1O2UuYTk4PTEwMDc2O2UuYTk5PTEwMDc3O2UuYTEwMD0xMDA3ODtlLmExMDE9MTAwODE7ZS5hMTAyPTEwMDgyO2UuYTEwMz0xMDA4MztlLmExMDQ9MTAwODQ7ZS5hMTA2PTEwMDg1O2UuYTEwNz0xMDA4NjtlLmExMDg9MTAwODc7ZS5hMTEyPTk4Mjc7ZS5hMTExPTk4MzA7ZS5hMTEwPTk4Mjk7ZS5hMTA5PTk4MjQ7ZS5hMTIwPTkzMTI7ZS5hMTIxPTkzMTM7ZS5hMTIyPTkzMTQ7ZS5hMTIzPTkzMTU7ZS5hMTI0PTkzMTY7ZS5hMTI1PTkzMTc7ZS5hMTI2PTkzMTg7ZS5hMTI3PTkzMTk7ZS5hMTI4PTkzMjA7ZS5hMTI5PTkzMjE7ZS5hMTMwPTEwMTAyO2UuYTEzMT0xMDEwMztlLmExMzI9MTAxMDQ7ZS5hMTMzPTEwMTA1O2UuYTEzND0xMDEwNjtlLmExMzU9MTAxMDc7ZS5hMTM2PTEwMTA4O2UuYTEzNz0xMDEwOTtlLmExMzg9MTAxMTA7ZS5hMTM5PTEwMTExO2UuYTE0MD0xMDExMjtlLmExNDE9MTAxMTM7ZS5hMTQyPTEwMTE0O2UuYTE0Mz0xMDExNTtlLmExNDQ9MTAxMTY7ZS5hMTQ1PTEwMTE3O2UuYTE0Nj0xMDExODtlLmExNDc9MTAxMTk7ZS5hMTQ4PTEwMTIwO2UuYTE0OT0xMDEyMTtlLmExNTA9MTAxMjI7ZS5hMTUxPTEwMTIzO2UuYTE1Mj0xMDEyNDtlLmExNTM9MTAxMjU7ZS5hMTU0PTEwMTI2O2UuYTE1NT0xMDEyNztlLmExNTY9MTAxMjg7ZS5hMTU3PTEwMTI5O2UuYTE1OD0xMDEzMDtlLmExNTk9MTAxMzE7ZS5hMTYwPTEwMTMyO2UuYTE2MT04NTk0O2UuYTE2Mz04NTk2O2UuYTE2ND04NTk3O2UuYTE5Nj0xMDEzNjtlLmExNjU9MTAxMzc7ZS5hMTkyPTEwMTM4O2UuYTE2Nj0xMDEzOTtlLmExNjc9MTAxNDA7ZS5hMTY4PTEwMTQxO2UuYTE2OT0xMDE0MjtlLmExNzA9MTAxNDM7ZS5hMTcxPTEwMTQ0O2UuYTE3Mj0xMDE0NTtlLmExNzM9MTAxNDY7ZS5hMTYyPTEwMTQ3O2UuYTE3ND0xMDE0ODtlLmExNzU9MTAxNDk7ZS5hMTc2PTEwMTUwO2UuYTE3Nz0xMDE1MTtlLmExNzg9MTAxNTI7ZS5hMTc5PTEwMTUzO2UuYTE5Mz0xMDE1NDtlLmExODA9MTAxNTU7ZS5hMTk5PTEwMTU2O2UuYTE4MT0xMDE1NztlLmEyMDA9MTAxNTg7ZS5hMTgyPTEwMTU5O2UuYTIwMT0xMDE2MTtlLmExODM9MTAxNjI7ZS5hMTg0PTEwMTYzO2UuYTE5Nz0xMDE2NDtlLmExODU9MTAxNjU7ZS5hMTk0PTEwMTY2O2UuYTE5OD0xMDE2NztlLmExODY9MTAxNjg7ZS5hMTk1PTEwMTY5O2UuYTE4Nz0xMDE3MDtlLmExODg9MTAxNzE7ZS5hMTg5PTEwMTcyO2UuYTE5MD0xMDE3MztlLmExOTE9MTAxNzQ7ZS5hODk9MTAwODg7ZS5hOTA9MTAwODk7ZS5hOTM9MTAwOTA7ZS5hOTQ9MTAwOTE7ZS5hOTE9MTAwOTI7ZS5hOTI9MTAwOTM7ZS5hMjA1PTEwMDk0O2UuYTg1PTEwMDk1O2UuYTIwNj0xMDA5NjtlLmE4Nj0xMDA5NztlLmE4Nz0xMDA5ODtlLmE4OD0xMDA5OTtlLmE5NT0xMDEwMDtlLmE5Nj0xMDEwMTtlWyIubm90ZGVmIl09MH0pKX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjthLnIodCk7YS5kKHQse2NsZWFyVW5pY29kZUNhY2hlczooKT0+Y2xlYXJVbmljb2RlQ2FjaGVzLGdldENoYXJVbmljb2RlQ2F0ZWdvcnk6KCk9PmdldENoYXJVbmljb2RlQ2F0ZWdvcnksZ2V0VW5pY29kZUZvckdseXBoOigpPT5nZXRVbmljb2RlRm9yR2x5cGgsZ2V0VW5pY29kZVJhbmdlRm9yOigpPT5nZXRVbmljb2RlUmFuZ2VGb3IsbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXM6KCk9Pm1hcFNwZWNpYWxVbmljb2RlVmFsdWVzfSk7Y29uc3Qgcj0oMCxhKDE0OSkuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVs2MzcyMV09MTY5O2VbNjMxOTNdPTE2OTtlWzYzNzIwXT0xNzQ7ZVs2MzE5NF09MTc0O2VbNjM3MjJdPTg0ODI7ZVs2MzE5NV09ODQ4MjtlWzYzNzI5XT05MTI3O2VbNjM3MzBdPTkxMjg7ZVs2MzczMV09OTEyOTtlWzYzNzQwXT05MTMxO2VbNjM3NDFdPTkxMzI7ZVs2Mzc0Ml09OTEzMztlWzYzNzI2XT05MTIxO2VbNjM3MjddPTkxMjI7ZVs2MzcyOF09OTEyMztlWzYzNzM3XT05MTI0O2VbNjM3MzhdPTkxMjU7ZVs2MzczOV09OTEyNjtlWzYzNzIzXT05MTE1O2VbNjM3MjRdPTkxMTY7ZVs2MzcyNV09OTExNztlWzYzNzM0XT05MTE4O2VbNjM3MzVdPTkxMTk7ZVs2MzczNl09OTEyMH0pKTtmdW5jdGlvbiBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhlKXtyZXR1cm4gZT49NjU1MjAmJmU8PTY1NTM1PzA6ZT49NjI5NzYmJmU8PTYzNzQzP3IoKVtlXXx8ZToxNzM9PT1lPzQ1OmV9ZnVuY3Rpb24gZ2V0VW5pY29kZUZvckdseXBoKGUsdCl7bGV0IGE9dFtlXTtpZih2b2lkIDAhPT1hKXJldHVybiBhO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI7aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pcj1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7cj1lLnN1YnN0cmluZygxKX1pZihyPT09ci50b1VwcGVyQ2FzZSgpKXthPXBhcnNlSW50KHIsMTYpO2lmKGE+PTApcmV0dXJuIGF9fXJldHVybi0xfWNvbnN0IG49W1swLDEyN10sWzEyOCwyNTVdLFsyNTYsMzgzXSxbMzg0LDU5MV0sWzU5Miw2ODcsNzQyNCw3NTUxLDc1NTIsNzYxNV0sWzY4OCw3NjcsNDI3NTIsNDI3ODNdLFs3NjgsODc5LDc2MTYsNzY3OV0sWzg4MCwxMDIzXSxbMTEzOTIsMTE1MTldLFsxMDI0LDEyNzksMTI4MCwxMzI3LDExNzQ0LDExNzc1LDQyNTYwLDQyNjU1XSxbMTMyOCwxNDIzXSxbMTQyNCwxNTM1XSxbNDIyNDAsNDI1NTldLFsxNTM2LDE3OTEsMTg3MiwxOTE5XSxbMTk4NCwyMDQ3XSxbMjMwNCwyNDMxXSxbMjQzMiwyNTU5XSxbMjU2MCwyNjg3XSxbMjY4OCwyODE1XSxbMjgxNiwyOTQzXSxbMjk0NCwzMDcxXSxbMzA3MiwzMTk5XSxbMzIwMCwzMzI3XSxbMzMyOCwzNDU1XSxbMzU4NCwzNzExXSxbMzcxMiwzODM5XSxbNDI1Niw0MzUxLDExNTIwLDExNTY3XSxbNjkxMiw3MDM5XSxbNDM1Miw0NjA3XSxbNzY4MCw3OTM1LDExMzYwLDExMzkxLDQyNzg0LDQzMDA3XSxbNzkzNiw4MTkxXSxbODE5Miw4MzAzLDExNzc2LDExOTAzXSxbODMwNCw4MzUxXSxbODM1Miw4Mzk5XSxbODQwMCw4NDQ3XSxbODQ0OCw4NTI3XSxbODUyOCw4NTkxXSxbODU5Miw4NzAzLDEwMjI0LDEwMjM5LDEwNDk2LDEwNjIzLDExMDA4LDExMjYzXSxbODcwNCw4OTU5LDEwNzUyLDExMDA3LDEwMTc2LDEwMjIzLDEwNjI0LDEwNzUxXSxbODk2MCw5MjE1XSxbOTIxNiw5Mjc5XSxbOTI4MCw5MzExXSxbOTMxMiw5NDcxXSxbOTQ3Miw5NTk5XSxbOTYwMCw5NjMxXSxbOTYzMiw5NzI3XSxbOTcyOCw5OTgzXSxbOTk4NCwxMDE3NV0sWzEyMjg4LDEyMzUxXSxbMTIzNTIsMTI0NDddLFsxMjQ0OCwxMjU0MywxMjc4NCwxMjc5OV0sWzEyNTQ0LDEyNTkxLDEyNzA0LDEyNzM1XSxbMTI1OTIsMTI2ODddLFs0MzA3Miw0MzEzNV0sWzEyODAwLDEzMDU1XSxbMTMwNTYsMTMzMTFdLFs0NDAzMiw1NTIxNV0sWzU1Mjk2LDU3MzQzXSxbNjc4NDAsNjc4NzFdLFsxOTk2OCw0MDk1OSwxMTkwNCwxMjAzMSwxMjAzMiwxMjI1NSwxMjI3MiwxMjI4NywxMzMxMiwxOTkwMywxMzEwNzIsMTczNzkxLDEyNjg4LDEyNzAzXSxbNTczNDQsNjM3NDNdLFsxMjczNiwxMjc4Myw2Mzc0NCw2NDI1NSwxOTQ1NjAsMTk1MTAzXSxbNjQyNTYsNjQzMzVdLFs2NDMzNiw2NTAyM10sWzY1MDU2LDY1MDcxXSxbNjUwNDAsNjUwNTVdLFs2NTEwNCw2NTEzNV0sWzY1MTM2LDY1Mjc5XSxbNjUyODAsNjU1MTldLFs2NTUyMCw2NTUzNV0sWzM4NDAsNDA5NV0sWzE3OTIsMTg3MV0sWzE5MjAsMTk4M10sWzM0NTYsMzU4M10sWzQwOTYsNDI1NV0sWzQ2MDgsNDk5MSw0OTkyLDUwMjMsMTE2NDgsMTE3NDNdLFs1MDI0LDUxMTldLFs1MTIwLDU3NTldLFs1NzYwLDU3OTFdLFs1NzkyLDU4ODddLFs2MDE2LDYxNDNdLFs2MTQ0LDYzMTldLFsxMDI0MCwxMDQ5NV0sWzQwOTYwLDQyMTI3XSxbNTg4OCw1OTE5LDU5MjAsNTk1MSw1OTUyLDU5ODMsNTk4NCw2MDE1XSxbNjYzMDQsNjYzNTFdLFs2NjM1Miw2NjM4M10sWzY2NTYwLDY2NjM5XSxbMTE4Nzg0LDExOTAzOSwxMTkwNDAsMTE5Mjk1LDExOTI5NiwxMTkzNzVdLFsxMTk4MDgsMTIwODMxXSxbMTA0NDQ4MCwxMDQ4NTczXSxbNjUwMjQsNjUwMzksOTE3NzYwLDkxNzk5OV0sWzkxNzUwNCw5MTc2MzFdLFs2NDAwLDY0NzldLFs2NDgwLDY1MjddLFs2NTI4LDY2MjNdLFs2NjU2LDY2ODddLFsxMTI2NCwxMTM1OV0sWzExNTY4LDExNjQ3XSxbMTk5MDQsMTk5NjddLFs0MzAwOCw0MzA1NV0sWzY1NTM2LDY1NjYzLDY1NjY0LDY1NzkxLDY1NzkyLDY1ODU1XSxbNjU4NTYsNjU5MzVdLFs2NjQzMiw2NjQ2M10sWzY2NDY0LDY2NTI3XSxbNjY2NDAsNjY2ODddLFs2NjY4OCw2NjczNV0sWzY3NTg0LDY3NjQ3XSxbNjgwOTYsNjgxOTFdLFsxMTk1NTIsMTE5NjQ3XSxbNzM3MjgsNzQ3NTEsNzQ3NTIsNzQ4NzldLFsxMTk2NDgsMTE5Njc5XSxbNzA0MCw3MTAzXSxbNzE2OCw3MjQ3XSxbNzI0OCw3Mjk1XSxbNDMxMzYsNDMyMzFdLFs0MzI2NCw0MzMxMV0sWzQzMzEyLDQzMzU5XSxbNDM1MjAsNDM2MTVdLFs2NTkzNiw2NTk5OV0sWzY2ZTMsNjYwNDddLFs2NjIwOCw2NjI3MSw2NjE3Niw2NjIwNyw2Nzg3Miw2NzkwM10sWzEyNzAyNCwxMjcxMzUsMTI2OTc2LDEyNzAyM11dO2Z1bmN0aW9uIGdldFVuaWNvZGVSYW5nZUZvcihlLHQ9LTEpe2lmKC0xIT09dCl7Y29uc3QgYT1uW3RdO2ZvcihsZXQgcj0wLG49YS5sZW5ndGg7cjxuO3IrPTIpaWYoZT49YVtyXSYmZTw9YVtyKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGE9bi5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1uW3RdO2ZvcihsZXQgcj0wLG49YS5sZW5ndGg7cjxuO3IrPTIpaWYoZT49YVtyXSYmZTw9YVtyKzFdKXJldHVybiB0fXJldHVybi0xfWNvbnN0IGk9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLHM9bmV3IE1hcDtmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9cy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2goaSkscj17aXNXaGl0ZXNwYWNlOiEhYT8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhYT8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIWE/LlszXX07cy5zZXQoZSxyKTtyZXR1cm4gcn1mdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXtzLmNsZWFyKCl9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFNlcmlmRm9udHM9dC5nZXROb25TdGRGb250TWFwPXQuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPXQuZ2V0Rm9udE5hbWVUb0ZpbGVNYXA9dm9pZCAwO3QuZ2V0U3RhbmRhcmRGb250TmFtZT1mdW5jdGlvbiBnZXRTdGFuZGFyZEZvbnROYW1lKGUpe2NvbnN0IHQ9KDAsbi5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuIGkoKVt0XX07dC5nZXRTeW1ib2xzRm9udHM9dC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckNhbGlicmk9dC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckFyaWFsQmxhY2s9dC5nZXRTdGRGb250TWFwPXZvaWQgMDt0LmlzS25vd25Gb250TmFtZT1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD0oMCxuLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4hIShpKClbdF18fG8oKVt0XXx8YygpW3RdfHxsKClbdF0pfTt2YXIgcj1hKDE0OSksbj1hKDE4OCk7Y29uc3QgaT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpO3QuZ2V0U3RkRm9udE1hcD1pO2NvbnN0IHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkhlbHZldGljYS1Cb2xkIl09IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIlRpbWVzLVJvbWFuIl09IkZveGl0U2VyaWYucGZiIjtlWyJUaW1lcy1Cb2xkIl09IkZveGl0U2VyaWZCb2xkLnBmYiI7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJGb3hpdFNlcmlmQm9sZEl0YWxpYy5wZmIiO2VbIlRpbWVzLUl0YWxpYyJdPSJGb3hpdFNlcmlmSXRhbGljLnBmYiI7ZS5TeW1ib2w9IkZveGl0U3ltYm9sLnBmYiI7ZS5aYXBmRGluZ2JhdHM9IkZveGl0RGluZ2JhdHMucGZiIjtlWyJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIl09IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkIl09IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiJ9KSk7dC5nZXRGb250TmFtZVRvRmlsZU1hcD1zO2NvbnN0IG89KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNhbGlicmk9IkhlbHZldGljYSI7ZVsiQ2FsaWJyaS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDYWxpYnJpLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5DZW50dXJ5R290aGljPSJIZWx2ZXRpY2EiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2VudHVyeUdvdGhpYy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ29taWNTYW5zTVM9IkNvbWljIFNhbnMgTVMiO2VbIkNvbWljU2Fuc01TLUJvbGQiXT0iQ29taWMgU2FucyBNUy1Cb2xkIjtlWyJDb21pY1NhbnNNUy1Cb2xkSXRhbGljIl09IkNvbWljIFNhbnMgTVMtQm9sZEl0YWxpYyI7ZVsiQ29taWNTYW5zTVMtSXRhbGljIl09IkNvbWljIFNhbnMgTVMtSXRhbGljIjtlLkltcGFjdD0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiSXRjU3ltYm9sLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJJdGNTeW1ib2wtQm9vayJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb29rSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJJdGNTeW1ib2wtTWVkaXVtIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLU1lZGl1bUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5MdWNpZGFDb25zb2xlPSJDb3VyaWVyIjtlWyJMdWNpZGFDb25zb2xlLUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJMdWNpZGFDb25zb2xlLUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiTHVjaWRhQ29uc29sZS1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJMdWNpZGFTYW5zLURlbWkiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIk1TLUdvdGhpYyJdPSJNUyBHb3RoaWMiO2VbIk1TLUdvdGhpYy1Cb2xkIl09Ik1TIEdvdGhpYy1Cb2xkIjtlWyJNUy1Hb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtR290aGljLUl0YWxpYyJdPSJNUyBHb3RoaWMtSXRhbGljIjtlWyJNUy1NaW5jaG8iXT0iTVMgTWluY2hvIjtlWyJNUy1NaW5jaG8tQm9sZCJdPSJNUyBNaW5jaG8tQm9sZCI7ZVsiTVMtTWluY2hvLUJvbGRJdGFsaWMiXT0iTVMgTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLU1pbmNoby1JdGFsaWMiXT0iTVMgTWluY2hvLUl0YWxpYyI7ZVsiTVMtUEdvdGhpYyJdPSJNUyBQR290aGljIjtlWyJNUy1QR290aGljLUJvbGQiXT0iTVMgUEdvdGhpYy1Cb2xkIjtlWyJNUy1QR290aGljLUJvbGRJdGFsaWMiXT0iTVMgUEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1QR290aGljLUl0YWxpYyJdPSJNUyBQR290aGljLUl0YWxpYyI7ZVsiTVMtUE1pbmNobyJdPSJNUyBQTWluY2hvIjtlWyJNUy1QTWluY2hvLUJvbGQiXT0iTVMgUE1pbmNoby1Cb2xkIjtlWyJNUy1QTWluY2hvLUJvbGRJdGFsaWMiXT0iTVMgUE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1QTWluY2hvLUl0YWxpYyJdPSJNUyBQTWluY2hvLUl0YWxpYyI7ZS5OdXB0aWFsU2NyaXB0PSJUaW1lcy1JdGFsaWMiO2UuU2Vnb2VVSVN5bWJvbD0iSGVsdmV0aWNhIn0pKTt0LmdldE5vblN0ZEZvbnRNYXA9bztjb25zdCBjPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiQWRvYmUgSmVuc29uIl09ITA7ZVsiQWRvYmUgVGV4dCJdPSEwO2UuQWxiZXJ0dXM9ITA7ZS5BbGR1cz0hMDtlLkFsZXhhbmRyaWE9ITA7ZS5BbGdlcmlhbj0hMDtlWyJBbWVyaWNhbiBUeXBld3JpdGVyIl09ITA7ZS5BbnRpcXVhPSEwO2UuQXBleD0hMDtlLkFybm89ITA7ZS5Bc3Rlcj0hMDtlLkF1cm9yYT0hMDtlLkJhc2tlcnZpbGxlPSEwO2UuQmVsbD0hMDtlLkJlbWJvPSEwO2VbIkJlbWJvIFNjaG9vbGJvb2siXT0hMDtlLkJlbmd1aWF0PSEwO2VbIkJlcmtlbGV5IE9sZCBTdHlsZSJdPSEwO2VbIkJlcm5oYXJkIE1vZGVybiJdPSEwO2VbIkJlcnRob2xkIENpdHkiXT0hMDtlLkJvZG9uaT0hMDtlWyJCYXVlciBCb2RvbmkiXT0hMDtlWyJCb29rIEFudGlxdWEiXT0hMDtlLkJvb2ttYW49ITA7ZVsiQm9yZGVhdXggUm9tYW4iXT0hMDtlWyJDYWxpZm9ybmlhbiBGQiJdPSEwO2UuQ2FsaXN0bz0hMDtlLkNhbHZlcnQ9ITA7ZS5DYXBpdGFscz0hMDtlLkNhbWJyaWE9ITA7ZS5DYXJ0aWVyPSEwO2UuQ2FzbG9uPSEwO2UuQ2F0dWxsPSEwO2UuQ2VudGF1cj0hMDtlWyJDZW50dXJ5IE9sZCBTdHlsZSJdPSEwO2VbIkNlbnR1cnkgU2Nob29sYm9vayJdPSEwO2UuQ2hhcGFycmFsPSEwO2VbIkNoYXJpcyBTSUwiXT0hMDtlLkNoZWx0ZW5oYW09ITA7ZVsiQ2hvbGxhIFNsYWIiXT0hMDtlLkNsYXJlbmRvbj0hMDtlLkNsZWFyZmFjZT0hMDtlLkNvY2hpbj0hMDtlLkNvbG9ubmE9ITA7ZVsiQ29tcHV0ZXIgTW9kZXJuIl09ITA7ZVsiQ29uY3JldGUgUm9tYW4iXT0hMDtlLkNvbnN0YW50aWE9ITA7ZVsiQ29vcGVyIEJsYWNrIl09ITA7ZS5Db3JvbmE9ITA7ZS5FY290eXBlPSEwO2UuRWd5cHRpZW5uZT0hMDtlLkVsZXBoYW50PSEwO2UuRXhjZWxzaW9yPSEwO2UuRmFpcmZpZWxkPSEwO2VbIkZGIFNjYWxhIl09ITA7ZS5Gb2xrYXJkPSEwO2UuRm9vdGxpZ2h0PSEwO2UuRnJlZVNlcmlmPSEwO2VbIkZyaXogUXVhZHJhdGEiXT0hMDtlLkdhcmFtb25kPSEwO2UuR2VudGl1bT0hMDtlLkdlb3JnaWE9ITA7ZS5HbG91Y2VzdGVyPSEwO2VbIkdvdWR5IE9sZCBTdHlsZSJdPSEwO2VbIkdvdWR5IFNjaG9vbGJvb2siXT0hMDtlWyJHb3VkeSBQcm8gRm9udCJdPSEwO2UuR3Jhbmpvbj0hMDtlWyJHdWFyZGlhbiBFZ3lwdGlhbiJdPSEwO2UuSGVhdGhlcj0hMDtlLkhlcmN1bGVzPSEwO2VbIkhpZ2ggVG93ZXIgVGV4dCJdPSEwO2UuSGlyb3NoaWdlPSEwO2VbIkhvZWZsZXIgVGV4dCJdPSEwO2VbIkh1bWFuYSBTZXJpZiJdPSEwO2UuSW1wcmludD0hMDtlWyJJb25pYyBOby4gNSJdPSEwO2UuSmFuc29uPSEwO2UuSm9hbm5hPSEwO2UuS29yaW5uYT0hMDtlLkxleGljb249ITA7ZS5MaWJlcmF0aW9uU2VyaWY9ITA7ZVsiTGliZXJhdGlvbiBTZXJpZiJdPSEwO2VbIkxpbnV4IExpYmVydGluZSJdPSEwO2UuTGl0ZXJhdHVybmF5YT0hMDtlLkx1Y2lkYT0hMDtlWyJMdWNpZGEgQnJpZ2h0Il09ITA7ZS5NZWxpb3I9ITA7ZS5NZW1waGlzPSEwO2UuTWlsbGVyPSEwO2UuTWluaW9uPSEwO2UuTW9kZXJuPSEwO2VbIk1vbmEgTGlzYSJdPSEwO2VbIk1ycyBFYXZlcyJdPSEwO2VbIk1TIFNlcmlmIl09ITA7ZVsiTXVzZW8gU2xhYiJdPSEwO2VbIk5ldyBZb3JrIl09ITA7ZVsiTmltYnVzIFJvbWFuIl09ITA7ZVsiTlBTIFJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5OdXB0aWFsU2NyaXB0PSEwO2UuUGFsYXRpbm89ITA7ZS5QZXJwZXR1YT0hMDtlLlBsYW50aW49ITA7ZVsiUGxhbnRpbiBTY2hvb2xib29rIl09ITA7ZS5QbGF5YmlsbD0hMDtlWyJQb29yIFJpY2hhcmQiXT0hMDtlWyJSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuUmVuYXVsdD0hMDtlLlJlcXVpZW09ITA7ZS5Sb2Nrd2VsbD0hMDtlLlJvbWFuPSEwO2VbIlJvdGlzIFNlcmlmIl09ITA7ZS5TYWJvbj0hMDtlLlNjYWxhPSEwO2UuU2VhZ3VsbD0hMDtlLlNpc3RpbmE9ITA7ZS5Tb3V2ZW5pcj0hMDtlLlNUSVg9ITA7ZVsiU3RvbmUgSW5mb3JtYWwiXT0hMDtlWyJTdG9uZSBTZXJpZiJdPSEwO2UuU3lsZmFlbj0hMDtlLlRpbWVzPSEwO2UuVHJhamFuPSEwO2VbIlRyaW5pdMOpIl09ITA7ZVsiVHJ1bXAgTWVkaWFldmFsIl09ITA7ZS5VdG9waWE9ITA7ZVsiVmFsZSBUeXBlIl09ITA7ZVsiQml0c3RyZWFtIFZlcmEiXT0hMDtlWyJWZXJhIFNlcmlmIl09ITA7ZS5WZXJzYWlsbGVzPSEwO2UuV2FudGVkPSEwO2UuV2Vpc3M9ITA7ZVsiV2lkZSBMYXRpbiJdPSEwO2UuV2luZHNvcj0hMDtlLlhJVFM9ITB9KSk7dC5nZXRTZXJpZkZvbnRzPWM7Y29uc3QgbD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuRGluZ2JhdHM9ITA7ZS5TeW1ib2w9ITA7ZS5aYXBmRGluZ2JhdHM9ITA7ZS5XaW5nZGluZ3M9ITA7ZVsiV2luZ2RpbmdzLUJvbGQiXT0hMDtlWyJXaW5nZGluZ3MtUmVndWxhciJdPSEwfSkpO3QuZ2V0U3ltYm9sc0ZvbnRzPWw7Y29uc3QgaD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSk7dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9aDtjb25zdCB1PSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsyMjddPTMyMjtlWzI2NF09MjYxO2VbMjkxXT0zNDZ9KSk7dC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckFyaWFsQmxhY2s9dTtjb25zdCBkPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsxXT0zMjtlWzRdPTY1O2VbNV09MTkyO2VbNl09MTkzO2VbOV09MTk2O2VbMTddPTY2O2VbMThdPTY3O2VbMjFdPTI2ODtlWzI0XT02ODtlWzI4XT02OTtlWzI5XT0yMDA7ZVszMF09MjAxO2VbMzJdPTI4MjtlWzM4XT03MDtlWzM5XT03MTtlWzQ0XT03MjtlWzQ3XT03MztlWzQ4XT0yMDQ7ZVs0OV09MjA1O2VbNThdPTc0O2VbNjBdPTc1O2VbNjJdPTc2O2VbNjhdPTc3O2VbNjldPTc4O2VbNzVdPTc5O2VbNzZdPTIxMDtlWzgwXT0yMTQ7ZVs4N109ODA7ZVs4OV09ODE7ZVs5MF09ODI7ZVs5Ml09MzQ0O2VbOTRdPTgzO2VbOTddPTM1MjtlWzEwMF09ODQ7ZVsxMDRdPTg1O2VbMTA5XT0yMjA7ZVsxMTVdPTg2O2VbMTE2XT04NztlWzEyMV09ODg7ZVsxMjJdPTg5O2VbMTI0XT0yMjE7ZVsxMjddPTkwO2VbMTI5XT0zODE7ZVsyNThdPTk3O2VbMjU5XT0yMjQ7ZVsyNjBdPTIyNTtlWzI2M109MjI4O2VbMjY4XT0yNjE7ZVsyNzFdPTk4O2VbMjcyXT05OTtlWzI3M109MjYzO2VbMjc1XT0yNjk7ZVsyODJdPTEwMDtlWzI4Nl09MTAxO2VbMjg3XT0yMzI7ZVsyODhdPTIzMztlWzI5MF09MjgzO2VbMjk1XT0yODE7ZVsyOTZdPTEwMjtlWzMzNl09MTAzO2VbMzQ2XT0xMDQ7ZVszNDldPTEwNTtlWzM1MF09MjM2O2VbMzUxXT0yMzc7ZVszNjFdPTEwNjtlWzM2NF09MTA3O2VbMzY3XT0xMDg7ZVszNzFdPTMyMjtlWzM3M109MTA5O2VbMzc0XT0xMTA7ZVszODFdPTExMTtlWzM4Ml09MjQyO2VbMzgzXT0yNDM7ZVszODZdPTI0NjtlWzM5M109MTEyO2VbMzk1XT0xMTM7ZVszOTZdPTExNDtlWzM5OF09MzQ1O2VbNDAwXT0xMTU7ZVs0MDFdPTM0NztlWzQwM109MzUzO2VbNDEwXT0xMTY7ZVs0MzddPTExNztlWzQ0Ml09MjUyO2VbNDQ4XT0xMTg7ZVs0NDldPTExOTtlWzQ1NF09MTIwO2VbNDU1XT0xMjE7ZVs0NTddPTI1MztlWzQ2MF09MTIyO2VbNDYyXT0zODI7ZVs0NjNdPTM4MDtlWzg1M109NDQ7ZVs4NTVdPTU4O2VbODU2XT00NjtlWzg3Nl09NDc7ZVs4NzhdPTQ1O2VbODgyXT00NTtlWzg5NF09NDA7ZVs4OTVdPTQxO2VbODk2XT05MTtlWzg5N109OTM7ZVs5MjNdPTY0O2VbMTAwNF09NDg7ZVsxMDA1XT00OTtlWzEwMDZdPTUwO2VbMTAwN109NTE7ZVsxMDA4XT01MjtlWzEwMDldPTUzO2VbMTAxMF09NTQ7ZVsxMDExXT01NTtlWzEwMTJdPTU2O2VbMTAxM109NTc7ZVsxMDgxXT0zNztlWzEwODVdPTQzO2VbMTA4Nl09NDV9KSk7dC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckNhbGlicmk9ZH0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIHI9YSgxNDQpO3QuVG9Vbmljb2RlTWFwPWNsYXNzIFRvVW5pY29kZU1hcHtjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTt0aGlzLl9tYXA9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Zm9yRWFjaChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9tYXApZSh0LHRoaXMuX21hcFt0XS5jaGFyQ29kZUF0KDApKX1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1hbWVuZChlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX07dC5JZGVudGl0eVRvVW5pY29kZU1hcD1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sYXN0Q2hhcisxLXRoaXMuZmlyc3RDaGFyfWZvckVhY2goZSl7Zm9yKGxldCB0PXRoaXMuZmlyc3RDaGFyLGE9dGhpcy5sYXN0Q2hhcjt0PD1hO3QrKyllKHQsdCl9aGFzKGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcn1nZXQoZSl7aWYodGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49dGhpcy5maXJzdENoYXImJmU8PXRoaXMubGFzdENoYXI/ZTotMX1hbWVuZChlKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGFtZW5kKCkiKX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRkZvbnQ9dm9pZCAwO3ZhciByPWEoMTg1KSxuPWEoMTg4KSxpPWEoMTQ0KTt0LkNGRkZvbnQ9Y2xhc3MgQ0ZGRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydGllcz10O2NvbnN0IGE9bmV3IHIuQ0ZGUGFyc2VyKGUsdCxuLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCk7dGhpcy5jZmY9YS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBzPW5ldyByLkNGRkNvbXBpbGVyKHRoaXMuY2ZmKTt0aGlzLnNlYWNzPXRoaXMuY2ZmLnNlYWNzO3RyeXt0aGlzLmRhdGE9cy5jb21waWxlKCl9Y2F0Y2h7KDAsaS53YXJuKSgiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK3QubG9hZGVkTmFtZSk7dGhpcy5kYXRhPWV9dGhpcy5fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl9Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLmNmZi5jaGFyU3RyaW5ncy5jb3VudH1nZXRDaGFyc2V0KCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJzZXQuY2hhcnNldH1nZXRHbHlwaE1hcHBpbmcoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9dGhpcy5wcm9wZXJ0aWVzLHtjaWRUb0dpZE1hcDphLGNNYXA6cn09dCxpPWUuY2hhcnNldC5jaGFyc2V0O2xldCBzLG87aWYodC5jb21wb3NpdGUpe2xldCB0LG47aWYoYT8ubGVuZ3RoPjApe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MCxyPWEubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9YVtlXTt2b2lkIDAhPT1yJiYodFtyXT1lKX19cz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUuaXNDSURGb250KWZvcihvPTA7bzxpLmxlbmd0aDtvKyspe2NvbnN0IGU9aVtvXTtuPXIuY2hhckNvZGVPZihlKTt2b2lkIDAhPT10Py5bbl0mJihuPXRbbl0pO3Nbbl09b31lbHNlIGZvcihvPTA7bzxlLmNoYXJTdHJpbmdzLmNvdW50O28rKyl7bj1yLmNoYXJDb2RlT2Yobyk7c1tuXT1vfXJldHVybiBzfWxldCBjPWUuZW5jb2Rpbmc/ZS5lbmNvZGluZy5lbmNvZGluZzpudWxsO3QuaXNJbnRlcm5hbEZvbnQmJihjPXQuZGVmYXVsdEVuY29kaW5nKTtzPSgwLG4udHlwZTFGb250R2x5cGhNYXBwaW5nKSh0LGMsaSk7cmV0dXJuIHN9aGFzR2x5cGhJZChlKXtyZXR1cm4gdGhpcy5jZmYuaGFzR2x5cGhJZChlKX1fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl7Y29uc3R7Y2hhcnNldDplLGVuY29kaW5nOnR9PXRoaXMuY2ZmO2lmKCFlfHwhdClyZXR1cm47Y29uc3QgYT1lLmNoYXJzZXQscj10LmVuY29kaW5nLG49W107Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKHQ+PTApe2NvbnN0IHI9YVt0XTtyJiYobltlXT1yKX19bi5sZW5ndGg+MCYmKHRoaXMucHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc9bil9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250UmVuZGVyZXJGYWN0b3J5PXZvaWQgMDthKDEzOSk7YSgxNTcpO2EoMTU5KTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7dmFyIHI9YSgxNDQpLG49YSgxODUpLGk9YSgxODkpLHM9YSgxODcpLG89YSgxNTQpO2Z1bmN0aW9uIGdldFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH1mdW5jdGlvbiBnZXRVaW50MTYoZSx0KXtyZXR1cm4gZVt0XTw8OHxlW3QrMV19ZnVuY3Rpb24gZ2V0SW50MTYoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNik+PjE2fWZ1bmN0aW9uIGdldEludDgoZSx0KXtyZXR1cm4gZVt0XTw8MjQ+PjI0fWZ1bmN0aW9uIGdldEZsb2F0MjE0KGUsdCl7cmV0dXJuIGdldEludDE2KGUsdCkvMTYzODR9ZnVuY3Rpb24gZ2V0U3Vicm91dGluZUJpYXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0zMjc2ODt0PDEyNDA/YT0xMDc6dDwzMzkwMCYmKGE9MTEzMSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VDbWFwKGUsdCxhKXtjb25zdCBuPTE9PT1nZXRVaW50MTYoZSx0KzIpP2dldFVpbnQzMihlLHQrOCk6Z2V0VWludDMyKGUsdCsxNiksaT1nZXRVaW50MTYoZSx0K24pO2xldCBzLG8sYztpZig0PT09aSl7Z2V0VWludDE2KGUsdCtuKzIpO2NvbnN0IGE9Z2V0VWludDE2KGUsdCtuKzYpPj4xO289dCtuKzE0O3M9W107Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXT17ZW5kOmdldFVpbnQxNihlLG8pfTtvKz0yO2ZvcihjPTA7YzxhO2MrKyxvKz0yKXNbY10uc3RhcnQ9Z2V0VWludDE2KGUsbyk7Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXS5pZERlbHRhPWdldFVpbnQxNihlLG8pO2ZvcihjPTA7YzxhO2MrKyxvKz0yKXtsZXQgdD1nZXRVaW50MTYoZSxvKTtpZigwIT09dCl7c1tjXS5pZHM9W107Zm9yKGxldCBhPTAscj1zW2NdLmVuZC1zW2NdLnN0YXJ0KzE7YTxyO2ErKyl7c1tjXS5pZHNbYV09Z2V0VWludDE2KGUsbyt0KTt0Kz0yfX19cmV0dXJuIHN9aWYoMTI9PT1pKXtjb25zdCBhPWdldFVpbnQzMihlLHQrbisxMik7bz10K24rMTY7cz1bXTtmb3IoYz0wO2M8YTtjKyspe3Q9Z2V0VWludDMyKGUsbyk7cy5wdXNoKHtzdGFydDp0LGVuZDpnZXRVaW50MzIoZSxvKzQpLGlkRGVsdGE6Z2V0VWludDMyKGUsbys4KS10fSk7bys9MTJ9cmV0dXJuIHN9dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVuc3VwcG9ydGVkIGNtYXA6ICR7aX1gKX1mdW5jdGlvbiBwYXJzZUNmZihlLHQsYSxyKXtjb25zdCBpPW5ldyBuLkNGRlBhcnNlcihuZXcgby5TdHJlYW0oZSx0LGEtdCkse30scikucGFyc2UoKTtyZXR1cm57Z2x5cGhzOmkuY2hhclN0cmluZ3Mub2JqZWN0cyxzdWJyczppLnRvcERpY3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXg/Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4Py5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsbj0wLGk9ZS5sZW5ndGgtMTtmb3IoO248aTspe2NvbnN0IHQ9bitpKzE+PjE7YTxlW3RdLnN0YXJ0P2k9dC0xOm49dH1lW25dLnN0YXJ0PD1hJiZhPD1lW25dLmVuZCYmKHI9ZVtuXS5pZERlbHRhKyhlW25dLmlkcz9lW25dLmlkc1thLWVbbl0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5wdXNoKHtjbWQ6ImxpbmVUbyIsYXJnczpbZSxhXX0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLHIsbil7dC5wdXNoKHtjbWQ6InF1YWRyYXRpY0N1cnZlVG8iLGFyZ3M6W2UsYSxyLG5dfSl9bGV0IHI9MDtjb25zdCBuPWdldEludDE2KGUscik7bGV0IGkscz0wLG89MDtyKz0xMDtpZihuPDApZG97aT1nZXRVaW50MTYoZSxyKTtjb25zdCBuPWdldFVpbnQxNihlLHIrMik7cis9NDtsZXQgYyxsO2lmKDEmaSl7aWYoMiZpKXtjPWdldEludDE2KGUscik7bD1nZXRJbnQxNihlLHIrMil9ZWxzZXtjPWdldFVpbnQxNihlLHIpO2w9Z2V0VWludDE2KGUscisyKX1yKz00fWVsc2UgaWYoMiZpKXtjPWdldEludDgoZSxyKyspO2w9Z2V0SW50OChlLHIrKyl9ZWxzZXtjPWVbcisrXTtsPWVbcisrXX1pZigyJmkpe3M9YztvPWx9ZWxzZXtzPTA7bz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZpKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmaSl7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmaSl7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tuXTtpZihnKXt0LnB1c2goe2NtZDoic2F2ZSJ9LHtjbWQ6InRyYW5zZm9ybSIsYXJnczpbaCxkLGYsdSxzLG9dfSk7Y29tcGlsZUdseWYoZyx0LGEpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pfX13aGlsZSgzMiZpKTtlbHNle2NvbnN0IHQ9W107bGV0IGEsYztmb3IoYT0wO2E8bjthKyspe3QucHVzaChnZXRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK2dldFVpbnQxNihlLHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe2k9ZVtyKytdO2xldCB0PTE7OCZpJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczppfSl9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMTgmaFthXS5mbGFncyl7Y2FzZSAwOnMrPWdldEludDE2KGUscik7cis9MjticmVhaztjYXNlIDI6cy09ZVtyKytdO2JyZWFrO2Nhc2UgMTg6cys9ZVtyKytdfWhbYV0ueD1zfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDM2JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1nZXRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0Om8tPWVbcisrXTticmVhaztjYXNlIDM2Om8rPWVbcisrXX1oW2FdLnk9b31sZXQgdT0wO2ZvcihyPTA7cjxuO3IrKyl7Y29uc3QgZT10W3JdLG49aC5zbGljZSh1LGUrMSk7aWYoMSZuWzBdLmZsYWdzKW4ucHVzaChuWzBdKTtlbHNlIGlmKDEmbi5hdCgtMSkuZmxhZ3Mpbi51bnNoaWZ0KG4uYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooblswXS54K24uYXQoLTEpLngpLzIseTooblswXS55K24uYXQoLTEpLnkpLzJ9O24udW5zaGlmdChlKTtuLnB1c2goZSl9bW92ZVRvKG5bMF0ueCxuWzBdLnkpO2ZvcihhPTEsYz1uLmxlbmd0aDthPGM7YSsrKWlmKDEmblthXS5mbGFncylsaW5lVG8oblthXS54LG5bYV0ueSk7ZWxzZSBpZigxJm5bYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhuW2FdLngsblthXS55LG5bYSsxXS54LG5bYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKG5bYV0ueCxuW2FdLnksKG5bYV0ueCtuW2ErMV0ueCkvMiwoblthXS55K25bYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLG4pe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGEscixuLGkscyl7dC5wdXNoKHtjbWQ6ImJlemllckN1cnZlVG8iLGFyZ3M6W2UsYSxyLG4saSxzXX0pfWNvbnN0IGk9W107bGV0IG89MCxjPTAsbD0wOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgaD0wO2Zvcig7aDxlLmxlbmd0aDspe2xldCB1LGQsZixnLHAsbSxiLHksdyxTPSExLHg9ZVtoKytdO3N3aXRjaCh4KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpsKz1pLmxlbmd0aD4+MTtTPSEwO2JyZWFrO2Nhc2UgNDpjKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSA1OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyl9YnJlYWs7Y2FzZSA2OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpfWJyZWFrO2Nhc2UgNzpmb3IoO2kubGVuZ3RoPjA7KXtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKX1icmVhaztjYXNlIDg6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAxMDp5PWkucG9wKCk7dz1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChuKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCByO3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXgmJihyPXQucHJpdmF0ZURpY3Quc3VicnNJbmRleC5vYmplY3RzKTtpZihyKXt5Kz1nZXRTdWJyb3V0aW5lQmlhcyhyKTt3PXJbeV19fWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1lbHNlIHc9YS5zdWJyc1t5K2Euc3VicnNCaWFzXTt3JiZwYXJzZSh3KTticmVhaztjYXNlIDExOnJldHVybjtjYXNlIDEyOng9ZVtoKytdO3N3aXRjaCh4KXtjYXNlIDM0OnU9bytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtwPWMraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGMsZCxwLG8scCk7dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LHAsZCxjLG8sYyk7YnJlYWs7Y2FzZSAzNTp1PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTt1PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTtpLnBvcCgpO2JyZWFrO2Nhc2UgMzY6dT1vK2kuc2hpZnQoKTtwPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bT1wK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxwLGQsbSxvLG0pO3U9bytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtiPW0raS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LG0sZCxiLG8sYyk7YnJlYWs7Y2FzZSAzNzpjb25zdCBlPW8sdD1jO3U9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO3U9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kO2M9ZztNYXRoLmFicyhvLWUpPk1hdGguYWJzKGMtdCk/bys9aS5zaGlmdCgpOmMrPWkuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTticmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke3h9YCl9YnJlYWs7Y2FzZSAxNDppZihpLmxlbmd0aD49NCl7Y29uc3QgZT1pLnBvcCgpLHI9aS5wb3AoKTtjPWkucG9wKCk7bz1pLnBvcCgpO3QucHVzaCh7Y21kOiJzYXZlIn0se2NtZDoidHJhbnNsYXRlIixhcmdzOltvLGNdfSk7bGV0IG49bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtzLlN0YW5kYXJkRW5jb2RpbmdbZV1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbbi5nbHlwaElkXSx0LGEsbi5nbHlwaElkKTt0LnB1c2goe2NtZDoicmVzdG9yZSJ9KTtuPWxvb2t1cENtYXAoYS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoYS5nbHlwaE5hbWVNYXBbcy5TdGFuZGFyZEVuY29kaW5nW3JdXSkpO2NvbXBpbGVDaGFyU3RyaW5nKGEuZ2x5cGhzW24uZ2x5cGhJZF0sdCxhLG4uZ2x5cGhJZCl9cmV0dXJuO2Nhc2UgMTk6Y2FzZSAyMDpsKz1pLmxlbmd0aD4+MTtoKz1sKzc+PjM7Uz0hMDticmVhaztjYXNlIDIxOmMrPWkucG9wKCk7bys9aS5wb3AoKTttb3ZlVG8obyxjKTtTPSEwO2JyZWFrO2Nhc2UgMjI6bys9aS5wb3AoKTttb3ZlVG8obyxjKTtTPSEwO2JyZWFrO2Nhc2UgMjQ6Zm9yKDtpLmxlbmd0aD4yOyl7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9bys9aS5zaGlmdCgpO2MrPWkuc2hpZnQoKTtsaW5lVG8obyxjKTticmVhaztjYXNlIDI1OmZvcig7aS5sZW5ndGg+Njspe28rPWkuc2hpZnQoKTtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyl9dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7YnJlYWs7Y2FzZSAyNjppLmxlbmd0aCUyJiYobys9aS5zaGlmdCgpKTtmb3IoO2kubGVuZ3RoPjA7KXt1PW87Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAyNzppLmxlbmd0aCUyJiYoYys9aS5zaGlmdCgpKTtmb3IoO2kubGVuZ3RoPjA7KXt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWc7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAyODppLnB1c2goKGVbaF08PDI0fGVbaCsxXTw8MTYpPj4xNik7aCs9MjticmVhaztjYXNlIDI5Onk9aS5wb3AoKSthLmdzdWJyc0JpYXM7dz1hLmdzdWJyc1t5XTt3JiZwYXJzZSh3KTticmVhaztjYXNlIDMwOmZvcig7aS5sZW5ndGg+MDspe3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZysoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7dT1vK2kuc2hpZnQoKTtmPWM7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7bz1kKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpfWJyZWFrO2Nhc2UgMzE6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vK2kuc2hpZnQoKTtmPWM7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7bz1kKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2lmKDA9PT1pLmxlbmd0aClicmVhazt1PW87Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7ZGVmYXVsdDppZih4PDMyKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAke3h9YCk7aWYoeDwyNDcpaS5wdXNoKHgtMTM5KTtlbHNlIGlmKHg8MjUxKWkucHVzaCgyNTYqKHgtMjQ3KStlW2grK10rMTA4KTtlbHNlIGlmKHg8MjU1KWkucHVzaCgyNTYqLSh4LTI1MSktZVtoKytdLTEwOCk7ZWxzZXtpLnB1c2goKGVbaF08PDI0fGVbaCsxXTw8MTZ8ZVtoKzJdPDw4fGVbaCszXSkvNjU1MzYpO2grPTR9fVMmJihpLmxlbmd0aD0wKX19KGUpfWNvbnN0IGM9W107Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uc3RydWN0b3I9PT1Db21waWxlZEZvbnQmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb21waWxlZEZvbnQuIik7dGhpcy5mb250TWF0cml4PWU7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZD1PYmplY3QuY3JlYXRlKG51bGwpfWdldFBhdGhKcyhlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7bGV0IHI9dGhpcy5jb21waWxlZEdseXBoc1thXTtpZighcil0cnl7cj10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1thXSxhKTt0aGlzLmNvbXBpbGVkR2x5cGhzW2FdPXJ9Y2F0Y2goZSl7dGhpcy5jb21waWxlZEdseXBoc1thXT1jO3ZvaWQgMD09PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XSYmKHRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XT1hKTt0aHJvdyBlfXZvaWQgMD09PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XSYmKHRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XT1hKTtyZXR1cm4gcn1jb21waWxlR2x5cGgoZSx0KXtpZighZXx8MD09PWUubGVuZ3RofHwxND09PWVbMF0pcmV0dXJuIGM7bGV0IGE9dGhpcy5mb250TWF0cml4O2lmKHRoaXMuaXNDRkZDSURGb250KXtjb25zdCBlPXRoaXMuZmRTZWxlY3QuZ2V0RkRJbmRleCh0KTtpZihlPj0wJiZlPHRoaXMuZmRBcnJheS5sZW5ndGgpe2E9dGhpcy5mZEFycmF5W2VdLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpfHxyLkZPTlRfSURFTlRJVFlfTUFUUklYfWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1jb25zdCBuPVt7Y21kOiJzYXZlIn0se2NtZDoidHJhbnNmb3JtIixhcmdzOmEuc2xpY2UoKX0se2NtZDoic2NhbGUiLGFyZ3M6WyJzaXplIiwiLXNpemUiXX1dO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLG4sdCk7bi5wdXNoKHtjbWQ6InJlc3RvcmUifSk7cmV0dXJuIG59Y29tcGlsZUdseXBoSW1wbCgpeygwLHIudW5yZWFjaGFibGUpKCJDaGlsZHJlbiBjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgdGhpcy4iKX1oYXNCdWlsdFBhdGgoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOmF9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO3JldHVybiB2b2lkIDAhPT10aGlzLmNvbXBpbGVkR2x5cGhzW2FdJiZ2b2lkIDAhPT10aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbdF19fWNsYXNzIFRydWVUeXBlQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGF8fFs0ODhlLTYsMCwwLDQ4OGUtNiwwLDBdKTt0aGlzLmdseXBocz1lO3RoaXMuY21hcD10fWNvbXBpbGVHbHlwaEltcGwoZSx0KXtjb21waWxlR2x5ZihlLHQsdGhpcyl9fWNsYXNzIFR5cGUyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoYXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9cnx8KDAsaS5nZXRHbHlwaHNVbmljb2RlKSgpO3RoaXMuZ3N1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLmdzdWJycyk7dGhpcy5zdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5zdWJycyk7dGhpcy5pc0NGRkNJREZvbnQ9ZS5pc0NGRkNJREZvbnQ7dGhpcy5mZFNlbGVjdD1lLmZkU2VsZWN0O3RoaXMuZmRBcnJheT1lLmZkQXJyYXl9Y29tcGlsZUdseXBoSW1wbChlLHQsYSl7Y29tcGlsZUNoYXJTdHJpbmcoZSx0LHRoaXMsYSl9fXQuRm9udFJlbmRlcmVyRmFjdG9yeT1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IG4saSxzLG8sYyxsO2NvbnN0IGg9Z2V0VWludDE2KGEsNCk7Zm9yKGxldCBlPTAsdT0xMjtlPGg7ZSsrLHUrPTE2KXtjb25zdCBlPSgwLHIuYnl0ZXNUb1N0cmluZykoYS5zdWJhcnJheSh1LHUrNCkpLGg9Z2V0VWludDMyKGEsdSs4KSxkPWdldFVpbnQzMihhLHUrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOm49cGFyc2VDbWFwKGEsaCk7YnJlYWs7Y2FzZSJnbHlmIjppPWEuc3ViYXJyYXkoaCxoK2QpO2JyZWFrO2Nhc2UibG9jYSI6cz1hLnN1YmFycmF5KGgsaCtkKTticmVhaztjYXNlImhlYWQiOmw9Z2V0VWludDE2KGEsaCsxOCk7Yz1nZXRVaW50MTYoYSxoKzUwKTticmVhaztjYXNlIkNGRiAiOm89cGFyc2VDZmYoYSxoLGgrZCx0KX19aWYoaSl7Y29uc3QgdD1sP1sxL2wsMCwwLDEvbCwwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGEpe2xldCByLG47aWYoYSl7cj00O249Z2V0VWludDMyfWVsc2V7cj0yO249KGUsdCk9PjIqZ2V0VWludDE2KGUsdCl9Y29uc3QgaT1bXTtsZXQgcz1uKHQsMCk7Zm9yKGxldCBhPXI7YTx0Lmxlbmd0aDthKz1yKXtjb25zdCByPW4odCxhKTtpLnB1c2goZS5zdWJhcnJheShzLHIpKTtzPXJ9cmV0dXJuIGl9KGkscyxjKSxuLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChvLG4sZS5mb250TWF0cml4LGUuZ2x5cGhOYW1lTWFwKX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldE1ldHJpY3M9dC5nZXRGb250QmFzaWNNZXRyaWNzPXZvaWQgMDt2YXIgcj1hKDE0OSk7Y29uc3Qgbj0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDA7ZVsiQ291cmllci1Cb2xkIl09NjAwO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDA7ZVsiQ291cmllci1PYmxpcXVlIl09NjAwO2UuSGVsdmV0aWNhPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkIl09KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1PYmxpcXVlIl09KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZS5TeW1ib2w9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS51bml2ZXJzYWw9NzEzO2UubnVtYmVyc2lnbj01MDA7ZS5leGlzdGVudGlhbD01NDk7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5zdWNodGhhdD00Mzk7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlza21hdGg9NTAwO2UucGx1cz01NDk7ZS5jb21tYT0yNTA7ZS5taW51cz01NDk7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NDk7ZS5lcXVhbD01NDk7ZS5ncmVhdGVyPTU0OTtlLnF1ZXN0aW9uPTQ0NDtlLmNvbmdydWVudD01NDk7ZS5BbHBoYT03MjI7ZS5CZXRhPTY2NztlLkNoaT03MjI7ZS5EZWx0YT02MTI7ZS5FcHNpbG9uPTYxMTtlLlBoaT03NjM7ZS5HYW1tYT02MDM7ZS5FdGE9NzIyO2UuSW90YT0zMzM7ZS50aGV0YTE9NjMxO2UuS2FwcGE9NzIyO2UuTGFtYmRhPTY4NjtlLk11PTg4OTtlLk51PTcyMjtlLk9taWNyb249NzIyO2UuUGk9NzY4O2UuVGhldGE9NzQxO2UuUmhvPTU1NjtlLlNpZ21hPTU5MjtlLlRhdT02MTE7ZS5VcHNpbG9uPTY5MDtlLnNpZ21hMT00Mzk7ZS5PbWVnYT03Njg7ZS5YaT02NDU7ZS5Qc2k9Nzk1O2UuWmV0YT02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS50aGVyZWZvcmU9ODYzO2UuYnJhY2tldHJpZ2h0PTMzMztlLnBlcnBlbmRpY3VsYXI9NjU4O2UudW5kZXJzY29yZT01MDA7ZS5yYWRpY2FsZXg9NTAwO2UuYWxwaGE9NjMxO2UuYmV0YT01NDk7ZS5jaGk9NTQ5O2UuZGVsdGE9NDk0O2UuZXBzaWxvbj00Mzk7ZS5waGk9NTIxO2UuZ2FtbWE9NDExO2UuZXRhPTYwMztlLmlvdGE9MzI5O2UucGhpMT02MDM7ZS5rYXBwYT01NDk7ZS5sYW1iZGE9NTQ5O2UubXU9NTc2O2UubnU9NTIxO2Uub21pY3Jvbj01NDk7ZS5waT01NDk7ZS50aGV0YT01MjE7ZS5yaG89NTQ5O2Uuc2lnbWE9NjAzO2UudGF1PTQzOTtlLnVwc2lsb249NTc2O2Uub21lZ2ExPTcxMztlLm9tZWdhPTY4NjtlLnhpPTQ5MztlLnBzaT02ODY7ZS56ZXRhPTQ5NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5zaW1pbGFyPTU0OTtlLkV1cm89NzUwO2UuVXBzaWxvbjE9NjIwO2UubWludXRlPTI0NztlLmxlc3NlcXVhbD01NDk7ZS5mcmFjdGlvbj0xNjc7ZS5pbmZpbml0eT03MTM7ZS5mbG9yaW49NTAwO2UuY2x1Yj03NTM7ZS5kaWFtb25kPTc1MztlLmhlYXJ0PTc1MztlLnNwYWRlPTc1MztlLmFycm93Ym90aD0xMDQyO2UuYXJyb3dsZWZ0PTk4NztlLmFycm93dXA9NjAzO2UuYXJyb3dyaWdodD05ODc7ZS5hcnJvd2Rvd249NjAzO2UuZGVncmVlPTQwMDtlLnBsdXNtaW51cz01NDk7ZS5zZWNvbmQ9NDExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLm11bHRpcGx5PTU0OTtlLnByb3BvcnRpb25hbD03MTM7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS5idWxsZXQ9NDYwO2UuZGl2aWRlPTU0OTtlLm5vdGVxdWFsPTU0OTtlLmVxdWl2YWxlbmNlPTU0OTtlLmFwcHJveGVxdWFsPTU0OTtlLmVsbGlwc2lzPTFlMztlLmFycm93dmVydGV4PTYwMztlLmFycm93aG9yaXpleD0xZTM7ZS5jYXJyaWFnZXJldHVybj02NTg7ZS5hbGVwaD04MjM7ZS5JZnJha3R1cj02ODY7ZS5SZnJha3R1cj03OTU7ZS53ZWllcnN0cmFzcz05ODc7ZS5jaXJjbGVtdWx0aXBseT03Njg7ZS5jaXJjbGVwbHVzPTc2ODtlLmVtcHR5c2V0PTgyMztlLmludGVyc2VjdGlvbj03Njg7ZS51bmlvbj03Njg7ZS5wcm9wZXJzdXBlcnNldD03MTM7ZS5yZWZsZXhzdXBlcnNldD03MTM7ZS5ub3RzdWJzZXQ9NzEzO2UucHJvcGVyc3Vic2V0PTcxMztlLnJlZmxleHN1YnNldD03MTM7ZS5lbGVtZW50PTcxMztlLm5vdGVsZW1lbnQ9NzEzO2UuYW5nbGU9NzY4O2UuZ3JhZGllbnQ9NzEzO2UucmVnaXN0ZXJzZXJpZj03OTA7ZS5jb3B5cmlnaHRzZXJpZj03OTA7ZS50cmFkZW1hcmtzZXJpZj04OTA7ZS5wcm9kdWN0PTgyMztlLnJhZGljYWw9NTQ5O2UuZG90bWF0aD0yNTA7ZS5sb2dpY2Fsbm90PTcxMztlLmxvZ2ljYWxhbmQ9NjAzO2UubG9naWNhbG9yPTYwMztlLmFycm93ZGJsYm90aD0xMDQyO2UuYXJyb3dkYmxsZWZ0PTk4NztlLmFycm93ZGJsdXA9NjAzO2UuYXJyb3dkYmxyaWdodD05ODc7ZS5hcnJvd2RibGRvd249NjAzO2UubG96ZW5nZT00OTQ7ZS5hbmdsZWxlZnQ9MzI5O2UucmVnaXN0ZXJzYW5zPTc5MDtlLmNvcHlyaWdodHNhbnM9NzkwO2UudHJhZGVtYXJrc2Fucz03ODY7ZS5zdW1tYXRpb249NzEzO2UucGFyZW5sZWZ0dHA9Mzg0O2UucGFyZW5sZWZ0ZXg9Mzg0O2UucGFyZW5sZWZ0YnQ9Mzg0O2UuYnJhY2tldGxlZnR0cD0zODQ7ZS5icmFja2V0bGVmdGV4PTM4NDtlLmJyYWNrZXRsZWZ0YnQ9Mzg0O2UuYnJhY2VsZWZ0dHA9NDk0O2UuYnJhY2VsZWZ0bWlkPTQ5NDtlLmJyYWNlbGVmdGJ0PTQ5NDtlLmJyYWNlZXg9NDk0O2UuYW5nbGVyaWdodD0zMjk7ZS5pbnRlZ3JhbD0yNzQ7ZS5pbnRlZ3JhbHRwPTY4NjtlLmludGVncmFsZXg9Njg2O2UuaW50ZWdyYWxidD02ODY7ZS5wYXJlbnJpZ2h0dHA9Mzg0O2UucGFyZW5yaWdodGV4PTM4NDtlLnBhcmVucmlnaHRidD0zODQ7ZS5icmFja2V0cmlnaHR0cD0zODQ7ZS5icmFja2V0cmlnaHRleD0zODQ7ZS5icmFja2V0cmlnaHRidD0zODQ7ZS5icmFjZXJpZ2h0dHA9NDk0O2UuYnJhY2VyaWdodG1pZD00OTQ7ZS5icmFjZXJpZ2h0YnQ9NDk0O2UuYXBwbGU9NzkwfSkpO2VbIlRpbWVzLVJvbWFuIl09KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MDg7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTY0O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU2NDtlLmVxdWFsPTU2NDtlLmdyZWF0ZXI9NTY0O2UucXVlc3Rpb249NDQ0O2UuYXQ9OTIxO2UuQT03MjI7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NTU2O2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj0zODk7ZS5LPTcyMjtlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD01NTY7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj03MjI7ZS5XPTk0NDtlLlg9NzIyO2UuWT03MjI7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT00NDQ7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9MzMzO2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MTgwO2UucXVvdGVkYmxsZWZ0PTQ0NDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NDUzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT00NDQ7ZS5xdW90ZWRibHJpZ2h0PTQ0NDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj00NDQ7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9ODg5O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT00NDQ7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU2NDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NDQ0O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz00NDQ7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz00NDQ7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT00NDQ7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT00NDQ7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTQ0NDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NTU2O2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj01ODg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTY0O2UudWFjdXRlPTUwMDtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz00NDQ7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTU2NDtlLmJyb2tlbmJhcj0yMDA7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTMzMztlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzI2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj00NDQ7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzQ0O2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01NjQ7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTY0O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkIl09KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTFlMztlLmFtcGVyc2FuZD04MzM7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9OTMwO2UuQT03MjI7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTc3ODtlLkw9NjY3O2UuTT05NDQ7ZS5OPTcyMjtlLk89Nzc4O2UuUD02MTE7ZS5RPTc3ODtlLlI9NzIyO2UuUz01NTY7ZS5UPTY2NztlLlU9NzIyO2UuVj03MjI7ZS5XPTFlMztlLlg9NzIyO2UuWT03MjI7ZS5aPTY2NztlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTgxO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTU1NjtlLmM9NDQ0O2UuZD01NTY7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0zMzM7ZS5rPTU1NjtlLmw9Mjc4O2UubT04MzM7ZS5uPTU1NjtlLm89NTAwO2UucD01NTY7ZS5xPTU1NjtlLnI9NDQ0O2Uucz0zODk7ZS50PTMzMztlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD0zOTQ7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zOTQ7ZS5hc2NpaXRpbGRlPTUyMDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTQwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTMwMDtlLkxzbGFzaD02Njc7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTMzMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01NTY7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjY3O2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTQ0NDtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjY3O2UuVGhvcm49NjExO2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02NzI7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02Njc7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTQ0NDtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTY2NztlLlpjYXJvbj02Njc7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249NDE2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249Mzk0O2UuS2NvbW1hYWNjZW50PTc3ODtlLkxhY3V0ZT02Njc7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjY3O2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9NDQ0O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTY2NztlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01NzA7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTcwO2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zODk7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9ODMyO2UuQT02Njc7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTY2NztlLkY9NjY3O2UuRz03MjI7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTY2NztlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTg4OTtlLlg9NjY3O2UuWT02MTE7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTcwO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTU1NjtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTU2O2Uudj00NDQ7ZS53PTY2NztlLng9NTAwO2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD0zNDg7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zNDg7ZS5hc2NpaXRpbGRlPTU3MDtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTAwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTk0NDtlLm9yZGZlbWluaW5lPTI2NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMwMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NjExO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT02MTE7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjY3O2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02MDg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzY2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTc2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzgyO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz02MDY7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NjA2O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1JdGFsaWMiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQyMDtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz02NzU7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9Njc1O2UuZXF1YWw9Njc1O2UuZ3JlYXRlcj02NzU7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MjA7ZS5BPTYxMTtlLkI9NjExO2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj02MTE7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTQ0NDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NjY3O2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02MTE7ZS5TPTUwMDtlLlQ9NTU2O2UuVT03MjI7ZS5WPTYxMTtlLlc9ODMzO2UuWD02MTE7ZS5ZPTU1NjtlLlo9NTU2O2UuYnJhY2tldGxlZnQ9Mzg5O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zODk7ZS5hc2NpaWNpcmN1bT00MjI7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0yNzg7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NDQ0O2UubD0yNzg7ZS5tPTcyMjtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTQ0NDtlLnc9NjY3O2UueD00NDQ7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTQwMDtlLmJhcj0yNzU7ZS5icmFjZXJpZ2h0PTQwMDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yMTQ7ZS5xdW90ZWRibGxlZnQ9NTU2O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MjM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTU1NjtlLnF1b3RlZGJscmlnaHQ9NTU2O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9ODg5O2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9ODg5O2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT02Njc7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz01NTY7ZS5kaXZpZGU9Njc1O2UuWWFjdXRlPTU1NjtlLkFjaXJjdW1mbGV4PTYxMTtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD02Njc7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD01NTY7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02MTE7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02MTE7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD01NTY7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02MTE7ZS5TYWN1dGU9NTAwO2UuZGNhcm9uPTU0NDtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTYxMTtlLkFicmV2ZT02MTE7ZS5tdWx0aXBseT02NzU7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTU1NjtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NjY3O2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTY2NztlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9Njc1O2UuYnJva2VuYmFyPTI3NTtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NTU2O2UuWmNhcm9uPTU1NjtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMDA7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTYxMTtlLkFkaWVyZXNpcz02MTE7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTUwMDtlLmxjYXJvbj0zMDA7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTAwO2UuU2NvbW1hYWNjZW50PTUwMDtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NjY3O2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02MTE7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTYxMTtlLkFvZ29uZWs9NjExO2UuQXJpbmc9NjExO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTQ0NDtlLm1pbnVzPTY3NTtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02NzU7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2UuWmFwZkRpbmdiYXRzPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5hMT05NzQ7ZS5hMj05NjE7ZS5hMjAyPTk3NDtlLmEzPTk4MDtlLmE0PTcxOTtlLmE1PTc4OTtlLmExMTk9NzkwO2UuYTExOD03OTE7ZS5hMTE3PTY5MDtlLmExMT05NjA7ZS5hMTI9OTM5O2UuYTEzPTU0OTtlLmExND04NTU7ZS5hMTU9OTExO2UuYTE2PTkzMztlLmExMDU9OTExO2UuYTE3PTk0NTtlLmExOD05NzQ7ZS5hMTk9NzU1O2UuYTIwPTg0NjtlLmEyMT03NjI7ZS5hMjI9NzYxO2UuYTIzPTU3MTtlLmEyND02Nzc7ZS5hMjU9NzYzO2UuYTI2PTc2MDtlLmEyNz03NTk7ZS5hMjg9NzU0O2UuYTY9NDk0O2UuYTc9NTUyO2UuYTg9NTM3O2UuYTk9NTc3O2UuYTEwPTY5MjtlLmEyOT03ODY7ZS5hMzA9Nzg4O2UuYTMxPTc4ODtlLmEzMj03OTA7ZS5hMzM9NzkzO2UuYTM0PTc5NDtlLmEzNT04MTY7ZS5hMzY9ODIzO2UuYTM3PTc4OTtlLmEzOD04NDE7ZS5hMzk9ODIzO2UuYTQwPTgzMztlLmE0MT04MTY7ZS5hNDI9ODMxO2UuYTQzPTkyMztlLmE0ND03NDQ7ZS5hNDU9NzIzO2UuYTQ2PTc0OTtlLmE0Nz03OTA7ZS5hNDg9NzkyO2UuYTQ5PTY5NTtlLmE1MD03NzY7ZS5hNTE9NzY4O2UuYTUyPTc5MjtlLmE1Mz03NTk7ZS5hNTQ9NzA3O2UuYTU1PTcwODtlLmE1Nj02ODI7ZS5hNTc9NzAxO2UuYTU4PTgyNjtlLmE1OT04MTU7ZS5hNjA9Nzg5O2UuYTYxPTc4OTtlLmE2Mj03MDc7ZS5hNjM9Njg3O2UuYTY0PTY5NjtlLmE2NT02ODk7ZS5hNjY9Nzg2O2UuYTY3PTc4NztlLmE2OD03MTM7ZS5hNjk9NzkxO2UuYTcwPTc4NTtlLmE3MT03OTE7ZS5hNzI9ODczO2UuYTczPTc2MTtlLmE3ND03NjI7ZS5hMjAzPTc2MjtlLmE3NT03NTk7ZS5hMjA0PTc1OTtlLmE3Nj04OTI7ZS5hNzc9ODkyO2UuYTc4PTc4ODtlLmE3OT03ODQ7ZS5hODE9NDM4O2UuYTgyPTEzODtlLmE4Mz0yNzc7ZS5hODQ9NDE1O2UuYTk3PTM5MjtlLmE5OD0zOTI7ZS5hOTk9NjY4O2UuYTEwMD02Njg7ZS5hODk9MzkwO2UuYTkwPTM5MDtlLmE5Mz0zMTc7ZS5hOTQ9MzE3O2UuYTkxPTI3NjtlLmE5Mj0yNzY7ZS5hMjA1PTUwOTtlLmE4NT01MDk7ZS5hMjA2PTQxMDtlLmE4Nj00MTA7ZS5hODc9MjM0O2UuYTg4PTIzNDtlLmE5NT0zMzQ7ZS5hOTY9MzM0O2UuYTEwMT03MzI7ZS5hMTAyPTU0NDtlLmExMDM9NTQ0O2UuYTEwND05MTA7ZS5hMTA2PTY2NztlLmExMDc9NzYwO2UuYTEwOD03NjA7ZS5hMTEyPTc3NjtlLmExMTE9NTk1O2UuYTExMD02OTQ7ZS5hMTA5PTYyNjtlLmExMjA9Nzg4O2UuYTEyMT03ODg7ZS5hMTIyPTc4ODtlLmExMjM9Nzg4O2UuYTEyND03ODg7ZS5hMTI1PTc4ODtlLmExMjY9Nzg4O2UuYTEyNz03ODg7ZS5hMTI4PTc4ODtlLmExMjk9Nzg4O2UuYTEzMD03ODg7ZS5hMTMxPTc4ODtlLmExMzI9Nzg4O2UuYTEzMz03ODg7ZS5hMTM0PTc4ODtlLmExMzU9Nzg4O2UuYTEzNj03ODg7ZS5hMTM3PTc4ODtlLmExMzg9Nzg4O2UuYTEzOT03ODg7ZS5hMTQwPTc4ODtlLmExNDE9Nzg4O2UuYTE0Mj03ODg7ZS5hMTQzPTc4ODtlLmExNDQ9Nzg4O2UuYTE0NT03ODg7ZS5hMTQ2PTc4ODtlLmExNDc9Nzg4O2UuYTE0OD03ODg7ZS5hMTQ5PTc4ODtlLmExNTA9Nzg4O2UuYTE1MT03ODg7ZS5hMTUyPTc4ODtlLmExNTM9Nzg4O2UuYTE1ND03ODg7ZS5hMTU1PTc4ODtlLmExNTY9Nzg4O2UuYTE1Nz03ODg7ZS5hMTU4PTc4ODtlLmExNTk9Nzg4O2UuYTE2MD04OTQ7ZS5hMTYxPTgzODtlLmExNjM9MTAxNjtlLmExNjQ9NDU4O2UuYTE5Nj03NDg7ZS5hMTY1PTkyNDtlLmExOTI9NzQ4O2UuYTE2Nj05MTg7ZS5hMTY3PTkyNztlLmExNjg9OTI4O2UuYTE2OT05Mjg7ZS5hMTcwPTgzNDtlLmExNzE9ODczO2UuYTE3Mj04Mjg7ZS5hMTczPTkyNDtlLmExNjI9OTI0O2UuYTE3ND05MTc7ZS5hMTc1PTkzMDtlLmExNzY9OTMxO2UuYTE3Nz00NjM7ZS5hMTc4PTg4MztlLmExNzk9ODM2O2UuYTE5Mz04MzY7ZS5hMTgwPTg2NztlLmExOTk9ODY3O2UuYTE4MT02OTY7ZS5hMjAwPTY5NjtlLmExODI9ODc0O2UuYTIwMT04NzQ7ZS5hMTgzPTc2MDtlLmExODQ9OTQ2O2UuYTE5Nz03NzE7ZS5hMTg1PTg2NTtlLmExOTQ9NzcxO2UuYTE5OD04ODg7ZS5hMTg2PTk2NztlLmExOTU9ODg4O2UuYTE4Nz04MzE7ZS5hMTg4PTg3MztlLmExODk9OTI3O2UuYTE5MD05NzA7ZS5hMTkxPTkxOH0pKX0pKTt0LmdldE1ldHJpY3M9bjtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6LTQyNn07ZVsiQ291cmllci1Cb2xkIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0Mzl9O2VbIkNvdXJpZXItT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2UuSGVsdmV0aWNhPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTIzfTtlWyJIZWx2ZXRpY2EtQm9sZCJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTIzfTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiVGltZXMtUm9tYW4iXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2Mix4SGVpZ2h0OjQ1MH07ZVsiVGltZXMtQm9sZCJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6Njc2LHhIZWlnaHQ6NDYxfTtlWyJUaW1lcy1JdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY1Myx4SGVpZ2h0OjQ0MX07ZVsiVGltZXMtQm9sZEl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjY5LHhIZWlnaHQ6NDYyfTtlLlN5bWJvbD17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59O2UuWmFwZkRpbmdiYXRzPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn19KSk7dC5nZXRGb250QmFzaWNNZXRyaWNzPWl9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuR2x5ZlRhYmxlPXZvaWQgMDthKDEzOSk7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMTU3KTt0LkdseWZUYWJsZT1jbGFzcyBHbHlmVGFibGV7Y29uc3RydWN0b3IoZSl7bGV0e2dseWZUYWJsZTp0LGlzR2x5cGhMb2NhdGlvbnNMb25nOmEsbG9jYVRhYmxlOnIsbnVtR2x5cGhzOm59PWU7dGhpcy5nbHlwaHM9W107Y29uc3QgaT1uZXcgRGF0YVZpZXcoci5idWZmZXIsci5ieXRlT2Zmc2V0LHIuYnl0ZUxlbmd0aCkscz1uZXcgRGF0YVZpZXcodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCksbz1hPzQ6MjtsZXQgYz1hP2kuZ2V0VWludDMyKDApOjIqaS5nZXRVaW50MTYoMCksbD0wO2ZvcihsZXQgZT0wO2U8bjtlKyspe2wrPW87Y29uc3QgZT1hP2kuZ2V0VWludDMyKGwpOjIqaS5nZXRVaW50MTYobCk7aWYoZT09PWMpe3RoaXMuZ2x5cGhzLnB1c2gobmV3IEdseXBoKHt9KSk7Y29udGludWV9Y29uc3QgdD1HbHlwaC5wYXJzZShjLHMpO3RoaXMuZ2x5cGhzLnB1c2godCk7Yz1lfX1nZXRTaXplKCl7cmV0dXJuIHRoaXMuZ2x5cGhzLnJlZHVjZSgoKGUsdCk9PmUrKHQuZ2V0U2l6ZSgpKzMmLTQpKSwwKX13cml0ZSgpe2NvbnN0IGU9dGhpcy5nZXRTaXplKCksdD1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKGUpKSxhPWU+MTMxMDcwLHI9YT80OjIsbj1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKCh0aGlzLmdseXBocy5sZW5ndGgrMSkqcikpO2E/bi5zZXRVaW50MzIoMCwwKTpuLnNldFVpbnQxNigwLDApO2xldCBpPTAscz0wO2Zvcihjb25zdCBlIG9mIHRoaXMuZ2x5cGhzKXtpKz1lLndyaXRlKGksdCk7aT1pKzMmLTQ7cys9cjthP24uc2V0VWludDMyKHMsaSk6bi5zZXRVaW50MTYocyxpPj4xKX1yZXR1cm57aXNMb2NhdGlvbkxvbmc6YSxsb2NhOm5ldyBVaW50OEFycmF5KG4uYnVmZmVyKSxnbHlmOm5ldyBVaW50OEFycmF5KHQuYnVmZmVyKX19c2NhbGUoZSl7Zm9yKGxldCB0PTAsYT10aGlzLmdseXBocy5sZW5ndGg7dDxhO3QrKyl0aGlzLmdseXBoc1t0XS5zY2FsZShlW3RdKX19O2NsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUpe2xldHtoZWFkZXI6dD1udWxsLHNpbXBsZTphPW51bGwsY29tcG9zaXRlczpyPW51bGx9PWU7dGhpcy5oZWFkZXI9dDt0aGlzLnNpbXBsZT1hO3RoaXMuY29tcG9zaXRlcz1yfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixuXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKG4pO2lmKCEoMzImbi5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3Qgbj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6bn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKGUpe2xldHtudW1iZXJPZkNvbnRvdXJzOnQseE1pbjphLHlNaW46cix4TWF4Om4seU1heDppfT1lO3RoaXMubnVtYmVyT2ZDb250b3Vycz10O3RoaXMueE1pbj1hO3RoaXMueU1pbj1yO3RoaXMueE1heD1uO3RoaXMueU1heD1pfXN0YXRpYyBwYXJzZShlLHQpe3JldHVyblsxMCxuZXcgR2x5cGhIZWFkZXIoe251bWJlck9mQ29udG91cnM6dC5nZXRJbnQxNihlKSx4TWluOnQuZ2V0SW50MTYoZSsyKSx5TWluOnQuZ2V0SW50MTYoZSs0KSx4TWF4OnQuZ2V0SW50MTYoZSs2KSx5TWF4OnQuZ2V0SW50MTYoZSs4KX0pXX1nZXRTaXplKCl7cmV0dXJuIDEwfXdyaXRlKGUsdCl7dC5zZXRJbnQxNihlLHRoaXMubnVtYmVyT2ZDb250b3Vycyk7dC5zZXRJbnQxNihlKzIsdGhpcy54TWluKTt0LnNldEludDE2KGUrNCx0aGlzLnlNaW4pO3Quc2V0SW50MTYoZSs2LHRoaXMueE1heCk7dC5zZXRJbnQxNihlKzgsdGhpcy55TWF4KTtyZXR1cm4gMTB9c2NhbGUoZSx0KXt0aGlzLnhNaW49TWF0aC5yb3VuZChlKyh0aGlzLnhNaW4tZSkqdCk7dGhpcy54TWF4PU1hdGgucm91bmQoZSsodGhpcy54TWF4LWUpKnQpfX1jbGFzcyBDb250b3Vye2NvbnN0cnVjdG9yKGUpe2xldHtmbGFnczp0LHhDb29yZGluYXRlczphLHlDb29yZGluYXRlczpyfT1lO3RoaXMueENvb3JkaW5hdGVzPWE7dGhpcy55Q29vcmRpbmF0ZXM9cjt0aGlzLmZsYWdzPXR9fWNsYXNzIFNpbXBsZUdseXBoe2NvbnN0cnVjdG9yKGUpe2xldHtjb250b3Vyczp0LGluc3RydWN0aW9uczphfT1lO3RoaXMuY29udG91cnM9dDt0aGlzLmluc3RydWN0aW9ucz1hfXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPGE7bisrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IG49clthLTFdKzEsaT10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWk7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPG47ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBuPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8bjtlKyspby5wdXNoKHIpO2ErPW59fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgbj1vW2FdO2lmKDImbil7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmbj9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2Jm4pbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IG49b1thXTtpZig0Jm4pe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJm4/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZuKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmbnw2NCZuKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IG49MCxpPXIueENvb3JkaW5hdGVzLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXIueENvb3JkaW5hdGVzW25dLHM9ci55Q29vcmRpbmF0ZXNbbl07bGV0IG89TWF0aC5hYnMoaS10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9aTtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10sbj1bXSxpPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O24ucHVzaChlKX1lbHNlIG4ucHVzaChsKX1vPWg7aS5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBpKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLG49ci5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1yW2FdLHM9aVthXTtpZigyJnMpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW5bYV0scz1pW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLG49YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8bjtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3IoZSl7bGV0e2ZsYWdzOnQsZ2x5cGhJbmRleDphLGFyZ3VtZW50MTpyLGFyZ3VtZW50MjpuLHRyYW5zZjppLGluc3RydWN0aW9uczpzfT1lO3RoaXMuZmxhZ3M9dDt0aGlzLmdseXBoSW5kZXg9YTt0aGlzLmFyZ3VtZW50MT1yO3RoaXMuYXJndW1lbnQyPW47dGhpcy50cmFuc2Y9aTt0aGlzLmluc3RydWN0aW9ucz1zfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0IGE9ZSxyPVtdO2xldCBuPXQuZ2V0VWludDE2KGUpO2NvbnN0IGk9dC5nZXRVaW50MTYoZSsyKTtlKz00O2xldCBzLG87aWYoMSZuKXtpZigyJm4pe3M9dC5nZXRJbnQxNihlKTtvPXQuZ2V0SW50MTYoZSsyKX1lbHNle3M9dC5nZXRVaW50MTYoZSk7bz10LmdldFVpbnQxNihlKzIpfWUrPTQ7bl49MX1lbHNle2lmKDImbil7cz10LmdldEludDgoZSk7bz10LmdldEludDgoZSsxKX1lbHNle3M9dC5nZXRVaW50OChlKTtvPXQuZ2V0VWludDgoZSsxKX1lKz0yfWlmKDgmbil7ci5wdXNoKHQuZ2V0VWludDE2KGUpKTtlKz0yfWVsc2UgaWYoNjQmbil7ci5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMikpO2UrPTR9ZWxzZSBpZigxMjgmbil7ci5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMiksdC5nZXRVaW50MTYoZSs0KSx0LmdldFVpbnQxNihlKzYpKTtlKz04fWxldCBjPW51bGw7aWYoMjU2Jm4pe2NvbnN0IGE9dC5nZXRVaW50MTYoZSk7ZSs9MjtjPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZSthKTtlKz1hfXJldHVybltlLWEsbmV3IENvbXBvc2l0ZUdseXBoKHtmbGFnczpuLGdseXBoSW5kZXg6aSxhcmd1bWVudDE6cyxhcmd1bWVudDI6byx0cmFuc2Y6cixpbnN0cnVjdGlvbnM6Y30pXX1nZXRTaXplKCl7bGV0IGU9NCsyKnRoaXMudHJhbnNmLmxlbmd0aDsyNTYmdGhpcy5mbGFncyYmKGUrPTIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fChlKz0yKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fChlKz0yKTtyZXR1cm4gZX13cml0ZShlLHQpe2NvbnN0IGE9ZTsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwodGhpcy5mbGFnc3w9MSk6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwodGhpcy5mbGFnc3w9MSk7dC5zZXRVaW50MTYoZSx0aGlzLmZsYWdzKTt0LnNldFVpbnQxNihlKzIsdGhpcy5nbHlwaEluZGV4KTtlKz00O2lmKDEmdGhpcy5mbGFncyl7aWYoMiZ0aGlzLmZsYWdzKXt0LnNldEludDE2KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0SW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lbHNle3Quc2V0VWludDE2KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZSs9NH1lbHNle3Quc2V0VWludDgoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50OChlKzEsdGhpcy5hcmd1bWVudDIpO2UrPTJ9aWYoMjU2JnRoaXMuZmxhZ3Mpe3Quc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7fX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuT3BlblR5cGVGaWxlQnVpbGRlcj12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMTM5KTthKDIpO3ZhciByPWEoMTQ5KSxuPWEoMTQ0KTtmdW5jdGlvbiB3cml0ZUludDE2KGUsdCxhKXtlW3RdPWE+PjgmMjU1O2VbdCsxXT0yNTUmYX1mdW5jdGlvbiB3cml0ZUludDMyKGUsdCxhKXtlW3RdPWE+PjI0JjI1NTtlW3QrMV09YT4+MTYmMjU1O2VbdCsyXT1hPj44JjI1NTtlW3QrM109MjU1JmF9ZnVuY3Rpb24gd3JpdGVEYXRhKGUsdCxhKXtpZihhIGluc3RhbmNlb2YgVWludDhBcnJheSllLnNldChhLHQpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBhKWZvcihsZXQgcj0wLG49YS5sZW5ndGg7cjxuO3IrKyllW3QrK109MjU1JmEuY2hhckNvZGVBdChyKTtlbHNlIGZvcihjb25zdCByIG9mIGEpZVt0KytdPTI1NSZyfWNsYXNzIE9wZW5UeXBlRmlsZUJ1aWxkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5zZm50PWU7dGhpcy50YWJsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX1zdGF0aWMgZ2V0U2VhcmNoUGFyYW1zKGUsdCl7bGV0IGE9MSxyPTA7Zm9yKDsoYV5lKT5hOyl7YTw8PTE7cisrfWNvbnN0IG49YSp0O3JldHVybntyYW5nZTpuLGVudHJ5OnIscmFuZ2VTaGlmdDp0KmUtbn19dG9BcnJheSgpe2xldCBlPXRoaXMuc2ZudDtjb25zdCB0PXRoaXMudGFibGVzLGE9T2JqZWN0LmtleXModCk7YS5zb3J0KCk7Y29uc3QgaT1hLmxlbmd0aDtsZXQgcyxvLGMsbCxoLHU9MTIrMTYqaTtjb25zdCBkPVt1XTtmb3Iocz0wO3M8aTtzKyspe2w9dFthW3NdXTt1Kz0obC5sZW5ndGgrMyYtNCk+Pj4wO2QucHVzaCh1KX1jb25zdCBmPW5ldyBVaW50OEFycmF5KHUpO2ZvcihzPTA7czxpO3MrKyl7bD10W2Fbc11dO3dyaXRlRGF0YShmLGRbc10sbCl9InRydWUiPT09ZSYmKGU9KDAsbi5zdHJpbmczMikoNjU1MzYpKTtmWzBdPTI1NSZlLmNoYXJDb2RlQXQoMCk7ZlsxXT0yNTUmZS5jaGFyQ29kZUF0KDEpO2ZbMl09MjU1JmUuY2hhckNvZGVBdCgyKTtmWzNdPTI1NSZlLmNoYXJDb2RlQXQoMyk7d3JpdGVJbnQxNihmLDQsaSk7Y29uc3QgZz1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhpLDE2KTt3cml0ZUludDE2KGYsNixnLnJhbmdlKTt3cml0ZUludDE2KGYsOCxnLmVudHJ5KTt3cml0ZUludDE2KGYsMTAsZy5yYW5nZVNoaWZ0KTt1PTEyO2ZvcihzPTA7czxpO3MrKyl7aD1hW3NdO2ZbdV09MjU1JmguY2hhckNvZGVBdCgwKTtmW3UrMV09MjU1JmguY2hhckNvZGVBdCgxKTtmW3UrMl09MjU1JmguY2hhckNvZGVBdCgyKTtmW3UrM109MjU1JmguY2hhckNvZGVBdCgzKTtsZXQgZT0wO2ZvcihvPWRbc10sYz1kW3MrMV07bzxjO28rPTQpe2U9ZSsoMCxyLnJlYWRVaW50MzIpKGYsbyk+Pj4wfXdyaXRlSW50MzIoZix1KzQsZSk7d3JpdGVJbnQzMihmLHUrOCxkW3NdKTt3cml0ZUludDMyKGYsdSsxMix0W2hdLmxlbmd0aCk7dSs9MTZ9cmV0dXJuIGZ9YWRkVGFibGUoZSx0KXtpZihlIGluIHRoaXMudGFibGVzKXRocm93IG5ldyBFcnJvcigiVGFibGUgIitlKyIgYWxyZWFkeSBleGlzdHMiKTt0aGlzLnRhYmxlc1tlXT10fX10Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9T3BlblR5cGVGaWxlQnVpbGRlcn0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UeXBlMUZvbnQ9dm9pZCAwO2EoMTM5KTt2YXIgcj1hKDE4NSksbj1hKDE0NCksaT1hKDE4OCkscz1hKDE0OSksbz1hKDE1NCksYz1hKDE5OSk7ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLG49dC5sZW5ndGgsaT1yLW47bGV0IG89YSxjPSExO2Zvcig7bzxpOyl7bGV0IGE9MDtmb3IoO2E8biYmZVtvK2FdPT09dFthXTspYSsrO2lmKGE+PW4pe28rPWE7Zm9yKDtvPHImJigwLHMuaXNXaGl0ZVNwYWNlKShlW29dKTspbysrO2M9ITA7YnJlYWt9bysrfXJldHVybntmb3VuZDpjLGxlbmd0aDpvfX10LlR5cGUxRm9udD1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixsPXQucGVla0J5dGVzKDYpO2NvbnN0IGg9MTI4PT09bFswXSYmMT09PWxbMV07aWYoaCl7dC5za2lwKDYpO3I9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IGkscyxjLGw7dHJ5e2k9ZS5nZXRCeXRlcyh0KTtzPWkubGVuZ3RofWNhdGNoe31pZihzPT09dCl7Yz1maW5kQmxvY2soaSxhLHQtMiphLmxlbmd0aCk7aWYoYy5mb3VuZCYmYy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGkpLGxlbmd0aDp0fX0oMCxuLndhcm4pKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtjPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1jLmxlbmd0aClicmVhaztlLnBvcys9Yy5sZW5ndGg7aWYoYy5mb3VuZCl7bD1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKGwpcmV0dXJue3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyhsKSksbGVuZ3RoOmx9OygwLG4ud2FybikoJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgYy5UeXBlMVBhcnNlcih1LnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYoaCl7bD10LmdldEJ5dGVzKDYpO3M9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IGQ9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBjLlR5cGUxUGFyc2VyKGQuc3RyZWFtLCEwLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gZi5wcm9wZXJ0aWVzKWFbZV09Zi5wcm9wZXJ0aWVzW2VdO2NvbnN0IGc9Zi5jaGFyc3RyaW5ncyxwPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhnKSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWc7dGhpcy5kYXRhPXRoaXMud3JhcChlLHAsdGhpcy5jaGFyc3RyaW5ncyxtLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLG47Zm9yKG49MDtuPHQubGVuZ3RoO24rKylhLnB1c2godFtuXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe249YS5pbmRleE9mKHNbZV0pO24+PTAmJihyW2VdPW4pfX1yZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IG47Zm9yKG49MDtuPHQ7bisrKXIucHVzaChbMTFdKTtmb3Iobj0wO248YTtuKyspci5wdXNoKGVbbl0pO3JldHVybiByfXdyYXAoZSx0LGEsbixpKXtjb25zdCBzPW5ldyByLkNGRjtzLmhlYWRlcj1uZXcgci5DRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgci5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO28uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7by5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO28uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO28uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7by5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KTtvLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCk7by5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO28uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7by5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1vO2NvbnN0IGM9bmV3IHIuQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIik7Yy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtjLmFkZChlKTtjLmFkZChlKTtjLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPWM7cy5nbG9iYWxTdWJySW5kZXg9bmV3IHIuQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPWFbdV0uZ2x5cGhOYW1lOy0xPT09ci5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSk7aC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgci5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgci5DRkZJbmRleDtmLmFkZChbMTM5LDE0XSk7Zm9yKHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyByLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgci5DRkZJbmRleDtmb3IodT0wLGQ9bi5sZW5ndGg7dTxkO3UrKyltLmFkZChuW3VdKTtnLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IHIuQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVHlwZTFQYXJzZXI9dm9pZCAwO2EoMTM5KTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgxNTkpO3ZhciByPWEoMTg3KSxuPWEoMTQ5KSxpPWEoMTU0KSxzPWEoMTQ0KTtjb25zdCBvPVs0XSxjPVs1XSxsPVs2XSxoPVs3XSx1PVs4XSxkPVsxMiwzNV0sZj1bMTRdLGc9WzIxXSxwPVsyMl0sbT1bMzBdLGI9WzMxXTtjbGFzcyBUeXBlMUNoYXJTdHJpbmd7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTA7dGhpcy5sc2I9MDt0aGlzLmZsZXhpbmc9ITE7dGhpcy5vdXRwdXQ9W107dGhpcy5zdGFjaz1bXX1jb252ZXJ0KGUsdCxhKXtjb25zdCByPWUubGVuZ3RoO2xldCBuLGkseSx3PSExO2ZvcihsZXQgUz0wO1M8cjtTKyspe2xldCByPWVbU107aWYocjwzMil7MTI9PT1yJiYocj0ocjw8OCkrZVsrK1NdKTtzd2l0Y2gocil7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7dz0hMDticmVha31jb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKDAsZSk7YnJlYWt9dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbyk7YnJlYWs7Y2FzZSA1Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgyLGMpO2JyZWFrO2Nhc2UgNjp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxsKTticmVhaztjYXNlIDc6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsaCk7YnJlYWs7Y2FzZSA4Onc9dGhpcy5leGVjdXRlQ29tbWFuZCg2LHUpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7dz0hMDticmVha315PXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbeV0pe3c9ITA7YnJlYWt9dz10aGlzLmNvbnZlcnQodFt5XSx0LGEpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIHc7Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfW49dGhpcy5zdGFjay5wb3AoKTtpPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9aTt0aGlzLndpZHRoPW47dGhpcy5zdGFjay5wdXNoKG4saSk7dz10aGlzLmV4ZWN1dGVDb21tYW5kKDIscCk7YnJlYWs7Y2FzZSAxNDp0aGlzLm91dHB1dC5wdXNoKGZbMF0pO2JyZWFrO2Nhc2UgMjE6aWYodGhpcy5mbGV4aW5nKWJyZWFrO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLGcpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEscCk7YnJlYWs7Y2FzZSAzMDp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxtKTticmVhaztjYXNlIDMxOnc9dGhpcy5leGVjdXRlQ29tbWFuZCg0LGIpO2JyZWFrO2Nhc2UgMzA3ODppZihhKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7dz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsZil9ZWxzZSB3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxmKTticmVhaztjYXNlIDMwNzk6aWYodGhpcy5zdGFjay5sZW5ndGg8NCl7dz0hMDticmVha310aGlzLnN0YWNrLnBvcCgpO249dGhpcy5zdGFjay5wb3AoKTtjb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPWk7dGhpcy53aWR0aD1uO3RoaXMuc3RhY2sucHVzaChuLGksZSk7dz10aGlzLmV4ZWN1dGVDb21tYW5kKDMsZyk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9Y29uc3QgUz10aGlzLnN0YWNrLnBvcCgpLHg9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goeC9TKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha315PXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgQz10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT15JiYzPT09Qyl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsZCwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09eSYmMD09PUMmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLHMud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytyKyciJyl9aWYodylicmVha31lbHNle3I8PTI0Nj9yLT0xMzk6cj1yPD0yNTA/MjU2KihyLTI0NykrZVsrK1NdKzEwODpyPD0yNTQ/LTI1Niooci0yNTEpLWVbKytTXS0xMDg6KDI1NSZlWysrU10pPDwyNHwoMjU1JmVbKytTXSk8PDE2fCgyNTUmZVsrK1NdKTw8OHwoMjU1JmVbKytTXSk8PDA7dGhpcy5zdGFjay5wdXNoKHIpfX1yZXR1cm4gd31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPnIpcmV0dXJuITA7Y29uc3Qgbj1yLWU7Zm9yKGxldCBlPW47ZTxyO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShuLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgcixuLGk9MHx0O2ZvcihyPTA7cjxhO3IrKylpPTUyODQ1KihlW3JdK2kpKzIyNzE5JjY1NTM1O2NvbnN0IHM9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihyPWEsbj0wO248cztyKyssbisrKXtjb25zdCB0PWVbcl07b1tuXT10Xmk+Pjg7aT01Mjg0NSoodCtpKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXQuVHlwZTFQYXJzZXI9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGE9ISgoaXNIZXhEaWdpdCh0WzBdKXx8KDAsbi5pc1doaXRlU3BhY2UpKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgaS5TdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgcj0wfHQ7Y29uc3Qgbj1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KG4+Pj4xKTtsZXQgcyxvO2ZvcihzPTAsbz0wO3M8bjtzKyspe2NvbnN0IHQ9ZVtzXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtzKys7bGV0IGE7Zm9yKDtzPG4mJiFpc0hleERpZ2l0KGE9ZVtzXSk7KXMrKztpZihzPG4pe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtpW28rK109ZV5yPj44O3I9NTI4NDUqKGUrcikrMjI3MTkmNjU1MzV9fXJldHVybiBpLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsbi5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmISgwLG4uaXNXaGl0ZVNwYWNlKSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxyPVtdLG49T2JqZWN0LmNyZWF0ZShudWxsKTtuLmxlbklWPTQ7Y29uc3QgaT17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6bn19O2xldCBzLG8sYyxsO2Zvcig7bnVsbCE9PShzPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXMpe3M9dGhpcy5nZXRUb2tlbigpO3N3aXRjaChzKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtzPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09c3x8ImVuZCI9PT1zKWJyZWFrO2lmKCIvIiE9PXMpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPWkucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1zJiZ0aGlzLnByZXZDaGFyKCk7ci5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXMmJnRoaXMuZ2V0VG9rZW4oKTthW2VdPXJ9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlcigpO2JyZWFrO2Nhc2UiRXhwYW5zaW9uRmFjdG9yIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyKCl8fC4wNjticmVhaztjYXNlIkZvcmNlQm9sZCI6aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpufW9mIHIpe2NvbnN0IHI9bmV3IFR5cGUxQ2hhclN0cmluZyxzPXIuY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1yLm91dHB1dDtzJiYobz1bMTRdKTtjb25zdCBjPXtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOm8sd2lkdGg6ci53aWR0aCxsc2I6ci5sc2Isc2VhYzpyLnNlYWN9OyIubm90ZGVmIj09PW4/aS5jaGFyc3RyaW5ncy51bnNoaWZ0KGMpOmkuY2hhcnN0cmluZ3MucHVzaChjKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKG4pO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPXIud2lkdGgpfX1yZXR1cm4gaX1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgbj10aGlzLmdldFRva2VuKCk7bGV0IGk7aWYoL15cZCskLy50ZXN0KG4pKXtpPVtdO2NvbnN0IGU9MHxwYXJzZUludChuLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7aVtlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBpPSgwLHIuZ2V0RW5jb2RpbmcpKG4pO2UuYnVpbHRJbkVuY29kaW5nPWk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcz10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHNbM10sc1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKHNbMV0sc1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhdHRlcm49dm9pZCAwO3QuZ2V0VGlsaW5nUGF0dGVybklSPWZ1bmN0aW9uIGdldFRpbGluZ1BhdHRlcm5JUihlLHQsYSl7Y29uc3Qgbj10LmdldEFycmF5KCJNYXRyaXgiKSxpPXIuVXRpbC5ub3JtYWxpemVSZWN0KHQuZ2V0QXJyYXkoIkJCb3giKSkscz10LmdldCgiWFN0ZXAiKSxvPXQuZ2V0KCJZU3RlcCIpLGM9dC5nZXQoIlBhaW50VHlwZSIpLGw9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZihpWzJdLWlbMF09PTB8fGlbM10taVsxXT09MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXk6IFske2l9XS5gKTtyZXR1cm5bIlRpbGluZ1BhdHRlcm4iLGEsZSxuLGkscyxvLGMsbF19O2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTthKDEzOSk7YSgxNTkpO3ZhciByPWEoMTQ0KSxuPWEoMTUxKSxpPWEoMTYyKSxzPWEoMTQ5KTtjb25zdCBvPTIsYz0zLGw9NCxoPTUsdT02LGQ9Nzt0LlBhdHRlcm49Y2xhc3MgUGF0dGVybntjb25zdHJ1Y3RvcigpeygwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBQYXR0ZXJuLiIpfXN0YXRpYyBwYXJzZVNoYWRpbmcoZSx0LGEsaSxmKXtjb25zdCBnPWUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0/ZS5kaWN0OmUscD1nLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKHApe2Nhc2UgbzpjYXNlIGM6cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcoZyx0LGEsaSxmKTtjYXNlIGw6Y2FzZSBoOmNhc2UgdTpjYXNlIGQ6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsYSxpLGYpO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK3ApfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoZSk7cmV0dXJuIG5ldyBEdW1teVNoYWRpbmd9fX07Y2xhc3MgQmFzZVNoYWRpbmd7c3RhdGljIFNNQUxMX05VTUJFUj0xZS02O2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTaGFkaW5nJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNoYWRpbmcuIil9Z2V0SVIoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRJUmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tjb25zdHJ1Y3RvcihlLHQsYSxuLHMpe3N1cGVyKCk7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7dGhpcy5zaGFkaW5nVHlwZT1lLmdldCgiU2hhZGluZ1R5cGUiKTtjb25zdCBvPWkuQ29sb3JTcGFjZS5wYXJzZSh7Y3M6ZS5nZXRSYXcoIkNTIil8fGUuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczphLHBkZkZ1bmN0aW9uRmFjdG9yeTpuLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KSxsPWUuZ2V0QXJyYXkoIkJCb3giKTt0aGlzLmJib3g9QXJyYXkuaXNBcnJheShsKSYmND09PWwubGVuZ3RoP3IuVXRpbC5ub3JtYWxpemVSZWN0KGwpOm51bGw7bGV0IGg9MCx1PTE7aWYoZS5oYXMoIkRvbWFpbiIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2g9dFswXTt1PXRbMV19bGV0IGQ9ITEsZj0hMTtpZihlLmhhcygiRXh0ZW5kIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRXh0ZW5kIik7ZD10WzBdO2Y9dFsxXX1pZighKHRoaXMuc2hhZGluZ1R5cGUhPT1jfHxkJiZmKSl7Y29uc3RbZSx0LGEsbixpLHNdPXRoaXMuY29vcmRzQXJyLG89TWF0aC5oeXBvdChlLW4sdC1pKTthPD1zK28mJnM8PWErbyYmKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9ZDt0aGlzLmV4dGVuZEVuZD1mO2NvbnN0IGc9ZS5nZXRSYXcoIkZ1bmN0aW9uIikscD1uLmNyZWF0ZUZyb21BcnJheShnKSxtPSh1LWgpLzg0MCxiPXRoaXMuY29sb3JTdG9wcz1bXTtpZihoPj11fHxtPD0wKXsoMCxyLmluZm8pKCJCYWQgc2hhZGluZyBkb21haW4uIik7cmV0dXJufWNvbnN0IHk9bmV3IEZsb2F0MzJBcnJheShvLm51bUNvbXBzKSx3PW5ldyBGbG9hdDMyQXJyYXkoMSk7bGV0IFMseD0wO3dbMF09aDtwKHcsMCx5LDApO2xldCBDPW8uZ2V0UmdiKHksMCk7Y29uc3Qgdj1yLlV0aWwubWFrZUhleENvbG9yKENbMF0sQ1sxXSxDWzJdKTtiLnB1c2goWzAsdl0pO2xldCBrPTE7d1swXT1oK207cCh3LDAseSwwKTtsZXQgTz1vLmdldFJnYih5LDApLFQ9T1swXS1DWzBdKzEsTT1PWzFdLUNbMV0rMSxFPU9bMl0tQ1syXSsxLEQ9T1swXS1DWzBdLTEsTj1PWzFdLUNbMV0tMSxSPU9bMl0tQ1syXS0xO2ZvcihsZXQgZT0yO2U8ODQwO2UrKyl7d1swXT1oK2UqbTtwKHcsMCx5LDApO1M9by5nZXRSZ2IoeSwwKTtjb25zdCB0PWUteDtUPU1hdGgubWluKFQsKFNbMF0tQ1swXSsxKS90KTtNPU1hdGgubWluKE0sKFNbMV0tQ1sxXSsxKS90KTtFPU1hdGgubWluKEUsKFNbMl0tQ1syXSsxKS90KTtEPU1hdGgubWF4KEQsKFNbMF0tQ1swXS0xKS90KTtOPU1hdGgubWF4KE4sKFNbMV0tQ1sxXS0xKS90KTtSPU1hdGgubWF4KFIsKFNbMl0tQ1syXS0xKS90KTtpZighKEQ8PVQmJk48PU0mJlI8PUUpKXtjb25zdCBlPXIuVXRpbC5tYWtlSGV4Q29sb3IoT1swXSxPWzFdLE9bMl0pO2IucHVzaChbay84NDAsZV0pO1Q9U1swXS1PWzBdKzE7TT1TWzFdLU9bMV0rMTtFPVNbMl0tT1syXSsxO0Q9U1swXS1PWzBdLTE7Tj1TWzFdLU9bMV0tMTtSPVNbMl0tT1syXS0xO3g9aztDPU99az1lO089U31jb25zdCBMPXIuVXRpbC5tYWtlSGV4Q29sb3IoT1swXSxPWzFdLE9bMl0pO2IucHVzaChbMSxMXSk7bGV0ICQ9InRyYW5zcGFyZW50IjtpZihlLmhhcygiQmFja2dyb3VuZCIpKXtTPW8uZ2V0UmdiKGUuZ2V0KCJCYWNrZ3JvdW5kIiksMCk7JD1yLlV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKX1pZighZCl7Yi51bnNoaWZ0KFswLCRdKTtiWzFdWzBdKz1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVJ9aWYoIWYpe2IuYXQoLTEpWzBdLT1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVI7Yi5wdXNoKFsxLCRdKX10aGlzLmNvbG9yU3RvcHM9Yn1nZXRJUigpe2NvbnN0IGU9dGhpcy5jb29yZHNBcnIsdD10aGlzLnNoYWRpbmdUeXBlO2xldCBhLG4saSxzLGw7aWYodD09PW8pe249W2VbMF0sZVsxXV07aT1bZVsyXSxlWzNdXTtzPW51bGw7bD1udWxsO2E9ImF4aWFsIn1lbHNlIGlmKHQ9PT1jKXtuPVtlWzBdLGVbMV1dO2k9W2VbM10sZVs0XV07cz1lWzJdO2w9ZVs1XTthPSJyYWRpYWwifWVsc2UoMCxyLnVucmVhY2hhYmxlKShgZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICR7dH1gKTtyZXR1cm5bIlJhZGlhbEF4aWFsIixhLHRoaXMuYmJveCx0aGlzLmNvbG9yU3RvcHMsbixpLHMsbF19fWNsYXNzIE1lc2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMuY29udGV4dD10O3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MDtjb25zdCBhPXQubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KGEpO2NvbnN0IHI9dC5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMudG1wQ3NDb21wc0J1Zj10LmNvbG9yRm4/bmV3IEZsb2F0MzJBcnJheShyKTp0aGlzLnRtcENvbXBzQnVmfWdldCBoYXNEYXRhKCl7aWYodGhpcy5zdHJlYW0uZW5kKXJldHVybiB0aGlzLnN0cmVhbS5wb3M8dGhpcy5zdHJlYW0uZW5kO2lmKHRoaXMuYnVmZmVyTGVuZ3RoPjApcmV0dXJuITA7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7aWYoZTwwKXJldHVybiExO3RoaXMuYnVmZmVyPWU7dGhpcy5idWZmZXJMZW5ndGg9ODtyZXR1cm4hMH1yZWFkQml0cyhlKXtsZXQgdD10aGlzLmJ1ZmZlcixhPXRoaXMuYnVmZmVyTGVuZ3RoO2lmKDMyPT09ZSl7aWYoMD09PWEpcmV0dXJuKHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpKT4+PjA7dD10PDwyNHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDE2fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7dGhpcy5idWZmZXI9ZSYoMTw8YSktMTtyZXR1cm4odDw8OC1hfCgyNTUmZSk+PmEpPj4+MH1pZig4PT09ZSYmMD09PWEpcmV0dXJuIHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtmb3IoO2E8ZTspe3Q9dDw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk7YSs9OH1hLT1lO3RoaXMuYnVmZmVyTGVuZ3RoPWE7dGhpcy5idWZmZXI9dCYoMTw8YSktMTtyZXR1cm4gdD4+YX1hbGlnbigpe3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MH1yZWFkRmxhZygpe3JldHVybiB0aGlzLnJlYWRCaXRzKHRoaXMuY29udGV4dC5iaXRzUGVyRmxhZyl9cmVhZENvb3JkaW5hdGUoKXtjb25zdCBlPXRoaXMuY29udGV4dC5iaXRzUGVyQ29vcmRpbmF0ZSx0PXRoaXMucmVhZEJpdHMoZSksYT10aGlzLnJlYWRCaXRzKGUpLHI9dGhpcy5jb250ZXh0LmRlY29kZSxuPWU8MzI/MS8oKDE8PGUpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTA7cmV0dXJuW3QqbiooclsxXS1yWzBdKStyWzBdLGEqbiooclszXS1yWzJdKStyWzJdXX1yZWFkQ29tcG9uZW50cygpe2NvbnN0IGU9dGhpcy5jb250ZXh0Lm51bUNvbXBzLHQ9dGhpcy5jb250ZXh0LmJpdHNQZXJDb21wb25lbnQsYT10PDMyPzEvKCgxPDx0KS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwLHI9dGhpcy5jb250ZXh0LmRlY29kZSxuPXRoaXMudG1wQ29tcHNCdWY7Zm9yKGxldCBpPTAscz00O2k8ZTtpKysscys9Mil7Y29uc3QgZT10aGlzLnJlYWRCaXRzKHQpO25baV09ZSphKihyW3MrMV0tcltzXSkrcltzXX1jb25zdCBpPXRoaXMudG1wQ3NDb21wc0J1Zjt0aGlzLmNvbnRleHQuY29sb3JGbiYmdGhpcy5jb250ZXh0LmNvbG9yRm4obiwwLGksMCk7cmV0dXJuIHRoaXMuY29udGV4dC5jb2xvclNwYWNlLmdldFJnYihpLDApfX1jb25zdCBmPWZ1bmN0aW9uIGdldEJDbG9zdXJlKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZVt0XXx8PWZ1bmN0aW9uIGJ1aWxkQihlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8PWU7YSsrKXtjb25zdCByPWEvZSxuPTEtcjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbbipuKm4sMypyKm4qbiwzKnIqcipuLHIqcipyXSkpfXJldHVybiB0fSh0KX19KCk7Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGEscyxvKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBjPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPWMuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IGY9Yy5nZXRBcnJheSgiQkJveCIpO3RoaXMuYmJveD1BcnJheS5pc0FycmF5KGYpJiY0PT09Zi5sZW5ndGg/ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6bnVsbDtjb25zdCBnPWkuQ29sb3JTcGFjZS5wYXJzZSh7Y3M6Yy5nZXRSYXcoIkNTIil8fGMuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczphLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KTt0aGlzLmJhY2tncm91bmQ9Yy5oYXMoIkJhY2tncm91bmQiKT9nLmdldFJnYihjLmdldCgiQmFja2dyb3VuZCIpLDApOm51bGw7Y29uc3QgcD1jLmdldFJhdygiRnVuY3Rpb24iKSxtPXA/cy5jcmVhdGVGcm9tQXJyYXkocCk6bnVsbDt0aGlzLmNvb3Jkcz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLmZpZ3VyZXM9W107Y29uc3QgYj17Yml0c1BlckNvb3JkaW5hdGU6Yy5nZXQoIkJpdHNQZXJDb29yZGluYXRlIiksYml0c1BlckNvbXBvbmVudDpjLmdldCgiQml0c1BlckNvbXBvbmVudCIpLGJpdHNQZXJGbGFnOmMuZ2V0KCJCaXRzUGVyRmxhZyIpLGRlY29kZTpjLmdldEFycmF5KCJEZWNvZGUiKSxjb2xvckZuOm0sY29sb3JTcGFjZTpnLG51bUNvbXBzOm0/MTpnLm51bUNvbXBzfSx5PW5ldyBNZXNoU3RyZWFtUmVhZGVyKGUsYik7bGV0IHc9ITE7c3dpdGNoKHRoaXMuc2hhZGluZ1R5cGUpe2Nhc2UgbDp0aGlzLl9kZWNvZGVUeXBlNFNoYWRpbmcoeSk7YnJlYWs7Y2FzZSBoOmNvbnN0IGU9MHxjLmdldCgiVmVydGljZXNQZXJSb3ciKTtpZihlPDIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgVmVydGljZXNQZXJSb3ciKTt0aGlzLl9kZWNvZGVUeXBlNVNoYWRpbmcoeSxlKTticmVhaztjYXNlIHU6dGhpcy5fZGVjb2RlVHlwZTZTaGFkaW5nKHkpO3c9ITA7YnJlYWs7Y2FzZSBkOnRoaXMuX2RlY29kZVR5cGU3U2hhZGluZyh5KTt3PSEwO2JyZWFrO2RlZmF1bHQ6KDAsci51bnJlYWNoYWJsZSkoIlVuc3VwcG9ydGVkIG1lc2ggdHlwZS4iKX1pZih3KXt0aGlzLl91cGRhdGVCb3VuZHMoKTtmb3IobGV0IGU9MCx0PXRoaXMuZmlndXJlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLl9idWlsZEZpZ3VyZUZyb21QYXRjaChlKX10aGlzLl91cGRhdGVCb3VuZHMoKTt0aGlzLl9wYWNrRGF0YSgpfV9kZWNvZGVUeXBlNFNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLG49W10saT1bXTtsZXQgcz0wO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgbz1lLnJlYWRGbGFnKCksYz1lLnJlYWRDb29yZGluYXRlKCksbD1lLnJlYWRDb21wb25lbnRzKCk7aWYoMD09PXMpe2lmKCEoMDw9byYmbzw9MikpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTQgZmxhZyIpO3N3aXRjaChvKXtjYXNlIDA6cz0zO2JyZWFrO2Nhc2UgMTppLnB1c2goaS5hdCgtMiksaS5hdCgtMSkpO3M9MTticmVhaztjYXNlIDI6aS5wdXNoKGkuYXQoLTMpLGkuYXQoLTEpKTtzPTF9bi5wdXNoKG8pfWkucHVzaCh0Lmxlbmd0aCk7dC5wdXNoKGMpO2EucHVzaChsKTtzLS07ZS5hbGlnbigpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJ0cmlhbmdsZXMiLGNvb3JkczpuZXcgSW50MzJBcnJheShpKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3QgYT10aGlzLmNvb3JkcyxyPXRoaXMuY29sb3JzLG49W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxpPWUucmVhZENvbXBvbmVudHMoKTtuLnB1c2goYS5sZW5ndGgpO2EucHVzaCh0KTtyLnB1c2goaSl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ImxhdHRpY2UiLGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkobiksdmVydGljZXNQZXJSb3c6dH0pfV9kZWNvZGVUeXBlNlNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLG49bmV3IEludDMyQXJyYXkoMTYpLGk9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU2IGZsYWciKTtjb25zdCBvPXQubGVuZ3RoO2ZvcihsZXQgYT0wLHI9MCE9PXM/ODoxMjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09cz8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOm5bMTJdPW8rMztuWzEzXT1vKzQ7blsxNF09bys1O25bMTVdPW8rNjtuWzhdPW8rMjtuWzExXT1vKzc7bls0XT1vKzE7bls3XT1vKzg7blswXT1vO25bMV09bysxMTtuWzJdPW8rMTA7blszXT1vKzk7aVsyXT1jKzE7aVszXT1jKzI7aVswXT1jO2lbMV09YyszO2JyZWFrO2Nhc2UgMTpsPW5bMTJdO2g9blsxM107dT1uWzE0XTtkPW5bMTVdO25bMTJdPWQ7blsxM109byswO25bMTRdPW8rMTtuWzE1XT1vKzI7bls4XT11O25bMTFdPW8rMztuWzRdPWg7bls3XT1vKzQ7blswXT1sO25bMV09bys3O25bMl09bys2O25bM109bys1O2w9aVsyXTtoPWlbM107aVsyXT1oO2lbM109YztpWzBdPWw7aVsxXT1jKzE7YnJlYWs7Y2FzZSAyOmw9blsxNV07aD1uWzExXTtuWzEyXT1uWzNdO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09bls3XTtuWzExXT1vKzM7bls0XT1oO25bN109bys0O25bMF09bDtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtsPWlbM107aVsyXT1pWzFdO2lbM109YztpWzBdPWw7aVsxXT1jKzE7YnJlYWs7Y2FzZSAzOm5bMTJdPW5bMF07blsxM109byswO25bMTRdPW8rMTtuWzE1XT1vKzI7bls4XT1uWzFdO25bMTFdPW8rMztuWzRdPW5bMl07bls3XT1vKzQ7blswXT1uWzNdO25bMV09bys3O25bMl09bys2O25bM109bys1O2lbMl09aVswXTtpWzNdPWM7aVswXT1pWzFdO2lbMV09YysxfW5bNV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzBdXVswXS10W25bMTVdXVswXSs2Kih0W25bNF1dWzBdK3RbblsxXV1bMF0pLTIqKHRbblsxMl1dWzBdK3RbblszXV1bMF0pKzMqKHRbblsxM11dWzBdK3Rbbls3XV1bMF0pKS85LCgtNCp0W25bMF1dWzFdLXRbblsxNV1dWzFdKzYqKHRbbls0XV1bMV0rdFtuWzFdXVsxXSktMioodFtuWzEyXV1bMV0rdFtuWzNdXVsxXSkrMyoodFtuWzEzXV1bMV0rdFtuWzddXVsxXSkpLzldKTtuWzZdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblszXV1bMF0tdFtuWzEyXV1bMF0rNioodFtuWzJdXVswXSt0W25bN11dWzBdKS0yKih0W25bMF1dWzBdK3RbblsxNV1dWzBdKSszKih0W25bNF1dWzBdK3RbblsxNF1dWzBdKSkvOSwoLTQqdFtuWzNdXVsxXS10W25bMTJdXVsxXSs2Kih0W25bMl1dWzFdK3Rbbls3XV1bMV0pLTIqKHRbblswXV1bMV0rdFtuWzE1XV1bMV0pKzMqKHRbbls0XV1bMV0rdFtuWzE0XV1bMV0pKS85XSk7bls5XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bMTJdXVswXS10W25bM11dWzBdKzYqKHRbbls4XV1bMF0rdFtuWzEzXV1bMF0pLTIqKHRbblswXV1bMF0rdFtuWzE1XV1bMF0pKzMqKHRbblsxMV1dWzBdK3RbblsxXV1bMF0pKS85LCgtNCp0W25bMTJdXVsxXS10W25bM11dWzFdKzYqKHRbbls4XV1bMV0rdFtuWzEzXV1bMV0pLTIqKHRbblswXV1bMV0rdFtuWzE1XV1bMV0pKzMqKHRbblsxMV1dWzFdK3RbblsxXV1bMV0pKS85XSk7blsxMF09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzE1XV1bMF0tdFtuWzBdXVswXSs2Kih0W25bMTFdXVswXSt0W25bMTRdXVswXSktMioodFtuWzEyXV1bMF0rdFtuWzNdXVswXSkrMyoodFtuWzJdXVswXSt0W25bOF1dWzBdKSkvOSwoLTQqdFtuWzE1XV1bMV0tdFtuWzBdXVsxXSs2Kih0W25bMTFdXVsxXSt0W25bMTRdXVsxXSktMioodFtuWzEyXV1bMV0rdFtuWzNdXVsxXSkrMyoodFtuWzJdXVsxXSt0W25bOF1dWzFdKSkvOV0pO3RoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJwYXRjaCIsY29vcmRzOm5ldyBJbnQzMkFycmF5KG4pLGNvbG9yczpuZXcgSW50MzJBcnJheShpKX0pfX1fZGVjb2RlVHlwZTdTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNyBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxyPTAhPT1zPzEyOjE2O2E8cjthKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3QgYz1hLmxlbmd0aDtmb3IobGV0IHQ9MCxyPTAhPT1zPzI6NDt0PHI7dCsrKWEucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBsLGgsdSxkO3N3aXRjaChzKXtjYXNlIDA6blsxMl09byszO25bMTNdPW8rNDtuWzE0XT1vKzU7blsxNV09bys2O25bOF09bysyO25bOV09bysxMztuWzEwXT1vKzE0O25bMTFdPW8rNztuWzRdPW8rMTtuWzVdPW8rMTI7bls2XT1vKzE1O25bN109bys4O25bMF09bztuWzFdPW8rMTE7blsyXT1vKzEwO25bM109bys5O2lbMl09YysxO2lbM109YysyO2lbMF09YztpWzFdPWMrMzticmVhaztjYXNlIDE6bD1uWzEyXTtoPW5bMTNdO3U9blsxNF07ZD1uWzE1XTtuWzEyXT1kO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09dTtuWzldPW8rOTtuWzEwXT1vKzEwO25bMTFdPW8rMztuWzRdPWg7bls1XT1vKzg7bls2XT1vKzExO25bN109bys0O25bMF09bDtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtsPWlbMl07aD1pWzNdO2lbMl09aDtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMjpsPW5bMTVdO2g9blsxMV07blsxMl09blszXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bN107bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1oO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzNdO2lbMl09aVsxXTtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMzpuWzEyXT1uWzBdO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09blsxXTtuWzldPW8rOTtuWzEwXT1vKzEwO25bMTFdPW8rMztuWzRdPW5bMl07bls1XT1vKzg7bls2XT1vKzExO25bN109bys0O25bMF09blszXTtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtpWzJdPWlbMF07aVszXT1jO2lbMF09aVsxXTtpWzFdPWMrMX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX19X2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpe2NvbnN0IHQ9dGhpcy5maWd1cmVzW2VdOygwLHIuYXNzZXJ0KSgicGF0Y2giPT09dC50eXBlLCJVbmV4cGVjdGVkIHBhdGNoIG1lc2ggZmlndXJlIik7Y29uc3QgYT10aGlzLmNvb3JkcyxuPXRoaXMuY29sb3JzLGk9dC5jb29yZHMscz10LmNvbG9ycyxvPU1hdGgubWluKGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksYz1NYXRoLm1pbihhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pLGw9TWF0aC5tYXgoYVtpWzBdXVswXSxhW2lbM11dWzBdLGFbaVsxMl1dWzBdLGFbaVsxNV1dWzBdKSxoPU1hdGgubWF4KGFbaVswXV1bMV0sYVtpWzNdXVsxXSxhW2lbMTJdXVsxXSxhW2lbMTVdXVsxXSk7bGV0IHU9TWF0aC5jZWlsKChsLW8pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdKSk7dT1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCx1KSk7bGV0IGQ9TWF0aC5jZWlsKChoLWMpKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdKSk7ZD1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxkKSk7Y29uc3QgZz11KzEscD1uZXcgSW50MzJBcnJheSgoZCsxKSpnKSxtPW5ldyBJbnQzMkFycmF5KChkKzEpKmcpO2xldCBiPTA7Y29uc3QgeT1uZXcgVWludDhBcnJheSgzKSx3PW5ldyBVaW50OEFycmF5KDMpLFM9bltzWzBdXSx4PW5bc1sxXV0sQz1uW3NbMl1dLHY9bltzWzNdXSxrPWYoZCksTz1mKHUpO2ZvcihsZXQgZT0wO2U8PWQ7ZSsrKXt5WzBdPShTWzBdKihkLWUpK0NbMF0qZSkvZHwwO3lbMV09KFNbMV0qKGQtZSkrQ1sxXSplKS9kfDA7eVsyXT0oU1syXSooZC1lKStDWzJdKmUpL2R8MDt3WzBdPSh4WzBdKihkLWUpK3ZbMF0qZSkvZHwwO3dbMV09KHhbMV0qKGQtZSkrdlsxXSplKS9kfDA7d1syXT0oeFsyXSooZC1lKSt2WzJdKmUpL2R8MDtmb3IobGV0IHQ9MDt0PD11O3QrKyxiKyspe2lmKCEoMCE9PWUmJmUhPT1kfHwwIT09dCYmdCE9PXUpKWNvbnRpbnVlO2xldCByPTAscz0wLG89MDtmb3IobGV0IG49MDtuPD0zO24rKylmb3IobGV0IGM9MDtjPD0zO2MrKyxvKyspe2NvbnN0IGw9a1tlXVtuXSpPW3RdW2NdO3IrPWFbaVtvXV1bMF0qbDtzKz1hW2lbb11dWzFdKmx9cFtiXT1hLmxlbmd0aDthLnB1c2goW3Isc10pO21bYl09bi5sZW5ndGg7Y29uc3QgYz1uZXcgVWludDhBcnJheSgzKTtjWzBdPSh5WzBdKih1LXQpK3dbMF0qdCkvdXwwO2NbMV09KHlbMV0qKHUtdCkrd1sxXSp0KS91fDA7Y1syXT0oeVsyXSoodS10KSt3WzJdKnQpL3V8MDtuLnB1c2goYyl9fXBbMF09aVswXTttWzBdPXNbMF07cFt1XT1pWzNdO21bdV09c1sxXTtwW2cqZF09aVsxMl07bVtnKmRdPXNbMl07cFtnKmQrdV09aVsxNV07bVtnKmQrdV09c1szXTt0aGlzLmZpZ3VyZXNbZV09e3R5cGU6ImxhdHRpY2UiLGNvb3JkczpwLGNvbG9yczptLHZlcnRpY2VzUGVyUm93Omd9fV91cGRhdGVCb3VuZHMoKXtsZXQgZT10aGlzLmNvb3Jkc1swXVswXSx0PXRoaXMuY29vcmRzWzBdWzFdLGE9ZSxyPXQ7Zm9yKGxldCBuPTEsaT10aGlzLmNvb3Jkcy5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT10aGlzLmNvb3Jkc1tuXVswXSxzPXRoaXMuY29vcmRzW25dWzFdO2U9ZT5pP2k6ZTt0PXQ+cz9zOnQ7YT1hPGk/aTphO3I9cjxzP3M6cn10aGlzLmJvdW5kcz1bZSx0LGEscl19X3BhY2tEYXRhKCl7bGV0IGUsdCxhLHI7Y29uc3Qgbj10aGlzLmNvb3JkcyxpPW5ldyBGbG9hdDMyQXJyYXkoMipuLmxlbmd0aCk7Zm9yKGU9MCxhPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PW5bZV07aVthKytdPXRbMF07aVthKytdPXRbMV19dGhpcy5jb29yZHM9aTtjb25zdCBzPXRoaXMuY29sb3JzLG89bmV3IFVpbnQ4QXJyYXkoMypzLmxlbmd0aCk7Zm9yKGU9MCxhPTAsdD1zLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXNbZV07b1thKytdPXRbMF07b1thKytdPXRbMV07b1thKytdPXRbMl19dGhpcy5jb2xvcnM9bztjb25zdCBjPXRoaXMuZmlndXJlcztmb3IoZT0wLHQ9Yy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1jW2VdLG49dC5jb29yZHMsaT10LmNvbG9ycztmb3IoYT0wLHI9bi5sZW5ndGg7YTxyO2ErKyl7blthXSo9MjtpW2FdKj0zfX19Z2V0SVIoKXtyZXR1cm5bIk1lc2giLHRoaXMuc2hhZGluZ1R5cGUsdGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzLHRoaXMuYm91bmRzLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBEdW1teVNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tnZXRJUigpe3JldHVyblsiRHVtbXkiXX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFhmYUZvbnREaWN0PWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpyLGZhY3RvcnM6bn09dCxpPW4/YS5tYXAoKChlLHQpPT5lKm5bdF0pKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoZSx0KT0+e2xldFthXT1lLFtyXT10O3JldHVybiBhLXJ9KSkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe3MucHVzaChpW3RdKTtvKz0xfWVsc2V7bz1lO3M9W2lbdF1dO2MucHVzaChlLHMpfXJldHVybiBjfShlKSxhPW5ldyBuLkRpY3QobnVsbCk7YS5zZXQoIkJhc2VGb250IixuLk5hbWUuZ2V0KGUpKTthLnNldCgiVHlwZSIsbi5OYW1lLmdldCgiRm9udCIpKTthLnNldCgiU3VidHlwZSIsbi5OYW1lLmdldCgiQ0lERm9udFR5cGUyIikpO2Euc2V0KCJFbmNvZGluZyIsbi5OYW1lLmdldCgiSWRlbnRpdHktSCIpKTthLnNldCgiQ0lEVG9HSURNYXAiLG4uTmFtZS5nZXQoIklkZW50aXR5IikpO2Euc2V0KCJXIix0KTthLnNldCgiRmlyc3RDaGFyIix0WzBdKTthLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCByPW5ldyBuLkRpY3QobnVsbCk7YS5zZXQoIkZvbnREZXNjcmlwdG9yIixyKTtjb25zdCBpPW5ldyBuLkRpY3QobnVsbCk7aS5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtpLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO2kuc2V0KCJTdXBwbGVtZW50IiwwKTthLnNldCgiQ0lEU3lzdGVtSW5mbyIsaSk7cmV0dXJuIGF9O3QuZ2V0WGZhRm9udE5hbWU9Z2V0WGZhRm9udE5hbWU7YSgxMzkpO3ZhciByPWEoMjAyKSxuPWEoMTUwKSxpPWEoMjAzKSxzPWEoMjA0KSxvPWEoMjA1KSxjPWEoMjA2KSxsPWEoMTQ5KSxoPWEoMTg4KTtjb25zdCB1PSgwLGwuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6by5NeXJpYWRQcm9SZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvUmVndWxhck1ldHJpY3N9O2VbIk15cmlhZFByby1Cb2xkIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOm8uTXlyaWFkUHJvQm9sZEZhY3RvcnMsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0JvbGRNZXRyaWNzfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0l0YWxpY0ZhY3RvcnMsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzfTtlWyJNeXJpYWRQcm8tQm9sZEl0Il09ZVsiTXlyaWFkUHJvLUJvbGRJdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3N9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zUmVndWxhcldpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmd9O2VbIkFyaWFsLUJvbGRNVCJdPWVbIkFyaWFsLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmd9O2VbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nfTtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT1lWyJBcmlhbC1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nfTtlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpyLkNhbGlicmlSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpyLkNhbGlicmlCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUJvbGRNZXRyaWNzfTtlWyJDYWxpYnJpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6ci5DYWxpYnJpSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpyLkNhbGlicmlJdGFsaWNNZXRyaWNzfTtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpyLkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzfTtlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpjLlNlZ29ldWlSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aVJlZ3VsYXJNZXRyaWNzfTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpjLlNlZ29ldWlCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUJvbGRNZXRyaWNzfTtlWyJTZWdvZXVpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6Yy5TZWdvZXVpSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpjLlNlZ29ldWlJdGFsaWNNZXRyaWNzfTtlWyJTZWdvZXVpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUJvbGRJdGFsaWNNZXRyaWNzfTtlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmkuSGVsdmV0aWNhUmVndWxhckZhY3RvcnMsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zUmVndWxhcldpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmcsbWV0cmljczppLkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzfTtlWyJIZWx2ZXRpY2EtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmkuSGVsdmV0aWNhQm9sZEZhY3RvcnMsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUJvbGRNZXRyaWNzfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczppLkhlbHZldGljYUl0YWxpY0ZhY3RvcnMsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nLG1ldHJpY3M6aS5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzfTtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY0ZhY3RvcnMsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUJvbGRJdGFsaWNNZXRyaWNzfX0pKTtmdW5jdGlvbiBnZXRYZmFGb250TmFtZShlKXtjb25zdCB0PSgwLGgubm9ybWFsaXplRm9udE5hbWUpKGUpO3JldHVybiB1KClbdF19fSwoZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DYWxpYnJpUmVndWxhck1ldHJpY3M9dC5DYWxpYnJpUmVndWxhckZhY3RvcnM9dC5DYWxpYnJpSXRhbGljTWV0cmljcz10LkNhbGlicmlJdGFsaWNGYWN0b3JzPXQuQ2FsaWJyaUJvbGRNZXRyaWNzPXQuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXQuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPXQuQ2FsaWJyaUJvbGRGYWN0b3JzPXZvaWQgMDt0LkNhbGlicmlCb2xkRmFjdG9ycz1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN307dC5DYWxpYnJpQm9sZEl0YWxpY0ZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaUl0YWxpY0ZhY3RvcnM9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuQ2FsaWJyaUl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTAxNiwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzM4MzQsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5Mzg1LC44NTEyMiwuNzc0NTIsLjg2NTAzLC43NTE4NiwuNjg4ODcsLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MjU4LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM5MDE2LDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjg2MTI4LC45NDQ2OSwuODQ1NywuOTQ0NjksLjg5NDY0LDEuMDk4NDIsLjg0NjM2LC45NDQ2OSwxLjAzMjk3LDEuMDc2OTIsLjkwOTE4LDEuMDMyOTcsLjk1ODk3LC45NDQ2OSwuOTQ4MiwuOTQ0NjksLjk0NDY5LDEuMDQ2OTIsLjc4MjIzLDEuMjA1NjIsLjk0NDY5LC45MDMzMiwuOTg5ODYsLjg2NjIxLC45MDUyNywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjA4NzA3LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjczODM0LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTM4NSwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTI4NCwuODUzMTEsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2OTMsLjg0NTcsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjk0NDY5LC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45MDc0NywuODY2NTEsLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45MDUyNywuOTQ0NjksLjkwNTI3LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuODUxOTMsLjkyNDU0LC44NjQ3NywuOTkyMSwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsMSwxLC44NjI3NSwuOTQ0NjksLjkwODcyLC45NTc4NiwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsMS4wMzI5NywuOTA2ODUsLjgyNjAxLC43Nzc0MSwxLjA1NjExLC42Mzc3LDEuMDc2OTIsMSwxLC45MDkxOCwuNzU1OTMsMS4wMzI5NywxLDEsLjc2MDMyLC45MDQ1MiwuOTgxNTYsMS4xMTg0MiwuNzcyNjEsMS4xMTQyOSwuODkzODUsLjk0NDY5LDEsMSwuODkzODUsLjk0NDY5LC45NTg3NywuODY5MDEsLjk0NDY5LC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NjY3LC45MDAxNiwuNzUxODYsMS4wNDY5MiwxLDEsLjc1MTg2LDEuMDQ2OTIsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywxLDEsLjc5Nzc2LC45MjE4OCwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuODYxMjgsLjc2MzE4LC44NjkzLC44NTMxMSwuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjc3NDIsLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2Njg2LC45MDg2MSwuNjIyNjcsLjc0MzU5LC42NTY0OSwuODU0OTgsLjU2OTYzLC44ODI1NCwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzU0NDMsLjg0NTAzLC43MzIwNiwuNzY2NTksLjg2Mjc1LC44NTEyMiwuOTA2ODUsLjc3ODkyLC44NTc0NiwxLjAyNjM4LC44OTM4NSwuNzU2NTcsLjg1MTIyLC44NjI3NSwuNzc0NTIsLjc0MTcxLC43OTc3NiwuNzMwNiwuOTUxNjUsLjc3ODE4LC44OTc3MiwuODg4MzEsLjkwNjg1LC43MzA2LC45ODE0MiwxLjAyMTkxLC45NjU3NiwxLjIzNTE2LC45OTAxOCwuOTgxNDIsLjkyMzYsLjg5MjU4LC45NDAzNSwxLjAyMTkxLC43ODg0OCwuOTY1NzYsLjk1NjEsMS4yMzUxNiwuOTA5MTgsLjkyNTc4LC45NTQyNCwuODk3NDYsLjgzOTY5LC45NDgyLC44MDExMywuODk0NDIsLjg1MjA4LC44NjE1NSwuOTgwMjIsLjk5MDE4LDEuMDA0NTIsLjgxMjA5LC45OTI0NywuODkxODEsMS4yMzUxNiwuOTkwMTgsLjk0ODIsLjk5MDE4LC44OTE4MSwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4ODQ0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTQ2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTY3NjYsMSwxLDEsMSwxLDEsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42OTA0MywxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk5MzMxLC44MjYxNiwuOTExMzMsLjg0Mjg2LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMS4wNzE4NSwuOTk0MTMsLjk2MzM0LDEuMDgwNjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlSZWd1bGFyTWV0cmljcz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN319LChlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRGYWN0b3JzPXZvaWQgMDt0LkhlbHZldGljYUJvbGRGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfTt0LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzPXQuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZz10LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZz10LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz10LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmc9dm9pZCAwO3QuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzE5LDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODUsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzODUsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw0NjUsNzIyLDMzMyw4NTMsOTA2LDQ3NCw4MjUsOTI3LDgzOCwyNzgsNzIyLDcyMiw2MDEsNzE5LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY0NCw3NzgsNzIyLDY2Nyw2MDAsNjExLDY2Nyw4MjEsNjY3LDgwOSw4MDIsMjc4LDY2Nyw2MTUsNDUxLDYxMSwyNzgsNTgyLDYxNSw2MTAsNTU2LDYwNiw0NzUsNDYwLDYxMSw1NDEsMjc4LDU1OCw1NTYsNjEyLDU1Niw0NDUsNjExLDc2Niw2MTksNTIwLDY4NCw0NDYsNTgyLDcxNSw1NzYsNzUzLDg0NSwyNzgsNTgyLDYxMSw1ODIsODQ1LDY2Nyw2NjksODg1LDU2Nyw3MTEsNjY3LDI3OCwyNzYsNTU2LDEwOTQsMTA2Miw4NzUsNjEwLDcyMiw2MjIsNzE5LDcyMiw3MTksNzIyLDU2Nyw3MTIsNjY3LDkwNCw2MjYsNzE5LDcxOSw2MTAsNzAyLDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MjIsODU0LDY2Nyw3MzAsNzAzLDEwMDUsMTAxOSw4NzAsOTc5LDcxOSw3MTEsMTAzMSw3MTksNTU2LDYxOCw2MTUsNDE3LDYzNSw1NTYsNzA5LDQ5Nyw2MTUsNjE1LDUwMCw2MzUsNzQwLDYwNCw2MTEsNjA0LDYxMSw1NTYsNDkwLDU1Niw4NzUsNTU2LDYxNSw1ODEsODMzLDg0NCw3MjksODU0LDYxNSw1NTIsODU0LDU4Myw1NTYsNTU2LDYxMSw0MTcsNTUyLDU1NiwyNzgsMjgxLDI3OCw5NjksOTA2LDYxMSw1MDAsNjE1LDU1Niw2MDQsNzc4LDYxMSw0ODcsNDQ3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDEwOTQsNTU2LDg4NSw0ODksMTExNSwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdO3QuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdO3QuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV07dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdO3QuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV07dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXX0sKGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9dC5NeXJpYWRQcm9SZWd1bGFyRmFjdG9ycz10Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPXQuTXlyaWFkUHJvQm9sZE1ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz10Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPXQuTXlyaWFkUHJvQm9sZEZhY3RvcnM9dm9pZCAwO3QuTXlyaWFkUHJvQm9sZEZhY3RvcnM9WzEuMzY4OTgsMSwxLC43MjcwNiwuODA0NzksLjgzNzM0LC45ODg5NCwuOTk3OTMsLjk4OTcsLjkzODg0LC44NjIwOSwuOTQyOTIsLjk0MjkyLDEuMTY2NjEsMS4wMjA1OCwuOTM1ODIsLjk2Njk0LC45MzU4MiwxLjE5MTM3LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuNzgwNzYsLjc4MDc2LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43Mjg1MSwuNzg5NjYsLjkwODM4LC44MzYzNywuODIzOTEsLjk2Mzc2LC44MDA2MSwuODYyNzUsLjg3NjgsLjk1NDA3LDEuMDI1OCwuNzM5MDEsLjg1MDIyLC44MzY1NSwxLjAxNTYsLjk1NTQ2LC45MjE3OSwuODcxMDcsLjkyMTc5LC44MjExNCwuODA5NiwuODk3MTMsLjk0NDM4LC45NTM1MywuOTQwODMsLjkxOTA1LC45MDQwNiwuOTQ0NiwuOTQyOTIsMS4xODc3NywuOTQyOTIsMS4wMjA1OCwuODk5MDMsLjkwMDg4LC45NDkzOCwuOTc4OTgsLjgxMDkzLC45NzU3MSwuOTQ5MzgsMS4wMjQsLjk1NzcsLjk1OTMzLC45ODYyMSwxLjA0NzQsLjk3NDU1LC45ODk4MSwuOTY3MiwuOTU5MzMsLjk0NDYsLjk3ODk4LC45NzQwNywuOTc2NDYsLjc4MDM2LDEuMTAyMDgsLjk1NDQyLC45NTI5OCwuOTc1NzksLjkzMzIsLjk0MDM5LC45MzgsLjgwNjg3LDEuMDExNDksLjgwNjg3LDEuMDIwNTgsLjgwNDc5LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywxLjAxMTQ5LDEuMDA4NzIsLjkwMDg4LC45MTg4MiwxLjAyMTMsLjgzNjEsMS4wMjA1OCwuNjIyOTUsLjU0MzI0LC44OTAyMiwxLjA4NTk1LDEsMSwuOTAwODgsMSwuOTc0NTUsLjkzNTgyLC45MDA4OCwxLDEuMDU2ODYsLjgzNjEsLjk5NjQyLC45OTY0MiwuOTk2NDIsLjcyODUxLC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC44NjgsLjgyMzkxLC44MDA2MSwuODAwNjEsLjgwMDYxLC44MDA2MSwxLjAyNTgsMS4wMjU4LDEuMDI1OCwxLjAyNTgsLjk3NDg0LC45NTU0NiwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LDEuMDIwNTgsLjkyMTc5LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTA0MDYsLjg2OTU4LC45ODIyNSwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTAzMSwuODEwOTMsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTM5NjksLjk1OTMzLC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LDEuMDg1OTUsLjk0NDYsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NDAzOSwuOTc4OTgsLjk0MDM5LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjk2Mzc2LC44NDMxMywuOTc0ODQsLjk3NTcxLC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODc2OCwuOTU3NywuODc2OCwuOTU3NywuODc2OCwuOTU3NywxLDEsLjk1NDA3LC45NTkzMywuOTcwNjksLjk1OTMzLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwuODg3LDEuMDE1OTEsLjczOTAxLDEuMDQ3NCwxLDEsLjk3NDU1LC44MzY1NSwuOTg5ODEsMSwxLC44MzY1NSwuNzM5NzcsLjgzNjU1LC43MzkwMywuODQ2MzgsMS4wMzMsLjk1NTQ2LC45NTkzMywxLDEsLjk1NTQ2LC45NTkzMywuODI3MSwuOTU0MTcsLjk1OTMzLC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MzYsLjkxOTY0LC44MjExNCwuOTc2NDYsMSwxLC44MjExNCwuOTc2NDYsLjgwOTYsLjc4MDM2LC44MDk2LC43ODAzNiwxLDEsLjgwOTYsLjc4MDM2LDEsMSwuODk3MTMsLjc3NDUyLC44OTcxMywxLjEwMjA4LC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTA0MDYsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsMSwuOTk3OTMsLjkwODM4LC45NDkzOCwuODY4LC45MDMxLC45MjE3OSwuOTQ0NiwxLDEsLjg5NzEzLDEuMTAyMDgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwOTg5LC45MzU4LC45MTk0NSwuODMxODEsLjc1MjYxLC44Nzk5MiwuODI5NzYsLjk2MDM0LC44MzY4OSwuOTcyNjgsMS4wMDc4LC45MDgzOCwuODM2MzcsLjgwMTksLjkwMTU3LC44MDA2MSwuOTQ0NiwuOTU0MDcsLjkyNDM2LDEuMDI1OCwuODUwMjIsLjk3MTUzLDEuMDE1NiwuOTU1NDYsLjg5MTkyLC45MjE3OSwuOTIzNjEsLjg3MTA3LC45NjMxOCwuODk3MTMsLjkzNzA0LC45NTYzOCwuOTE5MDUsLjkxNzA5LC45Mjc5NiwxLjAyNTgsLjkzNzA0LC45NDgzNiwxLjAzNzMsLjk1OTMzLDEuMDA3OCwuOTU4NzEsLjk0ODM2LC45NjE3NCwuOTI2MDEsLjk0OTgsLjk4NjA3LC45NTc3NiwuOTU5MzMsMS4wNTQ1MywxLjAwNzgsLjk4Mjc1LC45MzE0LC45NTYxNywuOTE3MDEsMS4wNTk5MywuOTQ0NiwuNzgzNjcsLjk1NTMsMSwuODY4MzIsMS4wMTI4LC45NTg3MSwuOTkzOTQsLjg3NTQ4LC45NjM2MSwuODY3NzQsMS4wMDc4LC45NTg3MSwuOTQ0NiwuOTU4NzEsLjg2Nzc0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkzNTgyLC45MzU4MiwuOTM1ODIsMSwuOTA4LC45MDgsLjkxOCwuOTQyMTksLjk0MjE5LC45NjU0NCwxLDEuMjg1LDEsMSwuODEwNzksLjgxMDc5LDEsMSwuNzQ4NTQsMSwxLDEsMSwuOTk3OTMsMSwxLDEsLjY1LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNzE3MywxLC44MDUzNSwuNzYxNjksMS4wMjA1OCwxLjA3MzIsMS4wNTQ4NiwxLDEsMS4zMDY5MiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE2MTYxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9O3QuTXlyaWFkUHJvQm9sZEl0YWxpY0ZhY3RvcnM9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0JvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfTt0Lk15cmlhZFByb0l0YWxpY0ZhY3RvcnM9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5NeXJpYWRQcm9SZWd1bGFyRmFjdG9ycz1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5NeXJpYWRQcm9SZWd1bGFyTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn19LChlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz10LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz10LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZE1ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZEZhY3RvcnM9dm9pZCAwO3QuU2Vnb2V1aUJvbGRGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuU2Vnb2V1aUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9O3QuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBvc3RTY3JpcHRFdmFsdWF0b3I9dC5Qb3N0U2NyaXB0Q29tcGlsZXI9dC5QREZGdW5jdGlvbkZhY3Rvcnk9dm9pZCAwO3QuaXNQREZGdW5jdGlvbj1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiByLkRpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfTthKDIpO2EoMTM5KTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgxNTkpO3ZhciByPWEoMTUwKSxuPWEoMTQ0KSxpPWEoMjA4KSxzPWEoMTUxKSxvPWEoMjA5KTt0LlBERkZ1bmN0aW9uRmFjdG9yeT1jbGFzcyBQREZGdW5jdGlvbkZhY3Rvcnl7Y29uc3RydWN0b3IoZSl7bGV0e3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6YT0hMH09ZTt0aGlzLnhyZWY9dDt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PWF9Y3JlYXRlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPVBERkZ1bmN0aW9uLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIHIuUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxhKTtyZXR1cm4gYX1jcmVhdGVGcm9tQXJyYXkoZSl7Y29uc3QgdD10aGlzLmdldENhY2hlZChlKTtpZih0KXJldHVybiB0O2NvbnN0IGE9UERGRnVuY3Rpb24ucGFyc2VBcnJheSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuT2JqOmUgaW5zdGFuY2VvZiByLlJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsYSk7cmV0dXJuIGF9Z2V0Q2FjaGVkKGUpe2xldCB0O2UgaW5zdGFuY2VvZiByLlJlZj90PWU6ZSBpbnN0YW5jZW9mIHIuRGljdD90PWUub2JqSWQ6ZSBpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbSYmKHQ9ZS5kaWN0Py5vYmpJZCk7aWYodCl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYodCk7aWYoZSlyZXR1cm4gZX1yZXR1cm4gbnVsbH1fY2FjaGUoZSx0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1BERkZ1bmN0aW9uRmFjdG9yeS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkRnVuY3Rpb24iIGFyZ3VtZW50LicpO2xldCBhO2UgaW5zdGFuY2VvZiByLlJlZj9hPWU6ZSBpbnN0YW5jZW9mIHIuRGljdD9hPWUub2JqSWQ6ZSBpbnN0YW5jZW9mIHMuQmFzZVN0cmVhbSYmKGE9ZS5kaWN0Py5vYmpJZCk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IG8uTG9jYWxGdW5jdGlvbkNhY2hlKX19O2Z1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IGE9MDthPHQ7YSsrKWlmKCJudW1iZXIiIT10eXBlb2YgZVthXSl7Y29uc3QgYT1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPStlW3JdO3JldHVybiBhfXJldHVybiBlfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxyKXtsZXQgbixpLHM9MTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpO24rKylzKj1lW25dO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKiphLTEpLHU9ci5nZXRCeXRlcygocyphKzcpLzgpO2xldCBkPTA7Zm9yKG49MDtuPHM7bisrKXtmb3IoO2M8YTspe2w8PD04O2x8PXVbZCsrXTtjKz04fWMtPWE7b1tuXT0obD4+YykqaDtsJj0oMTw8YyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2UoZSl7bGV0e3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6YSxmbjpyfT1lO2NvbnN0IGk9ci5kaWN0fHxyO3N3aXRjaChpLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOmEsZm46cixkaWN0Oml9KTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDphLGRpY3Q6aX0pO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOmEsZGljdDppfSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6YSxmbjpyLGRpY3Q6aX0pfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGUgb2YgZnVuY3Rpb24iKX1zdGF0aWMgcGFyc2VBcnJheShlKXtsZXR7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDphLGZuT2JqOnJ9PWU7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIHRoaXMucGFyc2Uoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6YSxmbjpyfSk7Y29uc3Qgbj1bXTtmb3IoY29uc3QgZSBvZiByKW4ucHVzaCh0aGlzLnBhcnNlKHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOmEsZm46dC5mZXRjaElmUmVmKGUpfSkpO3JldHVybiBmdW5jdGlvbihlLHQsYSxyKXtmb3IobGV0IGk9MCxzPW4ubGVuZ3RoO2k8cztpKyspbltpXShlLHQsYSxyK2kpfX1zdGF0aWMgY29uc3RydWN0U2FtcGxlZChlKXtsZXR7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDphLGZuOnIsZGljdDppfT1lO2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7bis9MilhW3IrK109W2Vbbl0sZVtuKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLG4pe3JldHVybiByKyhuLXIpLyhhLXQpKihlLXQpfWxldCBzPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiRG9tYWluIikpLG89dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJSYW5nZSIpKTtpZighc3x8IW8pdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IGM9cy5sZW5ndGgvMixsPW8ubGVuZ3RoLzI7cz10b011bHRpQXJyYXkocyk7bz10b011bHRpQXJyYXkobyk7Y29uc3QgaD10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIlNpemUiKSksdT1pLmdldCgiQml0c1BlclNhbXBsZSIpLGQ9aS5nZXQoIk9yZGVyIil8fDE7MSE9PWQmJigwLG4uaW5mbykoIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK2QpO2xldCBmPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGYpZj10b011bHRpQXJyYXkoZik7ZWxzZXtmPVtdO2ZvcihsZXQgZT0wO2U8YzsrK2UpZi5wdXNoKFswLGhbZV0tMV0pfWxldCBnPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiRGVjb2RlIikpO2c9Zz90b011bHRpQXJyYXkoZyk6bztjb25zdCBwPXRoaXMuZ2V0U2FtcGxlQXJyYXkoaCxsLHUscik7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxyKXtjb25zdCBuPTE8PGMsaT1uZXcgRmxvYXQ2NEFycmF5KG4pLHU9bmV3IFVpbnQzMkFycmF5KG4pO2xldCBkLG07Zm9yKG09MDttPG47bSsrKWlbbV09MTtsZXQgYj1sLHk9MTtmb3IoZD0wO2Q8YzsrK2Qpe2NvbnN0IGE9c1tkXVswXSxyPXNbZF1bMV07bGV0IG89aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K2RdLGEpLHIpLGEscixmW2RdWzBdLGZbZF1bMV0pO2NvbnN0IGM9aFtkXTtvPU1hdGgubWluKE1hdGgubWF4KG8sMCksYy0xKTtjb25zdCBsPW88Yy0xP01hdGguZmxvb3Iobyk6by0xLGc9bCsxLW8scD1vLWwsdz1sKmIsUz13K2I7Zm9yKG09MDttPG47bSsrKWlmKG0meSl7aVttXSo9cDt1W21dKz1TfWVsc2V7aVttXSo9Zzt1W21dKz13fWIqPWM7eTw8PTF9Zm9yKG09MDttPGw7KyttKXtsZXQgZT0wO2ZvcihkPTA7ZDxuO2QrKyllKz1wW3VbZF0rbV0qaVtkXTtlPWludGVycG9sYXRlKGUsMCwxLGdbbV1bMF0sZ1ttXVsxXSk7YVtyK21dPU1hdGgubWluKE1hdGgubWF4KGUsb1ttXVswXSksb1ttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKGUpe2xldHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOmEsZGljdDpyfT1lO2NvbnN0IG49dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJDMCIpKXx8WzBdLGk9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJDMSIpKXx8WzFdLHM9ci5nZXQoIk4iKSxvPVtdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0OysrZSlvLnB1c2goaVtlXS1uW2VdKTtjb25zdCBjPW8ubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGbihlLHQsYSxyKXtjb25zdCBpPTE9PT1zP2VbdF06ZVt0XSoqcztmb3IobGV0IGU9MDtlPGM7KytlKWFbcitlXT1uW2VdK2kqb1tlXX19c3RhdGljIGNvbnN0cnVjdFN0aWNoZWQoZSl7bGV0e3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6YSxkaWN0OnJ9PWU7Y29uc3QgaT10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIkRvbWFpbiIpKTtpZighaSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gZG9tYWluIik7aWYoMSE9PWkubGVuZ3RoLzIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdCBzPVtdO2Zvcihjb25zdCBlIG9mIHIuZ2V0KCJGdW5jdGlvbnMiKSlzLnB1c2godGhpcy5wYXJzZSh7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDphLGZuOnQuZmV0Y2hJZlJlZihlKX0pKTtjb25zdCBvPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiQm91bmRzIikpLGM9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJFbmNvZGUiKSksbD1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRm4oZSx0LGEscil7Y29uc3Qgbj1mdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSQ2xpcChlLHQsYSl7ZT5hP2U9YTplPHQmJihlPXQpO3JldHVybiBlfShlW3RdLGlbMF0saVsxXSksaD1vLmxlbmd0aDtsZXQgdTtmb3IodT0wO3U8aCYmIShuPG9bdV0pOysrdSk7bGV0IGQ9aVswXTt1PjAmJihkPW9bdS0xXSk7bGV0IGY9aVsxXTt1PG8ubGVuZ3RoJiYoZj1vW3VdKTtjb25zdCBnPWNbMip1XSxwPWNbMip1KzFdO2xbMF09ZD09PWY/ZzpnKyhuLWQpKihwLWcpLyhmLWQpO3NbdV0obCwwLGEscil9fXN0YXRpYyBjb25zdHJ1Y3RQb3N0U2NyaXB0KGUpe2xldHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOmEsZm46cixkaWN0OnN9PWU7Y29uc3Qgbz10b051bWJlckFycmF5KHMuZ2V0QXJyYXkoIkRvbWFpbiIpKSxjPXRvTnVtYmVyQXJyYXkocy5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIW8pdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighYyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3QgbD1uZXcgaS5Qb3N0U2NyaXB0TGV4ZXIociksaD1uZXcgaS5Qb3N0U2NyaXB0UGFyc2VyKGwpLnBhcnNlKCk7aWYoYSYmbi5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUoaCxvLGMpO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLG4uaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgdT1jLmxlbmd0aD4+MSxkPW8ubGVuZ3RoPj4xLGY9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IoaCksZz1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBwPTgxOTI7Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGQpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IG4saSxzPSIiO2NvbnN0IG89bTtmb3Iobj0wO248ZDtuKyspe2k9ZVt0K25dO29bbl09aTtzKz1pKyJfIn1jb25zdCBsPWdbc107aWYodm9pZCAwIT09bCl7YS5zZXQobCxyKTtyZXR1cm59Y29uc3QgaD1uZXcgRmxvYXQzMkFycmF5KHUpLGI9Zi5leGVjdXRlKG8pLHk9Yi5sZW5ndGgtdTtmb3Iobj0wO248dTtuKyspe2k9Ylt5K25dO2xldCBlPWNbMipuXTtpZihpPGUpaT1lO2Vsc2V7ZT1jWzIqbisxXTtpPmUmJihpPWUpfWhbbl09aX1pZihwPjApe3AtLTtnW3NdPWh9YS5zZXQoaCxyKX19fWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgTUFYX1NUQUNLX1NJWkU9MTAwO2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGE9dC5sZW5ndGgtZSxyPWUtMTtyPj0wO3ItLSxhKyspdC5wdXNoKHRbYV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBhPXRoaXMuc3RhY2sscj1hLmxlbmd0aC1lLG49YS5sZW5ndGgtMSxpPXIrKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1yLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPXIsdD1pLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1pLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGE9MDtjb25zdCByPXRoaXMub3BlcmF0b3JzLGk9ci5sZW5ndGg7bGV0IHMsbyxjO2Zvcig7YTxpOyl7cz1yW2ErK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpjPXQucG9wKCk7bz10LnBvcCgpO298fChhPWMpO2JyZWFrO2Nhc2UiaiI6bz10LnBvcCgpO2E9bzticmVhaztjYXNlImFicyI6bz10LnBvcCgpO3QucHVzaChNYXRoLmFicyhvKSk7YnJlYWs7Y2FzZSJhZGQiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8rYyk7YnJlYWs7Y2FzZSJhbmQiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyYmYyk6dC5wdXNoKG8mYyk7YnJlYWs7Y2FzZSJhdGFuIjpjPXQucG9wKCk7bz10LnBvcCgpO289TWF0aC5hdGFuMihvLGMpL01hdGguUEkqMTgwO288MCYmKG8rPTM2MCk7dC5wdXNoKG8pO2JyZWFrO2Nhc2UiYml0c2hpZnQiOmM9dC5wb3AoKTtvPXQucG9wKCk7bz4wP3QucHVzaChvPDxjKTp0LnB1c2gobz4+Yyk7YnJlYWs7Y2FzZSJjZWlsaW5nIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguY2VpbChvKSk7YnJlYWs7Y2FzZSJjb3B5IjpvPXQucG9wKCk7dC5jb3B5KG8pO2JyZWFrO2Nhc2UiY29zIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguY29zKG8lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJjdmkiOm89MHx0LnBvcCgpO3QucHVzaChvKTticmVhaztjYXNlImN2ciI6YnJlYWs7Y2FzZSJkaXYiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8vYyk7YnJlYWs7Y2FzZSJkdXAiOnQuY29weSgxKTticmVhaztjYXNlImVxIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPT09Yyk7YnJlYWs7Y2FzZSJleGNoIjp0LnJvbGwoMiwxKTticmVhaztjYXNlImV4cCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyoqYyk7YnJlYWs7Y2FzZSJmYWxzZSI6dC5wdXNoKCExKTticmVhaztjYXNlImZsb29yIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguZmxvb3IobykpO2JyZWFrO2Nhc2UiZ2UiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8+PWMpO2JyZWFrO2Nhc2UiZ3QiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8+Yyk7YnJlYWs7Y2FzZSJpZGl2IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvL2N8MCk7YnJlYWs7Y2FzZSJpbmRleCI6bz10LnBvcCgpO3QuaW5kZXgobyk7YnJlYWs7Y2FzZSJsZSI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzw9Yyk7YnJlYWs7Y2FzZSJsbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLmxvZyhvKSk7YnJlYWs7Y2FzZSJsb2ciOm89dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cxMChvKSk7YnJlYWs7Y2FzZSJsdCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzxjKTticmVhaztjYXNlIm1vZCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyVjKTticmVhaztjYXNlIm11bCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobypjKTticmVhaztjYXNlIm5lIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvIT09Yyk7YnJlYWs7Y2FzZSJuZWciOm89dC5wb3AoKTt0LnB1c2goLW8pO2JyZWFrO2Nhc2Uibm90IjpvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2goIW8pOnQucHVzaCh+byk7YnJlYWs7Y2FzZSJvciI6Yz10LnBvcCgpO289dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBvJiYiYm9vbGVhbiI9PXR5cGVvZiBjP3QucHVzaChvfHxjKTp0LnB1c2gob3xjKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5yb2xsKG8sYyk7YnJlYWs7Y2FzZSJyb3VuZCI6bz10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG8pKTticmVhaztjYXNlInNpbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLnNpbihvJTM2MC8xODAqTWF0aC5QSSkpO2JyZWFrO2Nhc2Uic3FydCI6bz10LnBvcCgpO3QucHVzaChNYXRoLnNxcnQobykpO2JyZWFrO2Nhc2Uic3ViIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvLWMpO2JyZWFrO2Nhc2UidHJ1ZSI6dC5wdXNoKCEwKTticmVhaztjYXNlInRydW5jYXRlIjpvPXQucG9wKCk7bz1vPDA/TWF0aC5jZWlsKG8pOk1hdGguZmxvb3Iobyk7dC5wdXNoKG8pO2JyZWFrO2Nhc2UieG9yIjpjPXQucG9wKCk7bz10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG8mJiJib29sZWFuIj09dHlwZW9mIGM/dC5wdXNoKG8hPT1jKTp0LnB1c2gob15jKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7c31gKX1lbHNlIHQucHVzaChzKX1yZXR1cm4gdC5zdGFja319dC5Qb3N0U2NyaXB0RXZhbHVhdG9yPVBvc3RTY3JpcHRFdmFsdWF0b3I7Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXsoMCxuLnVucmVhY2hhYmxlKSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1hfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSxyLG4pe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWE7dGhpcy5taW49cjt0aGlzLm1heD1ufXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBhPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxyPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGEscil9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsYSl7Y29uc3Qgcj1bXSxuPVtdLGk9dC5sZW5ndGg+PjEscz1hLmxlbmd0aD4+MTtsZXQgbyxjLGwsaCx1LGQsZixnLHA9MDtmb3IobGV0IGU9MDtlPGk7ZSsrKXIucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2c9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIGcpc3dpdGNoKGcpe2Nhc2UiYWRkIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2UiY3ZyIjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2Uic3ViIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoci5sZW5ndGg8MilyZXR1cm4gbnVsbDt1PXIucG9wKCk7ZD1yLnBvcCgpO3IucHVzaCh1LGQpO2JyZWFrO2Nhc2UicG9wIjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO3IucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09bC50eXBlKXJldHVybiBudWxsO289bC5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDt1PXJbci5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT11LnR5cGV8fCJ2YXIiPT09dS50eXBlKXtyLnB1c2godSk7YnJlYWt9Zj1uZXcgQXN0VmFyaWFibGUocCsrLHUubWluLHUubWF4KTtyW3IubGVuZ3RoLW8tMV09ZjtyLnB1c2goZik7bi5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJkdXAiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7bD1yLnBvcCgpO3IucHVzaChidWlsZE1pbk9wZXJhdGlvbihsLGVbdCsxXSkpO3QrPTY7YnJlYWt9dT1yLmF0KC0xKTtpZigibGl0ZXJhbCI9PT11LnR5cGV8fCJ2YXIiPT09dS50eXBlKXtyLnB1c2godSk7YnJlYWt9Zj1uZXcgQXN0VmFyaWFibGUocCsrLHUubWluLHUubWF4KTtyW3IubGVuZ3RoLTFdPWY7ci5wdXNoKGYpO24ucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKGYsdSkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoci5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPXIucG9wKCk7bD1yLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWgudHlwZXx8ImxpdGVyYWwiIT09bC50eXBlKXJldHVybiBudWxsO2M9aC5udW1iZXI7bz1sLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoYyl8fHIubGVuZ3RoPG8pcmV0dXJuIG51bGw7Yz0oYyVvK28pJW87aWYoMD09PWMpYnJlYWs7ci5wdXNoKC4uLnIuc3BsaWNlKHIubGVuZ3RoLW8sby1jKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIHIucHVzaChuZXcgQXN0TGl0ZXJhbChnKSl9aWYoci5sZW5ndGghPT1zKXJldHVybiBudWxsO2NvbnN0IG09W107Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7bS5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXJbZV0sbj1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQobik7Y29uc3QgaT1hWzIqZV0scz1hWzIqZSsxXSxvPVtuLnRvU3RyaW5nKCldO2lmKGk+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixpLCIsICIpO28ucHVzaCgiKSIpfWlmKHM8dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixzLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7bS5wdXNoKG8uam9pbigiIikpfXJldHVybiBtLmpvaW4oIlxuIil9fXQuUG9zdFNjcmlwdENvbXBpbGVyPVBvc3RTY3JpcHRDb21waWxlcn0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Qb3N0U2NyaXB0UGFyc2VyPXQuUG9zdFNjcmlwdExleGVyPXZvaWQgMDthKDEzOSk7dmFyIHI9YSgxNDQpLG49YSgxNTApLGk9YSgxNDkpO3QuUG9zdFNjcmlwdFBhcnNlcj1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KHMuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQocy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KHMuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qocy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KHMuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBhPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7dGhpcy5leHBlY3Qocy5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX07Y29uc3Qgcz17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV18fD1uZXcgUG9zdFNjcmlwdFRva2VuKHMuT1BFUkFUT1IsZSl9c3RhdGljIGdldCBMQlJBQ0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuTEJSQUNFLCJ7IikpfXN0YXRpYyBnZXQgUkJSQUNFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIlJCUkFDRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIklGIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuSUYsIklGIikpfXN0YXRpYyBnZXQgSUZFTFNFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzLklGRUxTRSwiSUZFTFNFIikpfX10LlBvc3RTY3JpcHRMZXhlcj1jbGFzcyBQb3N0U2NyaXB0TGV4ZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W119bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIG4uRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoISgwLGkuaXNXaGl0ZVNwYWNlKSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiBuZXcgUG9zdFNjcmlwdFRva2VuKHMuTlVNQkVSLHRoaXMuZ2V0TnVtYmVyKCkpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLkxCUkFDRTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5SQlJBQ0V9Y29uc3QgYT10aGlzLnN0ckJ1ZjthLmxlbmd0aD0wO2FbMF09U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJih0Pj02NSYmdDw9OTB8fHQ+PTk3JiZ0PD0xMjIpOylhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7Y29uc3Qgcj1hLmpvaW4oIiIpO3N3aXRjaChyLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaWYiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUY7Y2FzZSJpZmVsc2UiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUZFTFNFO2RlZmF1bHQ6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5nZXRPcGVyYXRvcihyKX19Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtjb25zdCB0PXRoaXMuc3RyQnVmO3QubGVuZ3RoPTA7dFswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmKGU+PTQ4JiZlPD01N3x8NDU9PT1lfHw0Nj09PWUpOyl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29uc3QgYT1wYXJzZUZsb2F0KHQuam9pbigiIikpO2lmKGlzTmFOKGEpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHthfWApO3JldHVybiBhfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUmVnaW9uYWxJbWFnZUNhY2hlPXQuTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGU9dC5Mb2NhbEltYWdlQ2FjaGU9dC5Mb2NhbEdTdGF0ZUNhY2hlPXQuTG9jYWxGdW5jdGlvbkNhY2hlPXQuTG9jYWxDb2xvclNwYWNlQ2FjaGU9dC5HbG9iYWxJbWFnZUNhY2hlPXZvaWQgMDthKDIpO2EoMTE2KTthKDEyNik7YSgxMjgpO2EoMTMxKTthKDEzMyk7YSgxMzUpO2EoMTM3KTt2YXIgcj1hKDE0NCksbj1hKDE1MCk7Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VMb2NhbENhY2hlJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUxvY2FsQ2FjaGUuIik7dGhpcy5fb25seVJlZnM9ITA9PT1lPy5vbmx5UmVmcztpZighdGhpcy5fb25seVJlZnMpe3RoaXMuX25hbWVSZWZNYXA9bmV3IE1hcDt0aGlzLl9pbWFnZU1hcD1uZXcgTWFwfXRoaXMuX2ltYWdlQ2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiYoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX10LkxvY2FsSW1hZ2VDYWNoZT1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsYT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEltYWdlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjt0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX07dC5Mb2NhbENvbG9yU3BhY2VDYWNoZT1jbGFzcyBMb2NhbENvbG9yU3BhY2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsYT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsRnVuY3Rpb25DYWNoZT1jbGFzcyBMb2NhbEZ1bmN0aW9uQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx0PWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCFlKXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dChlLHQpfX07dC5Mb2NhbEdTdGF0ZUNhY2hlPWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsYT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19O3QuTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGU9Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx0PWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCFlKXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCl9fTt0LlJlZ2lvbmFsSW1hZ2VDYWNoZT1jbGFzcyBSZWdpb25hbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx0PWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCFlKXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dChlLHQpfX07Y2xhc3MgR2xvYmFsSW1hZ2VDYWNoZXtzdGF0aWMgTlVNX1BBR0VTX1RIUkVTSE9MRD0yO3N0YXRpYyBNSU5fSU1BR0VTX1RPX0NBQ0hFPTEwO3N0YXRpYyBNQVhfQllURV9TSVpFPTUqci5NQVhfSU1BR0VfU0laRV9UT19DQUNIRTtjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlZkNhY2hlPW5ldyBuLlJlZlNldENhY2hlO3RoaXMuX2ltYWdlQ2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGV9Z2V0IF9ieXRlU2l6ZSgpe2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5faW1hZ2VDYWNoZSllKz10LmJ5dGVTaXplO3JldHVybiBlfWdldCBfY2FjaGVMaW1pdFJlYWNoZWQoKXtyZXR1cm4hKHRoaXMuX2ltYWdlQ2FjaGUuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk1JTl9JTUFHRVNfVE9fQ0FDSEUpJiYhKHRoaXMuX2J5dGVTaXplPEdsb2JhbEltYWdlQ2FjaGUuTUFYX0JZVEVfU0laRSl9c2hvdWxkQ2FjaGUoZSx0KXtsZXQgYT10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIWEpe2E9bmV3IFNldDt0aGlzLl9yZWZDYWNoZS5wdXQoZSxhKX1hLmFkZCh0KTtyZXR1cm4hKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpJiYhKCF0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKSYmdGhpcy5fY2FjaGVMaW1pdFJlYWNoZWQpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgYT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTthJiYoYS5ieXRlU2l6ZXx8KGEuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBhPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighYSlyZXR1cm4gbnVsbDtpZihhLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIXIpcmV0dXJuIG51bGw7YS5hZGQodCk7cmV0dXJuIHJ9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZD8oMCxyLndhcm4pKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKCl7YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXXx8dGhpcy5fcmVmQ2FjaGUuY2xlYXIoKTt0aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fXQuR2xvYmFsSW1hZ2VDYWNoZT1HbG9iYWxJbWFnZUNhY2hlfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmJpZGk9ZnVuY3Rpb24gYmlkaShlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LTEsYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGM9ITA7Y29uc3QgbD1lLmxlbmd0aDtpZigwPT09bHx8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxjLGEpO3MubGVuZ3RoPWw7by5sZW5ndGg9bDtsZXQgaCx1LGQ9MDtmb3IoaD0wO2g8bDsrK2gpe3NbaF09ZS5jaGFyQXQoaCk7Y29uc3QgdD1lLmNoYXJDb2RlQXQoaCk7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPW5bdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWE9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7YT1pWzI1NSZ0XTthfHwoMCxyLndhcm4pKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UoMTc5Mjw9dCYmdDw9MjIyMHx8NjQzMzY8PXQmJnQ8PTY1MDIzfHw2NTEzNjw9dCYmdDw9NjUyNzkpJiYoYT0iQUwiKTsiUiIhPT1hJiYiQUwiIT09YSYmIkFOIiE9PWF8fGQrKztvW2hdPWF9aWYoMD09PWQpe2M9ITA7cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUsYyl9aWYoLTE9PT10KWlmKGQvbDwuMyYmbD40KXtjPSEwO3Q9MH1lbHNle2M9ITE7dD0xfWNvbnN0IGY9W107Zm9yKGg9MDtoPGw7KytoKWZbaF09dDtjb25zdCBnPWlzT2RkKHQpPyJSIjoiTCIscD1nLG09cDtsZXQgYix5PXA7Zm9yKGg9MDtoPGw7KytoKSJOU00iPT09b1toXT9vW2hdPXk6eT1vW2hdO3k9cDtmb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiRU4iPT09Yj9vW2hdPSJBTCI9PT15PyJBTiI6IkVOIjoiUiIhPT1iJiYiTCIhPT1iJiYiQUwiIT09Ynx8KHk9Yil9Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IkFMIj09PWImJihvW2hdPSJSIil9Zm9yKGg9MTtoPGwtMTsrK2gpeyJFUyI9PT1vW2hdJiYiRU4iPT09b1toLTFdJiYiRU4iPT09b1toKzFdJiYob1toXT0iRU4iKTsiQ1MiIT09b1toXXx8IkVOIiE9PW9baC0xXSYmIkFOIiE9PW9baC0xXXx8b1toKzFdIT09b1toLTFdfHwob1toXT1vW2gtMV0pfWZvcihoPTA7aDxsOysraClpZigiRU4iPT09b1toXSl7Zm9yKGxldCBlPWgtMTtlPj0wJiYiRVQiPT09b1tlXTstLWUpb1tlXT0iRU4iO2ZvcihsZXQgZT1oKzE7ZTxsJiYiRVQiPT09b1tlXTsrK2Upb1tlXT0iRU4ifWZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJXUyIhPT1iJiYiRVMiIT09YiYmIkVUIiE9PWImJiJDUyIhPT1ifHwob1toXT0iT04iKX15PXA7Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IkVOIj09PWI/b1toXT0iTCI9PT15PyJMIjoiRU4iOiJSIiE9PWImJiJMIiE9PWJ8fCh5PWIpfWZvcihoPTA7aDxsOysraClpZigiT04iPT09b1toXSl7Y29uc3QgZT1maW5kVW5lcXVhbChvLGgrMSwiT04iKTtsZXQgdD1wO2g+MCYmKHQ9b1toLTFdKTtsZXQgYT1tO2UrMTxsJiYoYT1vW2UrMV0pOyJMIiE9PXQmJih0PSJSIik7IkwiIT09YSYmKGE9IlIiKTt0PT09YSYmc2V0VmFsdWVzKG8saCxlLHQpO2g9ZS0xfWZvcihoPTA7aDxsOysraCkiT04iPT09b1toXSYmKG9baF09Zyk7Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07aXNFdmVuKGZbaF0pPyJSIj09PWI/ZltoXSs9MToiQU4iIT09YiYmIkVOIiE9PWJ8fChmW2hdKz0yKToiTCIhPT1iJiYiQU4iIT09YiYmIkVOIiE9PWJ8fChmW2hdKz0xKX1sZXQgdyxTPS0xLHg9OTk7Zm9yKGg9MCx1PWYubGVuZ3RoO2g8dTsrK2gpe3c9ZltoXTtTPHcmJihTPXcpO3g+dyYmaXNPZGQodykmJih4PXcpfWZvcih3PVM7dz49eDstLXcpe2xldCBlPS0xO2ZvcihoPTAsdT1mLmxlbmd0aDtoPHU7KytoKWlmKGZbaF08dyl7aWYoZT49MCl7cmV2ZXJzZVZhbHVlcyhzLGUsaCk7ZT0tMX19ZWxzZSBlPDAmJihlPWgpO2U+PTAmJnJldmVyc2VWYWx1ZXMocyxlLGYubGVuZ3RoKX1mb3IoaD0wLHU9cy5sZW5ndGg7aDx1OysraCl7Y29uc3QgZT1zW2hdOyI8IiE9PWUmJiI+IiE9PWV8fChzW2hdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQocy5qb2luKCIiKSxjKX07dmFyIHI9YSgxNDQpO2NvbnN0IG49WyJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJTIiwiQiIsIlMiLCJXUyIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkIiLCJCIiwiUyIsIldTIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQ1MiLCJPTiIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiT04iLCJPTiIsIkJOIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFTiIsIkVOIiwiT04iLCJMIiwiT04iLCJPTiIsIk9OIiwiRU4iLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCJdLGk9WyJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJPTiIsIk9OIiwiQUwiLCJFVCIsIkVUIiwiQUwiLCJDUyIsIkFMIiwiT04iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCIiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkVUIiwiQU4iLCJBTiIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIl07ZnVuY3Rpb24gaXNPZGQoZSl7cmV0dXJuIDAhPSgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4gMD09KDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGEpe2xldCByLG47Zm9yKHI9dCxuPWUubGVuZ3RoO3I8bjsrK3IpaWYoZVtyXSE9PWEpcmV0dXJuIHI7cmV0dXJuIHJ9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxhLHIpe2ZvcihsZXQgbj10O248YTsrK24pZVtuXT1yfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGEpe2ZvcihsZXQgcj10LG49YS0xO3I8bjsrK3IsLS1uKXtjb25zdCB0PWVbcl07ZVtyXT1lW25dO2Vbbl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0KXtsZXQgYT0ibHRyIjthcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdP2E9InR0YiI6dHx8KGE9InJ0bCIpO3JldHVybntzdHI6ZSxkaXI6YX19Y29uc3Qgcz1bXSxvPVtdfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldEZvbnRTdWJzdGl0dXRpb249ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsYSx1LGQpe2NvbnN0IGY9dT0oMCxyLm5vcm1hbGl6ZUZvbnROYW1lKSh1KTtsZXQgZz1lLmdldChmKTtpZihnKXJldHVybiBnO2xldCBwPWwuZ2V0KHUpO2lmKCFwKWZvcihjb25zdFtlLHRdb2YgaClpZih1LnN0YXJ0c1dpdGgoZSkpe3U9YCR7dH0ke3Uuc3Vic3RyaW5nKGUubGVuZ3RoKX1gO3A9bC5nZXQodSk7YnJlYWt9bGV0IG09ITE7aWYoIXApe3A9bC5nZXQoZCk7bT0hMH1jb25zdCBiPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFwKXtpZighKDAsbi52YWxpZGF0ZUZvbnROYW1lKSh1KSl7ZS5zZXQoZixudWxsKTtyZXR1cm4gbnVsbH1jb25zdCB0PS9ib2xkL2dpLnRlc3QodSksYT0vb2JsaXF1ZXxpdGFsaWMvZ2kudGVzdCh1KTtnPXtjc3M6YixndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6YixiYXNlRm9udE5hbWU6dSxzcmM6YGxvY2FsKCR7dX0pYCxzdHlsZTp0JiZhJiZjfHx0JiZzfHxhJiZvfHxpfTtlLnNldChmLGcpO3JldHVybiBnfWNvbnN0IHk9W107bSYmKDAsbi52YWxpZGF0ZUZvbnROYW1lKSh1KSYmeS5wdXNoKGBsb2NhbCgke3V9KWApO2NvbnN0e3N0eWxlOncsdWx0aW1hdGU6U309Z2VuZXJhdGVGb250KHAseSxhKSx4PW51bGw9PT1TO2c9e2NzczpgJHtifSR7eD8iIjpgLCR7U31gfWAsZ3Vlc3NGYWxsYmFjazp4LGxvYWRlZE5hbWU6YixiYXNlRm9udE5hbWU6dSxzcmM6eS5qb2luKCIsIiksc3R5bGU6d307ZS5zZXQoZixnKTtyZXR1cm4gZ307YSgxMzkpO3ZhciByPWEoMTg4KSxuPWEoMTQ5KTtjb25zdCBpPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCJ9LHM9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LG89e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoibm9ybWFsIn0sYz17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJib2xkIn0sbD1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOmksdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6cyx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1JdGFsaWMiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOm8sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Yyx1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6aSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1Cb2xkIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZC50dGYiLHN0eWxlOnMsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOm8sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6Yyx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkNvdXJpZXIiLHtsb2NhbDpbIkNvdXJpZXIiLCJDb3VyaWVyIE5ldyIsIkxpYmVyYXRpb24gTW9ubyIsIk5pbWJ1cyBNb25vIiwiTmltYnVzIE1vbm8gTCIsIkNvdXNpbmUiLCJDdW1iZXJsYW5kIiwiVGVYIEd5cmUgQ3Vyc29yIiwiRnJlZU1vbm8iXSxzdHlsZTppLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6cyx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1PYmxpcXVlIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOm8sdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6Yyx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOmksZmFsbGJhY2s6IkhlbHZldGljYSJ9XSxbIkFyaWFsTmFycm93LUJvbGQiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOnMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpvLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIkNhbGlicmkiLHtsb2NhbDpbIkNhbGlicmkiLCJDYXJsaXRvIl0sc3R5bGU6aSxmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOnMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6byxmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJDYWxpYnJpLUJvbGRJdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6YyxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTppfV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV1dKSxoPW5ldyBNYXAoW1siQXJpYWwtQmxhY2siLCJBcmlhbEJsYWNrIl1dKTtmdW5jdGlvbiBnZW5lcmF0ZUZvbnQoZSx0LGEpe2xldHthbGlhczpyLGxvY2FsOm4scGF0aDppLGZhbGxiYWNrOmgsc3R5bGU6dSx1bHRpbWF0ZTpkfT1lLGY9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxnPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0scD1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06IiI7Y29uc3QgbT17c3R5bGU6bnVsbCx1bHRpbWF0ZTpudWxsfTtpZihuKXtjb25zdCBlPXA/YCAke3B9YDoiIjtmb3IoY29uc3QgYSBvZiBuKXQucHVzaChgbG9jYWwoJHthfSR7ZX0pYCl9aWYocil7Y29uc3QgZT1sLmdldChyKSxuPXB8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgczpyZXR1cm4iQm9sZCI7Y2FzZSBvOnJldHVybiJJdGFsaWMiO2Nhc2UgYzpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifSh1KTtPYmplY3QuYXNzaWduKG0sZ2VuZXJhdGVGb250KGUsdCxhLGYmJiFoLGcmJiFpLG4pKX11JiYobS5zdHlsZT11KTtkJiYobS51bHRpbWF0ZT1kKTtpZihmJiZoKXtjb25zdCBlPWwuZ2V0KGgpLHt1bHRpbWF0ZTpyfT1nZW5lcmF0ZUZvbnQoZSx0LGEsZixnJiYhaSxwKTttLnVsdGltYXRlfHw9cn1nJiZpJiZhJiZ0LnB1c2goYHVybCgke2F9JHtpfSlgKTtyZXR1cm4gbX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSW1hZ2VSZXNpemVyPXZvaWQgMDthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgyKTt2YXIgcj1hKDE0NCk7Y2xhc3MgSW1hZ2VSZXNpemVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCYmdDw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aClyZXR1cm4hMTtjb25zdHtNQVhfRElNOmF9PXRoaXM7aWYoZT5hfHx0PmEpcmV0dXJuITA7Y29uc3Qgcj1lKnQ7aWYodGhpcy5faGFzTWF4QXJlYSlyZXR1cm4gcj50aGlzLk1BWF9BUkVBO2lmKHI8dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCoqMilyZXR1cm4hMTtpZih0aGlzLl9hcmVHb29kRGltcyhlLHQpKXt0aGlzLl9nb29kU3F1YXJlTGVuZ3RoPU1hdGgubWF4KHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgsTWF0aC5mbG9vcihNYXRoLnNxcnQoZSp0KSkpO3JldHVybiExfXRoaXMuX2dvb2RTcXVhcmVMZW5ndGg9dGhpcy5fZ3Vlc3NNYXgodGhpcy5fZ29vZFNxdWFyZUxlbmd0aCxhLDEyOCwwKTtyZXR1cm4gcj4odGhpcy5NQVhfQVJFQT10aGlzLl9nb29kU3F1YXJlTGVuZ3RoKioyKX1zdGF0aWMgZ2V0IE1BWF9ESU0oKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUFYX0FSRUEiLHRoaXMuX2d1ZXNzTWF4KEltYWdlUmVzaXplci5fZ29vZFNxdWFyZUxlbmd0aCx0aGlzLk1BWF9ESU0sMTI4LDApKioyKX1zdGF0aWMgc2V0IE1BWF9BUkVBKGUpe2lmKGU+PTApe3RoaXMuX2hhc01heEFyZWE9ITA7KDAsci5zaGFkb3cpKHRoaXMsIk1BWF9BUkVBIixlKX19c3RhdGljIHNldE1heEFyZWEoZSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mil9c3RhdGljIF9hcmVHb29kRGltcyhlLHQpe3RyeXtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoZSx0KSxyPWEuZ2V0Q29udGV4dCgiMmQiKTtyLmZpbGxSZWN0KDAsMCwxLDEpO2NvbnN0IG49ci5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXTthLndpZHRoPWEuaGVpZ2h0PTE7cmV0dXJuIDAhPT1ufWNhdGNoe3JldHVybiExfX1zdGF0aWMgX2d1ZXNzTWF4KGUsdCxhLHIpe2Zvcig7ZSthKzE8dDspe2NvbnN0IGE9TWF0aC5mbG9vcigoZSt0KS8yKSxuPXJ8fGE7dGhpcy5fYXJlR29vZERpbXMoYSxuKT9lPWE6dD1hfXJldHVybiBlfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0pLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0IGU9dGhpcy5fZW5jb2RlQk1QKCksdD1uZXcgQmxvYihbZS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSksYT1jcmVhdGVJbWFnZUJpdG1hcCh0KSx7TUFYX0FSRUE6cixNQVhfRElNOm59PUltYWdlUmVzaXplcix7X2ltZ0RhdGE6aX09dGhpcyx7d2lkdGg6cyxoZWlnaHQ6b309aSxjPU1hdGgubWF4KHMvbixvL24sTWF0aC5zcXJ0KHMqby9yKSksbD1NYXRoLm1heChjLDIpLGg9TWF0aC5yb3VuZCgxMCooYysxLjI1KSkvMTAvbCx1PU1hdGguZmxvb3IoTWF0aC5sb2cyKGgpKSxkPW5ldyBBcnJheSh1KzIpLmZpbGwoMik7ZFswXT1sO2Quc3BsaWNlKC0xLDEsaC8oMTw8dSkpO2xldCBmPXMsZz1vLHA9YXdhaXQgYTtmb3IoY29uc3QgZSBvZiBkKXtjb25zdCB0PWYsYT1nO2Y9TWF0aC5mbG9vcihmL2UpLTE7Zz1NYXRoLmZsb29yKGcvZSktMTtjb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXMoZixnKTtyLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKHAsMCwwLHQsYSwwLDAsZixnKTtwPXIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9aS5kYXRhPW51bGw7aS5iaXRtYXA9cDtpLndpZHRoPWY7aS5oZWlnaHQ9ZztyZXR1cm4gaX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOmF9PXRoaXMuX2ltZ0RhdGE7bGV0IG4saT10aGlzLl9pbWdEYXRhLmRhdGEscz1uZXcgVWludDhBcnJheSgwKSxvPXMsYz0wO3N3aXRjaChhKXtjYXNlIHIuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQOntuPTE7cz1uZXcgVWludDhBcnJheSh0aGlzLl9pc01hc2s/WzI1NSwyNTUsMjU1LDI1NSwwLDAsMCwwXTpbMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTVdKTtjb25zdCBhPWUrNz4+MyxyPWErMyYtNDtpZihhIT09cil7Y29uc3QgZT1uZXcgVWludDhBcnJheShyKnQpO2xldCBuPTA7Zm9yKGxldCBzPTAsbz10KmE7czxvO3MrPWEsbis9cillLnNldChpLnN1YmFycmF5KHMscythKSxuKTtpPWV9YnJlYWt9Y2FzZSByLkltYWdlS2luZC5SR0JfMjRCUFA6bj0yNDtpZigzJmUpe2NvbnN0IGE9MyplLHI9YSszJi00LG49ci1hLHM9bmV3IFVpbnQ4QXJyYXkocip0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLHI9dCphO2U8cjtlKz1hKXtjb25zdCB0PWkuc3ViYXJyYXkoZSxlK2EpO2ZvcihsZXQgZT0wO2U8YTtlKz0zKXtzW28rK109dFtlKzJdO3NbbysrXT10W2UrMV07c1tvKytdPXRbZV19bys9bn1pPXN9ZWxzZSBmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PWlbZV07aVtlXT1pW2UrMl07aVtlKzJdPXR9YnJlYWs7Y2FzZSByLkltYWdlS2luZC5SR0JBXzMyQlBQOm49MzI7Yz0zO289bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGE9bmV3IERhdGFWaWV3KG8uYnVmZmVyKTtpZihyLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXthLnNldFVpbnQzMigwLDI1NSwhMCk7YS5zZXRVaW50MzIoNCw2NTI4MCwhMCk7YS5zZXRVaW50MzIoOCwxNjcxMTY4MCwhMCk7YS5zZXRVaW50MzIoMTIsNDI3ODE5MDA4MCwhMCl9ZWxzZXthLnNldFVpbnQzMigwLDQyNzgxOTAwODAsITApO2Euc2V0VWludDMyKDQsMTY3MTE2ODAsITApO2Euc2V0VWludDMyKDgsNjUyODAsITApO2Euc2V0VWludDMyKDEyLDI1NSwhMCl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0Iil9bGV0IGw9MDtjb25zdCBoPTQwK28ubGVuZ3RoLHU9MTQraCtzLmxlbmd0aCtpLmxlbmd0aCxkPW5ldyBVaW50OEFycmF5KHUpLGY9bmV3IERhdGFWaWV3KGQuYnVmZmVyKTtmLnNldFVpbnQxNihsLDE5Nzc4LCEwKTtsKz0yO2Yuc2V0VWludDMyKGwsdSwhMCk7bCs9NDtmLnNldFVpbnQzMihsLDAsITApO2wrPTQ7Zi5zZXRVaW50MzIobCwxNCtoK3MubGVuZ3RoLCEwKTtsKz00O2Yuc2V0VWludDMyKGwsaCwhMCk7bCs9NDtmLnNldEludDMyKGwsZSwhMCk7bCs9NDtmLnNldEludDMyKGwsLXQsITApO2wrPTQ7Zi5zZXRVaW50MTYobCwxLCEwKTtsKz0yO2Yuc2V0VWludDE2KGwsbiwhMCk7bCs9MjtmLnNldFVpbnQzMihsLGMsITApO2wrPTQ7Zi5zZXRVaW50MzIobCwwLCEwKTtsKz00O2Yuc2V0SW50MzIobCwwLCEwKTtsKz00O2Yuc2V0SW50MzIobCwwLCEwKTtsKz00O2Yuc2V0VWludDMyKGwscy5sZW5ndGgvNCwhMCk7bCs9NDtmLnNldFVpbnQzMihsLDAsITApO2wrPTQ7ZC5zZXQobyxsKTtsKz1vLmxlbmd0aDtkLnNldChzLGwpO2wrPXMubGVuZ3RoO2Quc2V0KGksbCk7cmV0dXJuIGR9fXQuSW1hZ2VSZXNpemVyPUltYWdlUmVzaXplcjtJbWFnZVJlc2l6ZXIuX2dvb2RTcXVhcmVMZW5ndGg9MjA0OH0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NdXJtdXJIYXNoM182ND12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMik7dmFyIHI9YSgxNDQpO2NvbnN0IG49MzI4NTM3NzUyMCxpPTQyOTQ5MDE3NjAscz02NTUzNTt0Lk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6bjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm59dXBkYXRlKGUpe2xldCB0LGE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2E9MDtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpO2lmKG48PTI1NSl0W2ErK109bjtlbHNle3RbYSsrXT1uPj4+ODt0W2ErK109MjU1Jm59fX1lbHNle2lmKCEoMCxyLmlzQXJyYXlCdWZmZXIpKGUpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixvPWEtNCpuLGM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGw9MCxoPTAsdT10aGlzLmgxLGQ9dGhpcy5oMjtjb25zdCBmPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcscD0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtsPWNbZV07bD1sKmYmaXxsKnAmcztsPWw8PDE1fGw+Pj4xNztsPWwqZyZpfGwqbSZzO3VePWw7dT11PDwxM3x1Pj4+MTk7dT01KnUrMzg2NDI5MjE5Nn1lbHNle2g9Y1tlXTtoPWgqZiZpfGgqcCZzO2g9aDw8MTV8aD4+PjE3O2g9aCpnJml8aCptJnM7ZF49aDtkPWQ8PDEzfGQ+Pj4xOTtkPTUqZCszODY0MjkyMTk2fWw9MDtzd2l0Y2gobyl7Y2FzZSAzOmxePXRbNCpuKzJdPDwxNjtjYXNlIDI6bF49dFs0Km4rMV08PDg7Y2FzZSAxOmxePXRbNCpuXTtsPWwqZiZpfGwqcCZzO2w9bDw8MTV8bD4+PjE3O2w9bCpnJml8bCptJnM7MSZuP3VePWw6ZF49bH10aGlzLmgxPXU7dGhpcy5oMj1kfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJml8MzYwNDUqZSZzO3Q9NDI4MzU0MzUxMSp0Jml8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJml8NjA0OTkqZSZzO3Q9MzMwMTg4MjM2Nip0Jml8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtyZXR1cm4oZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKHQ+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuT3BlcmF0b3JMaXN0PXZvaWQgMDthKDIpO2EoMTM5KTthKDg0KTthKDkzKTthKDk0KTthKDk3KTthKDk5KTthKDEwMSk7YSgxMDUpO2EoMTA4KTthKDExNSk7YSgxMTYpO2EoMTI2KTthKDEyOCk7YSgxMzEpO2EoMTMzKTthKDEzNSk7YSgxMzcpO3ZhciByPWEoMTQ0KTtmdW5jdGlvbiBhZGRTdGF0ZShlLHQsYSxyLG4pe2xldCBpPWU7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aC0xO2U8YTtlKyspe2NvbnN0IGE9dFtlXTtpPWlbYV18fD1bXX1pW3QuYXQoLTEpXT17Y2hlY2tGbjphLGl0ZXJhdGVGbjpyLHByb2Nlc3NGbjpufX1jb25zdCBuPVtdO2FkZFN0YXRlKG4sW3IuT1BTLnNhdmUsci5PUFMudHJhbnNmb3JtLHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0LHIuT1BTLnJlc3RvcmVdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q7Y2FzZSAzOnJldHVybiBhW3RdPT09ci5PUFMucmVzdG9yZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7bn1gKX0pLChmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMjAwKTtpZihsPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGg9MDtjb25zdCB1PVtdO2xldCBkPTAsZj0xLGc9MTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bbysoZTw8MildLGE9bltjKyhlPDwyKV1bMF07aWYoZithLndpZHRoPjFlMyl7aD1NYXRoLm1heChoLGYpO2crPWQrMjtmPTA7ZD0wfXUucHVzaCh7dHJhbnNmb3JtOnQseDpmLHk6Zyx3OmEud2lkdGgsaDphLmhlaWdodH0pO2YrPWEud2lkdGgrMjtkPU1hdGgubWF4KGQsYS5oZWlnaHQpfWNvbnN0IHA9TWF0aC5tYXgoaCxmKSsxLG09ZytkKzEsYj1uZXcgVWludDhBcnJheShwKm0qNCkseT1wPDwyO2ZvcihsZXQgZT0wO2U8bDtlKyspe2NvbnN0IHQ9bltjKyhlPDwyKV1bMF0uZGF0YSxhPXVbZV0udzw8MjtsZXQgcj0wLGk9dVtlXS54K3VbZV0ueSpwPDwyO2Iuc2V0KHQuc3ViYXJyYXkoMCxhKSxpLXkpO2ZvcihsZXQgbj0wLHM9dVtlXS5oO248cztuKyspe2Iuc2V0KHQuc3ViYXJyYXkocixyK2EpLGkpO3IrPWE7aSs9eX1iLnNldCh0LnN1YmFycmF5KHItYSxyKSxpKTtmb3IoO2k+PTA7KXt0W2ktNF09dFtpXTt0W2ktM109dFtpKzFdO3RbaS0yXT10W2krMl07dFtpLTFdPXRbaSszXTt0W2krYV09dFtpK2EtNF07dFtpK2ErMV09dFtpK2EtM107dFtpK2ErMl09dFtpK2EtMl07dFtpK2ErM109dFtpK2EtMV07aS09eX19Y29uc3Qgdz17d2lkdGg6cCxoZWlnaHQ6bX07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKHAsbSk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShiLmJ1ZmZlcikscCxtKSwwLDApO3cuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7dy5kYXRhPW51bGx9ZWxzZXt3LmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDt3LmRhdGE9Yn1hLnNwbGljZShzLDQqbCxyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKTtuLnNwbGljZShzLDQqbCxbdyx1XSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsci5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1uW2NdWzBdLGc9bltvXVswXSxwPW5bb11bMV0sbT1uW29dWzJdLGI9bltvXVszXTtpZihwPT09bSl7ZD0hMDtoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpe3U9bltoXTtpZihuW2VdWzBdIT09Znx8dVswXSE9PWd8fHVbMV0hPT1wfHx1WzJdIT09bXx8dVszXSE9PWIpe3Q8MTA/ZD0hMTpsPXQ7YnJlYWt9fX1pZihkKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtoPW87Zm9yKGxldCB0PTA7dDxsO3QrKyxoKz00KXt1PW5baF07ZVt0PDwxXT11WzRdO2VbMSsodDw8MSldPXVbNV19YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTtuLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1uW28rKHQ8PDIpXTtjb25zdCBhPW5bYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTp1fSl9YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1yLk9QUy5zYXZlO2Nhc2UgMTppZihhW3RdIT09ci5PUFMudHJhbnNmb3JtKXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0yLHM9bltpXVswXSxvPW5baV1bM107cmV0dXJuIG5bdF1bMF09PT1zJiYwPT09blt0XVsxXSYmMD09PW5bdF1bMl0mJm5bdF1bM109PT1vO2Nhc2UgMjppZihhW3RdIT09ci5PUFMucGFpbnRJbWFnZVhPYmplY3QpcmV0dXJuITE7Y29uc3QgYz1uW2UuaUN1cnItMV1bMF07cmV0dXJuIG5bdF1bMF09PT1jO2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2l9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPW5baS0xXVswXSxsPW5bb11bMF0saD1uW29dWzNdLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2xldCBmPW87Zm9yKGxldCBlPTA7ZTx1O2UrKyxmKz00KXtjb25zdCB0PW5bZl07ZFtlPDwxXT10WzRdO2RbMSsoZTw8MSldPXRbNV19Y29uc3QgZz1bYyxsLGgsZF07YS5zcGxpY2Uocyw0KnUsci5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpO24uc3BsaWNlKHMsNCp1LGcpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUobixbci5PUFMuYmVnaW5UZXh0LHIuT1BTLnNldEZvbnQsci5PUFMuc2V0VGV4dE1hdHJpeCxyLk9QUy5zaG93VGV4dCxyLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuYmVnaW5UZXh0O2Nhc2UgMTpyZXR1cm4gYVt0XT09PXIuT1BTLnNldEZvbnQ7Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMuc2V0VGV4dE1hdHJpeDtjYXNlIDM6aWYoYVt0XSE9PXIuT1BTLnNob3dUZXh0KXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0zLHM9bltpXVswXSxvPW5baV1bMV07cmV0dXJuIG5bdF1bMF09PT1zJiZuW3RdWzFdPT09bztjYXNlIDQ6cmV0dXJuIGFbdF09PT1yLk9QUy5lbmRUZXh0fXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxuPWUuaUN1cnIsaT1uLTQscz1uLTMsbz1uLTIsYz1uLTEsbD1uLGg9cltzXVswXSx1PXJbc11bMV07bGV0IGQ9TWF0aC5taW4oTWF0aC5mbG9vcigodC1pKS81KSwxZTMpO2lmKGQ8MylyZXR1cm4gdC0odC1pKSU1O2xldCBmPWk7aWYoaT49NCYmYVtpLTRdPT09YVtzXSYmYVtpLTNdPT09YVtvXSYmYVtpLTJdPT09YVtjXSYmYVtpLTFdPT09YVtsXSYmcltpLTRdWzBdPT09aCYmcltpLTRdWzFdPT09dSl7ZCsrO2YtPTV9bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspe2Euc3BsaWNlKGcsMyk7ci5zcGxpY2UoZywzKTtnKz0yfXJldHVybiBnKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLmNvbnRleHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsYT1lLmxlbmd0aCxyPXRoaXMuc3RhdGUsaT10aGlzLm1hdGNoO2lmKCFyJiYhaSYmdCsxPT09YSYmIW5bZVt0XV0pe3RoaXMubGFzdFByb2Nlc3NlZD1hO3JldHVybn1jb25zdCBzPXRoaXMuY29udGV4dDtmb3IoO3Q8YTspe2lmKGkpe2lmKCgwLGkuaXRlcmF0ZUZuKShzLHQpKXt0Kys7Y29udGludWV9dD0oMCxpLnByb2Nlc3NGbikocyx0KzEpO2E9ZS5sZW5ndGg7aT1udWxsO3I9bnVsbDtpZih0Pj1hKWJyZWFrfXI9KHJ8fG4pW2VbdF1dO2lmKHImJiFBcnJheS5pc0FycmF5KHIpKXtzLmlDdXJyPXQ7dCsrO2lmKCFyLmNoZWNrRm58fCgwLHIuY2hlY2tGbikocykpe2k9cjtyPW51bGx9ZWxzZSByPW51bGx9ZWxzZSB0Kyt9dGhpcy5zdGF0ZT1yO3RoaXMubWF0Y2g9aTt0aGlzLmxhc3RQcm9jZXNzZWQ9dH1mbHVzaCgpe2Zvcig7dGhpcy5tYXRjaDspe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5Lmxlbmd0aDt0aGlzLmxhc3RQcm9jZXNzZWQ9KDAsdGhpcy5tYXRjaC5wcm9jZXNzRm4pKHRoaXMuY29udGV4dCxlKTt0aGlzLm1hdGNoPW51bGw7dGhpcy5zdGF0ZT1udWxsO3RoaXMuX29wdGltaXplKCl9fXJlc2V0KCl7dGhpcy5zdGF0ZT1udWxsO3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH19Y2xhc3MgT3BlcmF0b3JMaXN0e3N0YXRpYyBDSFVOS19TSVpFPTFlMztzdGF0aWMgQ0hVTktfU0laRV9BQk9VVD10aGlzLkNIVU5LX1NJWkUtNTtjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLHQ9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTt0aGlzLm9wdGltaXplcj0hdHx8ZSZyLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP25ldyBOdWxsT3B0aW1pemVyKHRoaXMpOm5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9c2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKGUpe3RoaXMub3B0aW1pemVyLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1yLk9QUy5yZXN0b3JlfHxlPT09ci5PUFMuZW5kVGV4dCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEpe3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3Aoci5PUFMuZGVwZW5kZW5jeSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxyLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6bn09dGhpcztmb3IobGV0IGk9MDtpPG47aSsrKXN3aXRjaCh0W2ldKXtjYXNlIHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCB0PWFbaV1bMF07IXQuY2FjaGVkJiZ0LmRhdGE/LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZlLnB1c2godC5kYXRhLmJ1ZmZlcil9cmV0dXJuIGV9Zmx1c2goKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBhPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1hO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOmF9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fXQuT3BlcmF0b3JMaXN0PU9wZXJhdG9yTGlzdH0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QREZJbWFnZT12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMik7dmFyIHI9YSgxNDQpLG49YSgxNzgpLGk9YSgxNTEpLHM9YSgxNjIpLG89YSgxNjgpLGM9YSgyMTIpLGw9YSgxNzYpLGg9YSgxODApLHU9YSgxNTApO2Z1bmN0aW9uIGRlY29kZUFuZENsYW1wKGUsdCxhLHIpeyhlPXQrZSphKTwwP2U9MDplPnImJihlPXIpO3JldHVybiBlfWZ1bmN0aW9uIHJlc2l6ZUltYWdlTWFzayhlLHQsYSxyLG4saSl7Y29uc3Qgcz1uKmk7bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgYz1hL24sbD1yL2k7bGV0IGgsdSxkLGYsZz0wO2NvbnN0IHA9bmV3IFVpbnQxNkFycmF5KG4pLG09YTtmb3IoaD0wO2g8bjtoKyspcFtoXT1NYXRoLmZsb29yKGgqYyk7Zm9yKGg9MDtoPGk7aCsrKXtkPU1hdGguZmxvb3IoaCpsKSptO2Zvcih1PTA7dTxuO3UrKyl7Zj1kK3BbdV07b1tnKytdPWVbZl19fXJldHVybiBvfWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKGUpe2xldHt4cmVmOnQscmVzOmEsaW1hZ2U6bixpc0lubGluZTpvPSExLHNtYXNrOmM9bnVsbCxtYXNrOmw9bnVsbCxpc01hc2s6ZD0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6Zixsb2NhbENvbG9yU3BhY2VDYWNoZTpnfT1lO3RoaXMuaW1hZ2U9bjtjb25zdCBwPW4uZGljdCxtPXAuZ2V0KCJGIiwiRmlsdGVyIik7bGV0IGI7aWYobSBpbnN0YW5jZW9mIHUuTmFtZSliPW0ubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobSkpe2NvbnN0IGU9dC5mZXRjaElmUmVmKG1bMF0pO2UgaW5zdGFuY2VvZiB1Lk5hbWUmJihiPWUubmFtZSl9c3dpdGNoKGIpe2Nhc2UiSlBYRGVjb2RlIjpjb25zdCBlPW5ldyBoLkpweEltYWdlO2UucGFyc2VJbWFnZVByb3BlcnRpZXMobi5zdHJlYW0pO24uc3RyZWFtLnJlc2V0KCk7bi53aWR0aD1lLndpZHRoO24uaGVpZ2h0PWUuaGVpZ2h0O24uYml0c1BlckNvbXBvbmVudD1lLmJpdHNQZXJDb21wb25lbnQ7bi5udW1Db21wcz1lLmNvbXBvbmVudHNDb3VudDticmVhaztjYXNlIkpCSUcyRGVjb2RlIjpuLmJpdHNQZXJDb21wb25lbnQ9MTtuLm51bUNvbXBzPTF9bGV0IHk9cC5nZXQoIlciLCJXaWR0aCIpLHc9cC5nZXQoIkgiLCJIZWlnaHQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKG4ud2lkdGgpJiZuLndpZHRoPjAmJk51bWJlci5pc0ludGVnZXIobi5oZWlnaHQpJiZuLmhlaWdodD4wJiYobi53aWR0aCE9PXl8fG4uaGVpZ2h0IT09dykpeygwLHIud2FybikoIlBERkltYWdlIC0gdXNpbmcgdGhlIFdpZHRoL0hlaWdodCBvZiB0aGUgaW1hZ2UgZGF0YSwgcmF0aGVyIHRoYW4gdGhlIGltYWdlIGRpY3Rpb25hcnkuIik7eT1uLndpZHRoO3c9bi5oZWlnaHR9aWYoeTwxfHx3PDEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgaW1hZ2Ugd2lkdGg6ICR7eX0gb3IgaGVpZ2h0OiAke3d9YCk7dGhpcy53aWR0aD15O3RoaXMuaGVpZ2h0PXc7dGhpcy5pbnRlcnBvbGF0ZT1wLmdldCgiSSIsIkludGVycG9sYXRlIik7dGhpcy5pbWFnZU1hc2s9cC5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExO3RoaXMubWF0dGU9cC5nZXQoIk1hdHRlIil8fCExO2xldCBTPW4uYml0c1BlckNvbXBvbmVudDtpZighUyl7Uz1wLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpO2lmKCFTKXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO1M9MX19dGhpcy5icGM9UztpZighdGhpcy5pbWFnZU1hc2spe2xldCBlPXAuZ2V0UmF3KCJDUyIpfHxwLmdldFJhdygiQ29sb3JTcGFjZSIpO2lmKCFlKXsoMCxyLmluZm8pKCJKUFggaW1hZ2VzICh3aGljaCBkbyBub3QgcmVxdWlyZSBjb2xvciBzcGFjZXMpIik7c3dpdGNoKG4ubnVtQ29tcHMpe2Nhc2UgMTplPXUuTmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6ZT11Lk5hbWUuZ2V0KCJEZXZpY2VSR0IiKTticmVhaztjYXNlIDQ6ZT11Lk5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEpQWCBpbWFnZXMgd2l0aCAke24ubnVtQ29tcHN9IGNvbG9yIGNvbXBvbmVudHMgbm90IHN1cHBvcnRlZC5gKX19dGhpcy5jb2xvclNwYWNlPXMuQ29sb3JTcGFjZS5wYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOm8/YTpudWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTt0aGlzLm51bUNvbXBzPXRoaXMuY29sb3JTcGFjZS5udW1Db21wc310aGlzLmRlY29kZT1wLmdldEFycmF5KCJEIiwiRGVjb2RlIik7dGhpcy5uZWVkc0RlY29kZT0hMTtpZih0aGlzLmRlY29kZSYmKHRoaXMuY29sb3JTcGFjZSYmIXRoaXMuY29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsUyl8fGQmJiFzLkNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDxTKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdO3RoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZT8ubmFtZTtmb3IobGV0IGE9MCxyPTA7YTx0aGlzLmRlY29kZS5sZW5ndGg7YSs9MiwrK3Ipe2NvbnN0IG49dGhpcy5kZWNvZGVbYV0saT10aGlzLmRlY29kZVthKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW3JdPXQ/KGktbikvZTppLW47dGhpcy5kZWNvZGVBZGRlbmRzW3JdPXQ/bjplKm59fWlmKGMpdGhpcy5zbWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6dCxyZXM6YSxpbWFnZTpjLGlzSW5saW5lOm8scGRmRnVuY3Rpb25GYWN0b3J5OmYsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Z30pO2Vsc2UgaWYobClpZihsIGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtKXtsLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6dCxyZXM6YSxpbWFnZTpsLGlzSW5saW5lOm8saXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTooMCxyLndhcm4pKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9bH1zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZShlKXtsZXR7eHJlZjp0LHJlczphLGltYWdlOm4saXNJbmxpbmU6cz0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfT1lO2NvbnN0IGw9bjtsZXQgaD1udWxsLHU9bnVsbDtjb25zdCBkPW4uZGljdC5nZXQoIlNNYXNrIiksZj1uLmRpY3QuZ2V0KCJNYXNrIik7ZD9kIGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP2g9ZDooMCxyLndhcm4pKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOmYmJihmIGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGYpP3U9ZjooMCxyLndhcm4pKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpO3JldHVybiBuZXcgUERGSW1hZ2Uoe3hyZWY6dCxyZXM6YSxpbWFnZTpsLGlzSW5saW5lOnMsc21hc2s6aCxtYXNrOnUscGRmRnVuY3Rpb25GYWN0b3J5Om8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Y30pfXN0YXRpYyBjcmVhdGVSYXdNYXNrKGUpe2xldHtpbWdBcnJheTp0LHdpZHRoOmEsaGVpZ2h0OnIsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06bixpbnZlcnNlRGVjb2RlOmksaW50ZXJwb2xhdGU6c309ZTtjb25zdCBvPShhKzc+PjMpKnIsYz10LmJ5dGVMZW5ndGg7bGV0IGwsaDtpZighbnx8aSYmIShvPT09YykpaWYoaSl7bD1uZXcgVWludDhBcnJheShvKTtsLnNldCh0KTtsLmZpbGwoMjU1LGMpfWVsc2UgbD1uZXcgVWludDhBcnJheSh0KTtlbHNlIGw9dDtpZihpKWZvcihoPTA7aDxjO2grKylsW2hdXj0yNTU7cmV0dXJue2RhdGE6bCx3aWR0aDphLGhlaWdodDpyLGludGVycG9sYXRlOnN9fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKGUpe2xldHtpbWdBcnJheTp0LHdpZHRoOmEsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06cyxpbnZlcnNlRGVjb2RlOm8saW50ZXJwb2xhdGU6bCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpoPSExfT1lO2NvbnN0IHU9MT09PWEmJjE9PT1pJiZvPT09KDA9PT10Lmxlbmd0aHx8ISEoMTI4JnRbMF0pKTtpZih1KXJldHVybntpc1NpbmdsZU9wYXF1ZVBpeGVsOnV9O2lmKGgpe2lmKGMuSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoYSxpKSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSppKjQpOygwLG4uY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEpKHtzcmM6dCxkZXN0OmUsd2lkdGg6YSxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7cmV0dXJuIGMuSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtraW5kOnIuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZGF0YTplLHdpZHRoOmEsaGVpZ2h0OmksaW50ZXJwb2xhdGU6bH0pfWNvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhhLGkpLHM9ZS5nZXRDb250ZXh0KCIyZCIpLGg9cy5jcmVhdGVJbWFnZURhdGEoYSxpKTsoMCxuLmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKSh7c3JjOnQsZGVzdDpoLmRhdGEsd2lkdGg6YSxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7cy5wdXRJbWFnZURhdGEoaCwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6YSxoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpsLGJpdG1hcDplLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTp0LHdpZHRoOmEsaGVpZ2h0OmksaW52ZXJzZURlY29kZTpvLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnMsaW50ZXJwb2xhdGU6bH0pfWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrPy53aWR0aHx8MCx0aGlzLm1hc2s/LndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrPy5oZWlnaHR8fDAsdGhpcy5tYXNrPy5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxuPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLGk9KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPWRlY29kZUFuZENsYW1wKGVbY10sclt0XSxuW3RdLGkpO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5udW1Db21wcyxpPWEqcipuO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkoaSk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KGkpOm5ldyBVaW50MzJBcnJheShpKTtjb25zdCBjPWEqbixsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLG47Zm9yKGxldCBpPTA7aTxyO2krKyl7YT1kKygtOCZjKTtuPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPG4pe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxuOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPWk7ZDxoOysrZCl7aWYoZCVjPT0wKXt1PTA7YT0wfWZvcig7YTx0Oyl7dT11PDw4fGVbbysrXTthKz04fWNvbnN0IHI9YS10O2xldCBuPXU+PnI7bjwwP249MDpuPmwmJihuPWwpO3NbZF09bjt1Jj0oMTw8ciktMTthPXJ9fXJldHVybiBzfWZpbGxPcGFjaXR5KGUsdCxhLG4saSl7Y29uc3Qgcz10aGlzLnNtYXNrLG89dGhpcy5tYXNrO2xldCBjLGwsaCx1LGQsZjtpZihzKXtsPXMud2lkdGg7aD1zLmhlaWdodDtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmgpO3MuZmlsbEdyYXlCdWZmZXIoYyk7bD09PXQmJmg9PT1hfHwoYz1yZXNpemVJbWFnZU1hc2soYyxzLmJwYyxsLGgsdCxhKSl9ZWxzZSBpZihvKWlmKG8gaW5zdGFuY2VvZiBQREZJbWFnZSl7bD1vLndpZHRoO2g9by5oZWlnaHQ7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkobCpoKTtvLm51bUNvbXBzPTE7by5maWxsR3JheUJ1ZmZlcihjKTtmb3IodT0wLGQ9bCpoO3U8ZDsrK3UpY1t1XT0yNTUtY1t1XTtsPT09dCYmaD09PWF8fChjPXJlc2l6ZUltYWdlTWFzayhjLG8uYnBjLGwsaCx0LGEpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tjPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IodT0wLGQ9dCphO3U8ZDsrK3Upe2xldCB0PTA7Y29uc3QgYT11KmU7Zm9yKGY9MDtmPGU7KytmKXtjb25zdCBlPWlbYStmXSxyPTIqZjtpZihlPG9bcl18fGU+b1tyKzFdKXt0PTI1NTticmVha319Y1t1XT10fX19aWYoYylmb3IodT0wLGY9MyxkPXQqbjt1PGQ7Kyt1LGYrPTQpZVtmXT1jW3VdO2Vsc2UgZm9yKHU9MCxmPTMsZD10Km47dTxkOysrdSxmKz00KWVbZl09MjU1fXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnNtYXNrPy5tYXR0ZTtpZighcilyZXR1cm47Y29uc3Qgbj10aGlzLmNvbG9yU3BhY2UuZ2V0UmdiKHIsMCksaT1uWzBdLHM9blsxXSxvPW5bMl0sYz10KmEqNDtmb3IobGV0IHQ9MDt0PGM7dCs9NCl7Y29uc3QgYT1lW3QrM107aWYoMD09PWEpe2VbdF09MjU1O2VbdCsxXT0yNTU7ZVt0KzJdPTI1NTtjb250aW51ZX1jb25zdCByPTI1NS9hO2VbdF09KGVbdF0taSkqcitpO2VbdCsxXT0oZVt0KzFdLXMpKnIrcztlW3QrMl09KGVbdCsyXS1vKSpyK299fWFzeW5jIGNyZWF0ZUltYWdlRGF0YSgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2NvbnN0IGE9dGhpcy5kcmF3V2lkdGgsbj10aGlzLmRyYXdIZWlnaHQsaT17d2lkdGg6YSxoZWlnaHQ6bixpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LHM9dGhpcy5udW1Db21wcyxvPXRoaXMud2lkdGgsaD10aGlzLmhlaWdodCx1PXRoaXMuYnBjLGQ9bypzKnUrNz4+MyxmPXQmJmMuSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoYSxuKTtpZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT11P2U9ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PXV8fHRoaXMubmVlZHNEZWNvZGV8fChlPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmE9PT1vJiZuPT09aCl7Y29uc3Qgcz10aGlzLmdldEltYWdlQnl0ZXMoaCpkLHt9KTtpZih0KXJldHVybiBmP2MuSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOnMsa2luZDplLHdpZHRoOmEsaGVpZ2h0Om4saW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxvLGgscyk7aS5raW5kPWU7aS5kYXRhPXM7aWYodGhpcy5uZWVkc0RlY29kZSl7KDAsci5hc3NlcnQpKGU9PT1yLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCwiUERGSW1hZ2UuY3JlYXRlSW1hZ2VEYXRhOiBUaGUgaW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUuIik7Y29uc3QgdD1pLmRhdGE7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV1ePTI1NX1yZXR1cm4gaX1pZih0aGlzLmltYWdlIGluc3RhbmNlb2YgbC5KcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPWgqZDtpZih0JiYhZil7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PXRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6YSxkcmF3SGVpZ2h0Om4sZm9yY2VSR0JBOiEwfSk7cmV0dXJuIHRoaXMuY3JlYXRlQml0bWFwKHIuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsYSxuLHQpfX1lbHNlIHN3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj0zO2Nhc2UiRGV2aWNlUkdCIjpjYXNlIkRldmljZUNNWUsiOmkua2luZD1yLkltYWdlS2luZC5SR0JfMjRCUFA7aS5kYXRhPXRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6YSxkcmF3SGVpZ2h0Om4sZm9yY2VSR0I6ITB9KTtyZXR1cm4gZj9jLkltYWdlUmVzaXplci5jcmVhdGVJbWFnZShpKTppfX19Y29uc3QgZz10aGlzLmdldEltYWdlQnl0ZXMoaCpkLHtpbnRlcm5hbDohMH0pLHA9MHxnLmxlbmd0aC9kKm4vaCxtPXRoaXMuZ2V0Q29tcG9uZW50cyhnKTtsZXQgYix5LHcsUyx4LEM7aWYodCYmIWYpe3c9bmV3IE9mZnNjcmVlbkNhbnZhcyhhLG4pO1M9dy5nZXRDb250ZXh0KCIyZCIpO3g9Uy5jcmVhdGVJbWFnZURhdGEoYSxuKTtDPXguZGF0YX1pLmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDtpZihlfHx0aGlzLnNtYXNrfHx0aGlzLm1hc2spe3QmJiFmfHwoQz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSpuKjQpKTtiPTE7eT0hMDt0aGlzLmZpbGxPcGFjaXR5KEMsYSxuLHAsbSl9ZWxzZXtpZighdHx8Zil7aS5raW5kPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUDtDPW5ldyBVaW50OENsYW1wZWRBcnJheShhKm4qMyk7Yj0wfWVsc2V7bmV3IFVpbnQzMkFycmF5KEMuYnVmZmVyKS5maWxsKHIuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO2I9MX15PSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG0pO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKEMsbyxoLGEsbixwLHUsbSxiKTt5JiZ0aGlzLnVuZG9QcmVibGVuZChDLGEscCk7aWYodCYmIWYpe1MucHV0SW1hZ2VEYXRhKHgsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmEsaGVpZ2h0Om4sYml0bWFwOncudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19aS5kYXRhPUM7cmV0dXJuIGY/Yy5JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UoaSk6aX1maWxsR3JheUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMubnVtQ29tcHM7aWYoMSE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFJlYWRpbmcgZ3JheSBzY2FsZSBmcm9tIGEgY29sb3IgaW1hZ2U6ICR7dH1gKTtjb25zdCBhPXRoaXMud2lkdGgsbj10aGlzLmhlaWdodCxpPXRoaXMuYnBjLHM9YSp0KmkrNz4+MyxvPXRoaXMuZ2V0SW1hZ2VCeXRlcyhuKnMse2ludGVybmFsOiEwfSksYz10aGlzLmdldENvbXBvbmVudHMobyk7bGV0IGwsaDtpZigxPT09aSl7aD1hKm47aWYodGhpcy5uZWVkc0RlY29kZSlmb3IobD0wO2w8aDsrK2wpZVtsXT1jW2xdLTEmMjU1O2Vsc2UgZm9yKGw9MDtsPGg7KytsKWVbbF09MjU1Ji1jW2xdO3JldHVybn10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihjKTtoPWEqbjtjb25zdCB1PTI1NS8oKDE8PGkpLTEpO2ZvcihsPTA7bDxoOysrbCllW2xdPXUqY1tsXX1jcmVhdGVCaXRtYXAoZSx0LGEsaSl7Y29uc3Qgcz1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSksbz1zLmdldENvbnRleHQoIjJkIik7bGV0IGM7aWYoZT09PXIuSW1hZ2VLaW5kLlJHQkFfMzJCUFApYz1uZXcgSW1hZ2VEYXRhKGksdCxhKTtlbHNle2M9by5jcmVhdGVJbWFnZURhdGEodCxhKTsoMCxuLmNvbnZlcnRUb1JHQkEpKHtraW5kOmUsc3JjOmksZGVzdDpuZXcgVWludDMyQXJyYXkoYy5kYXRhLmJ1ZmZlciksd2lkdGg6dCxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMubmVlZHNEZWNvZGV9KX1vLnB1dEltYWdlRGF0YShjLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDphLGJpdG1hcDpzLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fWdldEltYWdlQnl0ZXMoZSx0KXtsZXR7ZHJhd1dpZHRoOmEsZHJhd0hlaWdodDpuLGZvcmNlUkdCQTppPSExLGZvcmNlUkdCOnM9ITEsaW50ZXJuYWw6Yz0hMX09dDt0aGlzLmltYWdlLnJlc2V0KCk7dGhpcy5pbWFnZS5kcmF3V2lkdGg9YXx8dGhpcy53aWR0aDt0aGlzLmltYWdlLmRyYXdIZWlnaHQ9bnx8dGhpcy5oZWlnaHQ7dGhpcy5pbWFnZS5mb3JjZVJHQkE9ISFpO3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFzO2NvbnN0IGw9dGhpcy5pbWFnZS5nZXRCeXRlcyhlKTtpZihjfHx0aGlzLmltYWdlIGluc3RhbmNlb2Ygby5EZWNvZGVTdHJlYW0pcmV0dXJuIGw7KDAsci5hc3NlcnQpKGwgaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobCl9fXQuUERGSW1hZ2U9UERGSW1hZ2V9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuaW5jcmVtZW50YWxVcGRhdGU9YXN5bmMgZnVuY3Rpb24gaW5jcmVtZW50YWxVcGRhdGUoZSl7bGV0e29yaWdpbmFsRGF0YTp0LHhyZWZJbmZvOmEsbmV3UmVmczpvLHhyZWY6bD1udWxsLGhhc1hmYTpoPSExLHhmYURhdGFzZXRzUmVmOnU9bnVsbCxoYXNYZmFEYXRhc2V0c0VudHJ5OmQ9ITEsbmVlZEFwcGVhcmFuY2VzOmYsYWNyb0Zvcm1SZWY6Zz1udWxsLGFjcm9Gb3JtOnA9bnVsbCx4ZmFEYXRhOm09bnVsbH09ZTthd2FpdCBhc3luYyBmdW5jdGlvbiB1cGRhdGVBY3JvZm9ybShlKXtsZXR7eHJlZjp0LGFjcm9Gb3JtOmEsYWNyb0Zvcm1SZWY6aSxoYXNYZmE6cyxoYXNYZmFEYXRhc2V0c0VudHJ5Om8seGZhRGF0YXNldHNSZWY6YyxuZWVkQXBwZWFyYW5jZXM6bCxuZXdSZWZzOmh9PWU7IXN8fG98fGN8fCgwLHIud2FybikoIlhGQSAtIENhbm5vdCBzYXZlIGl0Iik7aWYoIWwmJighc3x8IWN8fG8pKXJldHVybjtjb25zdCB1PW5ldyBuLkRpY3QodCk7Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpdS5zZXQoZSxhLmdldFJhdyhlKSk7aWYocyYmIW8pe2NvbnN0IGU9YS5nZXQoIlhGQSIpLnNsaWNlKCk7ZS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Uuc3BsaWNlKDMsMCxjKTt1LnNldCgiWEZBIixlKX1sJiZ1LnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7Y29uc3QgZD10LmVuY3J5cHQ7bGV0IGY9bnVsbDtkJiYoZj1kLmNyZWF0ZUNpcGhlclRyYW5zZm9ybShpLm51bSxpLmdlbikpO2NvbnN0IGc9W107YXdhaXQgd3JpdGVPYmplY3QoaSx1LGcsZik7aC5wdXNoKHtyZWY6aSxkYXRhOmcuam9pbigiIil9KX0oe3hyZWY6bCxhY3JvRm9ybTpwLGFjcm9Gb3JtUmVmOmcsaGFzWGZhOmgsaGFzWGZhRGF0YXNldHNFbnRyeTpkLHhmYURhdGFzZXRzUmVmOnUsbmVlZEFwcGVhcmFuY2VzOmYsbmV3UmVmczpvfSk7aCYmZnVuY3Rpb24gdXBkYXRlWEZBKGUpe2xldHt4ZmFEYXRhOnQseGZhRGF0YXNldHNSZWY6YSxuZXdSZWZzOm4seHJlZjpvfT1lO2lmKG51bGw9PT10KXt0PWZ1bmN0aW9uIHdyaXRlWEZBRGF0YUZvckFjcm9mb3JtKGUsdCl7Y29uc3QgYT1uZXcgcy5TaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTpufT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IG89KDAsaS5wYXJzZVhGQVBhdGgpKHQpO2xldCBjPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUobywwKTshYyYmby5sZW5ndGg+MSYmKGM9YS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbby5hdCgtMSldLDApKTtjP2MuY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KG4pP24ubWFwKChlPT5uZXcgcy5TaW1wbGVET01Ob2RlKCJ2YWx1ZSIsZSkpKTpbbmV3IHMuU2ltcGxlRE9NTm9kZSgiI3RleHQiLG4pXTooMCxyLndhcm4pKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IG49W107YS5kb2N1bWVudEVsZW1lbnQuZHVtcChuKTtyZXR1cm4gbi5qb2luKCIiKX0oby5mZXRjaElmUmVmKGEpLmdldFN0cmluZygpLG4pfWNvbnN0IGM9by5lbmNyeXB0O2lmKGMpe3Q9Yy5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oYS5udW0sYS5nZW4pLmVuY3J5cHRTdHJpbmcodCl9Y29uc3QgbD1gJHthLm51bX0gJHthLmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHt0Lmxlbmd0aH0+Plxuc3RyZWFtXG5gK3QrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7bi5wdXNoKHtyZWY6YSxkYXRhOmx9KX0oe3hmYURhdGE6bSx4ZmFEYXRhc2V0c1JlZjp1LG5ld1JlZnM6byx4cmVmOmx9KTtjb25zdCBiPW5ldyBuLkRpY3QobnVsbCkseT1hLm5ld1JlZjtsZXQgdyxTO2NvbnN0IHg9dC5hdCgtMSk7aWYoMTA9PT14fHwxMz09PXgpe3c9W107Uz10Lmxlbmd0aH1lbHNle3c9WyJcbiJdO1M9dC5sZW5ndGgrMX1iLnNldCgiU2l6ZSIseS5udW0rMSk7Yi5zZXQoIlByZXYiLGEuc3RhcnRYUmVmKTtiLnNldCgiVHlwZSIsbi5OYW1lLmdldCgiWFJlZiIpKTtudWxsIT09YS5yb290UmVmJiZiLnNldCgiUm9vdCIsYS5yb290UmVmKTtudWxsIT09YS5pbmZvUmVmJiZiLnNldCgiSW5mbyIsYS5pbmZvUmVmKTtudWxsIT09YS5lbmNyeXB0UmVmJiZiLnNldCgiRW5jcnlwdCIsYS5lbmNyeXB0UmVmKTtvLnB1c2goe3JlZjp5LGRhdGE6IiJ9KTtvPW8uc29ydCgoKGUsdCk9PmUucmVmLm51bS10LnJlZi5udW0pKTtjb25zdCBDPVtbMCwxLDY1NTM1XV0sdj1bMCwxXTtsZXQgaz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOnR9b2Ygbyl7az1NYXRoLm1heChrLFMpO0MucHVzaChbMSxTLE1hdGgubWluKGUuZ2VuLDY1NTM1KV0pO1MrPXQubGVuZ3RoO3YucHVzaChlLm51bSwxKTt3LnB1c2godCl9Yi5zZXQoIkluZGV4Iix2KTtpZihBcnJheS5pc0FycmF5KGEuZmlsZUlkcykmJmEuZmlsZUlkcy5sZW5ndGg+MCl7Y29uc3QgZT1mdW5jdGlvbiBjb21wdXRlTUQ1KGUsdCl7Y29uc3QgYT1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKSxuPXQuZmlsZW5hbWV8fCIiLGk9W2EudG9TdHJpbmcoKSxuLGUudG9TdHJpbmcoKV07bGV0IHM9aS5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKTtmb3IoY29uc3QgZSBvZiBPYmplY3QudmFsdWVzKHQuaW5mbykpe2kucHVzaChlKTtzKz1lLmxlbmd0aH1jb25zdCBvPW5ldyBVaW50OEFycmF5KHMpO2xldCBsPTA7Zm9yKGNvbnN0IGUgb2YgaSl7d3JpdGVTdHJpbmcoZSxsLG8pO2wrPWUubGVuZ3RofXJldHVybigwLHIuYnl0ZXNUb1N0cmluZykoKDAsYy5jYWxjdWxhdGVNRDUpKG8pKX0oUyxhKTtiLnNldCgiSUQiLFthLmZpbGVJZHNbMF0sZV0pfWNvbnN0IE89WzEsTWF0aC5jZWlsKE1hdGgubG9nMihrKS84KSwyXSxUPShPWzBdK09bMV0rT1syXSkqQy5sZW5ndGg7Yi5zZXQoIlciLE8pO2Iuc2V0KCJMZW5ndGgiLFQpO3cucHVzaChgJHt5Lm51bX0gJHt5Lmdlbn0gb2JqXG5gKTthd2FpdCB3cml0ZURpY3QoYix3LG51bGwpO3cucHVzaCgiIHN0cmVhbVxuIik7Y29uc3QgTT13LnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApLEU9YFxuZW5kc3RyZWFtXG5lbmRvYmpcbnN0YXJ0eHJlZlxuJHtTfVxuJSVFT0ZcbmAsRD1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCtNK1QrRS5sZW5ndGgpO0Quc2V0KHQpO2xldCBOPXQubGVuZ3RoO2Zvcihjb25zdCBlIG9mIHcpe3dyaXRlU3RyaW5nKGUsTixEKTtOKz1lLmxlbmd0aH1mb3IoY29uc3RbZSx0LGFdb2YgQyl7Tj13cml0ZUludChlLE9bMF0sTixEKTtOPXdyaXRlSW50KHQsT1sxXSxOLEQpO049d3JpdGVJbnQoYSxPWzJdLE4sRCl9d3JpdGVTdHJpbmcoRSxOLEQpO3JldHVybiBEfTt0LndyaXRlRGljdD13cml0ZURpY3Q7dC53cml0ZU9iamVjdD13cml0ZU9iamVjdDthKDEzOSk7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO3ZhciByPWEoMTQ0KSxuPWEoMTUwKSxpPWEoMTQ5KSxzPWEoMjE3KSxvPWEoMTUxKSxjPWEoMjE4KTthc3luYyBmdW5jdGlvbiB3cml0ZU9iamVjdChlLHQsYSxyKXthLnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IG9ialxuYCk7dCBpbnN0YW5jZW9mIG4uRGljdD9hd2FpdCB3cml0ZURpY3QodCxhLHIpOnQgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJmF3YWl0IHdyaXRlU3RyZWFtKHQsYSxyKTthLnB1c2goIlxuZW5kb2JqXG4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZURpY3QoZSx0LGEpe3QucHVzaCgiPDwiKTtmb3IoY29uc3QgciBvZiBlLmdldEtleXMoKSl7dC5wdXNoKGAgLyR7KDAsaS5lc2NhcGVQREZOYW1lKShyKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShlLmdldFJhdyhyKSx0LGEpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVN0cmVhbShlLHQsYSl7bGV0IGk9ZS5nZXRTdHJpbmcoKTtudWxsIT09YSYmKGk9YS5lbmNyeXB0U3RyaW5nKGkpKTtjb25zdHtkaWN0OnN9PWUsW28sY109YXdhaXQgUHJvbWlzZS5hbGwoW3MuZ2V0QXN5bmMoIkZpbHRlciIpLHMuZ2V0QXN5bmMoIkRlY29kZVBhcm1zIildKSxsPUFycmF5LmlzQXJyYXkobyk/YXdhaXQgcy54cmVmLmZldGNoSWZSZWZBc3luYyhvWzBdKTpvLGg9KDAsbi5pc05hbWUpKGwsIkZsYXRlRGVjb2RlIik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBDb21wcmVzc2lvblN0cmVhbSYmKGkubGVuZ3RoPj0yNTZ8fGgpKXRyeXtjb25zdCBlPSgwLHIuc3RyaW5nVG9CeXRlcykoaSksdD1uZXcgQ29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKSxhPXQud3JpdGFibGUuZ2V0V3JpdGVyKCk7YS53cml0ZShlKTthLmNsb3NlKCk7Y29uc3QgbD1hd2FpdCBuZXcgUmVzcG9uc2UodC5yZWFkYWJsZSkuYXJyYXlCdWZmZXIoKTtpPSgwLHIuYnl0ZXNUb1N0cmluZykobmV3IFVpbnQ4QXJyYXkobCkpO2xldCB1LGQ7aWYobyl7aWYoIWgpe3U9QXJyYXkuaXNBcnJheShvKT9bbi5OYW1lLmdldCgiRmxhdGVEZWNvZGUiKSwuLi5vXTpbbi5OYW1lLmdldCgiRmxhdGVEZWNvZGUiKSxvXTtjJiYoZD1BcnJheS5pc0FycmF5KGMpP1tudWxsLC4uLmNdOltudWxsLGNdKX19ZWxzZSB1PW4uTmFtZS5nZXQoIkZsYXRlRGVjb2RlIik7dSYmcy5zZXQoIkZpbHRlciIsdSk7ZCYmcy5zZXQoIkRlY29kZVBhcm1zIixkKX1jYXRjaChlKXsoMCxyLmluZm8pKGB3cml0ZVN0cmVhbSAtIGNhbm5vdCBjb21wcmVzcyBkYXRhOiAiJHtlfSIuYCl9cy5zZXQoIkxlbmd0aCIsaS5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChzLHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iLGksIlxuZW5kc3RyZWFtIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl0LnB1c2goYC8keygwLGkuZXNjYXBlUERGTmFtZSkoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLlJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpYXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVBcnJheShlLHQsYSl7dC5wdXNoKCJbIik7bGV0IHI9ITA7Zm9yKGNvbnN0IG4gb2YgZSl7cj9yPSExOnQucHVzaCgiICIpO2F3YWl0IHdyaXRlVmFsdWUobix0LGEpfXQucHVzaCgiXSIpfShlLHQsYSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpe251bGwhPT1hJiYoZT1hLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7KDAsaS5lc2NhcGVTdHJpbmcpKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlP3QucHVzaCgoMCxpLm51bWJlclRvU3RyaW5nKShlKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2Ygbi5EaWN0P2F3YWl0IHdyaXRlRGljdChlLHQsYSk6ZSBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbT9hd2FpdCB3cml0ZVN0cmVhbShlLHQsYSk6bnVsbD09PWU/dC5wdXNoKCJudWxsIik6KDAsci53YXJuKShgVW5oYW5kbGVkIHZhbHVlIGluIHdyaXRlcjogJHt0eXBlb2YgZX0sIHBsZWFzZSBmaWxlIGEgYnVnLmApfWZ1bmN0aW9uIHdyaXRlSW50KGUsdCxhLHIpe2ZvcihsZXQgbj10K2EtMTtuPmEtMTtuLS0pe3Jbbl09MjU1JmU7ZT4+PTh9cmV0dXJuIGErdH1mdW5jdGlvbiB3cml0ZVN0cmluZyhlLHQsYSl7Zm9yKGxldCByPTAsbj1lLmxlbmd0aDtyPG47cisrKWFbdCtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpfX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YTUxQYXJzZXJFcnJvckNvZGU9dC5YTUxQYXJzZXJCYXNlPXQuU2ltcGxlWE1MUGFyc2VyPXQuU2ltcGxlRE9NTm9kZT12b2lkIDA7YSgxMzkpO3ZhciByPWEoMTQ5KTtjb25zdCBuPXtOb0Vycm9yOjAsRW5kT2ZEb2N1bWVudDotMSxVbnRlcm1pbmF0ZWRDZGF0Oi0yLFVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uOi0zLFVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbjotNCxVbnRlcm1pbmF0ZWRDb21tZW50Oi01LE1hbGZvcm1lZEVsZW1lbnQ6LTYsT3V0T2ZNZW1vcnk6LTcsVW50ZXJtaW5hdGVkQXR0cmlidXRlVmFsdWU6LTgsVW50ZXJtaW5hdGVkRWxlbWVudDotOSxFbGVtZW50TmV2ZXJCZWd1bjotMTB9O3QuWE1MUGFyc2VyRXJyb3JDb2RlPW47ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgYT1lW3RdO3JldHVybiIgIj09PWF8fCJcbiI9PT1hfHwiXHIiPT09YXx8Ilx0Ij09PWF9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IHI9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO3I8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLHIpOykrK3J9Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBuPWUuc3Vic3RyaW5nKHQscik7c2tpcFdzKCk7Zm9yKDtyPGUubGVuZ3RoJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdJiYiPyIhPT1lW3JdOyl7c2tpcFdzKCk7bGV0IHQ9IiIsbj0iIjtmb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj0iIT09ZVtyXTspe3QrPWVbcl07KytyfXNraXBXcygpO2lmKCI9IiE9PWVbcl0pcmV0dXJuIG51bGw7KytyO3NraXBXcygpO2NvbnN0IGk9ZVtyXTtpZignIichPT1pJiYiJyIhPT1pKXJldHVybiBudWxsO2NvbnN0IHM9ZS5pbmRleE9mKGksKytyKTtpZihzPDApcmV0dXJuIG51bGw7bj1lLnN1YnN0cmluZyhyLHMpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKX0pO3I9cysxO3NraXBXcygpfXJldHVybntuYW1lOm4sYXR0cmlidXRlczphLHBhcnNlZDpyLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBuPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOnIsdmFsdWU6ZS5zdWJzdHJpbmcobixhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoYSx0KSk7YT10KzE7YnJlYWs7Y2FzZSI/IjorK2E7Y29uc3Qgcj10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGEpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhhK3IucGFyc2VkLGErci5wYXJzZWQrMikpe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uKTtyZXR1cm59dGhpcy5vblBpKHIubmFtZSxyLnZhbHVlKTthKz1yLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkQ29tbWVudCk7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGErMyx0KSk7YT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZENkYXQpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59e2NvbnN0IHI9ZS5pbmRleE9mKCJbIixhKzgpO2xldCBpPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkRG9jdHlwZURlY2xhcmF0aW9uKTtyZXR1cm59aWYocj4wJiZ0PnIpe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7cmV0dXJufWk9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhhKzgsdCsoaT8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTthPXQrKGk/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBpPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1pKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLHMpO2ErPWkucGFyc2VkKyhzPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fXQuWE1MUGFyc2VyQmFzZT1YTUxQYXJzZXJCYXNlO2NsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/LlswXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8ubGVuZ3RoPjB9c2VhcmNoTm9kZShlLHQpe2lmKHQ+PWUubGVuZ3RoKXJldHVybiB0aGlzO2NvbnN0IGE9ZVt0XSxyPVtdO2xldCBuPXRoaXM7Zm9yKDs7KXtpZihhLm5hbWU9PT1uLm5vZGVOYW1lKXtpZigwIT09YS5wb3Mpe2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDt7Y29uc3RbaV09ci5wb3AoKTtsZXQgcz0wO2Zvcihjb25zdCByIG9mIGkuY2hpbGROb2RlcylpZihhLm5hbWU9PT1yLm5vZGVOYW1lKXtpZihzPT09YS5wb3MpcmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSk7cysrfXJldHVybiBuLnNlYXJjaE5vZGUoZSx0KzEpfX17Y29uc3QgYT1uLnNlYXJjaE5vZGUoZSx0KzEpO2lmKG51bGwhPT1hKXJldHVybiBhfX1pZihuLmNoaWxkTm9kZXM/Lmxlbmd0aD4wKXtyLnB1c2goW24sMF0pO249bi5jaGlsZE5vZGVzWzBdfWVsc2V7aWYoMD09PXIubGVuZ3RoKXJldHVybiBudWxsO2Zvcig7MCE9PXIubGVuZ3RoOyl7Y29uc3RbZSx0XT1yLnBvcCgpLGE9dCsxO2lmKGE8ZS5jaGlsZE5vZGVzLmxlbmd0aCl7ci5wdXNoKFtlLGFdKTtuPWUuY2hpbGROb2Rlc1thXTticmVha319aWYoMD09PXIubGVuZ3RoKXJldHVybiBudWxsfX19ZHVtcChlKXtpZigiI3RleHQiIT09dGhpcy5ub2RlTmFtZSl7ZS5wdXNoKGA8JHt0aGlzLm5vZGVOYW1lfWApO2lmKHRoaXMuYXR0cmlidXRlcylmb3IoY29uc3QgdCBvZiB0aGlzLmF0dHJpYnV0ZXMpZS5wdXNoKGAgJHt0Lm5hbWV9PSIkeygwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHQudmFsdWUpfSJgKTtpZih0aGlzLmhhc0NoaWxkTm9kZXMoKSl7ZS5wdXNoKCI+Iik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jaGlsZE5vZGVzKXQuZHVtcChlKTtlLnB1c2goYDwvJHt0aGlzLm5vZGVOYW1lfT5gKX1lbHNlIHRoaXMubm9kZVZhbHVlP2UucHVzaChgPiR7KDAsci5lbmNvZGVUb1htbFN0cmluZykodGhpcy5ub2RlVmFsdWUpfTwvJHt0aGlzLm5vZGVOYW1lfT5gKTplLnB1c2goIi8+Iil9ZWxzZSBlLnB1c2goKDAsci5lbmNvZGVUb1htbFN0cmluZykodGhpcy5ub2RlVmFsdWUpKX19dC5TaW1wbGVET01Ob2RlPVNpbXBsZURPTU5vZGU7dC5TaW1wbGVYTUxQYXJzZXI9Y2xhc3MgU2ltcGxlWE1MUGFyc2VyIGV4dGVuZHMgWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3RvcihlKXtsZXR7aGFzQXR0cmlidXRlczp0PSExLGxvd2VyQ2FzZU5hbWU6YT0hMX09ZTtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLl9oYXNBdHRyaWJ1dGVzPXQ7dGhpcy5fbG93ZXJDYXNlTmFtZT1hfXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PW4uTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2FsY3VsYXRlU0hBMjU2PXQuY2FsY3VsYXRlTUQ1PXQuUERGMjA9dC5QREYxNz10LkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk9dC5BUkNGb3VyQ2lwaGVyPXQuQUVTMjU2Q2lwaGVyPXQuQUVTMTI4Q2lwaGVyPXZvaWQgMDt0LmNhbGN1bGF0ZVNIQTM4ND1jYWxjdWxhdGVTSEEzODQ7dC5jYWxjdWxhdGVTSEE1MTI9dm9pZCAwO2EoODQpO2EoOTMpO2EoOTQpO2EoOTcpO2EoOTkpO2EoMTAxKTthKDEwNSk7YSgxMDgpO2EoMTE1KTthKDEzOSk7dmFyIHI9YSgxNDQpLG49YSgxNTApLGk9YSgyMTkpO2NsYXNzIEFSQ0ZvdXJDaXBoZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5hPTA7dGhpcy5iPTA7Y29uc3QgdD1uZXcgVWludDhBcnJheSgyNTYpLGE9ZS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXRbZV09ZTtmb3IobGV0IHI9MCxuPTA7cjwyNTY7KytyKXtjb25zdCBpPXRbcl07bj1uK2krZVtyJWFdJjI1NTt0W3JdPXRbbl07dFtuXT1pfXRoaXMucz10fWVuY3J5cHRCbG9jayhlKXtsZXQgdD10aGlzLmEsYT10aGlzLmI7Y29uc3Qgcj10aGlzLnMsbj1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe3Q9dCsxJjI1NTtjb25zdCBuPXJbdF07YT1hK24mMjU1O2NvbnN0IG89clthXTtyW3RdPW87clthXT1uO2lbc109ZVtzXV5yW24rbyYyNTVdfXRoaXMuYT10O3RoaXMuYj1hO3JldHVybiBpfWRlY3J5cHRCbG9jayhlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9ZW5jcnlwdChlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fXQuQVJDRm91ckNpcGhlcj1BUkNGb3VyQ2lwaGVyO2NvbnN0IHM9ZnVuY3Rpb24gY2FsY3VsYXRlTUQ1Q2xvc3VyZSgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pLHQ9bmV3IEludDMyQXJyYXkoWy02ODA4NzY5MzYsLTM4OTU2NDU4Niw2MDYxMDU4MTksLTEwNDQ1MjUzMzAsLTE3NjQxODg5NywxMjAwMDgwNDI2LC0xNDczMjMxMzQxLC00NTcwNTk4MywxNzcwMDM1NDE2LC0xOTU4NDE0NDE3LC00MjA2MywtMTk5MDQwNDE2MiwxODA0NjAzNjgyLC00MDM0MTEwMSwtMTUwMjAwMjI5MCwxMjM2NTM1MzI5LC0xNjU3OTY1MTAsLTEwNjk1MDE2MzIsNjQzNzE3NzEzLC0zNzM4OTczMDIsLTcwMTU1ODY5MSwzODAxNjA4MywtNjYwNDc4MzM1LC00MDU1Mzc4NDgsNTY4NDQ2NDM4LC0xMDE5ODAzNjkwLC0xODczNjM5NjEsMTE2MzUzMTUwMSwtMTQ0NDY4MTQ2NywtNTE0MDM3ODQsMTczNTMyODQ3MywtMTkyNjYwNzczNCwtMzc4NTU4LC0yMDIyNTc0NDYzLDE4MzkwMzA1NjIsLTM1MzA5NTU2LC0xNTMwOTkyMDYwLDEyNzI4OTMzNTMsLTE1NTQ5NzYzMiwtMTA5NDczMDY0MCw2ODEyNzkxNzQsLTM1ODUzNzIyMiwtNzIyNTIxOTc5LDc2MDI5MTg5LC02NDAzNjQ0ODcsLTQyMTgxNTgzNSw1MzA3NDI1MjAsLTk5NTMzODY1MSwtMTk4NjMwODQ0LDExMjY4OTE0MTUsLTE0MTYzNTQ5MDUsLTU3NDM0MDU1LDE3MDA0ODU1NzEsLTE4OTQ5ODY2MDYsLTEwNTE1MjMsLTIwNTQ5MjI3OTksMTg3MzMxMzM1OSwtMzA2MTE3NDQsLTE1NjAxOTgzODAsMTMwOTE1MTY0OSwtMTQ1NTIzMDcwLC0xMTIwMjEwMzc5LDcxODc4NzI1OSwtMzQzNDg1NTUxXSk7cmV0dXJuIGZ1bmN0aW9uIGhhc2goYSxyLG4pe2xldCBpPTE3MzI1ODQxOTMscz0tMjcxNzMzODc5LG89LTE3MzI1ODQxOTQsYz0yNzE3MzM4Nzg7Y29uc3QgbD1uKzcyJi02NCxoPW5ldyBVaW50OEFycmF5KGwpO2xldCB1LGQ7Zm9yKHU9MDt1PG47Kyt1KWhbdV09YVtyKytdO2hbdSsrXT0xMjg7Y29uc3QgZj1sLTg7Zm9yKDt1PGY7KWhbdSsrXT0wO2hbdSsrXT1uPDwzJjI1NTtoW3UrK109bj4+NSYyNTU7aFt1KytdPW4+PjEzJjI1NTtoW3UrK109bj4+MjEmMjU1O2hbdSsrXT1uPj4+MjkmMjU1O2hbdSsrXT0wO2hbdSsrXT0wO2hbdSsrXT0wO2NvbnN0IGc9bmV3IEludDMyQXJyYXkoMTYpO2Zvcih1PTA7dTxsOyl7Zm9yKGQ9MDtkPDE2OysrZCx1Kz00KWdbZF09aFt1XXxoW3UrMV08PDh8aFt1KzJdPDwxNnxoW3UrM108PDI0O2xldCBhLHIsbj1pLGw9cyxmPW8scD1jO2ZvcihkPTA7ZDw2NDsrK2Qpe2lmKGQ8MTYpe2E9bCZmfH5sJnA7cj1kfWVsc2UgaWYoZDwzMil7YT1wJmx8fnAmZjtyPTUqZCsxJjE1fWVsc2UgaWYoZDw0OCl7YT1sXmZecDtyPTMqZCs1JjE1fWVsc2V7YT1mXihsfH5wKTtyPTcqZCYxNX1jb25zdCBpPXAscz1uK2ErdFtkXStnW3JdfDAsbz1lW2RdO3A9ZjtmPWw7bD1sKyhzPDxvfHM+Pj4zMi1vKXwwO249aX1pPWkrbnwwO3M9cytsfDA7bz1vK2Z8MDtjPWMrcHwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JmksaT4+OCYyNTUsaT4+MTYmMjU1LGk+Pj4yNCYyNTUsMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1Jm8sbz4+OCYyNTUsbz4+MTYmMjU1LG8+Pj4yNCYyNTUsMjU1JmMsYz4+OCYyNTUsYz4+MTYmMjU1LGM+Pj4yNCYyNTVdKX19KCk7dC5jYWxjdWxhdGVNRDU9cztjbGFzcyBXb3JkNjR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmhpZ2g9MHxlO3RoaXMubG93PTB8dH1hbmQoZSl7dGhpcy5oaWdoJj1lLmhpZ2g7dGhpcy5sb3cmPWUubG93fXhvcihlKXt0aGlzLmhpZ2hePWUuaGlnaDt0aGlzLmxvd149ZS5sb3d9b3IoZSl7dGhpcy5oaWdofD1lLmhpZ2g7dGhpcy5sb3d8PWUubG93fXNoaWZ0UmlnaHQoZSl7aWYoZT49MzIpe3RoaXMubG93PXRoaXMuaGlnaD4+PmUtMzJ8MDt0aGlzLmhpZ2g9MH1lbHNle3RoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWU7dGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MH19c2hpZnRMZWZ0KGUpe2lmKGU+PTMyKXt0aGlzLmhpZ2g9dGhpcy5sb3c8PGUtMzI7dGhpcy5sb3c9MH1lbHNle3RoaXMuaGlnaD10aGlzLmhpZ2g8PGV8dGhpcy5sb3c+Pj4zMi1lO3RoaXMubG93PDw9ZX19cm90YXRlUmlnaHQoZSl7bGV0IHQsYTtpZigzMiZlKXthPXRoaXMubG93O3Q9dGhpcy5oaWdofWVsc2V7dD10aGlzLmxvdzthPXRoaXMuaGlnaH1lJj0zMTt0aGlzLmxvdz10Pj4+ZXxhPDwzMi1lO3RoaXMuaGlnaD1hPj4+ZXx0PDwzMi1lfW5vdCgpe3RoaXMuaGlnaD1+dGhpcy5oaWdoO3RoaXMubG93PX50aGlzLmxvd31hZGQoZSl7Y29uc3QgdD0odGhpcy5sb3c+Pj4wKSsoZS5sb3c+Pj4wKTtsZXQgYT0odGhpcy5oaWdoPj4+MCkrKGUuaGlnaD4+PjApO3Q+NDI5NDk2NzI5NSYmKGErPTEpO3RoaXMubG93PTB8dDt0aGlzLmhpZ2g9MHxhfWNvcHlUbyhlLHQpe2VbdF09dGhpcy5oaWdoPj4+MjQmMjU1O2VbdCsxXT10aGlzLmhpZ2g+PjE2JjI1NTtlW3QrMl09dGhpcy5oaWdoPj44JjI1NTtlW3QrM109MjU1JnRoaXMuaGlnaDtlW3QrNF09dGhpcy5sb3c+Pj4yNCYyNTU7ZVt0KzVdPXRoaXMubG93Pj4xNiYyNTU7ZVt0KzZdPXRoaXMubG93Pj44JjI1NTtlW3QrN109MjU1JnRoaXMubG93fWFzc2lnbihlKXt0aGlzLmhpZ2g9ZS5oaWdoO3RoaXMubG93PWUubG93fX1jb25zdCBvPWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTI1NkNsb3N1cmUoKXtmdW5jdGlvbiByb3RyKGUsdCl7cmV0dXJuIGU+Pj50fGU8PDMyLXR9ZnVuY3Rpb24gY2goZSx0LGEpe3JldHVybiBlJnRefmUmYX1mdW5jdGlvbiBtYWooZSx0LGEpe3JldHVybiBlJnReZSZhXnQmYX1mdW5jdGlvbiBzaWdtYShlKXtyZXR1cm4gcm90cihlLDIpXnJvdHIoZSwxMylecm90cihlLDIyKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUpe3JldHVybiByb3RyKGUsNilecm90cihlLDExKV5yb3RyKGUsMjUpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hKGUpe3JldHVybiByb3RyKGUsNylecm90cihlLDE4KV5lPj4+M31jb25zdCBlPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsYSxyKXtsZXQgbj0xNzc5MDMzNzAzLGk9MzE0NDEzNDI3NyxzPTEwMTM5MDQyNDIsbz0yNzczNDgwNzYyLGM9MTM1OTg5MzExOSxsPTI2MDA4MjI5MjQsaD01Mjg3MzQ2MzUsdT0xNTQxNDU5MjI1O2NvbnN0IGQ9NjQqTWF0aC5jZWlsKChyKzkpLzY0KSxmPW5ldyBVaW50OEFycmF5KGQpO2xldCBnLHA7Zm9yKGc9MDtnPHI7KytnKWZbZ109dFthKytdO2ZbZysrXT0xMjg7Y29uc3QgbT1kLTg7Zm9yKDtnPG07KWZbZysrXT0wO2ZbZysrXT0wO2ZbZysrXT0wO2ZbZysrXT0wO2ZbZysrXT1yPj4+MjkmMjU1O2ZbZysrXT1yPj4yMSYyNTU7ZltnKytdPXI+PjEzJjI1NTtmW2crK109cj4+NSYyNTU7ZltnKytdPXI8PDMmMjU1O2NvbnN0IGI9bmV3IFVpbnQzMkFycmF5KDY0KTtmb3IoZz0wO2c8ZDspe2ZvcihwPTA7cDwxNjsrK3Ape2JbcF09ZltnXTw8MjR8ZltnKzFdPDwxNnxmW2crMl08PDh8ZltnKzNdO2crPTR9Zm9yKHA9MTY7cDw2NDsrK3ApYltwXT0ocm90cih5PWJbcC0yXSwxNylecm90cih5LDE5KV55Pj4+MTApK2JbcC03XStsaXR0bGVTaWdtYShiW3AtMTVdKStiW3AtMTZdfDA7bGV0IHQsYSxyPW4sZD1pLG09cyx3PW8sUz1jLHg9bCxDPWgsdj11O2ZvcihwPTA7cDw2NDsrK3Ape3Q9ditzaWdtYVByaW1lKFMpK2NoKFMseCxDKStlW3BdK2JbcF07YT1zaWdtYShyKSttYWoocixkLG0pO3Y9QztDPXg7eD1TO1M9dyt0fDA7dz1tO209ZDtkPXI7cj10K2F8MH1uPW4rcnwwO2k9aStkfDA7cz1zK218MDtvPW8rd3wwO2M9YytTfDA7bD1sK3h8MDtoPWgrQ3wwO3U9dSt2fDB9dmFyIHk7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLGk+PjI0JjI1NSxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1Jmkscz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGM+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMsbD4+MjQmMjU1LGw+PjE2JjI1NSxsPj44JjI1NSwyNTUmbCxoPj4yNCYyNTUsaD4+MTYmMjU1LGg+PjgmMjU1LDI1NSZoLHU+PjI0JjI1NSx1Pj4xNiYyNTUsdT4+OCYyNTUsMjU1JnVdKX19KCk7dC5jYWxjdWxhdGVTSEEyNTY9bztjb25zdCBjPWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTUxMkNsb3N1cmUoKXtmdW5jdGlvbiBjaChlLHQsYSxyLG4pe2UuYXNzaWduKHQpO2UuYW5kKGEpO24uYXNzaWduKHQpO24ubm90KCk7bi5hbmQocik7ZS54b3Iobil9ZnVuY3Rpb24gbWFqKGUsdCxhLHIsbil7ZS5hc3NpZ24odCk7ZS5hbmQoYSk7bi5hc3NpZ24odCk7bi5hbmQocik7ZS54b3Iobik7bi5hc3NpZ24oYSk7bi5hbmQocik7ZS54b3Iobil9ZnVuY3Rpb24gc2lnbWEoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMjgpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMzQpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMzkpO2UueG9yKGEpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTQpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoMTgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoNDEpO2UueG9yKGEpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDEpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoOCk7ZS54b3IoYSk7YS5hc3NpZ24odCk7YS5zaGlmdFJpZ2h0KDcpO2UueG9yKGEpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hUHJpbWUoZSx0LGEpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTkpO2EuYXNzaWduKHQpO2Eucm90YXRlUmlnaHQoNjEpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg2KTtlLnhvcihhKX1jb25zdCBlPVtuZXcgV29yZDY0KDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksbmV3IFdvcmQ2NCgxODk5NDQ3NDQxLDYwMjg5MTcyNSksbmV3IFdvcmQ2NCgzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLG5ldyBXb3JkNjQoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxuZXcgV29yZDY0KDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxuZXcgV29yZDY0KDE1MDg5NzA5OTMsMzA1MzgzNDI2NSksbmV3IFdvcmQ2NCgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLG5ldyBXb3JkNjQoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxuZXcgV29yZDY0KDM2MjQzODEwODAsMjczNDg4MzM5NCksbmV3IFdvcmQ2NCgzMTA1OTg0MDEsMTE2NDk5NjU0MiksbmV3IFdvcmQ2NCg2MDcyMjUyNzgsMTMyMzYxMDc2NCksbmV3IFdvcmQ2NCgxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLG5ldyBXb3JkNjQoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxuZXcgV29yZDY0KDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxuZXcgV29yZDY0KDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxuZXcgV29yZDY0KDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCksbmV3IFdvcmQ2NCgzODM1MzkwNDAxLDI2NjY2MTM0NTgpLG5ldyBXb3JkNjQoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLG5ldyBXb3JkNjQoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLG5ldyBXb3JkNjQoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLG5ldyBXb3JkNjQoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLG5ldyBXb3JkNjQoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxuZXcgV29yZDY0KDE1NTUwODE2OTIsMzE3NTIxODEzMiksbmV3IFdvcmQ2NCgxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLG5ldyBXb3JkNjQoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxuZXcgV29yZDY0KDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxuZXcgV29yZDY0KDI5NTI5OTY4MDgsMjU2NjU5NDg3OSksbmV3IFdvcmQ2NCgzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLG5ldyBXb3JkNjQoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxuZXcgV29yZDY0KDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSksbmV3IFdvcmQ2NCgxMTM5MjY5OTMsMzc1ODMyNjM4MyksbmV3IFdvcmQ2NCgzMzgyNDE4OTUsMTY4NzE3OTM2KSxuZXcgV29yZDY0KDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxuZXcgV29yZDY0KDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxuZXcgV29yZDY0KDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSksbmV3IFdvcmQ2NCgxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLG5ldyBXb3JkNjQoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxuZXcgV29yZDY0KDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksbmV3IFdvcmQ2NCgyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLG5ldyBXb3JkNjQoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLG5ldyBXb3JkNjQoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxuZXcgV29yZDY0KDI4MjAzMDI0MTEsMzE1ODQ1NDI3MyksbmV3IFdvcmQ2NCgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLG5ldyBXb3JkNjQoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLG5ldyBXb3JkNjQoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxuZXcgV29yZDY0KDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksbmV3IFdvcmQ2NCg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLG5ldyBXb3JkNjQoMjc1NDIzMzQ0LDg1MTE2OTcyMCksbmV3IFdvcmQ2NCg0MzAyMjc3MzQsMzEwMDgyMzc1MiksbmV3IFdvcmQ2NCg1MDY5NDg2MTYsMTM2MzI1ODE5NSksbmV3IFdvcmQ2NCg2NTkwNjA1NTYsMzc1MDY4NTU5MyksbmV3IFdvcmQ2NCg4ODM5OTc4NzcsMzc4NTA1MDI4MCksbmV3IFdvcmQ2NCg5NTgxMzk1NzEsMzMxODMwNzQyNyksbmV3IFdvcmQ2NCgxMzIyODIyMjE4LDM4MTI3MjM0MDMpLG5ldyBXb3JkNjQoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxuZXcgV29yZDY0KDE3NDc4NzM3NzksMzYwMjAzNjg5OSksbmV3IFdvcmQ2NCgxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLG5ldyBXb3JkNjQoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxuZXcgV29yZDY0KDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksbmV3IFdvcmQ2NCgyMzYxODUyNDI0LDQ0Mjc3NjA0NCksbmV3IFdvcmQ2NCgyNDI4NDM2NDc0LDU5MzY5ODM0NCksbmV3IFdvcmQ2NCgyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLG5ldyBXb3JkNjQoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxuZXcgV29yZDY0KDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksbmV3IFdvcmQ2NCgzMzkxNTY5NjE0LDM5MjgzODM5MDApLG5ldyBXb3JkNjQoMzUxNTI2NzI3MSw1NjYyODA3MTEpLG5ldyBXb3JkNjQoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxuZXcgV29yZDY0KDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksbmV3IFdvcmQ2NCgxMTY0MTg0NzQsMTkxNDEzODU1NCksbmV3IFdvcmQ2NCgxNzQyOTI0MjEsMjczMTA1NTI3MCksbmV3IFdvcmQ2NCgyODkzODAzNTYsMzIwMzk5MzAwNiksbmV3IFdvcmQ2NCg0NjAzOTMyNjksMzIwNjIwMzE1KSxuZXcgV29yZDY0KDY4NTQ3MTczMyw1ODc0OTY4MzYpLG5ldyBXb3JkNjQoODUyMTQyOTcxLDEwODY3OTI4NTEpLG5ldyBXb3JkNjQoMTAxNzAzNjI5OCwzNjU1NDMxMDApLG5ldyBXb3JkNjQoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxuZXcgV29yZDY0KDEyODgwMzM0NzAsMzQwOTg1NTE1OCksbmV3IFdvcmQ2NCgxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLG5ldyBXb3JkNjQoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLG5ldyBXb3JkNjQoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxhLHIpe2xldCBuLGkscyxvLGMsbCxoLHUsZD1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO2lmKGQpe249bmV3IFdvcmQ2NCgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpO2k9bmV3IFdvcmQ2NCgxNjU0MjcwMjUwLDkxNDE1MDY2Myk7cz1uZXcgV29yZDY0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KTtvPW5ldyBXb3JkNjQoMzU1NDYyMzYwLDQxNDQ5MTI2OTcpO2M9bmV3IFdvcmQ2NCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpO2w9bmV3IFdvcmQ2NCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpO2g9bmV3IFdvcmQ2NCgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpO3U9bmV3IFdvcmQ2NCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpfWVsc2V7bj1uZXcgV29yZDY0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCk7aT1uZXcgV29yZDY0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSk7cz1uZXcgV29yZDY0KDEwMTM5MDQyNDIsNDI3MTE3NTcyMyk7bz1uZXcgV29yZDY0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSk7Yz1uZXcgV29yZDY0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyk7bD1uZXcgV29yZDY0KDI2MDA4MjI5MjQsNzI1NTExMTk5KTtoPW5ldyBXb3JkNjQoNTI4NzM0NjM1LDQyMTUzODk1NDcpO3U9bmV3IFdvcmQ2NCgxNTQxNDU5MjI1LDMyNzAzMzIwOSl9Y29uc3QgZj0xMjgqTWF0aC5jZWlsKChyKzE3KS8xMjgpLGc9bmV3IFVpbnQ4QXJyYXkoZik7bGV0IHAsbTtmb3IocD0wO3A8cjsrK3ApZ1twXT10W2ErK107Z1twKytdPTEyODtjb25zdCBiPWYtMTY7Zm9yKDtwPGI7KWdbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT0wO2dbcCsrXT1yPj4+MjkmMjU1O2dbcCsrXT1yPj4yMSYyNTU7Z1twKytdPXI+PjEzJjI1NTtnW3ArK109cj4+NSYyNTU7Z1twKytdPXI8PDMmMjU1O2NvbnN0IHk9bmV3IEFycmF5KDgwKTtmb3IocD0wO3A8ODA7cCsrKXlbcF09bmV3IFdvcmQ2NCgwLDApO2xldCB3PW5ldyBXb3JkNjQoMCwwKSxTPW5ldyBXb3JkNjQoMCwwKSx4PW5ldyBXb3JkNjQoMCwwKSxDPW5ldyBXb3JkNjQoMCwwKSx2PW5ldyBXb3JkNjQoMCwwKSxrPW5ldyBXb3JkNjQoMCwwKSxPPW5ldyBXb3JkNjQoMCwwKSxUPW5ldyBXb3JkNjQoMCwwKTtjb25zdCBNPW5ldyBXb3JkNjQoMCwwKSxFPW5ldyBXb3JkNjQoMCwwKSxEPW5ldyBXb3JkNjQoMCwwKSxOPW5ldyBXb3JkNjQoMCwwKTtsZXQgUixMO2ZvcihwPTA7cDxmOyl7Zm9yKG09MDttPDE2OysrbSl7eVttXS5oaWdoPWdbcF08PDI0fGdbcCsxXTw8MTZ8Z1twKzJdPDw4fGdbcCszXTt5W21dLmxvdz1nW3ArNF08PDI0fGdbcCs1XTw8MTZ8Z1twKzZdPDw4fGdbcCs3XTtwKz04fWZvcihtPTE2O208ODA7KyttKXtSPXlbbV07bGl0dGxlU2lnbWFQcmltZShSLHlbbS0yXSxOKTtSLmFkZCh5W20tN10pO2xpdHRsZVNpZ21hKEQseVttLTE1XSxOKTtSLmFkZChEKTtSLmFkZCh5W20tMTZdKX13LmFzc2lnbihuKTtTLmFzc2lnbihpKTt4LmFzc2lnbihzKTtDLmFzc2lnbihvKTt2LmFzc2lnbihjKTtrLmFzc2lnbihsKTtPLmFzc2lnbihoKTtULmFzc2lnbih1KTtmb3IobT0wO208ODA7KyttKXtNLmFzc2lnbihUKTtzaWdtYVByaW1lKEQsdixOKTtNLmFkZChEKTtjaChELHYsayxPLE4pO00uYWRkKEQpO00uYWRkKGVbbV0pO00uYWRkKHlbbV0pO3NpZ21hKEUsdyxOKTttYWooRCx3LFMseCxOKTtFLmFkZChEKTtSPVQ7VD1PO089aztrPXY7Qy5hZGQoTSk7dj1DO0M9eDt4PVM7Uz13O1IuYXNzaWduKE0pO1IuYWRkKEUpO3c9Un1uLmFkZCh3KTtpLmFkZChTKTtzLmFkZCh4KTtvLmFkZChDKTtjLmFkZCh2KTtsLmFkZChrKTtoLmFkZChPKTt1LmFkZChUKX1pZihkKXtMPW5ldyBVaW50OEFycmF5KDQ4KTtuLmNvcHlUbyhMLDApO2kuY29weVRvKEwsOCk7cy5jb3B5VG8oTCwxNik7by5jb3B5VG8oTCwyNCk7Yy5jb3B5VG8oTCwzMik7bC5jb3B5VG8oTCw0MCl9ZWxzZXtMPW5ldyBVaW50OEFycmF5KDY0KTtuLmNvcHlUbyhMLDApO2kuY29weVRvKEwsOCk7cy5jb3B5VG8oTCwxNik7by5jb3B5VG8oTCwyNCk7Yy5jb3B5VG8oTCwzMik7bC5jb3B5VG8oTCw0MCk7aC5jb3B5VG8oTCw0OCk7dS5jb3B5VG8oTCw1Nil9cmV0dXJuIEx9fSgpO3QuY2FsY3VsYXRlU0hBNTEyPWM7ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMzg0KGUsdCxhKXtyZXR1cm4gYyhlLHQsYSwhMCl9Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1BRVNCYXNlQ2lwaGVyJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQUVTQmFzZUNpcGhlci4iKTt0aGlzLl9zPW5ldyBVaW50OEFycmF5KFs5OSwxMjQsMTE5LDEyMywyNDIsMTA3LDExMSwxOTcsNDgsMSwxMDMsNDMsMjU0LDIxNSwxNzEsMTE4LDIwMiwxMzAsMjAxLDEyNSwyNTAsODksNzEsMjQwLDE3MywyMTIsMTYyLDE3NSwxNTYsMTY0LDExNCwxOTIsMTgzLDI1MywxNDcsMzgsNTQsNjMsMjQ3LDIwNCw1MiwxNjUsMjI5LDI0MSwxMTMsMjE2LDQ5LDIxLDQsMTk5LDM1LDE5NSwyNCwxNTAsNSwxNTQsNywxOCwxMjgsMjI2LDIzNSwzOSwxNzgsMTE3LDksMTMxLDQ0LDI2LDI3LDExMCw5MCwxNjAsODIsNTksMjE0LDE3OSw0MSwyMjcsNDcsMTMyLDgzLDIwOSwwLDIzNywzMiwyNTIsMTc3LDkxLDEwNiwyMDMsMTkwLDU3LDc0LDc2LDg4LDIwNywyMDgsMjM5LDE3MCwyNTEsNjcsNzcsNTEsMTMzLDY5LDI0OSwyLDEyNyw4MCw2MCwxNTksMTY4LDgxLDE2Myw2NCwxNDMsMTQ2LDE1Nyw1NiwyNDUsMTg4LDE4MiwyMTgsMzMsMTYsMjU1LDI0MywyMTAsMjA1LDEyLDE5LDIzNiw5NSwxNTEsNjgsMjMsMTk2LDE2NywxMjYsNjEsMTAwLDkzLDI1LDExNSw5NiwxMjksNzksMjIwLDM0LDQyLDE0NCwxMzYsNzAsMjM4LDE4NCwyMCwyMjIsOTQsMTEsMjE5LDIyNCw1MCw1OCwxMCw3Myw2LDM2LDkyLDE5NCwyMTEsMTcyLDk4LDE0NSwxNDksMjI4LDEyMSwyMzEsMjAwLDU1LDEwOSwxNDEsMjEzLDc4LDE2OSwxMDgsODYsMjQ0LDIzNCwxMDEsMTIyLDE3NCw4LDE4NiwxMjAsMzcsNDYsMjgsMTY2LDE4MCwxOTgsMjMyLDIyMSwxMTYsMzEsNzUsMTg5LDEzOSwxMzgsMTEyLDYyLDE4MSwxMDIsNzIsMywyNDYsMTQsOTcsNTMsODcsMTg1LDEzNCwxOTMsMjksMTU4LDIyNSwyNDgsMTUyLDE3LDEwNSwyMTcsMTQyLDE0OCwxNTUsMzAsMTM1LDIzMywyMDYsODUsNDAsMjIzLDE0MCwxNjEsMTM3LDEzLDE5MSwyMzAsNjYsMTA0LDY1LDE1Myw0NSwxNSwxNzYsODQsMTg3LDIyXSk7dGhpcy5faW52X3M9bmV3IFVpbnQ4QXJyYXkoWzgyLDksMTA2LDIxMyw0OCw1NCwxNjUsNTYsMTkxLDY0LDE2MywxNTgsMTI5LDI0MywyMTUsMjUxLDEyNCwyMjcsNTcsMTMwLDE1NSw0NywyNTUsMTM1LDUyLDE0Miw2Nyw2OCwxOTYsMjIyLDIzMywyMDMsODQsMTIzLDE0OCw1MCwxNjYsMTk0LDM1LDYxLDIzOCw3NiwxNDksMTEsNjYsMjUwLDE5NSw3OCw4LDQ2LDE2MSwxMDIsNDAsMjE3LDM2LDE3OCwxMTgsOTEsMTYyLDczLDEwOSwxMzksMjA5LDM3LDExNCwyNDgsMjQ2LDEwMCwxMzQsMTA0LDE1MiwyMiwyMTIsMTY0LDkyLDIwNCw5MywxMDEsMTgyLDE0NiwxMDgsMTEyLDcyLDgwLDI1MywyMzcsMTg1LDIxOCw5NCwyMSw3MCw4NywxNjcsMTQxLDE1NywxMzIsMTQ0LDIxNiwxNzEsMCwxNDAsMTg4LDIxMSwxMCwyNDcsMjI4LDg4LDUsMTg0LDE3OSw2OSw2LDIwOCw0NCwzMCwxNDMsMjAyLDYzLDE1LDIsMTkzLDE3NSwxODksMywxLDE5LDEzOCwxMDcsNTgsMTQ1LDE3LDY1LDc5LDEwMywyMjAsMjM0LDE1MSwyNDIsMjA3LDIwNiwyNDAsMTgwLDIzMCwxMTUsMTUwLDE3MiwxMTYsMzQsMjMxLDE3Myw1MywxMzMsMjI2LDI0OSw1NSwyMzIsMjgsMTE3LDIyMywxMTAsNzEsMjQxLDI2LDExMywyOSw0MSwxOTcsMTM3LDExMSwxODMsOTgsMTQsMTcwLDI0LDE5MCwyNywyNTIsODYsNjIsNzUsMTk4LDIxMCwxMjEsMzIsMTU0LDIxOSwxOTIsMjU0LDEyMCwyMDUsOTAsMjQ0LDMxLDIyMSwxNjgsNTEsMTM2LDcsMTk5LDQ5LDE3NywxOCwxNiw4OSwzOSwxMjgsMjM2LDk1LDk2LDgxLDEyNywxNjksMjUsMTgxLDc0LDEzLDQ1LDIyOSwxMjIsMTU5LDE0NywyMDEsMTU2LDIzOSwxNjAsMjI0LDU5LDc3LDE3NCw0MiwyNDUsMTc2LDIwMCwyMzUsMTg3LDYwLDEzMSw4MywxNTMsOTcsMjMsNDMsNCwxMjYsMTg2LDExOSwyMTQsMzgsMjI1LDEwNSwyMCw5OSw4NSwzMywxMiwxMjVdKTt0aGlzLl9taXg9bmV3IFVpbnQzMkFycmF5KFswLDIzNTQ3NDE4Nyw0NzA5NDgzNzQsMzAzNzY1Mjc3LDk0MTg5Njc0OCw5MDg5MzM0MTUsNjA3NTMwNTU0LDcwODc4MDg0OSwxODgzNzkzNDk2LDIxMTgyMTQ5OTUsMTgxNzg2NjgzMCwxNjQ5NjM5MjM3LDEyMTUwNjExMDgsMTE4MTA0NTExOSwxNDE3NTYxNjk4LDE1MTc3Njc1MjksMzc2NzU4Njk5Miw0MDAzMDYxMTc5LDQyMzY0Mjk5OTAsNDA2OTI0Njg5MywzNjM1NzMzNjYwLDM2MDI3NzAzMjcsMzI5OTI3ODQ3NCwzNDAwNTI4NzY5LDI0MzAxMjIyMTYsMjY2NDU0MzcxNSwyMzYyMDkwMjM4LDIxOTM4NjI2NDUsMjgzNTEyMzM5NiwyODAxMTA3NDA3LDMwMzU1MzUwNTgsMzEzNTc0MDg4OSwzNjc4MTI0OTIzLDM1NzY4NzA1MTIsMzM0MTM5NDI4NSwzMzc0MzYxNzAyLDM4MTA0OTYzNDMsMzk3NzY3NTM1Niw0Mjc5MDgwMjU3LDQwNDM2MTAxODYsMjg3NjQ5NDYyNywyNzc2MjkyOTA0LDMwNzY2MzkwMjksMzExMDY1MDk0MiwyNDcyMDExNTM1LDI2NDAyNDMyMDQsMjQwMzcyODY2NSwyMTY5MzAzMDU4LDEwMDEwODk5OTUsODk5ODM1NTg0LDY2NjQ2NDczMyw2OTk0MzIxNTAsNTk3Mjc4NDcsMjI2OTA2ODYwLDUzMDQwMDc1MywyOTQ5MzA2ODIsMTI3MzE2ODc4NywxMTcyOTY3MDY0LDE0NzU0MTg1MDEsMTUwOTQzMDQxNCwxOTQyNDM1Nzc1LDIxMTA2Njc0NDQsMTg3NjI0MTgzMywxNjQxODE2MjI2LDI5MTAyMTk3NjYsMjc0MzAzNDEwOSwyOTc2MTUxNTIwLDMyMTE2MjMxNDcsMjUwNTIwMjEzOCwyNjA2NDUzOTY5LDIzMDI2OTAyNTIsMjI2OTcyODQ1NSwzNzExODI5NDIyLDM1NDM1OTkyNjksMzI0MDg5NDM5MiwzNDc1MzEzMzMxLDM4NDM2OTkwNzQsMzk0MzkwNjQ0MSw0MTc4MDYyMjI4LDQxNDQwNDc3NzUsMTMwNjk2NzM2NiwxMTM5NzgxNzA5LDEzNzQ5ODgxMTIsMTYxMDQ1OTczOSwxOTc1NjgzNDM0LDIwNzY5MzUyNjUsMTc3NTI3NjkyNCwxNzQyMzE1MTI3LDEwMzQ4Njc5OTgsODY2NjM3ODQ1LDU2NjAyMTg5Niw4MDA0NDA4MzUsOTI5ODc2OTgsMTkzMTk1MDY1LDQyOTQ1NjE2NCwzOTU0NDE3MTEsMTk4NDgxMjY4NSwyMDE3Nzc4NTY2LDE3ODQ2NjMxOTUsMTY4MzQwNzI0OCwxMzE1NTYyMTQ1LDEwODAwOTQ2MzQsMTM4Mzg1NjMxMSwxNTUxMDM3ODg0LDEwMTAzOTgyOSwxMzUwNTAyMDYsNDM3NzU3MTIzLDMzNzU1Mzg2NCwxMDQyMzg1NjU3LDgwNzk2MjYxMCw1NzM4MDQ3ODMsNzQyMDM5MDEyLDI1MzEwNjc0NTMsMjU2NDAzMzMzNCwyMzI4ODI4OTcxLDIyMjc1NzMwMjQsMjkzNTU2Njg2NSwyNzAwMDk5MzU0LDMwMDE3NTU2NTUsMzE2ODkzNzIyOCwzODY4NTUyODA1LDM5MDI1NjMxODIsNDIwMzE4MTE3MSw0MTAyOTc3OTEyLDM3MzYxNjQ5MzcsMzUwMTc0MTg5MCwzMjY1NDc4NzUxLDM0MzM3MTI5ODAsMTEwNjA0MTU5MSwxMzQwNDYzMTAwLDE1NzY5NzY2MDksMTQwODc0OTAzNCwyMDQzMjExNDgzLDIwMDkxOTU0NzIsMTcwODg0ODMzMywxODA5MDU0MTUwLDgzMjg3NzIzMSwxMDY4MzUxMzk2LDc2Njk0NTQ2NSw1OTk3NjIzNTQsMTU5NDE3OTg3LDEyNjQ1NDY2NCwzNjE5Mjk4NzcsNDYzMTgwMTkwLDI3MDkyNjA4NzEsMjk0MzY4MjM4MCwzMTc4MTA2OTYxLDMwMDk4NzkzODYsMjU3MjY5NzE5NSwyNTM4NjgxMTg0LDIyMzYyMjg3MzMsMjMzNjQzNDU1MCwzNTA5ODcxMTM1LDM3NDUzNDUzMDAsMzQ0MTg1MDM3NywzMjc0NjY3MjY2LDM5MTAxNjE5NzEsMzg3NzE5ODY0OCw0MTEwNTY4NDg1LDQyMTE4MTg3OTgsMjU5NzgwNjQ3NiwyNDk3NjA0NzQzLDIyNjEwODkxNzgsMjI5NTEwMTA3MywyNzMzODU2MTYwLDI5MDIwODc4NTEsMzIwMjQzNzA0NiwyOTY4MDExNDUzLDM5MzYyOTEyODQsMzgzNTAzNjg5NSw0MTM2NDQwNzcwLDQxNjk0MDgyMDEsMzUzNTQ4NjQ1NiwzNzAyNjY1NDU5LDM0NjcxOTIzMDIsMzIzMTcyMjIxMywyMDUxNTE4NzgwLDE5NTEzMTcwNDcsMTcxNjg5MDQxMCwxNzUwOTAyMzA1LDExMTM4MTgzODQsMTI4MjA1MDA3NSwxNTg0NTA0NTgyLDEzNTAwNzg5ODksMTY4ODEwODUyLDY3NTU2NDYzLDM3MTA0OTMzMCw0MDQwMTY3NjEsODQxNzM5NTkyLDEwMDg5MTg1OTUsNzc1NTUwODE0LDU0MDA4MDcyNSwzOTY5NTYyMzY5LDM4MDEzMzIyMzQsNDAzNTQ4OTA0Nyw0MjY5OTA3OTk2LDM1NjkyNTUyMTMsMzY2OTQ2MjU2NiwzMzY2NzU0NjE5LDMzMzI3NDAxNDQsMjYzMTA2NTQzMywyNDYzODc5NzYyLDIxNjAxMTcwNzEsMjM5NTU4ODY3NiwyNzY3NjQ1NTU3LDI4Njg4OTc0MDYsMzEwMjAxMTc0NywzMDY5MDQ5OTYwLDIwMjAwODQ5NywzMzc3ODM2MiwyNzAwNDA0ODcsNTA0NDU5NDM2LDg3NTQ1MTI5Myw5NzU2NTg2NDYsNjc1MDM5NjI3LDY0MTAyNTE1MiwyMDg0NzA0MjMzLDE5MTc1MTg1NjIsMTYxNTg2MTI0NywxODUxMzMyODUyLDExNDc1NTA2NjEsMTI0ODgwMjUxMCwxNDg0MDA1ODQzLDE0NTEwNDQwNTYsOTMzMzAxMzcwLDk2NzMxMTcyOSw3MzMxNTY5NzIsNjMyOTUzNzAzLDI2MDM4ODk1MCwyNTk2NTkxNywzMjg2NzE4MDgsNDk2OTA2MDU5LDEyMDY0Nzc4NTgsMTIzOTQ0Mzc1MywxNTQzMjA4NTAwLDE0NDE5NTI1NzUsMjE0NDE2MTgwNiwxOTA4Njk0Mjc3LDE2NzU1Nzc4ODAsMTg0Mjc1OTQ0MywzNjEwMzY5MjI2LDM2NDQzNzk1ODUsMzQwODExOTUxNiwzMzA3OTE2MjQ3LDQwMTExOTA1MDIsMzc3Njc2NzQ2OSw0MDc3Mzg0NDMyLDQyNDU2MTg2ODMsMjgwOTc3MTE1NCwyODQyNzM3MDQ5LDMxNDQzOTY0MjAsMzA0MzE0MDQ5NSwyNjczNzA1MTUwLDI0MzgyMzc2MjEsMjIwMzAzMjIzMiwyMzcwMjEzNzk1XSk7dGhpcy5fbWl4Q29sPW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMuX21peENvbFtlXT1lPDEyOD9lPDwxOmU8PDFeMjc7dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuYnVmZmVyUG9zaXRpb249MH1fZXhwYW5kS2V5KGUpeygwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgY2FsbCBgX2V4cGFuZEtleWAgb24gdGhlIGJhc2UgY2xhc3MiKX1fZGVjcnlwdChlLHQpe2xldCBhLHIsbjtjb25zdCBpPW5ldyBVaW50OEFycmF5KDE2KTtpLnNldChlKTtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKWlbZV1ePXRbYV07Zm9yKGxldCBlPXRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbi0xO2U+PTE7LS1lKXthPWlbMTNdO2lbMTNdPWlbOV07aVs5XT1pWzVdO2lbNV09aVsxXTtpWzFdPWE7YT1pWzE0XTtyPWlbMTBdO2lbMTRdPWlbNl07aVsxMF09aVsyXTtpWzZdPWE7aVsyXT1yO2E9aVsxNV07cj1pWzExXTtuPWlbN107aVsxNV09aVszXTtpWzExXT1hO2lbN109cjtpWzNdPW47Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXT10aGlzLl9pbnZfc1tpW2VdXTtmb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKWlbYV1ePXRbcl07Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PXRoaXMuX21peFtpW2VdXSxyPXRoaXMuX21peFtpW2UrMV1dLG49dGhpcy5fbWl4W2lbZSsyXV0scz10aGlzLl9taXhbaVtlKzNdXTthPXRecj4+Pjhecjw8MjRebj4+PjE2Xm48PDE2XnM+Pj4yNF5zPDw4O2lbZV09YT4+PjI0JjI1NTtpW2UrMV09YT4+MTYmMjU1O2lbZSsyXT1hPj44JjI1NTtpW2UrM109MjU1JmF9fWE9aVsxM107aVsxM109aVs5XTtpWzldPWlbNV07aVs1XT1pWzFdO2lbMV09YTthPWlbMTRdO3I9aVsxMF07aVsxNF09aVs2XTtpWzEwXT1pWzJdO2lbNl09YTtpWzJdPXI7YT1pWzE1XTtyPWlbMTFdO249aVs3XTtpWzE1XT1pWzNdO2lbMTFdPWE7aVs3XT1yO2lbM109bjtmb3IobGV0IGU9MDtlPDE2OysrZSl7aVtlXT10aGlzLl9pbnZfc1tpW2VdXTtpW2VdXj10W2VdfXJldHVybiBpfV9lbmNyeXB0KGUsdCl7Y29uc3QgYT10aGlzLl9zO2xldCByLG4saTtjb25zdCBzPW5ldyBVaW50OEFycmF5KDE2KTtzLnNldChlKTtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdXj10W2VdO2ZvcihsZXQgZT0xO2U8dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uO2UrKyl7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO2k9c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109aTtpPXNbMl07bj1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1pO3NbMTRdPW47aT1zWzNdO249c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1pO3NbMTFdPW47c1sxNV09cjtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9c1tlKzBdLGE9c1tlKzFdLG49c1tlKzJdLGk9c1tlKzNdO3I9dF5hXm5eaTtzW2UrMF1ePXJedGhpcy5fbWl4Q29sW3ReYV07c1tlKzFdXj1yXnRoaXMuX21peENvbFthXm5dO3NbZSsyXV49cl50aGlzLl9taXhDb2xbbl5pXTtzW2UrM11ePXJedGhpcy5fbWl4Q29sW2ledF19Zm9yKGxldCBhPTAscj0xNiplO2E8MTY7KythLCsrcilzW2FdXj10W3JdfWZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV09YVtzW2VdXTtpPXNbMV07c1sxXT1zWzVdO3NbNV09c1s5XTtzWzldPXNbMTNdO3NbMTNdPWk7aT1zWzJdO249c1s2XTtzWzJdPXNbMTBdO3NbNl09c1sxNF07c1sxMF09aTtzWzE0XT1uO2k9c1szXTtuPXNbN107cj1zWzExXTtzWzNdPXNbMTVdO3NbN109aTtzWzExXT1uO3NbMTVdPXI7Zm9yKGxldCBlPTAsYT10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrYSlzW2VdXj10W2FdO3JldHVybiBzfV9kZWNyeXB0QmxvY2syKGUsdCl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcj10aGlzLmJ1ZmZlcixuPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3QgaT1bXTtsZXQgcz10aGlzLml2O2ZvcihsZXQgdD0wO3Q8YTsrK3Qpe3Jbbl09ZVt0XTsrK247aWYobjwxNiljb250aW51ZTtjb25zdCBhPXRoaXMuX2RlY3J5cHQocix0aGlzLl9rZXkpO2ZvcihsZXQgZT0wO2U8MTY7KytlKWFbZV1ePXNbZV07cz1yO2kucHVzaChhKTtyPW5ldyBVaW50OEFycmF5KDE2KTtuPTB9dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1uO3RoaXMuaXY9cztpZigwPT09aS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBvPTE2KmkubGVuZ3RoO2lmKHQpe2NvbnN0IGU9aS5hdCgtMSk7bGV0IHQ9ZVsxNV07aWYodDw9MTYpe2ZvcihsZXQgYT0xNSxyPTE2LXQ7YT49cjstLWEpaWYoZVthXSE9PXQpe3Q9MDticmVha31vLT10O2lbaS5sZW5ndGgtMV09ZS5zdWJhcnJheSgwLDE2LXQpfX1jb25zdCBjPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgZT0wLHQ9MCxhPWkubGVuZ3RoO2U8YTsrK2UsdCs9MTYpYy5zZXQoaVtlXSx0KTtyZXR1cm4gY31kZWNyeXB0QmxvY2soZSx0KXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtjb25zdCByPWUubGVuZ3RoLG49dGhpcy5idWZmZXI7bGV0IGk9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO2k8MTYmJnQ8cjsrK3QsKytpKW5baV09ZVt0XTtpZihpPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1pO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PW47ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBzPTA7czxhOysrcyl7cltuXT1lW3NdOysrbjtpZihuPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj10O2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNippLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPWkubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQoaVtlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixuPTE7ZTwxNzY7KytuKXtsZXQgaT1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07aT10W2ldO3M9dFtzXTtvPXRbb107Yz10W2NdO2lePWFbbl07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1pXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fXQuQUVTMTI4Q2lwaGVyPUFFUzEyOENpcGhlcjtjbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLG4saSxzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO249YVtlLTJdO2k9YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPW5ePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fXQuQUVTMjU2Q2lwaGVyPUFFUzI1NkNpcGhlcjtjbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGEsbil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPW8oaSwwLGkubGVuZ3RoKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkocyxuKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9byhuLDAsbi5sZW5ndGgpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShpLGEpfWdldE93bmVyS2V5KGUsdCxhLHIpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7bi5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3QgaT1vKG4sMCxuLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgbj1vKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19dC5QREYxNz1QREYxNztjbGFzcyBQREYyMHtfaGFzaChlLHQsYSl7bGV0IHI9byh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLG49WzBdLGk9MDtmb3IoO2k8NjR8fG4uYXQoLTEpPmktMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IGw9MDtzLnNldChlLGwpO2wrPWUubGVuZ3RoO3Muc2V0KHIsbCk7bCs9ci5sZW5ndGg7cy5zZXQoYSxsKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWguc2V0KHMsYSk7bj1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgdT1uLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09dT9yPW8obiwwLG4ubGVuZ3RoKToxPT09dT9yPWNhbGN1bGF0ZVNIQTM4NChuLDAsbi5sZW5ndGgpOjI9PT11JiYocj1jKG4sMCxuLmxlbmd0aCkpO2krK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX1jaGVja093bmVyUGFzc3dvcmQoZSx0LGEsbil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPXRoaXMuX2hhc2goZSxpLGEpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShzLG4pfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT10aGlzLl9oYXNoKGUsbixbXSk7cmV0dXJuKDAsci5pc0FycmF5RXF1YWwpKGksYSl9Z2V0T3duZXJLZXkoZSx0LGEscil7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7bi5zZXQoZSwwKTtuLnNldCh0LGUubGVuZ3RoKTtuLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBpPXRoaXMuX2hhc2goZSxuLGEpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKGkpLmRlY3J5cHRCbG9jayhyLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO2NvbnN0IG49dGhpcy5faGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fXQuUERGMjA9UERGMjA7Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgaS5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKShhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKW5bZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IGk9KDAsci5zdHJpbmdUb0J5dGVzKShlKTtpPXQuZW5jcnlwdChpLG4pO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYraS5sZW5ndGgpO3Muc2V0KG4pO3Muc2V0KGksMTYpO3JldHVybigwLHIuYnl0ZXNUb1N0cmluZykocyl9bGV0IGE9KDAsci5zdHJpbmdUb0J5dGVzKShlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKGEpfX1jb25zdCBsPWZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnlDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHByZXBhcmVLZXlEYXRhKHQsYSxyLG4saSxvLGMsbCl7Y29uc3QgaD00MCtyLmxlbmd0aCt0Lmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBkLGYsZz0wO2lmKGEpe2Y9TWF0aC5taW4oMzIsYS5sZW5ndGgpO2Zvcig7ZzxmOysrZyl1W2ddPWFbZ119ZD0wO2Zvcig7ZzwzMjspdVtnKytdPWVbZCsrXTtmb3IoZD0wLGY9ci5sZW5ndGg7ZDxmOysrZCl1W2crK109cltkXTt1W2crK109MjU1Jmk7dVtnKytdPWk+PjgmMjU1O3VbZysrXT1pPj4xNiYyNTU7dVtnKytdPWk+Pj4yNCYyNTU7Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07aWYobz49NCYmIWwpe3VbZysrXT0yNTU7dVtnKytdPTI1NTt1W2crK109MjU1O3VbZysrXT0yNTV9bGV0IHA9cyh1LDAsZyk7Y29uc3QgbT1jPj4zO2lmKG8+PTMpZm9yKGQ9MDtkPDUwOysrZClwPXMocCwwLG0pO2NvbnN0IGI9cC5zdWJhcnJheSgwLG0pO2xldCB5LHc7aWYobz49Myl7Zm9yKGc9MDtnPDMyOysrZyl1W2ddPWVbZ107Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKHModSwwLGcpKTtmPWIubGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZik7Zm9yKGQ9MTtkPD0xOTsrK2Qpe2ZvcihsZXQgZT0wO2U8ZjsrK2UpYVtlXT1iW2VdXmQ7eT1uZXcgQVJDRm91ckNpcGhlcihhKTt3PXkuZW5jcnlwdEJsb2NrKHcpfWZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfWVsc2V7eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKGUpO2ZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfXJldHVybiBifWNvbnN0IHQ9bi5OYW1lLmdldCgiSWRlbnRpdHkiKTtmdW5jdGlvbiBidWlsZE9iamVjdEtleShlLHQsYSl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzkpLGk9YS5sZW5ndGg7bGV0IG87Zm9yKG89MDtvPGk7KytvKW5bb109YVtvXTtuW28rK109MjU1JmU7bltvKytdPWU+PjgmMjU1O25bbysrXT1lPj4xNiYyNTU7bltvKytdPTI1NSZ0O25bbysrXT10Pj44JjI1NTtpZihyKXtuW28rK109MTE1O25bbysrXT02NTtuW28rK109MTA4O25bbysrXT04NH1yZXR1cm4gcyhuLDAsbykuc3ViYXJyYXkoMCxNYXRoLm1pbihhLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihlLHQsYSxpLHMpe2lmKCEodCBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbz1lLmdldCh0Lm5hbWUpO2xldCBjO251bGwhPW8mJihjPW8uZ2V0KCJDRk0iKSk7aWYoIWN8fCJOb25lIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JOb25lKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvclYyKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGJ1aWxkT2JqZWN0S2V5KGEsaSxzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjIoKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShhLGkscywhMCkpfTtpZigiQUVTVjMiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvckFFU1YzKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocyl9O3Rocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1yZXR1cm4gY2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtjb25zdHJ1Y3RvcihhLGksbyl7Y29uc3QgYz1hLmdldCgiRmlsdGVyIik7aWYoISgwLG4uaXNOYW1lKShjLCJTdGFuZGFyZCIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWMubmFtZTt0aGlzLmRpY3Q9YTtjb25zdCBsPWEuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIobCl8fDEhPT1sJiYyIT09bCYmNCE9PWwmJjUhPT1sKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPWw7bGV0IGg9YS5nZXQoIkxlbmd0aCIpO2lmKCFoKWlmKGw8PTMpaD00MDtlbHNle2NvbnN0IGU9YS5nZXQoIkNGIiksdD1hLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QmJnQgaW5zdGFuY2VvZiBuLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGE9ZS5nZXQodC5uYW1lKTtoPWE/LmdldCgiTGVuZ3RoIil8fDEyODtoPDQwJiYoaDw8PTMpfX1pZighTnVtYmVyLmlzSW50ZWdlcihoKXx8aDw0MHx8aCU4IT0wKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGgiKTtjb25zdCB1PSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIk8iKSksZD0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVIikpLGY9dS5zdWJhcnJheSgwLDMyKSxnPWQuc3ViYXJyYXkoMCwzMikscD1hLmdldCgiUCIpLG09YS5nZXQoIlIiKSxiPSg0PT09bHx8NT09PWwpJiYhMSE9PWEuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1iO2NvbnN0IHk9KDAsci5zdHJpbmdUb0J5dGVzKShpKTtsZXQgdyxTO2lmKG8pe2lmKDY9PT1tKXRyeXtvPSgwLHIudXRmOFN0cmluZ1RvU3RyaW5nKShvKX1jYXRjaHsoMCxyLndhcm4pKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9dz0oMCxyLnN0cmluZ1RvQnl0ZXMpKG8pfWlmKDUhPT1sKVM9cHJlcGFyZUtleURhdGEoeSx3LGYsZyxwLG0saCxiKTtlbHNle2NvbnN0IGU9dS5zdWJhcnJheSgzMiw0MCksdD11LnN1YmFycmF5KDQwLDQ4KSxuPWQuc3ViYXJyYXkoMCw0OCksaT1kLnN1YmFycmF5KDMyLDQwKSxzPWQuc3ViYXJyYXkoNDAsNDgpLG89KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiT0UiKSksYz0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVRSIpKTsoMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJQZXJtcyIpKTtTPWZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRpb25LZXkyMChlLHQsYSxyLG4saSxzLG8sYyxsLGgsdSl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtjb25zdCBkPTY9PT1lP25ldyBQREYyMDpuZXcgUERGMTc7cmV0dXJuIGQuY2hlY2tVc2VyUGFzc3dvcmQodCxvLHMpP2QuZ2V0VXNlcktleSh0LGMsaCk6dC5sZW5ndGgmJmQuY2hlY2tPd25lclBhc3N3b3JkKHQscixpLGEpP2QuZ2V0T3duZXJLZXkodCxuLGksbCk6bnVsbH0obSx3LGYsZSx0LG4sZyxpLHMsbyxjKX1pZighUyYmIW8pdGhyb3cgbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixyLlBhc3N3b3JkUmVzcG9uc2VzLk5FRURfUEFTU1dPUkQpO2lmKCFTJiZvKXtjb25zdCB0PWZ1bmN0aW9uIGRlY29kZVVzZXJQYXNzd29yZCh0LGEscixuKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KDMyKTtsZXQgbz0wO2NvbnN0IGM9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7bzxjOysrbylpW29dPXRbb107bGV0IGw9MDtmb3IoO288MzI7KWlbbysrXT1lW2wrK107bGV0IGg9cyhpLDAsbyk7Y29uc3QgdT1uPj4zO2lmKHI+PTMpZm9yKGw9MDtsPDUwOysrbCloPXMoaCwwLGgubGVuZ3RoKTtsZXQgZCxmO2lmKHI+PTMpe2Y9YTtjb25zdCBlPW5ldyBVaW50OEFycmF5KHUpO2ZvcihsPTE5O2w+PTA7bC0tKXtmb3IobGV0IHQ9MDt0PHU7Kyt0KWVbdF09aFt0XV5sO2Q9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7Zj1kLmVuY3J5cHRCbG9jayhmKX19ZWxzZXtkPW5ldyBBUkNGb3VyQ2lwaGVyKGguc3ViYXJyYXkoMCx1KSk7Zj1kLmVuY3J5cHRCbG9jayhhKX1yZXR1cm4gZn0odyxmLG0saCk7Uz1wcmVwYXJlS2V5RGF0YSh5LHQsZixnLHAsbSxoLGIpfWlmKCFTKXRocm93IG5ldyByLlBhc3N3b3JkRXhjZXB0aW9uKCJJbmNvcnJlY3QgUGFzc3dvcmQiLHIuUGFzc3dvcmRSZXNwb25zZXMuSU5DT1JSRUNUX1BBU1NXT1JEKTt0aGlzLmVuY3J5cHRpb25LZXk9UztpZihsPj00KXtjb25zdCBlPWEuZ2V0KCJDRiIpO2UgaW5zdGFuY2VvZiBuLkRpY3QmJihlLnN1cHByZXNzRW5jcnlwdGlvbj0hMCk7dGhpcy5jZj1lO3RoaXMuc3RtZj1hLmdldCgiU3RtRiIpfHx0O3RoaXMuc3RyZj1hLmdldCgiU3RyRiIpfHx0O3RoaXMuZWZmPWEuZ2V0KCJFRkYiKXx8dGhpcy5zdG1mfX1jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZSx0KXtpZig0PT09dGhpcy5hbGdvcml0aG18fDU9PT10aGlzLmFsZ29yaXRobSlyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShidWlsZENpcGhlckNvbnN0cnVjdG9yKHRoaXMuY2YsdGhpcy5zdHJmLGUsdCx0aGlzLmVuY3J5cHRpb25LZXkpLGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZix0aGlzLnN0bWYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSkpO2NvbnN0IGE9YnVpbGRPYmplY3RLZXkoZSx0LHRoaXMuZW5jcnlwdGlvbktleSwhMSkscj1mdW5jdGlvbiBidWlsZENpcGhlckNpcGhlckNvbnN0cnVjdG9yKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGEpfTtyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShyLHIpfX19KCk7dC5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5PWx9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRGVjcnlwdFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNjgpO2NsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZXx8MD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9cn19dC5EZWNyeXB0U3RyZWFtPURlY3J5cHRTdHJlYW19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2F0YWxvZz12b2lkIDA7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMTM5KTthKDIpO3ZhciByPWEoMTQ5KSxuPWEoMTQ0KSxpPWEoMTUwKSxzPWEoMjIxKSxvPWEoMTUxKSxjPWEoMjIyKSxsPWEoMTYyKSxoPWEoMjIzKSx1PWEoMjA5KSxkPWEoMjI0KSxmPWEoMjI1KTtmdW5jdGlvbiBmZXRjaERlc3RpbmF0aW9uKGUpe2UgaW5zdGFuY2VvZiBpLkRpY3QmJihlPWUuZ2V0KCJEIikpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6bnVsbH1jbGFzcyBDYXRhbG9ne2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy54cmVmPXQ7dGhpcy5fY2F0RGljdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuX2NhdERpY3QgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3Q7dGhpcy5fYWN0dWFsTnVtUGFnZXM9bnVsbDt0aGlzLmZvbnRDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcDt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1uZXcgdS5HbG9iYWxJbWFnZUNhY2hlO3RoaXMucGFnZUtpZHNDb3VudENhY2hlPW5ldyBpLlJlZlNldENhY2hlO3RoaXMucGFnZUluZGV4Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGU7dGhpcy5ub25CbGVuZE1vZGVzU2V0PW5ldyBpLlJlZlNldDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1uZXcgTWFwfWdldCB2ZXJzaW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpe2lmKHIuUERGX1ZFUlNJT05fUkVHRVhQLnRlc3QoZS5uYW1lKSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidmVyc2lvbiIsZS5uYW1lKTsoMCxuLndhcm4pKGBJbnZhbGlkIFBERiBjYXRhbG9nIHZlcnNpb246ICR7ZS5uYW1lfWApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIkxhbmciKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibGFuZyIsInN0cmluZyI9PXR5cGVvZiBlPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm5lZWRzUmVuZGVyaW5nIiwiYm9vbGVhbiI9PXR5cGVvZiBlJiZlKX1nZXQgY29sbGVjdGlvbigpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkNvbGxlY3Rpb24iKTt0IGluc3RhbmNlb2YgaS5EaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLmluZm8pKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJjb2xsZWN0aW9uIixlKX1nZXQgYWNyb0Zvcm0oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJBY3JvRm9ybSIpO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtIixlKX1nZXQgYWNyb0Zvcm1SZWYoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJBY3JvRm9ybSIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJhY3JvRm9ybVJlZiIsZSBpbnN0YW5jZW9mIGkuUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaChlLCF0aGlzLnhyZWYuZW5jcnlwdD8uZW5jcnlwdE1ldGFkYXRhKTtpZihhIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiZhLmRpY3QgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9YS5kaWN0LmdldCgiVHlwZSIpLHI9YS5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCgwLGkuaXNOYW1lKShlLCJNZXRhZGF0YSIpJiYoMCxpLmlzTmFtZSkociwiWE1MIikpe2NvbnN0IGU9KDAsbi5zdHJpbmdUb1VURjhTdHJpbmcpKGEuZ2V0U3RyaW5nKCkpO2UmJih0PW5ldyBkLk1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoYFNraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICIke2V9Ii5gKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWV0YWRhdGEiLHQpfWdldCBtYXJrSW5mbygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZE1hcmtJbmZvKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJVbmFibGUgdG8gcmVhZCBtYXJrIGluZm8uIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm1hcmtJbmZvIixlKX1fcmVhZE1hcmtJbmZvKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2NvbnN0IHQ9e01hcmtlZDohMSxVc2VyUHJvcGVydGllczohMSxTdXNwZWN0czohMX07Zm9yKGNvbnN0IGEgaW4gdCl7Y29uc3Qgcj1lLmdldChhKTsiYm9vbGVhbiI9PXR5cGVvZiByJiYodFthXT1yKX1yZXR1cm4gdH1nZXQgc3RydWN0VHJlZVJvb3QoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRTdHJ1Y3RUcmVlUm9vdCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHJlYWQgdG8gc3RydWN0VHJlZVJvb3QgaW5mby4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywic3RydWN0VHJlZVJvb3QiLGUpfV9yZWFkU3RydWN0VHJlZVJvb3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgZi5TdHJ1Y3RUcmVlUm9vdChlKTt0LmluaXQoKTtyZXR1cm4gdH1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkuIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkRG9jdW1lbnRPdXRsaW5lKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJVbmFibGUgdG8gcmVhZCBkb2N1bWVudCBvdXRsaW5lLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2N1bWVudE91dGxpbmUiLGUpfV9yZWFkRG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk91dGxpbmVzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtlPWUuZ2V0UmF3KCJGaXJzdCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXtpdGVtczpbXX0sYT1be29iajplLHBhcmVudDp0fV0scj1uZXcgaS5SZWZTZXQ7ci5wdXQoZSk7Y29uc3Qgcz10aGlzLnhyZWYsbz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3QgdD1hLnNoaWZ0KCksYz1zLmZldGNoSWZSZWYodC5vYmopO2lmKG51bGw9PT1jKWNvbnRpbnVlO2lmKCFjLmhhcygiVGl0bGUiKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBvdXRsaW5lIGl0ZW0gZW5jb3VudGVyZWQuIik7Y29uc3QgaD17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmMscmVzdWx0T2JqOmgsZG9jQmFzZVVybDp0aGlzLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czp0aGlzLmF0dGFjaG1lbnRzfSk7Y29uc3QgdT1jLmdldCgiVGl0bGUiKSxkPWMuZ2V0KCJGIil8fDAsZj1jLmdldEFycmF5KCJDIiksZz1jLmdldCgiQ291bnQiKTtsZXQgcD1vOyFBcnJheS5pc0FycmF5KGYpfHwzIT09Zi5sZW5ndGh8fDA9PT1mWzBdJiYwPT09ZlsxXSYmMD09PWZbMl18fChwPWwuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZiwwKSk7Y29uc3QgbT17YWN0aW9uOmguYWN0aW9uLGF0dGFjaG1lbnQ6aC5hdHRhY2htZW50LGRlc3Q6aC5kZXN0LHVybDpoLnVybCx1bnNhZmVVcmw6aC51bnNhZmVVcmwsbmV3V2luZG93OmgubmV3V2luZG93LHNldE9DR1N0YXRlOmguc2V0T0NHU3RhdGUsdGl0bGU6KDAsbi5zdHJpbmdUb1BERlN0cmluZykodSksY29sb3I6cCxjb3VudDpOdW1iZXIuaXNJbnRlZ2VyKGcpP2c6dm9pZCAwLGJvbGQ6ISEoMiZkKSxpdGFsaWM6ISEoMSZkKSxpdGVtczpbXX07dC5wYXJlbnQuaXRlbXMucHVzaChtKTtlPWMuZ2V0UmF3KCJGaXJzdCIpO2lmKGUgaW5zdGFuY2VvZiBpLlJlZiYmIXIuaGFzKGUpKXthLnB1c2goe29iajplLHBhcmVudDptfSk7ci5wdXQoZSl9ZT1jLmdldFJhdygiTmV4dCIpO2lmKGUgaW5zdGFuY2VvZiBpLlJlZiYmIXIuaGFzKGUpKXthLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pO3IucHV0KGUpfX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGVybWlzc2lvbnMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIHBlcm1pc3Npb25zLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJwZXJtaXNzaW9ucyIsZSl9X3JlYWRQZXJtaXNzaW9ucygpe2NvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJFbmNyeXB0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBhPVtdO2Zvcihjb25zdCBlIGluIG4uUGVybWlzc2lvbkZsYWcpe2NvbnN0IHI9bi5QZXJtaXNzaW9uRmxhZ1tlXTt0JnImJmEucHVzaChyKX1yZXR1cm4gYX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiRCIpO2lmKCFhKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHI9dC5nZXQoIk9DR3MiKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBzPVtdLG89W107Zm9yKGNvbnN0IGUgb2Ygcil7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKWNvbnRpbnVlO28ucHVzaChlKTtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO3MucHVzaCh7aWQ6ZS50b1N0cmluZygpLG5hbWU6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiTmFtZSIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJOYW1lIikpOm51bGwsaW50ZW50OiJzdHJpbmciPT10eXBlb2YgdC5nZXQoIkludGVudCIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJJbnRlbnQiKSk6bnVsbH0pfWU9dGhpcy5fcmVhZE9wdGlvbmFsQ29udGVudENvbmZpZyhhLG8pO2UuZ3JvdXBzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLGUpfV9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGUsdCl7ZnVuY3Rpb24gcGFyc2VPbk9mZihlKXtjb25zdCBhPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlyIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMocikmJmEucHVzaChyLnRvU3RyaW5nKCkpO3JldHVybiBhfWZ1bmN0aW9uIHBhcnNlT3JkZXIoZSl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMocykpe3IucHV0KHMpO24ucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGEpO2UmJm4ucHVzaChlKX1pZihhPjApcmV0dXJuIG47Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KXIuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmbi5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiBufWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cyl7KDAsbi53YXJuKSgicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3QgaT1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBpKXJldHVybiBudWxsO2NvbnN0IG89cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpKSxvcmRlcjpvfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IGkuUmVmU2V0LHM9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBpLk5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcygpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZVRyZWUpZm9yKGNvbnN0W2Escl1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdGluYXRpb24ocik7ZSYmKHRbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2NvbnN0IHI9ZmV0Y2hEZXN0aW5hdGlvbihhKTtyJiYodFtlXT1yKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihyKXsoMCxuLndhcm4pKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gcn19ZWxzZSBpZih0IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGU/LmhhcygiRGVzdHMiKT9uZXcgcy5OYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIHBhZ2UgbGFiZWxzLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJwYWdlTGFiZWxzIixlKX1fcmVhZFBhZ2VMYWJlbHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlTGFiZWxzIik7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgQXJyYXkodGhpcy5udW1QYWdlcyk7bGV0IGE9bnVsbCxvPSIiO2NvbnN0IGM9bmV3IHMuTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IGw9IiIsaD0xO2ZvcihsZXQgZT0wLHM9dGhpcy5udW1QYWdlcztlPHM7ZSsrKXtjb25zdCBzPWMuZ2V0KGUpO2lmKHZvaWQgMCE9PXMpe2lmKCEocyBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhZ2VMYWJlbCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJUeXBlIikmJiEoMCxpLmlzTmFtZSkocy5nZXQoIlR5cGUiKSwiUGFnZUxhYmVsIikpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihzLmhhcygiUyIpKXtjb25zdCBlPXMuZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPWUubmFtZX1lbHNlIGE9bnVsbDtpZihzLmhhcygiUCIpKXtjb25zdCBlPXMuZ2V0KCJQIik7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtvPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpfWVsc2Ugbz0iIjtpZihzLmhhcygiU3QiKSl7Y29uc3QgZT1zLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0YXJ0IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2g9ZX1lbHNlIGg9MX1zd2l0Y2goYSl7Y2FzZSJEIjpsPWg7YnJlYWs7Y2FzZSJSIjpjYXNlInIiOmw9KDAsci50b1JvbWFuTnVtZXJhbHMpKGgsInIiPT09YSk7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNvbnN0IGU9MjYsdD0iYSI9PT1hPzk3OjY1LGk9aC0xO2w9U3RyaW5nLmZyb21DaGFyQ29kZSh0K2klZSkucmVwZWF0KE1hdGguZmxvb3IoaS9lKSsxKTticmVhaztkZWZhdWx0OmlmKGEpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYEludmFsaWQgc3R5bGUgIiR7YX0iIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LmApO2w9IiJ9dFtlXT1vK2w7aCsrfXJldHVybiB0fWdldCBwYWdlTGF5b3V0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VMYXlvdXQiLHQpfWdldCBwYWdlTW9kZSgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJGdWxsU2NyZWVuIjpjYXNlIlVzZU9DIjpjYXNlIlVzZUF0dGFjaG1lbnRzIjp0PWUubmFtZX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG51bGwpO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS5nZXRLZXlzKCkpe2NvbnN0IHI9ZS5nZXQoYSk7bGV0IHM7c3dpdGNoKGEpe2Nhc2UiSGlkZVRvb2xiYXIiOmNhc2UiSGlkZU1lbnViYXIiOmNhc2UiSGlkZVdpbmRvd1VJIjpjYXNlIkZpdFdpbmRvdyI6Y2FzZSJDZW50ZXJXaW5kb3ciOmNhc2UiRGlzcGxheURvY1RpdGxlIjpjYXNlIlBpY2tUcmF5QnlQREZTaXplIjoiYm9vbGVhbiI9PXR5cGVvZiByJiYocz1yKTticmVhaztjYXNlIk5vbkZ1bGxTY3JlZW5QYWdlTW9kZSI6aWYociBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYociBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIk1lZGlhQm94IjpjYXNlIkNyb3BCb3giOmNhc2UiQmxlZWRCb3giOmNhc2UiVHJpbUJveCI6Y2FzZSJBcnRCb3giOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iQ3JvcEJveCJ9YnJlYWs7Y2FzZSJQcmludFNjYWxpbmciOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOmlmKEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoJTI9PTApe3IuZXZlcnkoKChlLHQsYSk9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+MCYmKDA9PT10fHxlPj1hW3QtMV0pJiZlPD10aGlzLm51bVBhZ2VzKSkmJihzPXIpfWJyZWFrO2Nhc2UiTnVtQ29waWVzIjpOdW1iZXIuaXNJbnRlZ2VyKHIpJiZyPjAmJihzPXIpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgSWdub3Jpbmcgbm9uLXN0YW5kYXJkIGtleSBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHthfS5gKTtjb250aW51ZX1pZih2b2lkIDAhPT1zKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTt0W2FdPXN9ZWxzZSgwLG4ud2FybikoYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIFZpZXdlclByZWZlcmVuY2VzOiAke3J9LmApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGE9bmV3IGkuRGljdCh0aGlzLnhyZWYpO2Euc2V0KCJBIixlKTtjb25zdCByPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YSxyZXN1bHRPYmo6cn0pO0FycmF5LmlzQXJyYXkoci5kZXN0KT90LmRlc3Q9ci5kZXN0OnIuYWN0aW9uJiYodC5hY3Rpb249ci5hY3Rpb24pfWVsc2UgQXJyYXkuaXNBcnJheShlKSYmKHQuZGVzdD1lKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3BlbkFjdGlvbiIsKDAsbi5vYmplY3RTaXplKSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJFbWJlZGRlZEZpbGVzIikpe2NvbnN0IGE9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7Y29uc3QgYT1uZXcgaC5GaWxlU3BlYyhyLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFsoMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKV09YS5zZXJpYWxpemFibGV9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJhdHRhY2htZW50cyIsdCl9Z2V0IHhmYUltYWdlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IGE9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Uscl1vZiBhLmdldEFsbCgpKXt0fHwodD1uZXcgaS5EaWN0KHRoaXMueHJlZikpO3Quc2V0KCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpLHIpfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhSW1hZ2VzIix0KX1fY29sbGVjdEphdmFTY3JpcHQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7ZnVuY3Rpb24gYXBwZW5kSWZKYXZhU2NyaXB0RGljdChlLGEpe2lmKCEoYSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuO2lmKCEoMCxpLmlzTmFtZSkoYS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgcj1hLmdldCgiSlMiKTtpZihyIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKXI9ci5nZXRTdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgcilyZXR1cm47cj0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShyKS5yZXBsYWNlQWxsKCJcMCIsIiIpOyh0fHw9bmV3IE1hcCkuc2V0KGUscil9aWYoZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5oYXMoIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1uZXcgcy5OYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3QoKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSksYSl9Y29uc3QgYT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpO2EmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGEpO3JldHVybiB0fWdldCBqYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jb2xsZWN0SmF2YVNjcmlwdCgpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJqYXZhU2NyaXB0IixlP1suLi5lLnZhbHVlcygpXTpudWxsKX1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLl9jb2xsZWN0SmF2YVNjcmlwdCgpO2xldCB0PSgwLHIuY29sbGVjdEFjdGlvbnMpKHRoaXMueHJlZix0aGlzLl9jYXREaWN0LG4uRG9jdW1lbnRBY3Rpb25FdmVudFR5cGUpO2lmKGUpe3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO2Zvcihjb25zdFthLHJdb2YgZSlhIGluIHQ/dFthXS5wdXNoKHIpOnRbYV09W3JdfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLHQpfWFzeW5jIGZvbnRGYWxsYmFjayhlLHQpe2NvbnN0IGE9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdCByIG9mIGEpaWYoci5sb2FkZWROYW1lPT09ZSl7ci5mYWxsYmFjayh0KTtyZXR1cm59fWFzeW5jIGNsZWFudXAoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdOygwLGMuY2xlYXJHbG9iYWxDYWNoZXMpKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxhPW5ldyBpLlJlZlNldCxyPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlcyIpO3IgaW5zdGFuY2VvZiBpLlJlZiYmYS5wdXQocik7Y29uc3Qgcz10aGlzLnhyZWYsbz10aGlzLnBhZ2VLaWRzQ291bnRDYWNoZSxjPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGw9MDtmb3IoO3QubGVuZ3RoOyl7Y29uc3Qgcj10LnBvcCgpO2lmKHIgaW5zdGFuY2VvZiBpLlJlZil7Y29uc3QgaD1vLmdldChyKTtpZihoPj0wJiZsK2g8PWUpe2wrPWg7Y29udGludWV9aWYoYS5oYXMocikpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpO2EucHV0KHIpO2NvbnN0IHU9YXdhaXQgcy5mZXRjaEFzeW5jKHIpO2lmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe2xldCB0PXUuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIGkuUmVmJiYodD1hd2FpdCBzLmZldGNoQXN5bmModCkpO2lmKCgwLGkuaXNOYW1lKSh0LCJQYWdlIil8fCF1LmhhcygiS2lkcyIpKXtvLmhhcyhyKXx8by5wdXQociwxKTtjLmhhcyhyKXx8Yy5wdXQocixsKTtpZihsPT09ZSlyZXR1cm5bdSxyXTtsKys7Y29udGludWV9fXQucHVzaCh1KTtjb250aW51ZX1pZighKHIgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIik7Y29uc3R7b2JqSWQ6aH09cjtsZXQgdT1yLmdldFJhdygiQ291bnQiKTt1IGluc3RhbmNlb2YgaS5SZWYmJih1PWF3YWl0IHMuZmV0Y2hBc3luYyh1KSk7aWYoTnVtYmVyLmlzSW50ZWdlcih1KSYmdT49MCl7aCYmIW8uaGFzKGgpJiZvLnB1dChoLHUpO2lmKGwrdTw9ZSl7bCs9dTtjb250aW51ZX19bGV0IGQ9ci5nZXRSYXcoIktpZHMiKTtkIGluc3RhbmNlb2YgaS5SZWYmJihkPWF3YWl0IHMuZmV0Y2hBc3luYyhkKSk7aWYoIUFycmF5LmlzQXJyYXkoZCkpe2xldCB0PXIuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIGkuUmVmJiYodD1hd2FpdCBzLmZldGNoQXN5bmModCkpO2lmKCgwLGkuaXNOYW1lKSh0LCJQYWdlIil8fCFyLmhhcygiS2lkcyIpKXtpZihsPT09ZSlyZXR1cm5bcixudWxsXTtsKys7Y29udGludWV9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIil9Zm9yKGxldCBlPWQubGVuZ3RoLTE7ZT49MDtlLS0pdC5wdXNoKGRbZV0pfXRocm93IG5ldyBFcnJvcihgUGFnZSBpbmRleCAke2V9IG5vdCBmb3VuZC5gKX1hc3luYyBnZXRBbGxQYWdlRGljdHMoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0e2lnbm9yZUVycm9yczp0fT10aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyxhPVt7Y3VycmVudE5vZGU6dGhpcy50b3BsZXZlbFBhZ2VzRGljdCxwb3NJbktpZHM6MH1dLHM9bmV3IGkuUmVmU2V0LG89dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7byBpbnN0YW5jZW9mIGkuUmVmJiZzLnB1dChvKTtjb25zdCBjPW5ldyBNYXAsbD10aGlzLnhyZWYsaD10aGlzLnBhZ2VJbmRleENhY2hlO2xldCB1PTA7ZnVuY3Rpb24gYWRkUGFnZURpY3QoZSx0KXt0JiYhaC5oYXModCkmJmgucHV0KHQsdSk7Yy5zZXQodSsrLFtlLHRdKX1mdW5jdGlvbiBhZGRQYWdlRXJyb3IoYSl7aWYoYSBpbnN0YW5jZW9mIHIuWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBhO2lmKGUmJnQmJjA9PT11KXsoMCxuLndhcm4pKGBnZXRBbGxQYWdlRGljdHMgLSBTa2lwcGluZyBpbnZhbGlkIGZpcnN0IHBhZ2U6ICIke2F9Ii5gKTthPWkuRGljdC5lbXB0eX1jLnNldCh1KyssW2EsbnVsbF0pfWZvcig7YS5sZW5ndGg+MDspe2NvbnN0IGU9YS5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOnJ9PWU7bGV0IG89dC5nZXRSYXcoIktpZHMiKTtpZihvIGluc3RhbmNlb2YgaS5SZWYpdHJ5e289YXdhaXQgbC5mZXRjaEFzeW5jKG8pfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pZighQXJyYXkuaXNBcnJheShvKSl7YWRkUGFnZUVycm9yKG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpKTticmVha31pZihyPj1vLmxlbmd0aCl7YS5wb3AoKTtjb250aW51ZX1jb25zdCBjPW9bcl07bGV0IGg7aWYoYyBpbnN0YW5jZW9mIGkuUmVmKXtpZihzLmhhcyhjKSl7YWRkUGFnZUVycm9yKG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKSk7YnJlYWt9cy5wdXQoYyk7dHJ5e2g9YXdhaXQgbC5mZXRjaEFzeW5jKGMpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha319ZWxzZSBoPWM7aWYoIShoIGluc3RhbmNlb2YgaS5EaWN0KSl7YWRkUGFnZUVycm9yKG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCB1PWguZ2V0UmF3KCJUeXBlIik7aWYodSBpbnN0YW5jZW9mIGkuUmVmKXRyeXt1PWF3YWl0IGwuZmV0Y2hBc3luYyh1KX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9KDAsaS5pc05hbWUpKHUsIlBhZ2UiKXx8IWguaGFzKCJLaWRzIik/YWRkUGFnZURpY3QoaCxjIGluc3RhbmNlb2YgaS5SZWY/YzpudWxsKTphLnB1c2goe2N1cnJlbnROb2RlOmgscG9zSW5LaWRzOjB9KTtlLnBvc0luS2lkcysrfXJldHVybiBjfWdldFBhZ2VJbmRleChlKXtjb25zdCB0PXRoaXMucGFnZUluZGV4Q2FjaGUuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KTtjb25zdCBhPXRoaXMueHJlZjtsZXQgcj0wO2NvbnN0IG5leHQ9dD0+ZnVuY3Rpb24gcGFnZXNCZWZvcmVSZWYodCl7bGV0IHIscz0wO3JldHVybiBhLmZldGNoQXN5bmModCkudGhlbigoZnVuY3Rpb24oYSl7aWYoKDAsaS5pc1JlZnNFcXVhbCkodCxlKSYmISgwLGkuaXNEaWN0KShhLCJQYWdlIikmJiEoYSBpbnN0YW5jZW9mIGkuRGljdCYmIWEuaGFzKCJUeXBlIikmJmEuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBwb2ludCB0byBhIC9QYWdlIGRpY3Rpb25hcnkuIik7aWYoIWEpcmV0dXJuIG51bGw7aWYoIShhIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyPWEuZ2V0UmF3KCJQYXJlbnQiKTtyZXR1cm4gYS5nZXRBc3luYygiUGFyZW50Iil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFyZW50IG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybiBlLmdldEFzeW5jKCJLaWRzIil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3Qgbz1bXTtsZXQgYz0hMTtmb3IoY29uc3QgciBvZiBlKXtpZighKHIgaW5zdGFuY2VvZiBpLlJlZikpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIktpZCBtdXN0IGJlIGEgcmVmZXJlbmNlLiIpO2lmKCgwLGkuaXNSZWZzRXF1YWwpKHIsdCkpe2M9ITA7YnJlYWt9by5wdXNoKGEuZmV0Y2hBc3luYyhyKS50aGVuKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9zKz1lLmdldCgiQ291bnQiKTpzKyt9KSkpfWlmKCFjKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJLaWQgcmVmZXJlbmNlIG5vdCBmb3VuZCBpbiBwYXJlbnQncyBraWRzLiIpO3JldHVybiBQcm9taXNlLmFsbChvKS50aGVuKChmdW5jdGlvbigpe3JldHVybltzLHJdfSkpfSkpfSh0KS50aGVuKCh0PT57aWYoIXQpe3RoaXMucGFnZUluZGV4Q2FjaGUucHV0KGUscik7cmV0dXJuIHJ9Y29uc3RbYSxuXT10O3IrPWE7cmV0dXJuIG5leHQobil9KSk7cmV0dXJuIG5leHQoZSl9Z2V0IGJhc2VVcmwoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJVUkkiKTtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCB0PWUuZ2V0KCJCYXNlIik7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPSgwLG4uY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkodCxudWxsLHt0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtpZihlKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYmFzZVVybCIsbnVsbCl9c3RhdGljIHBhcnNlRGVzdERpY3Rpb25hcnkoZSl7Y29uc3QgdD1lLmRlc3REaWN0O2lmKCEodCBpbnN0YW5jZW9mIGkuRGljdCkpeygwLG4ud2FybikoInBhcnNlRGVzdERpY3Rpb25hcnk6IGBkZXN0RGljdGAgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IGE9ZS5yZXN1bHRPYmo7aWYoIm9iamVjdCIhPXR5cGVvZiBhKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgcmVzdWx0T2JqYCBtdXN0IGJlIGFuIG9iamVjdC4iKTtyZXR1cm59Y29uc3Qgcz1lLmRvY0Jhc2VVcmx8fG51bGwsYz1lLmRvY0F0dGFjaG1lbnRzfHxudWxsO2xldCBsLGgsdT10LmdldCgiQSIpO2lmKCEodSBpbnN0YW5jZW9mIGkuRGljdCkpaWYodC5oYXMoIkRlc3QiKSl1PXQuZ2V0KCJEZXN0Iik7ZWxzZXt1PXQuZ2V0KCJBQSIpO3UgaW5zdGFuY2VvZiBpLkRpY3QmJih1LmhhcygiRCIpP3U9dS5nZXQoIkQiKTp1LmhhcygiVSIpJiYodT11LmdldCgiVSIpKSl9aWYodSBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT11LmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuTmFtZSkpeygwLG4ud2FybikoInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgdD1lLm5hbWU7c3dpdGNoKHQpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPXUuZ2V0KCJGbGFncyIpLHM9MD09KDEmKCJudW1iZXIiPT10eXBlb2YgZT9lOjApKSxkPVtdLGY9W107Zm9yKGNvbnN0IGUgb2YgdS5nZXQoIkZpZWxkcyIpfHxbXSllIGluc3RhbmNlb2YgaS5SZWY/Zi5wdXNoKGUudG9TdHJpbmcoKSk6InN0cmluZyI9PXR5cGVvZiBlJiZkLnB1c2goKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSkpO2EucmVzZXRGb3JtPXtmaWVsZHM6ZCxyZWZzOmYsaW5jbHVkZTpzfTticmVhaztjYXNlIlVSSSI6bD11LmdldCgiVVJJIik7bCBpbnN0YW5jZW9mIGkuTmFtZSYmKGw9Ii8iK2wubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpoPXUuZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGc9dS5nZXQoIkYiKTtnIGluc3RhbmNlb2YgaS5EaWN0P2w9Zy5nZXQoIkYiKXx8bnVsbDoic3RyaW5nIj09dHlwZW9mIGcmJihsPWcpO2xldCBwPXUuZ2V0KCJEIik7aWYocCl7cCBpbnN0YW5jZW9mIGkuTmFtZSYmKHA9cC5uYW1lKTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IGU9bC5zcGxpdCgiIyIpWzBdOyJzdHJpbmciPT10eXBlb2YgcD9sPWUrIiMiK3A6QXJyYXkuaXNBcnJheShwKSYmKGw9ZSsiIyIrSlNPTi5zdHJpbmdpZnkocCkpfX1jb25zdCBtPXUuZ2V0KCJOZXdXaW5kb3ciKTsiYm9vbGVhbiI9PXR5cGVvZiBtJiYoYS5uZXdXaW5kb3c9bSk7YnJlYWs7Y2FzZSJHb1RvRSI6Y29uc3QgYj11LmdldCgiVCIpO2xldCB5O2lmKGMmJmIgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9Yi5nZXQoIlIiKSx0PWIuZ2V0KCJOIik7KDAsaS5pc05hbWUpKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoeT1jWygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHQpXSl9eT9hLmF0dGFjaG1lbnQ9eTooMCxuLndhcm4pKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB3PXUuZ2V0KCJOIik7dyBpbnN0YW5jZW9mIGkuTmFtZSYmKGEuYWN0aW9uPXcubmFtZSk7YnJlYWs7Y2FzZSJTZXRPQ0dTdGF0ZSI6Y29uc3QgUz11LmdldCgiU3RhdGUiKSx4PXUuZ2V0KCJQcmVzZXJ2ZVJCIik7aWYoIUFycmF5LmlzQXJyYXkoUyl8fDA9PT1TLmxlbmd0aClicmVhaztjb25zdCBDPVtdO2Zvcihjb25zdCBlIG9mIFMpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6Y2FzZSJUb2dnbGUiOkMucHVzaChlLm5hbWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuUmVmJiZDLnB1c2goZS50b1N0cmluZygpKTtpZihDLmxlbmd0aCE9PVMubGVuZ3RoKWJyZWFrO2Euc2V0T0NHU3RhdGU9e3N0YXRlOkMscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiB4fHx4fTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IHY9dS5nZXQoIkpTIik7bGV0IGs7diBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbT9rPXYuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB2JiYoaz12KTtjb25zdCBPPWsmJigwLHIucmVjb3ZlckpzVVJMKSgoMCxuLnN0cmluZ1RvUERGU3RyaW5nKShrKSk7aWYoTyl7bD1PLnVybDthLm5ld1dpbmRvdz1PLm5ld1dpbmRvdzticmVha31kZWZhdWx0OmlmKCJKYXZhU2NyaXB0Ij09PXR8fCJTdWJtaXRGb3JtIj09PXQpYnJlYWs7KDAsbi53YXJuKShgcGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuc3VwcG9ydGVkIGFjdGlvbjogIiR7dH0iLmApfX1lbHNlIHQuaGFzKCJEZXN0IikmJihoPXQuZ2V0KCJEZXN0IikpO2lmKCJzdHJpbmciPT10eXBlb2YgbCl7Y29uc3QgZT0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKGwscyx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO2UmJihhLnVybD1lLmhyZWYpO2EudW5zYWZlVXJsPWx9aWYoaCl7aCBpbnN0YW5jZW9mIGkuTmFtZSYmKGg9aC5uYW1lKTsic3RyaW5nIj09dHlwZW9mIGg/YS5kZXN0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGgpOkFycmF5LmlzQXJyYXkoaCkmJihhLmRlc3Q9aCl9fX10LkNhdGFsb2c9Q2F0YWxvZ30sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwO2EoMTM5KTt2YXIgcj1hKDE1MCksbj1hKDE0NCk7Y2xhc3MgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5jb25zdHJ1Y3Rvcj09PU5hbWVPck51bWJlclRyZWUmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBOYW1lT3JOdW1iZXJUcmVlLiIpO3RoaXMucm9vdD1lO3RoaXMueHJlZj10O3RoaXMuX3R5cGU9YX1nZXRBbGwoKXtjb25zdCBlPW5ldyBNYXA7aWYoIXRoaXMucm9vdClyZXR1cm4gZTtjb25zdCB0PXRoaXMueHJlZixhPW5ldyByLlJlZlNldDthLnB1dCh0aGlzLnJvb3QpO2NvbnN0IGk9W3RoaXMucm9vdF07Zm9yKDtpLmxlbmd0aD4wOyl7Y29uc3Qgcz10LmZldGNoSWZSZWYoaS5zaGlmdCgpKTtpZighKHMgaW5zdGFuY2VvZiByLkRpY3QpKWNvbnRpbnVlO2lmKHMuaGFzKCJLaWRzIikpe2NvbnN0IGU9cy5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZihhLmhhcyh0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgRHVwbGljYXRlIGVudHJ5IGluICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO2kucHVzaCh0KTthLnB1dCh0KX1jb250aW51ZX1jb25zdCBvPXMuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBhPTAscj1vLmxlbmd0aDthPHI7YSs9MillLnNldCh0LmZldGNoSWZSZWYob1thXSksdC5mZXRjaElmUmVmKG9bYSsxXSkpfXJldHVybiBlfWdldChlKXtpZighdGhpcy5yb290KXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy54cmVmO2xldCBhPXQuZmV0Y2hJZlJlZih0aGlzLnJvb3QpLHI9MDtmb3IoO2EuaGFzKCJLaWRzIik7KXtpZigrK3I+MTApeygwLG4ud2FybikoYFNlYXJjaCBkZXB0aCBsaW1pdCByZWFjaGVkIGZvciAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtyZXR1cm4gbnVsbH1jb25zdCBpPWEuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIG51bGw7bGV0IHM9MCxvPWkubGVuZ3RoLTE7Zm9yKDtzPD1vOyl7Y29uc3Qgcj1zK28+PjEsbj10LmZldGNoSWZSZWYoaVtyXSksYz1uLmdldCgiTGltaXRzIik7aWYoZTx0LmZldGNoSWZSZWYoY1swXSkpbz1yLTE7ZWxzZXtpZighKGU+dC5mZXRjaElmUmVmKGNbMV0pKSl7YT1uO2JyZWFrfXM9cisxfX1pZihzPm8pcmV0dXJuIG51bGx9Y29uc3QgaT1hLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KGkpKXtsZXQgYT0wLHI9aS5sZW5ndGgtMjtmb3IoO2E8PXI7KXtjb25zdCBuPWErcj4+MSxzPW4rKDEmbiksbz10LmZldGNoSWZSZWYoaVtzXSk7aWYoZTxvKXI9cy0yO2Vsc2V7aWYoIShlPm8pKXJldHVybiB0LmZldGNoSWZSZWYoaVtzKzFdKTthPXMrMn19fXJldHVybiBudWxsfX10Lk5hbWVUcmVlPWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19O3QuTnVtYmVyVHJlZT1jbGFzcyBOdW1iZXJUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTnVtcyIpfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXsoMCxyLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpOygwLG4uY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgcj1hKDE1MCksbj1hKDE5MCl9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRmlsZVNwZWM9dm9pZCAwO3ZhciByPWEoMTQ0KSxuPWEoMTUxKSxpPWEoMTUwKTtmdW5jdGlvbiBwaWNrUGxhdGZvcm1JdGVtKGUpe3JldHVybiBlLmhhcygiVUYiKT9lLmdldCgiVUYiKTplLmhhcygiRiIpP2UuZ2V0KCJGIik6ZS5oYXMoIlVuaXgiKT9lLmdldCgiVW5peCIpOmUuaGFzKCJNYWMiKT9lLmdldCgiTWFjIik6ZS5oYXMoIkRPUyIpP2UuZ2V0KCJET1MiKTpudWxsfXQuRmlsZVNwZWM9Y2xhc3MgRmlsZVNwZWN7Y29uc3RydWN0b3IoZSx0KXtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXt0aGlzLnhyZWY9dDt0aGlzLnJvb3Q9ZTtlLmhhcygiRlMiKSYmKHRoaXMuZnM9ZS5nZXQoIkZTIikpO3RoaXMuZGVzY3JpcHRpb249ZS5oYXMoIkRlc2MiKT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLmdldCgiRGVzYyIpKToiIjtlLmhhcygiUkYiKSYmKDAsci53YXJuKSgiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7dGhpcy5jb250ZW50QXZhaWxhYmxlPSEwO2lmKCFlLmhhcygiRUYiKSl7dGhpcy5jb250ZW50QXZhaWxhYmxlPSExOygwLHIud2FybikoIk5vbi1lbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIil9fX1nZXQgZmlsZW5hbWUoKXtpZighdGhpcy5fZmlsZW5hbWUmJnRoaXMucm9vdCl7Y29uc3QgZT1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdCl8fCJ1bm5hbWVkIjt0aGlzLl9maWxlbmFtZT0oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlKS5yZXBsYWNlQWxsKCJcXFxcIiwiXFwiKS5yZXBsYWNlQWxsKCJcXC8iLCIvIikucmVwbGFjZUFsbCgiXFwiLCIvIil9cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50KCl7aWYoIXRoaXMuY29udGVudEF2YWlsYWJsZSlyZXR1cm4gbnVsbDshdGhpcy5jb250ZW50UmVmJiZ0aGlzLnJvb3QmJih0aGlzLmNvbnRlbnRSZWY9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QuZ2V0KCJFRiIpKSk7bGV0IGU9bnVsbDtpZih0aGlzLmNvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTt0IGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOigwLHIud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2UoMCxyLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvbnRlbnQiKTtyZXR1cm4gZX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue2ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsY29udGVudDp0aGlzLmNvbnRlbnR9fX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTWV0YWRhdGFQYXJzZXI9dm9pZCAwO2EoMik7YSgxMzkpO3ZhciByPWEoMjE3KTt0Lk1ldGFkYXRhUGFyc2VyPWNsYXNzIE1ldGFkYXRhUGFyc2Vye2NvbnN0cnVjdG9yKGUpe2U9dGhpcy5fcmVwYWlyKGUpO2NvbnN0IHQ9bmV3IHIuU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxhLHIpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCphKzEqcil9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLHI9WyI+Il07Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqYS5jaGFyQ29kZUF0KGUpK2EuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9yLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6ci5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIHIuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsYT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsYS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RydWN0VHJlZVJvb3Q9dC5TdHJ1Y3RUcmVlUGFnZT12b2lkIDA7YSgxMzkpO3ZhciByPWEoMTUwKSxuPWEoMTQ0KSxpPWEoMjIxKTtjb25zdCBzPSJQQUdFX0NPTlRFTlQiLG89IlNUUkVBTV9DT05URU5UIixjPSJPQkpFQ1QiLGw9IkVMRU1FTlQiO3QuU3RydWN0VHJlZVJvb3Q9Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSl7dGhpcy5kaWN0PWU7dGhpcy5yb2xlTWFwPW5ldyBNYXB9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiByLkRpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2Ygci5OYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX19O2NsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiByLk5hbWU/ZS5uYW1lOiIiLHtyb290OmF9PXRoaXMudHJlZTtyZXR1cm4gYS5yb2xlTWFwLmhhcyh0KT9hLnJvbGVNYXAuZ2V0KHQpOnR9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIHIuUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdCk7YSYmdGhpcy5raWRzLnB1c2goYSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxhKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cyxtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgYT1udWxsO3QgaW5zdGFuY2VvZiByLlJlZj9hPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiByLkRpY3QmJihhPXQpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXRSYXcoIlBnIik7biBpbnN0YW5jZW9mIHIuUmVmJiYoZT1uLnRvU3RyaW5nKCkpO2NvbnN0IGk9YS5nZXQoIlR5cGUiKWluc3RhbmNlb2Ygci5OYW1lP2EuZ2V0KCJUeXBlIikubmFtZTpudWxsO3JldHVybiJNQ1IiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6byxyZWZPYmpJZDphLmdldFJhdygiU3RtIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJTdG0iKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDphLmdldCgiTUNJRCIpfSk6Ik9CSlIiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6YyxyZWZPYmpJZDphLmdldFJhdygiT2JqIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJPYmoiKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KTpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpsLGRpY3Q6YX0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKGUpe2xldHt0eXBlOnQsZGljdDphPW51bGwsbWNpZDpyPW51bGwscGFnZU9iaklkOm49bnVsbCxyZWZPYmpJZDppPW51bGx9PWU7dGhpcy50eXBlPXQ7dGhpcy5kaWN0PWE7dGhpcy5tY2lkPXI7dGhpcy5wYWdlT2JqSWQ9bjt0aGlzLnJlZk9iaklkPWk7dGhpcy5wYXJlbnROb2RlPW51bGx9fXQuU3RydWN0VHJlZVBhZ2U9Y2xhc3MgU3RydWN0VHJlZVBhZ2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnJvb3Q9ZTt0aGlzLnJvb3REaWN0PWU/ZS5kaWN0Om51bGw7dGhpcy5wYWdlRGljdD10O3RoaXMubm9kZXM9W119cGFyc2UoKXtpZighdGhpcy5yb290fHwhdGhpcy5yb290RGljdClyZXR1cm47Y29uc3QgZT10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMucGFnZURpY3QuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuO2NvbnN0IGE9bmV3IGkuTnVtYmVyVHJlZShlLHRoaXMucm9vdERpY3QueHJlZikuZ2V0KHQpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybjtjb25zdCBuPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgYSllIGluc3RhbmNlb2Ygci5SZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnJvb3REaWN0LnhyZWYuZmV0Y2goZSksbil9YWRkTm9kZShlLHQpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowO2lmKGE+NDApeygwLG4ud2FybikoIlN0cnVjdFRyZWUgTUFYX0RFUFRIIHJlYWNoZWQuIik7cmV0dXJuIG51bGx9aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGk9bmV3IFN0cnVjdEVsZW1lbnROb2RlKHRoaXMsZSk7dC5zZXQoZSxpKTtjb25zdCBzPWUuZ2V0KCJQIik7aWYoIXN8fCgwLHIuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGkpfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1jb25zdCBvPXRoaXMuYWRkTm9kZShzLHQsYSsxKTtpZighbylyZXR1cm4gaTtsZXQgYz0hMTtmb3IoY29uc3QgdCBvZiBvLmtpZHMpaWYodC50eXBlPT09bCYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWk7Yz0hMH1jfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWEpcmV0dXJuITE7aWYoYSBpbnN0YW5jZW9mIHIuRGljdCl7aWYoYS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2xldCBuPSExO2ZvcihsZXQgcj0wO3I8YS5sZW5ndGg7cisrKXtjb25zdCBpPWFbcl07aWYoaT8udG9TdHJpbmcoKT09PWUub2JqSWQpe3RoaXMubm9kZXNbcl09dDtuPSEwfX1yZXR1cm4gbn1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjA7aWYoYT40MCl7KDAsbi53YXJuKSgiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtjb25zdCBpPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGkpKTtjb25zdCBoPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGgmJihyLmxhbmc9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoaCkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1sP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUscixhKzEpOnQudHlwZT09PXN8fHQudHlwZT09PW8/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcCR7dC5wYWdlT2JqSWR9X21jJHt0Lm1jaWR9YH0pOnQudHlwZT09PWMmJnIuY2hpbGRyZW4ucHVzaCh7dHlwZToib2JqZWN0IixpZDp0LnJlZk9iaklkfSl9fWNvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlLmNoaWxkcmVuPVtdO2Uucm9sZT0iUm9vdCI7Zm9yKGNvbnN0IHQgb2YgdGhpcy5ub2Rlcyl0JiZub2RlVG9TZXJpYWxpemFibGUodCxlKTtyZXR1cm4gZX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9iamVjdExvYWRlcj12b2lkIDA7YSgxMzkpO3ZhciByPWEoMTUwKSxuPWEoMTUxKSxpPWEoMTQ5KSxzPWEoMTQ0KTtmdW5jdGlvbiBhZGRDaGlsZHJlbihlLHQpe2lmKGUgaW5zdGFuY2VvZiByLkRpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSllPWUuZGljdC5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybjtmb3IoY29uc3QgaSBvZiBlKSgoYT1pKWluc3RhbmNlb2Ygci5SZWZ8fGEgaW5zdGFuY2VvZiByLkRpY3R8fGEgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW18fEFycmF5LmlzQXJyYXkoYSkpJiZ0LnB1c2goaSk7dmFyIGF9dC5PYmplY3RMb2FkZXI9Y2xhc3MgT2JqZWN0TG9hZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRpY3Q9ZTt0aGlzLmtleXM9dDt0aGlzLnhyZWY9YTt0aGlzLnJlZlNldD1udWxsfWFzeW5jIGxvYWQoKXtpZih0aGlzLnhyZWYuc3RyZWFtLmlzRGF0YUxvYWRlZClyZXR1cm47Y29uc3R7a2V5czplLGRpY3Q6dH09dGhpczt0aGlzLnJlZlNldD1uZXcgci5SZWZTZXQ7Y29uc3QgYT1bXTtmb3IoY29uc3QgciBvZiBlKXtjb25zdCBlPXQuZ2V0UmF3KHIpO3ZvaWQgMCE9PWUmJmEucHVzaChlKX1yZXR1cm4gdGhpcy5fd2FsayhhKX1hc3luYyBfd2FsayhlKXtjb25zdCB0PVtdLGE9W107Zm9yKDtlLmxlbmd0aDspe2xldCBvPWUucG9wKCk7aWYobyBpbnN0YW5jZW9mIHIuUmVmKXtpZih0aGlzLnJlZlNldC5oYXMobykpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChvKTtvPXRoaXMueHJlZi5mZXRjaChvKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKSl7KDAscy53YXJuKShgT2JqZWN0TG9hZGVyLl93YWxrIC0gcmVxdWVzdGluZyBhbGwgZGF0YTogIiR7ZX0iLmApO3RoaXMucmVmU2V0PW51bGw7Y29uc3R7bWFuYWdlcjp0fT10aGlzLnhyZWYuc3RyZWFtO3JldHVybiB0LnJlcXVlc3RBbGxDaHVua3MoKX10LnB1c2gobyk7YS5wdXNoKHtiZWdpbjplLmJlZ2luLGVuZDplLmVuZH0pfX1pZihvIGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtKXtjb25zdCBlPW8uZ2V0QmFzZVN0cmVhbXMoKTtpZihlKXtsZXQgcj0hMTtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmlzRGF0YUxvYWRlZCl7cj0hMDthLnB1c2goe2JlZ2luOnQuc3RhcnQsZW5kOnQuZW5kfSl9ciYmdC5wdXNoKG8pfX1hZGRDaGlsZHJlbihvLGUpfWlmKGEubGVuZ3RoKXthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhhKTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiByLlJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO3JldHVybiB0aGlzLl93YWxrKHQpfXRoaXMucmVmU2V0PW51bGx9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YRkFGYWN0b3J5PXZvaWQgMDthKDEzOSk7dmFyIHI9YSgyMjgpLG49YSgyMjkpLGk9YSgyNDIpLHM9YSgyMzgpLG89YSgyMzcpLGM9YSgxNDQpLGw9YSgyNDMpLGg9YSgyNTMpO2NsYXNzIFhGQUZhY3Rvcnl7Y29uc3RydWN0b3IoZSl7dHJ5e3RoaXMucm9vdD0obmV3IGwuWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgbi5CaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgaS5EYXRhSGFuZGxlcih0aGlzLnJvb3QsdC5nZXREYXRhKCkpO3RoaXMuZm9ybVtyLiRnbG9iYWxEYXRhXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7KDAsYy53YXJuKShgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiB0aGlzLnJvb3QmJnRoaXMuZm9ybX1fY3JlYXRlUGFnZXNIZWxwZXIoKXtjb25zdCBlPXRoaXMuZm9ybVtyLiR0b1BhZ2VzXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsYSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGE9ZS5uZXh0KCk7YS5kb25lP3QoYS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2EoZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDphfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChhKV19KSl9Y2F0Y2goZSl7KDAsYy53YXJuKShgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmltYWdlcz1lfXNldEZvbnRzKGUpe3RoaXMuZm9ybVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyPW5ldyBzLkZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLnVzZWRUeXBlZmFjZXMpe2U9KDAsby5zdHJpcFF1b3RlcykoZSk7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBsLlhGQVBhcnNlcihoLlhodG1sTmFtZXNwYWNlLCEwKS5wYXJzZShlKTtpZighWyJib2R5IiwieGh0bWwiXS5pbmNsdWRlcyh0W3IuJG5vZGVOYW1lXSkpe2NvbnN0IGU9aC5YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW3IuJGFwcGVuZENoaWxkXSh0KTt0PWV9Y29uc3QgYT10W3IuJHRvSFRNTF0oKTtpZighYS5zdWNjZXNzKXJldHVybiBudWxsO2NvbnN0e2h0bWw6bn09YSx7YXR0cmlidXRlczppfT1uO2lmKGkpe2kuY2xhc3MmJihpLmNsYXNzPWkuY2xhc3MuZmlsdGVyKChlPT4hZS5zdGFydHNXaXRoKCJ4ZmEiKSkpKTtpLmRpcj0iYXV0byJ9cmV0dXJue2h0bWw6bixzdHI6dFtyLiR0ZXh0XSgpfX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19dC5YRkFGYWN0b3J5PVhGQUZhY3Rvcnl9LChlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LiR1aWQ9dC4kdG9TdHlsZT10LiR0b1N0cmluZz10LiR0b1BhZ2VzPXQuJHRvSFRNTD10LiR0ZXh0PXQuJHRhYkluZGV4PXQuJHNldFZhbHVlPXQuJHNldFNldEF0dHJpYnV0ZXM9dC4kc2V0SWQ9dC4kc2VhcmNoTm9kZT10LiRyb290PXQuJHJlc29sdmVQcm90b3R5cGVzPXQuJHJlbW92ZUNoaWxkPXQuJHB1c2hQYXJhPXQuJHB1c2hHbHlwaHM9dC4kcG9wUGFyYT10LiRvblRleHQ9dC4kb25DaGlsZENoZWNrPXQuJG9uQ2hpbGQ9dC4kbnNBdHRyaWJ1dGVzPXQuJG5vZGVOYW1lPXQuJG5hbWVzcGFjZUlkPXQuJGxhc3RBdHRyaWJ1dGU9dC4kaXNVc2FibGU9dC4kaXNUcmFuc3BhcmVudD10LiRpc1RoZXJlTW9yZVdpZHRoPXQuJGlzU3BsaXR0YWJsZT10LiRpc05zQWdub3N0aWM9dC4kaXNEZXNjZW5kZW50PXQuJGlzRGF0YVZhbHVlPXQuJGlzQ0RBVEFYbWw9dC4kaXNCaW5kYWJsZT10LiRpbnNlcnRBdD10LiRpbmRleE9mPXQuJGlkcz10LiRoYXNTZXR0YWJsZVZhbHVlPXQuJGdsb2JhbERhdGE9dC4kZ2V0VGVtcGxhdGVSb290PXQuJGdldFN1YmZvcm1QYXJlbnQ9dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0UGFyZW50PXQuJGdldE5leHRQYWdlPXQuJGdldEV4dHJhPXQuJGdldERhdGFWYWx1ZT10LiRnZXRDb250YWluZWRDaGlsZHJlbj10LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PXQuJGdldENoaWxkcmVuQnlOYW1lPXQuJGdldENoaWxkcmVuQnlDbGFzcz10LiRnZXRDaGlsZHJlbj10LiRnZXRBdmFpbGFibGVTcGFjZT10LiRnZXRBdHRyaWJ1dGVzPXQuJGdldEF0dHJpYnV0ZUl0PXQuJGZsdXNoSFRNTD10LiRmaW5hbGl6ZT10LiRleHRyYT10LiRkdW1wPXQuJGRhdGE9dC4kY29udGVudD10LiRjb25zdW1lZD10LiRjbG9uZT10LiRjbGVhbnVwPXQuJGNsZWFuUGFnZT10LiRjbGVhbj10LiRjaGlsZHJlblRvSFRNTD10LiRhcHBlbmRDaGlsZD10LiRhZGRIVE1MPXQuJGFjY2VwdFdoaXRlc3BhY2U9dm9pZCAwO2NvbnN0IGE9U3ltYm9sKCk7dC4kYWNjZXB0V2hpdGVzcGFjZT1hO2NvbnN0IHI9U3ltYm9sKCk7dC4kYWRkSFRNTD1yO2NvbnN0IG49U3ltYm9sKCk7dC4kYXBwZW5kQ2hpbGQ9bjtjb25zdCBpPVN5bWJvbCgpO3QuJGNoaWxkcmVuVG9IVE1MPWk7Y29uc3Qgcz1TeW1ib2woKTt0LiRjbGVhbj1zO2NvbnN0IG89U3ltYm9sKCk7dC4kY2xlYW5QYWdlPW87Y29uc3QgYz1TeW1ib2woKTt0LiRjbGVhbnVwPWM7Y29uc3QgbD1TeW1ib2woKTt0LiRjbG9uZT1sO2NvbnN0IGg9U3ltYm9sKCk7dC4kY29uc3VtZWQ9aDtjb25zdCB1PVN5bWJvbCgiY29udGVudCIpO3QuJGNvbnRlbnQ9dTtjb25zdCBkPVN5bWJvbCgiZGF0YSIpO3QuJGRhdGE9ZDtjb25zdCBmPVN5bWJvbCgpO3QuJGR1bXA9Zjtjb25zdCBnPVN5bWJvbCgiZXh0cmEiKTt0LiRleHRyYT1nO2NvbnN0IHA9U3ltYm9sKCk7dC4kZmluYWxpemU9cDtjb25zdCBtPVN5bWJvbCgpO3QuJGZsdXNoSFRNTD1tO2NvbnN0IGI9U3ltYm9sKCk7dC4kZ2V0QXR0cmlidXRlSXQ9Yjtjb25zdCB5PVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZXM9eTtjb25zdCB3PVN5bWJvbCgpO3QuJGdldEF2YWlsYWJsZVNwYWNlPXc7Y29uc3QgUz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5Q2xhc3M9Uztjb25zdCB4PVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lPXg7Y29uc3QgQz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PUM7Y29uc3Qgdj1TeW1ib2woKTt0LiRnZXREYXRhVmFsdWU9djtjb25zdCBrPVN5bWJvbCgpO3QuJGdldEV4dHJhPWs7Y29uc3QgTz1TeW1ib2woKTt0LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD1PO2NvbnN0IFQ9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW49VDtjb25zdCBNPVN5bWJvbCgpO3QuJGdldENvbnRhaW5lZENoaWxkcmVuPU07Y29uc3QgRT1TeW1ib2woKTt0LiRnZXROZXh0UGFnZT1FO2NvbnN0IEQ9U3ltYm9sKCk7dC4kZ2V0U3ViZm9ybVBhcmVudD1EO2NvbnN0IE49U3ltYm9sKCk7dC4kZ2V0UGFyZW50PU47Y29uc3QgUj1TeW1ib2woKTt0LiRnZXRUZW1wbGF0ZVJvb3Q9Ujtjb25zdCBMPVN5bWJvbCgpO3QuJGdsb2JhbERhdGE9TDtjb25zdCAkPVN5bWJvbCgpO3QuJGhhc1NldHRhYmxlVmFsdWU9JDtjb25zdCBfPVN5bWJvbCgpO3QuJGlkcz1fO2NvbnN0IGo9U3ltYm9sKCk7dC4kaW5kZXhPZj1qO2NvbnN0IFU9U3ltYm9sKCk7dC4kaW5zZXJ0QXQ9VTtjb25zdCBYPVN5bWJvbCgpO3QuJGlzQ0RBVEFYbWw9WDtjb25zdCBIPVN5bWJvbCgpO3QuJGlzQmluZGFibGU9SDtjb25zdCBxPVN5bWJvbCgpO3QuJGlzRGF0YVZhbHVlPXE7Y29uc3Qgej1TeW1ib2woKTt0LiRpc0Rlc2NlbmRlbnQ9ejtjb25zdCBXPVN5bWJvbCgpO3QuJGlzTnNBZ25vc3RpYz1XO2NvbnN0IEc9U3ltYm9sKCk7dC4kaXNTcGxpdHRhYmxlPUc7Y29uc3QgVj1TeW1ib2woKTt0LiRpc1RoZXJlTW9yZVdpZHRoPVY7Y29uc3QgSz1TeW1ib2woKTt0LiRpc1RyYW5zcGFyZW50PUs7Y29uc3QgWT1TeW1ib2woKTt0LiRpc1VzYWJsZT1ZO2NvbnN0IEo9U3ltYm9sKCk7dC4kbGFzdEF0dHJpYnV0ZT1KO2NvbnN0IFo9U3ltYm9sKCJuYW1lc3BhY2VJZCIpO3QuJG5hbWVzcGFjZUlkPVo7Y29uc3QgUT1TeW1ib2woIm5vZGVOYW1lIik7dC4kbm9kZU5hbWU9UTtjb25zdCBlZT1TeW1ib2woKTt0LiRuc0F0dHJpYnV0ZXM9ZWU7Y29uc3QgdGU9U3ltYm9sKCk7dC4kb25DaGlsZD10ZTtjb25zdCBhZT1TeW1ib2woKTt0LiRvbkNoaWxkQ2hlY2s9YWU7Y29uc3QgcmU9U3ltYm9sKCk7dC4kb25UZXh0PXJlO2NvbnN0IG5lPVN5bWJvbCgpO3QuJHB1c2hHbHlwaHM9bmU7Y29uc3QgaWU9U3ltYm9sKCk7dC4kcG9wUGFyYT1pZTtjb25zdCBzZT1TeW1ib2woKTt0LiRwdXNoUGFyYT1zZTtjb25zdCBvZT1TeW1ib2woKTt0LiRyZW1vdmVDaGlsZD1vZTtjb25zdCBjZT1TeW1ib2woInJvb3QiKTt0LiRyb290PWNlO2NvbnN0IGxlPVN5bWJvbCgpO3QuJHJlc29sdmVQcm90b3R5cGVzPWxlO2NvbnN0IGhlPVN5bWJvbCgpO3QuJHNlYXJjaE5vZGU9aGU7Y29uc3QgdWU9U3ltYm9sKCk7dC4kc2V0SWQ9dWU7Y29uc3QgZGU9U3ltYm9sKCk7dC4kc2V0U2V0QXR0cmlidXRlcz1kZTtjb25zdCBmZT1TeW1ib2woKTt0LiRzZXRWYWx1ZT1mZTtjb25zdCBnZT1TeW1ib2woKTt0LiR0YWJJbmRleD1nZTtjb25zdCBwZT1TeW1ib2woKTt0LiR0ZXh0PXBlO2NvbnN0IG1lPVN5bWJvbCgpO3QuJHRvUGFnZXM9bWU7Y29uc3QgYmU9U3ltYm9sKCk7dC4kdG9IVE1MPWJlO2NvbnN0IHllPVN5bWJvbCgpO3QuJHRvU3RyaW5nPXllO2NvbnN0IHdlPVN5bWJvbCgpO3QuJHRvU3R5bGU9d2U7Y29uc3QgU2U9U3ltYm9sKCJ1aWQiKTt0LiR1aWQ9U2V9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQmluZGVyPXZvaWQgMDthKDEzOSk7dmFyIHI9YSgyMjgpLG49YSgyMzApLGk9YSgyNDEpLHM9YSgyNDApLG89YSgyMzQpLGM9YSgxNDQpO2NvbnN0IGw9by5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBuLlRleHQoe30pO3Rbci4kY29udGVudF09ZTtyZXR1cm4gdH10LkJpbmRlcj1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO3RoaXMuZGF0YT1lLmRhdGFzZXRzPy5kYXRhfHxuZXcgcy5YbWxPYmplY3Qoby5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtyLiRnZXRDaGlsZHJlbl0oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbci4kY2xvbmVdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtyLiRkYXRhXT10O2lmKGVbci4kaGFzU2V0dGFibGVWYWx1ZV0oKSlpZih0W3IuJGlzRGF0YVZhbHVlXSgpKXtjb25zdCBhPXRbci4kZ2V0RGF0YVZhbHVlXSgpO2Vbci4kc2V0VmFsdWVdKGNyZWF0ZVRleHQoYSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRmllbGQmJiJtdWx0aVNlbGVjdCI9PT1lLnVpPy5jaG9pY2VMaXN0Py5vcGVuKXtjb25zdCBhPXRbci4kZ2V0Q2hpbGRyZW5dKCkubWFwKChlPT5lW3IuJGNvbnRlbnRdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtyLiRzZXRWYWx1ZV0oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJigwLGMud2FybikoIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbci4kaXNEYXRhVmFsdWVdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6KDAsYy53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxuKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxzO2ZvcihsZXQgbj0wO248MztuKyspe2k9YVtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSwhMSwhMCk7Zm9yKDs7KXtzPWkubmV4dCgpLnZhbHVlO2lmKCFzKWJyZWFrO2lmKHQ9PT1zW3IuJGlzRGF0YVZhbHVlXSgpKXJldHVybiBzfWlmKGFbci4kbmFtZXNwYWNlSWRdPT09by5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbci4kbm9kZU5hbWVdKWJyZWFrO2E9YVtyLiRnZXRQYXJlbnRdKCl9aWYoIW4pcmV0dXJuIG51bGw7aT10aGlzLmRhdGFbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITAsITEpO3M9aS5uZXh0KCkudmFsdWU7aWYocylyZXR1cm4gcztpPXRoaXMuZGF0YVtyLiRnZXRBdHRyaWJ1dGVJdF0oZSwhMCk7cz1pLm5leHQoKS52YWx1ZTtyZXR1cm4gcz8uW3IuJGlzRGF0YVZhbHVlXSgpP3M6bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjphLHRhcmdldDpvLGNvbm5lY3Rpb246bH1vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihsKWNvbnRpbnVlO2lmKCFhKWNvbnRpbnVlO2NvbnN0IGg9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxhLCExLCExKTtpZighaCl7KDAsYy53YXJuKShgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7YX0uYCk7Y29udGludWV9Y29uc3RbdV09aDtpZighdVtyLiRpc0Rlc2NlbmRlbnRdKHRoaXMuZGF0YSkpeygwLGMud2FybikoIlhGQSAtIEludmFsaWQgbm9kZTogbXVzdCBiZSBhIGRhdGEgbm9kZS4iKTtjb250aW51ZX1jb25zdCBkPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LGUsbywhMSwhMSk7aWYoIWQpeygwLGMud2FybikoYFhGQSAtIEludmFsaWQgdGFyZ2V0OiAke299LmApO2NvbnRpbnVlfWNvbnN0W2ZdPWQ7aWYoIWZbci4kaXNEZXNjZW5kZW50XShlKSl7KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IG11c3QgYmUgYSBwcm9wZXJ0eSBvciBzdWJwcm9wZXJ0eS4iKTtjb250aW51ZX1jb25zdCBnPWZbci4kZ2V0UGFyZW50XSgpO2lmKGYgaW5zdGFuY2VvZiBuLlNldFByb3BlcnR5fHxnIGluc3RhbmNlb2Ygbi5TZXRQcm9wZXJ0eSl7KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIHNldFByb3BlcnR5IG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1pZihmIGluc3RhbmNlb2Ygbi5CaW5kSXRlbXN8fGcgaW5zdGFuY2VvZiBuLkJpbmRJdGVtcyl7KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIGJpbmRJdGVtcyBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9Y29uc3QgcD11W3IuJHRleHRdKCksbT1mW3IuJG5vZGVOYW1lXTtpZihmIGluc3RhbmNlb2Ygcy5YRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW21dPXA7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YoZykuY29uc3RydWN0b3IsW2VdKTtnW21dPXRbbV19ZWxzZSBpZihmLmhhc093blByb3BlcnR5KHIuJGNvbnRlbnQpKXtmW3IuJGRhdGFdPXU7ZltyLiRjb250ZW50XT1wO2Zbci4kZmluYWxpemVdKCl9ZWxzZSgwLGMud2FybikoIlhGQSAtIEludmFsaWQgbm9kZSB0byB1c2UgaW4gc2V0UHJvcGVydHkiKX19X2JpbmRJdGVtcyhlLHQpe2lmKCFlLmhhc093blByb3BlcnR5KCJpdGVtcyIpfHwhZS5oYXNPd25Qcm9wZXJ0eSgiYmluZEl0ZW1zIil8fGUuYmluZEl0ZW1zLmlzRW1wdHkoKSlyZXR1cm47Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcy5jaGlsZHJlbillW3IuJHJlbW92ZUNoaWxkXSh0KTtlLml0ZW1zLmNsZWFyKCk7Y29uc3QgYT1uZXcgbi5JdGVtcyh7fSkscz1uZXcgbi5JdGVtcyh7fSk7ZVtyLiRhcHBlbmRDaGlsZF0oYSk7ZS5pdGVtcy5wdXNoKGEpO2Vbci4kYXBwZW5kQ2hpbGRdKHMpO2UuaXRlbXMucHVzaChzKTtmb3IoY29uc3R7cmVmOm4sbGFiZWxSZWY6byx2YWx1ZVJlZjpsLGNvbm5lY3Rpb246aH1vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYoaCljb250aW51ZTtpZighbiljb250aW51ZTtjb25zdCBlPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsbiwhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFtyLiRpc0Rlc2NlbmRlbnRdKHRoaXMuZGF0YXNldHMpKXsoMCxjLndhcm4pKGBYRkEgLSBJbnZhbGlkIHJlZiAoJHtufSk6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC5gKTtjb250aW51ZX1jb25zdCBlPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsbywhMCwhMSk7aWYoIWUpeygwLGMud2FybikoYFhGQSAtIEludmFsaWQgbGFiZWw6ICR7b30uYCk7Y29udGludWV9Y29uc3RbaF09ZTtpZighaFtyLiRpc0Rlc2NlbmRlbnRdKHRoaXMuZGF0YXNldHMpKXsoMCxjLndhcm4pKCJYRkEgLSBJbnZhbGlkIGxhYmVsOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgdT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGwsITAsITEpO2lmKCF1KXsoMCxjLndhcm4pKGBYRkEgLSBJbnZhbGlkIHZhbHVlOiAke2x9LmApO2NvbnRpbnVlfWNvbnN0W2RdPXU7aWYoIWRbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGY9Y3JlYXRlVGV4dChoW3IuJHRleHRdKCkpLGc9Y3JlYXRlVGV4dChkW3IuJHRleHRdKCkpO2Fbci4kYXBwZW5kQ2hpbGRdKGYpO2EudGV4dC5wdXNoKGYpO3Nbci4kYXBwZW5kQ2hpbGRdKGcpO3MudGV4dC5wdXNoKGcpfWVsc2UoMCxjLndhcm4pKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtufS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsYSl7bGV0IG47aWYodC5sZW5ndGg+MSl7bj1lW3IuJGNsb25lXSgpO25bci4kcmVtb3ZlQ2hpbGRdKG4ub2NjdXIpO24ub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGEpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IGk9ZVtyLiRnZXRQYXJlbnRdKCkscz1lW3IuJG5vZGVOYW1lXSxvPWlbci4kaW5kZXhPZl0oZSk7Zm9yKGxldCBlPTEsYz10Lmxlbmd0aDtlPGM7ZSsrKXtjb25zdCBjPXRbZV0sbD1uW3IuJGNsb25lXSgpO2lbc10ucHVzaChsKTtpW3IuJGluc2VydEF0XShvK2UsbCk7dGhpcy5fYmluZFZhbHVlKGwsYyxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGwsYyk7dGhpcy5fYmluZEl0ZW1zKGwsYyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGE9ZVtyLiRnZXRQYXJlbnRdKCksbj1lW3IuJG5vZGVOYW1lXTtpZighKGFbbl1pbnN0YW5jZW9mIHMuWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgaTtpPWUubmFtZT9hW25dLmNoaWxkcmVuLmZpbHRlcigodD0+dC5uYW1lPT09ZS5uYW1lKSkubGVuZ3RoOmFbbl0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IG89YVtyLiRpbmRleE9mXShlKSsxLGM9dC5pbml0aWFsLWk7aWYoYyl7Y29uc3QgdD1lW3IuJGNsb25lXSgpO3Rbci4kcmVtb3ZlQ2hpbGRdKHQub2NjdXIpO3Qub2NjdXI9bnVsbDthW25dLnB1c2godCk7YVtyLiRpbnNlcnRBdF0obyx0KTtmb3IobGV0IGU9MTtlPGM7ZSsrKXtjb25zdCBpPXRbci4kY2xvbmVdKCk7YVtuXS5wdXNoKGkpO2Fbci4kaW5zZXJ0QXRdKG8rZSxpKX19fV9nZXRPY2N1ckluZm8oZSl7Y29uc3R7bmFtZTp0LG9jY3VyOmF9PWU7aWYoIWF8fCF0KXJldHVyblsxLDFdO2NvbnN0IHI9LTE9PT1hLm1heD8xLzA6YS5tYXg7cmV0dXJuW2EubWluLHJdfV9zZXRBbmRCaW5kKGUsdCl7dGhpcy5fc2V0UHJvcGVydGllcyhlLHQpO3RoaXMuX2JpbmRJdGVtcyhlLHQpO3RoaXMuX2JpbmRFbGVtZW50KGUsdCl9X2JpbmRFbGVtZW50KGUsdCl7Y29uc3QgYT1bXTt0aGlzLl9jcmVhdGVPY2N1cnJlbmNlcyhlKTtmb3IoY29uc3QgbiBvZiBlW3IuJGdldENoaWxkcmVuXSgpKXtpZihuW3IuJGRhdGFdKWNvbnRpbnVlO2lmKHZvaWQgMD09PXRoaXMuX21lcmdlTW9kZSYmInN1YmZvcm0iPT09bltyLiRub2RlTmFtZV0pe3RoaXMuX21lcmdlTW9kZT0iY29uc3VtZURhdGEiPT09bi5tZXJnZU1vZGU7Y29uc3QgZT10W3IuJGdldENoaWxkcmVuXSgpO2lmKGUubGVuZ3RoPjApdGhpcy5fYmluZE9jY3VycmVuY2VzKG4sW2VbMF1dLG51bGwpO2Vsc2UgaWYodGhpcy5lbXB0eU1lcmdlKXtjb25zdCBlPXRbci4kbmFtZXNwYWNlSWRdPT09bD8tMTp0W3IuJG5hbWVzcGFjZUlkXSxhPW5bci4kZGF0YV09bmV3IHMuWG1sT2JqZWN0KGUsbi5uYW1lfHwicm9vdCIpO3Rbci4kYXBwZW5kQ2hpbGRdKGEpO3RoaXMuX2JpbmRFbGVtZW50KG4sYSl9Y29udGludWV9aWYoIW5bci4kaXNCaW5kYWJsZV0oKSljb250aW51ZTtsZXQgZT0hMSxvPW51bGwsaD1udWxsLHU9bnVsbDtpZihuLmJpbmQpe3N3aXRjaChuLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIW4uYmluZC5yZWYpeygwLGMud2FybikoYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7bltyLiRub2RlTmFtZV19LmApO3RoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZX1oPW4uYmluZC5yZWZ9bi5iaW5kLnBpY3R1cmUmJihvPW4uYmluZC5waWN0dXJlW3IuJGNvbnRlbnRdKX1jb25zdFtkLGZdPXRoaXMuX2dldE9jY3VySW5mbyhuKTtpZihoKXt1PSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsaCwhMCwhMSk7aWYobnVsbD09PXUpe3U9KDAsaS5jcmVhdGVEYXRhTm9kZSkodGhpcy5kYXRhLHQsaCk7aWYoIXUpY29udGludWU7dGhpcy5faXNDb25zdW1lRGF0YSgpJiYodVtyLiRjb25zdW1lZF09ITApO3RoaXMuX3NldEFuZEJpbmQobix1KTtjb250aW51ZX10aGlzLl9pc0NvbnN1bWVEYXRhKCkmJih1PXUuZmlsdGVyKChlPT4hZVtyLiRjb25zdW1lZF0pKSk7dS5sZW5ndGg+Zj91PXUuc2xpY2UoMCxmKTowPT09dS5sZW5ndGgmJih1PW51bGwpO3UmJnRoaXMuX2lzQ29uc3VtZURhdGEoKSYmdS5mb3JFYWNoKChlPT57ZVtyLiRjb25zdW1lZF09ITB9KSl9ZWxzZXtpZighbi5uYW1lKXt0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWV9aWYodGhpcy5faXNDb25zdW1lRGF0YSgpKXtjb25zdCBhPVtdO2Zvcig7YS5sZW5ndGg8Zjspe2NvbnN0IGk9dGhpcy5fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUobi5uYW1lLG5bci4kaGFzU2V0dGFibGVWYWx1ZV0oKSx0LGUpO2lmKCFpKWJyZWFrO2lbci4kY29uc3VtZWRdPSEwO2EucHVzaChpKX11PWEubGVuZ3RoPjA/YTpudWxsfWVsc2V7dT10W3IuJGdldFJlYWxDaGlsZHJlbkJ5TmFtZUl0XShuLm5hbWUsITEsdGhpcy5lbXB0eU1lcmdlKS5uZXh0KCkudmFsdWU7aWYoIXUpe2lmKDA9PT1kKXthLnB1c2gobik7Y29udGludWV9Y29uc3QgZT10W3IuJG5hbWVzcGFjZUlkXT09PWw/LTE6dFtyLiRuYW1lc3BhY2VJZF07dT1uW3IuJGRhdGFdPW5ldyBzLlhtbE9iamVjdChlLG4ubmFtZSk7dGhpcy5lbXB0eU1lcmdlJiYodVtyLiRjb25zdW1lZF09ITApO3Rbci4kYXBwZW5kQ2hpbGRdKHUpO3RoaXMuX3NldEFuZEJpbmQobix1KTtjb250aW51ZX10aGlzLmVtcHR5TWVyZ2UmJih1W3IuJGNvbnN1bWVkXT0hMCk7dT1bdV19fXU/dGhpcy5fYmluZE9jY3VycmVuY2VzKG4sdSxvKTpkPjA/dGhpcy5fc2V0QW5kQmluZChuLHQpOmEucHVzaChuKX1hLmZvckVhY2goKGU9PmVbci4kZ2V0UGFyZW50XSgpW3IuJHJlbW92ZUNoaWxkXShlKSkpfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVmFsdWU9dC5UZXh0PXQuVGVtcGxhdGVOYW1lc3BhY2U9dC5UZW1wbGF0ZT10LlNldFByb3BlcnR5PXQuSXRlbXM9dC5GaWVsZD10LkJpbmRJdGVtcz12b2lkIDA7YSgxMTYpO2EoMTI2KTthKDEyOCk7YSgxMzEpO2EoMTMzKTthKDEzNSk7YSgxMzcpO2EoMTM5KTthKDIzMSk7YSgxNDUpO2EoMTQ3KTthKDE0OCk7dmFyIHI9YSgyMjgpLG49YSgyMzQpLGk9YSgyMzUpLHM9YSgyMzYpLG89YSgyNDApLGM9YSgyMzcpLGw9YSgxNDQpLGg9YSgyMzgpLHU9YSgxNDkpLGQ9YSgyNDEpO2NvbnN0IGY9bi5OYW1lc3BhY2VJZHMudGVtcGxhdGUuaWQsZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHA9L15IKFxkKykkLyxtPW5ldyBTZXQoWyJpbWFnZS9naWYiLCJpbWFnZS9qcGVnIiwiaW1hZ2UvanBnIiwiaW1hZ2UvcGpwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9hcG5nIiwiaW1hZ2UveC1wbmciLCJpbWFnZS9ibXAiLCJpbWFnZS94LW1zLWJtcCIsImltYWdlL3RpZmYiLCJpbWFnZS90aWYiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSksYj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3IuJGdldEV4dHJhXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtyLiRhcHBlbmRDaGlsZF0odCk7ZS52YWx1ZT10fWUudmFsdWVbci4kc2V0VmFsdWVdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbci4kZ2V0Q2hpbGRyZW5dKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtyLiR0YWJJbmRleF09ZVtyLiRnZXRQYXJlbnRdKClbci4kdGFiSW5kZXhdO3JldHVybn1pZihlW3IuJHRhYkluZGV4XSlyZXR1cm47bGV0IHQ9bnVsbDtmb3IoY29uc3QgYSBvZiBlLnRyYXZlcnNhbFtyLiRnZXRDaGlsZHJlbl0oKSlpZigibmV4dCI9PT1hLm9wZXJhdGlvbil7dD1hO2JyZWFrfWlmKCF0fHwhdC5yZWYpe2Vbci4kdGFiSW5kZXhdPWVbci4kZ2V0UGFyZW50XSgpW3IuJHRhYkluZGV4XTtyZXR1cm59Y29uc3QgYT1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTtlW3IuJHRhYkluZGV4XT0rK2Fbci4kdGFiSW5kZXhdO2NvbnN0IG49YVtyLiRzZWFyY2hOb2RlXSh0LnJlZixlKTtpZighbilyZXR1cm47ZT1uWzBdfX1mdW5jdGlvbiBhcHBseUFzc2lzdChlLHQpe2NvbnN0IGE9ZS5hc3Npc3Q7aWYoYSl7Y29uc3QgZT1hW3IuJHRvSFRNTF0oKTtlJiYodC50aXRsZT1lKTtjb25zdCBuPWEucm9sZS5tYXRjaChwKTtpZihuKXtjb25zdCBlPSJoZWFkaW5nIixhPW5bMV07dC5yb2xlPWU7dFsiYXJpYS1sZXZlbCJdPWF9fWlmKCJ0YWJsZSI9PT1lLmxheW91dCl0LnJvbGU9InRhYmxlIjtlbHNlIGlmKCJyb3ciPT09ZS5sYXlvdXQpdC5yb2xlPSJyb3ciO2Vsc2V7Y29uc3QgYT1lW3IuJGdldFBhcmVudF0oKTsicm93Ij09PWEubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1hLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tyLiRjb250ZW50XT90LnNwZWFrW3IuJGNvbnRlbnRdOnQudG9vbFRpcD90LnRvb2xUaXBbci4kY29udGVudF06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W3tuYW1lOiJzcGFuIixhdHRyaWJ1dGVzOntzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSx2YWx1ZTplfV19KX1mdW5jdGlvbiBzZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2lmKG51bGw9PT10W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtyLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTt0W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT09PWUmJih0W3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITEpfWZ1bmN0aW9uIGhhbmRsZUJyZWFrKGUpe2lmKGVbci4kZXh0cmFdKXJldHVybiExO2Vbci4kZXh0cmFdPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKXJldHVybiExO2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7bGV0IGE9bnVsbDtpZihlLnRhcmdldCl7YT10W3IuJHNlYXJjaE5vZGVdKGUudGFyZ2V0LGVbci4kZ2V0UGFyZW50XSgpKTtpZighYSlyZXR1cm4hMTthPWFbMF19Y29uc3R7Y3VycmVudFBhZ2VBcmVhOm4sY3VycmVudENvbnRlbnRBcmVhOml9PXRbci4kZXh0cmFdO2lmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2EgaW5zdGFuY2VvZiBQYWdlQXJlYXx8KGE9bnVsbCk7aWYoZS5zdGFydE5ldyl7ZVtyLiRleHRyYV0udGFyZ2V0PWF8fG47cmV0dXJuITB9aWYoYSYmYSE9PW4pe2Vbci4kZXh0cmFdLnRhcmdldD1hO3JldHVybiEwfXJldHVybiExfWEgaW5zdGFuY2VvZiBDb250ZW50QXJlYXx8KGE9bnVsbCk7Y29uc3Qgcz1hJiZhW3IuJGdldFBhcmVudF0oKTtsZXQgbyxjPXM7aWYoZS5zdGFydE5ldylpZihhKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YoaSkscj1lLmluZGV4T2YoYSk7LTEhPT10JiZ0PHImJihjPW51bGwpO289ci0xfWVsc2Ugbz1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSk7ZWxzZXtpZighYXx8YT09PWkpcmV0dXJuITE7bz1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSktMTtjPXM9PT1uP251bGw6c31lW3IuJGV4dHJhXS50YXJnZXQ9YztlW3IuJGV4dHJhXS5pbmRleD1vO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxhKXtjb25zdCBuPWVbci4kZ2V0VGVtcGxhdGVSb290XSgpLGk9bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlLHM9dFtyLiRnZXRTdWJmb3JtUGFyZW50XTt0W3IuJGdldFN1YmZvcm1QYXJlbnRdPSgpPT5lO25bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDtjb25zdCBvPXRbci4kdG9IVE1MXShhKTtlW3IuJGFkZEhUTUxdKG8uaHRtbCxvLmJib3gpO25bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT1pO3Rbci4kZ2V0U3ViZm9ybVBhcmVudF09c31jbGFzcyBBcHBlYXJhbmNlRmlsdGVyIGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYXBwZWFyYW5jZUZpbHRlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQXJjIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9KDAsYy5nZXRGbG9hdCkoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPSgwLGMuZ2V0RmxvYXQpKHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtyLiR0b0hUTUxdKCl7Y29uc3QgZT10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgbjtjb25zdCBpPXt4bWxuczpnLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpbj17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6ZyxjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07bj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6ZyxkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtyfSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IG89e25hbWU6InN2ZyIsY2hpbGRyZW46W25dLGF0dHJpYnV0ZXM6aX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W29dfSk7by5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKG8pfX1jbGFzcyBBcmVhIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD0oMCxjLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxjLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgby5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRhZGRIVE1MXShlLHQpe2NvbnN0W2EsbixpLHNdPXQ7dGhpc1tyLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0ud2lkdGgsYStpKTt0aGlzW3IuJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0uaGVpZ2h0LG4rcyk7dGhpc1tyLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tyLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmYS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBuPVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjpuLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3QgaT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3Mpe2lmKGkuaXNCcmVhaygpKXJldHVybiBpO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gYy5IVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tyLiRleHRyYV0ud2lkdGgpO3QuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW3IuJGV4dHJhXS5oZWlnaHQpO2NvbnN0IG89e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGw9W3RoaXMueCx0aGlzLnksdGhpc1tyLiRleHRyYV0ud2lkdGgsdGhpc1tyLiRleHRyYV0uaGVpZ2h0XTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKG8sbCl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bci4kdG9IVE1MXSgpe3JldHVybiB0aGlzLnRvb2xUaXA/LltyLiRjb250ZW50XXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz0oMCxjLmdldEtleXdvcmQpKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz0oMCxjLmdldFJhdGlvKShlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89KDAsYy5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUJpbmRJdGVtcztjbGFzcyBCb29rZW5kIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyBvLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbci4kY29udGVudF0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJvcmRlciIsITApO3RoaXMuYnJlYWs9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLGMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgby5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiRnZXRFeHRyYV0oKXtpZighdGhpc1tyLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGE9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXthWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2FbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDthWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2FbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbci4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6YSxlZGdlczplfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvU3R5bGVdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tyLiRnZXRFeHRyYV0oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW3IuJHRvU3R5bGVdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oYSx0aGlzLm1hcmdpbltyLiR0b1N0eWxlXSgpKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlJiZPYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpO2lmKHRoaXMuY29ybmVyLmNoaWxkcmVuLnNvbWUoKGU9PjAhPT1lLnJhZGl1cykpKXtjb25zdCBlPXRoaXMuY29ybmVyLmNoaWxkcmVuLm1hcCgoZT0+ZVtyLiR0b1N0eWxlXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBhPWUubGVuZ3RoO2E8NDthKyspZS5wdXNoKHQpfWEuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjphLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmEuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6YS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1hLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2EuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGF9fWNsYXNzIEJyZWFrIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYnJlYWsiLCEwKTt0aGlzLmFmdGVyPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFmdGVyLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5hZnRlclRhcmdldD1lLmFmdGVyVGFyZ2V0fHwiIjt0aGlzLmJlZm9yZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5iZWZvcmUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmJlZm9yZVRhcmdldD1lLmJlZm9yZVRhcmdldHx8IiI7dGhpcy5ib29rZW5kTGVhZGVyPWUuYm9va2VuZExlYWRlcnx8IiI7dGhpcy5ib29rZW5kVHJhaWxlcj1lLmJvb2tlbmRUcmFpbGVyfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcmZsb3dMZWFkZXI9ZS5vdmVyZmxvd0xlYWRlcnx8IiI7dGhpcy5vdmVyZmxvd1RhcmdldD1lLm92ZXJmbG93VGFyZ2V0fHwiIjt0aGlzLm92ZXJmbG93VHJhaWxlcj1lLm92ZXJmbG93VHJhaWxlcnx8IiI7dGhpcy5zdGFydE5ldz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQnJlYWtBZnRlciBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJyZWFrQWZ0ZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBCcmVha0JlZm9yZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bci4kdG9IVE1MXShlKXt0aGlzW3IuJGV4dHJhXT17fTtyZXR1cm4gYy5IVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJ1dHRvbiIsITApO3RoaXMuaGlnaGxpZ2h0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhpZ2hsaWdodCxbImludmVydGVkIiwibm9uZSIsIm91dGxpbmUiLCJwdXNoIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT17bmFtZToiYnV0dG9uIixhdHRyaWJ1dGVzOntpZDp0aGlzW3IuJHVpZF0sY2xhc3M6WyJ4ZmFCdXR0b24iXSxzdHlsZTp7fX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mIHQuZXZlbnQuY2hpbGRyZW4pe2lmKCJjbGljayIhPT1lLmFjdGl2aXR5fHwhZS5zY3JpcHQpY29udGludWU7Y29uc3QgdD0oMCx1LnJlY292ZXJKc1VSTCkoZS5zY3JpcHRbci4kY29udGVudF0pO2lmKCF0KWNvbnRpbnVlO2NvbnN0IG49KDAscy5maXhVUkwpKHQudXJsKTtuJiZhLmNoaWxkcmVuLnB1c2goe25hbWU6ImEiLGF0dHJpYnV0ZXM6e2lkOiJsaW5rIit0aGlzW3IuJHVpZF0saHJlZjpuLG5ld1dpbmRvdzp0Lm5ld1dpbmRvdyxjbGFzczpbInhmYUxpbmsiXSxzdHlsZTp7fX0sY2hpbGRyZW46W119KX1yZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3MoYSl9fWNsYXNzIENhbGN1bGF0ZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImNhbGN1bGF0ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vdmVycmlkZSxbImRpc2FibGVkIiwiZXJyb3IiLCJpZ25vcmUiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIENhcHRpb24gZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKCgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJGdldEV4dHJhXShlKXtpZighdGhpc1tyLiRleHRyYV0pe2xldHt3aWR0aDp0LGhlaWdodDphfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphPXRoaXMucmVzZXJ2ZTw9MD9hOnRoaXMucmVzZXJ2ZX10aGlzW3IuJGV4dHJhXT0oMCxzLmxheW91dE5vZGUpKHRoaXMse3dpZHRoOnQsaGVpZ2h0OmF9KX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvSFRNTF0oZSl7aWYoIXRoaXMudmFsdWUpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTt0aGlzW3IuJHB1c2hQYXJhXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw7aWYoIXQpe3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZfWNvbnN0IGE9dGhpcy5yZXNlcnZlO2lmKHRoaXMucmVzZXJ2ZTw9MCl7Y29uc3R7dzp0LGg6YX09dGhpc1tyLiRnZXRFeHRyYV0oZSk7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0aGlzLnJlc2VydmU9dDticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT1hfX1jb25zdCBuPVtdOyJzdHJpbmciPT10eXBlb2YgdD9uLnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6bi5wdXNoKHQpO2NvbnN0IGk9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwibWFyZ2luIiwidmlzaWJpbGl0eSIpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0Ijp0aGlzLnJlc2VydmU+MCYmKGkud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmVzZXJ2ZSkpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPjAmJihpLmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSl9KDAscy5zZXRQYXJhKSh0aGlzLG51bGwsdCk7dGhpc1tyLiRwb3BQYXJhXSgpO3RoaXMucmVzZXJ2ZT1hO3JldHVybiBjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTppLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjpufSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiY2VydGlmaWNhdGUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ2VydGlmaWNhdGVzIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiY2VydGlmaWNhdGVzIiwhMCk7dGhpcy5jcmVkZW50aWFsU2VydmVyUG9saWN5PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3ksWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51cmw9ZS51cmx8fCIiO3RoaXMudXJsUG9saWN5PWUudXJsUG9saWN5fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5pc3N1ZXJzPW51bGw7dGhpcy5rZXlVc2FnZT1udWxsO3RoaXMub2lkcz1udWxsO3RoaXMuc2lnbmluZz1udWxsO3RoaXMuc3ViamVjdEROcz1udWxsfX1jbGFzcyBDaGVja0J1dHRvbiBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT0oMCxjLmdldE1lYXN1cmVtZW50KShlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKCJtYXJnaW4iKSxhPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNpemUpO3Qud2lkdGg9dC5oZWlnaHQ9YTtsZXQgbixpLG87Y29uc3QgbD10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksaD1sLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbC5pdGVtcy5jaGlsZHJlblswXVtyLiR0b0hUTUxdKCkuaHRtbHx8W10sdT17b246KHZvaWQgMCE9PWhbMF0/aFswXToib24iKS50b1N0cmluZygpLG9mZjoodm9pZCAwIT09aFsxXT9oWzFdOiJvZmYiKS50b1N0cmluZygpfSxkPShsLnZhbHVlPy5bci4kdGV4dF0oKXx8Im9mZiIpPT09dS5vbnx8dm9pZCAwLGY9bFtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtyLiR1aWRdO2xldCBwO2lmKGYgaW5zdGFuY2VvZiBFeGNsR3JvdXApe289ZltyLiR1aWRdO249InJhZGlvIjtpPSJ4ZmFSYWRpbyI7cD1mW3IuJGRhdGFdPy5bci4kdWlkXXx8ZltyLiR1aWRdfWVsc2V7bj0iY2hlY2tib3giO2k9InhmYUNoZWNrYm94IjtwPWxbci4kZGF0YV0/LltyLiR1aWRdfHxsW3IuJHVpZF19Y29uc3QgbT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltpXSxzdHlsZTp0LGZpZWxkSWQ6ZyxkYXRhSWQ6cCx0eXBlOm4sY2hlY2tlZDpkLHhmYU9uOnUub24seGZhT2ZmOnUub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobCksImFyaWEtcmVxdWlyZWQiOiExfX07byYmKG0uYXR0cmlidXRlcy5uYW1lPW8pO2lmKGlzUmVxdWlyZWQobCkpe20uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO20uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlttXX0pfX1jbGFzcyBDaG9pY2VMaXN0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxuPXtmb250U2l6ZTpgY2FsYygke2EuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LGk9W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbz1lLmNoaWxkcmVuW3RdW3IuJHRvSFRNTF0oKS5odG1sLGM9ZS5jaGlsZHJlbltzXVtyLiR0b0hUTUxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBoPWEudmFsdWU/LltyLiR0ZXh0XSgpfHwiIjtmb3IobGV0IGU9MCx0PW8ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9e25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7dmFsdWU6Y1tlXXx8b1tlXSxzdHlsZTpufSx2YWx1ZTpvW2VdfTtjW2VdPT09aCYmKHQuYXR0cmlidXRlcy5zZWxlY3RlZD1sPSEwKTtpLnB1c2godCl9bHx8aS5zcGxpY2UoMCwwLHtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e2hpZGRlbjohMCxzZWxlY3RlZDohMH0sdmFsdWU6IiAifSl9Y29uc3Qgbz17Y2xhc3M6WyJ4ZmFTZWxlY3QiXSxmaWVsZElkOmFbci4kdWlkXSxkYXRhSWQ6YVtyLiRkYXRhXT8uW3IuJHVpZF18fGFbci4kdWlkXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGEpKXtvWyJhcmlhLXJlcXVpcmVkIl09ITA7by5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYoby5tdWx0aXBsZT0hMCk7cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbe25hbWU6InNlbGVjdCIsY2hpbGRyZW46aSxhdHRyaWJ1dGVzOm99XX0pfX1jbGFzcyBDb2xvciBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/KDAsYy5nZXRDb2xvcikoZS52YWx1ZSk6IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kaGFzU2V0dGFibGVWYWx1ZV0oKXtyZXR1cm4hMX1bci4kdG9TdHlsZV0oKXtyZXR1cm4gdGhpcy52YWx1ZT9sLlV0aWwubWFrZUhleENvbG9yKHRoaXMudmFsdWUucix0aGlzLnZhbHVlLmcsdGhpcy52YWx1ZS5iKTpudWxsfX1jbGFzcyBDb21iIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjb25uZWN0IiwhMCk7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2FnZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS51c2FnZSxbImV4cG9ydEFuZEltcG9ydCIsImV4cG9ydE9ubHkiLCJpbXBvcnRPbmx5Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQ29udGVudEFyZWEgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjb250ZW50QXJlYSIsITApO3RoaXMuaD0oMCxjLmdldE1lYXN1cmVtZW50KShlLmgpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxldmFudD0oMCxjLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUudyk7dGhpcy54PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0Iik7dGhpcy55PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0Iik7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PXtsZWZ0OigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLngpLHRvcDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy55KSx3aWR0aDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy53KSxoZWlnaHQ6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuaCl9LGE9WyJ4ZmFDb250ZW50YXJlYSJdOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZhLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOntzdHlsZTp0LGNsYXNzOmEsaWQ6dGhpc1tyLiR1aWRdfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjb3JuZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW52ZXJ0ZWQ9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmludmVydGVkLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5qb2luPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmpvaW4sWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmFkaXVzPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUucmFkaXVzKTt0aGlzLnN0cm9rZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oKXtjb25zdCBlPSgwLHMudG9TdHlsZSkodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBvLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGF0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbci4kY29udGVudF0udHJpbSgpO3RoaXNbci4kY29udGVudF09ZT9uZXcgRGF0ZShlKTpudWxsfVtyLiR0b0hUTUxdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lIGV4dGVuZHMgby5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImRhdGVUaW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWVFZGl0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxuPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0/LltyLiR1aWRdfHxhW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7bi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyBvLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgby5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oPygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyBvLlhGQU9iamVjdEFycmF5fVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6byxpc0Jyb2tlbjpsfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGMuSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1ufW8mJiIiPT09dGhpcy5oJiYodGhpcy5oPW8pO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBjLkhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGg9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGgpO2lmKGgubWFyZ2luKXtoLnBhZGRpbmc9aC5tYXJnaW47ZGVsZXRlIGgubWFyZ2lufWNvbnN0IHU9WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZ1LnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmdS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBkPXtzdHlsZTpoLGlkOnRoaXNbci4kdWlkXSxjbGFzczp1fTt0aGlzLm5hbWUmJihkLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09cCl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBjLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZyl9Zi5jaGlsZHJlbi5wdXNoKHApOygwLHMuc2V0UGFyYSkodGhpcyxoLHApO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLGYpLGcpfX1jbGFzcyBFZGdlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZWRnZSIsITApO3RoaXMuY2FwPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz0oMCxjLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyBvLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyBvLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgby5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W3IuJG9uQ2hpbGRdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtyLiRuYW1lc3BhY2VJZF09PT1uLk5hbWVzcGFjZUlkcy54aHRtbC5pZCl7dGhpc1tyLiRjb250ZW50XT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9cmV0dXJuITF9W3IuJHRvSFRNTF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKTpjLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBvLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3IuJGFwcGVuZENoaWxkXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtyLiRzZXRWYWx1ZV0oZSl9fVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bci4kaXNTcGxpdHRhYmxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFlW3IuJGlzU3BsaXR0YWJsZV0oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLGkuZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3IuJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLGEuY2xhc3MpO3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3IuJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBuPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gYy5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgbz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tyLiRleHRyYV0uY29sdW1uV2lkdGhzPWU7dGhpc1tyLiRleHRyYV0uY3VycmVudENvbHVtbj0wfX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bDthLmNsYXNzPWg7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6byxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGV9aWYoZCYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtufHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1mKXtufHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIGMuSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBnPTAscD0wO2lmKHRoaXMubWFyZ2luKXtnPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3A9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbT1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKTsiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx5KX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWluSD0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpO3RoaXMubWluVz0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD0oMCxjLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz8oMCxjLmdldE1lYXN1cmVtZW50KShlLncpOiIiO3RoaXMueD0oMCxjLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxjLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyBvLlhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBvLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtyLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bci4kZXh0cmFdO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW3IuJHRvSFRNTF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBvPTAsbD0wO2lmKHRoaXMubWFyZ2luKXtvPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2w9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHU9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxpPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPWk9dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09KDAscy5sYXlvdXROb2RlKSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7aT1hfWVsc2UgaT0oMCxoLmdldE1ldHJpY3MpKHRoaXMuZm9udCwhMCkubGluZU5vR2FwfXU9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3IuJGdldEV4dHJhXSgpKTtuKz11Lnc7aSs9dS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6byxpc0Jyb2tlbjpsfT10aGlzLmNhcHRpb25bci4kZ2V0RXh0cmFdKGUpO2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGMuSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPW87c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1pfX1lbHNle3Q9bjthPWl9aWYodCYmIiI9PT10aGlzLncpe3QrPW87dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1sO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tyLiRwb3BQYXJhXSgpOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9bjt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGMuSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsZCk7Y29uc3QgZj1bInhmYUZpZWxkIl07dGhpcy5mb250JiZmLnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpkLGlkOnRoaXNbci4kdWlkXSxjbGFzczpmfTtpZihkLm1hcmdpbil7ZC5wYWRkaW5nPWQubWFyZ2luO2RlbGV0ZSBkLm1hcmdpbn0oMCxzLnNldEFjY2VzcykodGhpcyxmKTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBwPVtdLG09e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOnB9O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgYj10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltyLiR0b1N0eWxlXSgpOm51bGwseT0oMCxzLmNvbXB1dGVCYm94KSh0aGlzLG0sZSksdz10aGlzLnVpW3IuJHRvSFRNTF0oKS5odG1sO2lmKCF3KXtPYmplY3QuYXNzaWduKGQsYik7cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX10aGlzW3IuJHRhYkluZGV4XSYmKHcuY2hpbGRyZW4/LlswXT93LmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tyLiR0YWJJbmRleF06dy5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbci4kdGFiSW5kZXhdKTt3LmF0dHJpYnV0ZXMuc3R5bGV8fCh3LmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IFM9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PXcuY2hpbGRyZW4ubGVuZ3RoJiYoW1NdPXcuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24ody5hdHRyaWJ1dGVzLnN0eWxlLGIpfWVsc2UgT2JqZWN0LmFzc2lnbihkLGIpO3AucHVzaCh3KTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KXcuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW3IuJHRvSFRNTF0oKS5odG1sKTtlbHNlIGlmKCF0aGlzLnVpLmJ1dHRvbil7bGV0IGU9IiI7aWYodGhpcy52YWx1ZS5leERhdGEpZT10aGlzLnZhbHVlLmV4RGF0YVtyLiR0ZXh0XSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3IuJGdldEV4dHJhXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW3IuJHRvSFRNTF0oKS5odG1sO251bGwhPT10JiYoZT10LmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiZ0aGlzLnZhbHVlLnRleHQ/Lm1heENoYXJzJiYody5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLm1heExlbmd0aD10aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMpO2lmKGUpe2lmKHRoaXMudWkubnVtZXJpY0VkaXQpe2U9cGFyc2VGbG9hdChlKTtlPWlzTmFOKGUpPyIiOmUudG9TdHJpbmcoKX0idGV4dGFyZWEiPT09dy5jaGlsZHJlblswXS5uYW1lP3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50ZXh0Q29udGVudD1lOncuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy52YWx1ZT1lfX1pZighdGhpcy51aS5pbWFnZUVkaXQmJncuY2hpbGRyZW4/LlswXSYmdGhpcy5oKXt1PXV8fGdldEJvcmRlckRpbXModGhpcy51aVtyLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3IuJGdldEV4dHJhXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LWwtdS5oO3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKGEpfWVsc2Ugdy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9UyYmdy5jaGlsZHJlbi5wdXNoKFMpO2lmKCF0KXt3LmF0dHJpYnV0ZXMuY2xhc3MmJncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX1pZih0aGlzLnVpLmJ1dHRvbil7ZC5wYWRkaW5nJiZkZWxldGUgZC5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7dy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBjLkhUTUxSZXN1bHQuc3VjY2VzcyhtLHkpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3cuYXR0cmlidXRlcy5jbGFzc3x8KHcuYXR0cmlidXRlcy5jbGFzcz1bXSk7dy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9bjtyZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLG0pLHkpfX10LkZpZWxkPUZpZWxkO2NsYXNzIEZpbGwgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD1lW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPSJjb2xvciIsaT1uO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe249ImJhY2tncm91bmQtY29sb3IiO2k9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe249aT0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIG8uWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbci4kdG9TdHlsZV0odGhpcy5jb2xvcik7cyYmKGFbcy5zdGFydHNXaXRoKCIjIik/bjppXT1zKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yPy52YWx1ZSl7Y29uc3QgZT10aGlzLmNvbG9yW3IuJHRvU3R5bGVdKCk7YVtlLnN0YXJ0c1dpdGgoIiMiKT9uOmldPWV9cmV0dXJuIGF9fWNsYXNzIEZpbHRlciBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImZpbHRlciIsITApO3RoaXMuYWRkUmV2b2NhdGlvbkluZm89KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYWRkUmV2b2NhdGlvbkluZm8sWyIiLCJyZXF1aXJlZCIsIm9wdGlvbmFsIiwibm9uZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZlcnNpb249KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzLnZlcnNpb24sZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9NX0pO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1udWxsO3RoaXMuY2VydGlmaWNhdGVzPW51bGw7dGhpcy5kaWdlc3RNZXRob2RzPW51bGw7dGhpcy5lbmNvZGluZ3M9bnVsbDt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW51bGw7dGhpcy5oYW5kbGVyPW51bGw7dGhpcy5sb2NrRG9jdW1lbnQ9bnVsbDt0aGlzLm1kcD1udWxsO3RoaXMucmVhc29ucz1udWxsO3RoaXMudGltZVN0YW1wPW51bGx9fWNsYXNzIEZsb2F0IGV4dGVuZHMgby5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImZsb2F0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW3IuJGNvbnRlbnRdLnRyaW0oKSk7dGhpc1tyLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIEZvbnQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPSgwLGMuZ2V0RmxvYXQpKHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPSgwLGMuZ2V0RmxvYXQpKHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT0oMCxjLmdldE1lYXN1cmVtZW50KShlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTt0aGlzW3IuJGdsb2JhbERhdGFdLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJmaWxsIiksdD1lLmNvbG9yO2lmKHQpaWYoIiMwMDAwMDAiPT09dClkZWxldGUgZS5jb2xvcjtlbHNlIGlmKCF0LnN0YXJ0c1dpdGgoIiMiKSl7ZS5iYWNrZ3JvdW5kPXQ7ZS5iYWNrZ3JvdW5kQ2xpcD0idGV4dCI7ZS5jb2xvcj0idHJhbnNwYXJlbnQifXRoaXMuYmFzZWxpbmVTaGlmdCYmKGUudmVydGljYWxBbGlnbj0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5iYXNlbGluZVNoaWZ0KSk7ZS5mb250S2VybmluZz0ibm9uZSI9PT10aGlzLmtlcm5pbmdNb2RlPyJub25lIjoibm9ybWFsIjtlLmxldHRlclNwYWNpbmc9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGV0dGVyU3BhY2luZyk7aWYoMCE9PXRoaXMubGluZVRocm91Z2gpe2UudGV4dERlY29yYXRpb249ImxpbmUtdGhyb3VnaCI7Mj09PXRoaXMubGluZVRocm91Z2gmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWlmKDAhPT10aGlzLm92ZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJvdmVybGluZSI7Mj09PXRoaXMub3ZlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFN0eWxlPXRoaXMucG9zdHVyZTtlLmZvbnRTaXplPSgwLHMubWVhc3VyZVRvU3RyaW5nKSguOTkqdGhpcy5zaXplKTsoMCxzLnNldEZvbnRGYW1pbHkpKHRoaXMsdGhpcyx0aGlzW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJmb3JtYXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBIYW5kbGVyIGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiaGFuZGxlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSHlwaGVuYXRpb24gZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIG8uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImltYWdlIik7dGhpcy5hc3BlY3Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYXNwZWN0LFsiZml0IiwiYWN0dWFsIiwiaGVpZ2h0Iiwibm9uZSIsIndpZHRoIl0pO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbImJhc2U2NCIsIm5vbmUiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXSgpe2lmKHRoaXMuY29udGVudFR5cGUmJiFtLmhhcyh0aGlzLmNvbnRlbnRUeXBlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBjLkhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tyLiRnbG9iYWxEYXRhXS5pbWFnZXMmJnRoaXNbci4kZ2xvYmFsRGF0YV0uaW1hZ2VzLmdldCh0aGlzLmhyZWYpO2lmKCFlJiYodGhpcy5ocmVmfHwhdGhpc1tyLiRjb250ZW50XSkpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTtlfHwiYmFzZTY0IiE9PXRoaXMudHJhbnNmZXJFbmNvZGluZ3x8KGU9KDAsbC5zdHJpbmdUb0J5dGVzKShhdG9iKHRoaXNbci4kY29udGVudF0pKSk7aWYoIWUpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTtpZighdGhpcy5jb250ZW50VHlwZSl7Zm9yKGNvbnN0W3QsYV1vZiBiKWlmKGUubGVuZ3RoPnQubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxhKT0+dD09PWVbYV0pKSl7dGhpcy5jb250ZW50VHlwZT1hO2JyZWFrfWlmKCF0aGlzLmNvbnRlbnRUeXBlKXJldHVybiBjLkhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBhO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6YT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmE9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmE9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBuPXRoaXNbci4kZ2V0UGFyZW50XSgpO3JldHVybiBjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6YSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6bj9hcmlhTGFiZWwobltyLiRnZXRQYXJlbnRdKCkpOm51bGx9fSl9fWNsYXNzIEltYWdlRWRpdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImltYWdlRWRpdCIsITApO3RoaXMuZGF0YT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5kYXRhLFsibGluayIsImVtYmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/Yy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7fX0pOmMuSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgSW50ZWdlciBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJpbnRlZ2VyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9cGFyc2VJbnQodGhpc1tyLiRjb250ZW50XS50cmltKCksMTApO3RoaXNbci4kY29udGVudF09aXNOYU4oZSk/bnVsbDplfVtyLiR0b0hUTUxdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBJc3N1ZXJzIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBJdGVtcyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXl9W3IuJHRvSFRNTF0oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbci4kZ2V0Q2hpbGRyZW5dKCkpZS5wdXNoKHRbci4kdGV4dF0oKSk7cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKGUpfX10Lkl0ZW1zPUl0ZW1zO2NsYXNzIEtlZXAgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJrZWVwIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjtjb25zdCB0PVsibm9uZSIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXTt0aGlzLmludGFjdD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5pbnRhY3QsdCk7dGhpcy5uZXh0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm5leHQsdCk7dGhpcy5wcmV2aW91cz0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmV2aW91cyx0KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgS2V5VXNhZ2UgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJrZXlVc2FnZSIpO2NvbnN0IHQ9WyIiLCJ5ZXMiLCJubyJdO3RoaXMuY3JsU2lnbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5jcmxTaWduLHQpO3RoaXMuZGF0YUVuY2lwaGVybWVudD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5kYXRhRW5jaXBoZXJtZW50LHQpO3RoaXMuZGVjaXBoZXJPbmx5PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmRlY2lwaGVyT25seSx0KTt0aGlzLmRpZ2l0YWxTaWduYXR1cmU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuZGlnaXRhbFNpZ25hdHVyZSx0KTt0aGlzLmVuY2lwaGVyT25seT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5lbmNpcGhlck9ubHksdCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtleUFncmVlbWVudD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5rZXlBZ3JlZW1lbnQsdCk7dGhpcy5rZXlDZXJ0U2lnbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5rZXlDZXJ0U2lnbix0KTt0aGlzLmtleUVuY2lwaGVybWVudD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5rZXlFbmNpcGhlcm1lbnQsdCk7dGhpcy5ub25SZXB1ZGlhdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5ub25SZXB1ZGlhdGlvbix0KTt0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBMaW5lIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibGluZSIsITApO3RoaXMuaGFuZD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtyLiR0b0hUTUxdKCl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxhPXRbci4kdG9TdHlsZV0oKSxuPU9iamVjdC5jcmVhdGUobnVsbCksaT0idmlzaWJsZSI9PT10LnByZXNlbmNlP3QudGhpY2tuZXNzOjA7bi5zdHJva2VXaWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykoaSk7bi5zdHJva2U9YS5jb2xvcjtsZXQgbyxsLGgsdSxkPSIxMDAlIixmPSIxMDAlIjtpZihlLnc8PWkpe1tvLGwsaCx1XT1bIjUwJSIsMCwiNTAlIiwiMTAwJSJdO2Q9bi5zdHJva2VXaWR0aH1lbHNlIGlmKGUuaDw9aSl7W28sbCxoLHVdPVswLCI1MCUiLCIxMDAlIiwiNTAlIl07Zj1uLnN0cm9rZVdpZHRofWVsc2UiXFwiPT09dGhpcy5zbG9wZT9bbyxsLGgsdV09WzAsMCwiMTAwJSIsIjEwMCUiXTpbbyxsLGgsdV09WzAsIjEwMCUiLCIxMDAlIiwwXTtjb25zdCBwPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToibGluZSIsYXR0cmlidXRlczp7eG1sbnM6Zyx4MTpvLHkxOmwseDI6aCx5Mjp1LHN0eWxlOm59fV0sYXR0cmlidXRlczp7eG1sbnM6Zyx3aWR0aDpkLGhlaWdodDpmLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltwXX0pO3AuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBjLkhUTUxSZXN1bHQuc3VjY2VzcyhwKX19Y2xhc3MgTGluZWFyIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibGluZWFyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIn0pYH19Y2xhc3MgTG9ja0RvY3VtZW50IGV4dGVuZHMgby5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7dGhpc1tyLiRjb250ZW50XT0oMCxjLmdldFN0cmluZ09wdGlvbikodGhpc1tyLiRjb250ZW50XSxbImF1dG8iLCIwIiwiMSJdKX19Y2xhc3MgTWFuaWZlc3QgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJtYW5pZmVzdCIsITApO3RoaXMuYWN0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFjdGlvbixbImluY2x1ZGUiLCJhbGwiLCJleGNsdWRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5yZWY9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1hcmdpbiBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIm1hcmdpbiIsITApO3RoaXMuYm90dG9tSW5zZXQ9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5ib3R0b21JbnNldCwiMCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWZ0SW5zZXQ9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5sZWZ0SW5zZXQsIjAiKTt0aGlzLnJpZ2h0SW5zZXQ9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5yaWdodEluc2V0LCIwIik7dGhpcy50b3BJbnNldD0oMCxjLmdldE1lYXN1cmVtZW50KShlLnRvcEluc2V0LCIwIik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7cmV0dXJue21hcmdpbjooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50b3BJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJpZ2h0SW5zZXQpKyIgIisoMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5ib3R0b21JbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxlZnRJbnNldCl9fX1jbGFzcyBNZHAgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJtZHAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGVybWlzc2lvbnM9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnBlcm1pc3Npb25zLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PjE9PT1lfHwzPT09ZX0pO3RoaXMuc2lnbmF0dXJlVHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5zaWduYXR1cmVUeXBlLFsiZmlsbGVyIiwiYXV0aG9yIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVkaXVtIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PSgwLGMuZ2V0QkJveCkoZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibWVzc2FnZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudGV4dD1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJudW1lcmljRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksYT10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksbj17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6YVtyLiR1aWRdLGRhdGFJZDphW3IuJGRhdGFdPy5bci4kdWlkXXx8YVtyLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe24uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO24uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltuXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD8oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj8oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIG8uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGdldEV4dHJhXSgpe2lmKCF0aGlzW3IuJGV4dHJhXSl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKSx0PXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpLGE9dFtyLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxuPXRbci4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksaT10W3IuJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW3IuJGV4dHJhXT17dGFyZ2V0OmE/LlswXXx8bnVsbCxsZWFkZXI6bj8uWzBdfHxudWxsLHRyYWlsZXI6aT8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBvLlhGQU9iamVjdEFycmF5fVtyLiRpc1VzYWJsZV0oKXtpZighdGhpc1tyLiRleHRyYV0pe3RoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tyLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3IuJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tyLiRleHRyYV19W3IuJGdldE5leHRQYWdlXSgpe3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW3IuJGlzVXNhYmxlXSgpKXt0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3IuJHRvSFRNTF0oKXt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tyLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbci4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxsLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbci4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBvLlhGQU9iamVjdEFycmF5fVtyLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3IuJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtyLiRjbGVhblBhZ2VdKCl9W3IuJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bci4kZ2V0TmV4dFBhZ2VdKCl7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbci4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tyLiRleHRyYV0ucGFnZUluZGV4XVtyLiRnZXROZXh0UGFnZV0oKX1pZih0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXhdW3IuJGdldE5leHRQYWdlXSgpfWlmKHRoaXNbci4kaXNVc2FibGVdKCkpe3RoaXNbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xO3RoaXNbci4kZXh0cmFdLnBhZ2VJbmRleD0tMTt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbci4kZ2V0TmV4dFBhZ2VdKCl9Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKTt0aGlzW3IuJGNsZWFuUGFnZV0oKTtyZXR1cm4gdGhpc1tyLiRnZXROZXh0UGFnZV0oKX1jb25zdCBlPXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIG58fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxjLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLGMuZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50ZXh0SW5kZW50KTsoMCxzLmZpeFRleHRJbmRlbnQpKGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3IuJHRvU3R5bGVdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBQYXR0ZXJuIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixuPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSkgJHthfSh0byByaWdodCwke259KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke259KSAke2F9KC00NWRlZywke259KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7bn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke259KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7bn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIG8uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgby5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtjb25zdCBuPSh0aGlzLmNvcm5lci5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jb3JuZXIuY2hpbGRyZW5bMF06bmV3IENvcm5lcih7fSkpW3IuJHRvU3R5bGVdKCksaT17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOmcsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDpuLnJhZGl1cyxyeTpuLnJhZGl1cyxzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOmcsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtpZihoYXNNYXJnaW4odGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpKSlyZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaV19KTtpLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gYy5IVE1MUmVzdWx0LnN1Y2Nlc3MoaSl9fWNsYXNzIFJlZkVsZW1lbnQgZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJyZWYiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2NyaXB0IGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzZXRQcm9wZXJ0eSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiJ9fXQuU2V0UHJvcGVydHk9U2V0UHJvcGVydHk7Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzaWduRGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsic2lnbiIsImNsZWFyIiwidmVyaWZ5Il0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzaWduYXR1cmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsiUERGMS4zIiwiUERGMS42Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgU2lnbmluZyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgU29saWQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKGUpe3JldHVybiBlP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiJ9fWNsYXNzIFNwZWFrIGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwic3BlYWsiKTt0aGlzLmRpc2FibGU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRpc2FibGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJpb3JpdHk9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJpb3JpdHksWyJjdXN0b20iLCJjYXB0aW9uIiwibmFtZSIsInRvb2xUaXAiXSk7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU3RpcHBsZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtjb25zdCB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIGwuVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyBTdWJmb3JtIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwic3ViZm9ybSIsITApO3RoaXMuYWNjZXNzPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWxsb3dNYWNybz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dNYWNybyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuYW5jaG9yVHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmNvbHVtbldpZHRocz0oZS5jb2x1bW5XaWR0aHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+Ii0xIj09PWU/LTE6KDAsYy5nZXRNZWFzdXJlbWVudCkoZSkpKTt0aGlzLmg9ZS5oPygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWVyZ2VNb2RlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm1lcmdlTW9kZSxbImNvbnN1bWVEYXRhIiwibWF0Y2hUZW1wbGF0ZSJdKTt0aGlzLm1pbkg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yZXN0b3JlU3RhdGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucmVzdG9yZVN0YXRlLFsibWFudWFsIiwiYXV0byJdKTt0aGlzLnNjb3BlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnNjb3BlLFsibmFtZSIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5wYWdlU2V0PW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YXJpYWJsZXM9bnVsbDt0aGlzLmFyZWE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnByb3RvPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgby5YRkFPYmplY3RBcnJheX1bci4kZ2V0U3ViZm9ybVBhcmVudF0oKXtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO3JldHVybiBlIGluc3RhbmNlb2YgU3ViZm9ybVNldD9lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk6ZX1bci4kaXNCaW5kYWJsZV0oKXtyZXR1cm4hMH1bci4kaXNUaGVyZU1vcmVXaWR0aF0oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmdGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lPjB8fHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl9KltyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLGkuZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJGlzU3BsaXR0YWJsZV0oKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZighZVtyLiRpc1NwbGl0dGFibGVdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbci4kZXh0cmFdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtyLiR0b0hUTUxdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKHRoaXMuYnJlYWspe2lmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYWZ0ZXJ8fCIiIT09dGhpcy5icmVhay5hZnRlclRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtBZnRlcih7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmFmdGVyLHRhcmdldDp0aGlzLmJyZWFrLmFmdGVyVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2Vbci4kZ2xvYmFsRGF0YV09dGhpc1tyLiRnbG9iYWxEYXRhXTt0aGlzW3IuJGFwcGVuZENoaWxkXShlKTt0aGlzLmJyZWFrQWZ0ZXIucHVzaChlKX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtCZWZvcmUoe3RhcmdldFR5cGU6dGhpcy5icmVhay5iZWZvcmUsdGFyZ2V0OnRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2Vbci4kZ2xvYmFsRGF0YV09dGhpc1tyLiRnbG9iYWxEYXRhXTt0aGlzW3IuJGFwcGVuZENoaWxkXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2Vbci4kZ2xvYmFsRGF0YV09dGhpc1tyLiRnbG9iYWxEYXRhXTt0aGlzW3IuJGFwcGVuZENoaWxkXShlKTt0aGlzLm92ZXJmbG93LnB1c2goZSl9dGhpc1tyLiRyZW1vdmVDaGlsZF0odGhpcy5icmVhayk7dGhpcy5icmVhaz1udWxsfWlmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmKDAsbC53YXJuKSgiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBjLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKHRoaXNbci4kZXh0cmFdPy5hZnRlckJyZWFrQWZ0ZXIpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTsoMCxzLmZpeERpbWVuc2lvbnMpKHRoaXMpO2NvbnN0IHQ9W10sYT17aWQ6dGhpc1tyLiR1aWRdLGNsYXNzOltdfTsoMCxzLnNldEFjY2VzcykodGhpcyxhLmNsYXNzKTt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPU9iamVjdC5jcmVhdGUobnVsbCkpO09iamVjdC5hc3NpZ24odGhpc1tyLiRleHRyYV0se2NoaWxkcmVuOnQsbGluZTpudWxsLGF0dHJpYnV0ZXM6YSxhdHRlbXB0OjAsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3Qgbj10aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKSxvPW5bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSxoPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO2h8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gYy5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgdT1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW3IuJGdldFN1YmZvcm1QYXJlbnRdKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbci4kZXh0cmFdLmNvbHVtbldpZHRocz1lO3RoaXNbci4kZXh0cmFdLmN1cnJlbnRDb2x1bW49MH19Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLGY9WyJ4ZmFTdWJmb3JtIl0sZz0oMCxzLmxheW91dENsYXNzKSh0aGlzKTtnJiZmLnB1c2goZyk7YS5zdHlsZT1kO2EuY2xhc3M9Zjt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtpZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbci4kZ2V0RXh0cmFdKCk7aWYodC5hZGRMZWFkZXIpe3QuYWRkTGVhZGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC5sZWFkZXIsZSl9fXRoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgcD0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxtPXA/MjoxO2Zvcig7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdDxtO3RoaXNbci4kZXh0cmFdLmF0dGVtcHQrKyl7cCYmMT09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJih0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOnUsaW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBlfWlmKHAmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiYwPT09dGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lJiYhbltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PW07YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtofHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO25bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT1vO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1tKXt0aGlzLm92ZXJmbG93JiYodGhpc1tyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtofHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIGMuSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tyLiRnZXRFeHRyYV0oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IGI9MCx5PTA7aWYodGhpcy5tYXJnaW4pe2I9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7eT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCB3PU1hdGgubWF4KHRoaXNbci4kZXh0cmFdLndpZHRoK2IsdGhpcy53fHwwKSxTPU1hdGgubWF4KHRoaXNbci4kZXh0cmFdLmhlaWdodCt5LHRoaXMuaHx8MCkseD1bdGhpcy54LHRoaXMueSx3LFNdOyIiPT09dGhpcy53JiYoZC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodykpOyIiPT09dGhpcy5oJiYoZC5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKFMpKTtpZigoIjBweCI9PT1kLndpZHRofHwiMHB4Ij09PWQuaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBjLkhUTUxSZXN1bHQuRU1QVFk7Y29uc3QgQz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtjb25zdCB2PWMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxDKSx4KTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1tyLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyPXY7cmV0dXJuIGMuSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gdn19Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgby5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpe2xldCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtyLiRnZXRQYXJlbnRdKCk7cmV0dXJuIGV9W3IuJGlzQmluZGFibGVdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXt0aGlzW3IuJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tyLiRjb250ZW50XS5zcGxpdCh0aGlzLmRlbGltaXRlcikubWFwKChlPT57KGU9ZS5zcGxpdCgiPSIsMikpWzBdPWVbMF0udHJpbSgpO3JldHVybiBlfSkpKX19Y2xhc3MgU3ViamVjdEROcyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFN1Ym1pdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPSgwLGMuZ2V0S2V5d29yZCkoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2VQcm9maWxlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmJhc2VQcm9maWxlLFsiZnVsbCIsImludGVyYWN0aXZlRm9ybXMiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnN1YmZvcm09bmV3IG8uWEZBT2JqZWN0QXJyYXl9W3IuJGZpbmFsaXplXSgpezA9PT10aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoJiYoMCxsLndhcm4pKCJYRkEgLSBObyBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlLiIpO3RoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTImJigwLGwud2FybikoIlhGQSAtIFNldmVyYWwgc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tyLiR0YWJJbmRleF09NWUzfVtyLiRpc1NwbGl0dGFibGVdKCl7cmV0dXJuITB9W3IuJHNlYXJjaE5vZGVdKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiIyIpP1t0aGlzW3IuJGlkc10uZ2V0KGUuc2xpY2UoMSkpXTooMCxkLnNlYXJjaE5vZGUpKHRoaXMsdCxlLCEwLCEwKX0qW3IuJHRvUGFnZXNdKCl7aWYoIXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tyLiRleHRyYV09e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbci4kY2xlYW5QYWdlXSgpO2NvbnN0IHQ9ZS5wYWdlU2V0LnBhZ2VBcmVhLmNoaWxkcmVuLGE9e25hbWU6ImRpdiIsY2hpbGRyZW46W119O2xldCBuPW51bGwsaT1udWxsLHM9bnVsbDtpZihlLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9aS50YXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtpPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPWkudGFyZ2V0fWVsc2UgaWYoZS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtpPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaztzPWkuYmVmb3JlVGFyZ2V0fWlmKGkpe2NvbnN0IGU9dGhpc1tyLiRzZWFyY2hOb2RlXShzLGlbci4kZ2V0UGFyZW50XSgpKTtpZihlIGluc3RhbmNlb2YgUGFnZUFyZWEpe249ZTtpW3IuJGV4dHJhXT17fX19bnx8KG49dFswXSk7bltyLiRleHRyYV09e251bWJlck9mVXNlOjF9O2NvbnN0IG89bltyLiRnZXRQYXJlbnRdKCk7b1tyLiRleHRyYV09e251bWJlck9mVXNlOjEscGFnZUluZGV4Om8ucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihuKSxwYWdlU2V0SW5kZXg6MH07bGV0IGgsdT1udWxsLGQ9bnVsbCxmPSEwLGc9MCxwPTA7Zm9yKDs7KXtpZihmKWc9MDtlbHNle2EuY2hpbGRyZW4ucG9wKCk7aWYoMz09KytnKXsoMCxsLndhcm4pKCJYRkEgLSBTb21ldGhpbmcgZ29lcyB3cm9uZzogcGxlYXNlIGZpbGUgYSBidWcuIik7cmV0dXJuIGF9fWg9bnVsbDt0aGlzW3IuJGV4dHJhXS5jdXJyZW50UGFnZUFyZWE9bjtjb25zdCB0PW5bci4kdG9IVE1MXSgpLmh0bWw7YS5jaGlsZHJlbi5wdXNoKHQpO2lmKHUpe3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2godVtyLiR0b0hUTUxdKG5bci4kZXh0cmFdLnNwYWNlKS5odG1sKTt1PW51bGx9aWYoZCl7dGhpc1tyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChkW3IuJHRvSFRNTF0obltyLiRleHRyYV0uc3BhY2UpLmh0bWwpO2Q9bnVsbH1jb25zdCBpPW4uY29udGVudEFyZWEuY2hpbGRyZW4scz10LmNoaWxkcmVuLmZpbHRlcigoZT0+ZS5hdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKCJ4ZmFDb250ZW50YXJlYSIpKSk7Zj0hMTt0aGlzW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1udWxsO3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMTtjb25zdCBmbHVzaD10PT57Y29uc3QgYT1lW3IuJGZsdXNoSFRNTF0oKTtpZihhKXtmfHw9YS5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PXAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXRoaXNbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1pW3RdLG89e3dpZHRoOm4udyxoZWlnaHQ6bi5ofTtwPTA7aWYodSl7c1t0XS5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShvKS5odG1sKTt1PW51bGx9aWYoZCl7c1t0XS5jaGlsZHJlbi5wdXNoKGRbci4kdG9IVE1MXShvKS5odG1sKTtkPW51bGx9Y29uc3QgYz1lW3IuJHRvSFRNTF0obyk7aWYoYy5zdWNjZXNzKXtpZihjLmh0bWwpe2Z8fD1jLmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChjLmh0bWwpfWVsc2UhZiYmYS5jaGlsZHJlbi5sZW5ndGg+MSYmYS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gYX1pZihjLmlzQnJlYWsoKSl7Y29uc3QgZT1jLmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe3U9dGhpc1tyLiRzZWFyY2hOb2RlXShlLmxlYWRlcixlW3IuJGdldFBhcmVudF0oKSk7dT11P3VbMF06bnVsbH1pZihlLnRyYWlsZXIpe2Q9dGhpc1tyLiRzZWFyY2hOb2RlXShlLnRyYWlsZXIsZVtyLiRnZXRQYXJlbnRdKCkpO2Q9ZD9kWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7aD1lW3IuJGV4dHJhXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW3IuJGV4dHJhXS50YXJnZXQpe2g9ZVtyLiRleHRyYV0udGFyZ2V0O3A9ZVtyLiRleHRyYV0uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVtyLiRleHRyYV0uaW5kZXh9ZWxzZSBpZih0aGlzW3IuJGV4dHJhXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tyLiRleHRyYV0ub3ZlcmZsb3dOb2RlO3RoaXNbci4kZXh0cmFdLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGE9ZVtyLiRnZXRFeHRyYV0oKSxuPWEudGFyZ2V0O2EuYWRkTGVhZGVyPW51bGwhPT1hLmxlYWRlcjthLmFkZFRyYWlsZXI9bnVsbCE9PWEudHJhaWxlcjtmbHVzaCh0KTtjb25zdCBzPXQ7dD0xLzA7aWYobiBpbnN0YW5jZW9mIFBhZ2VBcmVhKWg9bjtlbHNlIGlmKG4gaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1pLmluZGV4T2Yobik7aWYoLTEhPT1lKWU+cz90PWUtMTpwPWU7ZWxzZXtoPW5bci4kZ2V0UGFyZW50XSgpO3A9aC5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKG4pfX19ZWxzZSBmbHVzaCh0KX10aGlzW3IuJGV4dHJhXS5wYWdlTnVtYmVyKz0xO2gmJihoW3IuJGlzVXNhYmxlXSgpP2hbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xOmg9bnVsbCk7bj1ofHxuW3IuJGdldE5leHRQYWdlXSgpO3lpZWxkIG51bGx9fX10LlRlbXBsYXRlPVRlbXBsYXRlO2NsYXNzIFRleHQgZXh0ZW5kcyBvLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidGV4dCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhDaGFycz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubWF4Q2hhcnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuITB9W3IuJG9uQ2hpbGRdKGUpe2lmKGVbci4kbmFtZXNwYWNlSWRdPT09bi5OYW1lc3BhY2VJZHMueGh0bWwuaWQpe3RoaXNbci4kY29udGVudF09ZTtyZXR1cm4hMH0oMCxsLndhcm4pKGBYRkEgLSBJbnZhbGlkIGNvbnRlbnQgaW4gVGV4dDogJHtlW3IuJG5vZGVOYW1lXX0uYCk7cmV0dXJuITF9W3IuJG9uVGV4dF0oZSl7dGhpc1tyLiRjb250ZW50XWluc3RhbmNlb2Ygby5YRkFPYmplY3R8fHN1cGVyW3IuJG9uVGV4dF0oZSl9W3IuJGZpbmFsaXplXSgpeyJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XSYmKHRoaXNbci4kY29udGVudF09dGhpc1tyLiRjb250ZW50XS5yZXBsYWNlQWxsKCJcclxuIiwiXG4iKSl9W3IuJGdldEV4dHJhXSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnNwbGl0KC9bXHUyMDI5XHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e3QmJmUucHVzaCh0KTtyZXR1cm4gZX0pLFtdKS5qb2luKCJcbiIpOnRoaXNbci4kY29udGVudF1bci4kdGV4dF0oKX1bci4kdG9IVE1MXShlKXtpZigic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XSkuaHRtbDtpZih0aGlzW3IuJGNvbnRlbnRdLmluY2x1ZGVzKCJcdTIwMjkiKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tyLiRjb250ZW50XS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pO3JldHVybiBlfSksW10pKSkuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSkpfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tyLiRjb250ZW50XSkpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbci4kY29udGVudF0uc3BsaXQoL1tcdTIwMjhcbl0vKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSl9KSl9cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW3IuJGNvbnRlbnRdW3IuJHRvSFRNTF0oZSl9fXQuVGV4dD1UZXh0O2NsYXNzIFRleHRFZGl0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidGV4dEVkaXQiLCEwKTt0aGlzLmFsbG93UmljaFRleHQ9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93UmljaFRleHQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubXVsdGlMaW5lPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5tdWx0aUxpbmUsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PjA9PT1lfHwxPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpO2xldCBhO2NvbnN0IG49dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpOyIiPT09dGhpcy5tdWx0aUxpbmUmJih0aGlzLm11bHRpTGluZT1uIGluc3RhbmNlb2YgRHJhdz8xOjApO2E9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOm5bci4kZGF0YV0/LltyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6bltyLiRkYXRhXT8uW3IuJHVpZF18fG5bci4kdWlkXSxmaWVsZElkOm5bci4kdWlkXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChuKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKG4pKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgVGltZSBleHRlbmRzIG8uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW3IuJGNvbnRlbnRdLnRyaW0oKTt0aGlzW3IuJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBUaW1lU3RhbXAgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidG9vbFRpcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVHJhdmVyc2FsIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidHJhdmVyc2FsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnRyYXZlcnNlPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmF2ZXJzZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInRyYXZlcnNlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiExfX1jbGFzcyBVaSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLmJhcmNvZGU9bnVsbDt0aGlzLmJ1dHRvbj1udWxsO3RoaXMuY2hlY2tCdXR0b249bnVsbDt0aGlzLmNob2ljZUxpc3Q9bnVsbDt0aGlzLmRhdGVUaW1lRWRpdD1udWxsO3RoaXMuZGVmYXVsdFVpPW51bGw7dGhpcy5pbWFnZUVkaXQ9bnVsbDt0aGlzLm51bWVyaWNFZGl0PW51bGw7dGhpcy5wYXNzd29yZEVkaXQ9bnVsbDt0aGlzLnNpZ25hdHVyZT1udWxsO3RoaXMudGV4dEVkaXQ9bnVsbH1bci4kZ2V0RXh0cmFdKCl7aWYodm9pZCAwPT09dGhpc1tyLiRleHRyYV0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBvLlhGQU9iamVjdCl7dGhpc1tyLiRleHRyYV09dDtyZXR1cm4gdH19dGhpc1tyLiRleHRyYV09bnVsbH1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD10aGlzW3IuJGdldEV4dHJhXSgpO3JldHVybiB0P3Rbci4kdG9IVE1MXShlKTpjLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJ2YWx1ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcnJpZGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJlbGV2YW50PSgwLGMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmFyYz1udWxsO3RoaXMuYm9vbGVhbj1udWxsO3RoaXMuZGF0ZT1udWxsO3RoaXMuZGF0ZVRpbWU9bnVsbDt0aGlzLmRlY2ltYWw9bnVsbDt0aGlzLmV4RGF0YT1udWxsO3RoaXMuZmxvYXQ9bnVsbDt0aGlzLmltYWdlPW51bGw7dGhpcy5pbnRlZ2VyPW51bGw7dGhpcy5saW5lPW51bGw7dGhpcy5yZWN0YW5nbGU9bnVsbDt0aGlzLnRleHQ9bnVsbDt0aGlzLnRpbWU9bnVsbH1bci4kc2V0VmFsdWVdKGUpe2NvbnN0IHQ9dGhpc1tyLiRnZXRQYXJlbnRdKCk7aWYodCBpbnN0YW5jZW9mIEZpZWxkJiZ0LnVpPy5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdO3JldHVybn1jb25zdCBhPWVbci4kbm9kZU5hbWVdO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBvLlhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbci4kcmVtb3ZlQ2hpbGRdKHQpfX10aGlzW2Vbci4kbm9kZU5hbWVdXT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdfVtyLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbci4kY29udGVudF0/dGhpcy5leERhdGFbci4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW3IuJGNvbnRlbnRdW3IuJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIG8uWEZBT2JqZWN0KXJldHVybih0W3IuJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2Ygby5YRkFPYmplY3QpcmV0dXJuIGFbci4kdG9IVE1MXShlKX1yZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPVZhbHVlO2NsYXNzIFZhcmlhYmxlcyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IG8uWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBvLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgby5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW3IuJHNldFNldEF0dHJpYnV0ZXNdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IFBhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fXQuVGVtcGxhdGVOYW1lc3BhY2U9VGVtcGxhdGVOYW1lc3BhY2V9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7dmFyIHI9YSgzKSxuPWEoNCksaT1hKDI0KSxzPWEoMTEpLG89YSg0NSkuZixjPWEoMzkpLGw9YSgyMzIpLGg9YSg3NSksdT1hKDc2KSxkPWEoMjMzKSxmPWEoODIpLGc9YSg2KSxwPWEoMzYpLG09IkRPTUV4Y2VwdGlvbiIsYj1pKCJFcnJvciIpLHk9aShtKSx3PWZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpe2wodGhpcyxTKTt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9dShlPDE/dm9pZCAwOmFyZ3VtZW50c1swXSksYT11KGU8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLHI9bmV3IHkodCxhKSxuPWIodCk7bi5uYW1lPW07byhyLCJzdGFjayIscygxLGYobi5zdGFjaywxKSkpO2gocix0aGlzLHcpO3JldHVybiByfSxTPXcucHJvdG90eXBlPXkucHJvdG90eXBlLHg9InN0YWNrImluIGIobSksQz0ic3RhY2siaW4gbmV3IHkoMSwyKSx2PXkmJmcmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixtKSxrPSEoIXZ8fHYud3JpdGFibGUmJnYuY29uZmlndXJhYmxlKSxPPXgmJiFrJiYhQztyKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOnB8fE99LHtET01FeGNlcHRpb246Tz93Onl9KTt2YXIgVD1pKG0pLE09VC5wcm90b3R5cGU7aWYoTS5jb25zdHJ1Y3RvciE9PVQpe3B8fG8oTSwiY29uc3RydWN0b3IiLHMoMSxUKSk7Zm9yKHZhciBFIGluIGQpaWYoYyhkLEUpKXt2YXIgRD1kW0VdLE49RC5zO2MoVCxOKXx8byhULE4scyg2LEQuYykpfX19LChlLHQsYSk9Pnt2YXIgcj1hKDI1KSxuPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihyKHQsZSkpcmV0dXJuIGU7dGhyb3cgbigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LGU9PntlLmV4cG9ydHM9e0luZGV4U2l6ZUVycm9yOntzOiJJTkRFWF9TSVpFX0VSUiIsYzoxLG06MX0sRE9NU3RyaW5nU2l6ZUVycm9yOntzOiJET01TVFJJTkdfU0laRV9FUlIiLGM6MixtOjB9LEhpZXJhcmNoeVJlcXVlc3RFcnJvcjp7czoiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixjOjMsbToxfSxXcm9uZ0RvY3VtZW50RXJyb3I6e3M6IldST05HX0RPQ1VNRU5UX0VSUiIsYzo0LG06MX0sSW52YWxpZENoYXJhY3RlckVycm9yOntzOiJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLGM6NSxtOjF9LE5vRGF0YUFsbG93ZWRFcnJvcjp7czoiTk9fREFUQV9BTExPV0VEX0VSUiIsYzo2LG06MH0sTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6e3M6Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIsYzo3LG06MX0sTm90Rm91bmRFcnJvcjp7czoiTk9UX0ZPVU5EX0VSUiIsYzo4LG06MX0sTm90U3VwcG9ydGVkRXJyb3I6e3M6Ik5PVF9TVVBQT1JURURfRVJSIixjOjksbToxfSxJblVzZUF0dHJpYnV0ZUVycm9yOntzOiJJTlVTRV9BVFRSSUJVVEVfRVJSIixjOjEwLG06MX0sSW52YWxpZFN0YXRlRXJyb3I6e3M6IklOVkFMSURfU1RBVEVfRVJSIixjOjExLG06MX0sU3ludGF4RXJyb3I6e3M6IlNZTlRBWF9FUlIiLGM6MTIsbToxfSxJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6e3M6IklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsYzoxMyxtOjF9LE5hbWVzcGFjZUVycm9yOntzOiJOQU1FU1BBQ0VfRVJSIixjOjE0LG06MX0sSW52YWxpZEFjY2Vzc0Vycm9yOntzOiJJTlZBTElEX0FDQ0VTU19FUlIiLGM6MTUsbToxfSxWYWxpZGF0aW9uRXJyb3I6e3M6IlZBTElEQVRJT05fRVJSIixjOjE2LG06MH0sVHlwZU1pc21hdGNoRXJyb3I6e3M6IlRZUEVfTUlTTUFUQ0hfRVJSIixjOjE3LG06MX0sU2VjdXJpdHlFcnJvcjp7czoiU0VDVVJJVFlfRVJSIixjOjE4LG06MX0sTmV0d29ya0Vycm9yOntzOiJORVRXT1JLX0VSUiIsYzoxOSxtOjF9LEFib3J0RXJyb3I6e3M6IkFCT1JUX0VSUiIsYzoyMCxtOjF9LFVSTE1pc21hdGNoRXJyb3I6e3M6IlVSTF9NSVNNQVRDSF9FUlIiLGM6MjEsbToxfSxRdW90YUV4Y2VlZGVkRXJyb3I6e3M6IlFVT1RBX0VYQ0VFREVEX0VSUiIsYzoyMixtOjF9LFRpbWVvdXRFcnJvcjp7czoiVElNRU9VVF9FUlIiLGM6MjMsbToxfSxJbnZhbGlkTm9kZVR5cGVFcnJvcjp7czoiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIixjOjI0LG06MX0sRGF0YUNsb25lRXJyb3I6e3M6IkRBVEFfQ0xPTkVfRVJSIixjOjI1LG06MX19fSwoZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OYW1lc3BhY2VJZHM9dC4kYnVpbGRYRkFPYmplY3Q9dm9pZCAwO2NvbnN0IGE9U3ltYm9sKCk7dC4kYnVpbGRYRkFPYmplY3Q9YTt0Lk5hbWVzcGFjZUlkcz17Y29uZmlnOntpZDowLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94Y2kvIil9LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1jb25uZWN0aW9uLXNldC8iKX0sZGF0YXNldHM6e2lkOjIsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfSxmb3JtOntpZDozLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZm9ybS8iKX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtbG9jYWxlLXNldC8iKX0scGRmOntpZDo1LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC9wZGYvIj09PWV9LHNpZ25hdHVyZTp7aWQ6NixjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfSxzb3VyY2VTZXQ6e2lkOjcsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1zb3VyY2Utc2V0LyIpfSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX0sdGVtcGxhdGU6e2lkOjksY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS10ZW1wbGF0ZS8iKX0seGRjOntpZDoxMCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGRjLyIpfSx4ZHA6e2lkOjExLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC8iPT09ZX0seGZkZjp7aWQ6MTIsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX0seGh0bWw6e2lkOjEzLGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWV9LHhtcG1ldGE6e2lkOjE0LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3htcG1ldGEvIj09PWV9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hZGRIVE1MPWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IGk9ZVtyLiRleHRyYV0scz1pLmF2YWlsYWJsZVNwYWNlLFtvLGMsbCxoXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6aS53aWR0aD1NYXRoLm1heChpLndpZHRoLG8rbCk7aS5oZWlnaHQ9TWF0aC5tYXgoaS5oZWlnaHQsYytoKTtpLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWkubGluZXx8MT09PWkuYXR0ZW1wdCl7aS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7aS5jaGlsZHJlbi5wdXNoKGkubGluZSk7aS5udW1iZXJJbkxpbmU9MH1pLm51bWJlckluTGluZSs9MTtpLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09aS5hdHRlbXB0KXtpLmN1cnJlbnRXaWR0aCs9bDtpLmhlaWdodD1NYXRoLm1heChpLmhlaWdodCxpLnByZXZIZWlnaHQraCl9ZWxzZXtpLmN1cnJlbnRXaWR0aD1sO2kucHJldkhlaWdodD1pLmhlaWdodDtpLmhlaWdodCs9aDtpLmF0dGVtcHQ9MH1pLndpZHRoPU1hdGgubWF4KGkud2lkdGgsaS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2kuY2hpbGRyZW4ucHVzaCh0KTtpLndpZHRoKz1sO2kuaGVpZ2h0PU1hdGgubWF4KGkuaGVpZ2h0LGgpO2NvbnN0IGU9KDAsbi5tZWFzdXJlVG9TdHJpbmcpKGkuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBpLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjppLndpZHRoPU1hdGgubWluKHMud2lkdGgsTWF0aC5tYXgoaS53aWR0aCxsKSk7aS5oZWlnaHQrPWg7aS5jaGlsZHJlbi5wdXNoKHQpfX07dC5jaGVja0RpbWVuc2lvbnM9ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLG49YVtyLiRleHRyYV0/LmF0dGVtcHR8fDAsWyxpLHMsb109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LG49IiI9PT1lLmg/TmFOOmUuaCxbaSxzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltpLHNdPVtyLzIsbl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbaSxzXT1bMCxuXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbaSxzXT1bcixuXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W2ksc109W3IvMixuLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W2ksc109WzAsbi8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbaSxzXT1bcixuLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbaSxzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltpLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstaSwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsaV07W3Isbl09W24sLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtpLHNdO1tyLG5dPVstciwtbl07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLWldO1tyLG5dPVstbixyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLG4pLE1hdGguYWJzKHIpLE1hdGguYWJzKG4pXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PW4/ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1hW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW3IuJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChvLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChvK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBvK2k+ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYS5oO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJuISFlW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlfHwoIiI9PT1lLmh8fE1hdGgucm91bmQoby10LmhlaWdodCk8PTIpO2RlZmF1bHQ6cmV0dXJuITB9fTt0LmZsdXNoSFRNTD1mdW5jdGlvbiBmbHVzaEhUTUwoZSl7aWYoIWVbci4kZXh0cmFdKXJldHVybiBudWxsO2NvbnN0IHQ9e25hbWU6ImRpdiIsYXR0cmlidXRlczplW3IuJGV4dHJhXS5hdHRyaWJ1dGVzLGNoaWxkcmVuOmVbci4kZXh0cmFdLmNoaWxkcmVufTtpZihlW3IuJGV4dHJhXS5mYWlsaW5nTm9kZSl7Y29uc3QgYT1lW3IuJGV4dHJhXS5mYWlsaW5nTm9kZVtyLiRmbHVzaEhUTUxdKCk7YSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFthXSkpOnQuY2hpbGRyZW4ucHVzaChhKSl9aWYoMD09PXQuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBudWxsO3JldHVybiB0fTt0LmdldEF2YWlsYWJsZVNwYWNlPWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtyLiRleHRyYV0uYXZhaWxhYmxlU3BhY2UsYT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLG49ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtyLiRleHRyYV0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1uLWVbci4kZXh0cmFdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1uLGhlaWdodDp0LmhlaWdodC1hLWVbci4kZXh0cmFdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtyLiRleHRyYV0uY29sdW1uV2lkdGhzLnNsaWNlKGVbci4kZXh0cmFdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1ufTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1uLGhlaWdodDp0LmhlaWdodC1hLWVbci4kZXh0cmFdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19O2EoMTM5KTt2YXIgcj1hKDIyOCksbj1hKDIzNik7ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNvbXB1dGVCYm94PWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgbjtpZigiIiE9PWUudyYmIiIhPT1lLmgpbj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2k9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLGEud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcoaSl9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsYS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfW49W2UueCxlLnksaSxzXX1yZXR1cm4gbn07dC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZSx0KXtjb25zdHthdHRyaWJ1dGVzOmF9PXQse3N0eWxlOm59PWEsaT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVdyYXBwZXIiXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbXX07YS5jbGFzcy5wdXNoKCJ4ZmFXcmFwcGVkIik7aWYoZS5ib3JkZXIpe2NvbnN0e3dpZHRoczphLGluc2V0czpzfT1lLmJvcmRlcltyLiRleHRyYV07bGV0IG8sYyxsPXNbMF0saD1zWzNdO2NvbnN0IHU9c1swXStzWzJdLGQ9c1sxXStzWzNdO3N3aXRjaChlLmJvcmRlci5oYW5kKXtjYXNlImV2ZW4iOmwtPWFbMF0vMjtoLT1hWzNdLzI7bz1gY2FsYygxMDAlICsgJHsoYVsxXSthWzNdKS8yLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAkeyhhWzBdK2FbMl0pLzItdX1weClgO2JyZWFrO2Nhc2UibGVmdCI6bC09YVswXTtoLT1hWzNdO289YGNhbGMoMTAwJSArICR7YVsxXSthWzNdLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAke2FbMF0rYVsyXS11fXB4KWA7YnJlYWs7Y2FzZSJyaWdodCI6bz1kP2BjYWxjKDEwMCUgLSAke2R9cHgpYDoiMTAwJSI7Yz11P2BjYWxjKDEwMCUgLSAke3V9cHgpYDoiMTAwJSJ9Y29uc3QgZj1bInhmYUJvcmRlciJdO2lzUHJpbnRPbmx5KGUuYm9yZGVyKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOmYsc3R5bGU6e3RvcDpgJHtsfXB4YCxsZWZ0OmAke2h9cHhgLHdpZHRoOm8saGVpZ2h0OmN9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKWlmKHZvaWQgMCE9PW5bZV0pe2cuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfWkuY2hpbGRyZW4ucHVzaChnLHQpfWVsc2UgaS5jaGlsZHJlbi5wdXNoKHQpO2Zvcihjb25zdCBlIG9mWyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdKWlmKHZvaWQgMCE9PW5bZV0pe2kuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfWkuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiPT09bi5wb3NpdGlvbj8iYWJzb2x1dGUiOiJyZWxhdGl2ZSI7ZGVsZXRlIG4ucG9zaXRpb247aWYobi5hbGlnblNlbGYpe2kuYXR0cmlidXRlcy5zdHlsZS5hbGlnblNlbGY9bi5hbGlnblNlbGY7ZGVsZXRlIG4uYWxpZ25TZWxmfXJldHVybiBpfTt0LmZpeERpbWVuc2lvbnM9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZih0LmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCBhPXRbci4kZXh0cmFdLG49ZS5jb2xTcGFuO2xldCBpO2k9LTE9PT1uP2EuY29sdW1uV2lkdGhzLnNsaWNlKGEuY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTphLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4sYS5jdXJyZW50Q29sdW1uK24pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7aXNOYU4oaSl8fChlLnc9aSl9dC5sYXlvdXQmJiJwb3NpdGlvbiIhPT10LmxheW91dCYmKGUueD1lLnk9MCk7InRhYmxlIj09PWUubGF5b3V0JiYiIj09PWUudyYmQXJyYXkuaXNBcnJheShlLmNvbHVtbldpZHRocykmJihlLnc9ZS5jb2x1bW5XaWR0aHMucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKSl9O3QuZml4VGV4dEluZGVudD1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9KDAsaS5nZXRNZWFzdXJlbWVudCkoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBhPSJwYWRkaW5nIisoImxlZnQiPT0oInJpZ2h0Ij09PWUudGV4dEFsaWduPyJyaWdodCI6ImxlZnQiKT8iTGVmdCI6IlJpZ2h0Iikscj0oMCxpLmdldE1lYXN1cmVtZW50KShlW2FdLCIwcHgiKTtlW2FdPXItdCsicHgifTt0LmZpeFVSTD1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfTt0LmlzUHJpbnRPbmx5PWlzUHJpbnRPbmx5O3QubGF5b3V0Q2xhc3M9ZnVuY3Rpb24gbGF5b3V0Q2xhc3MoZSl7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpkZWZhdWx0OnJldHVybiJ4ZmFQb3NpdGlvbiI7Y2FzZSJsci10YiI6cmV0dXJuInhmYUxyVGIiO2Nhc2Uicmwtcm93IjpyZXR1cm4ieGZhUmxSb3ciO2Nhc2UicmwtdGIiOnJldHVybiJ4ZmFSbFRiIjtjYXNlInJvdyI6cmV0dXJuInhmYVJvdyI7Y2FzZSJ0YWJsZSI6cmV0dXJuInhmYVRhYmxlIjtjYXNlInRiIjpyZXR1cm4ieGZhVGIifX07dC5sYXlvdXROb2RlPWZ1bmN0aW9uIGxheW91dE5vZGUoZSx0KXtsZXQgYT1udWxsLG49bnVsbCxpPSExO2lmKCghZS53fHwhZS5oKSYmZS52YWx1ZSl7bGV0IHM9MCxvPTA7aWYoZS5tYXJnaW4pe3M9ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ7bz1lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgYz1udWxsLGw9bnVsbDtpZihlLnBhcmEpe2w9T2JqZWN0LmNyZWF0ZShudWxsKTtjPSIiPT09ZS5wYXJhLmxpbmVIZWlnaHQ/bnVsbDplLnBhcmEubGluZUhlaWdodDtsLnRvcD0iIj09PWUucGFyYS5zcGFjZUFib3ZlPzA6ZS5wYXJhLnNwYWNlQWJvdmU7bC5ib3R0b209IiI9PT1lLnBhcmEuc3BhY2VCZWxvdz8wOmUucGFyYS5zcGFjZUJlbG93O2wubGVmdD0iIj09PWUucGFyYS5tYXJnaW5MZWZ0PzA6ZS5wYXJhLm1hcmdpbkxlZnQ7bC5yaWdodD0iIj09PWUucGFyYS5tYXJnaW5SaWdodD8wOmUucGFyYS5tYXJnaW5SaWdodH1sZXQgaD1lLmZvbnQ7aWYoIWgpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7bGV0IGE9ZVtyLiRnZXRQYXJlbnRdKCk7Zm9yKDthJiZhIT09dDspe2lmKGEuZm9udCl7aD1hLmZvbnQ7YnJlYWt9YT1hW3IuJGdldFBhcmVudF0oKX19Y29uc3QgdT0oZS53fHx0LndpZHRoKS1zLGQ9ZVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtyLiRjb250ZW50XSYmInRleHQvaHRtbCI9PT1lLnZhbHVlLmV4RGF0YS5jb250ZW50VHlwZSl7Y29uc3QgdD1sYXlvdXRUZXh0KGUudmFsdWUuZXhEYXRhW3IuJGNvbnRlbnRdLGgsbCxjLGQsdSk7bj10LndpZHRoO2E9dC5oZWlnaHQ7aT10LmlzQnJva2VufWVsc2V7Y29uc3QgdD1lLnZhbHVlW3IuJHRleHRdKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsaCxsLGMsZCx1KTtuPWUud2lkdGg7YT1lLmhlaWdodDtpPWUuaXNCcm9rZW59fW51bGw9PT1ufHxlLnd8fChuKz1zKTtudWxsPT09YXx8ZS5ofHwoYSs9byl9cmV0dXJue3c6bixoOmEsaXNCcm9rZW46aX19O3QubWVhc3VyZVRvU3RyaW5nPW1lYXN1cmVUb1N0cmluZzt0LnNldEFjY2Vzcz1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19O3Quc2V0Rm9udEZhbWlseT1mdW5jdGlvbiBzZXRGb250RmFtaWx5KGUsdCxhLHIpe2lmKCFhKXtkZWxldGUgci5mb250RmFtaWx5O3JldHVybn1jb25zdCBuPSgwLGkuc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpO3IuZm9udEZhbWlseT1gIiR7bn0iYDtjb25zdCBvPWEuZmluZChuKTtpZihvKXtjb25zdHtmb250RmFtaWx5OmF9PW8ucmVndWxhci5jc3NGb250SW5mbzthIT09biYmKHIuZm9udEZhbWlseT1gIiR7YX0iYCk7Y29uc3QgaT1nZXRDdXJyZW50UGFyYSh0KTtpZihpJiYiIiE9PWkubGluZUhlaWdodClyZXR1cm47aWYoci5saW5lSGVpZ2h0KXJldHVybjtjb25zdCBjPSgwLHMuc2VsZWN0Rm9udCkoZSxvKTtjJiYoci5saW5lSGVpZ2h0PU1hdGgubWF4KDEuMixjLmxpbmVIZWlnaHQpKX19O3Quc2V0TWluTWF4RGltZW5zaW9ucz1mdW5jdGlvbiBzZXRNaW5NYXhEaW1lbnNpb25zKGUsdCl7aWYoInBvc2l0aW9uIj09PWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19O3Quc2V0UGFyYT1mdW5jdGlvbiBzZXRQYXJhKGUsdCxhKXtpZihhLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBuPWdldEN1cnJlbnRQYXJhKGUpO2lmKG4pe2NvbnN0IGU9YS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChuLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PW5bci4kdG9TdHlsZV0oKTtmb3IoY29uc3RbYSxyXW9mIE9iamVjdC5lbnRyaWVzKHQpKWEgaW4gZXx8KGVbYV09cil9fX07dC50b1N0eWxlPWZ1bmN0aW9uIHRvU3R5bGUoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KGE+MT9hLTE6MCkscz0xO3M8YTtzKyspaVtzLTFdPWFyZ3VtZW50c1tzXTtmb3IoY29uc3QgYSBvZiBpKXtjb25zdCBpPWVbYV07aWYobnVsbCE9PWkpaWYobC5oYXNPd25Qcm9wZXJ0eShhKSlsW2FdKGUsdCk7ZWxzZSBpZihpIGluc3RhbmNlb2YgYy5YRkFPYmplY3Qpe2NvbnN0IGU9aVtyLiR0b1N0eWxlXSgpO2U/T2JqZWN0LmFzc2lnbih0LGUpOigwLG4ud2FybikoYChERUJVRykgLSBYRkEgLSBzdHlsZSBmb3IgJHthfSBub3QgaW1wbGVtZW50ZWQgeWV0YCl9fXJldHVybiB0fTthKDEzOSk7dmFyIHI9YSgyMjgpLG49YSgxNDQpLGk9YSgyMzcpLHM9YSgyMzgpLG89YSgyMzkpLGM9YSgyNDApO2Z1bmN0aW9uIG1lYXN1cmVUb1N0cmluZyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtlfXB4YDpgJHtlLnRvRml4ZWQoMil9cHhgfWNvbnN0IGw9e2FuY2hvclR5cGUoZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZihhJiYoIWEubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgYT1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7bGV0IG49ZS53O2NvbnN0IGk9ZS5oO2lmKGEubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IHQ9YVtyLiRleHRyYV0saT1lLmNvbFNwYW47bGV0IHM7aWYoLTE9PT1pKXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49MH1lbHNle3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uLHQuY3VycmVudENvbHVtbitpKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0odC5jdXJyZW50Q29sdW1uK2UuY29sU3BhbikldC5jb2x1bW5XaWR0aHMubGVuZ3RofWlzTmFOKHMpfHwobj1lLnc9cyl9dC53aWR0aD0iIiE9PW4/bWVhc3VyZVRvU3RyaW5nKG4pOiJhdXRvIjt0LmhlaWdodD0iIiE9PWk/bWVhc3VyZVRvU3RyaW5nKGkpOiJhdXRvIn0scG9zaXRpb24oZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZighYT8ubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpe3QucG9zaXRpb249ImFic29sdXRlIjt0LmxlZnQ9bWVhc3VyZVRvU3RyaW5nKGUueCk7dC50b3A9bWVhc3VyZVRvU3RyaW5nKGUueSl9fSxyb3RhdGUoZSx0KXtpZihlLnJvdGF0ZSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3QudHJhbnNmb3JtKz1gcm90YXRlKC0ke2Uucm90YXRlfWRlZylgO3QudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCJ9fSxwcmVzZW5jZShlLHQpe3N3aXRjaChlLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6dC52aXNpYmlsaXR5PSJoaWRkZW4iO2JyZWFrO2Nhc2UiaGlkZGVuIjpjYXNlImluYWN0aXZlIjp0LmRpc3BsYXk9Im5vbmUifX0saEFsaWduKGUsdCl7aWYoInBhcmEiPT09ZVtyLiRub2RlTmFtZV0pc3dpdGNoKGUuaEFsaWduKXtjYXNlImp1c3RpZnlBbGwiOnQudGV4dEFsaWduPSJqdXN0aWZ5LWFsbCI7YnJlYWs7Y2FzZSJyYWRpeCI6dC50ZXh0QWxpZ249ImxlZnQiO2JyZWFrO2RlZmF1bHQ6dC50ZXh0QWxpZ249ZS5oQWxpZ259ZWxzZSBzd2l0Y2goZS5oQWxpZ24pe2Nhc2UibGVmdCI6dC5hbGlnblNlbGY9InN0YXJ0IjticmVhaztjYXNlImNlbnRlciI6dC5hbGlnblNlbGY9ImNlbnRlciI7YnJlYWs7Y2FzZSJyaWdodCI6dC5hbGlnblNlbGY9ImVuZCJ9fSxtYXJnaW4oZSx0KXtlLm1hcmdpbiYmKHQubWFyZ2luPWUubWFyZ2luW3IuJHRvU3R5bGVdKCkubWFyZ2luKX19O2Z1bmN0aW9uIGxheW91dFRleHQoZSx0LGEsbixpLHMpe2NvbnN0IGM9bmV3IG8uVGV4dE1lYXN1cmUodCxhLG4saSk7InN0cmluZyI9PXR5cGVvZiBlP2MuYWRkU3RyaW5nKGUpOmVbci4kcHVzaEdseXBoc10oYyk7cmV0dXJuIGMuY29tcHV0ZShzKX1mdW5jdGlvbiBpc1ByaW50T25seShlKXtyZXR1cm4gZS5yZWxldmFudC5sZW5ndGg+MCYmIWUucmVsZXZhbnRbMF0uZXhjbHVkZWQmJiJwcmludCI9PT1lLnJlbGV2YW50WzBdLnZpZXduYW1lfWZ1bmN0aW9uIGdldEN1cnJlbnRQYXJhKGUpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSFRNTFJlc3VsdD12b2lkIDA7dC5nZXRCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbcixuLGksc109YTtyZXR1cm57eDpyLHk6bix3aWR0aDppLGhlaWdodDpzfX07dC5nZXRDb2xvcj1mdW5jdGlvbiBnZXRDb2xvcihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06WzAsMCwwXSxbYSxyLG5dPXQ7aWYoIWUpcmV0dXJue3I6YSxnOnIsYjpufTtjb25zdCBpPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5NYXRoLm1pbihNYXRoLm1heCgwLHBhcnNlSW50KGUudHJpbSgpLDEwKSksMjU1KSkpLm1hcCgoZT0+aXNOYU4oZSk/MDplKSk7aWYoaS5sZW5ndGg8MylyZXR1cm57cjphLGc6cixiOm59O1thLHIsbl09aTtyZXR1cm57cjphLGc6cixiOm59fTt0LmdldEZsb2F0PWZ1bmN0aW9uIGdldEZsb2F0KGUpe2xldHtkYXRhOnQsZGVmYXVsdFZhbHVlOmEsdmFsaWRhdGU6cn09ZTtpZighdClyZXR1cm4gYTt0PXQudHJpbSgpO2NvbnN0IG49cGFyc2VGbG9hdCh0KTtpZighaXNOYU4obikmJnIobikpcmV0dXJuIG47cmV0dXJuIGF9O3QuZ2V0SW50ZWdlcj1mdW5jdGlvbiBnZXRJbnRlZ2VyKGUpe2xldHtkYXRhOnQsZGVmYXVsdFZhbHVlOmEsdmFsaWRhdGU6cn09ZTtpZighdClyZXR1cm4gYTt0PXQudHJpbSgpO2NvbnN0IG49cGFyc2VJbnQodCwxMCk7aWYoIWlzTmFOKG4pJiZyKG4pKXJldHVybiBuO3JldHVybiBhfTt0LmdldEtleXdvcmQ9Z2V0S2V5d29yZDt0LmdldE1lYXN1cmVtZW50PWdldE1lYXN1cmVtZW50O3QuZ2V0UmF0aW89ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFthLHJdPXQ7cmV0dXJue251bTphLGRlbjpyfX07dC5nZXRSZWxldmFudD1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtpZighZSlyZXR1cm5bXTtyZXR1cm4gZS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+KHtleGNsdWRlZDoiLSI9PT1lWzBdLHZpZXduYW1lOmUuc3Vic3RyaW5nKDEpfSkpKX07dC5nZXRTdHJpbmdPcHRpb249ZnVuY3Rpb24gZ2V0U3RyaW5nT3B0aW9uKGUsdCl7cmV0dXJuIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dFswXSx2YWxpZGF0ZTplPT50LmluY2x1ZGVzKGUpfSl9O3Quc3RyaXBRdW90ZXM9ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7aWYoZS5zdGFydHNXaXRoKCInIil8fGUuc3RhcnRzV2l0aCgnIicpKXJldHVybiBlLnNsaWNlKDEsLTEpO3JldHVybiBlfTthKDEzOSk7dmFyIHI9YSgxNDQpO2NvbnN0IG49e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LGk9LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBnZXRLZXl3b3JkKGUpe2xldHtkYXRhOnQsZGVmYXVsdFZhbHVlOmEsdmFsaWRhdGU6cn09ZTtpZighdClyZXR1cm4gYTt0PXQudHJpbSgpO3JldHVybiByKHQpP3Q6YX1mdW5jdGlvbiBnZXRNZWFzdXJlbWVudChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IjAiO3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGE9ZS50cmltKCkubWF0Y2goaSk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLHNdPWEsbz1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG8pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bylyZXR1cm4gMDtjb25zdCBjPW5bc107cmV0dXJuIGM/YyhvKTpvfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxudWxsKX19dC5IVE1MUmVzdWx0PUhUTUxSZXN1bHR9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRm9udEZpbmRlcj12b2lkIDA7dC5nZXRNZXRyaWNzPWZ1bmN0aW9uIGdldE1ldHJpY3MoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxhPW51bGw7aWYoZSl7Y29uc3QgdD0oMCxuLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKSxpPWVbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKHQpO2E9c2VsZWN0Rm9udChlLGkpfWlmKCFhKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IGk9ZS5zaXplfHwxMCxzPWEubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGEubGluZUhlaWdodCk6MS4yLG89dm9pZCAwPT09YS5saW5lR2FwPy4yOmEubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpzKmksbGluZUdhcDpvKmksbGluZU5vR2FwOk1hdGgubWF4KDEscy1vKSppfX07dC5zZWxlY3RGb250PXNlbGVjdEZvbnQ7YSgxMTYpO2EoMTI2KTthKDEyOCk7YSgxMzEpO2EoMTMzKTthKDEzNSk7YSgxMzcpO2EoMTM5KTt2YXIgcj1hKDIyOCksbj1hKDIzNyksaT1hKDE0NCk7dC5Gb250RmluZGVyPWNsYXNzIEZvbnRGaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5mb250cz1uZXcgTWFwO3RoaXMuY2FjaGU9bmV3IE1hcDt0aGlzLndhcm5lZD1uZXcgU2V0O3RoaXMuZGVmYXVsdEZvbnQ9bnVsbDt0aGlzLmFkZChlKX1hZGQoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgbj0iIjtjb25zdCBpPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9uPWk+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6aT49NzAwJiYobj0iYm9sZCIpO2lmKCFuKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lPy5pbmNsdWRlcygiQm9sZCIpKSYmKG49ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkl0YWxpYyIpfHxlLnBzTmFtZT8uZW5kc1dpdGgoIkl0IikpJiYobis9Iml0YWxpYyIpfW58fChuPSJyZWd1bGFyIik7cltuXT1lfWdldERlZmF1bHQoKXtyZXR1cm4gdGhpcy5kZWZhdWx0Rm9udH1maW5kKGUpe2xldCB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sYT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoYSlyZXR1cm4gYTtjb25zdCByPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgbj1lLnJlcGxhY2VBbGwociwiIik7YT10aGlzLmZvbnRzLmdldChuKTtpZihhKXt0aGlzLmNhY2hlLnNldChlLGEpO3JldHVybiBhfW49bi50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKG4pJiZzLnB1c2godCk7aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaChlKTtpZigwPT09cy5sZW5ndGgpe249bi5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaCh0KX1pZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaChlKTtpZihzLmxlbmd0aD49MSl7MSE9PXMubGVuZ3RoJiZ0JiYoMCxpLndhcm4pKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHNbMF0pO3JldHVybiBzWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTsoMCxpLndhcm4pKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX07ZnVuY3Rpb24gc2VsZWN0Rm9udChlLHQpe3JldHVybiJpdGFsaWMiPT09ZS5wb3N0dXJlPyJib2xkIj09PWUud2VpZ2h0P3QuYm9sZGl0YWxpYzp0Lml0YWxpYzoiYm9sZCI9PT1lLndlaWdodD90LmJvbGQ6dC5yZWd1bGFyfX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UZXh0TWVhc3VyZT12b2lkIDA7YSgxMzkpO3ZhciByPWEoMjM4KTtjbGFzcyBGb250SW5mb3tjb25zdHJ1Y3RvcihlLHQsYSxuKXt0aGlzLmxpbmVIZWlnaHQ9YTt0aGlzLnBhcmFNYXJnaW49dHx8e3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowfTtpZighZSl7W3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQobik7cmV0dXJufXRoaXMueGZhRm9udD17dHlwZWZhY2U6ZS50eXBlZmFjZSxwb3N0dXJlOmUucG9zdHVyZSx3ZWlnaHQ6ZS53ZWlnaHQsc2l6ZTplLnNpemUsbGV0dGVyU3BhY2luZzplLmxldHRlclNwYWNpbmd9O2NvbnN0IGk9bi5maW5kKGUudHlwZWZhY2UpO2lmKGkpe3RoaXMucGRmRm9udD0oMCxyLnNlbGVjdEZvbnQpKGUsaSk7dGhpcy5wZGZGb250fHwoW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQobikpfWVsc2VbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKX1kZWZhdWx0Rm9udChlKXtjb25zdCB0PWUuZmluZCgiSGVsdmV0aWNhIiwhMSl8fGUuZmluZCgiTXlyaWFkIFBybyIsITEpfHxlLmZpbmQoIkFyaWFsIiwhMSl8fGUuZ2V0RGVmYXVsdCgpO2lmKHQ/LnJlZ3VsYXIpe2NvbnN0IGU9dC5yZWd1bGFyO3JldHVybltlLHt0eXBlZmFjZTplLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHkscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX1yZXR1cm5bbnVsbCx7dHlwZWZhY2U6IkNvdXJpZXIiLHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19fWNsYXNzIEZvbnRTZWxlY3Rvcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLmZvbnRGaW5kZXI9cjt0aGlzLnN0YWNrPVtuZXcgRm9udEluZm8oZSx0LGEscildfXB1c2hEYXRhKGUsdCxhKXtjb25zdCByPXRoaXMuc3RhY2suYXQoLTEpO2Zvcihjb25zdCB0IG9mWyJ0eXBlZmFjZSIsInBvc3R1cmUiLCJ3ZWlnaHQiLCJzaXplIiwibGV0dGVyU3BhY2luZyJdKWVbdF18fChlW3RdPXIueGZhRm9udFt0XSk7Zm9yKGNvbnN0IGUgb2ZbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdKWlzTmFOKHRbZV0pJiYodFtlXT1yLnBhcmFNYXJnaW5bZV0pO2NvbnN0IG49bmV3IEZvbnRJbmZvKGUsdCxhfHxyLmxpbmVIZWlnaHQsdGhpcy5mb250RmluZGVyKTtuLnBkZkZvbnR8fChuLnBkZkZvbnQ9ci5wZGZGb250KTt0aGlzLnN0YWNrLnB1c2gobil9cG9wRm9udCgpe3RoaXMuc3RhY2sucG9wKCl9dG9wRm9udCgpe3JldHVybiB0aGlzLnN0YWNrLmF0KC0xKX19dC5UZXh0TWVhc3VyZT1jbGFzcyBUZXh0TWVhc3VyZXtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLmdseXBocz1bXTt0aGlzLmZvbnRTZWxlY3Rvcj1uZXcgRm9udFNlbGVjdG9yKGUsdCxhLHIpO3RoaXMuZXh0cmFIZWlnaHQ9MH1wdXNoRGF0YShlLHQsYSl7dGhpcy5mb250U2VsZWN0b3IucHVzaERhdGEoZSx0LGEpfXBvcEZvbnQoZSl7cmV0dXJuIHRoaXMuZm9udFNlbGVjdG9yLnBvcEZvbnQoKX1hZGRQYXJhKCl7Y29uc3QgZT10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCk7dGhpcy5leHRyYUhlaWdodCs9ZS5wYXJhTWFyZ2luLnRvcCtlLnBhcmFNYXJnaW4uYm90dG9tfWFkZFN0cmluZyhlKXtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCksYT10LnhmYUZvbnQuc2l6ZTtpZih0LnBkZkZvbnQpe2NvbnN0IHI9dC54ZmFGb250LmxldHRlclNwYWNpbmcsbj10LnBkZkZvbnQsaT1uLmxpbmVIZWlnaHR8fDEuMixzPXQubGluZUhlaWdodHx8TWF0aC5tYXgoMS4yLGkpKmEsbz1pLSh2b2lkIDA9PT1uLmxpbmVHYXA/LjI6bi5saW5lR2FwKSxjPU1hdGgubWF4KDEsbykqYSxsPWEvMWUzLGg9bi5kZWZhdWx0V2lkdGh8fG4uY2hhcnNUb0dseXBocygiICIpWzBdLndpZHRoO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Y29uc3QgZT1uLmVuY29kZVN0cmluZyh0KS5qb2luKCIiKSxhPW4uY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiBhKXtjb25zdCB0PWUud2lkdGh8fGg7dGhpcy5nbHlwaHMucHVzaChbdCpsK3IscyxjLGUudW5pY29kZSwhMV0pfXRoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX1lbHNle2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiIikpdGhpcy5nbHlwaHMucHVzaChbYSwxLjIqYSxhLGUsITFdKTt0aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9fWNvbXB1dGUoZSl7bGV0IHQ9LTEsYT0wLHI9MCxuPTAsaT0wLHM9MCxvPSExLGM9ITA7Zm9yKGxldCBsPTAsaD10aGlzLmdseXBocy5sZW5ndGg7bDxoO2wrKyl7Y29uc3RbaCx1LGQsZixnXT10aGlzLmdseXBoc1tsXSxwPSIgIj09PWYsbT1jP2Q6dTtpZihnKXtyPU1hdGgubWF4KHIsaSk7aT0wO24rPXM7cz1tO3Q9LTE7YT0wO2M9ITF9ZWxzZSBpZihwKWlmKGkraD5lKXtyPU1hdGgubWF4KHIsaSk7aT0wO24rPXM7cz1tO3Q9LTE7YT0wO289ITA7Yz0hMX1lbHNle3M9TWF0aC5tYXgobSxzKTthPWk7aSs9aDt0PWx9ZWxzZSBpZihpK2g+ZSl7bis9cztzPW07aWYoLTEhPT10KXtsPXQ7cj1NYXRoLm1heChyLGEpO2k9MDt0PS0xO2E9MH1lbHNle3I9TWF0aC5tYXgocixpKTtpPWh9bz0hMDtjPSExfWVsc2V7aSs9aDtzPU1hdGgubWF4KG0scyl9fXI9TWF0aC5tYXgocixpKTtuKz1zK3RoaXMuZXh0cmFIZWlnaHQ7cmV0dXJue3dpZHRoOjEuMDIqcixoZWlnaHQ6bixpc0Jyb2tlbjpvfX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhtbE9iamVjdD10LlhGQU9iamVjdEFycmF5PXQuWEZBT2JqZWN0PXQuWEZBQXR0cmlidXRlPXQuU3RyaW5nT2JqZWN0PXQuT3B0aW9uT2JqZWN0PXQuT3B0aW9uMTA9dC5PcHRpb24wMT10LkludGVnZXJPYmplY3Q9dC5Db250ZW50T2JqZWN0PXZvaWQgMDthKDEzOSk7YSgxMTYpO2EoMTI2KTthKDEyOCk7YSgxMzEpO2EoMTMzKTthKDEzNSk7YSgxMzcpO3ZhciByPWEoMjI4KSxuPWEoMjM3KSxpPWEoMTQ0KSxzPWEoMTQ5KSxvPWEoMjM0KSxjPWEoMjQxKTtjb25zdCBsPVN5bWJvbCgpLGg9U3ltYm9sKCksdT1TeW1ib2woKSxkPVN5bWJvbCgiX2NoaWxkcmVuIiksZj1TeW1ib2woKSxnPVN5bWJvbCgpLHA9U3ltYm9sKCksbT1TeW1ib2woKSxiPVN5bWJvbCgpLHk9U3ltYm9sKCksdz1TeW1ib2woKSxTPVN5bWJvbCgpLHg9U3ltYm9sKCksQz1TeW1ib2woInBhcmVudCIpLHY9U3ltYm9sKCksaz1TeW1ib2woKSxPPVN5bWJvbCgpO2xldCBUPTA7Y29uc3QgTT1vLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZDtjbGFzcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3RoaXNbci4kbmFtZXNwYWNlSWRdPWU7dGhpc1tyLiRub2RlTmFtZV09dDt0aGlzW3ddPWE7dGhpc1tDXT1udWxsO3RoaXNbZF09W107dGhpc1tyLiR1aWRdPWAke3R9JHtUKyt9YDt0aGlzW3IuJGdsb2JhbERhdGFdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGE9bnVsbDtmb3IoY29uc3R7bmFtZTpuLGluZGV4Oml9b2YgZSl7Zm9yKGxldCBlPTAscz1pc0Zpbml0ZShpKT9pOjA7ZTw9cztlKyspe2NvbnN0IGU9dFtyLiRuYW1lc3BhY2VJZF09PT1NPy0xOnRbci4kbmFtZXNwYWNlSWRdO2E9bmV3IFhtbE9iamVjdChlLG4pO3Rbci4kYXBwZW5kQ2hpbGRdKGEpfXQ9YX1yZXR1cm4gYX1bci4kb25DaGlsZF0oZSl7aWYoIXRoaXNbd118fCF0aGlzW3IuJG9uQ2hpbGRDaGVja10oZSkpcmV0dXJuITE7Y29uc3QgdD1lW3IuJG5vZGVOYW1lXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tyLiRyZW1vdmVDaGlsZF0oYSk7dGhpc1t0XT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpO3JldHVybiEwfWlmKGEucHVzaChlKSl7dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7cmV0dXJuITB9bGV0IG49IiI7dGhpcy5pZD9uPWAgKGlkOiAke3RoaXMuaWR9KWA6dGhpcy5uYW1lJiYobj1gIChuYW1lOiAke3RoaXMubmFtZX0gJHt0aGlzLmgudmFsdWV9KWApOygwLGkud2FybikoYFhGQSAtIG5vZGUgIiR7dGhpc1tyLiRub2RlTmFtZV19IiR7bn0gaGFzIGFscmVhZHkgZW5vdWdoICIke3R9IiFgKTtyZXR1cm4hMX1bci4kb25DaGlsZENoZWNrXShlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlW3IuJG5vZGVOYW1lXSkmJmVbci4kbmFtZXNwYWNlSWRdPT09dGhpc1tyLiRuYW1lc3BhY2VJZF19W3IuJGlzTnNBZ25vc3RpY10oKXtyZXR1cm4hMX1bci4kYWNjZXB0V2hpdGVzcGFjZV0oKXtyZXR1cm4hMX1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4hMX1bci4kaXNCaW5kYWJsZV0oKXtyZXR1cm4hMX1bci4kcG9wUGFyYV0oKXt0aGlzLnBhcmEmJnRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYXJhU3RhY2sucG9wKCl9W3IuJHB1c2hQYXJhXSgpe3RoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVtyLiRzZXRJZF0oZSl7dGhpcy5pZCYmdGhpc1tyLiRuYW1lc3BhY2VJZF09PT1vLk5hbWVzcGFjZUlkcy50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1bci4kZ2V0VGVtcGxhdGVSb290XSgpe3JldHVybiB0aGlzW3IuJGdsb2JhbERhdGFdLnRlbXBsYXRlfVtyLiRpc1NwbGl0dGFibGVdKCl7cmV0dXJuITF9W3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl7cmV0dXJuITF9W3IuJGFwcGVuZENoaWxkXShlKXtlW0NdPXRoaXM7dGhpc1tkXS5wdXNoKGUpOyFlW3IuJGdsb2JhbERhdGFdJiZ0aGlzW3IuJGdsb2JhbERhdGFdJiYoZVtyLiRnbG9iYWxEYXRhXT10aGlzW3IuJGdsb2JhbERhdGFdKX1bci4kcmVtb3ZlQ2hpbGRdKGUpe2NvbnN0IHQ9dGhpc1tkXS5pbmRleE9mKGUpO3RoaXNbZF0uc3BsaWNlKHQsMSl9W3IuJGhhc1NldHRhYmxlVmFsdWVdKCl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoInZhbHVlIil9W3IuJHNldFZhbHVlXShlKXt9W3IuJG9uVGV4dF0oZSl7fVtyLiRmaW5hbGl6ZV0oKXt9W3IuJGNsZWFuXShlKXtkZWxldGUgdGhpc1t3XTtpZih0aGlzW3IuJGNsZWFudXBdKXtlLmNsZWFuKHRoaXNbci4kY2xlYW51cF0pO2RlbGV0ZSB0aGlzW3IuJGNsZWFudXBdfX1bci4kaW5kZXhPZl0oZSl7cmV0dXJuIHRoaXNbZF0uaW5kZXhPZihlKX1bci4kaW5zZXJ0QXRdKGUsdCl7dFtDXT10aGlzO3RoaXNbZF0uc3BsaWNlKGUsMCx0KTshdFtyLiRnbG9iYWxEYXRhXSYmdGhpc1tyLiRnbG9iYWxEYXRhXSYmKHRbci4kZ2xvYmFsRGF0YV09dGhpc1tyLiRnbG9iYWxEYXRhXSl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuIXRoaXMubmFtZX1bci4kbGFzdEF0dHJpYnV0ZV0oKXtyZXR1cm4iIn1bci4kdGV4dF0oKXtyZXR1cm4gMD09PXRoaXNbZF0ubGVuZ3RoP3RoaXNbci4kY29udGVudF06dGhpc1tkXS5tYXAoKGU9PmVbci4kdGV4dF0oKSkpLmpvaW4oIiIpfWdldFt1XSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybigwLGkuc2hhZG93KSh0aGlzLHUsZS5fYXR0cmlidXRlcyl9W3IuJGlzRGVzY2VuZGVudF0oZSl7bGV0IHQ9dGhpcztmb3IoO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXRbci4kZ2V0UGFyZW50XSgpfXJldHVybiExfVtyLiRnZXRQYXJlbnRdKCl7cmV0dXJuIHRoaXNbQ119W3IuJGdldFN1YmZvcm1QYXJlbnRdKCl7cmV0dXJuIHRoaXNbci4kZ2V0UGFyZW50XSgpfVtyLiRnZXRDaGlsZHJlbl0oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gZT90aGlzW2VdOnRoaXNbZF19W3IuJGR1bXBdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbci4kY29udGVudF0mJihlLiRjb250ZW50PXRoaXNbci4kY29udGVudF0pO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBhPXRoaXNbdF07bnVsbCE9PWEmJihhIGluc3RhbmNlb2YgWEZBT2JqZWN0P2VbdF09YVtyLiRkdW1wXSgpOmEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9hLmlzRW1wdHkoKXx8KGVbdF09YS5kdW1wKCkpOmVbdF09YSl9cmV0dXJuIGV9W3IuJHRvU3R5bGVdKCl7cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oKXtyZXR1cm4gbi5IVE1MUmVzdWx0LkVNUFRZfSpbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCl7Zm9yKGNvbnN0IGUgb2YgdGhpc1tyLiRnZXRDaGlsZHJlbl0oKSl5aWVsZCBlfSpbbV0oZSx0KXtmb3IoY29uc3QgYSBvZiB0aGlzW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtyLiRub2RlTmFtZV0pKXtjb25zdCBlPXRoaXNbci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCksdD1hW3IuJHRvSFRNTF0oZSk7dC5zdWNjZXNzfHwodGhpc1tyLiRleHRyYV0uZmFpbGluZ05vZGU9YSk7eWllbGQgdH19W3IuJGZsdXNoSFRNTF0oKXtyZXR1cm4gbnVsbH1bci4kYWRkSFRNTF0oZSx0KXt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbi5wdXNoKGUpfVtyLiRnZXRBdmFpbGFibGVTcGFjZV0oKXt9W3IuJGNoaWxkcmVuVG9IVE1MXShlKXtsZXR7ZmlsdGVyOnQ9bnVsbCxpbmNsdWRlOmE9ITB9PWU7aWYodGhpc1tyLiRleHRyYV0uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNbci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCksdD10aGlzW3IuJGV4dHJhXS5mYWlsaW5nTm9kZVtyLiR0b0hUTUxdKGUpO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW3IuJGFkZEhUTUxdKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXS5mYWlsaW5nTm9kZX1lbHNlIHRoaXNbci4kZXh0cmFdLmdlbmVyYXRvcj10aGlzW21dKHQsYSk7Zm9yKDs7KXtjb25zdCBlPXRoaXNbci4kZXh0cmFdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tyLiRhZGRIVE1MXSh0Lmh0bWwsdC5iYm94KX10aGlzW3IuJGV4dHJhXS5nZW5lcmF0b3I9bnVsbDtyZXR1cm4gbi5IVE1MUmVzdWx0LkVNUFRZfVtyLiRzZXRTZXRBdHRyaWJ1dGVzXShlKXt0aGlzW2tdPW5ldyBTZXQoT2JqZWN0LmtleXMoZSkpfVt5XShlKXtjb25zdCB0PXRoaXNbdV0sYT10aGlzW2tdO3JldHVyblsuLi5lXS5maWx0ZXIoKGU9PnQuaGFzKGUpJiYhYS5oYXMoZSkpKX1bci4kcmVzb2x2ZVByb3RvdHlwZXNdKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpuZXcgU2V0O2Zvcihjb25zdCBhIG9mIHRoaXNbZF0pYVt2XShlLHQpfVt2XShlLHQpe2NvbnN0IGE9dGhpc1tiXShlLHQpO2E/dGhpc1tsXShhLGUsdCk6dGhpc1tyLiRyZXNvbHZlUHJvdG90eXBlc10oZSx0KX1bYl0oZSx0KXtjb25zdHt1c2U6YSx1c2VocmVmOm59PXRoaXM7aWYoIWEmJiFuKXJldHVybiBudWxsO2xldCBzPW51bGwsbz1udWxsLGg9bnVsbCx1PWE7aWYobil7dT1uO24uc3RhcnRzV2l0aCgiI3NvbSgiKSYmbi5lbmRzV2l0aCgiKSIpP289bi5zbGljZSg1LC0xKTpuLnN0YXJ0c1dpdGgoIi4jc29tKCIpJiZuLmVuZHNXaXRoKCIpIik/bz1uLnNsaWNlKDYsLTEpOm4uc3RhcnRzV2l0aCgiIyIpP2g9bi5zbGljZSgxKTpuLnN0YXJ0c1dpdGgoIi4jIikmJihoPW4uc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/aD1hLnNsaWNlKDEpOm89YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYoaClzPWUuZ2V0KGgpO2Vsc2V7cz0oMCxjLnNlYXJjaE5vZGUpKGUuZ2V0KHIuJHJvb3QpLHRoaXMsbywhMCwhMSk7cyYmKHM9c1swXSl9aWYoIXMpeygwLGkud2FybikoYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHt1fS5gKTtyZXR1cm4gbnVsbH1pZihzW3IuJG5vZGVOYW1lXSE9PXRoaXNbci4kbm9kZU5hbWVdKXsoMCxpLndhcm4pKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3Nbci4kbm9kZU5hbWVdfSAhPT0gJHt0aGlzW3IuJG5vZGVOYW1lXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocykpeygwLGkud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHMpO2NvbnN0IGQ9c1tiXShlLHQpO2QmJnNbbF0oZCxlLHQpO3Nbci4kcmVzb2x2ZVByb3RvdHlwZXNdKGUsdCk7dC5kZWxldGUocyk7cmV0dXJuIHN9W2xdKGUsdCxhKXtpZihhLmhhcyhlKSl7KDAsaS53YXJuKSgiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW3IuJGNvbnRlbnRdJiZlW3IuJGNvbnRlbnRdJiYodGhpc1tyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdKTtuZXcgU2V0KGEpLmFkZChlKTtmb3IoY29uc3QgdCBvZiB0aGlzW3ldKGVba10pKXt0aGlzW3RdPWVbdF07dGhpc1trXSYmdGhpc1trXS5hZGQodCl9Zm9yKGNvbnN0IG4gb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbdV0uaGFzKG4pKWNvbnRpbnVlO2NvbnN0IGk9dGhpc1tuXSxzPWVbbl07aWYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBpW2RdKWVbdl0odCxhKTtmb3IobGV0IG49aVtkXS5sZW5ndGgsbz1zW2RdLmxlbmd0aDtuPG87bisrKXtjb25zdCBzPWVbZF1bbl1bci4kY2xvbmVdKCk7aWYoIWkucHVzaChzKSlicmVhaztzW0NdPXRoaXM7dGhpc1tkXS5wdXNoKHMpO3Nbdl0odCxhKX19ZWxzZSBpZihudWxsPT09aSl7aWYobnVsbCE9PXMpe2NvbnN0IGU9c1tyLiRjbG9uZV0oKTtlW0NdPXRoaXM7dGhpc1tuXT1lO3RoaXNbZF0ucHVzaChlKTtlW3ZdKHQsYSl9fWVsc2V7aVtyLiRyZXNvbHZlUHJvdG90eXBlc10odCxhKTtzJiZpW2xdKHMsdCxhKX19fXN0YXRpY1tmXShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLm1hcCgoZT0+WEZBT2JqZWN0W2ZdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3IuJGNsb25lXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHsoMCxpLnNoYWRvdykoZSx0LHRoaXNbdF0pfWVbci4kdWlkXT1gJHtlW3IuJG5vZGVOYW1lXX0ke1QrK31gO2VbZF09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbdV0uaGFzKHQpKXtlW3RdPVhGQU9iamVjdFtmXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBhPXRoaXNbdF07ZVt0XT1hIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KGFbU10pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tkXSl7Y29uc3QgYT10W3IuJG5vZGVOYW1lXSxuPXRbci4kY2xvbmVdKCk7ZVtkXS5wdXNoKG4pO25bQ109ZTtudWxsPT09ZVthXT9lW2FdPW46ZVthXVtkXS5wdXNoKG4pfXJldHVybiBlfVtyLiRnZXRDaGlsZHJlbl0oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gZT90aGlzW2RdLmZpbHRlcigodD0+dFtyLiRub2RlTmFtZV09PT1lKSk6dGhpc1tkXX1bci4kZ2V0Q2hpbGRyZW5CeUNsYXNzXShlKXtyZXR1cm4gdGhpc1tlXX1bci4kZ2V0Q2hpbGRyZW5CeU5hbWVdKGUsdCl7bGV0IGE9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzW3IuJGdldENoaWxkcmVuQnlOYW1lSXRdKGUsdCxhKSl9W3IuJGdldENoaWxkcmVuQnlOYW1lSXRdKGUsdCl7dmFyIGE9dGhpcztsZXQgbj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiBmdW5jdGlvbiooKXtpZigicGFyZW50IiE9PWUpe2Zvcihjb25zdCBuIG9mIGFbZF0pe25bci4kbm9kZU5hbWVdPT09ZSYmKHlpZWxkIG4pO24ubmFtZT09PWUmJih5aWVsZCBuKTsodHx8bltyLiRpc1RyYW5zcGFyZW50XSgpKSYmKHlpZWxkKm5bci4kZ2V0Q2hpbGRyZW5CeU5hbWVJdF0oZSx0LCExKSl9biYmYVt1XS5oYXMoZSkmJih5aWVsZCBuZXcgWEZBQXR0cmlidXRlKGEsZSxhW2VdKSl9ZWxzZSB5aWVsZCBhW0NdfSgpfX10LlhGQU9iamVjdD1YRkFPYmplY3Q7Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MS8wO3RoaXNbU109ZTt0aGlzW2RdPVtdfWdldCBpc1hGQU9iamVjdCgpe3JldHVybiExfWdldCBpc1hGQU9iamVjdEFycmF5KCl7cmV0dXJuITB9cHVzaChlKXtpZih0aGlzW2RdLmxlbmd0aDw9dGhpc1tTXSl7dGhpc1tkXS5wdXNoKGUpO3JldHVybiEwfSgwLGkud2FybikoYFhGQSAtIG5vZGUgIiR7ZVtyLiRub2RlTmFtZV19IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbU119IGNoaWxkcmVuYCk7cmV0dXJuITF9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tkXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1tkXS5sZW5ndGg/dGhpc1tkXVswXVtyLiRkdW1wXSgpOnRoaXNbZF0ubWFwKChlPT5lW3IuJGR1bXBdKCkpKX1bci4kY2xvbmVdKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tTXSk7ZVtkXT10aGlzW2RdLm1hcCgoZT0+ZVtyLiRjbG9uZV0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW2RdfWNsZWFyKCl7dGhpc1tkXS5sZW5ndGg9MH19dC5YRkFPYmplY3RBcnJheT1YRkFPYmplY3RBcnJheTtjbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXNbQ109ZTt0aGlzW3IuJG5vZGVOYW1lXT10O3RoaXNbci4kY29udGVudF09YTt0aGlzW3IuJGNvbnN1bWVkXT0hMTt0aGlzW3IuJHVpZF09ImF0dHJpYnV0ZSIrVCsrfVtyLiRnZXRQYXJlbnRdKCl7cmV0dXJuIHRoaXNbQ119W3IuJGlzRGF0YVZhbHVlXSgpe3JldHVybiEwfVtyLiRnZXREYXRhVmFsdWVdKCl7cmV0dXJuIHRoaXNbci4kY29udGVudF0udHJpbSgpfVtyLiRzZXRWYWx1ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW3IuJGNvbnRlbnRdPWUudG9TdHJpbmcoKX1bci4kdGV4dF0oKXtyZXR1cm4gdGhpc1tyLiRjb250ZW50XX1bci4kaXNEZXNjZW5kZW50XShlKXtyZXR1cm4gdGhpc1tDXT09PWV8fHRoaXNbQ11bci4kaXNEZXNjZW5kZW50XShlKX19dC5YRkFBdHRyaWJ1dGU9WEZBQXR0cmlidXRlO2NsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtzdXBlcihlLHQpO3RoaXNbci4kY29udGVudF09IiI7dGhpc1tnXT1udWxsO2lmKCIjdGV4dCIhPT10KXtjb25zdCBlPW5ldyBNYXA7dGhpc1toXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShyLiRuc0F0dHJpYnV0ZXMpKXtjb25zdCBlPWFbci4kbnNBdHRyaWJ1dGVzXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW2ddPSExOiJkYXRhVmFsdWUiPT09ZSYmKHRoaXNbZ109ITApKX19dGhpc1tyLiRjb25zdW1lZF09ITF9W3IuJHRvU3RyaW5nXShlKXtjb25zdCB0PXRoaXNbci4kbm9kZU5hbWVdO2lmKCIjdGV4dCI9PT10KXtlLnB1c2goKDAscy5lbmNvZGVUb1htbFN0cmluZykodGhpc1tyLiRjb250ZW50XSkpO3JldHVybn1jb25zdCBhPSgwLGkudXRmOFN0cmluZ1RvU3RyaW5nKSh0KSxuPXRoaXNbci4kbmFtZXNwYWNlSWRdPT09TT8ieGZhOiI6IiI7ZS5wdXNoKGA8JHtufSR7YX1gKTtmb3IoY29uc3RbdCxhXW9mIHRoaXNbaF0uZW50cmllcygpKXtjb25zdCBuPSgwLGkudXRmOFN0cmluZ1RvU3RyaW5nKSh0KTtlLnB1c2goYCAke259PSIkeygwLHMuZW5jb2RlVG9YbWxTdHJpbmcpKGFbci4kY29udGVudF0pfSJgKX1udWxsIT09dGhpc1tnXSYmKHRoaXNbZ10/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbci4kY29udGVudF18fDAhPT10aGlzW2RdLmxlbmd0aCl7ZS5wdXNoKCI+Iik7aWYodGhpc1tyLiRjb250ZW50XSkic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0/ZS5wdXNoKCgwLHMuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXNbci4kY29udGVudF0pKTp0aGlzW3IuJGNvbnRlbnRdW3IuJHRvU3RyaW5nXShlKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbZF0pdFtyLiR0b1N0cmluZ10oZSk7ZS5wdXNoKGA8LyR7bn0ke2F9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtyLiRvbkNoaWxkXShlKXtpZih0aGlzW3IuJGNvbnRlbnRdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tyLiRuYW1lc3BhY2VJZF0sIiN0ZXh0Iik7dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7ZVtyLiRjb250ZW50XT10aGlzW3IuJGNvbnRlbnRdO3RoaXNbci4kY29udGVudF09IiJ9dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7cmV0dXJuITB9W3IuJG9uVGV4dF0oZSl7dGhpc1tyLiRjb250ZW50XSs9ZX1bci4kZmluYWxpemVdKCl7aWYodGhpc1tyLiRjb250ZW50XSYmdGhpc1tkXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbci4kbmFtZXNwYWNlSWRdLCIjdGV4dCIpO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpO2Vbci4kY29udGVudF09dGhpc1tyLiRjb250ZW50XTtkZWxldGUgdGhpc1tyLiRjb250ZW50XX19W3IuJHRvSFRNTF0oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tyLiRub2RlTmFtZV0/bi5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6IiN0ZXh0Iix2YWx1ZTp0aGlzW3IuJGNvbnRlbnRdfSk6bi5IVE1MUmVzdWx0LkVNUFRZfVtyLiRnZXRDaGlsZHJlbl0oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gZT90aGlzW2RdLmZpbHRlcigodD0+dFtyLiRub2RlTmFtZV09PT1lKSk6dGhpc1tkXX1bci4kZ2V0QXR0cmlidXRlc10oKXtyZXR1cm4gdGhpc1toXX1bci4kZ2V0Q2hpbGRyZW5CeUNsYXNzXShlKXtjb25zdCB0PXRoaXNbaF0uZ2V0KGUpO3JldHVybiB2b2lkIDAhPT10P3Q6dGhpc1tyLiRnZXRDaGlsZHJlbl0oZSl9KltyLiRnZXRDaGlsZHJlbkJ5TmFtZUl0XShlLHQpe2NvbnN0IGE9dGhpc1toXS5nZXQoZSk7YSYmKHlpZWxkIGEpO2Zvcihjb25zdCBhIG9mIHRoaXNbZF0pe2Fbci4kbm9kZU5hbWVdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW3IuJGdldENoaWxkcmVuQnlOYW1lSXRdKGUsdCkpfX0qW3IuJGdldEF0dHJpYnV0ZUl0XShlLHQpe2NvbnN0IGE9dGhpc1toXS5nZXQoZSk7IWF8fHQmJmFbci4kY29uc3VtZWRdfHwoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tkXSl5aWVsZCphW3IuJGdldEF0dHJpYnV0ZUl0XShlLHQpfSpbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsdCxhKXtmb3IoY29uc3QgbiBvZiB0aGlzW2RdKXtuW3IuJG5vZGVOYW1lXSE9PWV8fGEmJm5bci4kY29uc3VtZWRdfHwoeWllbGQgbik7dCYmKHlpZWxkKm5bci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsdCxhKSl9fVtyLiRpc0RhdGFWYWx1ZV0oKXtyZXR1cm4gbnVsbD09PXRoaXNbZ10/MD09PXRoaXNbZF0ubGVuZ3RofHx0aGlzW2RdWzBdW3IuJG5hbWVzcGFjZUlkXT09PW8uTmFtZXNwYWNlSWRzLnhodG1sLmlkOnRoaXNbZ119W3IuJGdldERhdGFWYWx1ZV0oKXtyZXR1cm4gbnVsbD09PXRoaXNbZ10/MD09PXRoaXNbZF0ubGVuZ3RoP3RoaXNbci4kY29udGVudF0udHJpbSgpOnRoaXNbZF1bMF1bci4kbmFtZXNwYWNlSWRdPT09by5OYW1lc3BhY2VJZHMueGh0bWwuaWQ/dGhpc1tkXVswXVtyLiR0ZXh0XSgpLnRyaW0oKTpudWxsOnRoaXNbci4kY29udGVudF0udHJpbSgpfVtyLiRzZXRWYWx1ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW3IuJGNvbnRlbnRdPWUudG9TdHJpbmcoKX1bci4kZHVtcF0oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlJiYodC4kbnM9dGhpc1tyLiRuYW1lc3BhY2VJZF0pO3RoaXNbci4kY29udGVudF0mJih0LiRjb250ZW50PXRoaXNbci4kY29udGVudF0pO3QuJG5hbWU9dGhpc1tyLiRub2RlTmFtZV07dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgYSBvZiB0aGlzW2RdKXQuY2hpbGRyZW4ucHVzaChhW3IuJGR1bXBdKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbaF0pdC5hdHRyaWJ1dGVzW2VdPWFbci4kY29udGVudF07cmV0dXJuIHR9fXQuWG1sT2JqZWN0PVhtbE9iamVjdDtjbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW3IuJGNvbnRlbnRdPSIifVtyLiRvblRleHRdKGUpe3RoaXNbci4kY29udGVudF0rPWV9W3IuJGZpbmFsaXplXSgpe319dC5Db250ZW50T2JqZWN0PUNvbnRlbnRPYmplY3Q7Y2xhc3MgT3B0aW9uT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoZSx0KTt0aGlzW3hdPWF9W3IuJGZpbmFsaXplXSgpe3RoaXNbci4kY29udGVudF09KDAsbi5nZXRLZXl3b3JkKSh7ZGF0YTp0aGlzW3IuJGNvbnRlbnRdLGRlZmF1bHRWYWx1ZTp0aGlzW3hdWzBdLHZhbGlkYXRlOmU9PnRoaXNbeF0uaW5jbHVkZXMoZSl9KX1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTtkZWxldGUgdGhpc1t4XX19dC5PcHRpb25PYmplY3Q9T3B0aW9uT2JqZWN0O2NsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3IuJGZpbmFsaXplXSgpe3RoaXNbci4kY29udGVudF09dGhpc1tyLiRjb250ZW50XS50cmltKCl9fXQuU3RyaW5nT2JqZWN0PVN0cmluZ09iamVjdDtjbGFzcyBJbnRlZ2VyT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihlLHQpO3RoaXNbcF09YTt0aGlzW09dPXJ9W3IuJGZpbmFsaXplXSgpe3RoaXNbci4kY29udGVudF09KDAsbi5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW3IuJGNvbnRlbnRdLGRlZmF1bHRWYWx1ZTp0aGlzW3BdLHZhbGlkYXRlOnRoaXNbT119KX1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTtkZWxldGUgdGhpc1twXTtkZWxldGUgdGhpc1tPXX19dC5JbnRlZ2VyT2JqZWN0PUludGVnZXJPYmplY3Q7dC5PcHRpb24wMT1jbGFzcyBPcHRpb24wMSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMCwoZT0+MT09PWUpKX19O3QuT3B0aW9uMTA9Y2xhc3MgT3B0aW9uMTAgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDEsKGU9PjA9PT1lKSl9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jcmVhdGVEYXRhTm9kZT1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3QgaT1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIWkpcmV0dXJuIG51bGw7aWYoaS5zb21lKChlPT5lLm9wZXJhdG9yPT09by5kb3REb3QpKSlyZXR1cm4gbnVsbDtjb25zdCBzPWMuZ2V0KGlbMF0ubmFtZSk7bGV0IGw9MDtpZihzKXtlPXMoZSx0KTtsPTF9ZWxzZSBlPXR8fGU7Zm9yKGxldCB0PWkubGVuZ3RoO2w8dDtsKyspe2NvbnN0e25hbWU6dCxvcGVyYXRvcjphLGluZGV4OnN9PWlbbF07aWYoIWlzRmluaXRlKHMpKXtpW2xdLmluZGV4PTA7cmV0dXJuIGUuY3JlYXRlTm9kZXMoaS5zbGljZShsKSl9bGV0IGM7c3dpdGNoKGEpe2Nhc2Ugby5kb3Q6Yz1lW3IuJGdldENoaWxkcmVuQnlOYW1lXSh0LCExKTticmVhaztjYXNlIG8uZG90RG90OmM9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMCk7YnJlYWs7Y2FzZSBvLmRvdEhhc2g6Yz1lW3IuJGdldENoaWxkcmVuQnlDbGFzc10odCk7Yz1jLmlzWEZBT2JqZWN0QXJyYXk/Yy5jaGlsZHJlbjpbY119aWYoMD09PWMubGVuZ3RoKXJldHVybiBlLmNyZWF0ZU5vZGVzKGkuc2xpY2UobCkpO2lmKCEoczxjLmxlbmd0aCkpe2lbbF0uaW5kZXg9cy1jLmxlbmd0aDtyZXR1cm4gZS5jcmVhdGVOb2RlcyhpLnNsaWNlKGwpKX17Y29uc3QgdD1jW3NdO2lmKCF0LmlzWEZBT2JqZWN0KXsoMCxuLndhcm4pKCJYRkEgLSBDYW5ub3QgY3JlYXRlIGEgbm9kZS4iKTtyZXR1cm4gbnVsbH1lPXR9fXJldHVybiBudWxsfTt0LnNlYXJjaE5vZGU9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsYSl7bGV0IG49IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxpPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF07Y29uc3Qgcz1wYXJzZUV4cHJlc3Npb24oYSxuKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCBoPWMuZ2V0KHNbMF0ubmFtZSk7bGV0IHUsZD0wO2lmKGgpe3U9ITA7ZT1baChlLHQpXTtkPTF9ZWxzZXt1PW51bGw9PT10O2U9W3R8fGVdfWZvcihsZXQgYT1zLmxlbmd0aDtkPGE7ZCsrKXtjb25zdHtuYW1lOmEsY2FjaGVOYW1lOm4sb3BlcmF0b3I6YyxpbmRleDpofT1zW2RdLGY9W107Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuaXNYRkFPYmplY3QpY29udGludWU7bGV0IGUscztpZihpKXtzPWwuZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7bC5zZXQodCxzKX1lPXMuZ2V0KG4pfWlmKCFlKXtzd2l0Y2goYyl7Y2FzZSBvLmRvdDplPXRbci4kZ2V0Q2hpbGRyZW5CeU5hbWVdKGEsITEpO2JyZWFrO2Nhc2Ugby5kb3REb3Q6ZT10W3IuJGdldENoaWxkcmVuQnlOYW1lXShhLCEwKTticmVhaztjYXNlIG8uZG90SGFzaDplPXRbci4kZ2V0Q2hpbGRyZW5CeUNsYXNzXShhKTtlPWUuaXNYRkFPYmplY3RBcnJheT9lLmNoaWxkcmVuOltlXX1pJiZzLnNldChuLGUpfWUubGVuZ3RoPjAmJmYucHVzaChlKX1pZigwIT09Zi5sZW5ndGh8fHV8fDAhPT1kKWU9aXNGaW5pdGUoaCk/Zi5maWx0ZXIoKGU9Pmg8ZS5sZW5ndGgpKS5tYXAoKGU9PmVbaF0pKTpmLmZsYXQoKTtlbHNle2NvbnN0IGE9dFtyLiRnZXRQYXJlbnRdKCk7aWYoISh0PWEpKXJldHVybiBudWxsO2Q9LTE7ZT1bdF19fWlmKDA9PT1lLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gZX07YSgxMzkpO3ZhciByPWEoMjI4KSxuPWEoMTQ0KTtjb25zdCBpPS9eW14uW10rLyxzPS9eW15cXV0rLyxvPXtkb3Q6MCxkb3REb3Q6MSxkb3RIYXNoOjIsZG90QnJhY2tldDozLGRvdFBhcmVuOjR9LGM9bmV3IE1hcChbWyIkZGF0YSIsKGUsdCk9PmUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmVdLFsiJHJlY29yZCIsKGUsdCk9PihlLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplKVtyLiRnZXRDaGlsZHJlbl0oKVswXV0sWyIkdGVtcGxhdGUiLChlLHQpPT5lLnRlbXBsYXRlXSxbIiRjb25uZWN0aW9uU2V0IiwoZSx0KT0+ZS5jb25uZWN0aW9uU2V0XSxbIiRmb3JtIiwoZSx0KT0+ZS5mb3JtXSxbIiRsYXlvdXQiLChlLHQpPT5lLmxheW91dF0sWyIkaG9zdCIsKGUsdCk9PmUuaG9zdF0sWyIkZGF0YVdpbmRvdyIsKGUsdCk9PmUuZGF0YVdpbmRvd10sWyIkZXZlbnQiLChlLHQpPT5lLmV2ZW50XSxbIiEiLChlLHQpPT5lLmRhdGFzZXRzXSxbIiR4ZmEiLChlLHQpPT5lXSxbInhmYSIsKGUsdCk9PmVdLFsiJCIsKGUsdCk9PnRdXSksbD1uZXcgV2Vha01hcDtmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0KXtsZXQgYT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHI9ZS5tYXRjaChpKTtpZighcilyZXR1cm4gbnVsbDtsZXRbY109cjtjb25zdCBsPVt7bmFtZTpjLGNhY2hlTmFtZToiLiIrYyxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbCxvcGVyYXRvcjpvLmRvdH1dO2xldCBoPWMubGVuZ3RoO2Zvcig7aDxlLmxlbmd0aDspe2NvbnN0IGQ9aDtpZigiWyI9PT1lLmNoYXJBdChoKyspKXtyPWUuc2xpY2UoaCkubWF0Y2gocyk7aWYoIXIpeygwLG4ud2FybikoIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1sLmF0KC0xKS5pbmRleD0iKiI9PT0odT0odT1yWzBdKS50cmltKCkpPzEvMDpwYXJzZUludCh1LDEwKXx8MDtoKz1yWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBmO3N3aXRjaChlLmNoYXJBdChoKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtoKys7Zj1vLmRvdERvdDticmVhaztjYXNlIiMiOmgrKztmPW8uZG90SGFzaDticmVhaztjYXNlIlsiOmlmKGEpeygwLG4ud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgRm9ybUNhbGMgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9Zj1vLmRvdEJyYWNrZXQ7YnJlYWs7Y2FzZSIoIjppZihhKXsoMCxuLndhcm4pKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEphdmFTY3JpcHQgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9Zj1vLmRvdFBhcmVuO2JyZWFrO2RlZmF1bHQ6Zj1vLmRvdH1yPWUuc2xpY2UoaCkubWF0Y2goaSk7aWYoIXIpYnJlYWs7W2NdPXI7aCs9Yy5sZW5ndGg7bC5wdXNoKHtuYW1lOmMsY2FjaGVOYW1lOmUuc2xpY2UoZCxoKSxvcGVyYXRvcjpmLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIHU7cmV0dXJuIGx9fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRhdGFIYW5kbGVyPXZvaWQgMDthKDEzOSk7dmFyIHI9YSgyMjgpO3QuRGF0YUhhbmRsZXI9Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtyLiRnZXRDaGlsZHJlbl0oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGE9dC5hdCgtMSksW24saV09YTtpZihuKzE9PT1pLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCBzPWlbKythWzBdXSxvPWUuZ2V0KHNbci4kdWlkXSk7aWYobylzW3IuJHNldFZhbHVlXShvKTtlbHNle2NvbnN0IHQ9c1tyLiRnZXRBdHRyaWJ1dGVzXSgpO2Zvcihjb25zdCBhIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQoYVtyLiR1aWRdKTtpZih0KXthW3IuJHNldFZhbHVlXSh0KTticmVha319fWNvbnN0IGM9c1tyLiRnZXRDaGlsZHJlbl0oKTtjLmxlbmd0aD4wJiZ0LnB1c2goWy0xLGNdKX1jb25zdCBhPVsnPHhmYTpkYXRhc2V0cyB4bWxuczp4ZmE9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvMS4wLyI+J107aWYodGhpcy5kYXRhc2V0KWZvcihjb25zdCBlIG9mIHRoaXMuZGF0YXNldFtyLiRnZXRDaGlsZHJlbl0oKSkiZGF0YSIhPT1lW3IuJG5vZGVOYW1lXSYmZVtyLiR0b1N0cmluZ10oYSk7dGhpcy5kYXRhW3IuJHRvU3RyaW5nXShhKTthLnB1c2goIjwveGZhOmRhdGFzZXRzPiIpO3JldHVybiBhLmpvaW4oIiIpfX19LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWEZBUGFyc2VyPXZvaWQgMDthKDExNik7YSgxMjYpO2EoMTI4KTthKDEzMSk7YSgxMzMpO2EoMTM1KTthKDEzNyk7YSgxMzkpO3ZhciByPWEoMjI4KSxuPWEoMjE3KSxpPWEoMjQ0KSxzPWEoMTQ0KTtjbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBuLlhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3IoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07c3VwZXIoKTt0aGlzLl9idWlsZGVyPW5ldyBpLkJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPW4uWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3I7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1uLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yKXt0aGlzLl9jdXJyZW50W3IuJGZpbmFsaXplXSgpO3JldHVybiB0aGlzLl9jdXJyZW50LmVsZW1lbnR9fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwsbj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6byx2YWx1ZTpjfW9mIGUpaWYoInhtbG5zIj09PW8pYT8oMCxzLndhcm4pKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPWM7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW8uc3Vic3RyaW5nKDYpO258fChuPVtdKTtuLnB1c2goe3ByZWZpeDplLHZhbHVlOmN9KX1lbHNle2NvbnN0IGU9by5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKWlbb109YztlbHNle2xldCB0PWlbci4kbnNBdHRyaWJ1dGVzXTt0fHwodD1pW3IuJG5zQXR0cmlidXRlc109T2JqZWN0LmNyZWF0ZShudWxsKSk7Y29uc3RbYSxuXT1bby5zbGljZSgwLGUpLG8uc2xpY2UoZSsxKV07KHRbYV18fD1PYmplY3QuY3JlYXRlKG51bGwpKVtuXT1jfX1yZXR1cm5bYSxuLGldfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbbixpLHNdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtvLGNdPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxsPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4OmMsbmFtZTpvLGF0dHJpYnV0ZXM6cyxuYW1lc3BhY2U6bixwcmVmaXhlczppfSk7bFtyLiRnbG9iYWxEYXRhXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2xbci4kZmluYWxpemVdKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXShsKSYmbFtyLiRzZXRJZF0odGhpcy5faWRzKTtsW3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1sfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbci4kaXNDREFUQVhtbF0oKSYmInN0cmluZyI9PXR5cGVvZiB0W3IuJGNvbnRlbnRdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W3IuJGNvbnRlbnRdKTt0W3IuJGNvbnRlbnRdPW51bGw7dFtyLiRvbkNoaWxkXShhKX10W3IuJGZpbmFsaXplXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXSh0KSYmdFtyLiRzZXRJZF0odGhpcy5faWRzKTt0W3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX10LlhGQVBhcnNlcj1YRkFQYXJzZXJ9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQnVpbGRlcj12b2lkIDA7YSgxMzkpO3ZhciByPWEoMjM0KSxuPWEoMjI4KSxpPWEoMjQ1KSxzPWEoMjMwKSxvPWEoMjU0KSxjPWEoMTQ0KSxsPWEoMjQwKTtjbGFzcyBSb290IGV4dGVuZHMgbC5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbbi4kaWRzXT1lfVtuLiRvbkNoaWxkXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1bbi4kZmluYWxpemVdKCl7c3VwZXJbbi4kZmluYWxpemVdKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSl7dGhpc1tuLiRpZHNdLnNldChuLiRyb290LHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW24uJHJlc29sdmVQcm90b3R5cGVzXSh0aGlzW24uJGlkc10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtuLiRpZHNdPXRoaXNbbi4kaWRzXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgbC5YRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bbi4kb25DaGlsZF0oZSl7cmV0dXJuITF9fXQuQnVpbGRlcj1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhyLk5hbWVzcGFjZUlkcykubWFwKChlPT57bGV0e2lkOnR9PWU7cmV0dXJuIHR9KSkpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9ZXx8bmV3IG8uVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKX1idWlsZFJvb3QoZSl7cmV0dXJuIG5ldyBSb290KGUpfWJ1aWxkKGUpe2xldHtuc1ByZWZpeDp0LG5hbWU6YSxhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOm8scHJlZml4ZXM6Y309ZTtjb25zdCBsPW51bGwhPT1vO2lmKGwpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uobyl9YyYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KGMpO2lmKHMuaGFzT3duUHJvcGVydHkobi4kbnNBdHRyaWJ1dGVzKSl7Y29uc3QgZT1pLk5hbWVzcGFjZVNldFVwLmRhdGFzZXRzLHQ9c1tuLiRuc0F0dHJpYnV0ZXNdO2xldCBhPW51bGw7Zm9yKGNvbnN0W3Isbl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2Uocik9PT1lKXthPXt4ZmE6bn07YnJlYWt9fWE/c1tuLiRuc0F0dHJpYnV0ZXNdPWE6ZGVsZXRlIHNbbi4kbnNBdHRyaWJ1dGVzXX1jb25zdCBoPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKHQpLHU9aD8uW3IuJGJ1aWxkWEZBT2JqZWN0XShhLHMpfHxuZXcgRW1wdHk7dVtuLiRpc05zQWdub3N0aWNdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhsfHxjfHx1W24uJGlzTnNBZ25vc3RpY10oKSkmJih1W24uJGNsZWFudXBdPXtoYXNOYW1lc3BhY2U6bCxwcmVmaXhlczpjLG5zQWdub3N0aWM6dVtuLiRpc05zQWdub3N0aWNdKCl9KTtyZXR1cm4gdX1pc05zQWdub3N0aWMoKXtyZXR1cm4gdGhpcy5fbnNBZ25vc3RpY0xldmVsPjB9X3NlYXJjaE5hbWVzcGFjZShlKXtsZXQgdD10aGlzLl9uYW1lc3BhY2VzLmdldChlKTtpZih0KXJldHVybiB0O2Zvcihjb25zdFthLHtjaGVjazpufV1vZiBPYmplY3QuZW50cmllcyhyLk5hbWVzcGFjZUlkcykpaWYobihlKSl7dD1pLk5hbWVzcGFjZVNldFVwW2FdO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgby5Vbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpO3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9X2FkZE5hbWVzcGFjZVByZWZpeChlKXtmb3IoY29uc3R7cHJlZml4OnQsdmFsdWU6YX1vZiBlKXtjb25zdCBlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShhKTtsZXQgcj10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQodCk7aWYoIXIpe3I9W107dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuc2V0KHQscil9ci5wdXNoKGUpfX1fZ2V0TmFtZXNwYWNlVG9Vc2UoZSl7aWYoIWUpcmV0dXJuIHRoaXMuX2N1cnJlbnROYW1lc3BhY2U7Y29uc3QgdD10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSk7aWYodD8ubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpOygwLGMud2FybikoYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6cn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKChlPT57bGV0e3ByZWZpeDp0fT1lO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldCh0KS5wb3AoKX0pKTtyJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwtLX19fSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5hbWVzcGFjZVNldFVwPXZvaWQgMDt2YXIgcj1hKDI0Niksbj1hKDI0NyksaT1hKDI0OCkscz1hKDI0OSksbz1hKDI1MCksYz1hKDI1MSksbD1hKDIzMCksaD1hKDI1MiksdT1hKDI1Myk7Y29uc3QgZD17Y29uZmlnOnIuQ29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246bi5Db25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOmkuRGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OnMuTG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpvLlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OmMuU3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpsLlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpoLlhkcE5hbWVzcGFjZSx4aHRtbDp1LlhodG1sTmFtZXNwYWNlfTt0Lk5hbWVzcGFjZVNldFVwPWR9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29uZmlnTmFtZXNwYWNlPXZvaWQgMDthKDEzOSk7dmFyIHI9YSgyMzQpLG49YSgyMjgpLGk9YSgyNDApLHM9YSgyMzcpLG89YSgxNDQpO2NvbnN0IGM9ci5OYW1lc3BhY2VJZHMuY29uZmlnLmlkO2NsYXNzIEFjcm9iYXQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFjcm9iYXQ3IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJBREJFX0pTQ29uc29sZSIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFEQkVfSlNEZWJ1Z2dlciBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIkFEQkVfSlNEZWJ1Z2dlciIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFkZFNpbGVudFByaW50IGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYWRkVmlld2VyUHJlZmVyZW5jZXMiKX19Y2xhc3MgQWRqdXN0RGF0YSBleHRlbmRzIGkuT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYWRqdXN0RGF0YSIpfX1jbGFzcyBBZG9iZUV4dGVuc2lvbkxldmVsIGV4dGVuZHMgaS5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsKGU9PmU+PTEmJmU8PTgpKX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhZ2VudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmNvbW1vbj1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYWx3YXlzRW1iZWQiKX19Y2xhc3MgQW1kIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYW1kIil9fWNsYXNzIEFyZWEgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhcmVhIik7dGhpcy5sZXZlbD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUubGV2ZWwsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9M30pO3RoaXMubmFtZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiIiwiYmFyY29kZSIsImNvcmVpbml0IiwiZGV2aWNlRHJpdmVyIiwiZm9udCIsImdlbmVyYWwiLCJsYXlvdXQiLCJtZXJnZSIsInNjcmlwdCIsInNpZ25hdHVyZSIsInNvdXJjZVNldCIsInRlbXBsYXRlQ2FjaGUiXSl9fWNsYXNzIEF0dHJpYnV0ZXMgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYXV0b1NhdmUiLFsiZGlzYWJsZWQiLCJlbmFibGVkIl0pfX1jbGFzcyBCYXNlIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYmFzZSIpfX1jbGFzcyBCYXRjaE91dHB1dCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImJlaGF2aW9yT3ZlcnJpZGUiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT1uZXcgTWFwKHRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PmUuaW5jbHVkZXMoIjoiKSkpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl9fWNsYXNzIENhY2hlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjaGFuZ2UiKX19Y2xhc3MgQ29tbW9uIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY29tbW9uIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5sb2NhbGU9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMubWVzc2FnaW5nPW51bGw7dGhpcy5zdXBwcmVzc0Jhbm5lcj1udWxsO3RoaXMudGVtcGxhdGU9bnVsbDt0aGlzLnZhbGlkYXRpb25NZXNzYWdpbmc9bnVsbDt0aGlzLnZlcnNpb25Db250cm9sPW51bGw7dGhpcy5sb2c9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbXByZXNzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY29tcHJlc3MiKTt0aGlzLnNjb3BlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnNjb3BlLFsiaW1hZ2VPbmx5IiwiZG9jdW1lbnQiXSl9fWNsYXNzIENvbXByZXNzTG9naWNhbFN0cnVjdHVyZSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgaS5PcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjb21wcmVzc09iamVjdFN0cmVhbSIpfX1jbGFzcyBDb21wcmVzc2lvbiBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNvbXByZXNzaW9uIiwhMCk7dGhpcy5jb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmU9bnVsbDt0aGlzLmNvbXByZXNzT2JqZWN0U3RyZWFtPW51bGw7dGhpcy5sZXZlbD1udWxsO3RoaXMudHlwZT1udWxsfX1jbGFzcyBDb25maWcgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgQ29uZm9ybWFuY2UgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNvbnRlbnRDb3B5Iil9fWNsYXNzIENvcGllcyBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjb3BpZXMiLDEsKGU9PmU+PTEpKX19Y2xhc3MgQ3JlYXRvciBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY3VycmVudFBhZ2UiLDAsKGU9PmU+PTApKX19Y2xhc3MgRGF0YSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImRhdGEiLCEwKTt0aGlzLmFkanVzdERhdGE9bnVsbDt0aGlzLmF0dHJpYnV0ZXM9bnVsbDt0aGlzLmluY3JlbWVudGFsTG9hZD1udWxsO3RoaXMub3V0cHV0WFNMPW51bGw7dGhpcy5yYW5nZT1udWxsO3RoaXMucmVjb3JkPW51bGw7dGhpcy5zdGFydE5vZGU9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMud2luZG93PW51bGw7dGhpcy54c2w9bnVsbDt0aGlzLmV4Y2x1ZGVOUz1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnRyYW5zZm9ybT1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkZWJ1ZyIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIERlZmF1bHRUeXBlZmFjZSBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkZWZhdWx0VHlwZWZhY2UiKTt0aGlzLndyaXRpbmdTY3JpcHQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUud3JpdGluZ1NjcmlwdCxbIioiLCJBcmFiaWMiLCJDeXJpbGxpYyIsIkVhc3RFdXJvcGVhblJvbWFuIiwiR3JlZWsiLCJIZWJyZXciLCJKYXBhbmVzZSIsIktvcmVhbiIsIlJvbWFuIiwiU2ltcGxpZmllZENoaW5lc2UiLCJUaGFpIiwiVHJhZGl0aW9uYWxDaGluZXNlIiwiVmlldG5hbWVzZSJdKX19Y2xhc3MgRGVzdGluYXRpb24gZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZG9jdW1lbnRBc3NlbWJseSIpfX1jbGFzcyBEcml2ZXIgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkcml2ZXIiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIER1cGxleE9wdGlvbiBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImR5bmFtaWNSZW5kZXIiLFsiZm9yYmlkZGVuIiwicmVxdWlyZWQiXSl9fWNsYXNzIEVtYmVkIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbWJlZCIpfX1jbGFzcyBFbmNyeXB0IGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbmNyeXB0Iil9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0aW9uTGV2ZWw9bnVsbDt0aGlzLnBlcm1pc3Npb25zPW51bGx9fWNsYXNzIEVuY3J5cHRpb25MZXZlbCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImVuZm9yY2UiKX19Y2xhc3MgRXF1YXRlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZXF1YXRlIik7dGhpcy5mb3JjZT0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUuZm9yY2UsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+MD09PWV9KTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIifX1jbGFzcyBFcXVhdGVSYW5nZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxhPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IHIgb2YgYS5zcGxpdCgiLCIpLm1hcCgoZT0+ZS50cmltKCkpKS5maWx0ZXIoKGU9PiEhZSkpKXtyPXIuc3BsaXQoIi0iLDIpLm1hcCgoZT0+e2NvbnN0IGE9ZS5tYXRjaCh0KTtyZXR1cm4gYT9wYXJzZUludChhWzFdLDE2KTowfSkpOzE9PT1yLmxlbmd0aCYmci5wdXNoKHJbMF0pO2UucHVzaChyKX1yZXR1cm4oMCxvLnNoYWRvdykodGhpcywidW5pY29kZVJhbmdlIixlKX19Y2xhc3MgRXhjbHVkZSBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJleGNsdWRlIil9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZSYmWyJjYWxjdWxhdGUiLCJjbG9zZSIsImVudGVyIiwiZXhpdCIsImluaXRpYWxpemUiLCJyZWFkeSIsInZhbGlkYXRlIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgRXhjbHVkZU5TIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZXhjbHVkZU5TIil9fWNsYXNzIEZsaXBMYWJlbCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBGb250SW5mbyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IGkuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VHlwZWZhY2U9bmV3IGkuWEZBT2JqZWN0QXJyYXk7dGhpcy5uZXZlckVtYmVkPW5ldyBpLlhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJmb3JtRmllbGRGaWxsaW5nIil9fWNsYXNzIEdyb3VwUGFyZW50IGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZ3JvdXBQYXJlbnQiKX19Y2xhc3MgSWZFbXB0eSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImluY2x1ZGVYRFBDb250ZW50Iil9fWNsYXNzIEluY3JlbWVudGFsTG9hZCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImluY3JlbWVudGFsTG9hZCIsWyJub25lIiwiZm9yd2FyZE9ubHkiXSl9fWNsYXNzIEluY3JlbWVudGFsTWVyZ2UgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImludGVyYWN0aXZlIil9fWNsYXNzIEpvZyBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImpvZyIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm5vbmUiLCJwYWdlU2V0Il0pfX1jbGFzcyBMYWJlbFByaW50ZXIgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImxheW91dCIsWyJwYWdpbmF0ZSIsInBhbmVsIl0pfX1jbGFzcyBMZXZlbCBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJsZXZlbCIsMCwoZT0+ZT4wKSl9fWNsYXNzIExpbmVhcml6ZWQgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImxpbmVhcml6ZWQiKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibG9jYWxlIil9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImxvY2FsZVNldCIpfX1jbGFzcyBMb2cgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJsb2ciLCEwKTt0aGlzLm1vZGU9bnVsbDt0aGlzLnRocmVzaG9sZD1udWxsO3RoaXMudG89bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBNYXBFbGVtZW50IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibWFwIiwhMCk7dGhpcy5lcXVhdGU9bmV3IGkuWEZBT2JqZWN0QXJyYXk7dGhpcy5lcXVhdGVSYW5nZT1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWVkaXVtSW5mbyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm1lZGl1bUluZm8iLCEwKTt0aGlzLm1hcD1udWxsfX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibWVzc2FnZSIsITApO3RoaXMubXNnSWQ9bnVsbDt0aGlzLnNldmVyaXR5PW51bGx9fWNsYXNzIE1lc3NhZ2luZyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm1lc3NhZ2luZyIsITApO3RoaXMubWVzc2FnZT1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgTW9kZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm1vZGUiLFsiYXBwZW5kIiwib3ZlcndyaXRlIl0pfX1jbGFzcyBNb2RpZnlBbm5vdHMgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm1vZGlmeUFubm90cyIpfX1jbGFzcyBNc2dJZCBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJtc2dJZCIsMSwoZT0+ZT49MSkpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm5hbWVBdHRyIil9fWNsYXNzIE5ldmVyRW1iZWQgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibmV2ZXJFbWJlZCIpfX1jbGFzcyBOdW1iZXJPZkNvcGllcyBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJudW1iZXJPZkNvcGllcyIsbnVsbCwoZT0+ZT49MiYmZTw9NSkpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywib3BlbkFjdGlvbiIsITApO3RoaXMuZGVzdGluYXRpb249bnVsbH19Y2xhc3MgT3V0cHV0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywib3V0cHV0IiwhMCk7dGhpcy50bz1udWxsO3RoaXMudHlwZT1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE91dHB1dEJpbiBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJvdXRwdXRYU0wiLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdmVycHJpbnQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJvdmVycHJpbnQiLFsibm9uZSIsImJvdGgiLCJkcmF3IiwiZmllbGQiXSl9fWNsYXNzIFBhY2tldHMgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWNrZXRzIil9W24uJGZpbmFsaXplXSgpeyIqIiE9PXRoaXNbbi4kY29udGVudF0mJih0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKSl9fWNsYXNzIFBhZ2VPZmZzZXQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWdlT2Zmc2V0Iik7dGhpcy54PSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS54LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnk9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnksZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pfX1jbGFzcyBQYWdlUmFuZ2UgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWdlUmFuZ2UiKX1bbi4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT5wYXJzZUludChlLDEwKSkpLHQ9W107Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSs9Mil0LnB1c2goZS5zbGljZShhLGErMikpO3RoaXNbbi4kY29udGVudF09dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInBhZ2luYXRpb24iLFsic2ltcGxleCIsImR1cGxleFNob3J0RWRnZSIsImR1cGxleExvbmdFZGdlIl0pfX1jbGFzcyBQYWdpbmF0aW9uT3ZlcnJpZGUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWdpbmF0aW9uT3ZlcnJpZGUiLFsibm9uZSIsImZvcmNlRHVwbGV4IiwiZm9yY2VEdXBsZXhMb25nRWRnZSIsImZvcmNlRHVwbGV4U2hvcnRFZGdlIiwiZm9yY2VTaW1wbGV4Il0pfX1jbGFzcyBQYXJ0IGV4dGVuZHMgaS5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInBhcnQiLDEsKGU9PiExKSl9fWNsYXNzIFBjbCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInBjbCIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMucGFnZU9mZnNldD1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicGRmIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5hZG9iZUV4dGVuc2lvbkxldmVsPW51bGw7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuY29tcHJlc3Npb249bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5pbnRlcmFjdGl2ZT1udWxsO3RoaXMubGluZWFyaXplZD1udWxsO3RoaXMub3BlbkFjdGlvbj1udWxsO3RoaXMucGRmYT1udWxsO3RoaXMucHJvZHVjZXI9bnVsbDt0aGlzLnJlbmRlclBvbGljeT1udWxsO3RoaXMuc2NyaXB0TW9kZWw9bnVsbDt0aGlzLnNpbGVudFByaW50PW51bGw7dGhpcy5zdWJtaXRGb3JtYXQ9bnVsbDt0aGlzLnRhZ2dlZD1udWxsO3RoaXMudmVyc2lvbj1udWxsO3RoaXMudmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGZhIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwZXJtaXNzaW9ucyIsITApO3RoaXMuYWNjZXNzaWJsZUNvbnRlbnQ9bnVsbDt0aGlzLmNoYW5nZT1udWxsO3RoaXMuY29udGVudENvcHk9bnVsbDt0aGlzLmRvY3VtZW50QXNzZW1ibHk9bnVsbDt0aGlzLmZvcm1GaWVsZEZpbGxpbmc9bnVsbDt0aGlzLm1vZGlmeUFubm90cz1udWxsO3RoaXMucGxhaW50ZXh0TWV0YWRhdGE9bnVsbDt0aGlzLnByaW50PW51bGw7dGhpcy5wcmludEhpZ2hRdWFsaXR5PW51bGx9fWNsYXNzIFBpY2tUcmF5QnlQREZTaXplIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwaWNrVHJheUJ5UERGU2l6ZSIpfX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicGljdHVyZSIpfX1jbGFzcyBQbGFpbnRleHRNZXRhZGF0YSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwcmVzZW5jZSIsWyJwcmVzZXJ2ZSIsImRpc3NvbHZlIiwiZGlzc29sdmVTdHJ1Y3R1cmUiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIFByZXNlbnQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwcmVzZW50IiwhMCk7dGhpcy5iZWhhdmlvck92ZXJyaWRlPW51bGw7dGhpcy5jYWNoZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy5jb3BpZXM9bnVsbDt0aGlzLmRlc3RpbmF0aW9uPW51bGw7dGhpcy5pbmNyZW1lbnRhbE1lcmdlPW51bGw7dGhpcy5sYXlvdXQ9bnVsbDt0aGlzLm91dHB1dD1udWxsO3RoaXMub3ZlcnByaW50PW51bGw7dGhpcy5wYWdpbmF0aW9uPW51bGw7dGhpcy5wYWdpbmF0aW9uT3ZlcnJpZGU9bnVsbDt0aGlzLnNjcmlwdD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnhkcD1udWxsO3RoaXMuZHJpdmVyPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMubGFiZWxQcmludGVyPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMucGRmPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMucHM9bmV3IGkuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IGkuWEZBT2JqZWN0QXJyYXk7dGhpcy53ZWJDbGllbnQ9bmV3IGkuWEZBT2JqZWN0QXJyYXk7dGhpcy56cGw9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwcmludCIpfX1jbGFzcyBQcmludEhpZ2hRdWFsaXR5IGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwcmludEhpZ2hRdWFsaXR5Iil9fWNsYXNzIFByaW50U2NhbGluZyBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInByaW50ZXJOYW1lIil9fWNsYXNzIFByb2R1Y2VyIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicHJvZHVjZXIiKX19Y2xhc3MgUHMgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicmFuZ2UiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5lLnNwbGl0KCItIikubWFwKChlPT5wYXJzZUludChlLnRyaW0oKSwxMCkpKSkpLmZpbHRlcigoZT0+ZS5ldmVyeSgoZT0+IWlzTmFOKGUpKSkpKS5tYXAoKGU9PnsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTtyZXR1cm4gZX0pKX19Y2xhc3MgUmVjb3JkIGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInJlY29yZCIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1tuLiRjb250ZW50XSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tuLiRjb250ZW50XT1lKX19Y2xhc3MgUmVsZXZhbnQgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicmVsZXZhbnQiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIFJlbmFtZSBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJyZW5hbWUiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKTsodGhpc1tuLiRjb250ZW50XS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoInhtbCIpfHxuZXcgUmVnRXhwKCJbXFxwe0x9X11bXFxwe0x9XFxkLl9cXHB7TX0tXSoiLCJ1IikudGVzdCh0aGlzW24uJGNvbnRlbnRdKSkmJigwLG8ud2FybikoIlhGQSAtIFJlbmFtZTogaW52YWxpZCBYRkEgbmFtZSIpfX1jbGFzcyBSZW5kZXJQb2xpY3kgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJyZW5kZXJQb2xpY3kiLFsic2VydmVyIiwiY2xpZW50Il0pfX1jbGFzcyBSdW5TY3JpcHRzIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgU2NyaXB0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInNjcmlwdE1vZGVsIixbIlhGQSIsIm5vbmUiXSl9fWNsYXNzIFNldmVyaXR5IGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywic2V2ZXJpdHkiLFsiaWdub3JlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsInRyYWNlIiwid2FybmluZyJdKX19Y2xhc3MgU2lsZW50UHJpbnQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInN0YXBsZSIpO3RoaXMubW9kZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5tb2RlLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgU3RhcnROb2RlIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywic3RhcnROb2RlIil9fWNsYXNzIFN0YXJ0UGFnZSBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJzdGFydFBhZ2UiLDAsKGU9PiEwKSl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInN1Ym1pdFVybCIpfX1jbGFzcyBTdWJzZXRCZWxvdyBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJzdWJzZXRCZWxvdyIsMTAwLChlPT5lPj0wJiZlPD0xMDApKX19Y2xhc3MgU3VwcHJlc3NCYW5uZXIgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInN1cHByZXNzQmFubmVyIil9fWNsYXNzIFRhZ2dlZCBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywidGFnZ2VkIil9fWNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2U9bnVsbDt0aGlzLnJlbGV2YW50PW51bGw7dGhpcy5zdGFydFBhZ2U9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMueHNsPW51bGx9fWNsYXNzIFRocmVzaG9sZCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInRocmVzaG9sZCIsWyJ0cmFjZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ3YXJuaW5nIl0pfX1jbGFzcyBUbyBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInRvIixbIm51bGwiLCJtZW1vcnkiLCJzdGRlcnIiLCJzdGRvdXQiLCJzeXN0ZW0iLCJ1cmkiXSl9fWNsYXNzIFRlbXBsYXRlQ2FjaGUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ0ZW1wbGF0ZUNhY2hlIik7dGhpcy5tYXhFbnRyaWVzPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5tYXhFbnRyaWVzLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgVHJhY2UgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ0cmFjZSIsITApO3RoaXMuYXJlYT1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhbnNmb3JtIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywidHJhbnNmb3JtIiwhMCk7dGhpcy5ncm91cFBhcmVudD1udWxsO3RoaXMuaWZFbXB0eT1udWxsO3RoaXMubmFtZUF0dHI9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnByZXNlbmNlPW51bGw7dGhpcy5yZW5hbWU9bnVsbDt0aGlzLndoaXRlc3BhY2U9bnVsbH19Y2xhc3MgVHlwZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInR5cGUiLFsibm9uZSIsImFzY2lpODUiLCJhc2NpaUhleCIsImNjaXR0ZmF4IiwiZmxhdGUiLCJsenciLCJydW5MZW5ndGgiLCJuYXRpdmUiLCJ4ZHAiLCJtZXJnZWRYRFAiXSl9fWNsYXNzIFVyaSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInVyaSIpfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInZhbGlkYXRlIixbInByZVN1Ym1pdCIsInByZVByaW50IiwicHJlRXhlY3V0ZSIsInByZVNhdmUiXSl9fWNsYXNzIFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2luZyBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInZhbGlkYXRpb25NZXNzYWdpbmciLFsiYWxsTWVzc2FnZXNJbmRpdmlkdWFsbHkiLCJhbGxNZXNzYWdlc1RvZ2V0aGVyIiwiZmlyc3RNZXNzYWdlT25seSIsIm5vTWVzc2FnZXMiXSl9fWNsYXNzIFZlcnNpb24gZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJWZXJzaW9uQ29udHJvbCIpO3RoaXMub3V0cHV0QmVsb3c9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUub3V0cHV0QmVsb3csWyJ3YXJuIiwiZXJyb3IiLCJ1cGRhdGUiXSk7dGhpcy5zb3VyY2VBYm92ZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5zb3VyY2VBYm92ZSxbIndhcm4iLCJlcnJvciJdKTt0aGlzLnNvdXJjZUJlbG93PSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUJlbG93LFsidXBkYXRlIiwibWFpbnRhaW4iXSl9fWNsYXNzIFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywidmlld2VyUHJlZmVyZW5jZXMiLCEwKTt0aGlzLkFEQkVfSlNDb25zb2xlPW51bGw7dGhpcy5BREJFX0pTRGVidWdnZXI9bnVsbDt0aGlzLmFkZFZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy5kdXBsZXhPcHRpb249bnVsbDt0aGlzLmVuZm9yY2U9bnVsbDt0aGlzLm51bWJlck9mQ29waWVzPW51bGw7dGhpcy5wYWdlUmFuZ2U9bnVsbDt0aGlzLnBpY2tUcmF5QnlQREZTaXplPW51bGw7dGhpcy5wcmludFNjYWxpbmc9bnVsbH19Y2xhc3MgV2ViQ2xpZW50IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywid2hpdGVzcGFjZSIsWyJwcmVzZXJ2ZSIsImx0cmltIiwibm9ybWFsaXplIiwicnRyaW0iLCJ0cmltIl0pfX1jbGFzcyBXaW5kb3cgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywid2luZG93Iil9W24uJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+cGFyc2VJbnQoZSwxMCkpKTtpZihlLnNvbWUoKGU9PmlzTmFOKGUpKSkpdGhpc1tuLiRjb250ZW50XT1bMCwwXTtlbHNlezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3RoaXNbbi4kY29udGVudF09ZX19fWNsYXNzIFhkYyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInhkYyIsITApO3RoaXMudXJpPW5ldyBpLlhGQU9iamVjdEFycmF5O3RoaXMueHNsPW5ldyBpLlhGQU9iamVjdEFycmF5fX1jbGFzcyBYZHAgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ4ZHAiLCEwKTt0aGlzLnBhY2tldHM9bnVsbH19Y2xhc3MgWHNsIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywieHNsIiwhMCk7dGhpcy5kZWJ1Zz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIFpwbCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInpwbCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgQ29uZmlnTmFtZXNwYWNle3N0YXRpY1tyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihDb25maWdOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbmZpZ05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYWNyb2JhdChlKXtyZXR1cm4gbmV3IEFjcm9iYXQoZSl9c3RhdGljIGFjcm9iYXQ3KGUpe3JldHVybiBuZXcgQWNyb2JhdDcoZSl9c3RhdGljIEFEQkVfSlNDb25zb2xlKGUpe3JldHVybiBuZXcgQURCRV9KU0NvbnNvbGUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IEFEQkVfSlNEZWJ1Z2dlcihlKX1zdGF0aWMgYWRkU2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBBZGRTaWxlbnRQcmludChlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgYWRqdXN0RGF0YShlKXtyZXR1cm4gbmV3IEFkanVzdERhdGEoZSl9c3RhdGljIGFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBBZG9iZUV4dGVuc2lvbkxldmVsKGUpfXN0YXRpYyBhZ2VudChlKXtyZXR1cm4gbmV3IEFnZW50KGUpfXN0YXRpYyBhbHdheXNFbWJlZChlKXtyZXR1cm4gbmV3IEFsd2F5c0VtYmVkKGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyBBbWQoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBBcmVhKGUpfXN0YXRpYyBhdHRyaWJ1dGVzKGUpe3JldHVybiBuZXcgQXR0cmlidXRlcyhlKX1zdGF0aWMgYXV0b1NhdmUoZSl7cmV0dXJuIG5ldyBBdXRvU2F2ZShlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEJhc2UoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgQmF0Y2hPdXRwdXQoZSl9c3RhdGljIGJlaGF2aW9yT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBCZWhhdmlvck92ZXJyaWRlKGUpfXN0YXRpYyBjYWNoZShlKXtyZXR1cm4gbmV3IENhY2hlKGUpfXN0YXRpYyBjaGFuZ2UoZSl7cmV0dXJuIG5ldyBDaGFuZ2UoZSl9c3RhdGljIGNvbW1vbihlKXtyZXR1cm4gbmV3IENvbW1vbihlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBDb21wcmVzcyhlKX1zdGF0aWMgY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpe3JldHVybiBuZXcgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IENvbXByZXNzT2JqZWN0U3RyZWFtKGUpfXN0YXRpYyBjb21wcmVzc2lvbihlKXtyZXR1cm4gbmV3IENvbXByZXNzaW9uKGUpfXN0YXRpYyBjb25maWcoZSl7cmV0dXJuIG5ldyBDb25maWcoZSl9c3RhdGljIGNvbmZvcm1hbmNlKGUpe3JldHVybiBuZXcgQ29uZm9ybWFuY2UoZSl9c3RhdGljIGNvbnRlbnRDb3B5KGUpe3JldHVybiBuZXcgQ29udGVudENvcHkoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IENvcGllcyhlKX1zdGF0aWMgY3JlYXRvcihlKXtyZXR1cm4gbmV3IENyZWF0b3IoZSl9c3RhdGljIGN1cnJlbnRQYWdlKGUpe3JldHVybiBuZXcgQ3VycmVudFBhZ2UoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IERlYnVnKGUpfXN0YXRpYyBkZWZhdWx0VHlwZWZhY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VHlwZWZhY2UoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgRGVzdGluYXRpb24oZSl9c3RhdGljIGRvY3VtZW50QXNzZW1ibHkoZSl7cmV0dXJuIG5ldyBEb2N1bWVudEFzc2VtYmx5KGUpfXN0YXRpYyBkcml2ZXIoZSl7cmV0dXJuIG5ldyBEcml2ZXIoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IER1cGxleE9wdGlvbihlKX1zdGF0aWMgZHluYW1pY1JlbmRlcihlKXtyZXR1cm4gbmV3IER5bmFtaWNSZW5kZXIoZSl9c3RhdGljIGVtYmVkKGUpe3JldHVybiBuZXcgRW1iZWQoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbkxldmVsKGUpfXN0YXRpYyBlbmZvcmNlKGUpe3JldHVybiBuZXcgRW5mb3JjZShlKX1zdGF0aWMgZXF1YXRlKGUpe3JldHVybiBuZXcgRXF1YXRlKGUpfXN0YXRpYyBlcXVhdGVSYW5nZShlKXtyZXR1cm4gbmV3IEVxdWF0ZVJhbmdlKGUpfXN0YXRpYyBleGNsdWRlKGUpe3JldHVybiBuZXcgRXhjbHVkZShlKX1zdGF0aWMgZXhjbHVkZU5TKGUpe3JldHVybiBuZXcgRXhjbHVkZU5TKGUpfXN0YXRpYyBmbGlwTGFiZWwoZSl7cmV0dXJuIG5ldyBGbGlwTGFiZWwoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgRm9udEluZm8oZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBGb3JtRmllbGRGaWxsaW5nKGUpfXN0YXRpYyBncm91cFBhcmVudChlKXtyZXR1cm4gbmV3IEdyb3VwUGFyZW50KGUpfXN0YXRpYyBpZkVtcHR5KGUpe3JldHVybiBuZXcgSWZFbXB0eShlKX1zdGF0aWMgaW5jbHVkZVhEUENvbnRlbnQoZSl7cmV0dXJuIG5ldyBJbmNsdWRlWERQQ29udGVudChlKX1zdGF0aWMgaW5jcmVtZW50YWxMb2FkKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxMb2FkKGUpfXN0YXRpYyBpbmNyZW1lbnRhbE1lcmdlKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxNZXJnZShlKX1zdGF0aWMgaW50ZXJhY3RpdmUoZSl7cmV0dXJuIG5ldyBJbnRlcmFjdGl2ZShlKX1zdGF0aWMgam9nKGUpe3JldHVybiBuZXcgSm9nKGUpfXN0YXRpYyBsYWJlbFByaW50ZXIoZSl7cmV0dXJuIG5ldyBMYWJlbFByaW50ZXIoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IExheW91dChlKX1zdGF0aWMgbGV2ZWwoZSl7cmV0dXJuIG5ldyBMZXZlbChlKX1zdGF0aWMgbGluZWFyaXplZChlKXtyZXR1cm4gbmV3IExpbmVhcml6ZWQoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBsb2coZSl7cmV0dXJuIG5ldyBMb2coZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IE1hcEVsZW1lbnQoZSl9c3RhdGljIG1lZGl1bUluZm8oZSl7cmV0dXJuIG5ldyBNZWRpdW1JbmZvKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgTWVzc2FnZShlKX1zdGF0aWMgbWVzc2FnaW5nKGUpe3JldHVybiBuZXcgTWVzc2FnaW5nKGUpfXN0YXRpYyBtb2RlKGUpe3JldHVybiBuZXcgTW9kZShlKX1zdGF0aWMgbW9kaWZ5QW5ub3RzKGUpe3JldHVybiBuZXcgTW9kaWZ5QW5ub3RzKGUpfXN0YXRpYyBtc2dJZChlKXtyZXR1cm4gbmV3IE1zZ0lkKGUpfXN0YXRpYyBuYW1lQXR0cihlKXtyZXR1cm4gbmV3IE5hbWVBdHRyKGUpfXN0YXRpYyBuZXZlckVtYmVkKGUpe3JldHVybiBuZXcgTmV2ZXJFbWJlZChlKX1zdGF0aWMgbnVtYmVyT2ZDb3BpZXMoZSl7cmV0dXJuIG5ldyBOdW1iZXJPZkNvcGllcyhlKX1zdGF0aWMgb3BlbkFjdGlvbihlKXtyZXR1cm4gbmV3IE9wZW5BY3Rpb24oZSl9c3RhdGljIG91dHB1dChlKXtyZXR1cm4gbmV3IE91dHB1dChlKX1zdGF0aWMgb3V0cHV0QmluKGUpe3JldHVybiBuZXcgT3V0cHV0QmluKGUpfXN0YXRpYyBvdXRwdXRYU0woZSl7cmV0dXJuIG5ldyBPdXRwdXRYU0woZSl9c3RhdGljIG92ZXJwcmludChlKXtyZXR1cm4gbmV3IE92ZXJwcmludChlKX1zdGF0aWMgcGFja2V0cyhlKXtyZXR1cm4gbmV3IFBhY2tldHMoZSl9c3RhdGljIHBhZ2VPZmZzZXQoZSl7cmV0dXJuIG5ldyBQYWdlT2Zmc2V0KGUpfXN0YXRpYyBwYWdlUmFuZ2UoZSl7cmV0dXJuIG5ldyBQYWdlUmFuZ2UoZSl9c3RhdGljIHBhZ2luYXRpb24oZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uKGUpfXN0YXRpYyBwYWdpbmF0aW9uT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uT3ZlcnJpZGUoZSl9c3RhdGljIHBhcnQoZSl7cmV0dXJuIG5ldyBQYXJ0KGUpfXN0YXRpYyBwY2woZSl7cmV0dXJuIG5ldyBQY2woZSl9c3RhdGljIHBkZihlKXtyZXR1cm4gbmV3IFBkZihlKX1zdGF0aWMgcGRmYShlKXtyZXR1cm4gbmV3IFBkZmEoZSl9c3RhdGljIHBlcm1pc3Npb25zKGUpe3JldHVybiBuZXcgUGVybWlzc2lvbnMoZSl9c3RhdGljIHBpY2tUcmF5QnlQREZTaXplKGUpe3JldHVybiBuZXcgUGlja1RyYXlCeVBERlNpemUoZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwbGFpbnRleHRNZXRhZGF0YShlKXtyZXR1cm4gbmV3IFBsYWludGV4dE1ldGFkYXRhKGUpfXN0YXRpYyBwcmVzZW5jZShlKXtyZXR1cm4gbmV3IFByZXNlbmNlKGUpfXN0YXRpYyBwcmVzZW50KGUpe3JldHVybiBuZXcgUHJlc2VudChlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBQcmludChlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFByaW50SGlnaFF1YWxpdHkoZSl9c3RhdGljIHByaW50U2NhbGluZyhlKXtyZXR1cm4gbmV3IFByaW50U2NhbGluZyhlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBQcmludGVyTmFtZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBQcm9kdWNlcihlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBQcyhlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyBSYW5nZShlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgUmVjb3JkKGUpfXN0YXRpYyByZWxldmFudChlKXtyZXR1cm4gbmV3IFJlbGV2YW50KGUpfXN0YXRpYyByZW5hbWUoZSl7cmV0dXJuIG5ldyBSZW5hbWUoZSl9c3RhdGljIHJlbmRlclBvbGljeShlKXtyZXR1cm4gbmV3IFJlbmRlclBvbGljeShlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IFJ1blNjcmlwdHMoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IFNjcmlwdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBTY3JpcHRNb2RlbChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBTZXZlcml0eShlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBTaWxlbnRQcmludChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgU3RhcGxlKGUpfXN0YXRpYyBzdGFydE5vZGUoZSl7cmV0dXJuIG5ldyBTdGFydE5vZGUoZSl9c3RhdGljIHN0YXJ0UGFnZShlKXtyZXR1cm4gbmV3IFN0YXJ0UGFnZShlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgU3VibWl0Rm9ybWF0KGUpfXN0YXRpYyBzdWJtaXRVcmwoZSl7cmV0dXJuIG5ldyBTdWJtaXRVcmwoZSl9c3RhdGljIHN1YnNldEJlbG93KGUpe3JldHVybiBuZXcgU3Vic2V0QmVsb3coZSl9c3RhdGljIHN1cHByZXNzQmFubmVyKGUpe3JldHVybiBuZXcgU3VwcHJlc3NCYW5uZXIoZSl9c3RhdGljIHRhZ2dlZChlKXtyZXR1cm4gbmV3IFRhZ2dlZChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZShlKX1zdGF0aWMgdGVtcGxhdGVDYWNoZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlQ2FjaGUoZSl9c3RhdGljIHRocmVzaG9sZChlKXtyZXR1cm4gbmV3IFRocmVzaG9sZChlKX1zdGF0aWMgdG8oZSl7cmV0dXJuIG5ldyBUbyhlKX1zdGF0aWMgdHJhY2UoZSl7cmV0dXJuIG5ldyBUcmFjZShlKX1zdGF0aWMgdHJhbnNmb3JtKGUpe3JldHVybiBuZXcgVHJhbnNmb3JtKGUpfXN0YXRpYyB0eXBlKGUpe3JldHVybiBuZXcgVHlwZShlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpfXN0YXRpYyB2YWxpZGF0aW9uTWVzc2FnaW5nKGUpe3JldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2luZyhlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IFZlcnNpb24oZSl9c3RhdGljIHZlcnNpb25Db250cm9sKGUpe3JldHVybiBuZXcgVmVyc2lvbkNvbnRyb2woZSl9c3RhdGljIHZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIHdlYkNsaWVudChlKXtyZXR1cm4gbmV3IFdlYkNsaWVudChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IFdoaXRlc3BhY2UoZSl9c3RhdGljIHdpbmRvdyhlKXtyZXR1cm4gbmV3IFdpbmRvdyhlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgWGRjKGUpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyBYZHAoZSl9c3RhdGljIHhzbChlKXtyZXR1cm4gbmV3IFhzbChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcgWnBsKGUpfX10LkNvbmZpZ05hbWVzcGFjZT1Db25maWdOYW1lc3BhY2V9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29ubmVjdGlvblNldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSgyMzQpLG49YSgyNDApO2NvbnN0IGk9ci5OYW1lc3BhY2VJZHMuY29ubmVjdGlvblNldC5pZDtjbGFzcyBDb25uZWN0aW9uU2V0IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwiY29ubmVjdGlvblNldCIsITApO3RoaXMud3NkbENvbm5lY3Rpb249bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54bWxDb25uZWN0aW9uPW5ldyBuLlhGQU9iamVjdEFycmF5O3RoaXMueHNkQ29ubmVjdGlvbj1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgRWZmZWN0aXZlSW5wdXRQb2xpY3kgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJlZmZlY3RpdmVJbnB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFZmZlY3RpdmVPdXRwdXRQb2xpY3kgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJlZmZlY3RpdmVPdXRwdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT3BlcmF0aW9uIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwib3BlcmF0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmlucHV0PWUuaW5wdXR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMub3V0cHV0PWUub3V0cHV0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJvb3RFbGVtZW50IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwicm9vdEVsZW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFjdGlvbiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBY3Rpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFkZHJlc3MgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJzb2FwQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBVcmkgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ1cmkiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbEFkZHJlc3MgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ3c2RsQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQ29ubmVjdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIndzZGxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuZWZmZWN0aXZlSW5wdXRQb2xpY3k9bnVsbDt0aGlzLmVmZmVjdGl2ZU91dHB1dFBvbGljeT1udWxsO3RoaXMub3BlcmF0aW9uPW51bGw7dGhpcy5zb2FwQWN0aW9uPW51bGw7dGhpcy5zb2FwQWRkcmVzcz1udWxsO3RoaXMud3NkbEFkZHJlc3M9bnVsbH19Y2xhc3MgWG1sQ29ubmVjdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInhtbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51cmk9bnVsbH19Y2xhc3MgWHNkQ29ubmVjdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInhzZENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yb290RWxlbWVudD1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIENvbm5lY3Rpb25TZXROYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKENvbm5lY3Rpb25TZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbm5lY3Rpb25TZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNvbm5lY3Rpb25TZXQoZSl7cmV0dXJuIG5ldyBDb25uZWN0aW9uU2V0KGUpfXN0YXRpYyBlZmZlY3RpdmVJbnB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZUlucHV0UG9saWN5KGUpfXN0YXRpYyBlZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl9c3RhdGljIG9wZXJhdGlvbihlKXtyZXR1cm4gbmV3IE9wZXJhdGlvbihlKX1zdGF0aWMgcm9vdEVsZW1lbnQoZSl7cmV0dXJuIG5ldyBSb290RWxlbWVudChlKX1zdGF0aWMgc29hcEFjdGlvbihlKXtyZXR1cm4gbmV3IFNvYXBBY3Rpb24oZSl9c3RhdGljIHNvYXBBZGRyZXNzKGUpe3JldHVybiBuZXcgU29hcEFkZHJlc3MoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgd3NkbEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBXc2RsQWRkcmVzcyhlKX1zdGF0aWMgd3NkbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBXc2RsQ29ubmVjdGlvbihlKX1zdGF0aWMgeG1sQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhtbENvbm5lY3Rpb24oZSl9c3RhdGljIHhzZENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYc2RDb25uZWN0aW9uKGUpfX10LkNvbm5lY3Rpb25TZXROYW1lc3BhY2U9Q29ubmVjdGlvblNldE5hbWVzcGFjZX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhc2V0c05hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSgyMjgpLG49YSgyMzQpLGk9YSgyNDApO2NvbnN0IHM9bi5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7Y2xhc3MgRGF0YSBleHRlbmRzIGkuWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGEiLGUpfVtyLiRpc05zQWdub3N0aWNdKCl7cmV0dXJuITB9fWNsYXNzIERhdGFzZXRzIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtyLiRvbkNoaWxkXShlKXtjb25zdCB0PWVbci4kbm9kZU5hbWVdOygiZGF0YSI9PT10JiZlW3IuJG5hbWVzcGFjZUlkXT09PXN8fCJTaWduYXR1cmUiPT09dCYmZVtyLiRuYW1lc3BhY2VJZF09PT1uLk5hbWVzcGFjZUlkcy5zaWduYXR1cmUuaWQpJiYodGhpc1t0XT1lKTt0aGlzW3IuJGFwcGVuZENoaWxkXShlKX19Y2xhc3MgRGF0YXNldHNOYW1lc3BhY2V7c3RhdGljW24uJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKERhdGFzZXRzTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBEYXRhc2V0c05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgZGF0YXNldHMoZSl7cmV0dXJuIG5ldyBEYXRhc2V0cyhlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9fXQuRGF0YXNldHNOYW1lc3BhY2U9RGF0YXNldHNOYW1lc3BhY2V9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTG9jYWxlU2V0TmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDIzNCksbj1hKDI0MCksaT1hKDIzNyk7Y29uc3Qgcz1yLk5hbWVzcGFjZUlkcy5sb2NhbGVTZXQuaWQ7Y2xhc3MgQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiY2FsZW5kYXJTeW1ib2xzIiwhMCk7dGhpcy5uYW1lPSJncmVnb3JpYW4iO3RoaXMuZGF5TmFtZXM9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5lcmFOYW1lcz1udWxsO3RoaXMubWVyaWRpZW1OYW1lcz1udWxsO3RoaXMubW9udGhOYW1lcz1uZXcgbi5YRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2wgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbCIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIEN1cnJlbmN5U3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImN1cnJlbmN5U3ltYm9scyIsITApO3RoaXMuY3VycmVuY3lTeW1ib2w9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMyl9fWNsYXNzIERhdGVQYXR0ZXJuIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVBhdHRlcm4iKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIERhdGVQYXR0ZXJucyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVQYXR0ZXJucyIsITApO3RoaXMuZGF0ZVBhdHRlcm49bmV3IG4uWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIERhdGVUaW1lU3ltYm9scyBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlVGltZVN5bWJvbHMiKX19Y2xhc3MgRGF5IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF5Iil9fWNsYXNzIERheU5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF5TmFtZXMiLCEwKTt0aGlzLmFiYnI9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmRheT1uZXcgbi5YRkFPYmplY3RBcnJheSg3KX19Y2xhc3MgRXJhIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZXJhIil9fWNsYXNzIEVyYU5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZXJhTmFtZXMiLCEwKTt0aGlzLmVyYT1uZXcgbi5YRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibG9jYWxlIiwhMCk7dGhpcy5kZXNjPWUuZGVzY3x8IiI7dGhpcy5uYW1lPSJpc29uYW1lIjt0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsO3RoaXMuY3VycmVuY3lTeW1ib2xzPW51bGw7dGhpcy5kYXRlUGF0dGVybnM9bnVsbDt0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsO3RoaXMubnVtYmVyUGF0dGVybnM9bnVsbDt0aGlzLm51bWJlclN5bWJvbHM9bnVsbDt0aGlzLnRpbWVQYXR0ZXJucz1udWxsO3RoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImxvY2FsZVNldCIsITApO3RoaXMubG9jYWxlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNZXJpZGllbSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1lcmlkaWVtIil9fWNsYXNzIE1lcmlkaWVtTmFtZXMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbU5hbWVzIiwhMCk7dGhpcy5tZXJpZGllbT1uZXcgbi5YRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTW9udGggZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtb250aCIpfX1jbGFzcyBNb250aE5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibW9udGhOYW1lcyIsITApO3RoaXMuYWJicj0oMCxpLmdldEludGVnZXIpKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMubW9udGg9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMTIpfX1jbGFzcyBOdW1iZXJQYXR0ZXJuIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybiIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgTnVtYmVyUGF0dGVybnMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJudW1iZXJQYXR0ZXJucyIsITApO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgbi5YRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgTnVtYmVyU3ltYm9sIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyU3ltYm9sIik7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJkZWNpbWFsIiwiZ3JvdXBpbmciLCJwZXJjZW50IiwibWludXMiLCJ6ZXJvIl0pfX1jbGFzcyBOdW1iZXJTeW1ib2xzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyU3ltYm9scyIsITApO3RoaXMubnVtYmVyU3ltYm9sPW5ldyBuLlhGQU9iamVjdEFycmF5KDUpfX1jbGFzcyBUaW1lUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInRpbWVQYXR0ZXJuIik7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBUaW1lUGF0dGVybnMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybnMiLCEwKTt0aGlzLnRpbWVQYXR0ZXJuPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBUeXBlRmFjZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInR5cGVGYWNlIiwhMCk7dGhpcy5uYW1lPSIifGUubmFtZX19Y2xhc3MgVHlwZUZhY2VzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywidHlwZUZhY2VzIiwhMCk7dGhpcy50eXBlRmFjZT1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgTG9jYWxlU2V0TmFtZXNwYWNle3N0YXRpY1tyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihMb2NhbGVTZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIG1lcmlkaWVtKGUpe3JldHVybiBuZXcgTWVyaWRpZW0oZSl9c3RhdGljIG1lcmlkaWVtTmFtZXMoZSl7cmV0dXJuIG5ldyBNZXJpZGllbU5hbWVzKGUpfXN0YXRpYyBtb250aChlKXtyZXR1cm4gbmV3IE1vbnRoKGUpfXN0YXRpYyBtb250aE5hbWVzKGUpe3JldHVybiBuZXcgTW9udGhOYW1lcyhlKX1zdGF0aWMgbnVtYmVyUGF0dGVybihlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm4oZSl9c3RhdGljIG51bWJlclBhdHRlcm5zKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybnMoZSl9c3RhdGljIG51bWJlclN5bWJvbChlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbChlKX1zdGF0aWMgbnVtYmVyU3ltYm9scyhlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbHMoZSl9c3RhdGljIHRpbWVQYXR0ZXJuKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm4oZSl9c3RhdGljIHRpbWVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJucyhlKX1zdGF0aWMgdHlwZUZhY2UoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZShlKX1zdGF0aWMgdHlwZUZhY2VzKGUpe3JldHVybiBuZXcgVHlwZUZhY2VzKGUpfX10LkxvY2FsZVNldE5hbWVzcGFjZT1Mb2NhbGVTZXROYW1lc3BhY2V9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU2lnbmF0dXJlTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDIzNCksbj1hKDI0MCk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5zaWduYXR1cmUuaWQ7Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwic2lnbmF0dXJlIiwhMCl9fWNsYXNzIFNpZ25hdHVyZU5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoU2lnbmF0dXJlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBTaWduYXR1cmVOYW1lc3BhY2VbZV0odCl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IFNpZ25hdHVyZShlKX19dC5TaWduYXR1cmVOYW1lc3BhY2U9U2lnbmF0dXJlTmFtZXNwYWNlfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0eWxlc2hlZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoMjM0KSxuPWEoMjQwKTtjb25zdCBpPXIuTmFtZXNwYWNlSWRzLnN0eWxlc2hlZXQuaWQ7Y2xhc3MgU3R5bGVzaGVldCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoU3R5bGVzaGVldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU3R5bGVzaGVldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IFN0eWxlc2hlZXQoZSl9fXQuU3R5bGVzaGVldE5hbWVzcGFjZT1TdHlsZXNoZWV0TmFtZXNwYWNlfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhkcE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSgyMzQpLG49YSgyMjgpLGk9YSgyNDApO2NvbnN0IHM9ci5OYW1lc3BhY2VJZHMueGRwLmlkO2NsYXNzIFhkcCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInhkcCIsITApO3RoaXMudXVpZD1lLnV1aWR8fCIiO3RoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIjt0aGlzLmNvbmZpZz1udWxsO3RoaXMuY29ubmVjdGlvblNldD1udWxsO3RoaXMuZGF0YXNldHM9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMuc3R5bGVzaGVldD1uZXcgaS5YRkFPYmplY3RBcnJheTt0aGlzLnRlbXBsYXRlPW51bGx9W24uJG9uQ2hpbGRDaGVja10oZSl7Y29uc3QgdD1yLk5hbWVzcGFjZUlkc1tlW24uJG5vZGVOYW1lXV07cmV0dXJuIHQmJmVbbi4kbmFtZXNwYWNlSWRdPT09dC5pZH19Y2xhc3MgWGRwTmFtZXNwYWNle3N0YXRpY1tyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihYZHBOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhkcE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgWGRwKGUpfX10LlhkcE5hbWVzcGFjZT1YZHBOYW1lc3BhY2V9LChlLHQsYSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWGh0bWxOYW1lc3BhY2U9dm9pZCAwO2EoMTE2KTthKDEyNik7YSgxMjgpO2EoMTMxKTthKDEzMyk7YSgxMzUpO2EoMTM3KTt2YXIgcj1hKDIyOCksbj1hKDIzNCksaT1hKDIzNikscz1hKDIzNyksbz1hKDI0MCk7Y29uc3QgYz1uLk5hbWVzcGFjZUlkcy54aHRtbC5pZCxsPVN5bWJvbCgpLGg9bmV3IFNldChbImNvbG9yIiwiZm9udCIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtd2VpZ2h0IiwibWFyZ2luIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsImxldHRlci1zcGFjaW5nIiwibGluZS1oZWlnaHQiLCJvcnBoYW5zIiwicGFnZS1icmVhay1hZnRlciIsInBhZ2UtYnJlYWstYmVmb3JlIiwicGFnZS1icmVhay1pbnNpZGUiLCJ0YWItaW50ZXJ2YWwiLCJ0YWItc3RvcCIsInRleHQtYWxpZ24iLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LWluZGVudCIsInZlcnRpY2FsLWFsaWduIiwid2lkb3dzIiwia2VybmluZy1tb2RlIiwieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIiwieGZhLXNwYWNlcnVuIiwieGZhLXRhYi1zdG9wcyJdKSx1PW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsZT0+YHNjYWxlWSgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtc3BhY2VydW4iLCIiXSxbInhmYS10YWItc3RvcHMiLCIiXSxbImZvbnQtc2l6ZSIsKGUsdCk9PntlPXQuZm9udFNpemU9KDAscy5nZXRNZWFzdXJlbWVudCkoZSk7cmV0dXJuKDAsaS5tZWFzdXJlVG9TdHJpbmcpKC45OSplKX1dLFsibGV0dGVyLXNwYWNpbmciLGU9PigwLGkubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibGluZS1oZWlnaHQiLGU9PigwLGkubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibWFyZ2luIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1ib3R0b20iLGU9PigwLGkubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibWFyZ2luLWxlZnQiLGU9PigwLGkubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsibWFyZ2luLXJpZ2h0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi10b3AiLGU9PigwLGkubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsidGV4dC1pbmRlbnQiLGU9PigwLGkubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldLFsiZm9udC1mYW1pbHkiLGU9PmVdLFsidmVydGljYWwtYWxpZ24iLGU9PigwLGkubWVhc3VyZVRvU3RyaW5nKSgoMCxzLmdldE1lYXN1cmVtZW50KShlKSldXSksZD0vXHMrL2csZj0vW1xyXG5dKy9nLGc9L1xyXG4/L2c7ZnVuY3Rpb24gbWFwU3R5bGUoZSx0LGEpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gbjtjb25zdCBvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3QsYV1vZiBlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXtjb25zdCBlPXUuZ2V0KHQpO2lmKCIiPT09ZSljb250aW51ZTtsZXQgcj1hO2UmJihyPSJzdHJpbmciPT10eXBlb2YgZT9lOmUoYSxvKSk7dC5lbmRzV2l0aCgic2NhbGUiKT9uLnRyYW5zZm9ybT1uLnRyYW5zZm9ybT9gJHtuW3RdfSAke3J9YDpyOm5bdC5yZXBsYWNlQWxsKC8tKFthLXpBLVpdKS9nLCgoZSx0KT0+dC50b1VwcGVyQ2FzZSgpKSldPXJ9bi5mb250RmFtaWx5JiYoMCxpLnNldEZvbnRGYW1pbHkpKHt0eXBlZmFjZTpuLmZvbnRGYW1pbHksd2VpZ2h0Om4uZm9udFdlaWdodHx8Im5vcm1hbCIscG9zdHVyZTpuLmZvbnRTdHlsZXx8Im5vcm1hbCIsc2l6ZTpvLmZvbnRTaXplfHwwfSx0LHRbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixuKTtpZihhJiZuLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09bi52ZXJ0aWNhbEFsaWduJiZuLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGE9KDAscy5nZXRNZWFzdXJlbWVudCkobi5mb250U2l6ZSk7bi5mb250U2l6ZT0oMCxpLm1lYXN1cmVUb1N0cmluZykoYSplKTtuLnZlcnRpY2FsQWxpZ249KDAsaS5tZWFzdXJlVG9TdHJpbmcpKE1hdGguc2lnbigoMCxzLmdldE1lYXN1cmVtZW50KShuLnZlcnRpY2FsQWxpZ24pKSphKnQpfWEmJm4uZm9udFNpemUmJihuLmZvbnRTaXplPWBjYWxjKCR7bi5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApOygwLGkuZml4VGV4dEluZGVudCkobik7cmV0dXJuIG59Y29uc3QgcD1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgWGh0bWxPYmplY3QgZXh0ZW5kcyBvLlhtbE9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGMsdCk7dGhpc1tsXT0hMTt0aGlzLnN0eWxlPWUuc3R5bGV8fCIifVtyLiRjbGVhbl0oZSl7c3VwZXJbci4kY2xlYW5dKGUpO3RoaXMuc3R5bGU9ZnVuY3Rpb24gY2hlY2tTdHlsZShlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnRyaW0oKS5zcGxpdCgvXHMqO1xzKi8pLmZpbHRlcigoZT0+ISFlKSkubWFwKChlPT5lLnNwbGl0KC9ccyo6XHMqLywyKSkpLmZpbHRlcigodD0+e2xldFthLG5dPXQ7ImZvbnQtZmFtaWx5Ij09PWEmJmVbci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcy5hZGQobik7cmV0dXJuIGguaGFzKGEpfSkpLm1hcCgoZT0+ZS5qb2luKCI6IikpKS5qb2luKCI7Iik6IiJ9KHRoaXMpfVtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpe3JldHVybiFwLmhhcyh0aGlzW3IuJG5vZGVOYW1lXSl9W3IuJG9uVGV4dF0oZSl7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSl0aGlzW2xdPSEwO2Vsc2V7ZT1lLnJlcGxhY2VBbGwoZiwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoZCwiICIpKX1lJiYodGhpc1tyLiRjb250ZW50XSs9ZSl9W3IuJHB1c2hHbHlwaHNdKGUpe2xldCB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLG49e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCBpPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjphLnR5cGVmYWNlPSgwLHMuc3RyaXBRdW90ZXMpKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjphLnNpemU9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6YS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmEucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmEubGV0dGVyU3BhY2luZz0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PigwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6bi50b3A9bi5ib3R0b209bi5sZWZ0PW4ucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6bi50b3A9bi5ib3R0b209ZVswXTtuLmxlZnQ9bi5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzpuLnRvcD1lWzBdO24uYm90dG9tPWVbMl07bi5sZWZ0PW4ucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6bi50b3A9ZVswXTtuLmxlZnQ9ZVsxXTtuLmJvdHRvbT1lWzJdO24ucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOm4udG9wPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6bi5ib3R0b209KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6bi5sZWZ0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjpuLnJpZ2h0PSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOmk9KDAscy5nZXRNZWFzdXJlbWVudCkodCl9ZS5wdXNoRGF0YShhLG4saSk7aWYodGhpc1tyLiRjb250ZW50XSllLmFkZFN0cmluZyh0aGlzW3IuJGNvbnRlbnRdKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbci4kZ2V0Q2hpbGRyZW5dKCkpIiN0ZXh0IiE9PXRbci4kbm9kZU5hbWVdP3Rbci4kcHVzaEdseXBoc10oZSk6ZS5hZGRTdHJpbmcodFtyLiRjb250ZW50XSk7dCYmZS5wb3BGb250KCl9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD1bXTt0aGlzW3IuJGV4dHJhXT17Y2hpbGRyZW46dH07dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbci4kY29udGVudF0pcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTtsZXQgYTthPXRoaXNbbF0/dGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnJlcGxhY2VBbGwoZywiXG4iKTp2b2lkIDA6dGhpc1tyLiRjb250ZW50XXx8dm9pZCAwO3JldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZTp0aGlzW3IuJG5vZGVOYW1lXSxhdHRyaWJ1dGVzOntocmVmOnRoaXMuaHJlZixzdHlsZTptYXBTdHlsZSh0aGlzLnN0eWxlLHRoaXMsdGhpc1tsXSl9LGNoaWxkcmVuOnQsdmFsdWU6YX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj0oMCxpLmZpeFVSTCkoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W3IuJHB1c2hHbHlwaHNdKGUpe2UucHVzaEZvbnQoe3dlaWdodDoiYm9sZCJ9KTtzdXBlcltyLiRwdXNoR2x5cGhzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgQm9keSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJvZHkiKX1bci4kdG9IVE1MXShlKXtjb25zdCB0PXN1cGVyW3IuJHRvSFRNTF0oZSkse2h0bWw6YX09dDtpZighYSlyZXR1cm4gcy5IVE1MUmVzdWx0LkVNUFRZO2EubmFtZT0iZGl2IjthLmF0dHJpYnV0ZXMuY2xhc3M9WyJ4ZmFSaWNoIl07cmV0dXJuIHR9fWNsYXNzIEJyIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYnIiKX1bci4kdGV4dF0oKXtyZXR1cm4iXG4ifVtyLiRwdXNoR2x5cGhzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bci4kdG9IVE1MXShlKXtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9W107dGhpc1tyLiRleHRyYV09e2NoaWxkcmVuOnR9O3RoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHt9KTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW3IuJGNvbnRlbnRdfHwiIn0pO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3QgZT10WzBdO2lmKGUuYXR0cmlidXRlcz8uY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSlyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W3IuJHB1c2hHbHlwaHNdKGUpe2UucHVzaEZvbnQoe3Bvc3R1cmU6Iml0YWxpYyJ9KTtzdXBlcltyLiRwdXNoR2x5cGhzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgTGkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJsaSIpfX1jbGFzcyBPbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm9sIil9fWNsYXNzIFAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJwIil9W3IuJHB1c2hHbHlwaHNdKGUpe3N1cGVyW3IuJHB1c2hHbHlwaHNdKGUsITEpO2UuYWRkU3RyaW5nKCJcbiIpO2UuYWRkUGFyYSgpO2UucG9wRm9udCgpfVtyLiR0ZXh0XSgpe3JldHVybiB0aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRDaGlsZHJlbl0oKS5hdCgtMSk9PT10aGlzP3N1cGVyW3IuJHRleHRdKCk6c3VwZXJbci4kdGV4dF0oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljW24uJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX10LlhodG1sTmFtZXNwYWNlPVhodG1sTmFtZXNwYWNlfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlVua25vd25OYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoMjM0KSxuPWEoMjQwKTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7cmV0dXJuIG5ldyBuLlhtbE9iamVjdCh0aGlzLm5hbWVzcGFjZUlkLGUsdCl9fXQuVW5rbm93bk5hbWVzcGFjZT1Vbmtub3duTmFtZXNwYWNlfSwoZSx0LGEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRhdGFzZXRSZWFkZXI9dm9pZCAwO2EoMik7dmFyIHI9YSgxNDQpLG49YSgxNDkpLGk9YSgyMTcpO2Z1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuKDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKGUpfWNhdGNoKHQpeygwLHIud2FybikoYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgaS5TaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl7dGhpcy5ub2RlPXQ7dGhyb3cgbmV3IEVycm9yKCJBYm9ydGluZyBEYXRhc2V0WE1MUGFyc2VyLiIpfX19dC5EYXRhc2V0UmVhZGVyPWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IGkuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUuZGF0YXNldHMpLmRvY3VtZW50RWxlbWVudDtlbHNle2NvbnN0IHQ9bmV3IERhdGFzZXRYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7dC5wYXJzZUZyb21TdHJpbmcoZVsieGRwOnhkcCJdKX1jYXRjaHt9dGhpcy5ub2RlPXQubm9kZX19Z2V0VmFsdWUoZSl7aWYoIXRoaXMubm9kZXx8IWUpcmV0dXJuIiI7Y29uc3QgdD10aGlzLm5vZGUuc2VhcmNoTm9kZSgoMCxuLnBhcnNlWEZBUGF0aCkoZSksMCk7aWYoIXQpcmV0dXJuIiI7Y29uc3QgYT10LmZpcnN0Q2hpbGQ7cmV0dXJuInZhbHVlIj09PWE/Lm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmPXZvaWQgMDthKDExNik7YSgxMjYpO2EoMTI4KTthKDEzMSk7YSgxMzMpO2EoMTM1KTthKDEzNyk7YSg4NCk7YSg5Myk7YSg5NCk7YSg5Nyk7YSg5OSk7YSgxMDEpO2EoMTA1KTthKDEwOCk7YSgxMTUpO2EoMTM5KTthKDIpO3ZhciByPWEoMTQ0KSxuPWEoMTUwKSxpPWEoMTY2KSxzPWEoMTQ5KSxvPWEoMTUxKSxjPWEoMjE4KTt0LlhSZWY9Y2xhc3MgWFJlZnsjYT1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBuLlJlZlNldDt0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtPW51bGw7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPW51bGx9Z2V0TmV3UGVyc2lzdGVudFJlZihlKXtudWxsPT09dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSYmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MSk7Y29uc3QgdD10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtKys7dGhpcy5fY2FjaGVNYXAuc2V0KHQsZSk7cmV0dXJuIG4uUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe251bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0mJih0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MSk7cmV0dXJuIG4uUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsfXNldFN0YXJ0WFJlZihlKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlPVtlXX1wYXJzZSgpe2xldCBlLHQsYSxpPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYoaSl7KDAsci53YXJuKSgiSW5kZXhpbmcgYWxsIFBERiBvYmplY3RzIik7ZT10aGlzLmluZGV4T2JqZWN0cygpfWVsc2UgZT10aGlzLnJlYWRYUmVmKCk7ZS5hc3NpZ25YcmVmKHRoaXMpO3RoaXMudHJhaWxlcj1lO3RyeXt0PWUuZ2V0KCJFbmNyeXB0Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiRW5jcnlwdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYodCBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgYT1lLmdldCgiSUQiKSxyPWE/Lmxlbmd0aD9hWzBdOiIiO3Quc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgYy5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KHQscix0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXthPWUuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYSBpbnN0YW5jZW9mIG4uRGljdCl0cnl7aWYoYS5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIG4uRGljdCl7dGhpcy5yb290PWE7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWkpdGhyb3cgbmV3IHMuWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyByLkludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtjb25zdCB0PXRoaXMucmVhZFhSZWZUYWJsZShlKTtpZighKDAsbi5pc0NtZCkodCwidHJhaWxlciIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCBhPWUuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIG4uRGljdHx8IWEuZGljdHx8KGE9YS5kaWN0KTtpZighKGEgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiBhfXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxhPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1hLnN0cmVhbVBvcztlLmJ1ZjE9YS5wYXJzZXJCdWYxO2UuYnVmMj1hLnBhcnNlckJ1ZjI7bGV0IGk7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGEpfHwhKCJlbnRyeUNvdW50ImluIGEpKXtpZigoMCxuLmlzQ21kKShpPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhazthLmZpcnN0RW50cnlOdW09aTthLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1hLmZpcnN0RW50cnlOdW07Y29uc3Qgbz1hLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBpPWEuZW50cnlOdW07aTxvO2krKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1pO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBjPXt9O2Mub2Zmc2V0PWUuZ2V0T2JqKCk7Yy5nZW49ZS5nZXRPYmooKTtjb25zdCBsPWUuZ2V0T2JqKCk7aWYobCBpbnN0YW5jZW9mIG4uQ21kKXN3aXRjaChsLmNtZCl7Y2FzZSJmIjpjLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpjLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihjLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMuZ2VuKXx8IWMuZnJlZSYmIWMudW5jb21wcmVzc2VkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtvfWApOzA9PT1pJiZjLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLmVudHJpZXNbaStzXXx8KHRoaXMuZW50cmllc1tpK3NdPWMpfWEuZW50cnlOdW09MDthLnN0cmVhbVBvcz10LnBvczthLnBhcnNlckJ1ZjE9ZS5idWYxO2EucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGEuZmlyc3RFbnRyeU51bTtkZWxldGUgYS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGl9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0IHQ9ZS5kaWN0LGE9dC5nZXQoIlciKTtsZXQgcj10LmdldCgiSW5kZXgiKTtyfHwocj1bMCx0LmdldCgiU2l6ZSIpXSk7dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cixieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5wb3N9fXRoaXMucmVhZFhSZWZTdHJlYW0oZSk7ZGVsZXRlIHRoaXMuc3RyZWFtU3RhdGU7cmV0dXJuIGUuZGljdH1yZWFkWFJlZlN0cmVhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtU3RhdGU7ZS5wb3M9dC5zdHJlYW1Qb3M7Y29uc3RbYSxuLGldPXQuYnl0ZVdpZHRocyxzPXQuZW50cnlSYW5nZXM7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3RbbyxjXT1zO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtvfSwgJHtjfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke299LCAke2N9YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxjOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBjPTAsbD0wLGg9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ3R5cGUnLiIpO2M9Yzw8OHx0fTA9PT1hJiYoYz0xKTtmb3IobGV0IHQ9MDt0PG47Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtoPWg8PDh8dH1jb25zdCB1PXt9O3Uub2Zmc2V0PWw7dS5nZW49aDtzd2l0Y2goYyl7Y2FzZSAwOnUuZnJlZT0hMDticmVhaztjYXNlIDE6dS51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke2N9YCl9dGhpcy5lbnRyaWVzW28rc118fCh0aGlzLmVudHJpZXNbbytzXT11KX10LmVudHJ5TnVtPTA7dC5zdHJlYW1Qb3M9ZS5wb3M7cy5zcGxpY2UoMCwyKX19aW5kZXhPYmplY3RzKCl7ZnVuY3Rpb24gcmVhZFRva2VuKGUsdCl7bGV0IGE9IiIscj1lW3RdO2Zvcig7MTAhPT1yJiYxMyE9PXImJjYwIT09ciYmISgrK3Q+PWUubGVuZ3RoKTspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUocik7cj1lW3RdfXJldHVybiBhfWZ1bmN0aW9uIHNraXBVbnRpbChlLHQsYSl7Y29uc3Qgcj1hLmxlbmd0aCxuPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDt0PG47KXtsZXQgbj0wO2Zvcig7bjxyJiZlW3Qrbl09PT1hW25dOykrK247aWYobj49cilicmVhazt0Kys7aSsrfXJldHVybiBpfWNvbnN0IGU9L1xiKGVuZG9ianxcZCtccytcZCtccytvYmp8eHJlZnx0cmFpbGVyXHMqPDwpXGIvZyx0PS9cYihzdGFydHhyZWZ8XGQrXHMrXGQrXHMrb2JqKVxiL2csYT0vXihcZCspXHMrKFxkKylccytvYmpcYi8sbz1uZXcgVWludDhBcnJheShbMTE2LDExNCw5NywxMDUsMTA4LDEwMSwxMTRdKSxjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbD1uZXcgVWludDhBcnJheShbNDcsODgsODIsMTAxLDEwMl0pO3RoaXMuZW50cmllcy5sZW5ndGg9MDt0aGlzLl9jYWNoZU1hcC5jbGVhcigpO2NvbnN0IGg9dGhpcy5zdHJlYW07aC5wb3M9MDtjb25zdCB1PWguZ2V0Qnl0ZXMoKSxkPSgwLHIuYnl0ZXNUb1N0cmluZykodSksZj11Lmxlbmd0aDtsZXQgZz1oLnN0YXJ0O2NvbnN0IHA9W10sbT1bXTtmb3IoO2c8Zjspe2xldCBuPXVbZ107aWYoOT09PW58fDEwPT09bnx8MTM9PT1ufHwzMj09PW4peysrZztjb250aW51ZX1pZigzNz09PW4pe2RveysrZztpZihnPj1mKWJyZWFrO249dVtnXX13aGlsZSgxMCE9PW4mJjEzIT09bik7Y29udGludWV9Y29uc3QgYj1yZWFkVG9rZW4odSxnKTtsZXQgeTtpZihiLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbNF0pKSl7Zys9c2tpcFVudGlsKHUsZyxvKTtwLnB1c2goZyk7Zys9c2tpcFVudGlsKHUsZyxjKX1lbHNlIGlmKHk9YS5leGVjKGIpKXtjb25zdCB0PTB8eVsxXSxhPTB8eVsyXSxuPWcrYi5sZW5ndGg7bGV0IG8sYz0hMTtpZih0aGlzLmVudHJpZXNbdF0pe2lmKHRoaXMuZW50cmllc1t0XS5nZW49PT1hKXRyeXtuZXcgaS5QYXJzZXIoe2xleGVyOm5ldyBpLkxleGVyKGgubWFrZVN1YlN0cmVhbShuKSl9KS5nZXRPYmooKTtjPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBzLlBhcnNlckVPRkV4Y2VwdGlvbj8oMCxyLndhcm4pKGBpbmRleE9iamVjdHMgLS0gY2hlY2tpbmcgb2JqZWN0ICgke2J9KTogIiR7ZX0iLmApOmM9ITB9fWVsc2UgYz0hMDtjJiYodGhpcy5lbnRyaWVzW3RdPXtvZmZzZXQ6Zy1oLnN0YXJ0LGdlbjphLHVuY29tcHJlc3NlZDohMH0pO2UubGFzdEluZGV4PW47Y29uc3QgcD1lLmV4ZWMoZCk7aWYocCl7bz1lLmxhc3RJbmRleCsxLWc7aWYoImVuZG9iaiIhPT1wWzFdKXsoMCxyLndhcm4pKGBpbmRleE9iamVjdHM6IEZvdW5kICIke3BbMV19IiBpbnNpZGUgb2YgYW5vdGhlciAib2JqIiwgY2F1c2VkIGJ5IG1pc3NpbmcgImVuZG9iaiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7by09cFsxXS5sZW5ndGgrMX19ZWxzZSBvPWYtZztjb25zdCB3PXUuc3ViYXJyYXkoZyxnK28pLFM9c2tpcFVudGlsKHcsMCxsKTtpZihTPG8mJndbUys1XTw2NCl7bS5wdXNoKGctaC5zdGFydCk7dGhpcy5feHJlZlN0bXMuYWRkKGctaC5zdGFydCl9Zys9b31lbHNlIGlmKGIuc3RhcnRzV2l0aCgidHJhaWxlciIpJiYoNz09PWIubGVuZ3RofHwvXHMvLnRlc3QoYls3XSkpKXtwLnB1c2goZyk7Y29uc3QgZT1nK2IubGVuZ3RoO2xldCBhO3QubGFzdEluZGV4PWU7Y29uc3Qgbj10LmV4ZWMoZCk7aWYobil7YT10Lmxhc3RJbmRleCsxLWc7aWYoInN0YXJ0eHJlZiIhPT1uWzFdKXsoMCxyLndhcm4pKGBpbmRleE9iamVjdHM6IEZvdW5kICIke25bMV19IiBhZnRlciAidHJhaWxlciIsIGNhdXNlZCBieSBtaXNzaW5nICJzdGFydHhyZWYiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO2EtPW5bMV0ubGVuZ3RoKzF9fWVsc2UgYT1mLWc7Zys9YX1lbHNlIGcrPWIubGVuZ3RoKzF9Zm9yKGNvbnN0IGUgb2YgbSl7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKGUpO3RoaXMucmVhZFhSZWYoITApfWNvbnN0IGI9W107bGV0IHksdyxTPSExO2Zvcihjb25zdCBlIG9mIHApe2gucG9zPWU7Y29uc3QgdD1uZXcgaS5QYXJzZXIoe2xleGVyOm5ldyBpLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSksYT10LmdldE9iaigpO2lmKCEoMCxuLmlzQ21kKShhLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3Qgcj10LmdldE9iaigpO2lmKHIgaW5zdGFuY2VvZiBuLkRpY3Qpe2IucHVzaChyKTtyLmhhcygiRW5jcnlwdCIpJiYoUz0hMCl9fWZvcihjb25zdCBlIG9mWy4uLmIsImdlbkZhbGxiYWNrIiwuLi5iXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF3KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgYT1lLmdldCgiUm9vdCIpO2lmKCEoYSBpbnN0YW5jZW9mIG4uRGljdCkpY29udGludWU7Y29uc3Qgcj1hLmdldCgiUGFnZXMiKTtpZighKHIgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2NvbnN0IGk9ci5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihpKSYmKHQ9ITApfWNhdGNoKGUpe3c9ZTtjb250aW51ZX1pZih0JiYoIVN8fGUuaGFzKCJFbmNyeXB0IikpJiZlLmhhcygiSUQiKSlyZXR1cm4gZTt5PWV9aWYoeSlyZXR1cm4geTtpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDt0aHJvdyBuZXcgci5JbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXsoMCxyLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3Qgcz1uZXcgaS5QYXJzZXIoe2xleGVyOm5ldyBpLkxleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgYyxsPXMuZ2V0T2JqKCk7aWYoKDAsbi5pc0NtZCkobCwieHJlZiIpKXtjPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShzKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9Yyk7bD1jLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIobCkmJiF0aGlzLl94cmVmU3Rtcy5oYXMobCkpe3RoaXMuX3hyZWZTdG1zLmFkZChsKTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk7dGhpcy4jYT8/PWx9fWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIobCkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0gaGVhZGVyIik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKHMuZ2V0T2JqKCkpJiYoMCxuLmlzQ21kKShzLmdldE9iaigpLCJvYmoiKSYmKGw9cy5nZXRPYmooKSlpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0iKTtjPXRoaXMucHJvY2Vzc1hSZWZTdHJlYW0obCk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PWMpO2lmKCFjKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJGYWlsZWQgdG8gcmVhZCBYUmVmIHN0cmVhbSIpfWw9Yy5nZXQoIlByZXYiKTtOdW1iZXIuaXNJbnRlZ2VyKGwpP3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChsKTpsIGluc3RhbmNlb2Ygbi5SZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChsLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLmluZm8pKCIod2hpbGUgcmVhZGluZyBYUmVmKTogIitlKX10aGlzLnN0YXJ0WFJlZlF1ZXVlLnNoaWZ0KCl9aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7aWYoIWUpdGhyb3cgbmV3IHMuWFJlZlBhcnNlRXhjZXB0aW9ufWdldCBsYXN0WFJlZlN0cmVhbVBvcygpe3JldHVybiB0aGlzLiNhPz8odGhpcy5feHJlZlN0bXMuc2l6ZT4wP01hdGgubWF4KC4uLnRoaXMuX3hyZWZTdG1zKTpudWxsKX1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07aWYoIShlIGluc3RhbmNlb2Ygbi5SZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBhPWUubnVtLGk9dGhpcy5fY2FjaGVNYXAuZ2V0KGEpO2lmKHZvaWQgMCE9PWkpe2kgaW5zdGFuY2VvZiBuLkRpY3QmJiFpLm9iaklkJiYoaS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBpfWxldCBzPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PXMpe3RoaXMuX2NhY2hlTWFwLnNldChhLHMpO3JldHVybiBzfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpOygwLHIud2FybikoYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbi5DSVJDVUxBUl9SRUZ9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtzPXMudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxzLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscyx0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9cyBpbnN0YW5jZW9mIG4uRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHN9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0KXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2NvbnN0IGM9ZS5nZW47bGV0IGw9ZS5udW07aWYodC5nZW4hPT1jKXtjb25zdCBpPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPGMpeygwLHIud2FybikoaSk7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQobi5SZWYuZ2V0KGwsdC5nZW4pLHQsYSl9dGhyb3cgbmV3IHMuWFJlZkVudHJ5RXhjZXB0aW9uKGkpfWNvbnN0IGg9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksdT1uZXcgaS5QYXJzZXIoe2xleGVyOm5ldyBpLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxkPXUuZ2V0T2JqKCksZj11LmdldE9iaigpLGc9dS5nZXRPYmooKTtpZihkIT09bHx8ZiE9PWN8fCEoZyBpbnN0YW5jZW9mIG4uQ21kKSl0aHJvdyBuZXcgcy5YUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1nLmNtZCl7aWYoZy5jbWQuc3RhcnRzV2l0aCgib2JqIikpe2w9cGFyc2VJbnQoZy5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKGwpKXJldHVybiBsfXRocm93IG5ldyBzLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFhP3UuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obCxjKSk6dS5nZXRPYmooKSlpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KGwsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCl7Y29uc3QgYT10Lm9mZnNldCxjPXRoaXMuZmV0Y2gobi5SZWYuZ2V0KGEsMCkpO2lmKCEoYyBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImJhZCBPYmpTdG0gc3RyZWFtIik7Y29uc3QgbD1jLmRpY3QuZ2V0KCJGaXJzdCIpLGg9Yy5kaWN0LmdldCgiTiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpfHwhTnVtYmVyLmlzSW50ZWdlcihoKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IHU9bmV3IGkuUGFyc2VyKHtsZXhlcjpuZXcgaS5MZXhlcihjKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgZD1uZXcgQXJyYXkoaCksZj1uZXcgQXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoOysrZSl7Y29uc3QgdD11LmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBhPXUuZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHthfWApO2RbZV09dDtmW2VdPWF9Y29uc3QgZz0oYy5zdGFydHx8MCkrbCxwPW5ldyBBcnJheShoKTtmb3IobGV0IGU9MDtlPGg7KytlKXtjb25zdCB0PWU8aC0xP2ZbZSsxXS1mW2VdOnZvaWQgMDtpZih0PDApdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtLiIpO3U9bmV3IGkuUGFyc2VyKHtsZXhlcjpuZXcgaS5MZXhlcihjLm1ha2VTdWJTdHJlYW0oZytmW2VdLHQsYy5kaWN0KSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IG49dS5nZXRPYmooKTtwW2VdPW47aWYobiBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSljb250aW51ZTtjb25zdCBzPWRbZV0sbD10aGlzLmVudHJpZXNbc107bCYmbC5vZmZzZXQ9PT1hJiZsLmdlbj09PWUmJnRoaXMuX2NhY2hlTWFwLnNldChzLG4pfWlmKHZvaWQgMD09PSh0PXBbdC5nZW5dKSl0aHJvdyBuZXcgcy5YUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2Ygbi5SZWY/dGhpcy5mZXRjaEFzeW5jKGUsdCk6ZX1hc3luYyBmZXRjaEFzeW5jKGUsdCl7dHJ5e3JldHVybiB0aGlzLmZldGNoKGUsdCl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKGEuYmVnaW4sYS5lbmQpO3JldHVybiB0aGlzLmZldGNoQXN5bmMoZSx0KX19Z2V0Q2F0YWxvZ09iaigpe3JldHVybiB0aGlzLnJvb3R9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXNzYWdlSGFuZGxlcj12b2lkIDA7YSgyKTt2YXIgcj1hKDE0NCk7Y29uc3Qgbj0xLGk9MixzPTEsbz0yLGM9MyxsPTQsaD01LHU9NixkPTcsZj04O2Z1bmN0aW9uIHdyYXBSZWFzb24oZSl7ZSBpbnN0YW5jZW9mIEVycm9yfHwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfHwoMCxyLnVucmVhY2hhYmxlKSgnd3JhcFJlYXNvbjogRXhwZWN0ZWQgInJlYXNvbiIgdG8gYmUgYSAocG9zc2libHkgY2xvbmVkKSBFcnJvci4nKTtzd2l0Y2goZS5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuQWJvcnRFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIk1pc3NpbmdQREZFeGNlcHRpb24iOnJldHVybiBuZXcgci5NaXNzaW5nUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLlBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKGUubWVzc2FnZSxlLnN0YXR1cyk7Y2FzZSJVbmtub3duRXJyb3JFeGNlcHRpb24iOnJldHVybiBuZXcgci5Vbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUuZGV0YWlscyk7ZGVmYXVsdDpyZXR1cm4gbmV3IHIuVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpfX10Lk1lc3NhZ2VIYW5kbGVyPWNsYXNzIE1lc3NhZ2VIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLnNvdXJjZU5hbWU9ZTt0aGlzLnRhcmdldE5hbWU9dDt0aGlzLmNvbU9iaj1hO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9vbkNvbU9iak9uTWVzc2FnZT1lPT57Y29uc3QgdD1lLmRhdGE7aWYodC50YXJnZXROYW1lIT09dGhpcy5zb3VyY2VOYW1lKXJldHVybjtpZih0LnN0cmVhbSl7dGhpcy4jcih0KTtyZXR1cm59aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQsYT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFhKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHtlfWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKHQuY2FsbGJhY2s9PT1uKWEucmVzb2x2ZSh0LmRhdGEpO2Vsc2V7aWYodC5jYWxsYmFjayE9PWkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IHI9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscz10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uocih0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihyKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpzLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTpyfSl9KSwoZnVuY3Rpb24ocil7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazppLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHIpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP3RoaXMuI24odCk6cih0LmRhdGEpfTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKyssaT1uZXcgci5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW25dPWk7dHJ5e3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxjYWxsYmFja0lkOm4sZGF0YTp0fSxhKX1jYXRjaChlKXtpLnJlamVjdChlKX1yZXR1cm4gaS5wcm9taXNlfXNlbmRXaXRoU3RyZWFtKGUsdCxhLG4pe2NvbnN0IGk9dGhpcy5zdHJlYW1JZCsrLG89dGhpcy5zb3VyY2VOYW1lLGM9dGhpcy50YXJnZXROYW1lLGw9dGhpcy5jb21PYmo7cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6YT0+e2NvbnN0IHM9bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXT17Y29udHJvbGxlcjphLHN0YXJ0Q2FsbDpzLHB1bGxDYWxsOm51bGwsY2FuY2VsQ2FsbDpudWxsLGlzQ2xvc2VkOiExfTtsLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm8sdGFyZ2V0TmFtZTpjLGFjdGlvbjplLHN0cmVhbUlkOmksZGF0YTp0LGRlc2lyZWRTaXplOmEuZGVzaXJlZFNpemV9LG4pO3JldHVybiBzLnByb21pc2V9LHB1bGw6ZT0+e2NvbnN0IHQ9bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O2wucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmMsc3RyZWFtOnUsc3RyZWFtSWQ6aSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9PnsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD1uZXcgci5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2ldLmNhbmNlbENhbGw9dDt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2ldLmlzQ2xvc2VkPSEwO2wucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmMsc3RyZWFtOnMsc3RyZWFtSWQ6aSxyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxhKX0jbihlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixzPXRoaXMsbz10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dLHU9e2VucXVldWUoZSl7bGV0IHM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEsbz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBjPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09cztpZihjPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9bmV3IHIuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5yZWFkeT10aGlzLnNpbmtDYXBhYmlsaXR5LnByb21pc2V9aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06bCxzdHJlYW1JZDp0LGNodW5rOmV9LG8pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmMsc3RyZWFtSWQ6dH0pO2RlbGV0ZSBzLnN0cmVhbVNpbmtzW3RdfX0sZXJyb3IoZSl7KDAsci5hc3NlcnQpKGUgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06aCxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9fSxzaW5rQ2FwYWJpbGl0eTpuZXcgci5Qcm9taXNlQ2FwYWJpbGl0eSxvblB1bGw6bnVsbCxvbkNhbmNlbDpudWxsLGlzQ2FuY2VsbGVkOiExLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemUscmVhZHk6bnVsbH07dS5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7dS5yZWFkeT11LnNpbmtDYXBhYmlsaXR5LnByb21pc2U7dGhpcy5zdHJlYW1TaW5rc1t0XT11O25ldyBQcm9taXNlKChmdW5jdGlvbih0KXt0KG8oZS5kYXRhLHUpKX0pKS50aGVuKChmdW5jdGlvbigpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmYsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06ZixzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSl9I3IoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGE9dGhpcy5zb3VyY2VOYW1lLG49ZS5zb3VyY2VOYW1lLGk9dGhpcy5jb21PYmosZz10aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdLHA9dGhpcy5zdHJlYW1TaW5rc1t0XTtzd2l0Y2goZS5zdHJlYW0pe2Nhc2UgZjplLnN1Y2Nlc3M/Zy5zdGFydENhbGwucmVzb2x2ZSgpOmcuc3RhcnRDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBkOmUuc3VjY2Vzcz9nLnB1bGxDYWxsLnJlc29sdmUoKTpnLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSB1OmlmKCFwKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpkLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pO2JyZWFrfXAuZGVzaXJlZFNpemU8PTAmJmUuZGVzaXJlZFNpemU+MCYmcC5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7cC5kZXNpcmVkU2l6ZT1lLmRlc2lyZWRTaXplO25ldyBQcm9taXNlKChmdW5jdGlvbihlKXtlKHAub25QdWxsPy4oKSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpkLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmQsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO2JyZWFrO2Nhc2UgbDooMCxyLmFzc2VydCkoZywiZW5xdWV1ZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKGcuaXNDbG9zZWQpYnJlYWs7Zy5jb250cm9sbGVyLmVucXVldWUoZS5jaHVuayk7YnJlYWs7Y2FzZSBjOigwLHIuYXNzZXJ0KShnLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKGcuaXNDbG9zZWQpYnJlYWs7Zy5pc0Nsb3NlZD0hMDtnLmNvbnRyb2xsZXIuY2xvc2UoKTt0aGlzLiNpKGcsdCk7YnJlYWs7Y2FzZSBoOigwLHIuYXNzZXJ0KShnLCJlcnJvciBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2cuY29udHJvbGxlci5lcnJvcih3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jaShnLHQpO2JyZWFrO2Nhc2UgbzplLnN1Y2Nlc3M/Zy5jYW5jZWxDYWxsLnJlc29sdmUoKTpnLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiNpKGcsdCk7YnJlYWs7Y2FzZSBzOmlmKCFwKWJyZWFrO25ldyBQcm9taXNlKChmdW5jdGlvbih0KXt0KHAub25DYW5jZWw/Lih3cmFwUmVhc29uKGUucmVhc29uKSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06byxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTtwLnNpbmtDYXBhYmlsaXR5LnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7cC5pc0NhbmNlbGxlZD0hMDtkZWxldGUgdGhpcy5zdHJlYW1TaW5rc1t0XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBzdHJlYW0gY2FzZSIpfX1hc3luYyNpKGUsdCl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtlLnN0YXJ0Q2FsbD8ucHJvbWlzZSxlLnB1bGxDYWxsPy5wcm9taXNlLGUuY2FuY2VsQ2FsbD8ucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKGUsdCxhKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5QREZXb3JrZXJTdHJlYW09dm9pZCAwO2EoMTM5KTt2YXIgcj1hKDE0NCk7dC5QREZXb3JrZXJTdHJlYW09Y2xhc3MgUERGV29ya2VyU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuX21zZ0hhbmRsZXI9ZTt0aGlzLl9jb250ZW50TGVuZ3RoPW51bGw7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzPVtdfWdldEZ1bGxSZWFkZXIoKXsoMCxyLmFzc2VydCkoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZXb3JrZXJTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgUERGV29ya2VyU3RyZWFtUmVhZGVyKHRoaXMuX21zZ0hhbmRsZXIpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcihlLHQpe2NvbnN0IGE9bmV3IFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKGUsdCx0aGlzLl9tc2dIYW5kbGVyKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2goYSk7cmV0dXJuIGF9Y2FuY2VsQWxsUmVxdWVzdHMoZSl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXImJnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLmNhbmNlbChlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKXQuY2FuY2VsKGUpfX07Y2xhc3MgUERGV29ya2VyU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuX21zZ0hhbmRsZXI9ZTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLl9jb250ZW50TGVuZ3RoPW51bGw7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hMTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMTtjb25zdCB0PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJlYWRlciIpO3RoaXMuX3JlYWRlcj10LmdldFJlYWRlcigpO3RoaXMuX2hlYWRlcnNSZWFkeT10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiUmVhZGVySGVhZGVyc1JlYWR5IikudGhlbigoZT0+e3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPWUuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD1lLmlzUmFuZ2VTdXBwb3J0ZWQ7dGhpcy5fY29udGVudExlbmd0aD1lLmNvbnRlbnRMZW5ndGh9KSl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzUmVhZHl9Z2V0IGNvbnRlbnRMZW5ndGgoKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1hc3luYyByZWFkKCl7Y29uc3R7dmFsdWU6ZSxkb25lOnR9PWF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7cmV0dXJuIHQ/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTp7dmFsdWU6ZS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKGUpe3RoaXMuX3JlYWRlci5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLl9tc2dIYW5kbGVyPWE7dGhpcy5vblByb2dyZXNzPW51bGw7Y29uc3Qgcj10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSYW5nZVJlYWRlciIse2JlZ2luOmUsZW5kOnR9KTt0aGlzLl9yZWFkZXI9ci5nZXRSZWFkZXIoKX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7Y29uc3R7dmFsdWU6ZSxkb25lOnR9PWF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7cmV0dXJuIHQ/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTp7dmFsdWU6ZS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKGUpe3RoaXMuX3JlYWRlci5jYW5jZWwoZSl9fX1dLHQ9e307ZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyhhKXt2YXIgcj10W2FdO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIuZXhwb3J0czt2YXIgbj10W2FdPXtleHBvcnRzOnt9fTtlW2FdLmNhbGwobi5leHBvcnRzLG4sbi5leHBvcnRzLF9fd19wZGZqc19yZXF1aXJlX18pO3JldHVybiBuLmV4cG9ydHN9X193X3BkZmpzX3JlcXVpcmVfXy5kPShlLHQpPT57Zm9yKHZhciBhIGluIHQpX193X3BkZmpzX3JlcXVpcmVfXy5vKHQsYSkmJiFfX3dfcGRmanNfcmVxdWlyZV9fLm8oZSxhKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYSx7ZW51bWVyYWJsZTohMCxnZXQ6dFthXX0pfTtfX3dfcGRmanNfcmVxdWlyZV9fLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpO19fd19wZGZqc19yZXF1aXJlX18ucj1lPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX07dmFyIGE9e307KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlPWE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJXb3JrZXJNZXNzYWdlSGFuZGxlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuV29ya2VyTWVzc2FnZUhhbmRsZXJ9fSk7dmFyIHQ9X193X3BkZmpzX3JlcXVpcmVfXygxKX0pKCk7cmV0dXJuIGF9KSgpKSk7",a="IWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmIixbXSxlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0c1sicGRmanMtZGlzdC9idWlsZC9wZGYiXT1lKCk6dFsicGRmanMtZGlzdC9idWlsZC9wZGYiXT10LnBkZmpzTGliPWUoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+e3ZhciBfX3dlYnBhY2tfbW9kdWxlc19fPVssKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5WZXJib3NpdHlMZXZlbD1lLlV0aWw9ZS5Vbmtub3duRXJyb3JFeGNlcHRpb249ZS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb249ZS5UZXh0UmVuZGVyaW5nTW9kZT1lLlJlbmRlcmluZ0ludGVudEZsYWc9ZS5Qcm9taXNlQ2FwYWJpbGl0eT1lLlBlcm1pc3Npb25GbGFnPWUuUGFzc3dvcmRSZXNwb25zZXM9ZS5QYXNzd29yZEV4Y2VwdGlvbj1lLlBhZ2VBY3Rpb25FdmVudFR5cGU9ZS5PUFM9ZS5NaXNzaW5nUERGRXhjZXB0aW9uPWUuTUFYX0lNQUdFX1NJWkVfVE9fQ0FDSEU9ZS5MSU5FX0ZBQ1RPUj1lLkxJTkVfREVTQ0VOVF9GQUNUT1I9ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWUuSW1hZ2VLaW5kPWUuSURFTlRJVFlfTUFUUklYPWUuRm9ybWF0RXJyb3I9ZS5GZWF0dXJlVGVzdD1lLkZPTlRfSURFTlRJVFlfTUFUUklYPWUuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9ZS5DTWFwQ29tcHJlc3Npb25UeXBlPWUuQmFzZUV4Y2VwdGlvbj1lLkJBU0VMSU5FX0ZBQ1RPUj1lLkFubm90YXRpb25UeXBlPWUuQW5ub3RhdGlvblJlcGx5VHlwZT1lLkFubm90YXRpb25Nb2RlPWUuQW5ub3RhdGlvbkZsYWc9ZS5Bbm5vdGF0aW9uRmllbGRGbGFnPWUuQW5ub3RhdGlvbkVkaXRvclR5cGU9ZS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PWUuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9ZS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPWUuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT1lLkFib3J0RXhjZXB0aW9uPXZvaWQgMDtlLmFzc2VydD1mdW5jdGlvbiBhc3NlcnQodCxlKXt0fHx1bnJlYWNoYWJsZShlKX07ZS5ieXRlc1RvU3RyaW5nPWJ5dGVzVG9TdHJpbmc7ZS5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwodCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighdClyZXR1cm4gbnVsbDt0cnl7aWYobiYmInN0cmluZyI9PXR5cGVvZiB0KXtpZihuLmFkZERlZmF1bHRQcm90b2NvbCYmdC5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IGU9dC5tYXRjaCgvXC4vZyk7ZT8ubGVuZ3RoPj0yJiYodD1gaHR0cDovLyR7dH1gKX1pZihuLnRyeUNvbnZlcnRFbmNvZGluZyl0cnl7dD1zdHJpbmdUb1VURjhTdHJpbmcodCl9Y2F0Y2h7fX1jb25zdCBpPWU/bmV3IFVSTCh0LGUpOm5ldyBVUkwodCk7aWYoZnVuY3Rpb24gX2lzVmFsaWRQcm90b2NvbCh0KXtzd2l0Y2godD8ucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oaSkpcmV0dXJuIGl9Y2F0Y2h7fXJldHVybiBudWxsfTtlLmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZSgpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpuZXcgRGF0ZTtyZXR1cm5bdC5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKHQuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksdC5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksdC5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfTtlLmdldFV1aWQ9ZnVuY3Rpb24gZ2V0VXVpZCgpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvJiYiZnVuY3Rpb24iPT10eXBlb2YgY3J5cHRvPy5yYW5kb21VVUlEKXJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMzIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvJiYiZnVuY3Rpb24iPT10eXBlb2YgY3J5cHRvPy5nZXRSYW5kb21WYWx1ZXMpY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh0KTtlbHNlIGZvcihsZXQgZT0wO2U8MzI7ZSsrKXRbZV09TWF0aC5mbG9vcigyNTUqTWF0aC5yYW5kb20oKSk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcodCl9O2UuZ2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gc307ZS5pbmZvPWZ1bmN0aW9uIGluZm8odCl7cz49ci5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7dH1gKX07ZS5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZ2b2lkIDAhPT10Py5ieXRlTGVuZ3RofTtlLmlzQXJyYXlFcXVhbD1mdW5jdGlvbiBpc0FycmF5RXF1YWwodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH07ZS5pc05vZGVKUz12b2lkIDA7ZS5ub3JtYWxpemVVbmljb2RlPWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUodCl7aWYoIWMpe2M9LyhbXHUwMGEwXHUwMGI1XHUwMzdlXHUwZWIzXHUyMDAwLVx1MjAwYVx1MjAyZlx1MjEyNlx1ZmIwMC1cdWZiMDRcdWZiMDZcdWZiMjAtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MC1cdWZiNDFcdWZiNDMtXHVmYjQ0XHVmYjQ2LVx1ZmJhMVx1ZmJhNC1cdWZiYTlcdWZiYWUtXHVmYmIxXHVmYmQzLVx1ZmJkY1x1ZmJkZS1cdWZiZTdcdWZiZWEtXHVmYmY4XHVmYmZjLVx1ZmJmZFx1ZmMwMC1cdWZjNWRcdWZjNjQtXHVmY2YxXHVmY2Y1LVx1ZmQzZFx1ZmQ4OFx1ZmRmNFx1ZmRmYS1cdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O2g9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiB0LnJlcGxhY2VBbGwoYywoKHQsZSxuKT0+ZT9lLm5vcm1hbGl6ZSgiTkZLQyIpOmguZ2V0KG4pKSl9O2Uub2JqZWN0RnJvbU1hcD1mdW5jdGlvbiBvYmplY3RGcm9tTWFwKHQpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbbixpXW9mIHQpZVtuXT1pO3JldHVybiBlfTtlLm9iamVjdFNpemU9ZnVuY3Rpb24gb2JqZWN0U2l6ZSh0KXtyZXR1cm4gT2JqZWN0LmtleXModCkubGVuZ3RofTtlLnNldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uIHNldFZlcmJvc2l0eUxldmVsKHQpe051bWJlci5pc0ludGVnZXIodCkmJihzPXQpfTtlLnNoYWRvdz1zaGFkb3c7ZS5zdHJpbmczMj1mdW5jdGlvbiBzdHJpbmczMih0KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX07ZS5zdHJpbmdUb0J5dGVzPXN0cmluZ1RvQnl0ZXM7ZS5zdHJpbmdUb1BERlN0cmluZz1mdW5jdGlvbiBzdHJpbmdUb1BERlN0cmluZyh0KXtpZih0WzBdPj0iw68iKXtsZXQgZTsiw74iPT09dFswXSYmIsO/Ij09PXRbMV0/ZT0idXRmLTE2YmUiOiLDvyI9PT10WzBdJiYiw74iPT09dFsxXT9lPSJ1dGYtMTZsZSI6IsOvIj09PXRbMF0mJiLCuyI9PT10WzFdJiYiwr8iPT09dFsyXSYmKGU9InV0Zi04Iik7aWYoZSl0cnl7Y29uc3Qgbj1uZXcgVGV4dERlY29kZXIoZSx7ZmF0YWw6ITB9KSxpPXN0cmluZ1RvQnl0ZXModCk7cmV0dXJuIG4uZGVjb2RlKGkpfWNhdGNoKHQpe3dhcm4oYHN0cmluZ1RvUERGU3RyaW5nOiAiJHt0fSIuYCl9fWNvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWxbdC5jaGFyQ29kZUF0KG4pXTtlLnB1c2goaT9TdHJpbmcuZnJvbUNoYXJDb2RlKGkpOnQuY2hhckF0KG4pKX1yZXR1cm4gZS5qb2luKCIiKX07ZS5zdHJpbmdUb1VURjhTdHJpbmc9c3RyaW5nVG9VVEY4U3RyaW5nO2UudW5yZWFjaGFibGU9dW5yZWFjaGFibGU7ZS51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfTtlLndhcm49d2FybjtuKDIpO24oODQpO24oODYpO24oODcpO24oODkpO24oOTMpO24oMTAxKTtuKDEwMik7bigxMDUpO24oMTA3KTtuKDEwOSk7bigxMTMpO24oMTE2KTtuKDEyMyk7Y29uc3QgaT0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSk7ZS5pc05vZGVKUz1pO2UuSURFTlRJVFlfTUFUUklYPVsxLDAsMCwxLDAsMF07ZS5GT05UX0lERU5USVRZX01BVFJJWD1bLjAwMSwwLDAsLjAwMSwwLDBdO2UuTUFYX0lNQUdFX1NJWkVfVE9fQ0FDSEU9MWU3O2UuTElORV9GQUNUT1I9MS4zNTtlLkxJTkVfREVTQ0VOVF9GQUNUT1I9LjM1O2UuQkFTRUxJTkVfRkFDVE9SPS4yNTkyNTkyNTkyNTkyNTkyNDtlLlJlbmRlcmluZ0ludGVudEZsYWc9e0FOWToxLERJU1BMQVk6MixQUklOVDo0LFNBVkU6OCxBTk5PVEFUSU9OU19GT1JNUzoxNixBTk5PVEFUSU9OU19TVE9SQUdFOjMyLEFOTk9UQVRJT05TX0RJU0FCTEU6NjQsT1BMSVNUOjI1Nn07ZS5Bbm5vdGF0aW9uTW9kZT17RElTQUJMRTowLEVOQUJMRToxLEVOQUJMRV9GT1JNUzoyLEVOQUJMRV9TVE9SQUdFOjN9O2UuQW5ub3RhdGlvbkVkaXRvclByZWZpeD0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyI7ZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZT17RElTQUJMRTotMSxOT05FOjAsRlJFRVRFWFQ6MyxTVEFNUDoxMyxJTks6MTV9O2UuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9e1JFU0laRToxLEZSRUVURVhUX1NJWkU6MTEsRlJFRVRFWFRfQ09MT1I6MTIsRlJFRVRFWFRfT1BBQ0lUWToxMyxJTktfQ09MT1I6MjEsSU5LX1RISUNLTkVTUzoyMixJTktfT1BBQ0lUWToyM307ZS5QZXJtaXNzaW9uRmxhZz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fTtlLlRleHRSZW5kZXJpbmdNb2RlPXtGSUxMOjAsU1RST0tFOjEsRklMTF9TVFJPS0U6MixJTlZJU0lCTEU6MyxGSUxMX0FERF9UT19QQVRIOjQsU1RST0tFX0FERF9UT19QQVRIOjUsRklMTF9TVFJPS0VfQUREX1RPX1BBVEg6NixBRERfVE9fUEFUSDo3LEZJTExfU1RST0tFX01BU0s6MyxBRERfVE9fUEFUSF9GTEFHOjR9O2UuSW1hZ2VLaW5kPXtHUkFZU0NBTEVfMUJQUDoxLFJHQl8yNEJQUDoyLFJHQkFfMzJCUFA6M307ZS5Bbm5vdGF0aW9uVHlwZT17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjZ9O2UuQW5ub3RhdGlvblJlcGx5VHlwZT17R1JPVVA6Ikdyb3VwIixSRVBMWToiUiJ9O2UuQW5ub3RhdGlvbkZsYWc9e0lOVklTSUJMRToxLEhJRERFTjoyLFBSSU5UOjQsTk9aT09NOjgsTk9ST1RBVEU6MTYsTk9WSUVXOjMyLFJFQURPTkxZOjY0LExPQ0tFRDoxMjgsVE9HR0xFTk9WSUVXOjI1NixMT0NLRURDT05URU5UUzo1MTJ9O2UuQW5ub3RhdGlvbkZpZWxkRmxhZz17UkVBRE9OTFk6MSxSRVFVSVJFRDoyLE5PRVhQT1JUOjQsTVVMVElMSU5FOjQwOTYsUEFTU1dPUkQ6ODE5MixOT1RPR0dMRVRPT0ZGOjE2Mzg0LFJBRElPOjMyNzY4LFBVU0hCVVRUT046NjU1MzYsQ09NQk86MTMxMDcyLEVESVQ6MjYyMTQ0LFNPUlQ6NTI0Mjg4LEZJTEVTRUxFQ1Q6MTA0ODU3NixNVUxUSVNFTEVDVDoyMDk3MTUyLERPTk9UU1BFTExDSEVDSzo0MTk0MzA0LERPTk9UU0NST0xMOjgzODg2MDgsQ09NQjoxNjc3NzIxNixSSUNIVEVYVDozMzU1NDQzMixSQURJT1NJTlVOSVNPTjozMzU1NDQzMixDT01NSVRPTlNFTENIQU5HRTo2NzEwODg2NH07ZS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXtTT0xJRDoxLERBU0hFRDoyLEJFVkVMRUQ6MyxJTlNFVDo0LFVOREVSTElORTo1fTtlLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGU9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9O2UuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9e1dDOiJXaWxsQ2xvc2UiLFdTOiJXaWxsU2F2ZSIsRFM6IkRpZFNhdmUiLFdQOiJXaWxsUHJpbnQiLERQOiJEaWRQcmludCJ9O2UuUGFnZUFjdGlvbkV2ZW50VHlwZT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9O2NvbnN0IHI9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07ZS5WZXJib3NpdHlMZXZlbD1yO2UuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfTtlLk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfTtlLlBhc3N3b3JkUmVzcG9uc2VzPXtORUVEX1BBU1NXT1JEOjEsSU5DT1JSRUNUX1BBU1NXT1JEOjJ9O2xldCBzPXIuV0FSTklOR1M7ZnVuY3Rpb24gd2Fybih0KXtzPj1yLldBUk5JTkdTJiZjb25zb2xlLmxvZyhgV2FybmluZzogJHt0fWApfWZ1bmN0aW9uIHVucmVhY2hhYmxlKHQpe3Rocm93IG5ldyBFcnJvcih0KX1mdW5jdGlvbiBzaGFkb3codCxlLG4pe2xldCBpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiFpLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBufWNvbnN0IGE9ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKHQsZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT10O3RoaXMubmFtZT1lfUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7ZS5CYXNlRXhjZXB0aW9uPWE7ZS5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIGF7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT1lfX07ZS5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgYXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz1lfX07ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIkludmFsaWRQREZFeGNlcHRpb24iKX19O2UuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgYXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fTtlLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9ZX19O2UuRm9ybWF0RXJyb3I9Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIkZvcm1hdEVycm9yIil9fTtlLkFib3J0RXhjZXB0aW9uPWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgYXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LCJBYm9ydEV4Y2VwdGlvbiIpfX07ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyh0KXsib2JqZWN0Ij09dHlwZW9mIHQmJnZvaWQgMCE9PXQ/Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCBlPXQubGVuZ3RoLG49ODE5MjtpZihlPG4pcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KTtjb25zdCBpPVtdO2ZvcihsZXQgcj0wO3I8ZTtyKz1uKXtjb25zdCBzPU1hdGgubWluKHIrbixlKSxhPXQuc3ViYXJyYXkocixzKTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpKX1yZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHQpeyJzdHJpbmciIT10eXBlb2YgdCYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCBlPXQubGVuZ3RoLG49bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlOysraSluW2ldPTI1NSZ0LmNoYXJDb2RlQXQoaSk7cmV0dXJuIG59ZS5GZWF0dXJlVGVzdD1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3RbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9c3RhdGljIGdldCBwbGF0Zm9ybSgpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yP3NoYWRvdyh0aGlzLCJwbGF0Zm9ybSIse2lzV2luOiExLGlzTWFjOiExfSk6c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNXaW46bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJXaW4iKSxpc01hYzpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIk1hYyIpfSl9fTtjb25zdCBvPVsuLi5BcnJheSgyNTYpLmtleXMoKV0ubWFwKCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtlLlV0aWw9Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKHQsZSxuKXtyZXR1cm5gIyR7b1t0XX0ke29bZV19JHtvW25dfWB9c3RhdGljIHNjYWxlTWluTWF4KHQsZSl7bGV0IG47aWYodFswXSl7aWYodFswXTwwKXtuPWVbMF07ZVswXT1lWzFdO2VbMV09bn1lWzBdKj10WzBdO2VbMV0qPXRbMF07aWYodFszXTwwKXtuPWVbMl07ZVsyXT1lWzNdO2VbM109bn1lWzJdKj10WzNdO2VbM10qPXRbM119ZWxzZXtuPWVbMF07ZVswXT1lWzJdO2VbMl09bjtuPWVbMV07ZVsxXT1lWzNdO2VbM109bjtpZih0WzFdPDApe249ZVsyXTtlWzJdPWVbM107ZVszXT1ufWVbMl0qPXRbMV07ZVszXSo9dFsxXTtpZih0WzJdPDApe249ZVswXTtlWzBdPWVbMV07ZVsxXT1ufWVbMF0qPXRbMl07ZVsxXSo9dFsyXX1lWzBdKz10WzRdO2VbMV0rPXRbNF07ZVsyXSs9dFs1XTtlWzNdKz10WzVdfXN0YXRpYyB0cmFuc2Zvcm0odCxlKXtyZXR1cm5bdFswXSplWzBdK3RbMl0qZVsxXSx0WzFdKmVbMF0rdFszXSplWzFdLHRbMF0qZVsyXSt0WzJdKmVbM10sdFsxXSplWzJdK3RbM10qZVszXSx0WzBdKmVbNF0rdFsyXSplWzVdK3RbNF0sdFsxXSplWzRdK3RbM10qZVs1XSt0WzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0odCxlKXtyZXR1cm5bdFswXSplWzBdK3RbMV0qZVsyXStlWzRdLHRbMF0qZVsxXSt0WzFdKmVbM10rZVs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybSh0LGUpe2NvbnN0IG49ZVswXSplWzNdLWVbMV0qZVsyXTtyZXR1cm5bKHRbMF0qZVszXS10WzFdKmVbMl0rZVsyXSplWzVdLWVbNF0qZVszXSkvbiwoLXRbMF0qZVsxXSt0WzFdKmVbMF0rZVs0XSplWzFdLWVbNV0qZVswXSkvbl19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsZSl7Y29uc3Qgbj10aGlzLmFwcGx5VHJhbnNmb3JtKHQsZSksaT10aGlzLmFwcGx5VHJhbnNmb3JtKHQuc2xpY2UoMiw0KSxlKSxyPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW3RbMF0sdFszXV0sZSkscz10aGlzLmFwcGx5VHJhbnNmb3JtKFt0WzJdLHRbMV1dLGUpO3JldHVybltNYXRoLm1pbihuWzBdLGlbMF0sclswXSxzWzBdKSxNYXRoLm1pbihuWzFdLGlbMV0sclsxXSxzWzFdKSxNYXRoLm1heChuWzBdLGlbMF0sclswXSxzWzBdKSxNYXRoLm1heChuWzFdLGlbMV0sclsxXSxzWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0odCl7Y29uc3QgZT10WzBdKnRbM10tdFsxXSp0WzJdO3JldHVyblt0WzNdL2UsLXRbMV0vZSwtdFsyXS9lLHRbMF0vZSwodFsyXSp0WzVdLXRbNF0qdFszXSkvZSwodFs0XSp0WzFdLXRbNV0qdFswXSkvZV19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHQpe2NvbnN0IGU9W3RbMF0sdFsyXSx0WzFdLHRbM11dLG49dFswXSplWzBdK3RbMV0qZVsyXSxpPXRbMF0qZVsxXSt0WzFdKmVbM10scj10WzJdKmVbMF0rdFszXSplWzJdLHM9dFsyXSplWzFdK3RbM10qZVszXSxhPShuK3MpLzIsbz1NYXRoLnNxcnQoKG4rcykqKjItNCoobipzLXIqaSkpLzIsbD1hK298fDEsYz1hLW98fDE7cmV0dXJuW01hdGguc3FydChsKSxNYXRoLnNxcnQoYyldfXN0YXRpYyBub3JtYWxpemVSZWN0KHQpe2NvbnN0IGU9dC5zbGljZSgwKTtpZih0WzBdPnRbMl0pe2VbMF09dFsyXTtlWzJdPXRbMF19aWYodFsxXT50WzNdKXtlWzFdPXRbM107ZVszXT10WzFdfXJldHVybiBlfXN0YXRpYyBpbnRlcnNlY3QodCxlKXtjb25zdCBuPU1hdGgubWF4KE1hdGgubWluKHRbMF0sdFsyXSksTWF0aC5taW4oZVswXSxlWzJdKSksaT1NYXRoLm1pbihNYXRoLm1heCh0WzBdLHRbMl0pLE1hdGgubWF4KGVbMF0sZVsyXSkpO2lmKG4+aSlyZXR1cm4gbnVsbDtjb25zdCByPU1hdGgubWF4KE1hdGgubWluKHRbMV0sdFszXSksTWF0aC5taW4oZVsxXSxlWzNdKSkscz1NYXRoLm1pbihNYXRoLm1heCh0WzFdLHRbM10pLE1hdGgubWF4KGVbMV0sZVszXSkpO3JldHVybiByPnM/bnVsbDpbbixyLGksc119c3RhdGljIGJlemllckJvdW5kaW5nQm94KHQsZSxuLGkscixzLGEsbyl7Y29uc3QgbD1bXSxjPVtbXSxbXV07bGV0IGgsZCx1LHAsZixnLG0sYjtmb3IobGV0IGM9MDtjPDI7KytjKXtpZigwPT09Yyl7ZD02KnQtMTIqbis2KnI7aD0tMyp0Kzkqbi05KnIrMyphO3U9MypuLTMqdH1lbHNle2Q9NiplLTEyKmkrNipzO2g9LTMqZSs5KmktOSpzKzMqbzt1PTMqaS0zKmV9aWYoTWF0aC5hYnMoaCk8MWUtMTIpe2lmKE1hdGguYWJzKGQpPDFlLTEyKWNvbnRpbnVlO3A9LXUvZDswPHAmJnA8MSYmbC5wdXNoKHApfWVsc2V7bT1kKmQtNCp1Kmg7Yj1NYXRoLnNxcnQobSk7aWYoIShtPDApKXtmPSgtZCtiKS8oMipoKTswPGYmJmY8MSYmbC5wdXNoKGYpO2c9KC1kLWIpLygyKmgpOzA8ZyYmZzwxJiZsLnB1c2goZyl9fX1sZXQgdix5PWwubGVuZ3RoO2NvbnN0IEE9eTtmb3IoO3ktLTspe3A9bFt5XTt2PTEtcDtjWzBdW3ldPXYqdip2KnQrMyp2KnYqcCpuKzMqdipwKnAqcitwKnAqcCphO2NbMV1beV09dip2KnYqZSszKnYqdipwKmkrMyp2KnAqcCpzK3AqcCpwKm99Y1swXVtBXT10O2NbMV1bQV09ZTtjWzBdW0ErMV09YTtjWzFdW0ErMV09bztjWzBdLmxlbmd0aD1jWzFdLmxlbmd0aD1BKzI7cmV0dXJuW01hdGgubWluKC4uLmNbMF0pLE1hdGgubWluKC4uLmNbMV0pLE1hdGgubWF4KC4uLmNbMF0pLE1hdGgubWF4KC4uLmNbMV0pXX19O2NvbnN0IGw9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcyOCw3MTEsNzEwLDcyOSw3MzMsNzMxLDczMCw3MzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODIyNiw4MjI0LDgyMjUsODIzMCw4MjEyLDgyMTEsNDAyLDgyNjAsODI0OSw4MjUwLDg3MjIsODI0MCw4MjIyLDgyMjAsODIyMSw4MjE2LDgyMTcsODIxOCw4NDgyLDY0MjU3LDY0MjU4LDMyMSwzMzgsMzUyLDM3NiwzODEsMzA1LDMyMiwzMzksMzUzLDM4MiwwLDgzNjRdO2Z1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh0KSl9ZS5Qcm9taXNlQ2FwYWJpbGl0eT1jbGFzcyBQcm9taXNlQ2FwYWJpbGl0eXsjdD0hMTtjb25zdHJ1Y3Rvcigpe3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLnJlc29sdmU9ZT0+e3RoaXMuI3Q9ITA7dChlKX07dGhpcy5yZWplY3Q9dD0+e3RoaXMuI3Q9ITA7ZSh0KX19KSl9Z2V0IHNldHRsZWQoKXtyZXR1cm4gdGhpcy4jdH19O2xldCBjPW51bGwsaD1udWxsfSwodCxlLG4pPT57dmFyIGk9bigzKSxyPW4oNCkscz1uKDY5KSxhPW4oNzApLG89IldlYkFzc2VtYmx5IixsPXJbb10sYz03IT09RXJyb3IoImUiLHtjYXVzZTo3fSkuY2F1c2UsZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj17fTtuW3RdPWEodCxlLGMpO2koe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxhcml0eToxLGZvcmNlZDpjfSxuKX0sZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlcj1mdW5jdGlvbih0LGUpe2lmKGwmJmxbdF0pe3ZhciBuPXt9O25bdF09YShvKyIuIit0LGUsYyk7aSh7dGFyZ2V0Om8sc3RhdDohMCxjb25zdHJ1Y3RvcjohMCxhcml0eToxLGZvcmNlZDpjfSxuKX19O2V4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJFcnJvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBFcnJvcihlKXtyZXR1cm4gcyh0LHRoaXMsYXJndW1lbnRzKX19KSk7ZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIkV2YWxFcnJvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBFdmFsRXJyb3IoZSl7cmV0dXJuIHModCx0aGlzLGFyZ3VtZW50cyl9fSkpO2V4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJSYW5nZUVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFJhbmdlRXJyb3IoZSl7cmV0dXJuIHModCx0aGlzLGFyZ3VtZW50cyl9fSkpO2V4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCJSZWZlcmVuY2VFcnJvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBSZWZlcmVuY2VFcnJvcihlKXtyZXR1cm4gcyh0LHRoaXMsYXJndW1lbnRzKX19KSk7ZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIlN5bnRheEVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFN5bnRheEVycm9yKGUpe3JldHVybiBzKHQsdGhpcyxhcmd1bWVudHMpfX0pKTtleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcigiVHlwZUVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFR5cGVFcnJvcihlKXtyZXR1cm4gcyh0LHRoaXMsYXJndW1lbnRzKX19KSk7ZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoIlVSSUVycm9yIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFVSSUVycm9yKGUpe3JldHVybiBzKHQsdGhpcyxhcmd1bWVudHMpfX0pKTtleHBvcnRXZWJBc3NlbWJseUVycm9yQ2F1c2VXcmFwcGVyKCJDb21waWxlRXJyb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gQ29tcGlsZUVycm9yKGUpe3JldHVybiBzKHQsdGhpcyxhcmd1bWVudHMpfX0pKTtleHBvcnRXZWJBc3NlbWJseUVycm9yQ2F1c2VXcmFwcGVyKCJMaW5rRXJyb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gTGlua0Vycm9yKGUpe3JldHVybiBzKHQsdGhpcyxhcmd1bWVudHMpfX0pKTtleHBvcnRXZWJBc3NlbWJseUVycm9yQ2F1c2VXcmFwcGVyKCJSdW50aW1lRXJyb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gUnVudGltZUVycm9yKGUpe3JldHVybiBzKHQsdGhpcyxhcmd1bWVudHMpfX0pKX0sKHQsZSxuKT0+e3ZhciBpPW4oNCkscj1uKDUpLmYscz1uKDQ0KSxhPW4oNDgpLG89bigzOCksbD1uKDU2KSxjPW4oNjgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGgsZCx1LHAsZj10LnRhcmdldCxnPXQuZ2xvYmFsLG09dC5zdGF0O2lmKG49Zz9pOm0/aVtmXXx8byhmLHt9KTooaVtmXXx8e30pLnByb3RvdHlwZSlmb3IoaCBpbiBlKXt1PWVbaF07ZD10LmRvbnRDYWxsR2V0U2V0PyhwPXIobixoKSkmJnAudmFsdWU6bltoXTtpZighYyhnP2g6ZisobT8iLiI6IiMiKStoLHQuZm9yY2VkKSYmdm9pZCAwIT09ZCl7aWYodHlwZW9mIHU9PXR5cGVvZiBkKWNvbnRpbnVlO2wodSxkKX0odC5zaGFtfHxkJiZkLnNoYW0pJiZzKHUsInNoYW0iLCEwKTthKG4saCx1LHQpfX19LGZ1bmN0aW9uKHQpe3ZhciBjaGVjaz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXRoJiZ0fTt0LmV4cG9ydHM9Y2hlY2soIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fGNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHx0aGlzfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSwodCxlLG4pPT57dmFyIGk9big2KSxyPW4oOCkscz1uKDEwKSxhPW4oMTEpLG89bigxMiksbD1uKDE4KSxjPW4oMzkpLGg9big0MiksZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1pP2Q6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSl7dD1vKHQpO2U9bChlKTtpZihoKXRyeXtyZXR1cm4gZCh0LGUpfWNhdGNoKHQpe31pZihjKHQsZSkpcmV0dXJuIGEoIXIocy5mLHQsZSksdFtlXSl9fSwodCxlLG4pPT57dmFyIGk9big3KTt0LmV4cG9ydHM9IWkoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pKX0sdD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sKHQsZSxuKT0+e3ZhciBpPW4oOSkscj1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDt0LmV4cG9ydHM9aT9yLmJpbmQocik6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShyLGFyZ3VtZW50cyl9fSwodCxlLG4pPT57dmFyIGk9big3KTt0LmV4cG9ydHM9IWkoKGZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdHx8dC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LCh0LGUpPT57InVzZSBzdHJpY3QiO3ZhciBuPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixyPWkmJiFuLmNhbGwoezE6Mn0sMSk7ZS5mPXI/ZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUodCl7dmFyIGU9aSh0aGlzLHQpO3JldHVybiEhZSYmZS5lbnVtZXJhYmxlfTpufSx0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fX0sKHQsZSxuKT0+e3ZhciBpPW4oMTMpLHI9bigxNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHIodCkpfX0sKHQsZSxuKT0+e3ZhciBpPW4oMTQpLHI9big3KSxzPW4oMTUpLGE9T2JqZWN0LG89aSgiIi5zcGxpdCk7dC5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIWEoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09cyh0KT9vKHQsIiIpOmEodCl9OmF9LCh0LGUsbik9Pnt2YXIgaT1uKDkpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5jYWxsLGE9aSYmci5iaW5kLmJpbmQocyxzKTt0LmV4cG9ydHM9aT9hOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzLmFwcGx5KHQsYXJndW1lbnRzKX19fSwodCxlLG4pPT57dmFyIGk9bigxNCkscj1pKHt9LnRvU3RyaW5nKSxzPWkoIiIuc2xpY2UpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcyhyKHQpLDgsLTEpfX0sKHQsZSxuKT0+e3ZhciBpPW4oMTcpLHI9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihpKHQpKXRocm93IHIoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9fSx0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fX0sKHQsZSxuKT0+e3ZhciBpPW4oMTkpLHI9bigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCwic3RyaW5nIik7cmV0dXJuIHIoZSk/ZTplKyIifX0sKHQsZSxuKT0+e3ZhciBpPW4oOCkscj1uKDIwKSxzPW4oMjMpLGE9bigzMCksbz1uKDMzKSxsPW4oMzQpLGM9VHlwZUVycm9yLGg9bCgidG9QcmltaXRpdmUiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighcih0KXx8cyh0KSlyZXR1cm4gdDt2YXIgbixsPWEodCxoKTtpZihsKXt2b2lkIDA9PT1lJiYoZT0iZGVmYXVsdCIpO249aShsLHQsZSk7aWYoIXIobil8fHMobikpcmV0dXJuIG47dGhyb3cgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9dm9pZCAwPT09ZSYmKGU9Im51bWJlciIpO3JldHVybiBvKHQsZSl9fSwodCxlLG4pPT57dmFyIGk9bigyMSkscj1uKDIyKSxzPXIuYWxsO3QuZXhwb3J0cz1yLklTX0hUTUxEREE/ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10OmkodCl8fHQ9PT1zfTpmdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6aSh0KX19LCh0LGUsbik9Pnt2YXIgaT1uKDIyKSxyPWkuYWxsO3QuZXhwb3J0cz1pLklTX0hUTUxEREE/ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR8fHQ9PT1yfTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH19LHQ9Pnt2YXIgZT0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGwsbj12b2lkIDA9PT1lJiZ2b2lkIDAhPT1lO3QuZXhwb3J0cz17YWxsOmUsSVNfSFRNTEREQTpufX0sKHQsZSxuKT0+e3ZhciBpPW4oMjQpLHI9bigyMSkscz1uKDI1KSxhPW4oMjYpLG89T2JqZWN0O3QuZXhwb3J0cz1hP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7dmFyIGU9aSgiU3ltYm9sIik7cmV0dXJuIHIoZSkmJnMoZS5wcm90b3R5cGUsbyh0KSl9fSwodCxlLG4pPT57dmFyIGk9big0KSxyPW4oMjEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/KG49aVt0XSxyKG4pP246dm9pZCAwKTppW3RdJiZpW3RdW2VdO3ZhciBufX0sKHQsZSxuKT0+e3ZhciBpPW4oMTQpO3QuZXhwb3J0cz1pKHt9LmlzUHJvdG90eXBlT2YpfSwodCxlLG4pPT57dmFyIGk9bigyNyk7dC5leHBvcnRzPWkmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3J9LCh0LGUsbik9Pnt2YXIgaT1uKDI4KSxyPW4oNykscz1uKDQpLlN0cmluZzt0LmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhcigoZnVuY3Rpb24oKXt2YXIgdD1TeW1ib2woKTtyZXR1cm4hcyh0KXx8IShPYmplY3QodClpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmaSYmaTw0MX0pKX0sKHQsZSxuKT0+e3ZhciBpLHIscz1uKDQpLGE9bigyOSksbz1zLnByb2Nlc3MsbD1zLkRlbm8sYz1vJiZvLnZlcnNpb25zfHxsJiZsLnZlcnNpb24saD1jJiZjLnY4O2gmJihyPShpPWguc3BsaXQoIi4iKSlbMF0+MCYmaVswXTw0PzE6KyhpWzBdK2lbMV0pKTshciYmYSYmKCEoaT1hLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8aVsxXT49NzQpJiYoaT1hLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocj0raVsxXSk7dC5leHBvcnRzPXJ9LHQ9Pnt0LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJlN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KXx8IiJ9LCh0LGUsbik9Pnt2YXIgaT1uKDMxKSxyPW4oMTcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXRbZV07cmV0dXJuIHIobik/dm9pZCAwOmkobil9fSwodCxlLG4pPT57dmFyIGk9bigyMSkscj1uKDMyKSxzPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoaSh0KSlyZXR1cm4gdDt0aHJvdyBzKHIodCkrIiBpcyBub3QgYSBmdW5jdGlvbiIpfX0sdD0+e3ZhciBlPVN0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBlKHQpfWNhdGNoKHQpe3JldHVybiJPYmplY3QifX19LCh0LGUsbik9Pnt2YXIgaT1uKDgpLHI9bigyMSkscz1uKDIwKSxhPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixvO2lmKCJzdHJpbmciPT09ZSYmcihuPXQudG9TdHJpbmcpJiYhcyhvPWkobix0KSkpcmV0dXJuIG87aWYocihuPXQudmFsdWVPZikmJiFzKG89aShuLHQpKSlyZXR1cm4gbztpZigic3RyaW5nIiE9PWUmJnIobj10LnRvU3RyaW5nKSYmIXMobz1pKG4sdCkpKXJldHVybiBvO3Rocm93IGEoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sKHQsZSxuKT0+e3ZhciBpPW4oNCkscj1uKDM1KSxzPW4oMzkpLGE9big0MSksbz1uKDI3KSxsPW4oMjYpLGM9aS5TeW1ib2wsaD1yKCJ3a3MiKSxkPWw/Yy5mb3J8fGM6YyYmYy53aXRob3V0U2V0dGVyfHxhO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtzKGgsdCl8fChoW3RdPW8mJnMoYyx0KT9jW3RdOmQoIlN5bWJvbC4iK3QpKTtyZXR1cm4gaFt0XX19LCh0LGUsbik9Pnt2YXIgaT1uKDM2KSxyPW4oMzcpOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gclt0XXx8KHJbdF09dm9pZCAwIT09ZT9lOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMzEuMSIsbW9kZTppPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsbGljZW5zZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMS4xL0xJQ0VOU0UiLHNvdXJjZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMifSl9LHQ9Pnt0LmV4cG9ydHM9ITF9LCh0LGUsbik9Pnt2YXIgaT1uKDQpLHI9bigzOCkscz0iX19jb3JlLWpzX3NoYXJlZF9fIixhPWlbc118fHIocyx7fSk7dC5leHBvcnRzPWF9LCh0LGUsbik9Pnt2YXIgaT1uKDQpLHI9T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3RyeXtyKGksdCx7dmFsdWU6ZSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChuKXtpW3RdPWV9cmV0dXJuIGV9fSwodCxlLG4pPT57dmFyIGk9bigxNCkscj1uKDQwKSxzPWkoe30uaGFzT3duUHJvcGVydHkpO3QuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbiBoYXNPd24odCxlKXtyZXR1cm4gcyhyKHQpLGUpfX0sKHQsZSxuKT0+e3ZhciBpPW4oMTYpLHI9T2JqZWN0O3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcihpKHQpKX19LCh0LGUsbik9Pnt2YXIgaT1uKDE0KSxyPTAscz1NYXRoLnJhbmRvbSgpLGE9aSgxLi50b1N0cmluZyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09dD8iIjp0KSsiKV8iK2EoKytyK3MsMzYpfX0sKHQsZSxuKT0+e3ZhciBpPW4oNikscj1uKDcpLHM9big0Myk7dC5leHBvcnRzPSFpJiYhcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sKHQsZSxuKT0+e3ZhciBpPW4oNCkscj1uKDIwKSxzPWkuZG9jdW1lbnQsYT1yKHMpJiZyKHMuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhP3MuY3JlYXRlRWxlbWVudCh0KTp7fX19LCh0LGUsbik9Pnt2YXIgaT1uKDYpLHI9big0NSkscz1uKDExKTt0LmV4cG9ydHM9aT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIuZih0LGUscygxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3RbZV09bjtyZXR1cm4gdH19LCh0LGUsbik9Pnt2YXIgaT1uKDYpLHI9big0Mikscz1uKDQ2KSxhPW4oNDcpLG89bigxOCksbD1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGQ9ImVudW1lcmFibGUiLHU9ImNvbmZpZ3VyYWJsZSIscD0id3JpdGFibGUiO2UuZj1pP3M/ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxlLG4pe2EodCk7ZT1vKGUpO2Eobik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJwcm90b3R5cGUiPT09ZSYmInZhbHVlImluIG4mJnAgaW4gbiYmIW5bcF0pe3ZhciBpPWgodCxlKTtpZihpJiZpW3BdKXt0W2VdPW4udmFsdWU7bj17Y29uZmlndXJhYmxlOnUgaW4gbj9uW3VdOmlbdV0sZW51bWVyYWJsZTpkIGluIG4/bltkXTppW2RdLHdyaXRhYmxlOiExfX19cmV0dXJuIGModCxlLG4pfTpjOmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHQsZSxuKXthKHQpO2U9byhlKTthKG4pO2lmKHIpdHJ5e3JldHVybiBjKHQsZSxuKX1jYXRjaCh0KXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgbCgiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTsidmFsdWUiaW4gbiYmKHRbZV09bi52YWx1ZSk7cmV0dXJuIHR9fSwodCxlLG4pPT57dmFyIGk9big2KSxyPW4oNyk7dC5leHBvcnRzPWkmJnIoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpfSwodCxlLG4pPT57dmFyIGk9bigyMCkscj1TdHJpbmcscz1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKGkodCkpcmV0dXJuIHQ7dGhyb3cgcyhyKHQpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sKHQsZSxuKT0+e3ZhciBpPW4oMjEpLHI9big0NSkscz1uKDQ5KSxhPW4oMzgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixvKXtvfHwobz17fSk7dmFyIGw9by5lbnVtZXJhYmxlLGM9dm9pZCAwIT09by5uYW1lP28ubmFtZTplO2kobikmJnMobixjLG8pO2lmKG8uZ2xvYmFsKWw/dFtlXT1uOmEoZSxuKTtlbHNle3RyeXtvLnVuc2FmZT90W2VdJiYobD0hMCk6ZGVsZXRlIHRbZV19Y2F0Y2godCl7fWw/dFtlXT1uOnIuZih0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IW8ubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFvLm5vbldyaXRhYmxlfSl9cmV0dXJuIHR9fSwodCxlLG4pPT57dmFyIGk9bigxNCkscj1uKDcpLHM9bigyMSksYT1uKDM5KSxvPW4oNiksbD1uKDUwKS5DT05GSUdVUkFCTEUsYz1uKDUxKSxoPW4oNTIpLGQ9aC5lbmZvcmNlLHU9aC5nZXQscD1TdHJpbmcsZj1PYmplY3QuZGVmaW5lUHJvcGVydHksZz1pKCIiLnNsaWNlKSxtPWkoIiIucmVwbGFjZSksYj1pKFtdLmpvaW4pLHY9byYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1mKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLHk9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLEE9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXsiU3ltYm9sKCI9PT1nKHAoZSksMCw3KSYmKGU9IlsiK20ocChlKSwvXlN5bWJvbFwoKFteKV0qKVwpLywiJDEiKSsiXSIpO24mJm4uZ2V0dGVyJiYoZT0iZ2V0ICIrZSk7biYmbi5zZXR0ZXImJihlPSJzZXQgIitlKTsoIWEodCwibmFtZSIpfHxsJiZ0Lm5hbWUhPT1lKSYmKG8/Zih0LCJuYW1lIix7dmFsdWU6ZSxjb25maWd1cmFibGU6ITB9KTp0Lm5hbWU9ZSk7diYmbiYmYShuLCJhcml0eSIpJiZ0Lmxlbmd0aCE9PW4uYXJpdHkmJmYodCwibGVuZ3RoIix7dmFsdWU6bi5hcml0eX0pO3RyeXtuJiZhKG4sImNvbnN0cnVjdG9yIikmJm4uY29uc3RydWN0b3I/byYmZih0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOnQucHJvdG90eXBlJiYodC5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaCh0KXt9dmFyIGk9ZCh0KTthKGksInNvdXJjZSIpfHwoaS5zb3VyY2U9Yih5LCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSk7cmV0dXJuIHR9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1BKChmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZ1KHRoaXMpLnNvdXJjZXx8Yyh0aGlzKX0pLCJ0b1N0cmluZyIpfSwodCxlLG4pPT57dmFyIGk9big2KSxyPW4oMzkpLHM9RnVuY3Rpb24ucHJvdG90eXBlLGE9aSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPXIocywibmFtZSIpLGw9byYmInNvbWV0aGluZyI9PT1mdW5jdGlvbiBzb21ldGhpbmcoKXt9Lm5hbWUsYz1vJiYoIWl8fGkmJmEocywibmFtZSIpLmNvbmZpZ3VyYWJsZSk7dC5leHBvcnRzPXtFWElTVFM6byxQUk9QRVI6bCxDT05GSUdVUkFCTEU6Y319LCh0LGUsbik9Pnt2YXIgaT1uKDE0KSxyPW4oMjEpLHM9bigzNyksYT1pKEZ1bmN0aW9uLnRvU3RyaW5nKTtyKHMuaW5zcGVjdFNvdXJjZSl8fChzLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGEodCl9KTt0LmV4cG9ydHM9cy5pbnNwZWN0U291cmNlfSwodCxlLG4pPT57dmFyIGkscixzLGE9big1Myksbz1uKDQpLGw9bigyMCksYz1uKDQ0KSxoPW4oMzkpLGQ9bigzNyksdT1uKDU0KSxwPW4oNTUpLGY9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixnPW8uVHlwZUVycm9yLG09by5XZWFrTWFwO2lmKGF8fGQuc3RhdGUpe3ZhciBiPWQuc3RhdGV8fChkLnN0YXRlPW5ldyBtKTtiLmdldD1iLmdldDtiLmhhcz1iLmhhcztiLnNldD1iLnNldDtpPWZ1bmN0aW9uKHQsZSl7aWYoYi5oYXModCkpdGhyb3cgZyhmKTtlLmZhY2FkZT10O2Iuc2V0KHQsZSk7cmV0dXJuIGV9O3I9ZnVuY3Rpb24odCl7cmV0dXJuIGIuZ2V0KHQpfHx7fX07cz1mdW5jdGlvbih0KXtyZXR1cm4gYi5oYXModCl9fWVsc2V7dmFyIHY9dSgic3RhdGUiKTtwW3ZdPSEwO2k9ZnVuY3Rpb24odCxlKXtpZihoKHQsdikpdGhyb3cgZyhmKTtlLmZhY2FkZT10O2ModCx2LGUpO3JldHVybiBlfTtyPWZ1bmN0aW9uKHQpe3JldHVybiBoKHQsdik/dFt2XTp7fX07cz1mdW5jdGlvbih0KXtyZXR1cm4gaCh0LHYpfX10LmV4cG9ydHM9e3NldDppLGdldDpyLGhhczpzLGVuZm9yY2U6ZnVuY3Rpb24odCl7cmV0dXJuIHModCk/cih0KTppKHQse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuO2lmKCFsKGUpfHwobj1yKGUpKS50eXBlIT09dCl0aHJvdyBnKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrdCsiIHJlcXVpcmVkIik7cmV0dXJuIG59fX19LCh0LGUsbik9Pnt2YXIgaT1uKDQpLHI9bigyMSkscz1pLldlYWtNYXA7dC5leHBvcnRzPXIocykmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcocykpfSwodCxlLG4pPT57dmFyIGk9bigzNSkscj1uKDQxKSxzPWkoImtleXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHNbdF18fChzW3RdPXIodCkpfX0sdD0+e3QuZXhwb3J0cz17fX0sKHQsZSxuKT0+e3ZhciBpPW4oMzkpLHI9big1Nykscz1uKDUpLGE9big0NSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG89cihlKSxsPWEuZixjPXMuZixoPTA7aDxvLmxlbmd0aDtoKyspe3ZhciBkPW9baF07aSh0LGQpfHxuJiZpKG4sZCl8fGwodCxkLGMoZSxkKSl9fX0sKHQsZSxuKT0+e3ZhciBpPW4oMjQpLHI9bigxNCkscz1uKDU4KSxhPW4oNjcpLG89big0NyksbD1yKFtdLmNvbmNhdCk7dC5leHBvcnRzPWkoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uIG93bktleXModCl7dmFyIGU9cy5mKG8odCkpLG49YS5mO3JldHVybiBuP2woZSxuKHQpKTplfX0sKHQsZSxuKT0+e3ZhciBpPW4oNTkpLHI9big2NikuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXModCl7cmV0dXJuIGkodCxyKX19LCh0LGUsbik9Pnt2YXIgaT1uKDE0KSxyPW4oMzkpLHM9bigxMiksYT1uKDYwKS5pbmRleE9mLG89big1NSksbD1pKFtdLnB1c2gpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGk9cyh0KSxjPTAsaD1bXTtmb3IobiBpbiBpKSFyKG8sbikmJnIoaSxuKSYmbChoLG4pO2Zvcig7ZS5sZW5ndGg+YzspcihpLG49ZVtjKytdKSYmKH5hKGgsbil8fGwoaCxuKSk7cmV0dXJuIGh9fSwodCxlLG4pPT57dmFyIGk9bigxMikscj1uKDYxKSxzPW4oNjQpLGNyZWF0ZU1ldGhvZD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGEpe3ZhciBvLGw9aShlKSxjPXMobCksaD1yKGEsYyk7aWYodCYmbiE9bil7Zm9yKDtjPmg7KWlmKChvPWxbaCsrXSkhPW8pcmV0dXJuITB9ZWxzZSBmb3IoO2M+aDtoKyspaWYoKHR8fGggaW4gbCkmJmxbaF09PT1uKXJldHVybiB0fHxofHwwO3JldHVybiF0JiYtMX19O3QuZXhwb3J0cz17aW5jbHVkZXM6Y3JlYXRlTWV0aG9kKCEwKSxpbmRleE9mOmNyZWF0ZU1ldGhvZCghMSl9fSwodCxlLG4pPT57dmFyIGk9big2Mikscj1NYXRoLm1heCxzPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWkodCk7cmV0dXJuIG48MD9yKG4rZSwwKTpzKG4sZSl9fSwodCxlLG4pPT57dmFyIGk9big2Myk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPSt0O3JldHVybiBlIT1lfHwwPT09ZT8wOmkoZSl9fSx0PT57dmFyIGU9TWF0aC5jZWlsLG49TWF0aC5mbG9vcjt0LmV4cG9ydHM9TWF0aC50cnVuY3x8ZnVuY3Rpb24gdHJ1bmModCl7dmFyIGk9K3Q7cmV0dXJuKGk+MD9uOmUpKGkpfX0sKHQsZSxuKT0+e3ZhciBpPW4oNjUpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0Lmxlbmd0aCl9fSwodCxlLG4pPT57dmFyIGk9big2Mikscj1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD9yKGkodCksOTAwNzE5OTI1NDc0MDk5MSk6MH19LHQ9Pnt0LmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sKHQsZSk9PntlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sKHQsZSxuKT0+e3ZhciBpPW4oNykscj1uKDIxKSxzPS8jfFwucHJvdG90eXBlXC4vLGlzRm9yY2VkPWZ1bmN0aW9uKHQsZSl7dmFyIG49b1thKHQpXTtyZXR1cm4gbj09Y3x8biE9bCYmKHIoZSk/aShlKTohIWUpfSxhPWlzRm9yY2VkLm5vcm1hbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpLnJlcGxhY2UocywiLiIpLnRvTG93ZXJDYXNlKCl9LG89aXNGb3JjZWQuZGF0YT17fSxsPWlzRm9yY2VkLk5BVElWRT0iTiIsYz1pc0ZvcmNlZC5QT0xZRklMTD0iUCI7dC5leHBvcnRzPWlzRm9yY2VkfSwodCxlLG4pPT57dmFyIGk9big5KSxyPUZ1bmN0aW9uLnByb3RvdHlwZSxzPXIuYXBwbHksYT1yLmNhbGw7dC5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5hcHBseXx8KGk/YS5iaW5kKHMpOmZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkocyxhcmd1bWVudHMpfSl9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9bigyNCkscj1uKDM5KSxzPW4oNDQpLGE9bigyNSksbz1uKDcxKSxsPW4oNTYpLGM9big3NCksaD1uKDc1KSxkPW4oNzYpLHU9big4MCkscD1uKDgxKSxmPW4oNiksZz1uKDM2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbSl7dmFyIGI9InN0YWNrVHJhY2VMaW1pdCIsdj1tPzI6MSx5PXQuc3BsaXQoIi4iKSxBPXlbeS5sZW5ndGgtMV0sXz1pLmFwcGx5KG51bGwseSk7aWYoXyl7dmFyIFM9Xy5wcm90b3R5cGU7IWcmJnIoUywiY2F1c2UiKSYmZGVsZXRlIFMuY2F1c2U7aWYoIW4pcmV0dXJuIF87dmFyIEU9aSgiRXJyb3IiKSx4PWUoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZChtP2U6dCx2b2lkIDApLGk9bT9uZXcgXyh0KTpuZXcgXzt2b2lkIDAhPT1uJiZzKGksIm1lc3NhZ2UiLG4pO3AoaSx4LGkuc3RhY2ssMik7dGhpcyYmYShTLHRoaXMpJiZoKGksdGhpcyx4KTthcmd1bWVudHMubGVuZ3RoPnYmJnUoaSxhcmd1bWVudHNbdl0pO3JldHVybiBpfSkpO3gucHJvdG90eXBlPVM7aWYoIkVycm9yIiE9PUEpbz9vKHgsRSk6bCh4LEUse25hbWU6ITB9KTtlbHNlIGlmKGYmJmIgaW4gXyl7Yyh4LF8sYik7Yyh4LF8sInByZXBhcmVTdGFja1RyYWNlIil9bCh4LF8pO2lmKCFnKXRyeXtTLm5hbWUhPT1BJiZzKFMsIm5hbWUiLEEpO1MuY29uc3RydWN0b3I9eH1jYXRjaCh0KXt9cmV0dXJuIHh9fX0sKHQsZSxuKT0+e3ZhciBpPW4oNzIpLHI9big0Nykscz1uKDczKTt0LmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIHQsZT0hMSxuPXt9O3RyeXsodD1pKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShuLFtdKTtlPW4gaW5zdGFuY2VvZiBBcnJheX1jYXRjaCh0KXt9cmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKG4saSl7cihuKTtzKGkpO2U/dChuLGkpOm4uX19wcm90b19fPWk7cmV0dXJuIG59fSgpOnZvaWQgMCl9LCh0LGUsbik9Pnt2YXIgaT1uKDE0KSxyPW4oMzEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dHJ5e3JldHVybiBpKHIoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpW25dKSl9Y2F0Y2godCl7fX19LCh0LGUsbik9Pnt2YXIgaT1uKDIxKSxyPVN0cmluZyxzPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0fHxpKHQpKXJldHVybiB0O3Rocm93IHMoIkNhbid0IHNldCAiK3IodCkrIiBhcyBhIHByb3RvdHlwZSIpfX0sKHQsZSxuKT0+e3ZhciBpPW4oNDUpLmY7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtuIGluIHR8fGkodCxuLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbbl19LHNldDpmdW5jdGlvbih0KXtlW25dPXR9fSl9fSwodCxlLG4pPT57dmFyIGk9bigyMSkscj1uKDIwKSxzPW4oNzEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIGEsbztzJiZpKGE9ZS5jb25zdHJ1Y3RvcikmJmEhPT1uJiZyKG89YS5wcm90b3R5cGUpJiZvIT09bi5wcm90b3R5cGUmJnModCxvKTtyZXR1cm4gdH19LCh0LGUsbik9Pnt2YXIgaT1uKDc3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dD9hcmd1bWVudHMubGVuZ3RoPDI/IiI6ZTppKHQpfX0sKHQsZSxuKT0+e3ZhciBpPW4oNzgpLHI9U3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiU3ltYm9sIj09PWkodCkpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiByKHQpfX0sKHQsZSxuKT0+e3ZhciBpPW4oNzkpLHI9bigyMSkscz1uKDE1KSxhPW4oMzQpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGw9IkFyZ3VtZW50cyI9PXMoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKTt0LmV4cG9ydHM9aT9zOmZ1bmN0aW9uKHQpe3ZhciBlLG4saTtyZXR1cm4gdm9pZCAwPT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihuPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHQpe319KGU9byh0KSxhKSk/bjpsP3MoZSk6Ik9iamVjdCI9PShpPXMoZSkpJiZyKGUuY2FsbGVlKT8iQXJndW1lbnRzIjppfX0sKHQsZSxuKT0+e3ZhciBpPXt9O2lbbigzNCkoInRvU3RyaW5nVGFnIildPSJ6Ijt0LmV4cG9ydHM9IltvYmplY3Qgel0iPT09U3RyaW5nKGkpfSwodCxlLG4pPT57dmFyIGk9bigyMCkscj1uKDQ0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpKGUpJiYiY2F1c2UiaW4gZSYmcih0LCJjYXVzZSIsZS5jYXVzZSl9fSwodCxlLG4pPT57dmFyIGk9big0NCkscj1uKDgyKSxzPW4oODMpLGE9RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8pe3MmJihhP2EodCxlKTppKHQsInN0YWNrIixyKG4sbykpKX19LCh0LGUsbik9Pnt2YXIgaT1uKDE0KSxyPUVycm9yLHM9aSgiIi5yZXBsYWNlKSxhPVN0cmluZyhyKCJ6eGNhc2QiKS5zdGFjayksbz0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGw9by50ZXN0KGEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKGwmJiJzdHJpbmciPT10eXBlb2YgdCYmIXIucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDtlLS07KXQ9cyh0LG8sIiIpO3JldHVybiB0fX0sKHQsZSxuKT0+e3ZhciBpPW4oNykscj1uKDExKTt0LmV4cG9ydHM9IWkoKGZ1bmN0aW9uKCl7dmFyIHQ9RXJyb3IoImEiKTtpZighKCJzdGFjayJpbiB0KSlyZXR1cm4hMDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic3RhY2siLHIoMSw3KSk7cmV0dXJuIDchPT10LnN0YWNrfSkpfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oNDgpLHI9bigxNCkscz1uKDc3KSxhPW4oODUpLG89VVJMU2VhcmNoUGFyYW1zLGw9by5wcm90b3R5cGUsYz1yKGwuYXBwZW5kKSxoPXIobC5kZWxldGUpLGQ9cihsLmZvckVhY2gpLHU9cihbXS5wdXNoKSxwPW5ldyBvKCJhPTEmYT0yIik7cC5kZWxldGUoImEiLDEpO3ArIiIhPSJhPTIiJiZpKGwsImRlbGV0ZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1lPDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZihlJiZ2b2lkIDA9PT1uKXJldHVybiBoKHRoaXMsdCk7dmFyIGk9W107ZCh0aGlzLChmdW5jdGlvbih0LGUpe3UoaSx7a2V5OmUsdmFsdWU6dH0pfSkpO2EoZSwxKTtmb3IodmFyIHIsbz1zKHQpLGw9cyhuKSxwPTAsZj0wLGc9ITEsbT1pLmxlbmd0aDtwPG07KXtyPWlbcCsrXTtpZihnfHxyLmtleT09PW8pe2c9ITA7aCh0aGlzLHIua2V5KX1lbHNlIGYrK31mb3IoO2Y8bTspKHI9aVtmKytdKS5rZXk9PT1vJiZyLnZhbHVlPT09bHx8Yyh0aGlzLHIua2V5LHIudmFsdWUpfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LHQ9Pnt2YXIgZT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYodDxuKXRocm93IGUoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIHR9fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oNDgpLHI9bigxNCkscz1uKDc3KSxhPW4oODUpLG89VVJMU2VhcmNoUGFyYW1zLGw9by5wcm90b3R5cGUsYz1yKGwuZ2V0QWxsKSxoPXIobC5oYXMpO25ldyBvKCJhPTEiKS5oYXMoImEiLDIpJiZpKGwsImhhcyIsKGZ1bmN0aW9uIGhhcyh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49ZTwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYoZSYmdm9pZCAwPT09bilyZXR1cm4gaCh0aGlzLHQpO3ZhciBpPWModGhpcyx0KTthKGUsMSk7Zm9yKHZhciByPXMobiksbz0wO288aS5sZW5ndGg7KWlmKGlbbysrXT09PXIpcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDYpLHI9bigxNCkscz1uKDg4KSxhPVVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUsbz1yKGEuZm9yRWFjaCk7aSYmISgic2l6ZSJpbiBhKSYmcyhhLCJzaXplIix7Z2V0OmZ1bmN0aW9uIHNpemUoKXt2YXIgdD0wO28odGhpcywoZnVuY3Rpb24oKXt0Kyt9KSk7cmV0dXJuIHR9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9LCh0LGUsbik9Pnt2YXIgaT1uKDQ5KSxyPW4oNDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7bi5nZXQmJmkobi5nZXQsZSx7Z2V0dGVyOiEwfSk7bi5zZXQmJmkobi5zZXQsZSx7c2V0dGVyOiEwfSk7cmV0dXJuIHIuZih0LGUsbil9fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oMykscj1uKDQwKSxzPW4oNjQpLGE9big5MCksbz1uKDkyKTtpKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDpuKDcpKChmdW5jdGlvbigpe3JldHVybiA0Mjk0OTY3Mjk3IT09W10ucHVzaC5jYWxsKHtsZW5ndGg6NDI5NDk2NzI5Nn0sMSl9KSl8fCFmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkucHVzaCgpfWNhdGNoKHQpe3JldHVybiB0IGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKX0se3B1c2g6ZnVuY3Rpb24gcHVzaCh0KXt2YXIgZT1yKHRoaXMpLG49cyhlKSxpPWFyZ3VtZW50cy5sZW5ndGg7byhuK2kpO2Zvcih2YXIgbD0wO2w8aTtsKyspe2Vbbl09YXJndW1lbnRzW2xdO24rK31hKGUsbik7cmV0dXJuIG59fSl9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9big2KSxyPW4oOTEpLHM9VHlwZUVycm9yLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWkmJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7dC5leHBvcnRzPW8/ZnVuY3Rpb24odCxlKXtpZihyKHQpJiYhYSh0LCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBzKCJDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoIik7cmV0dXJuIHQubGVuZ3RoPWV9OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPWV9fSwodCxlLG4pPT57dmFyIGk9bigxNSk7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uIGlzQXJyYXkodCl7cmV0dXJuIkFycmF5Ij09aSh0KX19LHQ9Pnt2YXIgZT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHQ+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBlKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtyZXR1cm4gdH19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9big5NCkscj1uKDk4KS5maW5kTGFzdCxzPWkuYVR5cGVkQXJyYXk7KDAsaS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmluZExhc3QiLChmdW5jdGlvbiBmaW5kTGFzdCh0KXtyZXR1cm4gcihzKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpLHIscyxhPW4oOTUpLG89big2KSxsPW4oNCksYz1uKDIxKSxoPW4oMjApLGQ9bigzOSksdT1uKDc4KSxwPW4oMzIpLGY9big0NCksZz1uKDQ4KSxtPW4oODgpLGI9bigyNSksdj1uKDk2KSx5PW4oNzEpLEE9bigzNCksXz1uKDQxKSxTPW4oNTIpLEU9Uy5lbmZvcmNlLHg9Uy5nZXQsdz1sLkludDhBcnJheSxDPXcmJncucHJvdG90eXBlLFQ9bC5VaW50OENsYW1wZWRBcnJheSxQPVQmJlQucHJvdG90eXBlLGs9dyYmdih3KSxNPUMmJnYoQyksUj1PYmplY3QucHJvdG90eXBlLEk9bC5UeXBlRXJyb3IsRD1BKCJ0b1N0cmluZ1RhZyIpLE89XygiVFlQRURfQVJSQVlfVEFHIiksTD0iVHlwZWRBcnJheUNvbnN0cnVjdG9yIixOPWEmJiEheSYmIk9wZXJhIiE9PXUobC5vcGVyYSksQj0hMSxqPXtJbnQ4QXJyYXk6MSxVaW50OEFycmF5OjEsVWludDhDbGFtcGVkQXJyYXk6MSxJbnQxNkFycmF5OjIsVWludDE2QXJyYXk6MixJbnQzMkFycmF5OjQsVWludDMyQXJyYXk6NCxGbG9hdDMyQXJyYXk6NCxGbG9hdDY0QXJyYXk6OH0sVT17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcj1mdW5jdGlvbih0KXt2YXIgZT12KHQpO2lmKGgoZSkpe3ZhciBuPXgoZSk7cmV0dXJuIG4mJmQobixMKT9uW0xdOmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcihlKX19LGlzVHlwZWRBcnJheT1mdW5jdGlvbih0KXtpZighaCh0KSlyZXR1cm4hMTt2YXIgZT11KHQpO3JldHVybiBkKGosZSl8fGQoVSxlKX07Zm9yKGkgaW4gaikocz0ocj1sW2ldKSYmci5wcm90b3R5cGUpP0UocylbTF09cjpOPSExO2ZvcihpIGluIFUpKHM9KHI9bFtpXSkmJnIucHJvdG90eXBlKSYmKEUocylbTF09cik7aWYoIU58fCFjKGspfHxrPT09RnVuY3Rpb24ucHJvdG90eXBlKXtrPWZ1bmN0aW9uIFR5cGVkQXJyYXkoKXt0aHJvdyBJKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfTtpZihOKWZvcihpIGluIGopbFtpXSYmeShsW2ldLGspfWlmKCFOfHwhTXx8TT09PVIpe009ay5wcm90b3R5cGU7aWYoTilmb3IoaSBpbiBqKWxbaV0mJnkobFtpXS5wcm90b3R5cGUsTSl9TiYmdihQKSE9PU0mJnkoUCxNKTtpZihvJiYhZChNLEQpKXtCPSEwO20oTSxELHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGgodGhpcyk/dGhpc1tPXTp2b2lkIDB9fSk7Zm9yKGkgaW4gailsW2ldJiZmKGxbaV0sTyxpKX10LmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6TixUWVBFRF9BUlJBWV9UQUc6QiYmTyxhVHlwZWRBcnJheTpmdW5jdGlvbih0KXtpZihpc1R5cGVkQXJyYXkodCkpcmV0dXJuIHQ7dGhyb3cgSSgiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LGFUeXBlZEFycmF5Q29uc3RydWN0b3I6ZnVuY3Rpb24odCl7aWYoYyh0KSYmKCF5fHxiKGssdCkpKXJldHVybiB0O3Rocm93IEkocCh0KSsiIGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIil9LGV4cG9ydFR5cGVkQXJyYXlNZXRob2Q6ZnVuY3Rpb24odCxlLG4saSl7aWYobyl7aWYobilmb3IodmFyIHIgaW4gail7dmFyIHM9bFtyXTtpZihzJiZkKHMucHJvdG90eXBlLHQpKXRyeXtkZWxldGUgcy5wcm90b3R5cGVbdF19Y2F0Y2gobil7dHJ5e3MucHJvdG90eXBlW3RdPWV9Y2F0Y2godCl7fX19TVt0XSYmIW58fGcoTSx0LG4/ZTpOJiZDW3RdfHxlLGkpfX0sZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDpmdW5jdGlvbih0LGUsbil7dmFyIGkscjtpZihvKXtpZih5KXtpZihuKWZvcihpIGluIGopaWYoKHI9bFtpXSkmJmQocix0KSl0cnl7ZGVsZXRlIHJbdF19Y2F0Y2godCl7fWlmKGtbdF0mJiFuKXJldHVybjt0cnl7cmV0dXJuIGcoayx0LG4/ZTpOJiZrW3RdfHxlKX1jYXRjaCh0KXt9fWZvcihpIGluIGopIShyPWxbaV0pfHxyW3RdJiYhbnx8ZyhyLHQsZSl9fSxnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I6Z2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGlzVmlldzpmdW5jdGlvbiBpc1ZpZXcodCl7aWYoIWgodCkpcmV0dXJuITE7dmFyIGU9dSh0KTtyZXR1cm4iRGF0YVZpZXciPT09ZXx8ZChqLGUpfHxkKFUsZSl9LGlzVHlwZWRBcnJheTppc1R5cGVkQXJyYXksVHlwZWRBcnJheTprLFR5cGVkQXJyYXlQcm90b3R5cGU6TX19LHQ9Pnt0LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sKHQsZSxuKT0+e3ZhciBpPW4oMzkpLHI9bigyMSkscz1uKDQwKSxhPW4oNTQpLG89big5NyksbD1hKCJJRV9QUk9UTyIpLGM9T2JqZWN0LGg9Yy5wcm90b3R5cGU7dC5leHBvcnRzPW8/Yy5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXt2YXIgZT1zKHQpO2lmKGkoZSxsKSlyZXR1cm4gZVtsXTt2YXIgbj1lLmNvbnN0cnVjdG9yO3JldHVybiByKG4pJiZlIGluc3RhbmNlb2Ygbj9uLnByb3RvdHlwZTplIGluc3RhbmNlb2YgYz9oOm51bGx9fSwodCxlLG4pPT57dmFyIGk9big3KTt0LmV4cG9ydHM9IWkoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe31GLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsO3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEYpIT09Ri5wcm90b3R5cGV9KSl9LCh0LGUsbik9Pnt2YXIgaT1uKDk5KSxyPW4oMTMpLHM9big0MCksYT1uKDY0KSxjcmVhdGVNZXRob2Q9ZnVuY3Rpb24odCl7dmFyIGU9MT09dDtyZXR1cm4gZnVuY3Rpb24obixvLGwpe2Zvcih2YXIgYyxoPXMobiksZD1yKGgpLHU9aShvLGwpLHA9YShkKTtwLS0gPjA7KWlmKHUoYz1kW3BdLHAsaCkpc3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gYztjYXNlIDE6cmV0dXJuIHB9cmV0dXJuIGU/LTE6dm9pZCAwfX07dC5leHBvcnRzPXtmaW5kTGFzdDpjcmVhdGVNZXRob2QoMCksZmluZExhc3RJbmRleDpjcmVhdGVNZXRob2QoMSl9fSwodCxlLG4pPT57dmFyIGk9bigxMDApLHI9bigzMSkscz1uKDkpLGE9aShpLmJpbmQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3IodCk7cmV0dXJuIHZvaWQgMD09PWU/dDpzP2EodCxlKTpmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fSwodCxlLG4pPT57dmFyIGk9bigxNSkscj1uKDE0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIkZ1bmN0aW9uIj09PWkodCkpcmV0dXJuIHIodCl9fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oOTQpLHI9big5OCkuZmluZExhc3RJbmRleCxzPWkuYVR5cGVkQXJyYXk7KDAsaS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmluZExhc3RJbmRleCIsKGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgodCl7cmV0dXJuIHIocyh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDQpLHI9big4KSxzPW4oOTQpLGE9big2NCksbz1uKDEwMyksbD1uKDQwKSxjPW4oNyksaD1pLlJhbmdlRXJyb3IsZD1pLkludDhBcnJheSx1PWQmJmQucHJvdG90eXBlLHA9dSYmdS5zZXQsZj1zLmFUeXBlZEFycmF5LGc9cy5leHBvcnRUeXBlZEFycmF5TWV0aG9kLG09IWMoKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDIpO3IocCx0LHtsZW5ndGg6MSwwOjN9LDEpO3JldHVybiAzIT09dFsxXX0pKSxiPW0mJnMuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyYmYygoZnVuY3Rpb24oKXt2YXIgdD1uZXcgZCgyKTt0LnNldCgxKTt0LnNldCgiMiIsMSk7cmV0dXJuIDAhPT10WzBdfHwyIT09dFsxXX0pKTtnKCJzZXQiLChmdW5jdGlvbiBzZXQodCl7Zih0aGlzKTt2YXIgZT1vKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLG49bCh0KTtpZihtKXJldHVybiByKHAsdGhpcyxuLGUpO3ZhciBpPXRoaXMubGVuZ3RoLHM9YShuKSxjPTA7aWYocytlPmkpdGhyb3cgaCgiV3JvbmcgbGVuZ3RoIik7Zm9yKDtjPHM7KXRoaXNbZStjXT1uW2MrK119KSwhbXx8Yil9LCh0LGUsbik9Pnt2YXIgaT1uKDEwNCkscj1SYW5nZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWkodCk7aWYobiVlKXRocm93IHIoIldyb25nIG9mZnNldCIpO3JldHVybiBufX0sKHQsZSxuKT0+e3ZhciBpPW4oNjIpLHI9UmFuZ2VFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9aSh0KTtpZihlPDApdGhyb3cgcigiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwIik7cmV0dXJuIGV9fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oMTA2KSxyPW4oOTQpLHM9ci5hVHlwZWRBcnJheSxhPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxvPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO2EoInRvUmV2ZXJzZWQiLChmdW5jdGlvbiB0b1JldmVyc2VkKCl7cmV0dXJuIGkocyh0aGlzKSxvKHRoaXMpKX0pKX0sKHQsZSxuKT0+e3ZhciBpPW4oNjQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1pKHQpLHI9bmV3IGUobikscz0wO3M8bjtzKyspcltzXT10W24tcy0xXTtyZXR1cm4gcn19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9big5NCkscj1uKDE0KSxzPW4oMzEpLGE9bigxMDgpLG89aS5hVHlwZWRBcnJheSxsPWkuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGM9aS5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGg9cihpLlR5cGVkQXJyYXlQcm90b3R5cGUuc29ydCk7YygidG9Tb3J0ZWQiLChmdW5jdGlvbiB0b1NvcnRlZCh0KXt2b2lkIDAhPT10JiZzKHQpO3ZhciBlPW8odGhpcyksbj1hKGwoZSksZSk7cmV0dXJuIGgobix0KX0pKX0sKHQsZSxuKT0+e3ZhciBpPW4oNjQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wLHI9aShlKSxzPW5ldyB0KHIpO3I+bjspc1tuXT1lW24rK107cmV0dXJuIHN9fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oMTEwKSxyPW4oOTQpLHM9bigxMTEpLGE9big2Miksbz1uKDExMiksbD1yLmFUeXBlZEFycmF5LGM9ci5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsaD1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsZD0hIWZ1bmN0aW9uKCl7dHJ5e25ldyBJbnQ4QXJyYXkoMSkud2l0aCgyLHt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgOH19KX1jYXRjaCh0KXtyZXR1cm4gOD09PXR9fSgpO2goIndpdGgiLHt3aXRoOmZ1bmN0aW9uKHQsZSl7dmFyIG49bCh0aGlzKSxyPWEodCksaD1zKG4pP28oZSk6K2U7cmV0dXJuIGkobixjKG4pLHIsaCl9fS53aXRoLCFkKX0sKHQsZSxuKT0+e3ZhciBpPW4oNjQpLHI9big2Mikscz1SYW5nZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixhKXt2YXIgbz1pKHQpLGw9cihuKSxjPWw8MD9vK2w6bDtpZihjPj1vfHxjPDApdGhyb3cgcygiSW5jb3JyZWN0IGluZGV4Iik7Zm9yKHZhciBoPW5ldyBlKG8pLGQ9MDtkPG87ZCsrKWhbZF09ZD09PWM/YTp0W2RdO3JldHVybiBofX0sKHQsZSxuKT0+e3ZhciBpPW4oNzgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1pKHQpO3JldHVybiJCaWdJbnQ2NEFycmF5Ij09ZXx8IkJpZ1VpbnQ2NEFycmF5Ij09ZX19LCh0LGUsbik9Pnt2YXIgaT1uKDE5KSxyPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9aSh0LCJudW1iZXIiKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdGhyb3cgcigiQ2FuJ3QgY29udmVydCBudW1iZXIgdG8gYmlnaW50Iik7cmV0dXJuIEJpZ0ludChlKX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9big2KSxyPW4oODgpLHM9bigxMTQpLGE9QXJyYXlCdWZmZXIucHJvdG90eXBlO2kmJiEoImRldGFjaGVkImluIGEpJiZyKGEsImRldGFjaGVkIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbiBkZXRhY2hlZCgpe3JldHVybiBzKHRoaXMpfX0pfSwodCxlLG4pPT57dmFyIGk9bigxNCkscj1uKDExNSkscz1pKEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKDAhPT1yKHQpKXJldHVybiExO3RyeXtzKHQsMCwwKTtyZXR1cm4hMX1jYXRjaCh0KXtyZXR1cm4hMH19fSwodCxlLG4pPT57dmFyIGk9big3Mikscj1uKDE1KSxzPVR5cGVFcnJvcjt0LmV4cG9ydHM9aShBcnJheUJ1ZmZlci5wcm90b3R5cGUsImJ5dGVMZW5ndGgiLCJnZXQiKXx8ZnVuY3Rpb24odCl7aWYoIkFycmF5QnVmZmVyIiE9cih0KSl0aHJvdyBzKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiB0LmJ5dGVMZW5ndGh9fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oMykscj1uKDExNyk7ciYmaSh7dGFyZ2V0OiJBcnJheUJ1ZmZlciIscHJvdG86ITB9LHt0cmFuc2ZlcjpmdW5jdGlvbiB0cmFuc2Zlcigpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCEwKX19KX0sKHQsZSxuKT0+e3ZhciBpPW4oNCkscj1uKDE0KSxzPW4oNzIpLGE9bigxMTgpLG89bigxMTQpLGw9bigxMTUpLGM9bigxMTkpLGg9aS5UeXBlRXJyb3IsZD1pLnN0cnVjdHVyZWRDbG9uZSx1PWkuQXJyYXlCdWZmZXIscD1pLkRhdGFWaWV3LGY9TWF0aC5taW4sZz11LnByb3RvdHlwZSxtPXAucHJvdG90eXBlLGI9cihnLnNsaWNlKSx2PXMoZywicmVzaXphYmxlIiwiZ2V0IikseT1zKGcsIm1heEJ5dGVMZW5ndGgiLCJnZXQiKSxBPXIobS5nZXRJbnQ4KSxfPXIobS5zZXRJbnQ4KTt0LmV4cG9ydHM9YyYmZnVuY3Rpb24odCxlLG4pe3ZhciBpPWwodCkscj12b2lkIDA9PT1lP2k6YShlKSxzPSF2fHwhdih0KTtpZihvKHQpKXRocm93IGgoIkFycmF5QnVmZmVyIGlzIGRldGFjaGVkIik7dmFyIGM9ZCh0LHt0cmFuc2ZlcjpbdF19KTtpZihpPT1yJiYobnx8cykpcmV0dXJuIGM7aWYoaT49ciYmKCFufHxzKSlyZXR1cm4gYihjLDAscik7Zm9yKHZhciBnPW4mJiFzJiZ5P3ttYXhCeXRlTGVuZ3RoOnkoYyl9OnZvaWQgMCxtPW5ldyB1KHIsZyksUz1uZXcgcChjKSxFPW5ldyBwKG0pLHg9ZihyLGkpLHc9MDt3PHg7dysrKV8oRSx3LEEoUyx3KSk7cmV0dXJuIG19fSwodCxlLG4pPT57dmFyIGk9big2Mikscj1uKDY1KSxzPVJhbmdlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIDA7dmFyIGU9aSh0KSxuPXIoZSk7aWYoZSE9PW4pdGhyb3cgcygiV3JvbmcgbGVuZ3RoIG9yIGluZGV4Iik7cmV0dXJuIG59fSwodCxlLG4pPT57dmFyIGk9big0KSxyPW4oNykscz1uKDI4KSxhPW4oMTIwKSxvPW4oMTIxKSxsPW4oMTIyKSxjPWkuc3RydWN0dXJlZENsb25lO3QuZXhwb3J0cz0hIWMmJiFyKChmdW5jdGlvbigpe2lmKG8mJnM+OTJ8fGwmJnM+OTR8fGEmJnM+OTcpcmV0dXJuITE7dmFyIHQ9bmV3IEFycmF5QnVmZmVyKDgpLGU9Yyh0LHt0cmFuc2ZlcjpbdF19KTtyZXR1cm4gMCE9dC5ieXRlTGVuZ3RofHw4IT1lLmJ5dGVMZW5ndGh9KSl9LCh0LGUsbik9Pnt2YXIgaT1uKDEyMSkscj1uKDEyMik7dC5leHBvcnRzPSFpJiYhciYmIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnR9LHQ9Pnt0LmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBEZW5vJiZEZW5vJiYib2JqZWN0Ij09dHlwZW9mIERlbm8udmVyc2lvbn0sKHQsZSxuKT0+e3ZhciBpPW4oMTUpO3QuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJwcm9jZXNzIj09aShwcm9jZXNzKX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDMpLHI9bigxMTcpO3ImJmkoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXJUb0ZpeGVkTGVuZ3RoOmZ1bmN0aW9uIHRyYW5zZmVyVG9GaXhlZExlbmd0aCgpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCExKX19KX0sKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLGV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2V4cG9ydHMuUmVuZGVyVGFzaz1leHBvcnRzLlBERldvcmtlclV0aWw9ZXhwb3J0cy5QREZXb3JrZXI9ZXhwb3J0cy5QREZQYWdlUHJveHk9ZXhwb3J0cy5QREZEb2N1bWVudFByb3h5PWV4cG9ydHMuUERGRG9jdW1lbnRMb2FkaW5nVGFzaz1leHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydD1leHBvcnRzLkxvb3BiYWNrUG9ydD1leHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1leHBvcnRzLkRlZmF1bHRGaWx0ZXJGYWN0b3J5PWV4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJTVkdHcmFwaGljcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9kaXNwbGF5U3ZnLlNWR0dyYXBoaWNzfX0pO2V4cG9ydHMuYnVpbGQ9dm9pZCAwO2V4cG9ydHMuZ2V0RG9jdW1lbnQ9Z2V0RG9jdW1lbnQ7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtfX3dfcGRmanNfcmVxdWlyZV9fKDg0KTtfX3dfcGRmanNfcmVxdWlyZV9fKDg2KTtfX3dfcGRmanNfcmVxdWlyZV9fKDg3KTtfX3dfcGRmanNfcmVxdWlyZV9fKDIpO19fd19wZGZqc19yZXF1aXJlX18oOTMpO19fd19wZGZqc19yZXF1aXJlX18oMTAxKTtfX3dfcGRmanNfcmVxdWlyZV9fKDEwMik7X193X3BkZmpzX3JlcXVpcmVfXygxMDUpO19fd19wZGZqc19yZXF1aXJlX18oMTA3KTtfX3dfcGRmanNfcmVxdWlyZV9fKDEwOSk7X193X3BkZmpzX3JlcXVpcmVfXygxMTMpO19fd19wZGZqc19yZXF1aXJlX18oMTE2KTtfX3dfcGRmanNfcmVxdWlyZV9fKDEyMyk7X193X3BkZmpzX3JlcXVpcmVfXyg4OSk7X193X3BkZmpzX3JlcXVpcmVfXygxMjUpO19fd19wZGZqc19yZXF1aXJlX18oMTM1KTtfX3dfcGRmanNfcmVxdWlyZV9fKDEzNyk7X193X3BkZmpzX3JlcXVpcmVfXygxNDApO19fd19wZGZqc19yZXF1aXJlX18oMTQyKTtfX3dfcGRmanNfcmVxdWlyZV9fKDE0NCk7X193X3BkZmpzX3JlcXVpcmVfXygxNDYpO19fd19wZGZqc19yZXF1aXJlX18oMTQ4KTtfX3dfcGRmanNfcmVxdWlyZV9fKDE1MSk7dmFyIF91dGlsPV9fd19wZGZqc19yZXF1aXJlX18oMSksX2Fubm90YXRpb25fc3RvcmFnZT1fX3dfcGRmanNfcmVxdWlyZV9fKDE2MiksX2Rpc3BsYXlfdXRpbHM9X193X3BkZmpzX3JlcXVpcmVfXygxNjcpLF9mb250X2xvYWRlcj1fX3dfcGRmanNfcmVxdWlyZV9fKDE3MCksX2Rpc3BsYXlOb2RlX3V0aWxzPV9fd19wZGZqc19yZXF1aXJlX18oMTcxKSxfY2FudmFzPV9fd19wZGZqc19yZXF1aXJlX18oMTcyKSxfd29ya2VyX29wdGlvbnM9X193X3BkZmpzX3JlcXVpcmVfXygxNzUpLF9tZXNzYWdlX2hhbmRsZXI9X193X3BkZmpzX3JlcXVpcmVfXygxNzYpLF9tZXRhZGF0YT1fX3dfcGRmanNfcmVxdWlyZV9fKDE3NyksX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnPV9fd19wZGZqc19yZXF1aXJlX18oMTc4KSxfdHJhbnNwb3J0X3N0cmVhbT1fX3dfcGRmanNfcmVxdWlyZV9fKDE3OSksX2Rpc3BsYXlGZXRjaF9zdHJlYW09X193X3BkZmpzX3JlcXVpcmVfXygxODApLF9kaXNwbGF5TmV0d29yaz1fX3dfcGRmanNfcmVxdWlyZV9fKDE4MyksX2Rpc3BsYXlOb2RlX3N0cmVhbT1fX3dfcGRmanNfcmVxdWlyZV9fKDE4NCksX2Rpc3BsYXlTdmc9X193X3BkZmpzX3JlcXVpcmVfXygxODUpLF94ZmFfdGV4dD1fX3dfcGRmanNfcmVxdWlyZV9fKDE5Myk7Y29uc3QgREVGQVVMVF9SQU5HRV9DSFVOS19TSVpFPTY1NTM2LFJFTkRFUklOR19DQU5DRUxMRURfVElNRU9VVD0xMDAsREVMQVlFRF9DTEVBTlVQX1RJTUVPVVQ9NWUzLERlZmF1bHRDYW52YXNGYWN0b3J5PV91dGlsLmlzTm9kZUpTP19kaXNwbGF5Tm9kZV91dGlscy5Ob2RlQ2FudmFzRmFjdG9yeTpfZGlzcGxheV91dGlscy5ET01DYW52YXNGYWN0b3J5O2V4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9RGVmYXVsdENhbnZhc0ZhY3Rvcnk7Y29uc3QgRGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5PV91dGlsLmlzTm9kZUpTP19kaXNwbGF5Tm9kZV91dGlscy5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk6X2Rpc3BsYXlfdXRpbHMuRE9NQ01hcFJlYWRlckZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9RGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5O2NvbnN0IERlZmF1bHRGaWx0ZXJGYWN0b3J5PV91dGlsLmlzTm9kZUpTP19kaXNwbGF5Tm9kZV91dGlscy5Ob2RlRmlsdGVyRmFjdG9yeTpfZGlzcGxheV91dGlscy5ET01GaWx0ZXJGYWN0b3J5O2V4cG9ydHMuRGVmYXVsdEZpbHRlckZhY3Rvcnk9RGVmYXVsdEZpbHRlckZhY3Rvcnk7Y29uc3QgRGVmYXVsdFN0YW5kYXJkRm9udERhdGFGYWN0b3J5PV91dGlsLmlzTm9kZUpTP19kaXNwbGF5Tm9kZV91dGlscy5Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk6X2Rpc3BsYXlfdXRpbHMuRE9NU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9RGVmYXVsdFN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2Z1bmN0aW9uIGdldERvY3VtZW50KHQpeyJzdHJpbmciPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFVSTD90PXt1cmw6dH06KDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCkmJih0PXtkYXRhOnR9KTtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBpbiBnZXREb2N1bWVudCwgbmVlZCBwYXJhbWV0ZXIgb2JqZWN0LiIpO2lmKCF0LnVybCYmIXQuZGF0YSYmIXQucmFuZ2UpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBvYmplY3Q6IG5lZWQgZWl0aGVyIC5kYXRhLCAucmFuZ2Ugb3IgLnVybCIpO2NvbnN0IGU9bmV3IFBERkRvY3VtZW50TG9hZGluZ1Rhc2sse2RvY0lkOm59PWUsaT10LnVybD9nZXRVcmxQcm9wKHQudXJsKTpudWxsLHI9dC5kYXRhP2dldERhdGFQcm9wKHQuZGF0YSk6bnVsbCxzPXQuaHR0cEhlYWRlcnN8fG51bGwsYT0hMD09PXQud2l0aENyZWRlbnRpYWxzLG89dC5wYXNzd29yZD8/bnVsbCxsPXQucmFuZ2UgaW5zdGFuY2VvZiBQREZEYXRhUmFuZ2VUcmFuc3BvcnQ/dC5yYW5nZTpudWxsLGM9TnVtYmVyLmlzSW50ZWdlcih0LnJhbmdlQ2h1bmtTaXplKSYmdC5yYW5nZUNodW5rU2l6ZT4wP3QucmFuZ2VDaHVua1NpemU6REVGQVVMVF9SQU5HRV9DSFVOS19TSVpFO2xldCBoPXQud29ya2VyIGluc3RhbmNlb2YgUERGV29ya2VyP3Qud29ya2VyOm51bGw7Y29uc3QgZD10LnZlcmJvc2l0eSx1PSJzdHJpbmciIT10eXBlb2YgdC5kb2NCYXNlVXJsfHwoMCxfZGlzcGxheV91dGlscy5pc0RhdGFTY2hlbWUpKHQuZG9jQmFzZVVybCk/bnVsbDp0LmRvY0Jhc2VVcmwscD0ic3RyaW5nIj09dHlwZW9mIHQuY01hcFVybD90LmNNYXBVcmw6bnVsbCxmPSExIT09dC5jTWFwUGFja2VkLGc9dC5DTWFwUmVhZGVyRmFjdG9yeXx8RGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5LG09InN0cmluZyI9PXR5cGVvZiB0LnN0YW5kYXJkRm9udERhdGFVcmw/dC5zdGFuZGFyZEZvbnREYXRhVXJsOm51bGwsYj10LlN0YW5kYXJkRm9udERhdGFGYWN0b3J5fHxEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnksdj0hMCE9PXQuc3RvcEF0RXJyb3JzLHk9TnVtYmVyLmlzSW50ZWdlcih0Lm1heEltYWdlU2l6ZSkmJnQubWF4SW1hZ2VTaXplPi0xP3QubWF4SW1hZ2VTaXplOi0xLEE9ITEhPT10LmlzRXZhbFN1cHBvcnRlZCxfPSJib29sZWFuIj09dHlwZW9mIHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ/dC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohX3V0aWwuaXNOb2RlSlMsUz1OdW1iZXIuaXNJbnRlZ2VyKHQuY2FudmFzTWF4QXJlYUluQnl0ZXMpP3QuY2FudmFzTWF4QXJlYUluQnl0ZXM6LTEsRT0iYm9vbGVhbiI9PXR5cGVvZiB0LmRpc2FibGVGb250RmFjZT90LmRpc2FibGVGb250RmFjZTpfdXRpbC5pc05vZGVKUyx4PSEwPT09dC5mb250RXh0cmFQcm9wZXJ0aWVzLHc9ITA9PT10LmVuYWJsZVhmYSxDPXQub3duZXJEb2N1bWVudHx8Z2xvYmFsVGhpcy5kb2N1bWVudCxUPSEwPT09dC5kaXNhYmxlUmFuZ2UsUD0hMD09PXQuZGlzYWJsZVN0cmVhbSxrPSEwPT09dC5kaXNhYmxlQXV0b0ZldGNoLE09ITA9PT10LnBkZkJ1ZyxSPWw/bC5sZW5ndGg6dC5sZW5ndGg/P05hTixJPSJib29sZWFuIj09dHlwZW9mIHQudXNlU3lzdGVtRm9udHM/dC51c2VTeXN0ZW1Gb250czohX3V0aWwuaXNOb2RlSlMmJiFFLEQ9ImJvb2xlYW4iPT10eXBlb2YgdC51c2VXb3JrZXJGZXRjaD90LnVzZVdvcmtlckZldGNoOmc9PT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSYmYj09PV9kaXNwbGF5X3V0aWxzLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5JiZwJiZtJiYoMCxfZGlzcGxheV91dGlscy5pc1ZhbGlkRmV0Y2hVcmwpKHAsZG9jdW1lbnQuYmFzZVVSSSkmJigwLF9kaXNwbGF5X3V0aWxzLmlzVmFsaWRGZXRjaFVybCkobSxkb2N1bWVudC5iYXNlVVJJKSxPPXQuY2FudmFzRmFjdG9yeXx8bmV3IERlZmF1bHRDYW52YXNGYWN0b3J5KHtvd25lckRvY3VtZW50OkN9KSxMPXQuZmlsdGVyRmFjdG9yeXx8bmV3IERlZmF1bHRGaWx0ZXJGYWN0b3J5KHtkb2NJZDpuLG93bmVyRG9jdW1lbnQ6Q30pOygwLF91dGlsLnNldFZlcmJvc2l0eUxldmVsKShkKTtjb25zdCBOPXtjYW52YXNGYWN0b3J5Ok8sZmlsdGVyRmFjdG9yeTpMfTtpZighRCl7Ti5jTWFwUmVhZGVyRmFjdG9yeT1uZXcgZyh7YmFzZVVybDpwLGlzQ29tcHJlc3NlZDpmfSk7Ti5zdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1uZXcgYih7YmFzZVVybDptfSl9aWYoIWgpe2NvbnN0IHQ9e3ZlcmJvc2l0eTpkLHBvcnQ6X3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyUG9ydH07aD10LnBvcnQ/UERGV29ya2VyLmZyb21Qb3J0KHQpOm5ldyBQREZXb3JrZXIodCk7ZS5fd29ya2VyPWh9Y29uc3QgQj17ZG9jSWQ6bixhcGlWZXJzaW9uOiIzLjkuMTc5IixkYXRhOnIscGFzc3dvcmQ6byxkaXNhYmxlQXV0b0ZldGNoOmsscmFuZ2VDaHVua1NpemU6YyxsZW5ndGg6Uixkb2NCYXNlVXJsOnUsZW5hYmxlWGZhOncsZXZhbHVhdG9yT3B0aW9uczp7bWF4SW1hZ2VTaXplOnksZGlzYWJsZUZvbnRGYWNlOkUsaWdub3JlRXJyb3JzOnYsaXNFdmFsU3VwcG9ydGVkOkEsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6XyxjYW52YXNNYXhBcmVhSW5CeXRlczpTLGZvbnRFeHRyYVByb3BlcnRpZXM6eCx1c2VTeXN0ZW1Gb250czpJLGNNYXBVcmw6RD9wOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDpEP206bnVsbH19LGo9e2lnbm9yZUVycm9yczp2LGlzRXZhbFN1cHBvcnRlZDpBLGRpc2FibGVGb250RmFjZTpFLGZvbnRFeHRyYVByb3BlcnRpZXM6eCxlbmFibGVYZmE6dyxvd25lckRvY3VtZW50OkMsZGlzYWJsZUF1dG9GZXRjaDprLHBkZkJ1ZzpNLHN0eWxlRWxlbWVudDpudWxsfTtoLnByb21pc2UudGhlbigoZnVuY3Rpb24oKXtpZihlLmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkxvYWRpbmcgYWJvcnRlZCIpO2NvbnN0IHQ9X2ZldGNoRG9jdW1lbnQoaCxCKSxvPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtsZXQgZTtpZihsKWU9bmV3IF90cmFuc3BvcnRfc3RyZWFtLlBERkRhdGFUcmFuc3BvcnRTdHJlYW0oe2xlbmd0aDpSLGluaXRpYWxEYXRhOmwuaW5pdGlhbERhdGEscHJvZ3Jlc3NpdmVEb25lOmwucHJvZ3Jlc3NpdmVEb25lLGNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lOmwuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWUsZGlzYWJsZVJhbmdlOlQsZGlzYWJsZVN0cmVhbTpQfSxsKTtlbHNlIGlmKCFyKXtlPSh0PT5fdXRpbC5pc05vZGVKUz9uZXcgX2Rpc3BsYXlOb2RlX3N0cmVhbS5QREZOb2RlU3RyZWFtKHQpOigwLF9kaXNwbGF5X3V0aWxzLmlzVmFsaWRGZXRjaFVybCkodC51cmwpP25ldyBfZGlzcGxheUZldGNoX3N0cmVhbS5QREZGZXRjaFN0cmVhbSh0KTpuZXcgX2Rpc3BsYXlOZXR3b3JrLlBERk5ldHdvcmtTdHJlYW0odCkpKHt1cmw6aSxsZW5ndGg6UixodHRwSGVhZGVyczpzLHdpdGhDcmVkZW50aWFsczphLHJhbmdlQ2h1bmtTaXplOmMsZGlzYWJsZVJhbmdlOlQsZGlzYWJsZVN0cmVhbTpQfSl9dChlKX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoW3Qsb10pLnRoZW4oKGZ1bmN0aW9uKHQpe2xldFtpLHJdPXQ7aWYoZS5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJMb2FkaW5nIGFib3J0ZWQiKTtjb25zdCBzPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKG4saSxoLnBvcnQpLGE9bmV3IFdvcmtlclRyYW5zcG9ydChzLGUscixqLE4pO2UuX3RyYW5zcG9ydD1hO3Muc2VuZCgiUmVhZHkiLG51bGwpfSkpfSkpLmNhdGNoKGUuX2NhcGFiaWxpdHkucmVqZWN0KTtyZXR1cm4gZX1hc3luYyBmdW5jdGlvbiBfZmV0Y2hEb2N1bWVudCh0LGUpe2lmKHQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQiKTtjb25zdCBuPWF3YWl0IHQubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREb2NSZXF1ZXN0IixlLGUuZGF0YT9bZS5kYXRhLmJ1ZmZlcl06bnVsbCk7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpO3JldHVybiBufWZ1bmN0aW9uIGdldFVybFByb3AodCl7aWYodCBpbnN0YW5jZW9mIFVSTClyZXR1cm4gdC5ocmVmO3RyeXtyZXR1cm4gbmV3IFVSTCh0LHdpbmRvdy5sb2NhdGlvbikuaHJlZn1jYXRjaHtpZihfdXRpbC5pc05vZGVKUyYmInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0fXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBQREYgdXJsIGRhdGE6IGVpdGhlciBzdHJpbmcgb3IgVVJMLW9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgdXJsIHByb3BlcnR5LiIpfWZ1bmN0aW9uIGdldERhdGFQcm9wKHQpe2lmKF91dGlsLmlzTm9kZUpTJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlciYmdCBpbnN0YW5jZW9mIEJ1ZmZlcil0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSBwcm92aWRlIGJpbmFyeSBkYXRhIGFzIGBVaW50OEFycmF5YCwgcmF0aGVyIHRoYW4gYEJ1ZmZlcmAuIik7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJnQuYnl0ZUxlbmd0aD09PXQuYnVmZmVyLmJ5dGVMZW5ndGgpcmV0dXJuIHQ7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybigwLF91dGlsLnN0cmluZ1RvQnl0ZXMpKHQpO2lmKCJvYmplY3QiPT10eXBlb2YgdCYmIWlzTmFOKHQ/Lmxlbmd0aCl8fCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKHQpKXJldHVybiBuZXcgVWludDhBcnJheSh0KTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgVHlwZWRBcnJheSwgc3RyaW5nLCBvciBhcnJheS1saWtlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgZGF0YSBwcm9wZXJ0eS4iKX1jbGFzcyBQREZEb2N1bWVudExvYWRpbmdUYXNre3N0YXRpYyNlPTA7Y29uc3RydWN0b3IoKXt0aGlzLl9jYXBhYmlsaXR5PW5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLl90cmFuc3BvcnQ9bnVsbDt0aGlzLl93b3JrZXI9bnVsbDt0aGlzLmRvY0lkPSJkIitQREZEb2N1bWVudExvYWRpbmdUYXNrLiNlKys7dGhpcy5kZXN0cm95ZWQ9ITE7dGhpcy5vblBhc3N3b3JkPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWFzeW5jIGRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMDthd2FpdCh0aGlzLl90cmFuc3BvcnQ/LmRlc3Ryb3koKSk7dGhpcy5fdHJhbnNwb3J0PW51bGw7aWYodGhpcy5fd29ya2VyKXt0aGlzLl93b3JrZXIuZGVzdHJveSgpO3RoaXMuX3dvcmtlcj1udWxsfX19ZXhwb3J0cy5QREZEb2N1bWVudExvYWRpbmdUYXNrPVBERkRvY3VtZW50TG9hZGluZ1Rhc2s7Y2xhc3MgUERGRGF0YVJhbmdlVHJhbnNwb3J0e2NvbnN0cnVjdG9yKHQsZSl7bGV0IG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3RoaXMubGVuZ3RoPXQ7dGhpcy5pbml0aWFsRGF0YT1lO3RoaXMucHJvZ3Jlc3NpdmVEb25lPW47dGhpcy5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZT1pO3RoaXMuX3JhbmdlTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnM9W107dGhpcy5fcmVhZHlDYXBhYmlsaXR5PW5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eX1hZGRSYW5nZUxpc3RlbmVyKHQpe3RoaXMuX3JhbmdlTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NMaXN0ZW5lcih0KXt0aGlzLl9wcm9ncmVzc0xpc3RlbmVycy5wdXNoKHQpfWFkZFByb2dyZXNzaXZlUmVhZExpc3RlbmVyKHQpe3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycy5wdXNoKHQpfWFkZFByb2dyZXNzaXZlRG9uZUxpc3RlbmVyKHQpe3RoaXMuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycy5wdXNoKHQpfW9uRGF0YVJhbmdlKHQsZSl7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fcmFuZ2VMaXN0ZW5lcnMpbih0LGUpfW9uRGF0YVByb2dyZXNzKHQsZSl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKCk9Pntmb3IoY29uc3QgbiBvZiB0aGlzLl9wcm9ncmVzc0xpc3RlbmVycyluKHQsZSl9KSl9b25EYXRhUHJvZ3Jlc3NpdmVSZWFkKHQpe3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCgpPT57Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzKWUodCl9KSl9b25EYXRhUHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnMpdCgpfSkpfXRyYW5zcG9ydFJlYWR5KCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKX1yZXF1ZXN0RGF0YVJhbmdlKHQsZSl7KDAsX3V0aWwudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgUERGRGF0YVJhbmdlVHJhbnNwb3J0LnJlcXVlc3REYXRhUmFuZ2UiKX1hYm9ydCgpe319ZXhwb3J0cy5QREZEYXRhUmFuZ2VUcmFuc3BvcnQ9UERGRGF0YVJhbmdlVHJhbnNwb3J0O2NsYXNzIFBERkRvY3VtZW50UHJveHl7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wZGZJbmZvPXQ7dGhpcy5fdHJhbnNwb3J0PWV9Z2V0IGFubm90YXRpb25TdG9yYWdlKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5hbm5vdGF0aW9uU3RvcmFnZX1nZXQgZmlsdGVyRmFjdG9yeSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZmlsdGVyRmFjdG9yeX1nZXQgbnVtUGFnZXMoKXtyZXR1cm4gdGhpcy5fcGRmSW5mby5udW1QYWdlc31nZXQgZmluZ2VycHJpbnRzKCl7cmV0dXJuIHRoaXMuX3BkZkluZm8uZmluZ2VycHJpbnRzfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImlzUHVyZVhmYSIsISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmEpfWdldCBhbGxYZmFIdG1sKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYX1nZXRQYWdlKHQpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZSh0KX1nZXRQYWdlSW5kZXgodCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSW5kZXgodCl9Z2V0RGVzdGluYXRpb25zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXREZXN0aW5hdGlvbnMoKX1nZXREZXN0aW5hdGlvbih0KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERlc3RpbmF0aW9uKHQpfWdldFBhZ2VMYWJlbHMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYWJlbHMoKX1nZXRQYWdlTGF5b3V0KCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlTGF5b3V0KCl9Z2V0UGFnZU1vZGUoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VNb2RlKCl9Z2V0Vmlld2VyUHJlZmVyZW5jZXMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFZpZXdlclByZWZlcmVuY2VzKCl9Z2V0T3BlbkFjdGlvbigpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3BlbkFjdGlvbigpfWdldEF0dGFjaG1lbnRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRBdHRhY2htZW50cygpfWdldEphdmFTY3JpcHQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEphdmFTY3JpcHQoKX1nZXRKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERvY0pTQWN0aW9ucygpfWdldE91dGxpbmUoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE91dGxpbmUoKX1nZXRPcHRpb25hbENvbnRlbnRDb25maWcoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpfWdldFBlcm1pc3Npb25zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQZXJtaXNzaW9ucygpfWdldE1ldGFkYXRhKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRNZXRhZGF0YSgpfWdldE1hcmtJbmZvKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRNYXJrSW5mbygpfWdldERhdGEoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERhdGEoKX1zYXZlRG9jdW1lbnQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnNhdmVEb2N1bWVudCgpfWdldERvd25sb2FkSW5mbygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eS5wcm9taXNlfWNsZWFudXAoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiB0aGlzLl90cmFuc3BvcnQuc3RhcnRDbGVhbnVwKHR8fHRoaXMuaXNQdXJlWGZhKX1kZXN0cm95KCl7cmV0dXJuIHRoaXMubG9hZGluZ1Rhc2suZGVzdHJveSgpfWdldCBsb2FkaW5nUGFyYW1zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5sb2FkaW5nUGFyYW1zfWdldCBsb2FkaW5nVGFzaygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQubG9hZGluZ1Rhc2t9Z2V0RmllbGRPYmplY3RzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRGaWVsZE9iamVjdHMoKX1oYXNKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lmhhc0pTQWN0aW9ucygpfWdldENhbGN1bGF0aW9uT3JkZXJJZHMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldENhbGN1bGF0aW9uT3JkZXJJZHMoKX19ZXhwb3J0cy5QREZEb2N1bWVudFByb3h5PVBERkRvY3VtZW50UHJveHk7Y2xhc3MgUERGUGFnZVByb3h5eyNuPW51bGw7I2k9ITE7Y29uc3RydWN0b3IodCxlLG4pe2xldCBpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107dGhpcy5fcGFnZUluZGV4PXQ7dGhpcy5fcGFnZUluZm89ZTt0aGlzLl90cmFuc3BvcnQ9bjt0aGlzLl9zdGF0cz1pP25ldyBfZGlzcGxheV91dGlscy5TdGF0VGltZXI6bnVsbDt0aGlzLl9wZGZCdWc9aTt0aGlzLmNvbW1vbk9ianM9bi5jb21tb25PYmpzO3RoaXMub2Jqcz1uZXcgUERGT2JqZWN0czt0aGlzLl9tYXliZUNsZWFudXBBZnRlclJlbmRlcj0hMTt0aGlzLl9pbnRlbnRTdGF0ZXM9bmV3IE1hcDt0aGlzLmRlc3Ryb3llZD0hMX1nZXQgcGFnZU51bWJlcigpe3JldHVybiB0aGlzLl9wYWdlSW5kZXgrMX1nZXQgcm90YXRlKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmZvLnJvdGF0ZX1nZXQgcmVmKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmZvLnJlZn1nZXQgdXNlclVuaXQoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8udXNlclVuaXR9Z2V0IHZpZXcoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8udmlld31nZXRWaWV3cG9ydCgpe2xldHtzY2FsZTp0LHJvdGF0aW9uOmU9dGhpcy5yb3RhdGUsb2Zmc2V0WDpuPTAsb2Zmc2V0WTppPTAsZG9udEZsaXA6cj0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybiBuZXcgX2Rpc3BsYXlfdXRpbHMuUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlldyxzY2FsZTp0LHJvdGF0aW9uOmUsb2Zmc2V0WDpuLG9mZnNldFk6aSxkb250RmxpcDpyfSl9Z2V0QW5ub3RhdGlvbnMoKXtsZXR7aW50ZW50OnQ9ImRpc3BsYXkifT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307Y29uc3QgZT10aGlzLl90cmFuc3BvcnQuZ2V0UmVuZGVyaW5nSW50ZW50KHQpO3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0QW5ub3RhdGlvbnModGhpcy5fcGFnZUluZGV4LGUucmVuZGVyaW5nSW50ZW50KX1nZXRKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VKU0FjdGlvbnModGhpcy5fcGFnZUluZGV4KX1nZXQgZmlsdGVyRmFjdG9yeSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZmlsdGVyRmFjdG9yeX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJpc1B1cmVYZmEiLCEhdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhKX1hc3luYyBnZXRYZmEoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhPy5jaGlsZHJlblt0aGlzLl9wYWdlSW5kZXhdfHxudWxsfXJlbmRlcih0KXtsZXR7Y2FudmFzQ29udGV4dDplLHZpZXdwb3J0Om4saW50ZW50Omk9ImRpc3BsYXkiLGFubm90YXRpb25Nb2RlOnI9X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFLHRyYW5zZm9ybTpzPW51bGwsYmFja2dyb3VuZDphPW51bGwsb3B0aW9uYWxDb250ZW50Q29uZmlnUHJvbWlzZTpvPW51bGwsYW5ub3RhdGlvbkNhbnZhc01hcDpsPW51bGwscGFnZUNvbG9yczpjPW51bGwscHJpbnRBbm5vdGF0aW9uU3RvcmFnZTpoPW51bGx9PXQ7dGhpcy5fc3RhdHM/LnRpbWUoIk92ZXJhbGwiKTtjb25zdCBkPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQoaSxyLGgpO3RoaXMuI2k9ITE7dGhpcy4jcigpO298fChvPXRoaXMuX3RyYW5zcG9ydC5nZXRPcHRpb25hbENvbnRlbnRDb25maWcoKSk7bGV0IHU9dGhpcy5faW50ZW50U3RhdGVzLmdldChkLmNhY2hlS2V5KTtpZighdSl7dT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ludGVudFN0YXRlcy5zZXQoZC5jYWNoZUtleSx1KX1pZih1LnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQpe2NsZWFyVGltZW91dCh1LnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQpO3Uuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dD1udWxsfWNvbnN0IHA9ISEoZC5yZW5kZXJpbmdJbnRlbnQmX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7aWYoIXUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSl7dS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5PW5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eTt1Lm9wZXJhdG9yTGlzdD17Zm5BcnJheTpbXSxhcmdzQXJyYXk6W10sbGFzdENodW5rOiExLHNlcGFyYXRlQW5ub3RzOm51bGx9O3RoaXMuX3N0YXRzPy50aW1lKCJQYWdlIFJlcXVlc3QiKTt0aGlzLl9wdW1wT3BlcmF0b3JMaXN0KGQpfWNvbnN0IGNvbXBsZXRlPXQ9Pnt1LnJlbmRlclRhc2tzLmRlbGV0ZShmKTsodGhpcy5fbWF5YmVDbGVhbnVwQWZ0ZXJSZW5kZXJ8fHApJiYodGhpcy4jaT0hMCk7dGhpcy4jcyghcCk7aWYodCl7Zi5jYXBhYmlsaXR5LnJlamVjdCh0KTt0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6dSxyZWFzb246dCBpbnN0YW5jZW9mIEVycm9yP3Q6bmV3IEVycm9yKHQpfSl9ZWxzZSBmLmNhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3N0YXRzPy50aW1lRW5kKCJSZW5kZXJpbmciKTt0aGlzLl9zdGF0cz8udGltZUVuZCgiT3ZlcmFsbCIpfSxmPW5ldyBJbnRlcm5hbFJlbmRlclRhc2soe2NhbGxiYWNrOmNvbXBsZXRlLHBhcmFtczp7Y2FudmFzQ29udGV4dDplLHZpZXdwb3J0Om4sdHJhbnNmb3JtOnMsYmFja2dyb3VuZDphfSxvYmpzOnRoaXMub2Jqcyxjb21tb25PYmpzOnRoaXMuY29tbW9uT2Jqcyxhbm5vdGF0aW9uQ2FudmFzTWFwOmwsb3BlcmF0b3JMaXN0OnUub3BlcmF0b3JMaXN0LHBhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY2FudmFzRmFjdG9yeTp0aGlzLl90cmFuc3BvcnQuY2FudmFzRmFjdG9yeSxmaWx0ZXJGYWN0b3J5OnRoaXMuX3RyYW5zcG9ydC5maWx0ZXJGYWN0b3J5LHVzZVJlcXVlc3RBbmltYXRpb25GcmFtZTohcCxwZGZCdWc6dGhpcy5fcGRmQnVnLHBhZ2VDb2xvcnM6Y30pOyh1LnJlbmRlclRhc2tzfHw9bmV3IFNldCkuYWRkKGYpO2NvbnN0IGc9Zi50YXNrO1Byb21pc2UuYWxsKFt1LmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucHJvbWlzZSxvXSkudGhlbigodD0+e2xldFtlLG5dPXQ7aWYodGhpcy5kZXN0cm95ZWQpY29tcGxldGUoKTtlbHNle3RoaXMuX3N0YXRzPy50aW1lKCJSZW5kZXJpbmciKTtmLmluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OmUsb3B0aW9uYWxDb250ZW50Q29uZmlnOm59KTtmLm9wZXJhdG9yTGlzdENoYW5nZWQoKX19KSkuY2F0Y2goY29tcGxldGUpO3JldHVybiBnfWdldE9wZXJhdG9yTGlzdCgpe2xldHtpbnRlbnQ6dD0iZGlzcGxheSIsYW5ub3RhdGlvbk1vZGU6ZT1fdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUscHJpbnRBbm5vdGF0aW9uU3RvcmFnZTpuPW51bGx9PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtjb25zdCBpPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQodCxlLG4sITApO2xldCByLHM9dGhpcy5faW50ZW50U3RhdGVzLmdldChpLmNhY2hlS2V5KTtpZighcyl7cz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ludGVudFN0YXRlcy5zZXQoaS5jYWNoZUtleSxzKX1pZighcy5vcExpc3RSZWFkQ2FwYWJpbGl0eSl7cj1PYmplY3QuY3JlYXRlKG51bGwpO3Iub3BlcmF0b3JMaXN0Q2hhbmdlZD1mdW5jdGlvbiBvcGVyYXRvckxpc3RDaGFuZ2VkKCl7aWYocy5vcGVyYXRvckxpc3QubGFzdENodW5rKXtzLm9wTGlzdFJlYWRDYXBhYmlsaXR5LnJlc29sdmUocy5vcGVyYXRvckxpc3QpO3MucmVuZGVyVGFza3MuZGVsZXRlKHIpfX07cy5vcExpc3RSZWFkQ2FwYWJpbGl0eT1uZXcgX3V0aWwuUHJvbWlzZUNhcGFiaWxpdHk7KHMucmVuZGVyVGFza3N8fD1uZXcgU2V0KS5hZGQocik7cy5vcGVyYXRvckxpc3Q9e2ZuQXJyYXk6W10sYXJnc0FycmF5OltdLGxhc3RDaHVuazohMSxzZXBhcmF0ZUFubm90czpudWxsfTt0aGlzLl9zdGF0cz8udGltZSgiUGFnZSBSZXF1ZXN0Iik7dGhpcy5fcHVtcE9wZXJhdG9yTGlzdChpKX1yZXR1cm4gcy5vcExpc3RSZWFkQ2FwYWJpbGl0eS5wcm9taXNlfXN0cmVhbVRleHRDb250ZW50KCl7bGV0e2luY2x1ZGVNYXJrZWRDb250ZW50OnQ9ITEsZGlzYWJsZU5vcm1hbGl6YXRpb246ZT0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybiB0aGlzLl90cmFuc3BvcnQubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFRleHRDb250ZW50Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxpbmNsdWRlTWFya2VkQ29udGVudDohMD09PXQsZGlzYWJsZU5vcm1hbGl6YXRpb246ITA9PT1lfSx7aGlnaFdhdGVyTWFyazoxMDAsc2l6ZTp0PT50Lml0ZW1zLmxlbmd0aH0pfWdldFRleHRDb250ZW50KCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2lmKHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSlyZXR1cm4gdGhpcy5nZXRYZmEoKS50aGVuKCh0PT5feGZhX3RleHQuWGZhVGV4dC50ZXh0Q29udGVudCh0KSkpO2NvbnN0IGU9dGhpcy5zdHJlYW1UZXh0Q29udGVudCh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7Y29uc3QgaT1lLmdldFJlYWRlcigpLHI9e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfTshZnVuY3Rpb24gcHVtcCgpe2kucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKGUpe2xldHt2YWx1ZTpuLGRvbmU6aX09ZTtpZihpKXQocik7ZWxzZXtPYmplY3QuYXNzaWduKHIuc3R5bGVzLG4uc3R5bGVzKTtyLml0ZW1zLnB1c2goLi4ubi5pdGVtcyk7cHVtcCgpfX0pLG4pfSgpfSkpfWdldFN0cnVjdFRyZWUoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFN0cnVjdFRyZWUodGhpcy5fcGFnZUluZGV4KX1fZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgdGhpcy5faW50ZW50U3RhdGVzLnZhbHVlcygpKXt0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6ZSxyZWFzb246bmV3IEVycm9yKCJQYWdlIHdhcyBkZXN0cm95ZWQuIiksZm9yY2U6ITB9KTtpZighZS5vcExpc3RSZWFkQ2FwYWJpbGl0eSlmb3IoY29uc3QgbiBvZiBlLnJlbmRlclRhc2tzKXt0LnB1c2gobi5jb21wbGV0ZWQpO24uY2FuY2VsKCl9fXRoaXMub2Jqcy5jbGVhcigpO3RoaXMuI2k9ITE7dGhpcy4jcigpO3JldHVybiBQcm9taXNlLmFsbCh0KX1jbGVhbnVwKCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLiNpPSEwO2NvbnN0IGU9dGhpcy4jcyghMSk7dCYmZSYmKHRoaXMuX3N0YXRzJiY9bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcik7cmV0dXJuIGV9I3MoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3RoaXMuI3IoKTtpZighdGhpcy4jaXx8dGhpcy5kZXN0cm95ZWQpcmV0dXJuITE7aWYodCl7dGhpcy4jbj1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuI249bnVsbDt0aGlzLiNzKCExKX0pLERFTEFZRURfQ0xFQU5VUF9USU1FT1VUKTtyZXR1cm4hMX1mb3IoY29uc3R7cmVuZGVyVGFza3M6dCxvcGVyYXRvckxpc3Q6ZX1vZiB0aGlzLl9pbnRlbnRTdGF0ZXMudmFsdWVzKCkpaWYodC5zaXplPjB8fCFlLmxhc3RDaHVuaylyZXR1cm4hMTt0aGlzLl9pbnRlbnRTdGF0ZXMuY2xlYXIoKTt0aGlzLm9ianMuY2xlYXIoKTt0aGlzLiNpPSExO3JldHVybiEwfSNyKCl7aWYodGhpcy4jbil7Y2xlYXJUaW1lb3V0KHRoaXMuI24pO3RoaXMuI249bnVsbH19X3N0YXJ0UmVuZGVyUGFnZSh0LGUpe2NvbnN0IG49dGhpcy5faW50ZW50U3RhdGVzLmdldChlKTtpZihuKXt0aGlzLl9zdGF0cz8udGltZUVuZCgiUGFnZSBSZXF1ZXN0Iik7bi5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5Py5yZXNvbHZlKHQpfX1fcmVuZGVyUGFnZUNodW5rKHQsZSl7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtlLm9wZXJhdG9yTGlzdC5mbkFycmF5LnB1c2godC5mbkFycmF5W25dKTtlLm9wZXJhdG9yTGlzdC5hcmdzQXJyYXkucHVzaCh0LmFyZ3NBcnJheVtuXSl9ZS5vcGVyYXRvckxpc3QubGFzdENodW5rPXQubGFzdENodW5rO2Uub3BlcmF0b3JMaXN0LnNlcGFyYXRlQW5ub3RzPXQuc2VwYXJhdGVBbm5vdHM7Zm9yKGNvbnN0IHQgb2YgZS5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0Lmxhc3RDaHVuayYmdGhpcy4jcyghMCl9X3B1bXBPcGVyYXRvckxpc3QodCl7bGV0e3JlbmRlcmluZ0ludGVudDplLGNhY2hlS2V5Om4sYW5ub3RhdGlvblN0b3JhZ2VTZXJpYWxpemFibGU6aX09dDtjb25zdHttYXA6cix0cmFuc2ZlcnM6c309aSxhPXRoaXMuX3RyYW5zcG9ydC5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0T3BlcmF0b3JMaXN0Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxpbnRlbnQ6ZSxjYWNoZUtleTpuLGFubm90YXRpb25TdG9yYWdlOnJ9LHMpLmdldFJlYWRlcigpLG89dGhpcy5faW50ZW50U3RhdGVzLmdldChuKTtvLnN0cmVhbVJlYWRlcj1hO2NvbnN0IHB1bXA9KCk9PnthLnJlYWQoKS50aGVuKCh0PT57bGV0e3ZhbHVlOmUsZG9uZTpufT10O2lmKG4pby5zdHJlYW1SZWFkZXI9bnVsbDtlbHNlIGlmKCF0aGlzLl90cmFuc3BvcnQuZGVzdHJveWVkKXt0aGlzLl9yZW5kZXJQYWdlQ2h1bmsoZSxvKTtwdW1wKCl9fSksKHQ9PntvLnN0cmVhbVJlYWRlcj1udWxsO2lmKCF0aGlzLl90cmFuc3BvcnQuZGVzdHJveWVkKXtpZihvLm9wZXJhdG9yTGlzdCl7by5vcGVyYXRvckxpc3QubGFzdENodW5rPSEwO2Zvcihjb25zdCB0IG9mIG8ucmVuZGVyVGFza3MpdC5vcGVyYXRvckxpc3RDaGFuZ2VkKCk7dGhpcy4jcyghMCl9aWYoby5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KW8uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZXtpZighby5vcExpc3RSZWFkQ2FwYWJpbGl0eSl0aHJvdyB0O28ub3BMaXN0UmVhZENhcGFiaWxpdHkucmVqZWN0KHQpfX19KSl9O3B1bXAoKX1fYWJvcnRPcGVyYXRvckxpc3QodCl7bGV0e2ludGVudFN0YXRlOmUscmVhc29uOm4sZm9yY2U6aT0hMX09dDtpZihlLnN0cmVhbVJlYWRlcil7aWYoZS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0KXtjbGVhclRpbWVvdXQoZS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0KTtlLnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQ9bnVsbH1pZighaSl7aWYoZS5yZW5kZXJUYXNrcy5zaXplPjApcmV0dXJuO2lmKG4gaW5zdGFuY2VvZiBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24pe2xldCB0PVJFTkRFUklOR19DQU5DRUxMRURfVElNRU9VVDtuLmV4dHJhRGVsYXk+MCYmbi5leHRyYURlbGF5PDFlMyYmKHQrPW4uZXh0cmFEZWxheSk7ZS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PXNldFRpbWVvdXQoKCgpPT57ZS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGw7dGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOmUscmVhc29uOm4sZm9yY2U6ITB9KX0pLHQpO3JldHVybn19ZS5zdHJlYW1SZWFkZXIuY2FuY2VsKG5ldyBfdXRpbC5BYm9ydEV4Y2VwdGlvbihuLm1lc3NhZ2UpKS5jYXRjaCgoKCk9Pnt9KSk7ZS5zdHJlYW1SZWFkZXI9bnVsbDtpZighdGhpcy5fdHJhbnNwb3J0LmRlc3Ryb3llZCl7Zm9yKGNvbnN0W3Qsbl1vZiB0aGlzLl9pbnRlbnRTdGF0ZXMpaWYobj09PWUpe3RoaXMuX2ludGVudFN0YXRlcy5kZWxldGUodCk7YnJlYWt9dGhpcy5jbGVhbnVwKCl9fX1nZXQgc3RhdHMoKXtyZXR1cm4gdGhpcy5fc3RhdHN9fWV4cG9ydHMuUERGUGFnZVByb3h5PVBERlBhZ2VQcm94eTtjbGFzcyBMb29wYmFja1BvcnR7I2E9bmV3IFNldDsjbz1Qcm9taXNlLnJlc29sdmUoKTtwb3N0TWVzc2FnZSh0LGUpe2NvbnN0IG49e2RhdGE6c3RydWN0dXJlZENsb25lKHQsbnVsbCl9O3RoaXMuI28udGhlbigoKCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLiNhKXQuY2FsbCh0aGlzLG4pfSkpfWFkZEV2ZW50TGlzdGVuZXIodCxlKXt0aGlzLiNhLmFkZChlKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl7dGhpcy4jYS5kZWxldGUoZSl9dGVybWluYXRlKCl7dGhpcy4jYS5jbGVhcigpfX1leHBvcnRzLkxvb3BiYWNrUG9ydD1Mb29wYmFja1BvcnQ7Y29uc3QgUERGV29ya2VyVXRpbD17aXNXb3JrZXJEaXNhYmxlZDohMSxmYWxsYmFja1dvcmtlclNyYzpudWxsLGZha2VXb3JrZXJJZDowfTtleHBvcnRzLlBERldvcmtlclV0aWw9UERGV29ya2VyVXRpbDtpZihfdXRpbC5pc05vZGVKUyYmImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUpe1BERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZD0hMDtQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjPSIuL3BkZi53b3JrZXIuanMifWVsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCl7Y29uc3QgdD1kb2N1bWVudD8uY3VycmVudFNjcmlwdD8uc3JjO3QmJihQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjPXQucmVwbGFjZSgvKFwuKD86bWluXC4pP2pzKShcPy4qKT8kL2ksIi53b3JrZXIkMSQyIikpfVBERldvcmtlclV0aWwuaXNTYW1lT3JpZ2luPWZ1bmN0aW9uKHQsZSl7bGV0IG47dHJ5e249bmV3IFVSTCh0KTtpZighbi5vcmlnaW58fCJudWxsIj09PW4ub3JpZ2luKXJldHVybiExfWNhdGNoe3JldHVybiExfWNvbnN0IGk9bmV3IFVSTChlLG4pO3JldHVybiBuLm9yaWdpbj09PWkub3JpZ2lufTtQREZXb3JrZXJVdGlsLmNyZWF0ZUNETldyYXBwZXI9ZnVuY3Rpb24odCl7Y29uc3QgZT1gaW1wb3J0U2NyaXB0cygiJHt0fSIpO2A7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2VdKSl9O2NsYXNzIFBERldvcmtlcntzdGF0aWMjbD1uZXcgV2Vha01hcDtjb25zdHJ1Y3Rvcigpe2xldHtuYW1lOnQ9bnVsbCxwb3J0OmU9bnVsbCx2ZXJib3NpdHk6bj0oMCxfdXRpbC5nZXRWZXJib3NpdHlMZXZlbCkoKX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2lmKGUmJlBERldvcmtlci4jbC5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgUERGV29ya2VyIHBlciBwb3J0LiIpO3RoaXMubmFtZT10O3RoaXMuZGVzdHJveWVkPSExO3RoaXMudmVyYm9zaXR5PW47dGhpcy5fcmVhZHlDYXBhYmlsaXR5PW5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLl9wb3J0PW51bGw7dGhpcy5fd2ViV29ya2VyPW51bGw7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bnVsbDtpZihlKXtQREZXb3JrZXIuI2wuc2V0KGUsdGhpcyk7dGhpcy5faW5pdGlhbGl6ZUZyb21Qb3J0KGUpfWVsc2UgdGhpcy5faW5pdGlhbGl6ZSgpfWdldCBwcm9taXNlKCl7cmV0dXJuIHRoaXMuX3JlYWR5Q2FwYWJpbGl0eS5wcm9taXNlfWdldCBwb3J0KCl7cmV0dXJuIHRoaXMuX3BvcnR9Z2V0IG1lc3NhZ2VIYW5kbGVyKCl7cmV0dXJuIHRoaXMuX21lc3NhZ2VIYW5kbGVyfV9pbml0aWFsaXplRnJvbVBvcnQodCl7dGhpcy5fcG9ydD10O3RoaXMuX21lc3NhZ2VIYW5kbGVyPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKCJtYWluIiwid29ya2VyIix0KTt0aGlzLl9tZXNzYWdlSGFuZGxlci5vbigicmVhZHkiLChmdW5jdGlvbigpe30pKTt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX21lc3NhZ2VIYW5kbGVyLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfV9pbml0aWFsaXplKCl7aWYoIVBERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZCYmIVBERldvcmtlci5fbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyKXtsZXR7d29ya2VyU3JjOnR9PVBERldvcmtlcjt0cnl7UERGV29ya2VyVXRpbC5pc1NhbWVPcmlnaW4od2luZG93LmxvY2F0aW9uLmhyZWYsdCl8fCh0PVBERldvcmtlclV0aWwuY3JlYXRlQ0ROV3JhcHBlcihuZXcgVVJMKHQsd2luZG93LmxvY2F0aW9uKS5ocmVmKSk7Y29uc3QgZT1uZXcgV29ya2VyKHQpLG49bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIoIm1haW4iLCJ3b3JrZXIiLGUpLHRlcm1pbmF0ZUVhcmx5PSgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7bi5kZXN0cm95KCk7ZS50ZXJtaW5hdGUoKTt0aGlzLmRlc3Ryb3llZD90aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQiKSk6dGhpcy5fc2V0dXBGYWtlV29ya2VyKCl9LG9uV29ya2VyRXJyb3I9KCk9Pnt0aGlzLl93ZWJXb3JrZXJ8fHRlcm1pbmF0ZUVhcmx5KCl9O2UuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG9uV29ya2VyRXJyb3IpO24ub24oInRlc3QiLCh0PT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7aWYodGhpcy5kZXN0cm95ZWQpdGVybWluYXRlRWFybHkoKTtlbHNlIGlmKHQpe3RoaXMuX21lc3NhZ2VIYW5kbGVyPW47dGhpcy5fcG9ydD1lO3RoaXMuX3dlYldvcmtlcj1lO3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7bi5zZW5kKCJjb25maWd1cmUiLHt2ZXJib3NpdHk6dGhpcy52ZXJib3NpdHl9KX1lbHNle3RoaXMuX3NldHVwRmFrZVdvcmtlcigpO24uZGVzdHJveSgpO2UudGVybWluYXRlKCl9fSkpO24ub24oInJlYWR5IiwodD0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLG9uV29ya2VyRXJyb3IpO2lmKHRoaXMuZGVzdHJveWVkKXRlcm1pbmF0ZUVhcmx5KCk7ZWxzZSB0cnl7c2VuZFRlc3QoKX1jYXRjaHt0aGlzLl9zZXR1cEZha2VXb3JrZXIoKX19KSk7Y29uc3Qgc2VuZFRlc3Q9KCk9Pntjb25zdCB0PW5ldyBVaW50OEFycmF5O24uc2VuZCgidGVzdCIsdCxbdC5idWZmZXJdKX07c2VuZFRlc3QoKTtyZXR1cm59Y2F0Y2h7KDAsX3V0aWwuaW5mbykoIlRoZSB3b3JrZXIgaGFzIGJlZW4gZGlzYWJsZWQuIil9fXRoaXMuX3NldHVwRmFrZVdvcmtlcigpfV9zZXR1cEZha2VXb3JrZXIoKXtpZighUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkKXsoMCxfdXRpbC53YXJuKSgiU2V0dGluZyB1cCBmYWtlIHdvcmtlci4iKTtQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQ9ITB9UERGV29ya2VyLl9zZXR1cEZha2VXb3JrZXJHbG9iYWwudGhlbigodD0+e2lmKHRoaXMuZGVzdHJveWVkKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQiKSk7cmV0dXJufWNvbnN0IGU9bmV3IExvb3BiYWNrUG9ydDt0aGlzLl9wb3J0PWU7Y29uc3Qgbj0iZmFrZSIrUERGV29ya2VyVXRpbC5mYWtlV29ya2VySWQrKyxpPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKG4rIl93b3JrZXIiLG4sZSk7dC5zZXR1cChpLGUpO2NvbnN0IHI9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIobixuKyJfd29ya2VyIixlKTt0aGlzLl9tZXNzYWdlSGFuZGxlcj1yO3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7ci5zZW5kKCJjb25maWd1cmUiLHt2ZXJib3NpdHk6dGhpcy52ZXJib3NpdHl9KX0pKS5jYXRjaCgodD0+e3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKGBTZXR0aW5nIHVwIGZha2Ugd29ya2VyIGZhaWxlZDogIiR7dC5tZXNzYWdlfSIuYCkpfSkpfWRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMDtpZih0aGlzLl93ZWJXb3JrZXIpe3RoaXMuX3dlYldvcmtlci50ZXJtaW5hdGUoKTt0aGlzLl93ZWJXb3JrZXI9bnVsbH1QREZXb3JrZXIuI2wuZGVsZXRlKHRoaXMuX3BvcnQpO3RoaXMuX3BvcnQ9bnVsbDtpZih0aGlzLl9tZXNzYWdlSGFuZGxlcil7dGhpcy5fbWVzc2FnZUhhbmRsZXIuZGVzdHJveSgpO3RoaXMuX21lc3NhZ2VIYW5kbGVyPW51bGx9fXN0YXRpYyBmcm9tUG9ydCh0KXtpZighdD8ucG9ydCl0aHJvdyBuZXcgRXJyb3IoIlBERldvcmtlci5mcm9tUG9ydCAtIGludmFsaWQgbWV0aG9kIHNpZ25hdHVyZS4iKTtyZXR1cm4gdGhpcy4jbC5oYXModC5wb3J0KT90aGlzLiNsLmdldCh0LnBvcnQpOm5ldyBQREZXb3JrZXIodCl9c3RhdGljIGdldCB3b3JrZXJTcmMoKXtpZihfd29ya2VyX29wdGlvbnMuR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJTcmMpcmV0dXJuIF93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYztpZihudWxsIT09UERGV29ya2VyVXRpbC5mYWxsYmFja1dvcmtlclNyYyl7X3V0aWwuaXNOb2RlSlN8fCgwLF9kaXNwbGF5X3V0aWxzLmRlcHJlY2F0ZWQpKCdObyAiR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJTcmMiIHNwZWNpZmllZC4nKTtyZXR1cm4gUERGV29ya2VyVXRpbC5mYWxsYmFja1dvcmtlclNyY310aHJvdyBuZXcgRXJyb3IoJ05vICJHbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyIgc3BlY2lmaWVkLicpfXN0YXRpYyBnZXQgX21haW5UaHJlYWRXb3JrZXJNZXNzYWdlSGFuZGxlcigpe3RyeXtyZXR1cm4gZ2xvYmFsVGhpcy5wZGZqc1dvcmtlcj8uV29ya2VyTWVzc2FnZUhhbmRsZXJ8fG51bGx9Y2F0Y2h7cmV0dXJuIG51bGx9fXN0YXRpYyBnZXQgX3NldHVwRmFrZVdvcmtlckdsb2JhbCgpe2NvbnN0IGxvYWRlcj1hc3luYygpPT57Y29uc3QgbWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyPXRoaXMuX21haW5UaHJlYWRXb3JrZXJNZXNzYWdlSGFuZGxlcjtpZihtYWluV29ya2VyTWVzc2FnZUhhbmRsZXIpcmV0dXJuIG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcjtpZihfdXRpbC5pc05vZGVKUyYmImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUpe2NvbnN0IHdvcmtlcj1ldmFsKCJyZXF1aXJlIikodGhpcy53b3JrZXJTcmMpO3JldHVybiB3b3JrZXIuV29ya2VyTWVzc2FnZUhhbmRsZXJ9YXdhaXQoMCxfZGlzcGxheV91dGlscy5sb2FkU2NyaXB0KSh0aGlzLndvcmtlclNyYyk7cmV0dXJuIHdpbmRvdy5wZGZqc1dvcmtlci5Xb3JrZXJNZXNzYWdlSGFuZGxlcn07cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJfc2V0dXBGYWtlV29ya2VyR2xvYmFsIixsb2FkZXIoKSl9fWV4cG9ydHMuUERGV29ya2VyPVBERldvcmtlcjtjbGFzcyBXb3JrZXJUcmFuc3BvcnR7I2M9bmV3IE1hcDsjaD1uZXcgTWFwOyNkPW5ldyBNYXA7I3U9bnVsbDtjb25zdHJ1Y3Rvcih0LGUsbixpLHIpe3RoaXMubWVzc2FnZUhhbmRsZXI9dDt0aGlzLmxvYWRpbmdUYXNrPWU7dGhpcy5jb21tb25PYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuZm9udExvYWRlcj1uZXcgX2ZvbnRfbG9hZGVyLkZvbnRMb2FkZXIoe293bmVyRG9jdW1lbnQ6aS5vd25lckRvY3VtZW50LHN0eWxlRWxlbWVudDppLnN0eWxlRWxlbWVudH0pO3RoaXMuX3BhcmFtcz1pO3RoaXMuY2FudmFzRmFjdG9yeT1yLmNhbnZhc0ZhY3Rvcnk7dGhpcy5maWx0ZXJGYWN0b3J5PXIuZmlsdGVyRmFjdG9yeTt0aGlzLmNNYXBSZWFkZXJGYWN0b3J5PXIuY01hcFJlYWRlckZhY3Rvcnk7dGhpcy5zdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1yLnN0YW5kYXJkRm9udERhdGFGYWN0b3J5O3RoaXMuZGVzdHJveWVkPSExO3RoaXMuZGVzdHJveUNhcGFiaWxpdHk9bnVsbDt0aGlzLl9uZXR3b3JrU3RyZWFtPW47dGhpcy5fZnVsbFJlYWRlcj1udWxsO3RoaXMuX2xhc3RQcm9ncmVzcz1udWxsO3RoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eT1uZXcgX3V0aWwuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5zZXR1cE1lc3NhZ2VIYW5kbGVyKCl9I3AodCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7Y29uc3Qgbj10aGlzLiNjLmdldCh0KTtpZihuKXJldHVybiBuO2NvbnN0IGk9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UodCxlKTt0aGlzLiNjLnNldCh0LGkpO3JldHVybiBpfWdldCBhbm5vdGF0aW9uU3RvcmFnZSgpe3JldHVybigwLF91dGlsLnNoYWRvdykodGhpcywiYW5ub3RhdGlvblN0b3JhZ2UiLG5ldyBfYW5ub3RhdGlvbl9zdG9yYWdlLkFubm90YXRpb25TdG9yYWdlKX1nZXRSZW5kZXJpbmdJbnRlbnQodCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOl91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRSxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGk9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXSxyPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSxzPV9hbm5vdGF0aW9uX3N0b3JhZ2UuU2VyaWFsaXphYmxlRW1wdHk7c3dpdGNoKHQpe2Nhc2UiYW55IjpyPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZO2JyZWFrO2Nhc2UiZGlzcGxheSI6YnJlYWs7Y2FzZSJwcmludCI6cj1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwud2FybikoYGdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgaW50ZW50OiAke3R9YCl9c3dpdGNoKGUpe2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRElTQUJMRTpyKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEU7YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEU6YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVM6cis9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUzticmVhaztjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFOnIrPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfU1RPUkFHRTtzPShyJl91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQmJm4gaW5zdGFuY2VvZiBfYW5ub3RhdGlvbl9zdG9yYWdlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U/bjp0aGlzLmFubm90YXRpb25TdG9yYWdlKS5zZXJpYWxpemFibGU7YnJlYWs7ZGVmYXVsdDooMCxfdXRpbC53YXJuKShgZ2V0UmVuZGVyaW5nSW50ZW50IC0gaW52YWxpZCBhbm5vdGF0aW9uTW9kZTogJHtlfWApfWkmJihyKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLk9QTElTVCk7cmV0dXJue3JlbmRlcmluZ0ludGVudDpyLGNhY2hlS2V5OmAke3J9XyR7cy5oYXNofWAsYW5ub3RhdGlvblN0b3JhZ2VTZXJpYWxpemFibGU6c319ZGVzdHJveSgpe2lmKHRoaXMuZGVzdHJveUNhcGFiaWxpdHkpcmV0dXJuIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucHJvbWlzZTt0aGlzLmRlc3Ryb3llZD0hMDt0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5PW5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLiN1Py5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCBkdXJpbmcgb25QYXNzd29yZCBjYWxsYmFjayIpKTtjb25zdCB0PVtdO2Zvcihjb25zdCBlIG9mIHRoaXMuI2gudmFsdWVzKCkpdC5wdXNoKGUuX2Rlc3Ryb3koKSk7dGhpcy4jaC5jbGVhcigpO3RoaXMuI2QuY2xlYXIoKTt0aGlzLmhhc093blByb3BlcnR5KCJhbm5vdGF0aW9uU3RvcmFnZSIpJiZ0aGlzLmFubm90YXRpb25TdG9yYWdlLnJlc2V0TW9kaWZpZWQoKTtjb25zdCBlPXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJUZXJtaW5hdGUiLG51bGwpO3QucHVzaChlKTtQcm9taXNlLmFsbCh0KS50aGVuKCgoKT0+e3RoaXMuY29tbW9uT2Jqcy5jbGVhcigpO3RoaXMuZm9udExvYWRlci5jbGVhcigpO3RoaXMuI2MuY2xlYXIoKTt0aGlzLmZpbHRlckZhY3RvcnkuZGVzdHJveSgpO3RoaXMuX25ldHdvcmtTdHJlYW0mJnRoaXMuX25ldHdvcmtTdHJlYW0uY2FuY2VsQWxsUmVxdWVzdHMobmV3IF91dGlsLkFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2lmKHRoaXMubWVzc2FnZUhhbmRsZXIpe3RoaXMubWVzc2FnZUhhbmRsZXIuZGVzdHJveSgpO3RoaXMubWVzc2FnZUhhbmRsZXI9bnVsbH10aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnJlc29sdmUoKX0pLHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVqZWN0KTtyZXR1cm4gdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5wcm9taXNlfXNldHVwTWVzc2FnZUhhbmRsZXIoKXtjb25zdHttZXNzYWdlSGFuZGxlcjp0LGxvYWRpbmdUYXNrOmV9PXRoaXM7dC5vbigiR2V0UmVhZGVyIiwoKHQsZSk9PnsoMCxfdXRpbC5hc3NlcnQpKHRoaXMuX25ldHdvcmtTdHJlYW0sIkdldFJlYWRlciAtIG5vIGBJUERGU3RyZWFtYCBpbnN0YW5jZSBhdmFpbGFibGUuIik7dGhpcy5fZnVsbFJlYWRlcj10aGlzLl9uZXR3b3JrU3RyZWFtLmdldEZ1bGxSZWFkZXIoKTt0aGlzLl9mdWxsUmVhZGVyLm9uUHJvZ3Jlc3M9dD0+e3RoaXMuX2xhc3RQcm9ncmVzcz17bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQudG90YWx9fTtlLm9uUHVsbD0oKT0+e3RoaXMuX2Z1bGxSZWFkZXIucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKHQpe2xldHt2YWx1ZTpuLGRvbmU6aX09dDtpZihpKWUuY2xvc2UoKTtlbHNleygwLF91dGlsLmFzc2VydCkobiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCJHZXRSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci4iKTtlLmVucXVldWUobmV3IFVpbnQ4QXJyYXkobiksMSxbbl0pfX0pKS5jYXRjaCgodD0+e2UuZXJyb3IodCl9KSl9O2Uub25DYW5jZWw9dD0+e3RoaXMuX2Z1bGxSZWFkZXIuY2FuY2VsKHQpO2UucmVhZHkuY2F0Y2goKHQ9PntpZighdGhpcy5kZXN0cm95ZWQpdGhyb3cgdH0pKX19KSk7dC5vbigiUmVhZGVySGVhZGVyc1JlYWR5IiwodD0+e2NvbnN0IG49bmV3IF91dGlsLlByb21pc2VDYXBhYmlsaXR5LGk9dGhpcy5fZnVsbFJlYWRlcjtpLmhlYWRlcnNSZWFkeS50aGVuKCgoKT0+e2lmKCFpLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwhaS5pc1JhbmdlU3VwcG9ydGVkKXt0aGlzLl9sYXN0UHJvZ3Jlc3MmJmUub25Qcm9ncmVzcz8uKHRoaXMuX2xhc3RQcm9ncmVzcyk7aS5vblByb2dyZXNzPXQ9PntlLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQudG90YWx9KX19bi5yZXNvbHZlKHtpc1N0cmVhbWluZ1N1cHBvcnRlZDppLmlzU3RyZWFtaW5nU3VwcG9ydGVkLGlzUmFuZ2VTdXBwb3J0ZWQ6aS5pc1JhbmdlU3VwcG9ydGVkLGNvbnRlbnRMZW5ndGg6aS5jb250ZW50TGVuZ3RofSl9KSxuLnJlamVjdCk7cmV0dXJuIG4ucHJvbWlzZX0pKTt0Lm9uKCJHZXRSYW5nZVJlYWRlciIsKCh0LGUpPT57KDAsX3V0aWwuYXNzZXJ0KSh0aGlzLl9uZXR3b3JrU3RyZWFtLCJHZXRSYW5nZVJlYWRlciAtIG5vIGBJUERGU3RyZWFtYCBpbnN0YW5jZSBhdmFpbGFibGUuIik7Y29uc3Qgbj10aGlzLl9uZXR3b3JrU3RyZWFtLmdldFJhbmdlUmVhZGVyKHQuYmVnaW4sdC5lbmQpO2lmKG4pe2Uub25QdWxsPSgpPT57bi5yZWFkKCkudGhlbigoZnVuY3Rpb24odCl7bGV0e3ZhbHVlOm4sZG9uZTppfT10O2lmKGkpZS5jbG9zZSgpO2Vsc2V7KDAsX3V0aWwuYXNzZXJ0KShuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIsIkdldFJhbmdlUmVhZGVyIC0gZXhwZWN0ZWQgYW4gQXJyYXlCdWZmZXIuIik7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KG4pLDEsW25dKX19KSkuY2F0Y2goKHQ9PntlLmVycm9yKHQpfSkpfTtlLm9uQ2FuY2VsPXQ9PntuLmNhbmNlbCh0KTtlLnJlYWR5LmNhdGNoKCh0PT57aWYoIXRoaXMuZGVzdHJveWVkKXRocm93IHR9KSl9fWVsc2UgZS5jbG9zZSgpfSkpO3Qub24oIkdldERvYyIsKHQ9PntsZXR7cGRmSW5mbzpufT10O3RoaXMuX251bVBhZ2VzPW4ubnVtUGFnZXM7dGhpcy5faHRtbEZvclhmYT1uLmh0bWxGb3JYZmE7ZGVsZXRlIG4uaHRtbEZvclhmYTtlLl9jYXBhYmlsaXR5LnJlc29sdmUobmV3IFBERkRvY3VtZW50UHJveHkobix0aGlzKSl9KSk7dC5vbigiRG9jRXhjZXB0aW9uIiwoZnVuY3Rpb24odCl7bGV0IG47c3dpdGNoKHQubmFtZSl7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6bj1uZXcgX3V0aWwuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSk7YnJlYWs7Y2FzZSJJbnZhbGlkUERGRXhjZXB0aW9uIjpuPW5ldyBfdXRpbC5JbnZhbGlkUERGRXhjZXB0aW9uKHQubWVzc2FnZSk7YnJlYWs7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpuPW5ldyBfdXRpbC5NaXNzaW5nUERGRXhjZXB0aW9uKHQubWVzc2FnZSk7YnJlYWs7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOm49bmV3IF91dGlsLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbih0Lm1lc3NhZ2UsdC5zdGF0dXMpO2JyZWFrO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpuPW5ldyBfdXRpbC5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQuZGV0YWlscyk7YnJlYWs7ZGVmYXVsdDooMCxfdXRpbC51bnJlYWNoYWJsZSkoIkRvY0V4Y2VwdGlvbiAtIGV4cGVjdGVkIGEgdmFsaWQgRXJyb3IuIil9ZS5fY2FwYWJpbGl0eS5yZWplY3Qobil9KSk7dC5vbigiUGFzc3dvcmRSZXF1ZXN0IiwodD0+e3RoaXMuI3U9bmV3IF91dGlsLlByb21pc2VDYXBhYmlsaXR5O2lmKGUub25QYXNzd29yZCl7Y29uc3QgdXBkYXRlUGFzc3dvcmQ9dD0+e3QgaW5zdGFuY2VvZiBFcnJvcj90aGlzLiN1LnJlamVjdCh0KTp0aGlzLiN1LnJlc29sdmUoe3Bhc3N3b3JkOnR9KX07dHJ5e2Uub25QYXNzd29yZCh1cGRhdGVQYXNzd29yZCx0LmNvZGUpfWNhdGNoKHQpe3RoaXMuI3UucmVqZWN0KHQpfX1lbHNlIHRoaXMuI3UucmVqZWN0KG5ldyBfdXRpbC5QYXNzd29yZEV4Y2VwdGlvbih0Lm1lc3NhZ2UsdC5jb2RlKSk7cmV0dXJuIHRoaXMuI3UucHJvbWlzZX0pKTt0Lm9uKCJEYXRhTG9hZGVkIiwodD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sZW5ndGgsdG90YWw6dC5sZW5ndGh9KTt0aGlzLmRvd25sb2FkSW5mb0NhcGFiaWxpdHkucmVzb2x2ZSh0KX0pKTt0Lm9uKCJTdGFydFJlbmRlclBhZ2UiLCh0PT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO3RoaXMuI2guZ2V0KHQucGFnZUluZGV4KS5fc3RhcnRSZW5kZXJQYWdlKHQudHJhbnNwYXJlbmN5LHQuY2FjaGVLZXkpfSkpO3Qub24oImNvbW1vbm9iaiIsKGU9PntsZXRbbixpLHJdPWU7aWYoIXRoaXMuZGVzdHJveWVkJiYhdGhpcy5jb21tb25PYmpzLmhhcyhuKSlzd2l0Y2goaSl7Y2FzZSJGb250Ijpjb25zdCBlPXRoaXMuX3BhcmFtcztpZigiZXJyb3IiaW4gcil7Y29uc3QgdD1yLmVycm9yOygwLF91dGlsLndhcm4pKGBFcnJvciBkdXJpbmcgZm9udCBsb2FkaW5nOiAke3R9YCk7dGhpcy5jb21tb25PYmpzLnJlc29sdmUobix0KTticmVha31jb25zdCBzPWUucGRmQnVnJiZnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3I/LmVuYWJsZWQ/KHQsZSk9Pmdsb2JhbFRoaXMuRm9udEluc3BlY3Rvci5mb250QWRkZWQodCxlKTpudWxsLGE9bmV3IF9mb250X2xvYWRlci5Gb250RmFjZU9iamVjdChyLHtpc0V2YWxTdXBwb3J0ZWQ6ZS5pc0V2YWxTdXBwb3J0ZWQsZGlzYWJsZUZvbnRGYWNlOmUuZGlzYWJsZUZvbnRGYWNlLGlnbm9yZUVycm9yczplLmlnbm9yZUVycm9ycyxpbnNwZWN0Rm9udDpzfSk7dGhpcy5mb250TG9hZGVyLmJpbmQoYSkuY2F0Y2goKGU9PnQuc2VuZFdpdGhQcm9taXNlKCJGb250RmFsbGJhY2siLHtpZDpufSkpKS5maW5hbGx5KCgoKT0+eyFlLmZvbnRFeHRyYVByb3BlcnRpZXMmJmEuZGF0YSYmKGEuZGF0YT1udWxsKTt0aGlzLmNvbW1vbk9ianMucmVzb2x2ZShuLGEpfSkpO2JyZWFrO2Nhc2UiRm9udFBhdGgiOmNhc2UiSW1hZ2UiOmNhc2UiUGF0dGVybiI6dGhpcy5jb21tb25PYmpzLnJlc29sdmUobixyKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgR290IHVua25vd24gY29tbW9uIG9iamVjdCB0eXBlICR7aX1gKX19KSk7dC5vbigib2JqIiwodD0+e2xldFtlLG4saSxyXT10O2lmKHRoaXMuZGVzdHJveWVkKXJldHVybjtjb25zdCBzPXRoaXMuI2guZ2V0KG4pO2lmKCFzLm9ianMuaGFzKGUpKXN3aXRjaChpKXtjYXNlIkltYWdlIjpzLm9ianMucmVzb2x2ZShlLHIpO2lmKHIpe2xldCB0O2lmKHIuYml0bWFwKXtjb25zdHt3aWR0aDplLGhlaWdodDpufT1yO3Q9ZSpuKjR9ZWxzZSB0PXIuZGF0YT8ubGVuZ3RofHwwO3Q+X3V0aWwuTUFYX0lNQUdFX1NJWkVfVE9fQ0FDSEUmJihzLl9tYXliZUNsZWFudXBBZnRlclJlbmRlcj0hMCl9YnJlYWs7Y2FzZSJQYXR0ZXJuIjpzLm9ianMucmVzb2x2ZShlLHIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBHb3QgdW5rbm93biBvYmplY3QgdHlwZSAke2l9YCl9fSkpO3Qub24oIkRvY1Byb2dyZXNzIiwodD0+e3RoaXMuZGVzdHJveWVkfHxlLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQudG90YWx9KX0pKTt0Lm9uKCJGZXRjaEJ1aWx0SW5DTWFwIiwodD0+dGhpcy5kZXN0cm95ZWQ/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZC4iKSk6dGhpcy5jTWFwUmVhZGVyRmFjdG9yeT90aGlzLmNNYXBSZWFkZXJGYWN0b3J5LmZldGNoKHQpOlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiQ01hcFJlYWRlckZhY3Rvcnkgbm90IGluaXRpYWxpemVkLCBzZWUgdGhlIGB1c2VXb3JrZXJGZXRjaGAgcGFyYW1ldGVyLiIpKSkpO3Qub24oIkZldGNoU3RhbmRhcmRGb250RGF0YSIsKHQ9PnRoaXMuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnRoaXMuc3RhbmRhcmRGb250RGF0YUZhY3Rvcnk/dGhpcy5zdGFuZGFyZEZvbnREYXRhRmFjdG9yeS5mZXRjaCh0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlN0YW5kYXJkRm9udERhdGFGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSkpKX1nZXREYXRhKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREYXRhIixudWxsKX1zYXZlRG9jdW1lbnQoKXt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNpemU8PTAmJigwLF91dGlsLndhcm4pKCJzYXZlRG9jdW1lbnQgY2FsbGVkIHdoaWxlIGBhbm5vdGF0aW9uU3RvcmFnZWAgaXMgZW1wdHksIHBsZWFzZSB1c2UgdGhlIGdldERhdGEtbWV0aG9kIGluc3RlYWQuIik7Y29uc3R7bWFwOnQsdHJhbnNmZXJzOmV9PXRoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2VyaWFsaXphYmxlO3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiU2F2ZURvY3VtZW50Iix7aXNQdXJlWGZhOiEhdGhpcy5faHRtbEZvclhmYSxudW1QYWdlczp0aGlzLl9udW1QYWdlcyxhbm5vdGF0aW9uU3RvcmFnZTp0LGZpbGVuYW1lOnRoaXMuX2Z1bGxSZWFkZXI/LmZpbGVuYW1lPz9udWxsfSxlKS5maW5hbGx5KCgoKT0+e3RoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpfSkpfWdldFBhZ2UodCl7aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8PTB8fHQ+dGhpcy5fbnVtUGFnZXMpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiSW52YWxpZCBwYWdlIHJlcXVlc3QuIikpO2NvbnN0IGU9dC0xLG49dGhpcy4jZC5nZXQoZSk7aWYobilyZXR1cm4gbjtjb25zdCBpPXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlIix7cGFnZUluZGV4OmV9KS50aGVuKCh0PT57aWYodGhpcy5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUcmFuc3BvcnQgZGVzdHJveWVkIik7Y29uc3Qgbj1uZXcgUERGUGFnZVByb3h5KGUsdCx0aGlzLHRoaXMuX3BhcmFtcy5wZGZCdWcpO3RoaXMuI2guc2V0KGUsbik7cmV0dXJuIG59KSk7dGhpcy4jZC5zZXQoZSxpKTtyZXR1cm4gaX1nZXRQYWdlSW5kZXgodCl7cmV0dXJuIm9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dHx8IU51bWJlci5pc0ludGVnZXIodC5udW0pfHx0Lm51bTwwfHwhTnVtYmVyLmlzSW50ZWdlcih0Lmdlbil8fHQuZ2VuPDA/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJbnZhbGlkIHBhZ2VJbmRleCByZXF1ZXN0LiIpKTp0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUluZGV4Iix7bnVtOnQubnVtLGdlbjp0Lmdlbn0pfWdldEFubm90YXRpb25zKHQsZSl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRBbm5vdGF0aW9ucyIse3BhZ2VJbmRleDp0LGludGVudDplfSl9Z2V0RmllbGRPYmplY3RzKCl7cmV0dXJuIHRoaXMuI3AoIkdldEZpZWxkT2JqZWN0cyIpfWhhc0pTQWN0aW9ucygpe3JldHVybiB0aGlzLiNwKCJIYXNKU0FjdGlvbnMiKX1nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKX1nZXREZXN0aW5hdGlvbnMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldERlc3RpbmF0aW9ucyIsbnVsbCl9Z2V0RGVzdGluYXRpb24odCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0P1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiSW52YWxpZCBkZXN0aW5hdGlvbiByZXF1ZXN0LiIpKTp0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGVzdGluYXRpb24iLHtpZDp0fSl9Z2V0UGFnZUxhYmVscygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUxhYmVscyIsbnVsbCl9Z2V0UGFnZUxheW91dCgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUxheW91dCIsbnVsbCl9Z2V0UGFnZU1vZGUoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VNb2RlIixudWxsKX1nZXRWaWV3ZXJQcmVmZXJlbmNlcygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLG51bGwpfWdldE9wZW5BY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE9wZW5BY3Rpb24iLG51bGwpfWdldEF0dGFjaG1lbnRzKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRBdHRhY2htZW50cyIsbnVsbCl9Z2V0SmF2YVNjcmlwdCgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0SmF2YVNjcmlwdCIsbnVsbCl9Z2V0RG9jSlNBY3Rpb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREb2NKU0FjdGlvbnMiLG51bGwpfWdldFBhZ2VKU0FjdGlvbnModCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlSlNBY3Rpb25zIix7cGFnZUluZGV4OnR9KX1nZXRTdHJ1Y3RUcmVlKHQpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0U3RydWN0VHJlZSIse3BhZ2VJbmRleDp0fSl9Z2V0T3V0bGluZSgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0T3V0bGluZSIsbnVsbCl9Z2V0T3B0aW9uYWxDb250ZW50Q29uZmlnKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRPcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpLnRoZW4oKHQ9Pm5ldyBfb3B0aW9uYWxfY29udGVudF9jb25maWcuT3B0aW9uYWxDb250ZW50Q29uZmlnKHQpKSl9Z2V0UGVybWlzc2lvbnMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBlcm1pc3Npb25zIixudWxsKX1nZXRNZXRhZGF0YSgpe2NvbnN0IHQ9IkdldE1ldGFkYXRhIixlPXRoaXMuI2MuZ2V0KHQpO2lmKGUpcmV0dXJuIGU7Y29uc3Qgbj10aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSh0LG51bGwpLnRoZW4oKHQ9Pih7aW5mbzp0WzBdLG1ldGFkYXRhOnRbMV0/bmV3IF9tZXRhZGF0YS5NZXRhZGF0YSh0WzFdKTpudWxsLGNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lOnRoaXMuX2Z1bGxSZWFkZXI/LmZpbGVuYW1lPz9udWxsLGNvbnRlbnRMZW5ndGg6dGhpcy5fZnVsbFJlYWRlcj8uY29udGVudExlbmd0aD8/bnVsbH0pKSk7dGhpcy4jYy5zZXQodCxuKTtyZXR1cm4gbn1nZXRNYXJrSW5mbygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0TWFya0luZm8iLG51bGwpfWFzeW5jIHN0YXJ0Q2xlYW51cCgpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYoIXRoaXMuZGVzdHJveWVkKXthd2FpdCB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiQ2xlYW51cCIsbnVsbCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jaC52YWx1ZXMoKSl7aWYoIXQuY2xlYW51cCgpKXRocm93IG5ldyBFcnJvcihgc3RhcnRDbGVhbnVwOiBQYWdlICR7dC5wYWdlTnVtYmVyfSBpcyBjdXJyZW50bHkgcmVuZGVyaW5nLmApfXRoaXMuY29tbW9uT2Jqcy5jbGVhcigpO3R8fHRoaXMuZm9udExvYWRlci5jbGVhcigpO3RoaXMuI2MuY2xlYXIoKTt0aGlzLmZpbHRlckZhY3RvcnkuZGVzdHJveSghMCl9fWdldCBsb2FkaW5nUGFyYW1zKCl7Y29uc3R7ZGlzYWJsZUF1dG9GZXRjaDp0LGVuYWJsZVhmYTplfT10aGlzLl9wYXJhbXM7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJsb2FkaW5nUGFyYW1zIix7ZGlzYWJsZUF1dG9GZXRjaDp0LGVuYWJsZVhmYTplfSl9fWNsYXNzIFBERk9iamVjdHN7I2Y9T2JqZWN0LmNyZWF0ZShudWxsKTsjZyh0KXtjb25zdCBlPXRoaXMuI2ZbdF07cmV0dXJuIGV8fCh0aGlzLiNmW3RdPXtjYXBhYmlsaXR5Om5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eSxkYXRhOm51bGx9KX1nZXQodCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7aWYoZSl7Y29uc3Qgbj10aGlzLiNnKHQpO24uY2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCgpPT5lKG4uZGF0YSkpKTtyZXR1cm4gbnVsbH1jb25zdCBuPXRoaXMuI2ZbdF07aWYoIW4/LmNhcGFiaWxpdHkuc2V0dGxlZCl0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3Rpbmcgb2JqZWN0IHRoYXQgaXNuJ3QgcmVzb2x2ZWQgeWV0ICR7dH0uYCk7cmV0dXJuIG4uZGF0YX1oYXModCl7Y29uc3QgZT10aGlzLiNmW3RdO3JldHVybiBlPy5jYXBhYmlsaXR5LnNldHRsZWR8fCExfXJlc29sdmUodCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7Y29uc3Qgbj10aGlzLiNnKHQpO24uZGF0YT1lO24uY2FwYWJpbGl0eS5yZXNvbHZlKCl9Y2xlYXIoKXtmb3IoY29uc3QgdCBpbiB0aGlzLiNmKXtjb25zdHtkYXRhOmV9PXRoaXMuI2ZbdF07ZT8uYml0bWFwPy5jbG9zZSgpfXRoaXMuI2Y9T2JqZWN0LmNyZWF0ZShudWxsKX19Y2xhc3MgUmVuZGVyVGFza3sjbT1udWxsO2NvbnN0cnVjdG9yKHQpe3RoaXMuI209dDt0aGlzLm9uQ29udGludWU9bnVsbH1nZXQgcHJvbWlzZSgpe3JldHVybiB0aGlzLiNtLmNhcGFiaWxpdHkucHJvbWlzZX1jYW5jZWwoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDt0aGlzLiNtLmNhbmNlbChudWxsLHQpfWdldCBzZXBhcmF0ZUFubm90cygpe2NvbnN0e3NlcGFyYXRlQW5ub3RzOnR9PXRoaXMuI20ub3BlcmF0b3JMaXN0O2lmKCF0KXJldHVybiExO2NvbnN0e2Fubm90YXRpb25DYW52YXNNYXA6ZX09dGhpcy4jbTtyZXR1cm4gdC5mb3JtfHx0LmNhbnZhcyYmZT8uc2l6ZT4wfX1leHBvcnRzLlJlbmRlclRhc2s9UmVuZGVyVGFzaztjbGFzcyBJbnRlcm5hbFJlbmRlclRhc2t7c3RhdGljI2I9bmV3IFdlYWtTZXQ7Y29uc3RydWN0b3IodCl7bGV0e2NhbGxiYWNrOmUscGFyYW1zOm4sb2JqczppLGNvbW1vbk9ianM6cixhbm5vdGF0aW9uQ2FudmFzTWFwOnMsb3BlcmF0b3JMaXN0OmEscGFnZUluZGV4Om8sY2FudmFzRmFjdG9yeTpsLGZpbHRlckZhY3Rvcnk6Yyx1c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6aD0hMSxwZGZCdWc6ZD0hMSxwYWdlQ29sb3JzOnU9bnVsbH09dDt0aGlzLmNhbGxiYWNrPWU7dGhpcy5wYXJhbXM9bjt0aGlzLm9ianM9aTt0aGlzLmNvbW1vbk9ianM9cjt0aGlzLmFubm90YXRpb25DYW52YXNNYXA9czt0aGlzLm9wZXJhdG9yTGlzdElkeD1udWxsO3RoaXMub3BlcmF0b3JMaXN0PWE7dGhpcy5fcGFnZUluZGV4PW87dGhpcy5jYW52YXNGYWN0b3J5PWw7dGhpcy5maWx0ZXJGYWN0b3J5PWM7dGhpcy5fcGRmQnVnPWQ7dGhpcy5wYWdlQ29sb3JzPXU7dGhpcy5ydW5uaW5nPSExO3RoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrPW51bGw7dGhpcy5ncmFwaGljc1JlYWR5PSExO3RoaXMuX3VzZVJlcXVlc3RBbmltYXRpb25GcmFtZT0hMD09PWgmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93O3RoaXMuY2FuY2VsbGVkPSExO3RoaXMuY2FwYWJpbGl0eT1uZXcgX3V0aWwuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy50YXNrPW5ldyBSZW5kZXJUYXNrKHRoaXMpO3RoaXMuX2NhbmNlbEJvdW5kPXRoaXMuY2FuY2VsLmJpbmQodGhpcyk7dGhpcy5fY29udGludWVCb3VuZD10aGlzLl9jb250aW51ZS5iaW5kKHRoaXMpO3RoaXMuX3NjaGVkdWxlTmV4dEJvdW5kPXRoaXMuX3NjaGVkdWxlTmV4dC5iaW5kKHRoaXMpO3RoaXMuX25leHRCb3VuZD10aGlzLl9uZXh0LmJpbmQodGhpcyk7dGhpcy5fY2FudmFzPW4uY2FudmFzQ29udGV4dC5jYW52YXN9Z2V0IGNvbXBsZXRlZCgpe3JldHVybiB0aGlzLmNhcGFiaWxpdHkucHJvbWlzZS5jYXRjaCgoZnVuY3Rpb24oKXt9KSl9aW5pdGlhbGl6ZUdyYXBoaWNzKHQpe2xldHt0cmFuc3BhcmVuY3k6ZT0hMSxvcHRpb25hbENvbnRlbnRDb25maWc6bn09dDtpZih0aGlzLmNhbmNlbGxlZClyZXR1cm47aWYodGhpcy5fY2FudmFzKXtpZihJbnRlcm5hbFJlbmRlclRhc2suI2IuaGFzKHRoaXMuX2NhbnZhcykpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIHRoZSBzYW1lIGNhbnZhcyBkdXJpbmcgbXVsdGlwbGUgcmVuZGVyKCkgb3BlcmF0aW9ucy4gVXNlIGRpZmZlcmVudCBjYW52YXMgb3IgZW5zdXJlIHByZXZpb3VzIG9wZXJhdGlvbnMgd2VyZSBjYW5jZWxsZWQgb3IgY29tcGxldGVkLiIpO0ludGVybmFsUmVuZGVyVGFzay4jYi5hZGQodGhpcy5fY2FudmFzKX1pZih0aGlzLl9wZGZCdWcmJmdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXI/LmVuYWJsZWQpe3RoaXMuc3RlcHBlcj1nbG9iYWxUaGlzLlN0ZXBwZXJNYW5hZ2VyLmNyZWF0ZSh0aGlzLl9wYWdlSW5kZXgpO3RoaXMuc3RlcHBlci5pbml0KHRoaXMub3BlcmF0b3JMaXN0KTt0aGlzLnN0ZXBwZXIubmV4dEJyZWFrUG9pbnQ9dGhpcy5zdGVwcGVyLmdldE5leHRCcmVha1BvaW50KCl9Y29uc3R7Y2FudmFzQ29udGV4dDppLHZpZXdwb3J0OnIsdHJhbnNmb3JtOnMsYmFja2dyb3VuZDphfT10aGlzLnBhcmFtczt0aGlzLmdmeD1uZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhpLHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LHRoaXMuZmlsdGVyRmFjdG9yeSx7b3B0aW9uYWxDb250ZW50Q29uZmlnOm59LHRoaXMuYW5ub3RhdGlvbkNhbnZhc01hcCx0aGlzLnBhZ2VDb2xvcnMpO3RoaXMuZ2Z4LmJlZ2luRHJhd2luZyh7dHJhbnNmb3JtOnMsdmlld3BvcnQ6cix0cmFuc3BhcmVuY3k6ZSxiYWNrZ3JvdW5kOmF9KTt0aGlzLm9wZXJhdG9yTGlzdElkeD0wO3RoaXMuZ3JhcGhpY3NSZWFkeT0hMDt0aGlzLmdyYXBoaWNzUmVhZHlDYWxsYmFjaz8uKCl9Y2FuY2VsKCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5jYW5jZWxsZWQ9ITA7dGhpcy5nZng/LmVuZERyYXdpbmcoKTt0aGlzLl9jYW52YXMmJkludGVybmFsUmVuZGVyVGFzay4jYi5kZWxldGUodGhpcy5fY2FudmFzKTt0aGlzLmNhbGxiYWNrKHR8fG5ldyBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24oYFJlbmRlcmluZyBjYW5jZWxsZWQsIHBhZ2UgJHt0aGlzLl9wYWdlSW5kZXgrMX1gLGUpKX1vcGVyYXRvckxpc3RDaGFuZ2VkKCl7aWYodGhpcy5ncmFwaGljc1JlYWR5KXt0aGlzLnN0ZXBwZXI/LnVwZGF0ZU9wZXJhdG9yTGlzdCh0aGlzLm9wZXJhdG9yTGlzdCk7dGhpcy5ydW5uaW5nfHx0aGlzLl9jb250aW51ZSgpfWVsc2UgdGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2t8fD10aGlzLl9jb250aW51ZUJvdW5kfV9jb250aW51ZSgpe3RoaXMucnVubmluZz0hMDt0aGlzLmNhbmNlbGxlZHx8KHRoaXMudGFzay5vbkNvbnRpbnVlP3RoaXMudGFzay5vbkNvbnRpbnVlKHRoaXMuX3NjaGVkdWxlTmV4dEJvdW5kKTp0aGlzLl9zY2hlZHVsZU5leHQoKSl9X3NjaGVkdWxlTmV4dCgpe3RoaXMuX3VzZVJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX25leHRCb3VuZCgpLmNhdGNoKHRoaXMuX2NhbmNlbEJvdW5kKX0pKTpQcm9taXNlLnJlc29sdmUoKS50aGVuKHRoaXMuX25leHRCb3VuZCkuY2F0Y2godGhpcy5fY2FuY2VsQm91bmQpfWFzeW5jIF9uZXh0KCl7aWYoIXRoaXMuY2FuY2VsbGVkKXt0aGlzLm9wZXJhdG9yTGlzdElkeD10aGlzLmdmeC5leGVjdXRlT3BlcmF0b3JMaXN0KHRoaXMub3BlcmF0b3JMaXN0LHRoaXMub3BlcmF0b3JMaXN0SWR4LHRoaXMuX2NvbnRpbnVlQm91bmQsdGhpcy5zdGVwcGVyKTtpZih0aGlzLm9wZXJhdG9yTGlzdElkeD09PXRoaXMub3BlcmF0b3JMaXN0LmFyZ3NBcnJheS5sZW5ndGgpe3RoaXMucnVubmluZz0hMTtpZih0aGlzLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bmspe3RoaXMuZ2Z4LmVuZERyYXdpbmcodGhpcy5wYWdlQ29sb3JzKTt0aGlzLl9jYW52YXMmJkludGVybmFsUmVuZGVyVGFzay4jYi5kZWxldGUodGhpcy5fY2FudmFzKTt0aGlzLmNhbGxiYWNrKCl9fX19fWNvbnN0IHZlcnNpb249IjMuOS4xNzkiO2V4cG9ydHMudmVyc2lvbj12ZXJzaW9uO2NvbnN0IGJ1aWxkPSIxZWY2ZmJjNTIiO2V4cG9ydHMuYnVpbGQ9YnVpbGR9LCh0LGUsbik9Pnt2YXIgaT1uKDMpLHI9bigxMjYpO2koe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohbigxMzQpKCJkaWZmZXJlbmNlIil9LHtkaWZmZXJlbmNlOnJ9KX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEyNykscj1uKDEyOCkscz1uKDEyOSksYT1uKDEzMiksbz1uKDEzMyksbD1uKDEzMCksYz1uKDEzMSksaD1yLmhhcyxkPXIucmVtb3ZlO3QuZXhwb3J0cz1mdW5jdGlvbiBkaWZmZXJlbmNlKHQpe3ZhciBlPWkodGhpcyksbj1vKHQpLHI9cyhlKTthKGUpPD1uLnNpemU/bChlLChmdW5jdGlvbih0KXtuLmluY2x1ZGVzKHQpJiZkKHIsdCl9KSk6YyhuLmdldEl0ZXJhdG9yKCksKGZ1bmN0aW9uKHQpe2goZSx0KSYmZChyLHQpfSkpO3JldHVybiByfX0sKHQsZSxuKT0+e3ZhciBpPW4oMTI4KS5oYXM7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2kodCk7cmV0dXJuIHR9fSwodCxlLG4pPT57dmFyIGk9bigxNCkscj1TZXQucHJvdG90eXBlO3QuZXhwb3J0cz17U2V0OlNldCxhZGQ6aShyLmFkZCksaGFzOmkoci5oYXMpLHJlbW92ZTppKHIuZGVsZXRlKSxwcm90bzpyfX0sKHQsZSxuKT0+e3ZhciBpPW4oMTI4KSxyPW4oMTMwKSxzPWkuU2V0LGE9aS5hZGQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBzO3IodCwoZnVuY3Rpb24odCl7YShlLHQpfSkpO3JldHVybiBlfX0sKHQsZSxuKT0+e3ZhciBpPW4oMTQpLHI9bigxMzEpLHM9bigxMjgpLGE9cy5TZXQsbz1zLnByb3RvLGw9aShvLmZvckVhY2gpLGM9aShvLmtleXMpLGg9YyhuZXcgYSkubmV4dDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuP3IoYyh0KSxlLGgpOmwodCxlKX19LCh0LGUsbik9Pnt2YXIgaT1uKDgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciByLHMsYT1ufHx0Lm5leHQ7IShyPWkoYSx0KSkuZG9uZTspaWYodm9pZCAwIT09KHM9ZShyLnZhbHVlKSkpcmV0dXJuIHN9fSwodCxlLG4pPT57dmFyIGk9big3Mikscj1uKDEyOCk7dC5leHBvcnRzPWkoci5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbih0KXtyZXR1cm4gdC5zaXplfX0sKHQsZSxuKT0+e3ZhciBpPW4oMzEpLHI9big0Nykscz1uKDgpLGE9big2Miksbz1UeXBlRXJyb3IsbD1NYXRoLm1heCxTZXRSZWNvcmQ9ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5zZXQ9dDt0aGlzLnNpemU9ZTt0aGlzLmhhcz1uO3RoaXMua2V5cz1pfTtTZXRSZWNvcmQucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiByKHModGhpcy5rZXlzLHRoaXMuc2V0KSl9LGluY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiBzKHRoaXMuaGFzLHRoaXMuc2V0LHQpfX07dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3IodCk7dmFyIGU9K3Quc2l6ZTtpZihlIT1lKXRocm93IG8oIkludmFsaWQgc2l6ZSIpO3JldHVybiBuZXcgU2V0UmVjb3JkKHQsbChhKGUpLDApLGkodC5oYXMpLGkodC5rZXlzKSl9fSwodCxlLG4pPT57dmFyIGk9bigyNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXsobmV3KGkoIlNldCIpKSlbdF0oe3NpemU6MCxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fSk7cmV0dXJuITB9Y2F0Y2godCl7cmV0dXJuITF9fX0sKHQsZSxuKT0+e3ZhciBpPW4oMykscj1uKDcpLHM9bigxMzYpO2koe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohbigxMzQpKCJpbnRlcnNlY3Rpb24iKXx8cigoZnVuY3Rpb24oKXtyZXR1cm4iMywyIiE9QXJyYXkuZnJvbShuZXcgU2V0KFsxLDIsM10pLmludGVyc2VjdGlvbihuZXcgU2V0KFszLDJdKSkpfSkpfSx7aW50ZXJzZWN0aW9uOnN9KX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEyNykscj1uKDEyOCkscz1uKDEzMiksYT1uKDEzMyksbz1uKDEzMCksbD1uKDEzMSksYz1yLlNldCxoPXIuYWRkLGQ9ci5oYXM7dC5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbih0KXt2YXIgZT1pKHRoaXMpLG49YSh0KSxyPW5ldyBjO3MoZSk+bi5zaXplP2wobi5nZXRJdGVyYXRvcigpLChmdW5jdGlvbih0KXtkKGUsdCkmJmgocix0KX0pKTpvKGUsKGZ1bmN0aW9uKHQpe24uaW5jbHVkZXModCkmJmgocix0KX0pKTtyZXR1cm4gcn19LCh0LGUsbik9Pnt2YXIgaT1uKDMpLHI9bigxMzgpO2koe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohbigxMzQpKCJpc0Rpc2pvaW50RnJvbSIpfSx7aXNEaXNqb2ludEZyb206cn0pfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oMTI3KSxyPW4oMTI4KS5oYXMscz1uKDEzMiksYT1uKDEzMyksbz1uKDEzMCksbD1uKDEzMSksYz1uKDEzOSk7dC5leHBvcnRzPWZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKHQpe3ZhciBlPWkodGhpcyksbj1hKHQpO2lmKHMoZSk8PW4uc2l6ZSlyZXR1cm4hMSE9PW8oZSwoZnVuY3Rpb24odCl7aWYobi5pbmNsdWRlcyh0KSlyZXR1cm4hMX0pLCEwKTt2YXIgaD1uLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1sKGgsKGZ1bmN0aW9uKHQpe2lmKHIoZSx0KSlyZXR1cm4gYyhoLCJub3JtYWwiLCExKX0pKX19LCh0LGUsbik9Pnt2YXIgaT1uKDgpLHI9big0Nykscz1uKDMwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBhLG87cih0KTt0cnl7aWYoIShhPXModCwicmV0dXJuIikpKXtpZigidGhyb3ciPT09ZSl0aHJvdyBuO3JldHVybiBufWE9aShhLHQpfWNhdGNoKHQpe289ITA7YT10fWlmKCJ0aHJvdyI9PT1lKXRocm93IG47aWYobyl0aHJvdyBhO3IoYSk7cmV0dXJuIG59fSwodCxlLG4pPT57dmFyIGk9bigzKSxyPW4oMTQxKTtpKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IW4oMTM0KSgiaXNTdWJzZXRPZiIpfSx7aXNTdWJzZXRPZjpyfSl9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9bigxMjcpLHI9bigxMzIpLHM9bigxMzApLGE9bigxMzMpO3QuZXhwb3J0cz1mdW5jdGlvbiBpc1N1YnNldE9mKHQpe3ZhciBlPWkodGhpcyksbj1hKHQpO3JldHVybiEocihlKT5uLnNpemUpJiYhMSE9PXMoZSwoZnVuY3Rpb24odCl7aWYoIW4uaW5jbHVkZXModCkpcmV0dXJuITF9KSwhMCl9fSwodCxlLG4pPT57dmFyIGk9bigzKSxyPW4oMTQzKTtpKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IW4oMTM0KSgiaXNTdXBlcnNldE9mIil9LHtpc1N1cGVyc2V0T2Y6cn0pfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oMTI3KSxyPW4oMTI4KS5oYXMscz1uKDEzMiksYT1uKDEzMyksbz1uKDEzMSksbD1uKDEzOSk7dC5leHBvcnRzPWZ1bmN0aW9uIGlzU3VwZXJzZXRPZih0KXt2YXIgZT1pKHRoaXMpLG49YSh0KTtpZihzKGUpPG4uc2l6ZSlyZXR1cm4hMTt2YXIgYz1uLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1vKGMsKGZ1bmN0aW9uKHQpe2lmKCFyKGUsdCkpcmV0dXJuIGwoYywibm9ybWFsIiwhMSl9KSl9fSwodCxlLG4pPT57dmFyIGk9bigzKSxyPW4oMTQ1KTtpKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IW4oMTM0KSgic3ltbWV0cmljRGlmZmVyZW5jZSIpfSx7c3ltbWV0cmljRGlmZmVyZW5jZTpyfSl9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9bigxMjcpLHI9bigxMjgpLHM9bigxMjkpLGE9bigxMzMpLG89bigxMzEpLGw9ci5hZGQsYz1yLmhhcyxoPXIucmVtb3ZlO3QuZXhwb3J0cz1mdW5jdGlvbiBzeW1tZXRyaWNEaWZmZXJlbmNlKHQpe3ZhciBlPWkodGhpcyksbj1hKHQpLmdldEl0ZXJhdG9yKCkscj1zKGUpO28obiwoZnVuY3Rpb24odCl7YyhlLHQpP2gocix0KTpsKHIsdCl9KSk7cmV0dXJuIHJ9fSwodCxlLG4pPT57dmFyIGk9bigzKSxyPW4oMTQ3KTtpKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IW4oMTM0KSgidW5pb24iKX0se3VuaW9uOnJ9KX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEyNykscj1uKDEyOCkuYWRkLHM9bigxMjkpLGE9bigxMzMpLG89bigxMzEpO3QuZXhwb3J0cz1mdW5jdGlvbiB1bmlvbih0KXt2YXIgZT1pKHRoaXMpLG49YSh0KS5nZXRJdGVyYXRvcigpLGw9cyhlKTtvKG4sKGZ1bmN0aW9uKHQpe3IobCx0KX0pKTtyZXR1cm4gbH19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9bigzKSxyPW4oNCkscz1uKDI0KSxhPW4oMTEpLG89big0NSkuZixsPW4oMzkpLGM9bigxNDkpLGg9big3NSksZD1uKDc2KSx1PW4oMTUwKSxwPW4oODIpLGY9big2KSxnPW4oMzYpLG09IkRPTUV4Y2VwdGlvbiIsYj1zKCJFcnJvciIpLHY9cyhtKSx5PWZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpe2ModGhpcyxBKTt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9ZCh0PDE/dm9pZCAwOmFyZ3VtZW50c1swXSksbj1kKHQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLGk9bmV3IHYoZSxuKSxyPWIoZSk7ci5uYW1lPW07byhpLCJzdGFjayIsYSgxLHAoci5zdGFjaywxKSkpO2goaSx0aGlzLHkpO3JldHVybiBpfSxBPXkucHJvdG90eXBlPXYucHJvdG90eXBlLF89InN0YWNrImluIGIobSksUz0ic3RhY2siaW4gbmV3IHYoMSwyKSxFPXYmJmYmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixtKSx4PSEoIUV8fEUud3JpdGFibGUmJkUuY29uZmlndXJhYmxlKSx3PV8mJiF4JiYhUztpKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOmd8fHd9LHtET01FeGNlcHRpb246dz95OnZ9KTt2YXIgQz1zKG0pLFQ9Qy5wcm90b3R5cGU7aWYoVC5jb25zdHJ1Y3RvciE9PUMpe2d8fG8oVCwiY29uc3RydWN0b3IiLGEoMSxDKSk7Zm9yKHZhciBQIGluIHUpaWYobCh1LFApKXt2YXIgaz11W1BdLE09ay5zO2woQyxNKXx8byhDLE0sYSg2LGsuYykpfX19LCh0LGUsbik9Pnt2YXIgaT1uKDI1KSxyPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihpKGUsdCkpcmV0dXJuIHQ7dGhyb3cgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LHQ9Pnt0LmV4cG9ydHM9e0luZGV4U2l6ZUVycm9yOntzOiJJTkRFWF9TSVpFX0VSUiIsYzoxLG06MX0sRE9NU3RyaW5nU2l6ZUVycm9yOntzOiJET01TVFJJTkdfU0laRV9FUlIiLGM6MixtOjB9LEhpZXJhcmNoeVJlcXVlc3RFcnJvcjp7czoiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixjOjMsbToxfSxXcm9uZ0RvY3VtZW50RXJyb3I6e3M6IldST05HX0RPQ1VNRU5UX0VSUiIsYzo0LG06MX0sSW52YWxpZENoYXJhY3RlckVycm9yOntzOiJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLGM6NSxtOjF9LE5vRGF0YUFsbG93ZWRFcnJvcjp7czoiTk9fREFUQV9BTExPV0VEX0VSUiIsYzo2LG06MH0sTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6e3M6Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIsYzo3LG06MX0sTm90Rm91bmRFcnJvcjp7czoiTk9UX0ZPVU5EX0VSUiIsYzo4LG06MX0sTm90U3VwcG9ydGVkRXJyb3I6e3M6Ik5PVF9TVVBQT1JURURfRVJSIixjOjksbToxfSxJblVzZUF0dHJpYnV0ZUVycm9yOntzOiJJTlVTRV9BVFRSSUJVVEVfRVJSIixjOjEwLG06MX0sSW52YWxpZFN0YXRlRXJyb3I6e3M6IklOVkFMSURfU1RBVEVfRVJSIixjOjExLG06MX0sU3ludGF4RXJyb3I6e3M6IlNZTlRBWF9FUlIiLGM6MTIsbToxfSxJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6e3M6IklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsYzoxMyxtOjF9LE5hbWVzcGFjZUVycm9yOntzOiJOQU1FU1BBQ0VfRVJSIixjOjE0LG06MX0sSW52YWxpZEFjY2Vzc0Vycm9yOntzOiJJTlZBTElEX0FDQ0VTU19FUlIiLGM6MTUsbToxfSxWYWxpZGF0aW9uRXJyb3I6e3M6IlZBTElEQVRJT05fRVJSIixjOjE2LG06MH0sVHlwZU1pc21hdGNoRXJyb3I6e3M6IlRZUEVfTUlTTUFUQ0hfRVJSIixjOjE3LG06MX0sU2VjdXJpdHlFcnJvcjp7czoiU0VDVVJJVFlfRVJSIixjOjE4LG06MX0sTmV0d29ya0Vycm9yOntzOiJORVRXT1JLX0VSUiIsYzoxOSxtOjF9LEFib3J0RXJyb3I6e3M6IkFCT1JUX0VSUiIsYzoyMCxtOjF9LFVSTE1pc21hdGNoRXJyb3I6e3M6IlVSTF9NSVNNQVRDSF9FUlIiLGM6MjEsbToxfSxRdW90YUV4Y2VlZGVkRXJyb3I6e3M6IlFVT1RBX0VYQ0VFREVEX0VSUiIsYzoyMixtOjF9LFRpbWVvdXRFcnJvcjp7czoiVElNRU9VVF9FUlIiLGM6MjMsbToxfSxJbnZhbGlkTm9kZVR5cGVFcnJvcjp7czoiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIixjOjI0LG06MX0sRGF0YUNsb25lRXJyb3I6e3M6IkRBVEFfQ0xPTkVfRVJSIixjOjI1LG06MX19fSwodCxlLG4pPT57dmFyIGkscj1uKDM2KSxzPW4oMyksYT1uKDQpLG89bigyNCksbD1uKDE0KSxjPW4oNyksaD1uKDQxKSxkPW4oMjEpLHU9bigxNTIpLHA9bigxNyksZj1uKDIwKSxnPW4oMjMpLG09bigxNTMpLGI9big0Nyksdj1uKDc4KSx5PW4oMzkpLEE9bigxNTgpLF89big0NCksUz1uKDY0KSxFPW4oODUpLHg9bigxNTkpLHc9bigxNjEpLEM9bigxMjgpLFQ9big4MyksUD1uKDExOSksaz1hLk9iamVjdCxNPWEuQXJyYXksUj1hLkRhdGUsST1hLkVycm9yLEQ9YS5FdmFsRXJyb3IsTz1hLlJhbmdlRXJyb3IsTD1hLlJlZmVyZW5jZUVycm9yLE49YS5TeW50YXhFcnJvcixCPWEuVHlwZUVycm9yLGo9YS5VUklFcnJvcixVPWEuUGVyZm9ybWFuY2VNYXJrLHo9YS5XZWJBc3NlbWJseSxIPXomJnouQ29tcGlsZUVycm9yfHxJLHE9eiYmei5MaW5rRXJyb3J8fEksVz16JiZ6LlJ1bnRpbWVFcnJvcnx8SSxHPW8oIkRPTUV4Y2VwdGlvbiIpLFY9dy5NYXAsJD13LmhhcyxYPXcuZ2V0LEs9dy5zZXQsWT1DLlNldCxKPUMuYWRkLFE9bygiT2JqZWN0Iiwia2V5cyIpLFo9bChbXS5wdXNoKSx0dD1sKCghMCkudmFsdWVPZiksZXQ9bCgxLi52YWx1ZU9mKSxudD1sKCIiLnZhbHVlT2YpLGl0PWwoUi5wcm90b3R5cGUuZ2V0VGltZSkscnQ9aCgic3RydWN0dXJlZENsb25lIiksc3Q9IkRhdGFDbG9uZUVycm9yIixhdD0iVHJhbnNmZXJyaW5nIixjaGVja0Jhc2ljU2VtYW50aWM9ZnVuY3Rpb24odCl7cmV0dXJuIWMoKGZ1bmN0aW9uKCl7dmFyIGU9bmV3IGEuU2V0KFs3XSksbj10KGUpLGk9dChrKDcpKTtyZXR1cm4gbj09ZXx8IW4uaGFzKDcpfHwib2JqZWN0IiE9dHlwZW9mIGl8fDchPWl9KSkmJnR9LGNoZWNrRXJyb3JzQ2xvbmluZz1mdW5jdGlvbih0LGUpe3JldHVybiFjKChmdW5jdGlvbigpe3ZhciBuPW5ldyBlLGk9dCh7YTpuLGI6bn0pO3JldHVybiEoaSYmaS5hPT09aS5iJiZpLmEgaW5zdGFuY2VvZiBlJiZpLmEuc3RhY2s9PT1uLnN0YWNrKX0pKX0sb3Q9YS5zdHJ1Y3R1cmVkQ2xvbmUsbHQ9cnx8IWNoZWNrRXJyb3JzQ2xvbmluZyhvdCxJKXx8IWNoZWNrRXJyb3JzQ2xvbmluZyhvdCxHKXx8IShpPW90LCFjKChmdW5jdGlvbigpe3ZhciB0PWkobmV3IGEuQWdncmVnYXRlRXJyb3IoWzFdLHJ0LHtjYXVzZTozfSkpO3JldHVybiJBZ2dyZWdhdGVFcnJvciIhPXQubmFtZXx8MSE9dC5lcnJvcnNbMF18fHQubWVzc2FnZSE9cnR8fDMhPXQuY2F1c2V9KSkpLGN0PSFvdCYmY2hlY2tCYXNpY1NlbWFudGljKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFUocnQse2RldGFpbDp0fSkuZGV0YWlsfSkpLGh0PWNoZWNrQmFzaWNTZW1hbnRpYyhvdCl8fGN0LHRocm93VW5jbG9uZWFibGU9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEcoIlVuY2xvbmVhYmxlIHR5cGU6ICIrdCxzdCl9LHRocm93VW5wb2x5ZmlsbGFibGU9ZnVuY3Rpb24odCxlKXt0aHJvdyBuZXcgRygoZXx8IkNsb25pbmciKSsiIG9mICIrdCsiIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIHRoaXMgZW5naW5lIixzdCl9LHRyeU5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmU9ZnVuY3Rpb24odCxlKXtodHx8dGhyb3dVbnBvbHlmaWxsYWJsZShlKTtyZXR1cm4gaHQodCl9LGNsb25lQnVmZmVyPWZ1bmN0aW9uKHQsZSxuKXtpZigkKGUsdCkpcmV0dXJuIFgoZSx0KTt2YXIgaSxyLHMsbyxsLGM7aWYoIlNoYXJlZEFycmF5QnVmZmVyIj09PShufHx2KHQpKSlpPWh0P2h0KHQpOnQ7ZWxzZXt2YXIgaD1hLkRhdGFWaWV3O2h8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LnNsaWNlfHx0aHJvd1VucG9seWZpbGxhYmxlKCJBcnJheUJ1ZmZlciIpO3RyeXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdC5zbGljZXx8dC5yZXNpemFibGUpe3I9dC5ieXRlTGVuZ3RoO3M9Im1heEJ5dGVMZW5ndGgiaW4gdD97bWF4Qnl0ZUxlbmd0aDp0Lm1heEJ5dGVMZW5ndGh9OnZvaWQgMDtpPW5ldyBBcnJheUJ1ZmZlcihyLHMpO289bmV3IGgodCk7bD1uZXcgaChpKTtmb3IoYz0wO2M8cjtjKyspbC5zZXRVaW50OChjLG8uZ2V0VWludDgoYykpfWVsc2UgaT10LnNsaWNlKDApfWNhdGNoKHQpe3Rocm93IG5ldyBHKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIsc3QpfX1LKGUsdCxpKTtyZXR1cm4gaX0sY2xvbmVWaWV3PWZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIHM9YVtlXTtmKHMpfHx0aHJvd1VucG9seWZpbGxhYmxlKGUpO3JldHVybiBuZXcgcyhjbG9uZUJ1ZmZlcih0LmJ1ZmZlcixyKSxuLGkpfSxQbGFjZWhvbGRlcj1mdW5jdGlvbih0LGUsbil7dGhpcy5vYmplY3Q9dDt0aGlzLnR5cGU9ZTt0aGlzLm1ldGFkYXRhPW59LHN0cnVjdHVyZWRDbG9uZUludGVybmFsPWZ1bmN0aW9uKHQsZSxuKXtnKHQpJiZ0aHJvd1VuY2xvbmVhYmxlKCJTeW1ib2wiKTtpZighZih0KSlyZXR1cm4gdDtpZihlKXtpZigkKGUsdCkpcmV0dXJuIFgoZSx0KX1lbHNlIGU9bmV3IFY7dmFyIGkscixzLGwsYyxoLHUscCxtPXYodCk7c3dpdGNoKG0pe2Nhc2UiQXJyYXkiOnM9TShTKHQpKTticmVhaztjYXNlIk9iamVjdCI6cz17fTticmVhaztjYXNlIk1hcCI6cz1uZXcgVjticmVhaztjYXNlIlNldCI6cz1uZXcgWTticmVhaztjYXNlIlJlZ0V4cCI6cz1uZXcgUmVnRXhwKHQuc291cmNlLHgodCkpO2JyZWFrO2Nhc2UiRXJyb3IiOnN3aXRjaChyPXQubmFtZSl7Y2FzZSJBZ2dyZWdhdGVFcnJvciI6cz1vKCJBZ2dyZWdhdGVFcnJvciIpKFtdKTticmVhaztjYXNlIkV2YWxFcnJvciI6cz1EKCk7YnJlYWs7Y2FzZSJSYW5nZUVycm9yIjpzPU8oKTticmVhaztjYXNlIlJlZmVyZW5jZUVycm9yIjpzPUwoKTticmVhaztjYXNlIlN5bnRheEVycm9yIjpzPU4oKTticmVhaztjYXNlIlR5cGVFcnJvciI6cz1CKCk7YnJlYWs7Y2FzZSJVUklFcnJvciI6cz1qKCk7YnJlYWs7Y2FzZSJDb21waWxlRXJyb3IiOnM9SCgpO2JyZWFrO2Nhc2UiTGlua0Vycm9yIjpzPXEoKTticmVhaztjYXNlIlJ1bnRpbWVFcnJvciI6cz1XKCk7YnJlYWs7ZGVmYXVsdDpzPUkoKX1icmVhaztjYXNlIkRPTUV4Y2VwdGlvbiI6cz1uZXcgRyh0Lm1lc3NhZ2UsdC5uYW1lKTticmVhaztjYXNlIkFycmF5QnVmZmVyIjpjYXNlIlNoYXJlZEFycmF5QnVmZmVyIjpzPW4/bmV3IFBsYWNlaG9sZGVyKHQsbSk6Y2xvbmVCdWZmZXIodCxlLG0pO2JyZWFrO2Nhc2UiRGF0YVZpZXciOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MTZBcnJheSI6Y2FzZSJGbG9hdDMyQXJyYXkiOmNhc2UiRmxvYXQ2NEFycmF5IjpjYXNlIkJpZ0ludDY0QXJyYXkiOmNhc2UiQmlnVWludDY0QXJyYXkiOmg9IkRhdGFWaWV3Ij09PW0/dC5ieXRlTGVuZ3RoOnQubGVuZ3RoO3M9bj9uZXcgUGxhY2Vob2xkZXIodCxtLHtvZmZzZXQ6dC5ieXRlT2Zmc2V0LGxlbmd0aDpofSk6Y2xvbmVWaWV3KHQsbSx0LmJ5dGVPZmZzZXQsaCxlKTticmVhaztjYXNlIkRPTVF1YWQiOnRyeXtzPW5ldyBET01RdWFkKHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQucDEsZSxuKSxzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0LnAyLGUsbiksc3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5wMyxlLG4pLHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQucDQsZSxuKSl9Y2F0Y2goZSl7cz10cnlOYXRpdmVSZXN0cmljdGVkU3RydWN0dXJlZENsb25lKHQsbSl9YnJlYWs7Y2FzZSJGaWxlIjppZihodCl0cnl7cz1odCh0KTt2KHMpIT09bSYmKHM9dm9pZCAwKX1jYXRjaCh0KXt9aWYoIXMpdHJ5e3M9bmV3IEZpbGUoW3RdLHQubmFtZSx0KX1jYXRjaCh0KXt9c3x8dGhyb3dVbnBvbHlmaWxsYWJsZShtKTticmVhaztjYXNlIkZpbGVMaXN0IjppZihsPWZ1bmN0aW9uKCl7dmFyIHQ7dHJ5e3Q9bmV3IGEuRGF0YVRyYW5zZmVyfWNhdGNoKGUpe3RyeXt0PW5ldyBhLkNsaXBib2FyZEV2ZW50KCIiKS5jbGlwYm9hcmREYXRhfWNhdGNoKHQpe319cmV0dXJuIHQmJnQuaXRlbXMmJnQuZmlsZXM/dDpudWxsfSgpKXtmb3IoYz0wLGg9Uyh0KTtjPGg7YysrKWwuaXRlbXMuYWRkKHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHRbY10sZSxuKSk7cz1sLmZpbGVzfWVsc2Ugcz10cnlOYXRpdmVSZXN0cmljdGVkU3RydWN0dXJlZENsb25lKHQsbSk7YnJlYWs7Y2FzZSJJbWFnZURhdGEiOnRyeXtzPW5ldyBJbWFnZURhdGEoc3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5kYXRhLGUsbiksdC53aWR0aCx0LmhlaWdodCx7Y29sb3JTcGFjZTp0LmNvbG9yU3BhY2V9KX1jYXRjaChlKXtzPXRyeU5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUodCxtKX1icmVhaztkZWZhdWx0OmlmKGh0KXM9aHQodCk7ZWxzZSBzd2l0Y2gobSl7Y2FzZSJCaWdJbnQiOnM9ayh0LnZhbHVlT2YoKSk7YnJlYWs7Y2FzZSJCb29sZWFuIjpzPWsodHQodCkpO2JyZWFrO2Nhc2UiTnVtYmVyIjpzPWsoZXQodCkpO2JyZWFrO2Nhc2UiU3RyaW5nIjpzPWsobnQodCkpO2JyZWFrO2Nhc2UiRGF0ZSI6cz1uZXcgUihpdCh0KSk7YnJlYWs7Y2FzZSJCbG9iIjp0cnl7cz10LnNsaWNlKDAsdC5zaXplLHQudHlwZSl9Y2F0Y2godCl7dGhyb3dVbnBvbHlmaWxsYWJsZShtKX1icmVhaztjYXNlIkRPTVBvaW50IjpjYXNlIkRPTVBvaW50UmVhZE9ubHkiOmk9YVttXTt0cnl7cz1pLmZyb21Qb2ludD9pLmZyb21Qb2ludCh0KTpuZXcgaSh0LngsdC55LHQueix0LncpfWNhdGNoKHQpe3Rocm93VW5wb2x5ZmlsbGFibGUobSl9YnJlYWs7Y2FzZSJET01SZWN0IjpjYXNlIkRPTVJlY3RSZWFkT25seSI6aT1hW21dO3RyeXtzPWkuZnJvbVJlY3Q/aS5mcm9tUmVjdCh0KTpuZXcgaSh0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpfWNhdGNoKHQpe3Rocm93VW5wb2x5ZmlsbGFibGUobSl9YnJlYWs7Y2FzZSJET01NYXRyaXgiOmNhc2UiRE9NTWF0cml4UmVhZE9ubHkiOmk9YVttXTt0cnl7cz1pLmZyb21NYXRyaXg/aS5mcm9tTWF0cml4KHQpOm5ldyBpKHQpfWNhdGNoKHQpe3Rocm93VW5wb2x5ZmlsbGFibGUobSl9YnJlYWs7Y2FzZSJBdWRpb0RhdGEiOmNhc2UiVmlkZW9GcmFtZSI6ZCh0LmNsb25lKXx8dGhyb3dVbnBvbHlmaWxsYWJsZShtKTt0cnl7cz10LmNsb25lKCl9Y2F0Y2godCl7dGhyb3dVbmNsb25lYWJsZShtKX1icmVhaztjYXNlIkNyb3BUYXJnZXQiOmNhc2UiQ3J5cHRvS2V5IjpjYXNlIkZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUiOmNhc2UiRmlsZVN5c3RlbUZpbGVIYW5kbGUiOmNhc2UiRmlsZVN5c3RlbUhhbmRsZSI6Y2FzZSJHUFVDb21waWxhdGlvbkluZm8iOmNhc2UiR1BVQ29tcGlsYXRpb25NZXNzYWdlIjpjYXNlIkltYWdlQml0bWFwIjpjYXNlIlJUQ0NlcnRpZmljYXRlIjpjYXNlIldlYkFzc2VtYmx5Lk1vZHVsZSI6dGhyb3dVbnBvbHlmaWxsYWJsZShtKTtkZWZhdWx0OnRocm93VW5jbG9uZWFibGUobSl9fUsoZSx0LHMpO3N3aXRjaChtKXtjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6dT1RKHQpO2ZvcihjPTAsaD1TKHUpO2M8aDtjKyspe3A9dVtjXTtBKHMscCxzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0W3BdLGUsbikpfWJyZWFrO2Nhc2UiTWFwIjp0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7SyhzLHN0cnVjdHVyZWRDbG9uZUludGVybmFsKGksZSxuKSxzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0LGUsbikpfSkpO2JyZWFrO2Nhc2UiU2V0Ijp0LmZvckVhY2goKGZ1bmN0aW9uKHQpe0oocyxzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0LGUsbikpfSkpO2JyZWFrO2Nhc2UiRXJyb3IiOl8ocywibWVzc2FnZSIsc3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5tZXNzYWdlLGUsbikpO3kodCwiY2F1c2UiKSYmXyhzLCJjYXVzZSIsc3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5jYXVzZSxlLG4pKTsiQWdncmVnYXRlRXJyb3IiPT1yJiYocy5lcnJvcnM9c3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5lcnJvcnMsZSxuKSk7Y2FzZSJET01FeGNlcHRpb24iOlQmJl8ocywic3RhY2siLHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQuc3RhY2ssZSxuKSl9cmV0dXJuIHN9LHJlcGxhY2VQbGFjZWhvbGRlcnM9ZnVuY3Rpb24odCxlKXtpZighZih0KSlyZXR1cm4gdDtpZigkKGUsdCkpcmV0dXJuIFgoZSx0KTt2YXIgbixpLHIscyxhLG8sbCxjO2lmKHQgaW5zdGFuY2VvZiBQbGFjZWhvbGRlcil7bj10LnR5cGU7aT10Lm9iamVjdDtzd2l0Y2gobil7Y2FzZSJBcnJheUJ1ZmZlciI6Y2FzZSJTaGFyZWRBcnJheUJ1ZmZlciI6Yz1jbG9uZUJ1ZmZlcihpLGUsbik7YnJlYWs7Y2FzZSJEYXRhVmlldyI6Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIkludDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQxNkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQmlnSW50NjRBcnJheSI6Y2FzZSJCaWdVaW50NjRBcnJheSI6cj10Lm1ldGFkYXRhO2M9Y2xvbmVWaWV3KGksbixyLm9mZnNldCxyLmxlbmd0aCxlKX19ZWxzZSBzd2l0Y2godih0KSl7Y2FzZSJBcnJheSI6Y2FzZSJPYmplY3QiOm89USh0KTtmb3Iocz0wLGE9UyhvKTtzPGE7cysrKXRbbD1vW3NdXT1yZXBsYWNlUGxhY2Vob2xkZXJzKHRbbF0sZSk7YnJlYWs7Y2FzZSJNYXAiOmM9bmV3IFY7dC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe0soYyxyZXBsYWNlUGxhY2Vob2xkZXJzKG4sZSkscmVwbGFjZVBsYWNlaG9sZGVycyh0LGUpKX0pKTticmVhaztjYXNlIlNldCI6Yz1uZXcgWTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe0ooYyxyZXBsYWNlUGxhY2Vob2xkZXJzKHQsZSkpfSkpO2JyZWFrO2Nhc2UiRXJyb3IiOnQubWVzc2FnZT1yZXBsYWNlUGxhY2Vob2xkZXJzKHQubWVzc2FnZSxlKTt5KHQsImNhdXNlIikmJih0LmNhdXNlPXJlcGxhY2VQbGFjZWhvbGRlcnModC5jYXVzZSxlKSk7IkFnZ3JlZ2F0ZUVycm9yIj09dC5uYW1lJiYodC5lcnJvcnM9cmVwbGFjZVBsYWNlaG9sZGVycyh0LmVycm9ycyxlKSk7Y2FzZSJET01FeGNlcHRpb24iOlQmJih0LnN0YWNrPXJlcGxhY2VQbGFjZWhvbGRlcnModC5zdGFjayxlKSl9SyhlLHQsY3x8dCk7cmV0dXJuIGN8fHR9O3Moe2dsb2JhbDohMCxlbnVtZXJhYmxlOiEwLHNoYW06IVAsZm9yY2VkOmx0fSx7c3RydWN0dXJlZENsb25lOmZ1bmN0aW9uIHN0cnVjdHVyZWRDbG9uZSh0KXt2YXIgZSxuLGk9RShhcmd1bWVudHMubGVuZ3RoLDEpPjEmJiFwKGFyZ3VtZW50c1sxXSk/Yihhcmd1bWVudHNbMV0pOnZvaWQgMCxyPWk/aS50cmFuc2Zlcjp2b2lkIDAscz0hMTtpZih2b2lkIDAhPT1yKXtuPWZ1bmN0aW9uKHQsZSl7aWYoIWYodCkpdGhyb3cgQigiVHJhbnNmZXIgb3B0aW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBzZXF1ZW5jZSIpO3ZhciBuPVtdO20odCwoZnVuY3Rpb24odCl7WihuLGIodCkpfSkpO2Zvcih2YXIgaSxyLHMsbyxsLGM9MCxoPVMobikscD1bXTtjPGg7KXtpPW5bYysrXTtpZigiQXJyYXlCdWZmZXIiIT09KHI9dihpKSkpe2lmKCQoZSxpKSl0aHJvdyBuZXcgRygiRHVwbGljYXRlIHRyYW5zZmVyYWJsZSIsc3QpO2lmKFApbz1vdChpLHt0cmFuc2ZlcjpbaV19KTtlbHNlIHN3aXRjaChyKXtjYXNlIkltYWdlQml0bWFwIjpzPWEuT2Zmc2NyZWVuQ2FudmFzO3Uocyl8fHRocm93VW5wb2x5ZmlsbGFibGUocixhdCk7dHJ5eyhsPW5ldyBzKGkud2lkdGgsaS5oZWlnaHQpKS5nZXRDb250ZXh0KCJiaXRtYXByZW5kZXJlciIpLnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKGkpO289bC50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1jYXRjaCh0KXt9YnJlYWs7Y2FzZSJBdWRpb0RhdGEiOmNhc2UiVmlkZW9GcmFtZSI6ZChpLmNsb25lKSYmZChpLmNsb3NlKXx8dGhyb3dVbnBvbHlmaWxsYWJsZShyLGF0KTt0cnl7bz1pLmNsb25lKCk7aS5jbG9zZSgpfWNhdGNoKHQpe31icmVhaztjYXNlIk1lZGlhU291cmNlSGFuZGxlIjpjYXNlIk1lc3NhZ2VQb3J0IjpjYXNlIk9mZnNjcmVlbkNhbnZhcyI6Y2FzZSJSZWFkYWJsZVN0cmVhbSI6Y2FzZSJUcmFuc2Zvcm1TdHJlYW0iOmNhc2UiV3JpdGFibGVTdHJlYW0iOnRocm93VW5wb2x5ZmlsbGFibGUocixhdCl9aWYodm9pZCAwPT09byl0aHJvdyBuZXcgRygiVGhpcyBvYmplY3QgY2Fubm90IGJlIHRyYW5zZmVycmVkOiAiK3Isc3QpO0soZSxpLG8pfWVsc2UgWihwLGkpfXJldHVybiBwfShyLGU9bmV3IFYpO3M9ISFTKG4pfXZhciBvPXN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQsZSxzKTtpZihzKXshZnVuY3Rpb24odCxlKXtmb3IodmFyIG4saSxyPTAscz1TKHQpO3I8czspe249dFtyKytdO2lmKCQoZSxuKSl0aHJvdyBuZXcgRygiRHVwbGljYXRlIHRyYW5zZmVyYWJsZSIsc3QpO2lmKFApaT1vdChuLHt0cmFuc2Zlcjpbbl19KTtlbHNle2Qobi50cmFuc2Zlcil8fHRocm93VW5wb2x5ZmlsbGFibGUoIkFycmF5QnVmZmVyIixhdCk7aT1uLnRyYW5zZmVyKCl9SyhlLG4saSl9fShyLGU9bmV3IFYpO289cmVwbGFjZVBsYWNlaG9sZGVycyhvLGUpfXJldHVybiBvfX0pfSwodCxlLG4pPT57dmFyIGk9bigxNCkscj1uKDcpLHM9bigyMSksYT1uKDc4KSxvPW4oMjQpLGw9big1MSksbm9vcD1mdW5jdGlvbigpe30sYz1bXSxoPW8oIlJlZmxlY3QiLCJjb25zdHJ1Y3QiKSxkPS9eXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXGIvLHU9aShkLmV4ZWMpLHA9IWQuZXhlYyhub29wKSxmPWZ1bmN0aW9uIGlzQ29uc3RydWN0b3IodCl7aWYoIXModCkpcmV0dXJuITE7dHJ5e2gobm9vcCxjLHQpO3JldHVybiEwfWNhdGNoKHQpe3JldHVybiExfX0sZz1mdW5jdGlvbiBpc0NvbnN0cnVjdG9yKHQpe2lmKCFzKHQpKXJldHVybiExO3N3aXRjaChhKHQpKXtjYXNlIkFzeW5jRnVuY3Rpb24iOmNhc2UiR2VuZXJhdG9yRnVuY3Rpb24iOmNhc2UiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiI6cmV0dXJuITF9dHJ5e3JldHVybiBwfHwhIXUoZCxsKHQpKX1jYXRjaCh0KXtyZXR1cm4hMH19O2cuc2hhbT0hMDt0LmV4cG9ydHM9IWh8fHIoKGZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIGYoZi5jYWxsKXx8IWYoT2JqZWN0KXx8IWYoKGZ1bmN0aW9uKCl7dD0hMH0pKXx8dH0pKT9nOmZ9LCh0LGUsbik9Pnt2YXIgaT1uKDk5KSxyPW4oOCkscz1uKDQ3KSxhPW4oMzIpLG89bigxNTQpLGw9big2NCksYz1uKDI1KSxoPW4oMTU2KSxkPW4oMTU3KSx1PW4oMTM5KSxwPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3BwZWQ9dDt0aGlzLnJlc3VsdD1lfSxmPVJlc3VsdC5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgZyxtLGIsdix5LEEsXyxTPW4mJm4udGhhdCxFPSEoIW58fCFuLkFTX0VOVFJJRVMpLHg9ISghbnx8IW4uSVNfUkVDT1JEKSx3PSEoIW58fCFuLklTX0lURVJBVE9SKSxDPSEoIW58fCFuLklOVEVSUlVQVEVEKSxUPWkoZSxTKSxzdG9wPWZ1bmN0aW9uKHQpe2cmJnUoZywibm9ybWFsIix0KTtyZXR1cm4gbmV3IFJlc3VsdCghMCx0KX0sY2FsbEZuPWZ1bmN0aW9uKHQpe2lmKEUpe3ModCk7cmV0dXJuIEM/VCh0WzBdLHRbMV0sc3RvcCk6VCh0WzBdLHRbMV0pfXJldHVybiBDP1QodCxzdG9wKTpUKHQpfTtpZih4KWc9dC5pdGVyYXRvcjtlbHNlIGlmKHcpZz10O2Vsc2V7aWYoIShtPWQodCkpKXRocm93IHAoYSh0KSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKG8obSkpe2ZvcihiPTAsdj1sKHQpO3Y+YjtiKyspaWYoKHk9Y2FsbEZuKHRbYl0pKSYmYyhmLHkpKXJldHVybiB5O3JldHVybiBuZXcgUmVzdWx0KCExKX1nPWgodCxtKX1BPXg/dC5uZXh0OmcubmV4dDtmb3IoOyEoXz1yKEEsZykpLmRvbmU7KXt0cnl7eT1jYWxsRm4oXy52YWx1ZSl9Y2F0Y2godCl7dShnLCJ0aHJvdyIsdCl9aWYoIm9iamVjdCI9PXR5cGVvZiB5JiZ5JiZjKGYseSkpcmV0dXJuIHl9cmV0dXJuIG5ldyBSZXN1bHQoITEpfX0sKHQsZSxuKT0+e3ZhciBpPW4oMzQpLHI9bigxNTUpLHM9aSgiaXRlcmF0b3IiKSxhPUFycmF5LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihyLkFycmF5PT09dHx8YVtzXT09PXQpfX0sdD0+e3QuZXhwb3J0cz17fX0sKHQsZSxuKT0+e3ZhciBpPW4oOCkscj1uKDMxKSxzPW4oNDcpLGE9bigzMiksbz1uKDE1NyksbD1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDwyP28odCk6ZTtpZihyKG4pKXJldHVybiBzKGkobix0KSk7dGhyb3cgbChhKHQpKyIgaXMgbm90IGl0ZXJhYmxlIil9fSwodCxlLG4pPT57dmFyIGk9big3OCkscj1uKDMwKSxzPW4oMTcpLGE9bigxNTUpLG89bigzNCkoIml0ZXJhdG9yIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFzKHQpKXJldHVybiByKHQsbyl8fHIodCwiQEBpdGVyYXRvciIpfHxhW2kodCldfX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDE4KSxyPW4oNDUpLHM9bigxMSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1pKGUpO2EgaW4gdD9yLmYodCxhLHMoMCxuKSk6dFthXT1ufX0sKHQsZSxuKT0+e3ZhciBpPW4oOCkscj1uKDM5KSxzPW4oMjUpLGE9bigxNjApLG89UmVnRXhwLnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5mbGFncztyZXR1cm4gdm9pZCAwIT09ZXx8ImZsYWdzImluIG98fHIodCwiZmxhZ3MiKXx8IXMobyx0KT9lOmkoYSx0KX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9big0Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9aSh0aGlzKSxlPSIiO3QuaGFzSW5kaWNlcyYmKGUrPSJkIik7dC5nbG9iYWwmJihlKz0iZyIpO3QuaWdub3JlQ2FzZSYmKGUrPSJpIik7dC5tdWx0aWxpbmUmJihlKz0ibSIpO3QuZG90QWxsJiYoZSs9InMiKTt0LnVuaWNvZGUmJihlKz0idSIpO3QudW5pY29kZVNldHMmJihlKz0idiIpO3Quc3RpY2t5JiYoZSs9InkiKTtyZXR1cm4gZX19LCh0LGUsbik9Pnt2YXIgaT1uKDE0KSxyPU1hcC5wcm90b3R5cGU7dC5leHBvcnRzPXtNYXA6TWFwLHNldDppKHIuc2V0KSxnZXQ6aShyLmdldCksaGFzOmkoci5oYXMpLHJlbW92ZTppKHIuZGVsZXRlKSxwcm90bzpyfX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5TZXJpYWxpemFibGVFbXB0eT1lLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9ZS5Bbm5vdGF0aW9uU3RvcmFnZT12b2lkIDA7big4OSk7bigxNDgpO24oMTUxKTt2YXIgaT1uKDEpLHI9bigxNjMpLHM9bigxNjkpO2NvbnN0IGE9T2JqZWN0LmZyZWV6ZSh7bWFwOm51bGwsaGFzaDoiIix0cmFuc2ZlcnM6dm9pZCAwfSk7ZS5TZXJpYWxpemFibGVFbXB0eT1hO2NsYXNzIEFubm90YXRpb25TdG9yYWdleyN2PSExOyN5PW5ldyBNYXA7Y29uc3RydWN0b3IoKXt0aGlzLm9uU2V0TW9kaWZpZWQ9bnVsbDt0aGlzLm9uUmVzZXRNb2RpZmllZD1udWxsO3RoaXMub25Bbm5vdGF0aW9uRWRpdG9yPW51bGx9Z2V0VmFsdWUodCxlKXtjb25zdCBuPXRoaXMuI3kuZ2V0KHQpO3JldHVybiB2b2lkIDA9PT1uP2U6T2JqZWN0LmFzc2lnbihlLG4pfWdldFJhd1ZhbHVlKHQpe3JldHVybiB0aGlzLiN5LmdldCh0KX1yZW1vdmUodCl7dGhpcy4jeS5kZWxldGUodCk7MD09PXRoaXMuI3kuc2l6ZSYmdGhpcy5yZXNldE1vZGlmaWVkKCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25Bbm5vdGF0aW9uRWRpdG9yKXtmb3IoY29uc3QgdCBvZiB0aGlzLiN5LnZhbHVlcygpKWlmKHQgaW5zdGFuY2VvZiByLkFubm90YXRpb25FZGl0b3IpcmV0dXJuO3RoaXMub25Bbm5vdGF0aW9uRWRpdG9yKG51bGwpfX1zZXRWYWx1ZSh0LGUpe2NvbnN0IG49dGhpcy4jeS5nZXQodCk7bGV0IGk9ITE7aWYodm9pZCAwIT09bil7Zm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhlKSlpZihuW3RdIT09cil7aT0hMDtuW3RdPXJ9fWVsc2V7aT0hMDt0aGlzLiN5LnNldCh0LGUpfWkmJnRoaXMuI0EoKTtlIGluc3RhbmNlb2Ygci5Bbm5vdGF0aW9uRWRpdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3ImJnRoaXMub25Bbm5vdGF0aW9uRWRpdG9yKGUuY29uc3RydWN0b3IuX3R5cGUpfWhhcyh0KXtyZXR1cm4gdGhpcy4jeS5oYXModCl9Z2V0QWxsKCl7cmV0dXJuIHRoaXMuI3kuc2l6ZT4wPygwLGkub2JqZWN0RnJvbU1hcCkodGhpcy4jeSk6bnVsbH1zZXRBbGwodCl7Zm9yKGNvbnN0W2Usbl1vZiBPYmplY3QuZW50cmllcyh0KSl0aGlzLnNldFZhbHVlKGUsbil9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jeS5zaXplfSNBKCl7aWYoIXRoaXMuI3Ype3RoaXMuI3Y9ITA7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25TZXRNb2RpZmllZCYmdGhpcy5vblNldE1vZGlmaWVkKCl9fXJlc2V0TW9kaWZpZWQoKXtpZih0aGlzLiN2KXt0aGlzLiN2PSExOyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uUmVzZXRNb2RpZmllZCYmdGhpcy5vblJlc2V0TW9kaWZpZWQoKX19Z2V0IHByaW50KCl7cmV0dXJuIG5ldyBQcmludEFubm90YXRpb25TdG9yYWdlKHRoaXMpfWdldCBzZXJpYWxpemFibGUoKXtpZigwPT09dGhpcy4jeS5zaXplKXJldHVybiBhO2NvbnN0IHQ9bmV3IE1hcCxlPW5ldyBzLk11cm11ckhhc2gzXzY0LG49W10saT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBvPSExO2Zvcihjb25zdFtuLHNdb2YgdGhpcy4jeSl7Y29uc3QgYT1zIGluc3RhbmNlb2Ygci5Bbm5vdGF0aW9uRWRpdG9yP3Muc2VyaWFsaXplKCExLGkpOnM7aWYoYSl7dC5zZXQobixhKTtlLnVwZGF0ZShgJHtufToke0pTT04uc3RyaW5naWZ5KGEpfWApO298fD0hIWEuYml0bWFwfX1pZihvKWZvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpZS5iaXRtYXAmJm4ucHVzaChlLmJpdG1hcCk7cmV0dXJuIHQuc2l6ZT4wP3ttYXA6dCxoYXNoOmUuaGV4ZGlnZXN0KCksdHJhbnNmZXJzOm59OmF9fWUuQW5ub3RhdGlvblN0b3JhZ2U9QW5ub3RhdGlvblN0b3JhZ2U7Y2xhc3MgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSBleHRlbmRzIEFubm90YXRpb25TdG9yYWdleyNfO2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7Y29uc3R7bWFwOmUsaGFzaDpuLHRyYW5zZmVyczppfT10LnNlcmlhbGl6YWJsZSxyPXN0cnVjdHVyZWRDbG9uZShlLG51bGwpO3RoaXMuI189e21hcDpyLGhhc2g6bix0cmFuc2ZlcnM6aX19Z2V0IHByaW50KCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBQcmludEFubm90YXRpb25TdG9yYWdlLnByaW50Iil9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybiB0aGlzLiNffX1lLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9UHJpbnRBbm5vdGF0aW9uU3RvcmFnZX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Bbm5vdGF0aW9uRWRpdG9yPXZvaWQgMDtuKDg5KTtuKDIpO3ZhciBpPW4oMSkscj1uKDE2NCk7Y2xhc3MgQW5ub3RhdGlvbkVkaXRvcnsjUz0hMTsjRT1udWxsOyN4PW51bGw7I3c9dGhpcy5mb2N1c2luLmJpbmQodGhpcyk7I0M9dGhpcy5mb2N1c291dC5iaW5kKHRoaXMpOyNUPSExOyNQPSExOyNrPSExO191aU1hbmFnZXI9bnVsbDsjTT1Bbm5vdGF0aW9uRWRpdG9yLl96SW5kZXgrKztzdGF0aWMgX2NvbG9yTWFuYWdlcj1uZXcgci5Db2xvck1hbmFnZXI7c3RhdGljIF96SW5kZXg9MTtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbnN0cnVjdG9yPT09QW5ub3RhdGlvbkVkaXRvciYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEFubm90YXRpb25FZGl0b3IuIik7dGhpcy5wYXJlbnQ9dC5wYXJlbnQ7dGhpcy5pZD10LmlkO3RoaXMud2lkdGg9dGhpcy5oZWlnaHQ9bnVsbDt0aGlzLnBhZ2VJbmRleD10LnBhcmVudC5wYWdlSW5kZXg7dGhpcy5uYW1lPXQubmFtZTt0aGlzLmRpdj1udWxsO3RoaXMuX3VpTWFuYWdlcj10LnVpTWFuYWdlcjt0aGlzLmFubm90YXRpb25FbGVtZW50SWQ9bnVsbDt0aGlzLl93aWxsS2VlcEFzcGVjdFJhdGlvPSExO2NvbnN0e3JvdGF0aW9uOmUscmF3RGltczp7cGFnZVdpZHRoOm4scGFnZUhlaWdodDpyLHBhZ2VYOnMscGFnZVk6YX19PXRoaXMucGFyZW50LnZpZXdwb3J0O3RoaXMucm90YXRpb249ZTt0aGlzLnBhZ2VSb3RhdGlvbj0oMzYwK2UtdGhpcy5fdWlNYW5hZ2VyLnZpZXdQYXJhbWV0ZXJzLnJvdGF0aW9uKSUzNjA7dGhpcy5wYWdlRGltZW5zaW9ucz1bbixyXTt0aGlzLnBhZ2VUcmFuc2xhdGlvbj1bcyxhXTtjb25zdFtvLGxdPXRoaXMucGFyZW50RGltZW5zaW9uczt0aGlzLng9dC54L287dGhpcy55PXQueS9sO3RoaXMuaXNBdHRhY2hlZFRvRE9NPSExO3RoaXMuZGVsZXRlZD0hMX1zdGF0aWMgZ2V0IF9kZWZhdWx0TGluZUNvbG9yKCl7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9kZWZhdWx0TGluZUNvbG9yIix0aGlzLl9jb2xvck1hbmFnZXIuZ2V0SGV4Q29kZSgiQ2FudmFzVGV4dCIpKX1zdGF0aWMgZGVsZXRlQW5ub3RhdGlvbkVsZW1lbnQodCl7Y29uc3QgZT1uZXcgRmFrZUVkaXRvcih7aWQ6dC5wYXJlbnQuZ2V0TmV4dElkKCkscGFyZW50OnQucGFyZW50LHVpTWFuYWdlcjp0Ll91aU1hbmFnZXJ9KTtlLmFubm90YXRpb25FbGVtZW50SWQ9dC5hbm5vdGF0aW9uRWxlbWVudElkO2UuZGVsZXRlZD0hMDtlLl91aU1hbmFnZXIuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZShlKX1zdGF0aWMgaW5pdGlhbGl6ZSh0KXt9c3RhdGljIHVwZGF0ZURlZmF1bHRQYXJhbXModCxlKXt9c3RhdGljIGdldCBkZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKCl7cmV0dXJuW119Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltdfWFkZENvbW1hbmRzKHQpe3RoaXMuX3VpTWFuYWdlci5hZGRDb21tYW5kcyh0KX1nZXQgY3VycmVudExheWVyKCl7cmV0dXJuIHRoaXMuX3VpTWFuYWdlci5jdXJyZW50TGF5ZXJ9c2V0SW5CYWNrZ3JvdW5kKCl7dGhpcy5kaXYuc3R5bGUuekluZGV4PTB9c2V0SW5Gb3JlZ3JvdW5kKCl7dGhpcy5kaXYuc3R5bGUuekluZGV4PXRoaXMuI019c2V0UGFyZW50KHQpe2lmKG51bGwhPT10KXt0aGlzLnBhZ2VJbmRleD10LnBhZ2VJbmRleDt0aGlzLnBhZ2VEaW1lbnNpb25zPXQucGFnZURpbWVuc2lvbnN9dGhpcy5wYXJlbnQ9dH1mb2N1c2luKHQpe3RoaXMuI1Q/dGhpcy4jVD0hMTp0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKX1mb2N1c291dCh0KXtpZighdGhpcy5pc0F0dGFjaGVkVG9ET00pcmV0dXJuO2NvbnN0IGU9dC5yZWxhdGVkVGFyZ2V0O2lmKCFlPy5jbG9zZXN0KGAjJHt0aGlzLmlkfWApKXt0LnByZXZlbnREZWZhdWx0KCk7dGhpcy5wYXJlbnQ/LmlzTXVsdGlwbGVTZWxlY3Rpb258fHRoaXMuY29tbWl0T3JSZW1vdmUoKX19Y29tbWl0T3JSZW1vdmUoKXt0aGlzLmlzRW1wdHkoKT90aGlzLnJlbW92ZSgpOnRoaXMuY29tbWl0KCl9Y29tbWl0KCl7dGhpcy5hZGRUb0Fubm90YXRpb25TdG9yYWdlKCl9YWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSgpe3RoaXMuX3VpTWFuYWdlci5hZGRUb0Fubm90YXRpb25TdG9yYWdlKHRoaXMpfWRyYWdzdGFydCh0KXtjb25zdCBlPXRoaXMucGFyZW50LmRpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLnN0YXJ0WD10LmNsaWVudFgtZS54O3RoaXMuc3RhcnRZPXQuY2xpZW50WS1lLnk7dC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC9wbGFpbiIsdGhpcy5pZCk7dC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZD0ibW92ZSJ9c2V0QXQodCxlLG4saSl7Y29uc3RbcixzXT10aGlzLnBhcmVudERpbWVuc2lvbnM7W24saV09dGhpcy5zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbihuLGkpO3RoaXMueD0odCtuKS9yO3RoaXMueT0oZStpKS9zO3RoaXMuZml4QW5kU2V0UG9zaXRpb24oKX0jUih0LGUsbil7bGV0W2kscl09dDtbZSxuXT10aGlzLnNjcmVlblRvUGFnZVRyYW5zbGF0aW9uKGUsbik7dGhpcy54Kz1lL2k7dGhpcy55Kz1uL3I7dGhpcy5maXhBbmRTZXRQb3NpdGlvbigpfXRyYW5zbGF0ZSh0LGUpe3RoaXMuI1IodGhpcy5wYXJlbnREaW1lbnNpb25zLHQsZSl9dHJhbnNsYXRlSW5QYWdlKHQsZSl7dGhpcy4jUih0aGlzLnBhZ2VEaW1lbnNpb25zLHQsZSk7dGhpcy5kaXYuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0In0pfWZpeEFuZFNldFBvc2l0aW9uKCl7Y29uc3RbdCxlXT10aGlzLnBhZ2VEaW1lbnNpb25zO2xldHt4Om4seTppLHdpZHRoOnIsaGVpZ2h0OnN9PXRoaXM7cio9dDtzKj1lO24qPXQ7aSo9ZTtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOm49TWF0aC5tYXgoMCxNYXRoLm1pbih0LXIsbikpO2k9TWF0aC5tYXgoMCxNYXRoLm1pbihlLXMsaSkpO2JyZWFrO2Nhc2UgOTA6bj1NYXRoLm1heCgwLE1hdGgubWluKHQtcyxuKSk7aT1NYXRoLm1pbihlLE1hdGgubWF4KHIsaSkpO2JyZWFrO2Nhc2UgMTgwOm49TWF0aC5taW4odCxNYXRoLm1heChyLG4pKTtpPU1hdGgubWluKGUsTWF0aC5tYXgocyxpKSk7YnJlYWs7Y2FzZSAyNzA6bj1NYXRoLm1pbih0LE1hdGgubWF4KHMsbikpO2k9TWF0aC5tYXgoMCxNYXRoLm1pbihlLXIsaSkpfXRoaXMueD1uL3Q7dGhpcy55PWkvZTt0aGlzLmRpdi5zdHlsZS5sZWZ0PWAkeygxMDAqdGhpcy54KS50b0ZpeGVkKDIpfSVgO3RoaXMuZGl2LnN0eWxlLnRvcD1gJHsoMTAwKnRoaXMueSkudG9GaXhlZCgyKX0lYH1zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbih0LGUpe3N3aXRjaCh0aGlzLnBhcmVudFJvdGF0aW9uKXtjYXNlIDkwOnJldHVybltlLC10XTtjYXNlIDE4MDpyZXR1cm5bLXQsLWVdO2Nhc2UgMjcwOnJldHVyblstZSx0XTtkZWZhdWx0OnJldHVyblt0LGVdfX1wYWdlVHJhbnNsYXRpb25Ub1NjcmVlbih0LGUpe3N3aXRjaCh0aGlzLnBhcmVudFJvdGF0aW9uKXtjYXNlIDkwOnJldHVyblstZSx0XTtjYXNlIDE4MDpyZXR1cm5bLXQsLWVdO2Nhc2UgMjcwOnJldHVybltlLC10XTtkZWZhdWx0OnJldHVyblt0LGVdfX1nZXQgcGFyZW50U2NhbGUoKXtyZXR1cm4gdGhpcy5fdWlNYW5hZ2VyLnZpZXdQYXJhbWV0ZXJzLnJlYWxTY2FsZX1nZXQgcGFyZW50Um90YXRpb24oKXtyZXR1cm4odGhpcy5fdWlNYW5hZ2VyLnZpZXdQYXJhbWV0ZXJzLnJvdGF0aW9uK3RoaXMucGFnZVJvdGF0aW9uKSUzNjB9Z2V0IHBhcmVudERpbWVuc2lvbnMoKXtjb25zdHtyZWFsU2NhbGU6dH09dGhpcy5fdWlNYW5hZ2VyLnZpZXdQYXJhbWV0ZXJzLFtlLG5dPXRoaXMucGFnZURpbWVuc2lvbnM7cmV0dXJuW2UqdCxuKnRdfXNldERpbXModCxlKXtjb25zdFtuLGldPXRoaXMucGFyZW50RGltZW5zaW9uczt0aGlzLmRpdi5zdHlsZS53aWR0aD1gJHsoMTAwKnQvbikudG9GaXhlZCgyKX0lYDt0aGlzLiNTfHwodGhpcy5kaXYuc3R5bGUuaGVpZ2h0PWAkeygxMDAqZS9pKS50b0ZpeGVkKDIpfSVgKX1maXhEaW1zKCl7Y29uc3R7c3R5bGU6dH09dGhpcy5kaXYse2hlaWdodDplLHdpZHRoOm59PXQsaT1uLmVuZHNXaXRoKCIlIikscj0hdGhpcy4jUyYmZS5lbmRzV2l0aCgiJSIpO2lmKGkmJnIpcmV0dXJuO2NvbnN0W3MsYV09dGhpcy5wYXJlbnREaW1lbnNpb25zO2l8fCh0LndpZHRoPWAkeygxMDAqcGFyc2VGbG9hdChuKS9zKS50b0ZpeGVkKDIpfSVgKTt0aGlzLiNTfHxyfHwodC5oZWlnaHQ9YCR7KDEwMCpwYXJzZUZsb2F0KGUpL2EpLnRvRml4ZWQoMil9JWApfWdldEluaXRpYWxUcmFuc2xhdGlvbigpe3JldHVyblswLDBdfSNGKCl7aWYodGhpcy4jRSlyZXR1cm47dGhpcy4jRT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLiNFLmNsYXNzTGlzdC5hZGQoInJlc2l6ZXJzIik7Y29uc3QgdD1bInRvcExlZnQiLCJ0b3BSaWdodCIsImJvdHRvbVJpZ2h0IiwiYm90dG9tTGVmdCJdO3RoaXMuX3dpbGxLZWVwQXNwZWN0UmF0aW98fHQucHVzaCgidG9wTWlkZGxlIiwibWlkZGxlUmlnaHQiLCJib3R0b21NaWRkbGUiLCJtaWRkbGVMZWZ0Iik7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLiNFLmFwcGVuZCh0KTt0LmNsYXNzTGlzdC5hZGQoInJlc2l6ZXIiLGUpO3QuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI0kuYmluZCh0aGlzLGUpKX10aGlzLmRpdi5wcmVwZW5kKHRoaXMuI0UpfSNJKHQsZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3RoaXMuI3g9W2UuY2xpZW50WCxlLmNsaWVudFldO2NvbnN0IG49dGhpcy4jRC5iaW5kKHRoaXMsdCksaT10aGlzLmRpdi5kcmFnZ2FibGU7dGhpcy5kaXYuZHJhZ2dhYmxlPSExO2NvbnN0IHI9YHJlc2l6aW5nJHt0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dC5zbGljZSgxKX1gO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKHIpO2NvbnN0IHM9e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixuLHMpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLCgoKT0+e3RoaXMuX3VpTWFuYWdlci5zdG9wVW5kb0FjY3VtdWxhdGlvbigpO3RoaXMuZGl2LmRyYWdnYWJsZT1pO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QucmVtb3ZlKHIpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsbixzKX0pLHtvbmNlOiEwfSl9I0QodCxlKXtjb25zdHtjbGllbnRYOm4sY2xpZW50WTpyfT1lLHM9bi10aGlzLiN4WzBdLGE9ci10aGlzLiN4WzFdO3RoaXMuI3hbMF09bjt0aGlzLiN4WzFdPXI7Y29uc3RbbyxsXT10aGlzLnBhcmVudERpbWVuc2lvbnMsYz10aGlzLngsaD10aGlzLnksZD10aGlzLndpZHRoLHU9dGhpcy5oZWlnaHQscD1Bbm5vdGF0aW9uRWRpdG9yLk1JTl9TSVpFL28sZj1Bbm5vdGF0aW9uRWRpdG9yLk1JTl9TSVpFL2w7bGV0IGc7Y29uc3Qgcm91bmQ9dD0+TWF0aC5yb3VuZCgxZTQqdCkvMWU0LHVwZGF0ZVBvc2l0aW9uPSh0LGUpPT57Y29uc3RbbixpXT10aGlzLnBhcmVudERpbWVuc2lvbnM7dGhpcy5zZXREaW1zKG4qdCxpKmUpO3RoaXMuZml4QW5kU2V0UG9zaXRpb24oKX07c3dpdGNoKHQpe2Nhc2UidG9wTGVmdCI6e2lmKE1hdGguc2lnbihzKSpNYXRoLnNpZ24oYSk8MClyZXR1cm47Y29uc3QgdD1NYXRoLmh5cG90KHMsYSksZT1NYXRoLmh5cG90KGQqbyx1KmwpLG49cm91bmQoYytkKSxpPXJvdW5kKGgrdSkscj1NYXRoLm1heChNYXRoLm1pbigxLU1hdGguc2lnbihzKSoodC9lKSwxL2QsMS91KSxwL2QsZi91KSxtPXJvdW5kKGQqciksYj1yb3VuZCh1KnIpLHY9bi1tLHk9aS1iO2c9KCk9Pnt0aGlzLndpZHRoPW07dGhpcy5oZWlnaHQ9Yjt0aGlzLng9djt0aGlzLnk9eTt1cGRhdGVQb3NpdGlvbihtLGIpfTticmVha31jYXNlInRvcE1pZGRsZSI6e2NvbnN0IHQ9cm91bmQodGhpcy55K3UpLGU9cm91bmQoTWF0aC5tYXgoZixNYXRoLm1pbigxLHUtYS9sKSkpLG49dC1lO2c9KCk9Pnt0aGlzLmhlaWdodD1lO3RoaXMueT1uO3VwZGF0ZVBvc2l0aW9uKGQsZSl9O2JyZWFrfWNhc2UidG9wUmlnaHQiOntpZihNYXRoLnNpZ24ocykqTWF0aC5zaWduKGEpPjApcmV0dXJuO2NvbnN0IHQ9TWF0aC5oeXBvdChzLGEpLGU9TWF0aC5oeXBvdCh0aGlzLndpZHRoKm8sdGhpcy5oZWlnaHQqbCksbj1yb3VuZChoK3RoaXMuaGVpZ2h0KSxpPU1hdGgubWF4KE1hdGgubWluKDErTWF0aC5zaWduKHMpKih0L2UpLDEvZCwxL3UpLHAvZCxmL3UpLHI9cm91bmQoZCppKSxjPXJvdW5kKHUqaSksbT1uLWM7Zz0oKT0+e3RoaXMud2lkdGg9cjt0aGlzLmhlaWdodD1jO3RoaXMueT1tO3VwZGF0ZVBvc2l0aW9uKHIsYyl9O2JyZWFrfWNhc2UibWlkZGxlUmlnaHQiOntjb25zdCB0PXJvdW5kKE1hdGgubWF4KHAsTWF0aC5taW4oMSxkK3MvbykpKTtnPSgpPT57dGhpcy53aWR0aD10O3VwZGF0ZVBvc2l0aW9uKHQsdSl9O2JyZWFrfWNhc2UiYm90dG9tUmlnaHQiOntpZihNYXRoLnNpZ24ocykqTWF0aC5zaWduKGEpPDApcmV0dXJuO2NvbnN0IHQ9TWF0aC5oeXBvdChzLGEpLGU9TWF0aC5oeXBvdCh0aGlzLndpZHRoKm8sdGhpcy5oZWlnaHQqbCksbj1NYXRoLm1heChNYXRoLm1pbigxK01hdGguc2lnbihzKSoodC9lKSwxL2QsMS91KSxwL2QsZi91KSxpPXJvdW5kKGQqbikscj1yb3VuZCh1Km4pO2c9KCk9Pnt0aGlzLndpZHRoPWk7dGhpcy5oZWlnaHQ9cjt1cGRhdGVQb3NpdGlvbihpLHIpfTticmVha31jYXNlImJvdHRvbU1pZGRsZSI6e2NvbnN0IHQ9cm91bmQoTWF0aC5tYXgoZixNYXRoLm1pbigxLHUrYS9sKSkpO2c9KCk9Pnt0aGlzLmhlaWdodD10O3VwZGF0ZVBvc2l0aW9uKGQsdCl9O2JyZWFrfWNhc2UiYm90dG9tTGVmdCI6e2lmKE1hdGguc2lnbihzKSpNYXRoLnNpZ24oYSk+MClyZXR1cm47Y29uc3QgdD1NYXRoLmh5cG90KHMsYSksZT1NYXRoLmh5cG90KHRoaXMud2lkdGgqbyx0aGlzLmhlaWdodCpsKSxuPXJvdW5kKGMrdGhpcy53aWR0aCksaT1NYXRoLm1heChNYXRoLm1pbigxLU1hdGguc2lnbihzKSoodC9lKSwxL2QsMS91KSxwL2QsZi91KSxyPXJvdW5kKGQqaSksaD1yb3VuZCh1KmkpLG09bi1yO2c9KCk9Pnt0aGlzLndpZHRoPXI7dGhpcy5oZWlnaHQ9aDt0aGlzLng9bTt1cGRhdGVQb3NpdGlvbihyLGgpfTticmVha31jYXNlIm1pZGRsZUxlZnQiOntjb25zdCB0PXJvdW5kKGMrZCksZT1yb3VuZChNYXRoLm1heChwLE1hdGgubWluKDEsZC1zL28pKSksbj10LWU7Zz0oKT0+e3RoaXMud2lkdGg9ZTt0aGlzLng9bjt1cGRhdGVQb3NpdGlvbihlLHUpfTticmVha319dGhpcy5hZGRDb21tYW5kcyh7Y21kOmcsdW5kbzooKT0+e3RoaXMud2lkdGg9ZDt0aGlzLmhlaWdodD11O3RoaXMueD1jO3RoaXMueT1oO3VwZGF0ZVBvc2l0aW9uKGQsdSl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5SRVNJWkUsb3ZlcndyaXRlSWZTYW1lVHlwZTohMCxrZWVwVW5kbzohMH0pfXJlbmRlcigpe3RoaXMuZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuZGl2LnNldEF0dHJpYnV0ZSgiZGF0YS1lZGl0b3Itcm90YXRpb24iLCgzNjAtdGhpcy5yb3RhdGlvbiklMzYwKTt0aGlzLmRpdi5jbGFzc05hbWU9dGhpcy5uYW1lO3RoaXMuZGl2LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuaWQpO3RoaXMuZGl2LnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLDApO3RoaXMuc2V0SW5Gb3JlZ3JvdW5kKCk7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy4jdyk7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLHRoaXMuI0MpO2NvbnN0W3QsZV09dGhpcy5wYXJlbnREaW1lbnNpb25zO2lmKHRoaXMucGFyZW50Um90YXRpb24lMTgwIT0wKXt0aGlzLmRpdi5zdHlsZS5tYXhXaWR0aD1gJHsoMTAwKmUvdCkudG9GaXhlZCgyKX0lYDt0aGlzLmRpdi5zdHlsZS5tYXhIZWlnaHQ9YCR7KDEwMCp0L2UpLnRvRml4ZWQoMil9JWB9Y29uc3RbbixpXT10aGlzLmdldEluaXRpYWxUcmFuc2xhdGlvbigpO3RoaXMudHJhbnNsYXRlKG4saSk7KDAsci5iaW5kRXZlbnRzKSh0aGlzLHRoaXMuZGl2LFsiZHJhZ3N0YXJ0IiwicG9pbnRlcmRvd24iXSk7cmV0dXJuIHRoaXMuZGl2fXBvaW50ZXJkb3duKHQpe2NvbnN0e2lzTWFjOmV9PWkuRmVhdHVyZVRlc3QucGxhdGZvcm07aWYoMCE9PXQuYnV0dG9ufHx0LmN0cmxLZXkmJmUpdC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2V7dC5jdHJsS2V5JiYhZXx8dC5zaGlmdEtleXx8dC5tZXRhS2V5JiZlP3RoaXMucGFyZW50LnRvZ2dsZVNlbGVjdGVkKHRoaXMpOnRoaXMucGFyZW50LnNldFNlbGVjdGVkKHRoaXMpO3RoaXMuI1Q9ITB9fWdldFJlY3QodCxlKXtjb25zdCBuPXRoaXMucGFyZW50U2NhbGUsW2kscl09dGhpcy5wYWdlRGltZW5zaW9ucyxbcyxhXT10aGlzLnBhZ2VUcmFuc2xhdGlvbixvPXQvbixsPWUvbixjPXRoaXMueCppLGg9dGhpcy55KnIsZD10aGlzLndpZHRoKmksdT10aGlzLmhlaWdodCpyO3N3aXRjaCh0aGlzLnJvdGF0aW9uKXtjYXNlIDA6cmV0dXJuW2MrbytzLHItaC1sLXUrYSxjK28rZCtzLHItaC1sK2FdO2Nhc2UgOTA6cmV0dXJuW2MrbCtzLHItaCtvK2EsYytsK3UrcyxyLWgrbytkK2FdO2Nhc2UgMTgwOnJldHVybltjLW8tZCtzLHItaCtsK2EsYy1vK3Msci1oK2wrdSthXTtjYXNlIDI3MDpyZXR1cm5bYy1sLXUrcyxyLWgtby1kK2EsYy1sK3Msci1oLW8rYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19Z2V0UmVjdEluQ3VycmVudENvb3Jkcyh0LGUpe2NvbnN0W24saSxyLHNdPXQsYT1yLW4sbz1zLWk7c3dpdGNoKHRoaXMucm90YXRpb24pe2Nhc2UgMDpyZXR1cm5bbixlLXMsYSxvXTtjYXNlIDkwOnJldHVybltuLGUtaSxvLGFdO2Nhc2UgMTgwOnJldHVybltyLGUtaSxhLG9dO2Nhc2UgMjcwOnJldHVybltyLGUtcyxvLGFdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdGF0aW9uIil9fW9uY2VBZGRlZCgpe31pc0VtcHR5KCl7cmV0dXJuITF9ZW5hYmxlRWRpdE1vZGUoKXt0aGlzLiNrPSEwfWRpc2FibGVFZGl0TW9kZSgpe3RoaXMuI2s9ITF9aXNJbkVkaXRNb2RlKCl7cmV0dXJuIHRoaXMuI2t9c2hvdWxkR2V0S2V5Ym9hcmRFdmVudHMoKXtyZXR1cm4hMX1uZWVkc1RvQmVSZWJ1aWx0KCl7cmV0dXJuIHRoaXMuZGl2JiYhdGhpcy5pc0F0dGFjaGVkVG9ET019cmVidWlsZCgpe3RoaXMuZGl2Py5hZGRFdmVudExpc3RlbmVyKCJmb2N1c2luIix0aGlzLiN3KTt0aGlzLmRpdj8uYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLHRoaXMuI0MpfXNlcmlhbGl6ZSgpeygwLGkudW5yZWFjaGFibGUpKCJBbiBlZGl0b3IgbXVzdCBiZSBzZXJpYWxpemFibGUiKX1zdGF0aWMgZGVzZXJpYWxpemUodCxlLG4pe2NvbnN0IGk9bmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtwYXJlbnQ6ZSxpZDplLmdldE5leHRJZCgpLHVpTWFuYWdlcjpufSk7aS5yb3RhdGlvbj10LnJvdGF0aW9uO2NvbnN0W3Isc109aS5wYWdlRGltZW5zaW9ucyxbYSxvLGwsY109aS5nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQucmVjdCxzKTtpLng9YS9yO2kueT1vL3M7aS53aWR0aD1sL3I7aS5oZWlnaHQ9Yy9zO3JldHVybiBpfXJlbW92ZSgpe3RoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI3cpO3RoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLiNDKTt0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKTt0aGlzLnBhcmVudD90aGlzLnBhcmVudC5yZW1vdmUodGhpcyk6dGhpcy5fdWlNYW5hZ2VyLnJlbW92ZUVkaXRvcih0aGlzKX1nZXQgaXNSZXNpemFibGUoKXtyZXR1cm4hMX1tYWtlUmVzaXphYmxlKCl7aWYodGhpcy5pc1Jlc2l6YWJsZSl7dGhpcy4jRigpO3RoaXMuI0UuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIil9fXNlbGVjdCgpe3RoaXMubWFrZVJlc2l6YWJsZSgpO3RoaXMuZGl2Py5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZEVkaXRvciIpfXVuc2VsZWN0KCl7dGhpcy4jRT8uY2xhc3NMaXN0LmFkZCgiaGlkZGVuIik7dGhpcy5kaXY/LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkRWRpdG9yIik7dGhpcy5kaXY/LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiZ0aGlzLl91aU1hbmFnZXIuY3VycmVudExheWVyLmRpdi5mb2N1cygpfXVwZGF0ZVBhcmFtcyh0LGUpe31kaXNhYmxlRWRpdGluZygpe31lbmFibGVFZGl0aW5nKCl7fWVudGVySW5FZGl0TW9kZSgpe31nZXQgY29udGVudERpdigpe3JldHVybiB0aGlzLmRpdn1nZXQgaXNFZGl0aW5nKCl7cmV0dXJuIHRoaXMuI1B9c2V0IGlzRWRpdGluZyh0KXt0aGlzLiNQPXQ7aWYodGhpcy5wYXJlbnQpaWYodCl7dGhpcy5wYXJlbnQuc2V0U2VsZWN0ZWQodGhpcyk7dGhpcy5wYXJlbnQuc2V0QWN0aXZlRWRpdG9yKHRoaXMpfWVsc2UgdGhpcy5wYXJlbnQuc2V0QWN0aXZlRWRpdG9yKG51bGwpfXNldEFzcGVjdFJhdGlvKHQsZSl7dGhpcy4jUz0hMDtjb25zdCBuPXQvZSx7c3R5bGU6aX09dGhpcy5kaXY7aS5hc3BlY3RSYXRpbz1uO2kuaGVpZ2h0PSJhdXRvIn1zdGF0aWMgZ2V0IE1JTl9TSVpFKCl7cmV0dXJuIDE2fX1lLkFubm90YXRpb25FZGl0b3I9QW5ub3RhdGlvbkVkaXRvcjtjbGFzcyBGYWtlRWRpdG9yIGV4dGVuZHMgQW5ub3RhdGlvbkVkaXRvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KTt0aGlzLmFubm90YXRpb25FbGVtZW50SWQ9dC5hbm5vdGF0aW9uRWxlbWVudElkO3RoaXMuZGVsZXRlZD0hMH1zZXJpYWxpemUoKXtyZXR1cm57aWQ6dGhpcy5hbm5vdGF0aW9uRWxlbWVudElkLGRlbGV0ZWQ6ITAscGFnZUluZGV4OnRoaXMucGFnZUluZGV4fX19fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLktleWJvYXJkTWFuYWdlcj1lLkNvbW1hbmRNYW5hZ2VyPWUuQ29sb3JNYW5hZ2VyPWUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcj12b2lkIDA7ZS5iaW5kRXZlbnRzPWZ1bmN0aW9uIGJpbmRFdmVudHModCxlLG4pe2Zvcihjb25zdCBpIG9mIG4pZS5hZGRFdmVudExpc3RlbmVyKGksdFtpXS5iaW5kKHQpKX07ZS5vcGFjaXR5VG9IZXg9ZnVuY3Rpb24gb3BhY2l0eVRvSGV4KHQpe3JldHVybiBNYXRoLnJvdW5kKE1hdGgubWluKDI1NSxNYXRoLm1heCgxLDI1NSp0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9O24oMik7big4OSk7bigxMjUpO24oMTM1KTtuKDEzNyk7bigxNDApO24oMTQyKTtuKDE0NCk7bigxNDYpO24oMTY1KTt2YXIgaT1uKDEpLHI9bigxNjcpO2NsYXNzIElkTWFuYWdlcnsjTz0wO2dldElkKCl7cmV0dXJuYCR7aS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4fSR7dGhpcy4jTysrfWB9fWNsYXNzIEltYWdlTWFuYWdlcnsjTD0oMCxpLmdldFV1aWQpKCk7I089MDsjTj1udWxsO2FzeW5jI0IodCxlKXt0aGlzLiNOfHw9bmV3IE1hcDtsZXQgbj10aGlzLiNOLmdldCh0KTtpZihudWxsPT09bilyZXR1cm4gbnVsbDtpZihuPy5iaXRtYXApe24ucmVmQ291bnRlcis9MTtyZXR1cm4gbn10cnl7bnx8PXtiaXRtYXA6bnVsbCxpZDpgaW1hZ2VfJHt0aGlzLiNMfV8ke3RoaXMuI08rK31gLHJlZkNvdW50ZXI6MCxpc1N2ZzohMX07bGV0IHQ7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtuLnVybD1lO2NvbnN0IGk9YXdhaXQgZmV0Y2goZSk7aWYoIWkub2spdGhyb3cgbmV3IEVycm9yKGkuc3RhdHVzVGV4dCk7dD1hd2FpdCBpLmJsb2IoKX1lbHNlIHQ9bi5maWxlPWU7aWYoImltYWdlL3N2Zyt4bWwiPT09dC50eXBlKXtjb25zdCBlPW5ldyBGaWxlUmVhZGVyLGk9bmV3IEltYWdlLHI9bmV3IFByb21pc2UoKCh0LHIpPT57aS5vbmxvYWQ9KCk9PntuLmJpdG1hcD1pO24uaXNTdmc9ITA7dCgpfTtlLm9ubG9hZD0oKT0+e2kuc3JjPW4uc3ZnVXJsPWUucmVzdWx0fTtpLm9uZXJyb3I9ZS5vbmVycm9yPXJ9KSk7ZS5yZWFkQXNEYXRhVVJMKHQpO2F3YWl0IHJ9ZWxzZSBuLmJpdG1hcD1hd2FpdCBjcmVhdGVJbWFnZUJpdG1hcCh0KTtuLnJlZkNvdW50ZXI9MX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQpO249bnVsbH10aGlzLiNOLnNldCh0LG4pO24mJnRoaXMuI04uc2V0KG4uaWQsbik7cmV0dXJuIG59YXN5bmMgZ2V0RnJvbUZpbGUodCl7Y29uc3R7bGFzdE1vZGlmaWVkOmUsbmFtZTpuLHNpemU6aSx0eXBlOnJ9PXQ7cmV0dXJuIHRoaXMuI0IoYCR7ZX1fJHtufV8ke2l9XyR7cn1gLHQpfWFzeW5jIGdldEZyb21VcmwodCl7cmV0dXJuIHRoaXMuI0IodCx0KX1hc3luYyBnZXRGcm9tSWQodCl7dGhpcy4jTnx8PW5ldyBNYXA7Y29uc3QgZT10aGlzLiNOLmdldCh0KTtpZighZSlyZXR1cm4gbnVsbDtpZihlLmJpdG1hcCl7ZS5yZWZDb3VudGVyKz0xO3JldHVybiBlfXJldHVybiBlLmZpbGU/dGhpcy5nZXRGcm9tRmlsZShlLmZpbGUpOnRoaXMuZ2V0RnJvbVVybChlLnVybCl9Z2V0U3ZnVXJsKHQpe2NvbnN0IGU9dGhpcy4jTi5nZXQodCk7cmV0dXJuIGU/LmlzU3ZnP2Uuc3ZnVXJsOm51bGx9ZGVsZXRlSWQodCl7dGhpcy4jTnx8PW5ldyBNYXA7Y29uc3QgZT10aGlzLiNOLmdldCh0KTtpZihlKXtlLnJlZkNvdW50ZXItPTE7MD09PWUucmVmQ291bnRlciYmKGUuYml0bWFwPW51bGwpfX1pc1ZhbGlkSWQodCl7cmV0dXJuIHQuc3RhcnRzV2l0aChgaW1hZ2VfJHt0aGlzLiNMfV9gKX19Y2xhc3MgQ29tbWFuZE1hbmFnZXJ7I2o9W107I1U9ITE7I3o7I0g9LTE7Y29uc3RydWN0b3IoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MTI4O3RoaXMuI3o9dH1hZGQodCl7bGV0e2NtZDplLHVuZG86bixtdXN0RXhlYzppLHR5cGU6cj1OYU4sb3ZlcndyaXRlSWZTYW1lVHlwZTpzPSExLGtlZXBVbmRvOmE9ITF9PXQ7aSYmZSgpO2lmKHRoaXMuI1UpcmV0dXJuO2NvbnN0IG89e2NtZDplLHVuZG86bix0eXBlOnJ9O2lmKC0xPT09dGhpcy4jSCl7dGhpcy4jai5sZW5ndGg+MCYmKHRoaXMuI2oubGVuZ3RoPTApO3RoaXMuI0g9MDt0aGlzLiNqLnB1c2gobyk7cmV0dXJufWlmKHMmJnRoaXMuI2pbdGhpcy4jSF0udHlwZT09PXIpe2EmJihvLnVuZG89dGhpcy4jalt0aGlzLiNIXS51bmRvKTt0aGlzLiNqW3RoaXMuI0hdPW87cmV0dXJufWNvbnN0IGw9dGhpcy4jSCsxO2lmKGw9PT10aGlzLiN6KXRoaXMuI2ouc3BsaWNlKDAsMSk7ZWxzZXt0aGlzLiNIPWw7bDx0aGlzLiNqLmxlbmd0aCYmdGhpcy4jai5zcGxpY2UobCl9dGhpcy4jai5wdXNoKG8pfXN0b3BVbmRvQWNjdW11bGF0aW9uKCl7LTEhPT10aGlzLiNIJiYodGhpcy4jalt0aGlzLiNIXS50eXBlPU5hTil9dW5kbygpe2lmKC0xIT09dGhpcy4jSCl7dGhpcy4jVT0hMDt0aGlzLiNqW3RoaXMuI0hdLnVuZG8oKTt0aGlzLiNVPSExO3RoaXMuI0gtPTF9fXJlZG8oKXtpZih0aGlzLiNIPHRoaXMuI2oubGVuZ3RoLTEpe3RoaXMuI0grPTE7dGhpcy4jVT0hMDt0aGlzLiNqW3RoaXMuI0hdLmNtZCgpO3RoaXMuI1U9ITF9fWhhc1NvbWV0aGluZ1RvVW5kbygpe3JldHVybi0xIT09dGhpcy4jSH1oYXNTb21ldGhpbmdUb1JlZG8oKXtyZXR1cm4gdGhpcy4jSDx0aGlzLiNqLmxlbmd0aC0xfWRlc3Ryb3koKXt0aGlzLiNqPW51bGx9fWUuQ29tbWFuZE1hbmFnZXI9Q29tbWFuZE1hbmFnZXI7Y2xhc3MgS2V5Ym9hcmRNYW5hZ2Vye2NvbnN0cnVjdG9yKHQpe3RoaXMuYnVmZmVyPVtdO3RoaXMuY2FsbGJhY2tzPW5ldyBNYXA7dGhpcy5hbGxLZXlzPW5ldyBTZXQ7Y29uc3R7aXNNYWM6ZX09aS5GZWF0dXJlVGVzdC5wbGF0Zm9ybTtmb3IoY29uc3RbbixpLHI9e31db2YgdClmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBuPXQuc3RhcnRzV2l0aCgibWFjKyIpO2lmKGUmJm4pe3RoaXMuY2FsbGJhY2tzLnNldCh0LnNsaWNlKDQpLHtjYWxsYmFjazppLG9wdGlvbnM6cn0pO3RoaXMuYWxsS2V5cy5hZGQodC5zcGxpdCgiKyIpLmF0KC0xKSl9ZWxzZSBpZighZSYmIW4pe3RoaXMuY2FsbGJhY2tzLnNldCh0LHtjYWxsYmFjazppLG9wdGlvbnM6cn0pO3RoaXMuYWxsS2V5cy5hZGQodC5zcGxpdCgiKyIpLmF0KC0xKSl9fX0jcSh0KXt0LmFsdEtleSYmdGhpcy5idWZmZXIucHVzaCgiYWx0Iik7dC5jdHJsS2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJjdHJsIik7dC5tZXRhS2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJtZXRhIik7dC5zaGlmdEtleSYmdGhpcy5idWZmZXIucHVzaCgic2hpZnQiKTt0aGlzLmJ1ZmZlci5wdXNoKHQua2V5KTtjb25zdCBlPXRoaXMuYnVmZmVyLmpvaW4oIisiKTt0aGlzLmJ1ZmZlci5sZW5ndGg9MDtyZXR1cm4gZX1leGVjKHQsZSl7aWYoIXRoaXMuYWxsS2V5cy5oYXMoZS5rZXkpKXJldHVybjtjb25zdCBuPXRoaXMuY2FsbGJhY2tzLmdldCh0aGlzLiNxKGUpKTtpZighbilyZXR1cm47Y29uc3R7Y2FsbGJhY2s6aSxvcHRpb25zOntidWJibGVzOnI9ITEsYXJnczpzPVtdLGNoZWNrZXI6YT1udWxsfX09bjtpZighYXx8YSh0LGUpKXtpLmJpbmQodCwuLi5zKSgpO2lmKCFyKXtlLnN0b3BQcm9wYWdhdGlvbigpO2UucHJldmVudERlZmF1bHQoKX19fX1lLktleWJvYXJkTWFuYWdlcj1LZXlib2FyZE1hbmFnZXI7Y2xhc3MgQ29sb3JNYW5hZ2Vye3N0YXRpYyBfY29sb3JzTWFwcGluZz1uZXcgTWFwKFtbIkNhbnZhc1RleHQiLFswLDAsMF1dLFsiQ2FudmFzIixbMjU1LDI1NSwyNTVdXV0pO2dldCBfY29sb3JzKCl7Y29uc3QgdD1uZXcgTWFwKFtbIkNhbnZhc1RleHQiLG51bGxdLFsiQ2FudmFzIixudWxsXV0pOygwLHIuZ2V0Q29sb3JWYWx1ZXMpKHQpO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfY29sb3JzIix0KX1jb252ZXJ0KHQpe2NvbnN0IGU9KDAsci5nZXRSR0IpKHQpO2lmKCF3aW5kb3cubWF0Y2hNZWRpYSgiKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkiKS5tYXRjaGVzKXJldHVybiBlO2Zvcihjb25zdFt0LG5db2YgdGhpcy5fY29sb3JzKWlmKG4uZXZlcnkoKCh0LG4pPT50PT09ZVtuXSkpKXJldHVybiBDb2xvck1hbmFnZXIuX2NvbG9yc01hcHBpbmcuZ2V0KHQpO3JldHVybiBlfWdldEhleENvZGUodCl7Y29uc3QgZT10aGlzLl9jb2xvcnMuZ2V0KHQpO3JldHVybiBlP2kuVXRpbC5tYWtlSGV4Q29sb3IoLi4uZSk6dH19ZS5Db2xvck1hbmFnZXI9Q29sb3JNYW5hZ2VyO2NsYXNzIEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXJ7I1c9bnVsbDsjRz1uZXcgTWFwOyNWPW5ldyBNYXA7IyQ9bnVsbDsjWD1uZXcgQ29tbWFuZE1hbmFnZXI7I0s9MDsjWT1uZXcgU2V0OyNKPW51bGw7I1E9bmV3IFNldDsjWj1udWxsOyN0dD1udWxsOyNldD1uZXcgSWRNYW5hZ2VyOyNudD0hMTsjaXQ9aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FOyNydD1uZXcgU2V0OyNzdD1udWxsOyNhdD10aGlzLmNvcHkuYmluZCh0aGlzKTsjb3Q9dGhpcy5jdXQuYmluZCh0aGlzKTsjbHQ9dGhpcy5wYXN0ZS5iaW5kKHRoaXMpOyNjdD10aGlzLmtleWRvd24uYmluZCh0aGlzKTsjaHQ9dGhpcy5vbkVkaXRpbmdBY3Rpb24uYmluZCh0aGlzKTsjZHQ9dGhpcy5vblBhZ2VDaGFuZ2luZy5iaW5kKHRoaXMpOyN1dD10aGlzLm9uU2NhbGVDaGFuZ2luZy5iaW5kKHRoaXMpOyNwdD10aGlzLm9uUm90YXRpb25DaGFuZ2luZy5iaW5kKHRoaXMpOyNmdD17aXNFZGl0aW5nOiExLGlzRW1wdHk6ITAsaGFzU29tZXRoaW5nVG9VbmRvOiExLGhhc1NvbWV0aGluZ1RvUmVkbzohMSxoYXNTZWxlY3RlZEVkaXRvcjohMX07I2d0PVswLDBdOyNtdD1udWxsOyNidD1udWxsO3N0YXRpYyBUUkFOU0xBVEVfU01BTEw9MTtzdGF0aWMgVFJBTlNMQVRFX0JJRz0xMDtzdGF0aWMgZ2V0IF9rZXlib2FyZE1hbmFnZXIoKXtjb25zdCB0PUFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIucHJvdG90eXBlLGFycm93Q2hlY2tlcj10PT57Y29uc3R7YWN0aXZlRWxlbWVudDplfT1kb2N1bWVudDtyZXR1cm4gZSYmdC4jYnQuY29udGFpbnMoZSkmJnQuaGFzU29tZXRoaW5nVG9Db250cm9sKCl9LGU9dGhpcy5UUkFOU0xBVEVfU01BTEwsbj10aGlzLlRSQU5TTEFURV9CSUc7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9rZXlib2FyZE1hbmFnZXIiLG5ldyBLZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrYSIsIm1hYyttZXRhK2EiXSx0LnNlbGVjdEFsbF0sW1siY3RybCt6IiwibWFjK21ldGEreiJdLHQudW5kb10sW1siY3RybCt5IiwiY3RybCtzaGlmdCt6IiwibWFjK21ldGErc2hpZnQreiIsImN0cmwrc2hpZnQrWiIsIm1hYyttZXRhK3NoaWZ0K1oiXSx0LnJlZG9dLFtbIkJhY2tzcGFjZSIsImFsdCtCYWNrc3BhY2UiLCJjdHJsK0JhY2tzcGFjZSIsInNoaWZ0K0JhY2tzcGFjZSIsIm1hYytCYWNrc3BhY2UiLCJtYWMrYWx0K0JhY2tzcGFjZSIsIm1hYytjdHJsK0JhY2tzcGFjZSIsIkRlbGV0ZSIsImN0cmwrRGVsZXRlIiwic2hpZnQrRGVsZXRlIiwibWFjK0RlbGV0ZSJdLHQuZGVsZXRlXSxbWyJFc2NhcGUiLCJtYWMrRXNjYXBlIl0sdC51bnNlbGVjdEFsbF0sW1siQXJyb3dMZWZ0IiwibWFjK0Fycm93TGVmdCJdLHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLHthcmdzOlstZSwwXSxjaGVja2VyOmFycm93Q2hlY2tlcn1dLFtbImN0cmwrQXJyb3dMZWZ0IiwibWFjK3NoaWZ0K0Fycm93TGVmdCJdLHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLHthcmdzOlstbiwwXSxjaGVja2VyOmFycm93Q2hlY2tlcn1dLFtbIkFycm93UmlnaHQiLCJtYWMrQXJyb3dSaWdodCJdLHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLHthcmdzOltlLDBdLGNoZWNrZXI6YXJyb3dDaGVja2VyfV0sW1siY3RybCtBcnJvd1JpZ2h0IiwibWFjK3NoaWZ0K0Fycm93UmlnaHQiXSx0LnRyYW5zbGF0ZVNlbGVjdGVkRWRpdG9ycyx7YXJnczpbbiwwXSxjaGVja2VyOmFycm93Q2hlY2tlcn1dLFtbIkFycm93VXAiLCJtYWMrQXJyb3dVcCJdLHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLHthcmdzOlswLC1lXSxjaGVja2VyOmFycm93Q2hlY2tlcn1dLFtbImN0cmwrQXJyb3dVcCIsIm1hYytzaGlmdCtBcnJvd1VwIl0sdC50cmFuc2xhdGVTZWxlY3RlZEVkaXRvcnMse2FyZ3M6WzAsLW5dLGNoZWNrZXI6YXJyb3dDaGVja2VyfV0sW1siQXJyb3dEb3duIiwibWFjK0Fycm93RG93biJdLHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLHthcmdzOlswLGVdLGNoZWNrZXI6YXJyb3dDaGVja2VyfV0sW1siY3RybCtBcnJvd0Rvd24iLCJtYWMrc2hpZnQrQXJyb3dEb3duIl0sdC50cmFuc2xhdGVTZWxlY3RlZEVkaXRvcnMse2FyZ3M6WzAsbl0sY2hlY2tlcjphcnJvd0NoZWNrZXJ9XV0pKX1jb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLiNidD10O3RoaXMuI1o9ZTt0aGlzLiNaLl9vbigiZWRpdGluZ2FjdGlvbiIsdGhpcy4jaHQpO3RoaXMuI1ouX29uKCJwYWdlY2hhbmdpbmciLHRoaXMuI2R0KTt0aGlzLiNaLl9vbigic2NhbGVjaGFuZ2luZyIsdGhpcy4jdXQpO3RoaXMuI1ouX29uKCJyb3RhdGlvbmNoYW5naW5nIix0aGlzLiNwdCk7dGhpcy4jJD1uLmFubm90YXRpb25TdG9yYWdlO3RoaXMuI3R0PW4uZmlsdGVyRmFjdG9yeTt0aGlzLiNzdD1pO3RoaXMudmlld1BhcmFtZXRlcnM9e3JlYWxTY2FsZTpyLlBpeGVsc1BlckluY2guUERGX1RPX0NTU19VTklUUyxyb3RhdGlvbjowfX1kZXN0cm95KCl7dGhpcy4jdnQoKTt0aGlzLiNaLl9vZmYoImVkaXRpbmdhY3Rpb24iLHRoaXMuI2h0KTt0aGlzLiNaLl9vZmYoInBhZ2VjaGFuZ2luZyIsdGhpcy4jZHQpO3RoaXMuI1ouX29mZigic2NhbGVjaGFuZ2luZyIsdGhpcy4jdXQpO3RoaXMuI1ouX29mZigicm90YXRpb25jaGFuZ2luZyIsdGhpcy4jcHQpO2Zvcihjb25zdCB0IG9mIHRoaXMuI1YudmFsdWVzKCkpdC5kZXN0cm95KCk7dGhpcy4jVi5jbGVhcigpO3RoaXMuI0cuY2xlYXIoKTt0aGlzLiNRLmNsZWFyKCk7dGhpcy4jVz1udWxsO3RoaXMuI3J0LmNsZWFyKCk7dGhpcy4jWC5kZXN0cm95KCl9Z2V0IGhjbUZpbHRlcigpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJoY21GaWx0ZXIiLHRoaXMuI3N0P3RoaXMuI3R0LmFkZEhDTUZpbHRlcih0aGlzLiNzdC5mb3JlZ3JvdW5kLHRoaXMuI3N0LmJhY2tncm91bmQpOiJub25lIil9b25QYWdlQ2hhbmdpbmcodCl7bGV0e3BhZ2VOdW1iZXI6ZX09dDt0aGlzLiNLPWUtMX1mb2N1c01haW5Db250YWluZXIoKXt0aGlzLiNidC5mb2N1cygpfWFkZFNob3VsZFJlc2NhbGUodCl7dGhpcy4jUS5hZGQodCl9cmVtb3ZlU2hvdWxkUmVzY2FsZSh0KXt0aGlzLiNRLmRlbGV0ZSh0KX1vblNjYWxlQ2hhbmdpbmcodCl7bGV0e3NjYWxlOmV9PXQ7dGhpcy5jb21taXRPclJlbW92ZSgpO3RoaXMudmlld1BhcmFtZXRlcnMucmVhbFNjYWxlPWUqci5QaXhlbHNQZXJJbmNoLlBERl9UT19DU1NfVU5JVFM7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jUSl0Lm9uU2NhbGVDaGFuZ2luZygpfW9uUm90YXRpb25DaGFuZ2luZyh0KXtsZXR7cGFnZXNSb3RhdGlvbjplfT10O3RoaXMuY29tbWl0T3JSZW1vdmUoKTt0aGlzLnZpZXdQYXJhbWV0ZXJzLnJvdGF0aW9uPWV9YWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KXt0LmlzRW1wdHkoKXx8IXRoaXMuIyR8fHRoaXMuIyQuaGFzKHQuaWQpfHx0aGlzLiMkLnNldFZhbHVlKHQuaWQsdCl9I3l0KCl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI2N0LHtjYXB0dXJlOiEwfSl9I3Z0KCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI2N0LHtjYXB0dXJlOiEwfSl9I0F0KCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsdGhpcy4jYXQpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImN1dCIsdGhpcy4jb3QpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLiNsdCl9I190KCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29weSIsdGhpcy4jYXQpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImN1dCIsdGhpcy4jb3QpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLiNsdCl9Y29weSh0KXt0LnByZXZlbnREZWZhdWx0KCk7dGhpcy4jVyYmdGhpcy4jVy5jb21taXRPclJlbW92ZSgpO2lmKCF0aGlzLmhhc1NlbGVjdGlvbilyZXR1cm47Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLiNydCl7Y29uc3Qgbj10LnNlcmlhbGl6ZSghMCk7biYmZS5wdXNoKG4pfTAhPT1lLmxlbmd0aCYmdC5jbGlwYm9hcmREYXRhLnNldERhdGEoImFwcGxpY2F0aW9uL3BkZmpzIixKU09OLnN0cmluZ2lmeShlKSl9Y3V0KHQpe3RoaXMuY29weSh0KTt0aGlzLmRlbGV0ZSgpfXBhc3RlKHQpe3QucHJldmVudERlZmF1bHQoKTtsZXQgZT10LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgiYXBwbGljYXRpb24vcGRmanMiKTtpZighZSlyZXR1cm47dHJ5e2U9SlNPTi5wYXJzZShlKX1jYXRjaCh0KXsoMCxpLndhcm4pKGBwYXN0ZTogIiR7dC5tZXNzYWdlfSIuYCk7cmV0dXJufWlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybjt0aGlzLnVuc2VsZWN0QWxsKCk7Y29uc3Qgbj10aGlzLmN1cnJlbnRMYXllcjt0cnl7Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPW4uZGVzZXJpYWxpemUoaSk7aWYoIWUpcmV0dXJuO3QucHVzaChlKX1jb25zdCBjbWQ9KCk9Pntmb3IoY29uc3QgZSBvZiB0KXRoaXMuI1N0KGUpO3RoaXMuI0V0KHQpfSx1bmRvPSgpPT57Zm9yKGNvbnN0IGUgb2YgdCllLnJlbW92ZSgpfTt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6Y21kLHVuZG86dW5kbyxtdXN0RXhlYzohMH0pfWNhdGNoKHQpeygwLGkud2FybikoYHBhc3RlOiAiJHt0Lm1lc3NhZ2V9Ii5gKX19a2V5ZG93bih0KXt0aGlzLmdldEFjdGl2ZSgpPy5zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpfHxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLl9rZXlib2FyZE1hbmFnZXIuZXhlYyh0aGlzLHQpfW9uRWRpdGluZ0FjdGlvbih0KXtbInVuZG8iLCJyZWRvIiwiZGVsZXRlIiwic2VsZWN0QWxsIl0uaW5jbHVkZXModC5uYW1lKSYmdGhpc1t0Lm5hbWVdKCl9I3h0KHQpe09iamVjdC5lbnRyaWVzKHQpLnNvbWUoKHQ9PntsZXRbZSxuXT10O3JldHVybiB0aGlzLiNmdFtlXSE9PW59KSkmJnRoaXMuI1ouZGlzcGF0Y2goImFubm90YXRpb25lZGl0b3JzdGF0ZXNjaGFuZ2VkIix7c291cmNlOnRoaXMsZGV0YWlsczpPYmplY3QuYXNzaWduKHRoaXMuI2Z0LHQpfSl9I3d0KHQpe3RoaXMuI1ouZGlzcGF0Y2goImFubm90YXRpb25lZGl0b3JwYXJhbXNjaGFuZ2VkIix7c291cmNlOnRoaXMsZGV0YWlsczp0fSl9c2V0RWRpdGluZ1N0YXRlKHQpe2lmKHQpe3RoaXMuI3l0KCk7dGhpcy4jQXQoKTt0aGlzLiN4dCh7aXNFZGl0aW5nOnRoaXMuI2l0IT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FLGlzRW1wdHk6dGhpcy4jQ3QoKSxoYXNTb21ldGhpbmdUb1VuZG86dGhpcy4jWC5oYXNTb21ldGhpbmdUb1VuZG8oKSxoYXNTb21ldGhpbmdUb1JlZG86dGhpcy4jWC5oYXNTb21ldGhpbmdUb1JlZG8oKSxoYXNTZWxlY3RlZEVkaXRvcjohMX0pfWVsc2V7dGhpcy4jdnQoKTt0aGlzLiNfdCgpO3RoaXMuI3h0KHtpc0VkaXRpbmc6ITF9KX19cmVnaXN0ZXJFZGl0b3JUeXBlcyh0KXtpZighdGhpcy4jSil7dGhpcy4jSj10O2Zvcihjb25zdCB0IG9mIHRoaXMuI0opdGhpcy4jd3QodC5kZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKX19Z2V0SWQoKXtyZXR1cm4gdGhpcy4jZXQuZ2V0SWQoKX1nZXQgY3VycmVudExheWVyKCl7cmV0dXJuIHRoaXMuI1YuZ2V0KHRoaXMuI0spfWdldCBjdXJyZW50UGFnZUluZGV4KCl7cmV0dXJuIHRoaXMuI0t9YWRkTGF5ZXIodCl7dGhpcy4jVi5zZXQodC5wYWdlSW5kZXgsdCk7dGhpcy4jbnQ/dC5lbmFibGUoKTp0LmRpc2FibGUoKX1yZW1vdmVMYXllcih0KXt0aGlzLiNWLmRlbGV0ZSh0LnBhZ2VJbmRleCl9dXBkYXRlTW9kZSh0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt0aGlzLiNpdD10O2lmKHQhPT1pLkFubm90YXRpb25FZGl0b3JUeXBlLk5PTkUpe3RoaXMuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLiNUdCgpO2Zvcihjb25zdCBlIG9mIHRoaXMuI1YudmFsdWVzKCkpZS51cGRhdGVNb2RlKHQpO2lmKGUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jRy52YWx1ZXMoKSlpZih0LmFubm90YXRpb25FbGVtZW50SWQ9PT1lKXt0aGlzLnNldFNlbGVjdGVkKHQpO3QuZW50ZXJJbkVkaXRNb2RlKCk7YnJlYWt9fWVsc2V7dGhpcy5zZXRFZGl0aW5nU3RhdGUoITEpO3RoaXMuI1B0KCl9fXVwZGF0ZVRvb2xiYXIodCl7dCE9PXRoaXMuI2l0JiZ0aGlzLiNaLmRpc3BhdGNoKCJzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZSIse3NvdXJjZTp0aGlzLG1vZGU6dH0pfXVwZGF0ZVBhcmFtcyh0LGUpe2lmKHRoaXMuI0ope2Zvcihjb25zdCBuIG9mIHRoaXMuI3J0KW4udXBkYXRlUGFyYW1zKHQsZSk7Zm9yKGNvbnN0IG4gb2YgdGhpcy4jSiluLnVwZGF0ZURlZmF1bHRQYXJhbXModCxlKX19I1R0KCl7aWYoIXRoaXMuI250KXt0aGlzLiNudD0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLiNWLnZhbHVlcygpKXQuZW5hYmxlKCl9fSNQdCgpe3RoaXMudW5zZWxlY3RBbGwoKTtpZih0aGlzLiNudCl7dGhpcy4jbnQ9ITE7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jVi52YWx1ZXMoKSl0LmRpc2FibGUoKX19Z2V0RWRpdG9ycyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHRoaXMuI0cudmFsdWVzKCkpbi5wYWdlSW5kZXg9PT10JiZlLnB1c2gobik7cmV0dXJuIGV9Z2V0RWRpdG9yKHQpe3JldHVybiB0aGlzLiNHLmdldCh0KX1hZGRFZGl0b3IodCl7dGhpcy4jRy5zZXQodC5pZCx0KX1yZW1vdmVFZGl0b3IodCl7dGhpcy4jRy5kZWxldGUodC5pZCk7dGhpcy51bnNlbGVjdCh0KTt0LmFubm90YXRpb25FbGVtZW50SWQmJnRoaXMuI1kuaGFzKHQuYW5ub3RhdGlvbkVsZW1lbnRJZCl8fHRoaXMuIyQ/LnJlbW92ZSh0LmlkKX1hZGREZWxldGVkQW5ub3RhdGlvbkVsZW1lbnQodCl7dGhpcy4jWS5hZGQodC5hbm5vdGF0aW9uRWxlbWVudElkKTt0LmRlbGV0ZWQ9ITB9aXNEZWxldGVkQW5ub3RhdGlvbkVsZW1lbnQodCl7cmV0dXJuIHRoaXMuI1kuaGFzKHQpfXJlbW92ZURlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudCh0KXt0aGlzLiNZLmRlbGV0ZSh0LmFubm90YXRpb25FbGVtZW50SWQpO3QuZGVsZXRlZD0hMX0jU3QodCl7Y29uc3QgZT10aGlzLiNWLmdldCh0LnBhZ2VJbmRleCk7ZT9lLmFkZE9yUmVidWlsZCh0KTp0aGlzLmFkZEVkaXRvcih0KX1zZXRBY3RpdmVFZGl0b3IodCl7aWYodGhpcy4jVyE9PXQpe3RoaXMuI1c9dDt0JiZ0aGlzLiN3dCh0LnByb3BlcnRpZXNUb1VwZGF0ZSl9fXRvZ2dsZVNlbGVjdGVkKHQpe2lmKHRoaXMuI3J0Lmhhcyh0KSl7dGhpcy4jcnQuZGVsZXRlKHQpO3QudW5zZWxlY3QoKTt0aGlzLiN4dCh7aGFzU2VsZWN0ZWRFZGl0b3I6dGhpcy5oYXNTZWxlY3Rpb259KX1lbHNle3RoaXMuI3J0LmFkZCh0KTt0LnNlbGVjdCgpO3RoaXMuI3d0KHQucHJvcGVydGllc1RvVXBkYXRlKTt0aGlzLiN4dCh7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX19c2V0U2VsZWN0ZWQodCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy4jcnQpZSE9PXQmJmUudW5zZWxlY3QoKTt0aGlzLiNydC5jbGVhcigpO3RoaXMuI3J0LmFkZCh0KTt0LnNlbGVjdCgpO3RoaXMuI3d0KHQucHJvcGVydGllc1RvVXBkYXRlKTt0aGlzLiN4dCh7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLiNydC5oYXModCl9dW5zZWxlY3QodCl7dC51bnNlbGVjdCgpO3RoaXMuI3J0LmRlbGV0ZSh0KTt0aGlzLiN4dCh7aGFzU2VsZWN0ZWRFZGl0b3I6dGhpcy5oYXNTZWxlY3Rpb259KX1nZXQgaGFzU2VsZWN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLiNydC5zaXplfXN0b3BVbmRvQWNjdW11bGF0aW9uKCl7dGhpcy4jWC5zdG9wVW5kb0FjY3VtdWxhdGlvbigpfXVuZG8oKXt0aGlzLiNYLnVuZG8oKTt0aGlzLiN4dCh7aGFzU29tZXRoaW5nVG9VbmRvOnRoaXMuI1guaGFzU29tZXRoaW5nVG9VbmRvKCksaGFzU29tZXRoaW5nVG9SZWRvOiEwLGlzRW1wdHk6dGhpcy4jQ3QoKX0pfXJlZG8oKXt0aGlzLiNYLnJlZG8oKTt0aGlzLiN4dCh7aGFzU29tZXRoaW5nVG9VbmRvOiEwLGhhc1NvbWV0aGluZ1RvUmVkbzp0aGlzLiNYLmhhc1NvbWV0aGluZ1RvUmVkbygpLGlzRW1wdHk6dGhpcy4jQ3QoKX0pfWFkZENvbW1hbmRzKHQpe3RoaXMuI1guYWRkKHQpO3RoaXMuI3h0KHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOiExLGlzRW1wdHk6dGhpcy4jQ3QoKX0pfSNDdCgpe2lmKDA9PT10aGlzLiNHLnNpemUpcmV0dXJuITA7aWYoMT09PXRoaXMuI0cuc2l6ZSlmb3IoY29uc3QgdCBvZiB0aGlzLiNHLnZhbHVlcygpKXJldHVybiB0LmlzRW1wdHkoKTtyZXR1cm4hMX1kZWxldGUoKXt0aGlzLmNvbW1pdE9yUmVtb3ZlKCk7aWYoIXRoaXMuaGFzU2VsZWN0aW9uKXJldHVybjtjb25zdCB0PVsuLi50aGlzLiNydF07dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57Zm9yKGNvbnN0IGUgb2YgdCllLnJlbW92ZSgpfSx1bmRvOigpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNTdChlKX0sbXVzdEV4ZWM6ITB9KX1jb21taXRPclJlbW92ZSgpe3RoaXMuI1c/LmNvbW1pdE9yUmVtb3ZlKCl9aGFzU29tZXRoaW5nVG9Db250cm9sKCl7cmV0dXJuIHRoaXMuI1d8fHRoaXMuaGFzU2VsZWN0aW9ufSNFdCh0KXt0aGlzLiNydC5jbGVhcigpO2Zvcihjb25zdCBlIG9mIHQpaWYoIWUuaXNFbXB0eSgpKXt0aGlzLiNydC5hZGQoZSk7ZS5zZWxlY3QoKX10aGlzLiN4dCh7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1zZWxlY3RBbGwoKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNydCl0LmNvbW1pdCgpO3RoaXMuI0V0KHRoaXMuI0cudmFsdWVzKCkpfXVuc2VsZWN0QWxsKCl7aWYodGhpcy4jVyl0aGlzLiNXLmNvbW1pdE9yUmVtb3ZlKCk7ZWxzZSBpZih0aGlzLmhhc1NlbGVjdGlvbil7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jcnQpdC51bnNlbGVjdCgpO3RoaXMuI3J0LmNsZWFyKCk7dGhpcy4jeHQoe2hhc1NlbGVjdGVkRWRpdG9yOiExfSl9fXRyYW5zbGF0ZVNlbGVjdGVkRWRpdG9ycyh0LGUpe2FyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl18fHRoaXMuY29tbWl0T3JSZW1vdmUoKTtpZighdGhpcy5oYXNTZWxlY3Rpb24pcmV0dXJuO3RoaXMuI2d0WzBdKz10O3RoaXMuI2d0WzFdKz1lO2NvbnN0W24saV09dGhpcy4jZ3Qscj1bLi4udGhpcy4jcnRdO3RoaXMuI210JiZjbGVhclRpbWVvdXQodGhpcy4jbXQpO3RoaXMuI210PXNldFRpbWVvdXQoKCgpPT57dGhpcy4jbXQ9bnVsbDt0aGlzLiNndFswXT10aGlzLiNndFsxXT0wO3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e2Zvcihjb25zdCB0IG9mIHIpdGhpcy4jRy5oYXModC5pZCkmJnQudHJhbnNsYXRlSW5QYWdlKG4saSl9LHVuZG86KCk9Pntmb3IoY29uc3QgdCBvZiByKXRoaXMuI0cuaGFzKHQuaWQpJiZ0LnRyYW5zbGF0ZUluUGFnZSgtbiwtaSl9LG11c3RFeGVjOiExfSl9KSwxZTMpO2Zvcihjb25zdCBuIG9mIHIpbi50cmFuc2xhdGVJblBhZ2UodCxlKX1pc0FjdGl2ZSh0KXtyZXR1cm4gdGhpcy4jVz09PXR9Z2V0QWN0aXZlKCl7cmV0dXJuIHRoaXMuI1d9Z2V0TW9kZSgpe3JldHVybiB0aGlzLiNpdH1nZXQgaW1hZ2VNYW5hZ2VyKCl7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImltYWdlTWFuYWdlciIsbmV3IEltYWdlTWFuYWdlcil9fWUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcj1Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO3ZhciBpPW4oMykscj1uKDYpLHM9big0KSxhPW4oMjQpLG89bigxNCksbD1uKDgpLGM9bigyMSksaD1uKDIwKSxkPW4oOTEpLHU9bigzOSkscD1uKDc3KSxmPW4oNjQpLGc9bigxNTgpLG09big3KSxiPW4oMTY2KSx2PW4oMjcpLHk9cy5KU09OLEE9cy5OdW1iZXIsXz1zLlN5bnRheEVycm9yLFM9eSYmeS5wYXJzZSxFPWEoIk9iamVjdCIsImtleXMiKSx4PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isdz1vKCIiLmNoYXJBdCksQz1vKCIiLnNsaWNlKSxUPW8oLy4vLmV4ZWMpLFA9byhbXS5wdXNoKSxrPS9eXGQkLyxNPS9eWzEtOV0kLyxSPS9eKC18XGQpJC8sST0vXltcdFxuXHIgXSQvLGludGVybmFsaXplPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLHMsYSxvLGMscD10W2VdLGc9aSYmcD09PWkudmFsdWUsbT1nJiYic3RyaW5nIj09dHlwZW9mIGkuc291cmNlP3tzb3VyY2U6aS5zb3VyY2V9Ont9O2lmKGgocCkpe3ZhciBiPWQocCksdj1nP2kubm9kZXM6Yj9bXTp7fTtpZihiKXtyPXYubGVuZ3RoO2E9ZihwKTtmb3Iobz0wO288YTtvKyspaW50ZXJuYWxpemVQcm9wZXJ0eShwLG8saW50ZXJuYWxpemUocCwiIitvLG4sbzxyP3Zbb106dm9pZCAwKSl9ZWxzZXtzPUUocCk7YT1mKHMpO2ZvcihvPTA7bzxhO28rKyl7Yz1zW29dO2ludGVybmFsaXplUHJvcGVydHkocCxjLGludGVybmFsaXplKHAsYyxuLHUodixjKT92W2NdOnZvaWQgMCkpfX19cmV0dXJuIGwobix0LGUscCxtKX0saW50ZXJuYWxpemVQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7aWYocil7dmFyIGk9eCh0LGUpO2lmKGkmJiFpLmNvbmZpZ3VyYWJsZSlyZXR1cm59dm9pZCAwPT09bj9kZWxldGUgdFtlXTpnKHQsZSxuKX0sTm9kZT1mdW5jdGlvbih0LGUsbixpKXt0aGlzLnZhbHVlPXQ7dGhpcy5lbmQ9ZTt0aGlzLnNvdXJjZT1uO3RoaXMubm9kZXM9aX0sQ29udGV4dD1mdW5jdGlvbih0LGUpe3RoaXMuc291cmNlPXQ7dGhpcy5pbmRleD1lfTtDb250ZXh0LnByb3RvdHlwZT17Zm9yazpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IENvbnRleHQodGhpcy5zb3VyY2UsdCl9LHBhcnNlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zb3VyY2UsZT10aGlzLnNraXAoSSx0aGlzLmluZGV4KSxuPXRoaXMuZm9yayhlKSxpPXcodCxlKTtpZihUKFIsaSkpcmV0dXJuIG4ubnVtYmVyKCk7c3dpdGNoKGkpe2Nhc2UieyI6cmV0dXJuIG4ub2JqZWN0KCk7Y2FzZSJbIjpyZXR1cm4gbi5hcnJheSgpO2Nhc2UnIic6cmV0dXJuIG4uc3RyaW5nKCk7Y2FzZSJ0IjpyZXR1cm4gbi5rZXl3b3JkKCEwKTtjYXNlImYiOnJldHVybiBuLmtleXdvcmQoITEpO2Nhc2UibiI6cmV0dXJuIG4ua2V5d29yZChudWxsKX10aHJvdyBfKCdVbmV4cGVjdGVkIGNoYXJhY3RlcjogIicraSsnIiBhdDogJytlKX0sbm9kZTpmdW5jdGlvbih0LGUsbixpLHIpe3JldHVybiBuZXcgTm9kZShlLGksdD9udWxsOkModGhpcy5zb3VyY2UsbixpKSxyKX0sb2JqZWN0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc291cmNlLGU9dGhpcy5pbmRleCsxLG49ITEsaT17fSxyPXt9O2U8dC5sZW5ndGg7KXtlPXRoaXMudW50aWwoWyciJywifSJdLGUpO2lmKCJ9Ij09dyh0LGUpJiYhbil7ZSsrO2JyZWFrfXZhciBzPXRoaXMuZm9yayhlKS5zdHJpbmcoKSxhPXMudmFsdWU7ZT1zLmVuZDtlPXRoaXMudW50aWwoWyI6Il0sZSkrMTtlPXRoaXMuc2tpcChJLGUpO3M9dGhpcy5mb3JrKGUpLnBhcnNlKCk7ZyhyLGEscyk7ZyhpLGEscy52YWx1ZSk7ZT10aGlzLnVudGlsKFsiLCIsIn0iXSxzLmVuZCk7dmFyIG89dyh0LGUpO2lmKCIsIj09byl7bj0hMDtlKyt9ZWxzZSBpZigifSI9PW8pe2UrKzticmVha319cmV0dXJuIHRoaXMubm9kZSgxLGksdGhpcy5pbmRleCxlLHIpfSxhcnJheTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnNvdXJjZSxlPXRoaXMuaW5kZXgrMSxuPSExLGk9W10scj1bXTtlPHQubGVuZ3RoOyl7ZT10aGlzLnNraXAoSSxlKTtpZigiXSI9PXcodCxlKSYmIW4pe2UrKzticmVha312YXIgcz10aGlzLmZvcmsoZSkucGFyc2UoKTtQKHIscyk7UChpLHMudmFsdWUpO2U9dGhpcy51bnRpbChbIiwiLCJdIl0scy5lbmQpO2lmKCIsIj09dyh0LGUpKXtuPSEwO2UrK31lbHNlIGlmKCJdIj09dyh0LGUpKXtlKys7YnJlYWt9fXJldHVybiB0aGlzLm5vZGUoMSxpLHRoaXMuaW5kZXgsZSxyKX0sc3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pbmRleCxlPWIodGhpcy5zb3VyY2UsdGhpcy5pbmRleCsxKTtyZXR1cm4gdGhpcy5ub2RlKDAsZS52YWx1ZSx0LGUuZW5kKX0sbnVtYmVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zb3VyY2UsZT10aGlzLmluZGV4LG49ZTsiLSI9PXcodCxuKSYmbisrO2lmKCIwIj09dyh0LG4pKW4rKztlbHNle2lmKCFUKE0sdyh0LG4pKSl0aHJvdyBfKCJGYWlsZWQgdG8gcGFyc2UgbnVtYmVyIGF0OiAiK24pO249dGhpcy5za2lwKGssKytuKX0iLiI9PXcodCxuKSYmKG49dGhpcy5za2lwKGssKytuKSk7aWYoImUiPT13KHQsbil8fCJFIj09dyh0LG4pKXtuKys7IisiIT13KHQsbikmJiItIiE9dyh0LG4pfHxuKys7aWYobj09KG49dGhpcy5za2lwKGssbikpKXRocm93IF8oIkZhaWxlZCB0byBwYXJzZSBudW1iZXIncyBleHBvbmVudCB2YWx1ZSBhdDogIituKX1yZXR1cm4gdGhpcy5ub2RlKDAsQShDKHQsZSxuKSksZSxuKX0sa2V5d29yZDpmdW5jdGlvbih0KXt2YXIgZT0iIit0LG49dGhpcy5pbmRleCxpPW4rZS5sZW5ndGg7aWYoQyh0aGlzLnNvdXJjZSxuLGkpIT1lKXRocm93IF8oIkZhaWxlZCB0byBwYXJzZSB2YWx1ZSBhdDogIituKTtyZXR1cm4gdGhpcy5ub2RlKDAsdCxuLGkpfSxza2lwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMuc291cmNlO2U8bi5sZW5ndGgmJlQodCx3KG4sZSkpO2UrKyk7cmV0dXJuIGV9LHVudGlsOmZ1bmN0aW9uKHQsZSl7ZT10aGlzLnNraXAoSSxlKTtmb3IodmFyIG49dyh0aGlzLnNvdXJjZSxlKSxpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXT09bilyZXR1cm4gZTt0aHJvdyBfKCdVbmV4cGVjdGVkIGNoYXJhY3RlcjogIicrbisnIiBhdDogJytlKX19O3ZhciBEPW0oKGZ1bmN0aW9uKCl7dmFyIHQsZT0iOTAwNzE5OTI1NDc0MDk5MyI7UyhlLChmdW5jdGlvbihlLG4saSl7dD1pLnNvdXJjZX0pKTtyZXR1cm4gdCE9PWV9KSksTz12JiYhbSgoZnVuY3Rpb24oKXtyZXR1cm4gMS9TKCItMCBcdCIpIT0tMS8wfSkpO2koe3RhcmdldDoiSlNPTiIsc3RhdDohMCxmb3JjZWQ6RH0se3BhcnNlOmZ1bmN0aW9uIHBhcnNlKHQsZSl7cmV0dXJuIE8mJiFjKGUpP1ModCk6ZnVuY3Rpb24odCxlKXt0PXAodCk7dmFyIG49bmV3IENvbnRleHQodCwwLCIiKSxpPW4ucGFyc2UoKSxyPWkudmFsdWUscz1uLnNraXAoSSxpLmVuZCk7aWYoczx0Lmxlbmd0aCl0aHJvdyBfKCdVbmV4cGVjdGVkIGV4dHJhIGNoYXJhY3RlcjogIicrdyh0LHMpKyciIGFmdGVyIHRoZSBwYXJzZWQgZGF0YSBhdDogJytzKTtyZXR1cm4gYyhlKT9pbnRlcm5hbGl6ZSh7IiI6cn0sIiIsZSxpKTpyfSh0LGUpfX0pfSwodCxlLG4pPT57dmFyIGk9bigxNCkscj1uKDM5KSxzPVN5bnRheEVycm9yLGE9cGFyc2VJbnQsbz1TdHJpbmcuZnJvbUNoYXJDb2RlLGw9aSgiIi5jaGFyQXQpLGM9aSgiIi5zbGljZSksaD1pKC8uLy5leGVjKSxkPXsnXFwiJzonIicsIlxcXFwiOiJcXCIsIlxcLyI6Ii8iLCJcXGIiOiJcYiIsIlxcZiI6IlxmIiwiXFxuIjoiXG4iLCJcXHIiOiJcciIsIlxcdCI6Ilx0In0sdT0vXltcZGEtZl17NH0kL2kscD0vXltcdTAwMDAtXHUwMDFGXSQvO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0hMCxpPSIiO2U8dC5sZW5ndGg7KXt2YXIgZj1sKHQsZSk7aWYoIlxcIj09Zil7dmFyIGc9Yyh0LGUsZSsyKTtpZihyKGQsZykpe2krPWRbZ107ZSs9Mn1lbHNle2lmKCJcXHUiIT1nKXRocm93IHMoJ1Vua25vd24gZXNjYXBlIHNlcXVlbmNlOiAiJytnKyciJyk7dmFyIG09Yyh0LGUrPTIsZSs0KTtpZighaCh1LG0pKXRocm93IHMoIkJhZCBVbmljb2RlIGVzY2FwZSBhdDogIitlKTtpKz1vKGEobSwxNikpO2UrPTR9fWVsc2V7aWYoJyInPT1mKXtuPSExO2UrKzticmVha31pZihoKHAsZikpdGhyb3cgcygiQmFkIGNvbnRyb2wgY2hhcmFjdGVyIGluIHN0cmluZyBsaXRlcmFsIGF0OiAiK2UpO2krPWY7ZSsrfX1pZihuKXRocm93IHMoIlVudGVybWluYXRlZCBzdHJpbmcgYXQ6ICIrZSk7cmV0dXJue3ZhbHVlOmksZW5kOmV9fX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5TdGF0VGltZXI9ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249ZS5QaXhlbHNQZXJJbmNoPWUuUGFnZVZpZXdwb3J0PWUuUERGRGF0ZVN0cmluZz1lLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuRE9NU1ZHRmFjdG9yeT1lLkRPTUZpbHRlckZhY3Rvcnk9ZS5ET01DYW52YXNGYWN0b3J5PWUuRE9NQ01hcFJlYWRlckZhY3Rvcnk9ZS5Bbm5vdGF0aW9uUHJlZml4PXZvaWQgMDtlLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gZGVwcmVjYXRlZCh0KXtjb25zb2xlLmxvZygiRGVwcmVjYXRlZCBBUEkgdXNhZ2U6ICIrdCl9O2UuZ2V0Q29sb3JWYWx1ZXM9ZnVuY3Rpb24gZ2V0Q29sb3JWYWx1ZXModCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2RvY3VtZW50LmJvZHkuYXBwZW5kKGUpO2Zvcihjb25zdCBuIG9mIHQua2V5cygpKXtlLnN0eWxlLmNvbG9yPW47Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjt0LnNldChuLGdldFJHQihpKSl9ZS5yZW1vdmUoKX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtPWZ1bmN0aW9uIGdldEN1cnJlbnRUcmFuc2Zvcm0odCl7Y29uc3R7YTplLGI6bixjOmksZDpyLGU6cyxmOmF9PXQuZ2V0VHJhbnNmb3JtKCk7cmV0dXJuW2UsbixpLHIscyxhXX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZT1mdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSh0KXtjb25zdHthOmUsYjpuLGM6aSxkOnIsZTpzLGY6YX09dC5nZXRUcmFuc2Zvcm0oKS5pbnZlcnRTZWxmKCk7cmV0dXJuW2UsbixpLHIscyxhXX07ZS5nZXRGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tVXJsKHQpe2FyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV18fChbdF09dC5zcGxpdCgvWyM/XS8sMSkpO3JldHVybiB0LnN1YnN0cmluZyh0Lmxhc3RJbmRleE9mKCIvIikrMSl9O2UuZ2V0UGRmRmlsZW5hbWVGcm9tVXJsPWZ1bmN0aW9uIGdldFBkZkZpbGVuYW1lRnJvbVVybCh0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImRvY3VtZW50LnBkZiI7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBlO2lmKGlzRGF0YVNjaGVtZSh0KSl7KDAsci53YXJuKSgnZ2V0UGRmRmlsZW5hbWVGcm9tVXJsOiBpZ25vcmUgImRhdGE6Ii1VUkwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuJyk7cmV0dXJuIGV9Y29uc3Qgbj0vW14vPyM9XStcLnBkZlxiKD8hLipcLnBkZlxiKS9pLGk9L14oPzooPzpbXjpdKzopP1wvXC9bXi9dKyk/KFtePyNdKikoXD9bXiNdKik/KCMuKik/JC8uZXhlYyh0KTtsZXQgcz1uLmV4ZWMoaVsxXSl8fG4uZXhlYyhpWzJdKXx8bi5leGVjKGlbM10pO2lmKHMpe3M9c1swXTtpZihzLmluY2x1ZGVzKCIlIikpdHJ5e3M9bi5leGVjKGRlY29kZVVSSUNvbXBvbmVudChzKSlbMF19Y2F0Y2h7fX1yZXR1cm4gc3x8ZX07ZS5nZXRSR0I9Z2V0UkdCO2UuZ2V0WGZhUGFnZVZpZXdwb3J0PWZ1bmN0aW9uIGdldFhmYVBhZ2VWaWV3cG9ydCh0LGUpe2xldHtzY2FsZTpuPTEscm90YXRpb246aT0wfT1lO2NvbnN0e3dpZHRoOnIsaGVpZ2h0OnN9PXQuYXR0cmlidXRlcy5zdHlsZSxhPVswLDAscGFyc2VJbnQocikscGFyc2VJbnQocyldO3JldHVybiBuZXcgUGFnZVZpZXdwb3J0KHt2aWV3Qm94OmEsc2NhbGU6bixyb3RhdGlvbjppfSl9O2UuaXNEYXRhU2NoZW1lPWlzRGF0YVNjaGVtZTtlLmlzUGRmRmlsZT1mdW5jdGlvbiBpc1BkZkZpbGUodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYvXC5wZGYkL2kudGVzdCh0KX07ZS5pc1ZhbGlkRmV0Y2hVcmw9aXNWYWxpZEZldGNoVXJsO2UubG9hZFNjcmlwdD1mdW5jdGlvbiBsb2FkU2NyaXB0KHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuIG5ldyBQcm9taXNlKCgobixpKT0+e2NvbnN0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ci5zcmM9dDtyLm9ubG9hZD1mdW5jdGlvbih0KXtlJiZyLnJlbW92ZSgpO24odCl9O3Iub25lcnJvcj1mdW5jdGlvbigpe2kobmV3IEVycm9yKGBDYW5ub3QgbG9hZCBzY3JpcHQgYXQ6ICR7ci5zcmN9YCkpfTsoZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmQocil9KSl9O2Uuc2V0TGF5ZXJEaW1lbnNpb25zPWZ1bmN0aW9uIHNldExheWVyRGltZW5zaW9ucyh0LGUpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdO2lmKGUgaW5zdGFuY2VvZiBQYWdlVmlld3BvcnQpe2NvbnN0e3BhZ2VXaWR0aDppLHBhZ2VIZWlnaHQ6cn09ZS5yYXdEaW1zLHtzdHlsZTpzfT10LGE9YGNhbGModmFyKC0tc2NhbGUtZmFjdG9yKSAqICR7aX1weClgLG89YGNhbGModmFyKC0tc2NhbGUtZmFjdG9yKSAqICR7cn1weClgO2lmKG4mJmUucm90YXRpb24lMTgwIT0wKXtzLndpZHRoPW87cy5oZWlnaHQ9YX1lbHNle3Mud2lkdGg9YTtzLmhlaWdodD1vfX1pJiZ0LnNldEF0dHJpYnV0ZSgiZGF0YS1tYWluLXJvdGF0aW9uIixlLnJvdGF0aW9uKX07bigyKTtuKDkzKTtuKDEwMSk7bigxMDIpO24oMTA1KTtuKDEwNyk7bigxMDkpO24oMTEzKTtuKDExNik7bigxMjMpO24oODkpO24oODQpO24oODYpO24oODcpO3ZhciBpPW4oMTY4KSxyPW4oMSk7Y29uc3Qgcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciO2UuQW5ub3RhdGlvblByZWZpeD0icGRmanNfaW50ZXJuYWxfaWRfIjtjbGFzcyBQaXhlbHNQZXJJbmNoe3N0YXRpYyBDU1M9OTY7c3RhdGljIFBERj03MjtzdGF0aWMgUERGX1RPX0NTU19VTklUUz10aGlzLkNTUy90aGlzLlBERn1lLlBpeGVsc1BlckluY2g9UGl4ZWxzUGVySW5jaDtjbGFzcyBET01GaWx0ZXJGYWN0b3J5IGV4dGVuZHMgaS5CYXNlRmlsdGVyRmFjdG9yeXsja3Q7I010OyNlOyNSdDsjRnQ7I0l0OyNEdDsjT3Q7I0x0OyNOdDsjTz0wO2NvbnN0cnVjdG9yKCl7bGV0e2RvY0lkOnQsb3duZXJEb2N1bWVudDplPWdsb2JhbFRoaXMuZG9jdW1lbnR9PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtzdXBlcigpO3RoaXMuI2U9dDt0aGlzLiNSdD1lfWdldCNOKCl7cmV0dXJuIHRoaXMuI2t0fHw9bmV3IE1hcH1nZXQjQnQoKXtpZighdGhpcy4jTXQpe2NvbnN0IHQ9dGhpcy4jUnQuY3JlYXRlRWxlbWVudCgiZGl2Iikse3N0eWxlOmV9PXQ7ZS52aXNpYmlsaXR5PSJoaWRkZW4iO2UuY29udGFpbj0ic3RyaWN0IjtlLndpZHRoPWUuaGVpZ2h0PTA7ZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2UudG9wPWUubGVmdD0wO2UuekluZGV4PS0xO2NvbnN0IG49dGhpcy4jUnQuY3JlYXRlRWxlbWVudE5TKHMsInN2ZyIpO24uc2V0QXR0cmlidXRlKCJ3aWR0aCIsMCk7bi5zZXRBdHRyaWJ1dGUoImhlaWdodCIsMCk7dGhpcy4jTXQ9dGhpcy4jUnQuY3JlYXRlRWxlbWVudE5TKHMsImRlZnMiKTt0LmFwcGVuZChuKTtuLmFwcGVuZCh0aGlzLiNNdCk7dGhpcy4jUnQuYm9keS5hcHBlbmQodCl9cmV0dXJuIHRoaXMuI010fWFkZEZpbHRlcih0KXtpZighdClyZXR1cm4ibm9uZSI7bGV0IGUsbixpLHIscz10aGlzLiNOLmdldCh0KTtpZihzKXJldHVybiBzO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3Qgcz10WzBdLGE9bmV3IEFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKWFbdF09c1t0XS8yNTU7cj1lPW49aT1hLmpvaW4oIiwiKX1lbHNle2NvbnN0W3MsYSxvXT10LGw9bmV3IEFycmF5KDI1NiksYz1uZXcgQXJyYXkoMjU2KSxoPW5ldyBBcnJheSgyNTYpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bFt0XT1zW3RdLzI1NTtjW3RdPWFbdF0vMjU1O2hbdF09b1t0XS8yNTV9ZT1sLmpvaW4oIiwiKTtuPWMuam9pbigiLCIpO2k9aC5qb2luKCIsIik7cj1gJHtlfSR7bn0ke2l9YH1zPXRoaXMuI04uZ2V0KHIpO2lmKHMpe3RoaXMuI04uc2V0KHQscyk7cmV0dXJuIHN9Y29uc3QgYT1gZ18ke3RoaXMuI2V9X3RyYW5zZmVyX21hcF8ke3RoaXMuI08rK31gLG89YHVybCgjJHthfSlgO3RoaXMuI04uc2V0KHQsbyk7dGhpcy4jTi5zZXQocixvKTtjb25zdCBsPXRoaXMuI2p0KGEpO3RoaXMuI1V0KGUsbixpLGwpO3JldHVybiBvfWFkZEhDTUZpbHRlcih0LGUpe2NvbnN0IG49YCR7dH0tJHtlfWA7aWYodGhpcy4jSXQ9PT1uKXJldHVybiB0aGlzLiNEdDt0aGlzLiNJdD1uO3RoaXMuI0R0PSJub25lIjt0aGlzLiNGdD8ucmVtb3ZlKCk7aWYoIXR8fCFlKXJldHVybiB0aGlzLiNEdDtjb25zdCBpPXRoaXMuI3p0KHQpO3Q9ci5VdGlsLm1ha2VIZXhDb2xvciguLi5pKTtjb25zdCBzPXRoaXMuI3p0KGUpO2U9ci5VdGlsLm1ha2VIZXhDb2xvciguLi5zKTt0aGlzLiNCdC5zdHlsZS5jb2xvcj0iIjtpZigiIzAwMDAwMCI9PT10JiYiI2ZmZmZmZiI9PT1lfHx0PT09ZSlyZXR1cm4gdGhpcy4jRHQ7Y29uc3QgYT1uZXcgQXJyYXkoMjU2KTtmb3IobGV0IHQ9MDt0PD0yNTU7dCsrKXtjb25zdCBlPXQvMjU1O2FbdF09ZTw9LjAzOTI4P2UvMTIuOTI6KChlKy4wNTUpLzEuMDU1KSoqMi40fWNvbnN0IG89YS5qb2luKCIsIiksbD1gZ18ke3RoaXMuI2V9X2hjbV9maWx0ZXJgLGM9dGhpcy4jT3Q9dGhpcy4janQobCk7dGhpcy4jVXQobyxvLG8sYyk7dGhpcy4jSHQoYyk7Y29uc3QgZ2V0U3RlcHM9KHQsZSk9Pntjb25zdCBuPWlbdF0vMjU1LHI9c1t0XS8yNTUsYT1uZXcgQXJyYXkoZSsxKTtmb3IobGV0IHQ9MDt0PD1lO3QrKylhW3RdPW4rdC9lKihyLW4pO3JldHVybiBhLmpvaW4oIiwiKX07dGhpcy4jVXQoZ2V0U3RlcHMoMCw1KSxnZXRTdGVwcygxLDUpLGdldFN0ZXBzKDIsNSksYyk7dGhpcy4jRHQ9YHVybCgjJHtsfSlgO3JldHVybiB0aGlzLiNEdH1hZGRIaWdobGlnaHRIQ01GaWx0ZXIodCxlLG4saSl7Y29uc3Qgcj1gJHt0fS0ke2V9LSR7bn0tJHtpfWA7aWYodGhpcy4jTHQ9PT1yKXJldHVybiB0aGlzLiNOdDt0aGlzLiNMdD1yO3RoaXMuI050PSJub25lIjt0aGlzLiNPdD8ucmVtb3ZlKCk7aWYoIXR8fCFlKXJldHVybiB0aGlzLiNOdDtjb25zdFtzLGFdPVt0LGVdLm1hcCh0aGlzLiN6dC5iaW5kKHRoaXMpKTtsZXQgbz1NYXRoLnJvdW5kKC4yMTI2KnNbMF0rLjcxNTIqc1sxXSsuMDcyMipzWzJdKSxsPU1hdGgucm91bmQoLjIxMjYqYVswXSsuNzE1MiphWzFdKy4wNzIyKmFbMl0pLFtjLGhdPVtuLGldLm1hcCh0aGlzLiN6dC5iaW5kKHRoaXMpKTtsPG8mJihbbyxsLGMsaF09W2wsbyxoLGNdKTt0aGlzLiNCdC5zdHlsZS5jb2xvcj0iIjtjb25zdCBnZXRTdGVwcz0odCxlLG4pPT57Y29uc3QgaT1uZXcgQXJyYXkoMjU2KSxyPShsLW8pL24scz10LzI1NSxhPShlLXQpLygyNTUqbik7bGV0IGM9MDtmb3IobGV0IHQ9MDt0PD1uO3QrKyl7Y29uc3QgZT1NYXRoLnJvdW5kKG8rdCpyKSxuPXMrdCphO2ZvcihsZXQgdD1jO3Q8PWU7dCsrKWlbdF09bjtjPWUrMX1mb3IobGV0IHQ9Yzt0PDI1Njt0KyspaVt0XT1pW2MtMV07cmV0dXJuIGkuam9pbigiLCIpfSxkPWBnXyR7dGhpcy4jZX1faGNtX2hpZ2hsaWdodF9maWx0ZXJgLHU9dGhpcy4jT3Q9dGhpcy4janQoZCk7dGhpcy4jSHQodSk7dGhpcy4jVXQoZ2V0U3RlcHMoY1swXSxoWzBdLDUpLGdldFN0ZXBzKGNbMV0saFsxXSw1KSxnZXRTdGVwcyhjWzJdLGhbMl0sNSksdSk7dGhpcy4jTnQ9YHVybCgjJHtkfSlgO3JldHVybiB0aGlzLiNOdH1kZXN0cm95KCl7aWYoIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdKXx8IXRoaXMuI0R0JiYhdGhpcy4jTnQpe2lmKHRoaXMuI010KXt0aGlzLiNNdC5wYXJlbnROb2RlLnBhcmVudE5vZGUucmVtb3ZlKCk7dGhpcy4jTXQ9bnVsbH1pZih0aGlzLiNrdCl7dGhpcy4ja3QuY2xlYXIoKTt0aGlzLiNrdD1udWxsfXRoaXMuI089MH19I0h0KHQpe2NvbnN0IGU9dGhpcy4jUnQuY3JlYXRlRWxlbWVudE5TKHMsImZlQ29sb3JNYXRyaXgiKTtlLnNldEF0dHJpYnV0ZSgidHlwZSIsIm1hdHJpeCIpO2Uuc2V0QXR0cmlidXRlKCJ2YWx1ZXMiLCIwLjIxMjYgMC43MTUyIDAuMDcyMiAwIDAgMC4yMTI2IDAuNzE1MiAwLjA3MjIgMCAwIDAuMjEyNiAwLjcxNTIgMC4wNzIyIDAgMCAwIDAgMCAxIDAiKTt0LmFwcGVuZChlKX0janQodCl7Y29uc3QgZT10aGlzLiNSdC5jcmVhdGVFbGVtZW50TlMocywiZmlsdGVyIik7ZS5zZXRBdHRyaWJ1dGUoImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsInNSR0IiKTtlLnNldEF0dHJpYnV0ZSgiaWQiLHQpO3RoaXMuI0J0LmFwcGVuZChlKTtyZXR1cm4gZX0jcXQodCxlLG4pe2NvbnN0IGk9dGhpcy4jUnQuY3JlYXRlRWxlbWVudE5TKHMsZSk7aS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJkaXNjcmV0ZSIpO2kuc2V0QXR0cmlidXRlKCJ0YWJsZVZhbHVlcyIsbik7dC5hcHBlbmQoaSl9I1V0KHQsZSxuLGkpe2NvbnN0IHI9dGhpcy4jUnQuY3JlYXRlRWxlbWVudE5TKHMsImZlQ29tcG9uZW50VHJhbnNmZXIiKTtpLmFwcGVuZChyKTt0aGlzLiNxdChyLCJmZUZ1bmNSIix0KTt0aGlzLiNxdChyLCJmZUZ1bmNHIixlKTt0aGlzLiNxdChyLCJmZUZ1bmNCIixuKX0jenQodCl7dGhpcy4jQnQuc3R5bGUuY29sb3I9dDtyZXR1cm4gZ2V0UkdCKGdldENvbXB1dGVkU3R5bGUodGhpcy4jQnQpLmdldFByb3BlcnR5VmFsdWUoImNvbG9yIikpfX1lLkRPTUZpbHRlckZhY3Rvcnk9RE9NRmlsdGVyRmFjdG9yeTtjbGFzcyBET01DYW52YXNGYWN0b3J5IGV4dGVuZHMgaS5CYXNlQ2FudmFzRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe2xldHtvd25lckRvY3VtZW50OnQ9Z2xvYmFsVGhpcy5kb2N1bWVudH09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3N1cGVyKCk7dGhpcy5fZG9jdW1lbnQ9dH1fY3JlYXRlQ2FudmFzKHQsZSl7Y29uc3Qgbj10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtuLndpZHRoPXQ7bi5oZWlnaHQ9ZTtyZXR1cm4gbn19ZS5ET01DYW52YXNGYWN0b3J5PURPTUNhbnZhc0ZhY3Rvcnk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07aWYoaXNWYWxpZEZldGNoVXJsKHQsZG9jdW1lbnQuYmFzZVVSSSkpe2NvbnN0IG49YXdhaXQgZmV0Y2godCk7aWYoIW4ub2spdGhyb3cgbmV3IEVycm9yKG4uc3RhdHVzVGV4dCk7cmV0dXJuIGU/bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbi5hcnJheUJ1ZmZlcigpKTooMCxyLnN0cmluZ1RvQnl0ZXMpKGF3YWl0IG4udGV4dCgpKX1yZXR1cm4gbmV3IFByb21pc2UoKChuLGkpPT57Y29uc3Qgcz1uZXcgWE1MSHR0cFJlcXVlc3Q7cy5vcGVuKCJHRVQiLHQsITApO2UmJihzLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKTtzLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHMucmVhZHlTdGF0ZT09PVhNTEh0dHBSZXF1ZXN0LkRPTkUpe2lmKDIwMD09PXMuc3RhdHVzfHwwPT09cy5zdGF0dXMpe2xldCB0O2UmJnMucmVzcG9uc2U/dD1uZXcgVWludDhBcnJheShzLnJlc3BvbnNlKTohZSYmcy5yZXNwb25zZVRleHQmJih0PSgwLHIuc3RyaW5nVG9CeXRlcykocy5yZXNwb25zZVRleHQpKTtpZih0KXtuKHQpO3JldHVybn19aShuZXcgRXJyb3Iocy5zdGF0dXNUZXh0KSl9fTtzLnNlbmQobnVsbCl9KSl9Y2xhc3MgRE9NQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0LHRoaXMuaXNDb21wcmVzc2VkKS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLkRPTUNNYXBSZWFkZXJGYWN0b3J5PURPTUNNYXBSZWFkZXJGYWN0b3J5O2NsYXNzIERPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQsITApfX1lLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIERPTVNWR0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTVkdGYWN0b3J5e19jcmVhdGVTVkcodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzLHQpfX1lLkRPTVNWR0ZhY3Rvcnk9RE9NU1ZHRmFjdG9yeTtjbGFzcyBQYWdlVmlld3BvcnR7Y29uc3RydWN0b3IodCl7bGV0e3ZpZXdCb3g6ZSxzY2FsZTpuLHJvdGF0aW9uOmksb2Zmc2V0WDpyPTAsb2Zmc2V0WTpzPTAsZG9udEZsaXA6YT0hMX09dDt0aGlzLnZpZXdCb3g9ZTt0aGlzLnNjYWxlPW47dGhpcy5yb3RhdGlvbj1pO3RoaXMub2Zmc2V0WD1yO3RoaXMub2Zmc2V0WT1zO2NvbnN0IG89KGVbMl0rZVswXSkvMixsPShlWzNdK2VbMV0pLzI7bGV0IGMsaCxkLHUscCxmLGcsbTtpJT0zNjA7aTwwJiYoaSs9MzYwKTtzd2l0Y2goaSl7Y2FzZSAxODA6Yz0tMTtoPTA7ZD0wO3U9MTticmVhaztjYXNlIDkwOmM9MDtoPTE7ZD0xO3U9MDticmVhaztjYXNlIDI3MDpjPTA7aD0tMTtkPS0xO3U9MDticmVhaztjYXNlIDA6Yz0xO2g9MDtkPTA7dT0tMTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiUGFnZVZpZXdwb3J0OiBJbnZhbGlkIHJvdGF0aW9uLCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOTAgZGVncmVlcy4iKX1pZihhKXtkPS1kO3U9LXV9aWYoMD09PWMpe3A9TWF0aC5hYnMobC1lWzFdKSpuK3I7Zj1NYXRoLmFicyhvLWVbMF0pKm4rcztnPShlWzNdLWVbMV0pKm47bT0oZVsyXS1lWzBdKSpufWVsc2V7cD1NYXRoLmFicyhvLWVbMF0pKm4rcjtmPU1hdGguYWJzKGwtZVsxXSkqbitzO2c9KGVbMl0tZVswXSkqbjttPShlWzNdLWVbMV0pKm59dGhpcy50cmFuc2Zvcm09W2MqbixoKm4sZCpuLHUqbixwLWMqbipvLWQqbipsLGYtaCpuKm8tdSpuKmxdO3RoaXMud2lkdGg9Zzt0aGlzLmhlaWdodD1tfWdldCByYXdEaW1zKCl7Y29uc3R7dmlld0JveDp0fT10aGlzO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJyYXdEaW1zIix7cGFnZVdpZHRoOnRbMl0tdFswXSxwYWdlSGVpZ2h0OnRbM10tdFsxXSxwYWdlWDp0WzBdLHBhZ2VZOnRbMV19KX1jbG9uZSgpe2xldHtzY2FsZTp0PXRoaXMuc2NhbGUscm90YXRpb246ZT10aGlzLnJvdGF0aW9uLG9mZnNldFg6bj10aGlzLm9mZnNldFgsb2Zmc2V0WTppPXRoaXMub2Zmc2V0WSxkb250RmxpcDpyPSExfT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIG5ldyBQYWdlVmlld3BvcnQoe3ZpZXdCb3g6dGhpcy52aWV3Qm94LnNsaWNlKCksc2NhbGU6dCxyb3RhdGlvbjplLG9mZnNldFg6bixvZmZzZXRZOmksZG9udEZsaXA6cn0pfWNvbnZlcnRUb1ZpZXdwb3J0UG9pbnQodCxlKXtyZXR1cm4gci5VdGlsLmFwcGx5VHJhbnNmb3JtKFt0LGVdLHRoaXMudHJhbnNmb3JtKX1jb252ZXJ0VG9WaWV3cG9ydFJlY3RhbmdsZSh0KXtjb25zdCBlPXIuVXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSx0WzFdXSx0aGlzLnRyYW5zZm9ybSksbj1yLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFszXV0sdGhpcy50cmFuc2Zvcm0pO3JldHVybltlWzBdLGVbMV0sblswXSxuWzFdXX1jb252ZXJ0VG9QZGZQb2ludCh0LGUpe3JldHVybiByLlV0aWwuYXBwbHlJbnZlcnNlVHJhbnNmb3JtKFt0LGVdLHRoaXMudHJhbnNmb3JtKX19ZS5QYWdlVmlld3BvcnQ9UGFnZVZpZXdwb3J0O2NsYXNzIFJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3Rvcih0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtzdXBlcih0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iKTt0aGlzLmV4dHJhRGVsYXk9ZX19ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249UmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uO2Z1bmN0aW9uIGlzRGF0YVNjaGVtZSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPGUmJiIiPT09dFtuXS50cmltKCk7KW4rKztyZXR1cm4iZGF0YToiPT09dC5zdWJzdHJpbmcobixuKzUpLnRvTG93ZXJDYXNlKCl9ZS5TdGF0VGltZXI9Y2xhc3MgU3RhdFRpbWVye3N0YXJ0ZWQ9T2JqZWN0LmNyZWF0ZShudWxsKTt0aW1lcz1bXTt0aW1lKHQpe3QgaW4gdGhpcy5zdGFydGVkJiYoMCxyLndhcm4pKGBUaW1lciBpcyBhbHJlYWR5IHJ1bm5pbmcgZm9yICR7dH1gKTt0aGlzLnN0YXJ0ZWRbdF09RGF0ZS5ub3coKX10aW1lRW5kKHQpe3QgaW4gdGhpcy5zdGFydGVkfHwoMCxyLndhcm4pKGBUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJHt0fWApO3RoaXMudGltZXMucHVzaCh7bmFtZTp0LHN0YXJ0OnRoaXMuc3RhcnRlZFt0XSxlbmQ6RGF0ZS5ub3coKX0pO2RlbGV0ZSB0aGlzLnN0YXJ0ZWRbdF19dG9TdHJpbmcoKXtjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGNvbnN0e25hbWU6dH1vZiB0aGlzLnRpbWVzKWU9TWF0aC5tYXgodC5sZW5ndGgsZSk7Zm9yKGNvbnN0e25hbWU6bixzdGFydDppLGVuZDpyfW9mIHRoaXMudGltZXMpdC5wdXNoKGAke24ucGFkRW5kKGUpfSAke3ItaX1tc1xuYCk7cmV0dXJuIHQuam9pbigiIil9fTtmdW5jdGlvbiBpc1ZhbGlkRmV0Y2hVcmwodCxlKXt0cnl7Y29uc3R7cHJvdG9jb2w6bn09ZT9uZXcgVVJMKHQsZSk6bmV3IFVSTCh0KTtyZXR1cm4iaHR0cDoiPT09bnx8Imh0dHBzOiI9PT1ufWNhdGNoe3JldHVybiExfX1sZXQgYTtlLlBERkRhdGVTdHJpbmc9Y2xhc3MgUERGRGF0ZVN0cmluZ3tzdGF0aWMgdG9EYXRlT2JqZWN0KHQpe2lmKCF0fHwic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7YXx8PW5ldyBSZWdFeHAoIl5EOihcXGR7NH0pKFxcZHsyfSk/KFxcZHsyfSk/KFxcZHsyfSk/KFxcZHsyfSk/KFxcZHsyfSk/KFtafCt8LV0pPyhcXGR7Mn0pPyc/KFxcZHsyfSk/Jz8iKTtjb25zdCBlPWEuZXhlYyh0KTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlSW50KGVbMV0sMTApO2xldCBpPXBhcnNlSW50KGVbMl0sMTApO2k9aT49MSYmaTw9MTI/aS0xOjA7bGV0IHI9cGFyc2VJbnQoZVszXSwxMCk7cj1yPj0xJiZyPD0zMT9yOjE7bGV0IHM9cGFyc2VJbnQoZVs0XSwxMCk7cz1zPj0wJiZzPD0yMz9zOjA7bGV0IG89cGFyc2VJbnQoZVs1XSwxMCk7bz1vPj0wJiZvPD01OT9vOjA7bGV0IGw9cGFyc2VJbnQoZVs2XSwxMCk7bD1sPj0wJiZsPD01OT9sOjA7Y29uc3QgYz1lWzddfHwiWiI7bGV0IGg9cGFyc2VJbnQoZVs4XSwxMCk7aD1oPj0wJiZoPD0yMz9oOjA7bGV0IGQ9cGFyc2VJbnQoZVs5XSwxMCl8fDA7ZD1kPj0wJiZkPD01OT9kOjA7aWYoIi0iPT09Yyl7cys9aDtvKz1kfWVsc2UgaWYoIisiPT09Yyl7cy09aDtvLT1kfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhuLGkscixzLG8sbCkpfX07ZnVuY3Rpb24gZ2V0UkdCKHQpe2lmKHQuc3RhcnRzV2l0aCgiIyIpKXtjb25zdCBlPXBhcnNlSW50KHQuc2xpY2UoMSksMTYpO3JldHVyblsoMTY3MTE2ODAmZSk+PjE2LCg2NTI4MCZlKT4+OCwyNTUmZV19aWYodC5zdGFydHNXaXRoKCJyZ2IoIikpcmV0dXJuIHQuc2xpY2UoNCwtMSkuc3BsaXQoIiwiKS5tYXAoKHQ9PnBhcnNlSW50KHQpKSk7aWYodC5zdGFydHNXaXRoKCJyZ2JhKCIpKXJldHVybiB0LnNsaWNlKDUsLTEpLnNwbGl0KCIsIikubWFwKCh0PT5wYXJzZUludCh0KSkpLnNsaWNlKDAsMyk7KDAsci53YXJuKShgTm90IGEgdmFsaWQgY29sb3IgZm9ybWF0OiAiJHt0fSJgKTtyZXR1cm5bMCwwLDBdfX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZS5CYXNlU1ZHRmFjdG9yeT1lLkJhc2VGaWx0ZXJGYWN0b3J5PWUuQmFzZUNhbnZhc0ZhY3Rvcnk9ZS5CYXNlQ01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO24oMik7dmFyIGk9bigxKTtjbGFzcyBCYXNlRmlsdGVyRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlRmlsdGVyRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VGaWx0ZXJGYWN0b3J5LiIpfWFkZEZpbHRlcih0KXtyZXR1cm4ibm9uZSJ9YWRkSENNRmlsdGVyKHQsZSl7cmV0dXJuIm5vbmUifWFkZEhpZ2hsaWdodEhDTUZpbHRlcih0LGUsbixpKXtyZXR1cm4ibm9uZSJ9ZGVzdHJveSgpe319ZS5CYXNlRmlsdGVyRmFjdG9yeT1CYXNlRmlsdGVyRmFjdG9yeTtjbGFzcyBCYXNlQ2FudmFzRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ2FudmFzRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VDYW52YXNGYWN0b3J5LiIpfWNyZWF0ZSh0LGUpe2lmKHQ8PTB8fGU8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7Y29uc3Qgbj10aGlzLl9jcmVhdGVDYW52YXModCxlKTtyZXR1cm57Y2FudmFzOm4sY29udGV4dDpuLmdldENvbnRleHQoIjJkIil9fXJlc2V0KHQsZSxuKXtpZighdC5jYW52YXMpdGhyb3cgbmV3IEVycm9yKCJDYW52YXMgaXMgbm90IHNwZWNpZmllZCIpO2lmKGU8PTB8fG48PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7dC5jYW52YXMud2lkdGg9ZTt0LmNhbnZhcy5oZWlnaHQ9bn1kZXN0cm95KHQpe2lmKCF0LmNhbnZhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbnZhcyBpcyBub3Qgc3BlY2lmaWVkIik7dC5jYW52YXMud2lkdGg9MDt0LmNhbnZhcy5oZWlnaHQ9MDt0LmNhbnZhcz1udWxsO3QuY29udGV4dD1udWxsfV9jcmVhdGVDYW52YXModCxlKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlQ2FudmFzYCBjYWxsZWQuIil9fWUuQmFzZUNhbnZhc0ZhY3Rvcnk9QmFzZUNhbnZhc0ZhY3Rvcnk7Y2xhc3MgQmFzZUNNYXBSZWFkZXJGYWN0b3J5e2NvbnN0cnVjdG9yKHQpe2xldHtiYXNlVXJsOmU9bnVsbCxpc0NvbXByZXNzZWQ6bj0hMH09dDt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUNNYXBSZWFkZXJGYWN0b3J5JiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUNNYXBSZWFkZXJGYWN0b3J5LiIpO3RoaXMuYmFzZVVybD1lO3RoaXMuaXNDb21wcmVzc2VkPW59YXN5bmMgZmV0Y2godCl7bGV0e25hbWU6ZX09dDtpZighdGhpcy5iYXNlVXJsKXRocm93IG5ldyBFcnJvcignVGhlIENNYXAgImJhc2VVcmwiIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCwgZW5zdXJlIHRoYXQgdGhlICJjTWFwVXJsIiBhbmQgImNNYXBQYWNrZWQiIEFQSSBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZC4nKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNNYXAgbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKTtjb25zdCBuPXRoaXMuYmFzZVVybCtlKyh0aGlzLmlzQ29tcHJlc3NlZD8iLmJjbWFwIjoiIikscj10aGlzLmlzQ29tcHJlc3NlZD9pLkNNYXBDb21wcmVzc2lvblR5cGUuQklOQVJZOmkuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FO3JldHVybiB0aGlzLl9mZXRjaERhdGEobixyKS5jYXRjaCgodD0+e3Rocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgJHt0aGlzLmlzQ29tcHJlc3NlZD8iYmluYXJ5ICI6IiJ9Q01hcCBhdDogJHtufWApfSkpfV9mZXRjaERhdGEodCxlKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfZmV0Y2hEYXRhYCBjYWxsZWQuIil9fWUuQmFzZUNNYXBSZWFkZXJGYWN0b3J5PUJhc2VDTWFwUmVhZGVyRmFjdG9yeTtjbGFzcyBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7Y29uc3RydWN0b3IodCl7bGV0e2Jhc2VVcmw6ZT1udWxsfT10O3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPWV9YXN5bmMgZmV0Y2godCl7bGV0e2ZpbGVuYW1lOmV9PXQ7aWYoIXRoaXMuYmFzZVVybCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGFuZGFyZCBmb250ICJiYXNlVXJsIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSAic3RhbmRhcmRGb250RGF0YVVybCIgQVBJIHBhcmFtZXRlciBpcyBwcm92aWRlZC4nKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkZvbnQgZmlsZW5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuIik7Y29uc3Qgbj1gJHt0aGlzLmJhc2VVcmx9JHtlfWA7cmV0dXJuIHRoaXMuX2ZldGNoRGF0YShuKS5jYXRjaCgodD0+e3Rocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZm9udCBkYXRhIGF0OiAke259YCl9KSl9X2ZldGNoRGF0YSh0KXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfZmV0Y2hEYXRhYCBjYWxsZWQuIil9fWUuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PUJhc2VTdGFuZGFyZEZvbnREYXRhRmFjdG9yeTtjbGFzcyBCYXNlU1ZHRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU1ZHRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTVkdGYWN0b3J5LiIpfWNyZWF0ZSh0LGUpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07aWYodDw9MHx8ZTw9MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgU1ZHIGRpbWVuc2lvbnMiKTtjb25zdCBpPXRoaXMuX2NyZWF0ZVNWRygic3ZnOnN2ZyIpO2kuc2V0QXR0cmlidXRlKCJ2ZXJzaW9uIiwiMS4xIik7aWYoIW4pe2kuc2V0QXR0cmlidXRlKCJ3aWR0aCIsYCR7dH1weGApO2kuc2V0QXR0cmlidXRlKCJoZWlnaHQiLGAke2V9cHhgKX1pLnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsIm5vbmUiKTtpLnNldEF0dHJpYnV0ZSgidmlld0JveCIsYDAgMCAke3R9ICR7ZX1gKTtyZXR1cm4gaX1jcmVhdGVFbGVtZW50KHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgU1ZHIGVsZW1lbnQgdHlwZSIpO3JldHVybiB0aGlzLl9jcmVhdGVTVkcodCl9X2NyZWF0ZVNWRyh0KXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlU1ZHYCBjYWxsZWQuIil9fWUuQmFzZVNWR0ZhY3Rvcnk9QmFzZVNWR0ZhY3Rvcnl9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuTXVybXVySGFzaDNfNjQ9dm9pZCAwO24oOTMpO24oMTAxKTtuKDEwMik7bigxMDUpO24oMTA3KTtuKDEwOSk7bigxMTMpO24oMTE2KTtuKDEyMyk7bigyKTt2YXIgaT1uKDEpO2NvbnN0IHI9MzI4NTM3NzUyMCxzPTQyOTQ5MDE3NjAsYT02NTUzNTtlLk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaDE9dD80Mjk0OTY3Mjk1JnQ6cjt0aGlzLmgyPXQ/NDI5NDk2NzI5NSZ0OnJ9dXBkYXRlKHQpe2xldCBlLG47aWYoInN0cmluZyI9PXR5cGVvZiB0KXtlPW5ldyBVaW50OEFycmF5KDIqdC5sZW5ndGgpO249MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2NvbnN0IHI9dC5jaGFyQ29kZUF0KGkpO2lmKHI8PTI1NSllW24rK109cjtlbHNle2VbbisrXT1yPj4+ODtlW24rK109MjU1JnJ9fX1lbHNle2lmKCEoMCxpLmlzQXJyYXlCdWZmZXIpKHQpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO2U9dC5zbGljZSgpO249ZS5ieXRlTGVuZ3RofWNvbnN0IHI9bj4+MixvPW4tNCpyLGw9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAscik7bGV0IGM9MCxoPTAsZD10aGlzLmgxLHU9dGhpcy5oMjtjb25zdCBwPTM0MzI5MTgzNTMsZj00NjE4NDU5MDcsZz0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgdD0wO3Q8cjt0KyspaWYoMSZ0KXtjPWxbdF07Yz1jKnAmc3xjKmcmYTtjPWM8PDE1fGM+Pj4xNztjPWMqZiZzfGMqbSZhO2RePWM7ZD1kPDwxM3xkPj4+MTk7ZD01KmQrMzg2NDI5MjE5Nn1lbHNle2g9bFt0XTtoPWgqcCZzfGgqZyZhO2g9aDw8MTV8aD4+PjE3O2g9aCpmJnN8aCptJmE7dV49aDt1PXU8PDEzfHU+Pj4xOTt1PTUqdSszODY0MjkyMTk2fWM9MDtzd2l0Y2gobyl7Y2FzZSAzOmNePWVbNCpyKzJdPDwxNjtjYXNlIDI6Y149ZVs0KnIrMV08PDg7Y2FzZSAxOmNePWVbNCpyXTtjPWMqcCZzfGMqZyZhO2M9Yzw8MTV8Yz4+PjE3O2M9YypmJnN8YyptJmE7MSZyP2RePWM6dV49Y310aGlzLmgxPWQ7dGhpcy5oMj11fWhleGRpZ2VzdCgpe2xldCB0PXRoaXMuaDEsZT10aGlzLmgyO3RePWU+Pj4xO3Q9Mzk4MTgwNjc5Nyp0JnN8MzYwNDUqdCZhO2U9NDI4MzU0MzUxMSplJnN8KDI5NTAxNjM3OTcqKGU8PDE2fHQ+Pj4xNikmcyk+Pj4xNjt0Xj1lPj4+MTt0PTQ0NDk4NDQwMyp0JnN8NjA0OTkqdCZhO2U9MzMwMTg4MjM2NiplJnN8KDMxMjA0Mzc4OTMqKGU8PDE2fHQ+Pj4xNikmcyk+Pj4xNjt0Xj1lPj4+MTtyZXR1cm4odD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKGU+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuRm9udExvYWRlcj1lLkZvbnRGYWNlT2JqZWN0PXZvaWQgMDtuKDEyNSk7bigxMzUpO24oMTM3KTtuKDE0MCk7bigxNDIpO24oMTQ0KTtuKDE0Nik7big4OSk7bigxNDgpO3ZhciBpPW4oMSk7ZS5Gb250TG9hZGVyPWNsYXNzIEZvbnRMb2FkZXJ7I1d0PW5ldyBTZXQ7Y29uc3RydWN0b3IodCl7bGV0e293bmVyRG9jdW1lbnQ6ZT1nbG9iYWxUaGlzLmRvY3VtZW50LHN0eWxlRWxlbWVudDpuPW51bGx9PXQ7dGhpcy5fZG9jdW1lbnQ9ZTt0aGlzLm5hdGl2ZUZvbnRGYWNlcz1uZXcgU2V0O3RoaXMuc3R5bGVFbGVtZW50PW51bGw7dGhpcy5sb2FkaW5nUmVxdWVzdHM9W107dGhpcy5sb2FkVGVzdEZvbnRJZD0wfWFkZE5hdGl2ZUZvbnRGYWNlKHQpe3RoaXMubmF0aXZlRm9udEZhY2VzLmFkZCh0KTt0aGlzLl9kb2N1bWVudC5mb250cy5hZGQodCl9cmVtb3ZlTmF0aXZlRm9udEZhY2UodCl7dGhpcy5uYXRpdmVGb250RmFjZXMuZGVsZXRlKHQpO3RoaXMuX2RvY3VtZW50LmZvbnRzLmRlbGV0ZSh0KX1pbnNlcnRSdWxlKHQpe2lmKCF0aGlzLnN0eWxlRWxlbWVudCl7dGhpcy5zdHlsZUVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmQodGhpcy5zdHlsZUVsZW1lbnQpfWNvbnN0IGU9dGhpcy5zdHlsZUVsZW1lbnQuc2hlZXQ7ZS5pbnNlcnRSdWxlKHQsZS5jc3NSdWxlcy5sZW5ndGgpfWNsZWFyKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5uYXRpdmVGb250RmFjZXMpdGhpcy5fZG9jdW1lbnQuZm9udHMuZGVsZXRlKHQpO3RoaXMubmF0aXZlRm9udEZhY2VzLmNsZWFyKCk7dGhpcy4jV3QuY2xlYXIoKTtpZih0aGlzLnN0eWxlRWxlbWVudCl7dGhpcy5zdHlsZUVsZW1lbnQucmVtb3ZlKCk7dGhpcy5zdHlsZUVsZW1lbnQ9bnVsbH19YXN5bmMgbG9hZFN5c3RlbUZvbnQodCl7aWYodCYmIXRoaXMuI1d0Lmhhcyh0LmxvYWRlZE5hbWUpKXsoMCxpLmFzc2VydCkoIXRoaXMuZGlzYWJsZUZvbnRGYWNlLCJsb2FkU3lzdGVtRm9udCBzaG91bGRuJ3QgYmUgY2FsbGVkIHdoZW4gYGRpc2FibGVGb250RmFjZWAgaXMgc2V0LiIpO2lmKHRoaXMuaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZCl7Y29uc3R7bG9hZGVkTmFtZTplLHNyYzpuLHN0eWxlOnJ9PXQscz1uZXcgRm9udEZhY2UoZSxuLHIpO3RoaXMuYWRkTmF0aXZlRm9udEZhY2Uocyk7dHJ5e2F3YWl0IHMubG9hZCgpO3RoaXMuI1d0LmFkZChlKX1jYXRjaHsoMCxpLndhcm4pKGBDYW5ub3QgbG9hZCBzeXN0ZW0gZm9udDogJHt0LmJhc2VGb250TmFtZX0sIGluc3RhbGxpbmcgaXQgY291bGQgaGVscCB0byBpbXByb3ZlIFBERiByZW5kZXJpbmcuYCk7dGhpcy5yZW1vdmVOYXRpdmVGb250RmFjZShzKX19ZWxzZSgwLGkudW5yZWFjaGFibGUpKCJOb3QgaW1wbGVtZW50ZWQ6IGxvYWRTeXN0ZW1Gb250IHdpdGhvdXQgdGhlIEZvbnQgTG9hZGluZyBBUEkuIil9fWFzeW5jIGJpbmQodCl7aWYodC5hdHRhY2hlZHx8dC5taXNzaW5nRmlsZSYmIXQuc3lzdGVtRm9udEluZm8pcmV0dXJuO3QuYXR0YWNoZWQ9ITA7aWYodC5zeXN0ZW1Gb250SW5mbyl7YXdhaXQgdGhpcy5sb2FkU3lzdGVtRm9udCh0LnN5c3RlbUZvbnRJbmZvKTtyZXR1cm59aWYodGhpcy5pc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkKXtjb25zdCBlPXQuY3JlYXRlTmF0aXZlRm9udEZhY2UoKTtpZihlKXt0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKGUpO3RyeXthd2FpdCBlLmxvYWRlZH1jYXRjaChuKXsoMCxpLndhcm4pKGBGYWlsZWQgdG8gbG9hZCBmb250ICcke2UuZmFtaWx5fSc6ICcke259Jy5gKTt0LmRpc2FibGVGb250RmFjZT0hMDt0aHJvdyBufX1yZXR1cm59Y29uc3QgZT10LmNyZWF0ZUZvbnRGYWNlUnVsZSgpO2lmKGUpe3RoaXMuaW5zZXJ0UnVsZShlKTtpZih0aGlzLmlzU3luY0ZvbnRMb2FkaW5nU3VwcG9ydGVkKXJldHVybjthd2FpdCBuZXcgUHJvbWlzZSgoZT0+e2NvbnN0IG49dGhpcy5fcXVldWVMb2FkaW5nQ2FsbGJhY2soZSk7dGhpcy5fcHJlcGFyZUZvbnRMb2FkRXZlbnQodCxuKX0pKX19Z2V0IGlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQoKXtjb25zdCB0PSEhdGhpcy5fZG9jdW1lbnQ/LmZvbnRzO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJpc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkIix0KX1nZXQgaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQoKXtsZXQgdD0hMTsoaS5pc05vZGVKU3x8InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9Nb3ppbGxhXC81LjAuKj9ydjpcZCsuKj8gR2Vja28vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpJiYodD0hMCk7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzU3luY0ZvbnRMb2FkaW5nU3VwcG9ydGVkIix0KX1fcXVldWVMb2FkaW5nQ2FsbGJhY2sodCl7Y29uc3R7bG9hZGluZ1JlcXVlc3RzOmV9PXRoaXMsbj17ZG9uZTohMSxjb21wbGV0ZTpmdW5jdGlvbiBjb21wbGV0ZVJlcXVlc3QoKXsoMCxpLmFzc2VydCkoIW4uZG9uZSwiY29tcGxldGVSZXF1ZXN0KCkgY2Fubm90IGJlIGNhbGxlZCB0d2ljZS4iKTtuLmRvbmU9ITA7Zm9yKDtlLmxlbmd0aD4wJiZlWzBdLmRvbmU7KXtjb25zdCB0PWUuc2hpZnQoKTtzZXRUaW1lb3V0KHQuY2FsbGJhY2ssMCl9fSxjYWxsYmFjazp0fTtlLnB1c2gobik7cmV0dXJuIG59Z2V0IF9sb2FkVGVzdEZvbnQoKXtjb25zdCB0PWF0b2IoIlQxUlVUd0FMQUlBQUF3QXdRMFpHSURIdFpnNEFBQU9ZQUFBQWdVWkdWRTFsa3pad0FBQUVIQUFBQUJ4SFJFVkdBQlFBRlFBQUJEZ0FBQUFlVDFNdk1sWU5Zd2tBQUFFZ0FBQUFZR050WVhBQkRRTFVBQUFDTkFBQUFVSm9aV0ZrL3hWRkRRQUFBTHdBQUFBMmFHaGxZUWRrQStvQUFBRDBBQUFBSkdodGRIZ0Q2QUFBQUFBRVdBQUFBQVp0WVhod0FBSlFBQUFBQVJnQUFBQUdibUZ0WlZqbWRINEFBQUdBQUFBQXNYQnZjM1QvaGdBekFBQURlQUFBQUNBQUFRQUFBQUVBQUxaUkZzUmZEenoxQUFzRDZBQUFBQURPQk9UTEFBQUFBTTRLSER3QUFBQUFBK2dESVFBQUFBZ0FBZ0FBQUFBQUFBQUJBQUFESVFBQUFGb0Q2QUFBQUFBRDZBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFVQUFBQWdBQUFBUUQ2QUgwQUFVQUFBS0tBcndBQUFDTUFvb0N2QUFBQWVBQU1RRUNBQUFDQUFZSkFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBRkJtUldRQXdBQXVBQzRESVA4NEFGb0RJUUFBQUFBQUFRQUFBQUFBQUFBQUFDQUFJQUFCQUFBQURnQ3VBQUVBQUFBQUFBQUFBUUFBQUFFQUFBQUFBQUVBQVFBQUFBRUFBQUFBQUFJQUFRQUFBQUVBQUFBQUFBTUFBUUFBQUFFQUFBQUFBQVFBQVFBQUFBRUFBQUFBQUFVQUFRQUFBQUVBQUFBQUFBWUFBUUFBQUFNQUFRUUpBQUFBQWdBQkFBTUFBUVFKQUFFQUFnQUJBQU1BQVFRSkFBSUFBZ0FCQUFNQUFRUUpBQU1BQWdBQkFBTUFBUVFKQUFRQUFnQUJBQU1BQVFRSkFBVUFBZ0FCQUFNQUFRUUpBQVlBQWdBQldBQllBQUFBQUFBQUF3QUFBQU1BQUFBY0FBRUFBQUFBQUR3QUF3QUJBQUFBSEFBRUFDQUFBQUFFQUFRQUFRQUFBQzcvL3dBQUFDNy8vLy9UQUFFQUFBQUFBQUFCQmdBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUQvZ3dBeUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQVFFQUFFQkFRSllBQUVCQVNINER3RDRHd0hFQXZnY0EvZ1hCSXdNQVl1TCtuejV0UVhrRDVqM0NCTG5FUUFDQVFFQklWaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZQUFBQkFRQUFEd0FDQVFFRUUvdDNEb3Y2ZkFINmZBVCtmUHA4K253SERvc01Ddm0xQ3ZtMURBejZmQlFBQUFBQUFBQUJBQUFBQU1tSmJ6RUFBQUFBemdUakZRQUFBQURPQk9RcEFBRUFBQUFBQUFBQURBQVVBQVFBQUFBQkFBQUFBZ0FCQUFBQUFBQUFBQUFENkFBQUFBQUFBQT09Iik7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9sb2FkVGVzdEZvbnQiLHQpfV9wcmVwYXJlRm9udExvYWRFdmVudCh0LGUpe2Z1bmN0aW9uIGludDMyKHQsZSl7cmV0dXJuIHQuY2hhckNvZGVBdChlKTw8MjR8dC5jaGFyQ29kZUF0KGUrMSk8PDE2fHQuY2hhckNvZGVBdChlKzIpPDw4fDI1NSZ0LmNoYXJDb2RlQXQoZSszKX1mdW5jdGlvbiBzcGxpY2VTdHJpbmcodCxlLG4saSl7cmV0dXJuIHQuc3Vic3RyaW5nKDAsZSkraSt0LnN1YnN0cmluZyhlK24pfWxldCBuLHI7Y29uc3Qgcz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtzLndpZHRoPTE7cy5oZWlnaHQ9MTtjb25zdCBhPXMuZ2V0Q29udGV4dCgiMmQiKTtsZXQgbz0wO2NvbnN0IGw9YGx0JHtEYXRlLm5vdygpfSR7dGhpcy5sb2FkVGVzdEZvbnRJZCsrfWA7bGV0IGM9dGhpcy5fbG9hZFRlc3RGb250O2M9c3BsaWNlU3RyaW5nKGMsOTc2LGwubGVuZ3RoLGwpO2NvbnN0IGg9MTQ4MjE4NDc5MjtsZXQgZD1pbnQzMihjLDE2KTtmb3Iobj0wLHI9bC5sZW5ndGgtMztuPHI7bis9NClkPWQtaCtpbnQzMihsLG4pfDA7bjxsLmxlbmd0aCYmKGQ9ZC1oK2ludDMyKGwrIlhYWCIsbil8MCk7Yz1zcGxpY2VTdHJpbmcoYywxNiw0LCgwLGkuc3RyaW5nMzIpKGQpKTtjb25zdCB1PWBAZm9udC1mYWNlIHtmb250LWZhbWlseToiJHtsfSI7c3JjOiR7YHVybChkYXRhOmZvbnQvb3BlbnR5cGU7YmFzZTY0LCR7YnRvYShjKX0pO2B9fWA7dGhpcy5pbnNlcnRSdWxlKHUpO2NvbnN0IHA9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO3Auc3R5bGUud2lkdGg9cC5zdHlsZS5oZWlnaHQ9IjEwcHgiO3Auc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtwLnN0eWxlLnRvcD1wLnN0eWxlLmxlZnQ9IjBweCI7Zm9yKGNvbnN0IGUgb2ZbdC5sb2FkZWROYW1lLGxdKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0LnRleHRDb250ZW50PSJIaSI7dC5zdHlsZS5mb250RmFtaWx5PWU7cC5hcHBlbmQodCl9dGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmQocCk7IWZ1bmN0aW9uIGlzRm9udFJlYWR5KHQsZSl7aWYoKytvPjMwKXsoMCxpLndhcm4pKCJMb2FkIHRlc3QgZm9udCBuZXZlciBsb2FkZWQuIik7ZSgpO3JldHVybn1hLmZvbnQ9IjMwcHggIit0O2EuZmlsbFRleHQoIi4iLDAsMjApO2EuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM10+MD9lKCk6c2V0VGltZW91dChpc0ZvbnRSZWFkeS5iaW5kKG51bGwsdCxlKSl9KGwsKCgpPT57cC5yZW1vdmUoKTtlLmNvbXBsZXRlKCl9KSl9fTtlLkZvbnRGYWNlT2JqZWN0PWNsYXNzIEZvbnRGYWNlT2JqZWN0e2NvbnN0cnVjdG9yKHQsZSl7bGV0e2lzRXZhbFN1cHBvcnRlZDpuPSEwLGRpc2FibGVGb250RmFjZTppPSExLGlnbm9yZUVycm9yczpyPSExLGluc3BlY3RGb250OnM9bnVsbH09ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgaW4gdCl0aGlzW2VdPXRbZV07dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT1uO3RoaXMuZGlzYWJsZUZvbnRGYWNlPSEwPT09aTt0aGlzLmlnbm9yZUVycm9ycz0hMD09PXI7dGhpcy5faW5zcGVjdEZvbnQ9c31jcmVhdGVOYXRpdmVGb250RmFjZSgpe2lmKCF0aGlzLmRhdGF8fHRoaXMuZGlzYWJsZUZvbnRGYWNlKXJldHVybiBudWxsO2xldCB0O2lmKHRoaXMuY3NzRm9udEluZm8pe2NvbnN0IGU9e3dlaWdodDp0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O3RoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUmJihlLnN0eWxlPWBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWdgKTt0PW5ldyBGb250RmFjZSh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksdGhpcy5kYXRhLGUpfWVsc2UgdD1uZXcgRm9udEZhY2UodGhpcy5sb2FkZWROYW1lLHRoaXMuZGF0YSx7fSk7dGhpcy5faW5zcGVjdEZvbnQ/Lih0aGlzKTtyZXR1cm4gdH1jcmVhdGVGb250RmFjZVJ1bGUoKXtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDtjb25zdCB0PSgwLGkuYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxlPWB1cmwoZGF0YToke3RoaXMubWltZXR5cGV9O2Jhc2U2NCwke2J0b2EodCl9KTtgO2xldCBuO2lmKHRoaXMuY3NzRm9udEluZm8pe2xldCB0PWBmb250LXdlaWdodDogJHt0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O2A7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKHQrPWBmb250LXN0eWxlOiBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWc7YCk7bj1gQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6IiR7dGhpcy5jc3NGb250SW5mby5mb250RmFtaWx5fSI7JHt0fXNyYzoke2V9fWB9ZWxzZSBuPWBAZm9udC1mYWNlIHtmb250LWZhbWlseToiJHt0aGlzLmxvYWRlZE5hbWV9IjtzcmM6JHtlfX1gO3RoaXMuX2luc3BlY3RGb250Py4odGhpcyxlKTtyZXR1cm4gbn1nZXRQYXRoR2VuZXJhdG9yKHQsZSl7aWYodm9pZCAwIT09dGhpcy5jb21waWxlZEdseXBoc1tlXSlyZXR1cm4gdGhpcy5jb21waWxlZEdseXBoc1tlXTtsZXQgbjt0cnl7bj10LmdldCh0aGlzLmxvYWRlZE5hbWUrIl9wYXRoXyIrZSl9Y2F0Y2godCl7aWYoIXRoaXMuaWdub3JlRXJyb3JzKXRocm93IHQ7KDAsaS53YXJuKShgZ2V0UGF0aEdlbmVyYXRvciAtIGlnbm9yaW5nIGNoYXJhY3RlcjogIiR7dH0iLmApO3JldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2VdPWZ1bmN0aW9uKHQsZSl7fX1pZih0aGlzLmlzRXZhbFN1cHBvcnRlZCYmaS5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3Qgbj12b2lkIDAhPT1lLmFyZ3M/ZS5hcmdzLmpvaW4oIiwiKToiIjt0LnB1c2goImMuIixlLmNtZCwiKCIsbiwiKTtcbiIpfXJldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2VdPW5ldyBGdW5jdGlvbigiYyIsInNpemUiLHQuam9pbigiIikpfXJldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2VdPWZ1bmN0aW9uKHQsZSl7Zm9yKGNvbnN0IGkgb2Ygbil7InNjYWxlIj09PWkuY21kJiYoaS5hcmdzPVtlLC1lXSk7dFtpLmNtZF0uYXBwbHkodCxpLmFyZ3MpfX19fX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZS5Ob2RlRmlsdGVyRmFjdG9yeT1lLk5vZGVDYW52YXNGYWN0b3J5PWUuTm9kZUNNYXBSZWFkZXJGYWN0b3J5PXZvaWQgMDtuKDIpO24oOTMpO24oMTAxKTtuKDEwMik7bigxMDUpO24oMTA3KTtuKDEwOSk7bigxMTMpO24oMTE2KTtuKDEyMyk7dmFyIGk9bigxNjgpLHI9bigxKTshZnVuY3Rpb24gY2hlY2tET01NYXRyaXgoKXtpZighZ2xvYmFsVGhpcy5ET01NYXRyaXgmJnIuaXNOb2RlSlMpdHJ5e2dsb2JhbFRoaXMuRE9NTWF0cml4PXJlcXVpcmUoImNhbnZhcyIpLkRPTU1hdHJpeH1jYXRjaCh0KXsoMCxyLndhcm4pKGBDYW5ub3QgcG9seWZpbGwgXGBET01NYXRyaXhcYCwgcmVuZGVyaW5nIG1heSBiZSBicm9rZW46ICIke3R9Ii5gKX19KCk7IWZ1bmN0aW9uIGNoZWNrUGF0aDJEKCl7aWYoIWdsb2JhbFRoaXMuUGF0aDJEJiZyLmlzTm9kZUpTKXRyeXtjb25zdHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6dH09cmVxdWlyZSgiY2FudmFzIikse3BvbHlmaWxsUGF0aDJEOmV9PXJlcXVpcmUoInBhdGgyZC1wb2x5ZmlsbCIpO2dsb2JhbFRoaXMuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPXQ7ZShnbG9iYWxUaGlzKX1jYXRjaCh0KXsoMCxyLndhcm4pKGBDYW5ub3QgcG9seWZpbGwgXGBQYXRoMkRcYCwgcmVuZGVyaW5nIG1heSBiZSBicm9rZW46ICIke3R9Ii5gKX19KCk7Y29uc3QgZmV0Y2hEYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoKGUsbik9PntyZXF1aXJlKCJmcyIpLnJlYWRGaWxlKHQsKCh0LGkpPT57IXQmJmk/ZShuZXcgVWludDhBcnJheShpKSk6bihuZXcgRXJyb3IodCkpfSkpfSkpfTtjbGFzcyBOb2RlRmlsdGVyRmFjdG9yeSBleHRlbmRzIGkuQmFzZUZpbHRlckZhY3Rvcnl7fWUuTm9kZUZpbHRlckZhY3Rvcnk9Tm9kZUZpbHRlckZhY3Rvcnk7Y2xhc3MgTm9kZUNhbnZhc0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDYW52YXNGYWN0b3J5e19jcmVhdGVDYW52YXModCxlKXtyZXR1cm4gcmVxdWlyZSgiY2FudmFzIikuY3JlYXRlQ2FudmFzKHQsZSl9fWUuTm9kZUNhbnZhc0ZhY3Rvcnk9Tm9kZUNhbnZhc0ZhY3Rvcnk7Y2xhc3MgTm9kZUNNYXBSZWFkZXJGYWN0b3J5IGV4dGVuZHMgaS5CYXNlQ01hcFJlYWRlckZhY3Rvcnl7X2ZldGNoRGF0YSh0LGUpe3JldHVybiBmZXRjaERhdGEodCkudGhlbigodD0+KHtjTWFwRGF0YTp0LGNvbXByZXNzaW9uVHlwZTplfSkpKX19ZS5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk9Tm9kZUNNYXBSZWFkZXJGYWN0b3J5O2NsYXNzIE5vZGVTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBleHRlbmRzIGkuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5e19mZXRjaERhdGEodCl7cmV0dXJuIGZldGNoRGF0YSh0KX19ZS5Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9Tm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkNhbnZhc0dyYXBoaWNzPXZvaWQgMDtuKDIpO24oOTMpO24oMTAxKTtuKDEwMik7bigxMDUpO24oMTA3KTtuKDEwOSk7bigxMTMpO24oMTE2KTtuKDEyMyk7big4OSk7dmFyIGk9bigxKSxyPW4oMTY3KSxzPW4oMTczKSxhPW4oMTc0KTtjb25zdCBvPTQwOTYsbD0xNjtjbGFzcyBDYWNoZWRDYW52YXNlc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmNhbnZhc0ZhY3Rvcnk9dDt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0Q2FudmFzKHQsZSxuKXtsZXQgaTtpZih2b2lkIDAhPT10aGlzLmNhY2hlW3RdKXtpPXRoaXMuY2FjaGVbdF07dGhpcy5jYW52YXNGYWN0b3J5LnJlc2V0KGksZSxuKX1lbHNle2k9dGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShlLG4pO3RoaXMuY2FjaGVbdF09aX1yZXR1cm4gaX1kZWxldGUodCl7ZGVsZXRlIHRoaXMuY2FjaGVbdF19Y2xlYXIoKXtmb3IoY29uc3QgdCBpbiB0aGlzLmNhY2hlKXtjb25zdCBlPXRoaXMuY2FjaGVbdF07dGhpcy5jYW52YXNGYWN0b3J5LmRlc3Ryb3koZSk7ZGVsZXRlIHRoaXMuY2FjaGVbdF19fX1mdW5jdGlvbiBkcmF3SW1hZ2VBdEludGVnZXJDb29yZHModCxlLG4saSxzLGEsbyxsLGMsaCl7Y29uc3RbZCx1LHAsZixnLG1dPSgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkodCk7aWYoMD09PXUmJjA9PT1wKXtjb25zdCByPW8qZCtnLGI9TWF0aC5yb3VuZChyKSx2PWwqZittLHk9TWF0aC5yb3VuZCh2KSxBPShvK2MpKmQrZyxfPU1hdGguYWJzKE1hdGgucm91bmQoQSktYil8fDEsUz0obCtoKSpmK20sRT1NYXRoLmFicyhNYXRoLnJvdW5kKFMpLXkpfHwxO3Quc2V0VHJhbnNmb3JtKE1hdGguc2lnbihkKSwwLDAsTWF0aC5zaWduKGYpLGIseSk7dC5kcmF3SW1hZ2UoZSxuLGkscyxhLDAsMCxfLEUpO3Quc2V0VHJhbnNmb3JtKGQsdSxwLGYsZyxtKTtyZXR1cm5bXyxFXX1pZigwPT09ZCYmMD09PWYpe2NvbnN0IHI9bCpwK2csYj1NYXRoLnJvdW5kKHIpLHY9byp1K20seT1NYXRoLnJvdW5kKHYpLEE9KGwraCkqcCtnLF89TWF0aC5hYnMoTWF0aC5yb3VuZChBKS1iKXx8MSxTPShvK2MpKnUrbSxFPU1hdGguYWJzKE1hdGgucm91bmQoUykteSl8fDE7dC5zZXRUcmFuc2Zvcm0oMCxNYXRoLnNpZ24odSksTWF0aC5zaWduKHApLDAsYix5KTt0LmRyYXdJbWFnZShlLG4saSxzLGEsMCwwLEUsXyk7dC5zZXRUcmFuc2Zvcm0oZCx1LHAsZixnLG0pO3JldHVybltFLF9dfXQuZHJhd0ltYWdlKGUsbixpLHMsYSxvLGwsYyxoKTtyZXR1cm5bTWF0aC5oeXBvdChkLHUpKmMsTWF0aC5oeXBvdChwLGYpKmhdfWNsYXNzIENhbnZhc0V4dHJhU3RhdGV7Y29uc3RydWN0b3IodCxlKXt0aGlzLmFscGhhSXNTaGFwZT0hMTt0aGlzLmZvbnRTaXplPTA7dGhpcy5mb250U2l6ZVNjYWxlPTE7dGhpcy50ZXh0TWF0cml4PWkuSURFTlRJVFlfTUFUUklYO3RoaXMudGV4dE1hdHJpeFNjYWxlPTE7dGhpcy5mb250TWF0cml4PWkuRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy5sZWFkaW5nPTA7dGhpcy54PTA7dGhpcy55PTA7dGhpcy5saW5lWD0wO3RoaXMubGluZVk9MDt0aGlzLmNoYXJTcGFjaW5nPTA7dGhpcy53b3JkU3BhY2luZz0wO3RoaXMudGV4dEhTY2FsZT0xO3RoaXMudGV4dFJlbmRlcmluZ01vZGU9aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMO3RoaXMudGV4dFJpc2U9MDt0aGlzLmZpbGxDb2xvcj0iIzAwMDAwMCI7dGhpcy5zdHJva2VDb2xvcj0iIzAwMDAwMCI7dGhpcy5wYXR0ZXJuRmlsbD0hMTt0aGlzLmZpbGxBbHBoYT0xO3RoaXMuc3Ryb2tlQWxwaGE9MTt0aGlzLmxpbmVXaWR0aD0xO3RoaXMuYWN0aXZlU01hc2s9bnVsbDt0aGlzLnRyYW5zZmVyTWFwcz0ibm9uZSI7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsdCxlXSl9Y2xvbmUoKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5jbGlwQm94PXRoaXMuY2xpcEJveC5zbGljZSgpO3JldHVybiB0fXNldEN1cnJlbnRQb2ludCh0LGUpe3RoaXMueD10O3RoaXMueT1lfXVwZGF0ZVBhdGhNaW5NYXgodCxlLG4pe1tlLG5dPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbZSxuXSx0KTt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLGUpO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksbik7dGhpcy5tYXhYPU1hdGgubWF4KHRoaXMubWF4WCxlKTt0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLG4pfXVwZGF0ZVJlY3RNaW5NYXgodCxlKXtjb25zdCBuPWkuVXRpbC5hcHBseVRyYW5zZm9ybShlLHQpLHI9aS5VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiksdCk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxuWzBdLHJbMF0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksblsxXSxyWzFdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLG5bMF0sclswXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxuWzFdLHJbMV0pfXVwZGF0ZVNjYWxpbmdQYXRoTWluTWF4KHQsZSl7aS5VdGlsLnNjYWxlTWluTWF4KHQsZSk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxlWzBdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLGVbMV0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksZVsyXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxlWzNdKX11cGRhdGVDdXJ2ZVBhdGhNaW5NYXgodCxlLG4scixzLGEsbyxsLGMsaCl7Y29uc3QgZD1pLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxuLHIscyxhLG8sbCxjKTtpZihoKXtoWzBdPU1hdGgubWluKGhbMF0sZFswXSxkWzJdKTtoWzFdPU1hdGgubWF4KGhbMV0sZFswXSxkWzJdKTtoWzJdPU1hdGgubWluKGhbMl0sZFsxXSxkWzNdKTtoWzNdPU1hdGgubWF4KGhbM10sZFsxXSxkWzNdKX1lbHNlIHRoaXMudXBkYXRlUmVjdE1pbk1heCh0LGQpfWdldFBhdGhCb3VuZGluZ0JveCgpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpzLlBhdGhUeXBlLkZJTEwsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtjb25zdCBuPVt0aGlzLm1pblgsdGhpcy5taW5ZLHRoaXMubWF4WCx0aGlzLm1heFldO2lmKHQ9PT1zLlBhdGhUeXBlLlNUUk9LRSl7ZXx8KDAsaS51bnJlYWNoYWJsZSkoIlN0cm9rZSBib3VuZGluZyBib3ggbXVzdCBpbmNsdWRlIHRyYW5zZm9ybS4iKTtjb25zdCB0PWkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShlKSxyPXRbMF0qdGhpcy5saW5lV2lkdGgvMixzPXRbMV0qdGhpcy5saW5lV2lkdGgvMjtuWzBdLT1yO25bMV0tPXM7blsyXSs9cjtuWzNdKz1zfXJldHVybiBufXVwZGF0ZUNsaXBGcm9tUGF0aCgpe2NvbnN0IHQ9aS5VdGlsLmludGVyc2VjdCh0aGlzLmNsaXBCb3gsdGhpcy5nZXRQYXRoQm91bmRpbmdCb3goKSk7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KHR8fFswLDAsMCwwXSl9aXNFbXB0eUNsaXAoKXtyZXR1cm4gdGhpcy5taW5YPT09MS8wfXN0YXJ0TmV3UGF0aEFuZENsaXBCb3godCl7dGhpcy5jbGlwQm94PXQ7dGhpcy5taW5YPTEvMDt0aGlzLm1pblk9MS8wO3RoaXMubWF4WD0wO3RoaXMubWF4WT0wfWdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06cy5QYXRoVHlwZS5GSUxMLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7cmV0dXJuIGkuVXRpbC5pbnRlcnNlY3QodGhpcy5jbGlwQm94LHRoaXMuZ2V0UGF0aEJvdW5kaW5nQm94KHQsZSkpfX1mdW5jdGlvbiBwdXRCaW5hcnlJbWFnZURhdGEodCxlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlRGF0YSYmZSBpbnN0YW5jZW9mIEltYWdlRGF0YSl7dC5wdXRJbWFnZURhdGEoZSwwLDApO3JldHVybn1jb25zdCBuPWUuaGVpZ2h0LHI9ZS53aWR0aCxzPW4lbCxhPShuLXMpL2wsbz0wPT09cz9hOmErMSxjPXQuY3JlYXRlSW1hZ2VEYXRhKHIsbCk7bGV0IGgsZD0wO2NvbnN0IHU9ZS5kYXRhLHA9Yy5kYXRhO2xldCBmLGcsbSxiO2lmKGUua2luZD09PWkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKXtjb25zdCBlPXUuYnl0ZUxlbmd0aCxuPW5ldyBVaW50MzJBcnJheShwLmJ1ZmZlciwwLHAuYnl0ZUxlbmd0aD4+MiksYj1uLmxlbmd0aCx2PXIrNz4+Myx5PTQyOTQ5NjcyOTUsQT1pLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1O2ZvcihmPTA7ZjxvO2YrKyl7bT1mPGE/bDpzO2g9MDtmb3IoZz0wO2c8bTtnKyspe2NvbnN0IHQ9ZS1kO2xldCBpPTA7Y29uc3Qgcz10PnY/cjo4KnQtNyxhPS04JnM7bGV0IG89MCxsPTA7Zm9yKDtpPGE7aSs9OCl7bD11W2QrK107bltoKytdPTEyOCZsP3k6QTtuW2grK109NjQmbD95OkE7bltoKytdPTMyJmw/eTpBO25baCsrXT0xNiZsP3k6QTtuW2grK109OCZsP3k6QTtuW2grK109NCZsP3k6QTtuW2grK109MiZsP3k6QTtuW2grK109MSZsP3k6QX1mb3IoO2k8cztpKyspe2lmKDA9PT1vKXtsPXVbZCsrXTtvPTEyOH1uW2grK109bCZvP3k6QTtvPj49MX19Zm9yKDtoPGI7KW5baCsrXT0wO3QucHV0SW1hZ2VEYXRhKGMsMCxmKmwpfX1lbHNlIGlmKGUua2luZD09PWkuSW1hZ2VLaW5kLlJHQkFfMzJCUFApe2c9MDtiPXIqbCo0O2ZvcihmPTA7ZjxhO2YrKyl7cC5zZXQodS5zdWJhcnJheShkLGQrYikpO2QrPWI7dC5wdXRJbWFnZURhdGEoYywwLGcpO2crPWx9aWYoZjxvKXtiPXIqcyo0O3Auc2V0KHUuc3ViYXJyYXkoZCxkK2IpKTt0LnB1dEltYWdlRGF0YShjLDAsZyl9fWVsc2V7aWYoZS5raW5kIT09aS5JbWFnZUtpbmQuUkdCXzI0QlBQKXRocm93IG5ldyBFcnJvcihgYmFkIGltYWdlIGtpbmQ6ICR7ZS5raW5kfWApO209bDtiPXIqbTtmb3IoZj0wO2Y8bztmKyspe2lmKGY+PWEpe209cztiPXIqbX1oPTA7Zm9yKGc9YjtnLS07KXtwW2grK109dVtkKytdO3BbaCsrXT11W2QrK107cFtoKytdPXVbZCsrXTtwW2grK109MjU1fXQucHV0SW1hZ2VEYXRhKGMsMCxmKmwpfX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VNYXNrKHQsZSl7aWYoZS5iaXRtYXApe3QuZHJhd0ltYWdlKGUuYml0bWFwLDAsMCk7cmV0dXJufWNvbnN0IG49ZS5oZWlnaHQsaT1lLndpZHRoLHI9biVsLHM9KG4tcikvbCxvPTA9PT1yP3M6cysxLGM9dC5jcmVhdGVJbWFnZURhdGEoaSxsKTtsZXQgaD0wO2NvbnN0IGQ9ZS5kYXRhLHU9Yy5kYXRhO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IG49ZTxzP2w6cjsoe3NyY1BvczpofT0oMCxhLmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKSh7c3JjOmQsc3JjUG9zOmgsZGVzdDp1LHdpZHRoOmksaGVpZ2h0Om4sbm9uQmxhY2tDb2xvcjowfSkpO3QucHV0SW1hZ2VEYXRhKGMsMCxlKmwpfX1mdW5jdGlvbiBjb3B5Q3R4U3RhdGUodCxlKXtjb25zdCBuPVsic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsUnVsZSIsImdsb2JhbEFscGhhIiwibGluZVdpZHRoIiwibGluZUNhcCIsImxpbmVKb2luIiwibWl0ZXJMaW1pdCIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZvbnQiLCJmaWx0ZXIiXTtmb3IoY29uc3QgaSBvZiBuKXZvaWQgMCE9PXRbaV0mJihlW2ldPXRbaV0pO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe2Uuc2V0TGluZURhc2godC5nZXRMaW5lRGFzaCgpKTtlLmxpbmVEYXNoT2Zmc2V0PXQubGluZURhc2hPZmZzZXR9fWZ1bmN0aW9uIHJlc2V0Q3R4VG9EZWZhdWx0KHQpe3Quc3Ryb2tlU3R5bGU9dC5maWxsU3R5bGU9IiMwMDAwMDAiO3QuZmlsbFJ1bGU9Im5vbnplcm8iO3QuZ2xvYmFsQWxwaGE9MTt0LmxpbmVXaWR0aD0xO3QubGluZUNhcD0iYnV0dCI7dC5saW5lSm9pbj0ibWl0ZXIiO3QubWl0ZXJMaW1pdD0xMDt0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLW92ZXIiO3QuZm9udD0iMTBweCBzYW5zLXNlcmlmIjtpZih2b2lkIDAhPT10LnNldExpbmVEYXNoKXt0LnNldExpbmVEYXNoKFtdKTt0LmxpbmVEYXNoT2Zmc2V0PTB9aWYoIWkuaXNOb2RlSlMpe2NvbnN0e2ZpbHRlcjplfT10OyJub25lIiE9PWUmJiIiIT09ZSYmKHQuZmlsdGVyPSJub25lIil9fWZ1bmN0aW9uIGNvbXBvc2VTTWFza0JhY2tkcm9wKHQsZSxuLGkpe2NvbnN0IHI9dC5sZW5ndGg7Zm9yKGxldCBzPTM7czxyO3MrPTQpe2NvbnN0IHI9dFtzXTtpZigwPT09cil7dFtzLTNdPWU7dFtzLTJdPW47dFtzLTFdPWl9ZWxzZSBpZihyPDI1NSl7Y29uc3QgYT0yNTUtcjt0W3MtM109dFtzLTNdKnIrZSphPj44O3Rbcy0yXT10W3MtMl0qcituKmE+Pjg7dFtzLTFdPXRbcy0xXSpyK2kqYT4+OH19fWZ1bmN0aW9uIGNvbXBvc2VTTWFza0FscGhhKHQsZSxuKXtjb25zdCBpPXQubGVuZ3RoO2ZvcihsZXQgcj0zO3I8aTtyKz00KXtjb25zdCBpPW4/blt0W3JdXTp0W3JdO2Vbcl09ZVtyXSppKi4wMDM5MjE1Njg2Mjc0NTA5OHwwfX1mdW5jdGlvbiBjb21wb3NlU01hc2tMdW1pbm9zaXR5KHQsZSxuKXtjb25zdCBpPXQubGVuZ3RoO2ZvcihsZXQgcj0zO3I8aTtyKz00KXtjb25zdCBpPTc3KnRbci0zXSsxNTIqdFtyLTJdKzI4KnRbci0xXTtlW3JdPW4/ZVtyXSpuW2k+PjhdPj44OmVbcl0qaT4+MTZ9fWZ1bmN0aW9uIGNvbXBvc2VTTWFzayh0LGUsbixpKXtjb25zdCByPWlbMF0scz1pWzFdLGE9aVsyXS1yLG89aVszXS1zO2lmKDAhPT1hJiYwIT09byl7IWZ1bmN0aW9uIGdlbmVyaWNDb21wb3NlU01hc2sodCxlLG4saSxyLHMsYSxvLGwsYyxoKXtjb25zdCBkPSEhcyx1PWQ/c1swXTowLHA9ZD9zWzFdOjAsZj1kP3NbMl06MCxnPSJMdW1pbm9zaXR5Ij09PXI/Y29tcG9zZVNNYXNrTHVtaW5vc2l0eTpjb21wb3NlU01hc2tBbHBoYSxtPU1hdGgubWluKGksTWF0aC5jZWlsKDEwNDg1NzYvbikpO2ZvcihsZXQgcj0wO3I8aTtyKz1tKXtjb25zdCBzPU1hdGgubWluKG0saS1yKSxiPXQuZ2V0SW1hZ2VEYXRhKG8tYyxyKyhsLWgpLG4scyksdj1lLmdldEltYWdlRGF0YShvLHIrbCxuLHMpO2QmJmNvbXBvc2VTTWFza0JhY2tkcm9wKGIuZGF0YSx1LHAsZik7ZyhiLmRhdGEsdi5kYXRhLGEpO2UucHV0SW1hZ2VEYXRhKHYsbyxyK2wpfX0oZS5jb250ZXh0LG4sYSxvLGUuc3VidHlwZSxlLmJhY2tkcm9wLGUudHJhbnNmZXJNYXAscixzLGUub2Zmc2V0WCxlLm9mZnNldFkpO3Quc2F2ZSgpO3QuZ2xvYmFsQWxwaGE9MTt0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLW92ZXIiO3Quc2V0VHJhbnNmb3JtKDEsMCwwLDEsMCwwKTt0LmRyYXdJbWFnZShuLmNhbnZhcywwLDApO3QucmVzdG9yZSgpfX1mdW5jdGlvbiBnZXRJbWFnZVNtb290aGluZ0VuYWJsZWQodCxlKXtjb25zdCBuPWkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0KTtuWzBdPU1hdGguZnJvdW5kKG5bMF0pO25bMV09TWF0aC5mcm91bmQoblsxXSk7Y29uc3Qgcz1NYXRoLmZyb3VuZCgoZ2xvYmFsVGhpcy5kZXZpY2VQaXhlbFJhdGlvfHwxKSpyLlBpeGVsc1BlckluY2guUERGX1RPX0NTU19VTklUUyk7cmV0dXJuIHZvaWQgMCE9PWU/ZTpuWzBdPD1zfHxuWzFdPD1zfWNvbnN0IGM9WyJidXR0Iiwicm91bmQiLCJzcXVhcmUiXSxoPVsibWl0ZXIiLCJyb3VuZCIsImJldmVsIl0sZD17fSx1PXt9O2NsYXNzIENhbnZhc0dyYXBoaWNze2NvbnN0cnVjdG9yKHQsZSxuLGkscixzLGEsbyl7bGV0e29wdGlvbmFsQ29udGVudENvbmZpZzpsLG1hcmtlZENvbnRlbnRTdGFjazpjPW51bGx9PXM7dGhpcy5jdHg9dDt0aGlzLmN1cnJlbnQ9bmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpO3RoaXMuc3RhdGVTdGFjaz1bXTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMucmVzPW51bGw7dGhpcy54b2Jqcz1udWxsO3RoaXMuY29tbW9uT2Jqcz1lO3RoaXMub2Jqcz1uO3RoaXMuY2FudmFzRmFjdG9yeT1pO3RoaXMuZmlsdGVyRmFjdG9yeT1yO3RoaXMuZ3JvdXBTdGFjaz1bXTt0aGlzLnByb2Nlc3NpbmdUeXBlMz1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybT1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZ3JvdXBMZXZlbD0wO3RoaXMuc21hc2tTdGFjaz1bXTt0aGlzLnNtYXNrQ291bnRlcj0wO3RoaXMudGVtcFNNYXNrPW51bGw7dGhpcy5zdXNwZW5kZWRDdHg9bnVsbDt0aGlzLmNvbnRlbnRWaXNpYmxlPSEwO3RoaXMubWFya2VkQ29udGVudFN0YWNrPWN8fFtdO3RoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnPWw7dGhpcy5jYWNoZWRDYW52YXNlcz1uZXcgQ2FjaGVkQ2FudmFzZXModGhpcy5jYW52YXNGYWN0b3J5KTt0aGlzLmNhY2hlZFBhdHRlcm5zPW5ldyBNYXA7dGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwPWE7dGhpcy52aWV3cG9ydFNjYWxlPTE7dGhpcy5vdXRwdXRTY2FsZVg9MTt0aGlzLm91dHB1dFNjYWxlWT0xO3RoaXMucGFnZUNvbG9ycz1vO3RoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc9Wy0xLDBdO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbDt0aGlzLl9jYWNoZWRCaXRtYXBzTWFwPW5ldyBNYXB9Z2V0T2JqZWN0KHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnN0YXJ0c1dpdGgoImdfIik/dGhpcy5jb21tb25PYmpzLmdldCh0KTp0aGlzLm9ianMuZ2V0KHQpOmV9YmVnaW5EcmF3aW5nKHQpe2xldHt0cmFuc2Zvcm06ZSx2aWV3cG9ydDpuLHRyYW5zcGFyZW5jeTppPSExLGJhY2tncm91bmQ6cz1udWxsfT10O2NvbnN0IGE9dGhpcy5jdHguY2FudmFzLndpZHRoLG89dGhpcy5jdHguY2FudmFzLmhlaWdodCxsPXRoaXMuY3R4LmZpbGxTdHlsZTt0aGlzLmN0eC5maWxsU3R5bGU9c3x8IiNmZmZmZmYiO3RoaXMuY3R4LmZpbGxSZWN0KDAsMCxhLG8pO3RoaXMuY3R4LmZpbGxTdHlsZT1sO2lmKGkpe2NvbnN0IHQ9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoInRyYW5zcGFyZW50IixhLG8pO3RoaXMuY29tcG9zaXRlQ3R4PXRoaXMuY3R4O3RoaXMudHJhbnNwYXJlbnRDYW52YXM9dC5jYW52YXM7dGhpcy5jdHg9dC5jb250ZXh0O3RoaXMuY3R4LnNhdmUoKTt0aGlzLmN0eC50cmFuc2Zvcm0oLi4uKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmNvbXBvc2l0ZUN0eCkpfXRoaXMuY3R4LnNhdmUoKTtyZXNldEN0eFRvRGVmYXVsdCh0aGlzLmN0eCk7aWYoZSl7dGhpcy5jdHgudHJhbnNmb3JtKC4uLmUpO3RoaXMub3V0cHV0U2NhbGVYPWVbMF07dGhpcy5vdXRwdXRTY2FsZVk9ZVswXX10aGlzLmN0eC50cmFuc2Zvcm0oLi4ubi50cmFuc2Zvcm0pO3RoaXMudmlld3BvcnRTY2FsZT1uLnNjYWxlO3RoaXMuYmFzZVRyYW5zZm9ybT0oMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KX1leGVjdXRlT3BlcmF0b3JMaXN0KHQsZSxuLHIpe2NvbnN0IHM9dC5hcmdzQXJyYXksYT10LmZuQXJyYXk7bGV0IG89ZXx8MDtjb25zdCBsPXMubGVuZ3RoO2lmKGw9PT1vKXJldHVybiBvO2NvbnN0IGM9bC1vPjEwJiYiZnVuY3Rpb24iPT10eXBlb2YgbixoPWM/RGF0ZS5ub3coKSsxNTowO2xldCBkPTA7Y29uc3QgdT10aGlzLmNvbW1vbk9ianMscD10aGlzLm9ianM7bGV0IGY7Zm9yKDs7KXtpZih2b2lkIDAhPT1yJiZvPT09ci5uZXh0QnJlYWtQb2ludCl7ci5icmVha0l0KG8sbik7cmV0dXJuIG99Zj1hW29dO2lmKGYhPT1pLk9QUy5kZXBlbmRlbmN5KXRoaXNbZl0uYXBwbHkodGhpcyxzW29dKTtlbHNlIGZvcihjb25zdCB0IG9mIHNbb10pe2NvbnN0IGU9dC5zdGFydHNXaXRoKCJnXyIpP3U6cDtpZighZS5oYXModCkpe2UuZ2V0KHQsbik7cmV0dXJuIG99fW8rKztpZihvPT09bClyZXR1cm4gbztpZihjJiYrK2Q+MTApe2lmKERhdGUubm93KCk+aCl7bigpO3JldHVybiBvfWQ9MH19fSNHdCgpe2Zvcig7dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aHx8dGhpcy5pblNNYXNrTW9kZTspdGhpcy5yZXN0b3JlKCk7dGhpcy5jdHgucmVzdG9yZSgpO2lmKHRoaXMudHJhbnNwYXJlbnRDYW52YXMpe3RoaXMuY3R4PXRoaXMuY29tcG9zaXRlQ3R4O3RoaXMuY3R4LnNhdmUoKTt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3RoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLnRyYW5zcGFyZW50Q2FudmFzLDAsMCk7dGhpcy5jdHgucmVzdG9yZSgpO3RoaXMudHJhbnNwYXJlbnRDYW52YXM9bnVsbH19ZW5kRHJhd2luZygpe3RoaXMuI0d0KCk7dGhpcy5jYWNoZWRDYW52YXNlcy5jbGVhcigpO3RoaXMuY2FjaGVkUGF0dGVybnMuY2xlYXIoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9jYWNoZWRCaXRtYXBzTWFwLnZhbHVlcygpKXtmb3IoY29uc3QgZSBvZiB0LnZhbHVlcygpKSJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQmJmUgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCYmKGUud2lkdGg9ZS5oZWlnaHQ9MCk7dC5jbGVhcigpfXRoaXMuX2NhY2hlZEJpdG1hcHNNYXAuY2xlYXIoKTt0aGlzLiNWdCgpfSNWdCgpe2lmKHRoaXMucGFnZUNvbG9ycyl7Y29uc3QgdD10aGlzLmZpbHRlckZhY3RvcnkuYWRkSENNRmlsdGVyKHRoaXMucGFnZUNvbG9ycy5mb3JlZ3JvdW5kLHRoaXMucGFnZUNvbG9ycy5iYWNrZ3JvdW5kKTtpZigibm9uZSIhPT10KXtjb25zdCBlPXRoaXMuY3R4LmZpbHRlcjt0aGlzLmN0eC5maWx0ZXI9dDt0aGlzLmN0eC5kcmF3SW1hZ2UodGhpcy5jdHguY2FudmFzLDAsMCk7dGhpcy5jdHguZmlsdGVyPWV9fX1fc2NhbGVJbWFnZSh0LGUpe2NvbnN0IG49dC53aWR0aCxpPXQuaGVpZ2h0O2xldCByLHMsYT1NYXRoLm1heChNYXRoLmh5cG90KGVbMF0sZVsxXSksMSksbz1NYXRoLm1heChNYXRoLmh5cG90KGVbMl0sZVszXSksMSksbD1uLGM9aSxoPSJwcmVzY2FsZTEiO2Zvcig7YT4yJiZsPjF8fG8+MiYmYz4xOyl7bGV0IGU9bCxuPWM7aWYoYT4yJiZsPjEpe2U9bD49MTYzODQ/TWF0aC5mbG9vcihsLzIpLTF8fDE6TWF0aC5jZWlsKGwvMik7YS89bC9lfWlmKG8+MiYmYz4xKXtuPWM+PTE2Mzg0P01hdGguZmxvb3IoYy8yKS0xfHwxOk1hdGguY2VpbChjKS8yO28vPWMvbn1yPXRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKGgsZSxuKTtzPXIuY29udGV4dDtzLmNsZWFyUmVjdCgwLDAsZSxuKTtzLmRyYXdJbWFnZSh0LDAsMCxsLGMsMCwwLGUsbik7dD1yLmNhbnZhcztsPWU7Yz1uO2g9InByZXNjYWxlMSI9PT1oPyJwcmVzY2FsZTIiOiJwcmVzY2FsZTEifXJldHVybntpbWc6dCxwYWludFdpZHRoOmwscGFpbnRIZWlnaHQ6Y319X2NyZWF0ZU1hc2tDYW52YXModCl7Y29uc3QgZT10aGlzLmN0eCx7d2lkdGg6bixoZWlnaHQ6YX09dCxvPXRoaXMuY3VycmVudC5maWxsQ29sb3IsbD10aGlzLmN1cnJlbnQucGF0dGVybkZpbGwsYz0oMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpO2xldCBoLGQsdSxwO2lmKCh0LmJpdG1hcHx8dC5kYXRhKSYmdC5jb3VudD4xKXtjb25zdCBlPXQuYml0bWFwfHx0LmRhdGEuYnVmZmVyO2Q9SlNPTi5zdHJpbmdpZnkobD9jOltjLnNsaWNlKDAsNCksb10pO2g9dGhpcy5fY2FjaGVkQml0bWFwc01hcC5nZXQoZSk7aWYoIWgpe2g9bmV3IE1hcDt0aGlzLl9jYWNoZWRCaXRtYXBzTWFwLnNldChlLGgpfWNvbnN0IG49aC5nZXQoZCk7aWYobiYmIWwpe3JldHVybntjYW52YXM6bixvZmZzZXRYOk1hdGgucm91bmQoTWF0aC5taW4oY1swXSxjWzJdKStjWzRdKSxvZmZzZXRZOk1hdGgucm91bmQoTWF0aC5taW4oY1sxXSxjWzNdKStjWzVdKX19dT1ufWlmKCF1KXtwPXRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJtYXNrQ2FudmFzIixuLGEpO3B1dEJpbmFyeUltYWdlTWFzayhwLmNvbnRleHQsdCl9bGV0IGY9aS5VdGlsLnRyYW5zZm9ybShjLFsxL24sMCwwLC0xL2EsMCwwXSk7Zj1pLlV0aWwudHJhbnNmb3JtKGYsWzEsMCwwLDEsMCwtYV0pO2NvbnN0IGc9aS5VdGlsLmFwcGx5VHJhbnNmb3JtKFswLDBdLGYpLG09aS5VdGlsLmFwcGx5VHJhbnNmb3JtKFtuLGFdLGYpLGI9aS5VdGlsLm5vcm1hbGl6ZVJlY3QoW2dbMF0sZ1sxXSxtWzBdLG1bMV1dKSx2PU1hdGgucm91bmQoYlsyXS1iWzBdKXx8MSx5PU1hdGgucm91bmQoYlszXS1iWzFdKXx8MSxBPXRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJmaWxsQ2FudmFzIix2LHkpLF89QS5jb250ZXh0LFM9TWF0aC5taW4oZ1swXSxtWzBdKSxFPU1hdGgubWluKGdbMV0sbVsxXSk7Xy50cmFuc2xhdGUoLVMsLUUpO18udHJhbnNmb3JtKC4uLmYpO2lmKCF1KXt1PXRoaXMuX3NjYWxlSW1hZ2UocC5jYW52YXMsKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoXykpO3U9dS5pbWc7aCYmbCYmaC5zZXQoZCx1KX1fLmltYWdlU21vb3RoaW5nRW5hYmxlZD1nZXRJbWFnZVNtb290aGluZ0VuYWJsZWQoKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKShfKSx0LmludGVycG9sYXRlKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMoXyx1LDAsMCx1LndpZHRoLHUuaGVpZ2h0LDAsMCxuLGEpO18uZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2UtaW4iO2NvbnN0IHg9aS5VdGlsLnRyYW5zZm9ybSgoMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShfKSxbMSwwLDAsMSwtUywtRV0pO18uZmlsbFN0eWxlPWw/by5nZXRQYXR0ZXJuKGUsdGhpcyx4LHMuUGF0aFR5cGUuRklMTCk6bztfLmZpbGxSZWN0KDAsMCxuLGEpO2lmKGgmJiFsKXt0aGlzLmNhY2hlZENhbnZhc2VzLmRlbGV0ZSgiZmlsbENhbnZhcyIpO2guc2V0KGQsQS5jYW52YXMpfXJldHVybntjYW52YXM6QS5jYW52YXMsb2Zmc2V0WDpNYXRoLnJvdW5kKFMpLG9mZnNldFk6TWF0aC5yb3VuZChFKX19c2V0TGluZVdpZHRoKHQpe3QhPT10aGlzLmN1cnJlbnQubGluZVdpZHRoJiYodGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZ1swXT0tMSk7dGhpcy5jdXJyZW50LmxpbmVXaWR0aD10O3RoaXMuY3R4LmxpbmVXaWR0aD10fXNldExpbmVDYXAodCl7dGhpcy5jdHgubGluZUNhcD1jW3RdfXNldExpbmVKb2luKHQpe3RoaXMuY3R4LmxpbmVKb2luPWhbdF19c2V0TWl0ZXJMaW1pdCh0KXt0aGlzLmN0eC5taXRlckxpbWl0PXR9c2V0RGFzaCh0LGUpe2NvbnN0IG49dGhpcy5jdHg7aWYodm9pZCAwIT09bi5zZXRMaW5lRGFzaCl7bi5zZXRMaW5lRGFzaCh0KTtuLmxpbmVEYXNoT2Zmc2V0PWV9fXNldFJlbmRlcmluZ0ludGVudCh0KXt9c2V0RmxhdG5lc3ModCl7fXNldEdTdGF0ZSh0KXtmb3IoY29uc3RbZSxuXW9mIHQpc3dpdGNoKGUpe2Nhc2UiTFciOnRoaXMuc2V0TGluZVdpZHRoKG4pO2JyZWFrO2Nhc2UiTEMiOnRoaXMuc2V0TGluZUNhcChuKTticmVhaztjYXNlIkxKIjp0aGlzLnNldExpbmVKb2luKG4pO2JyZWFrO2Nhc2UiTUwiOnRoaXMuc2V0TWl0ZXJMaW1pdChuKTticmVhaztjYXNlIkQiOnRoaXMuc2V0RGFzaChuWzBdLG5bMV0pO2JyZWFrO2Nhc2UiUkkiOnRoaXMuc2V0UmVuZGVyaW5nSW50ZW50KG4pO2JyZWFrO2Nhc2UiRkwiOnRoaXMuc2V0RmxhdG5lc3Mobik7YnJlYWs7Y2FzZSJGb250Ijp0aGlzLnNldEZvbnQoblswXSxuWzFdKTticmVhaztjYXNlIkNBIjp0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9bjticmVhaztjYXNlImNhIjp0aGlzLmN1cnJlbnQuZmlsbEFscGhhPW47dGhpcy5jdHguZ2xvYmFsQWxwaGE9bjticmVhaztjYXNlIkJNIjp0aGlzLmN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249bjticmVhaztjYXNlIlNNYXNrIjp0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s9bj90aGlzLnRlbXBTTWFzazpudWxsO3RoaXMudGVtcFNNYXNrPW51bGw7dGhpcy5jaGVja1NNYXNrU3RhdGUoKTticmVhaztjYXNlIlRSIjp0aGlzLmN0eC5maWx0ZXI9dGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcz10aGlzLmZpbHRlckZhY3RvcnkuYWRkRmlsdGVyKG4pfX1nZXQgaW5TTWFza01vZGUoKXtyZXR1cm4hIXRoaXMuc3VzcGVuZGVkQ3R4fWNoZWNrU01hc2tTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5pblNNYXNrTW9kZTt0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2smJiF0P3RoaXMuYmVnaW5TTWFza01vZGUoKTohdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrJiZ0JiZ0aGlzLmVuZFNNYXNrTW9kZSgpfWJlZ2luU01hc2tNb2RlKCl7aWYodGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImJlZ2luU01hc2tNb2RlIGNhbGxlZCB3aGlsZSBhbHJlYWR5IGluIHNtYXNrIG1vZGUiKTtjb25zdCB0PXRoaXMuY3R4LmNhbnZhcy53aWR0aCxlPXRoaXMuY3R4LmNhbnZhcy5oZWlnaHQsbj0ic21hc2tHcm91cEF0Iit0aGlzLmdyb3VwTGV2ZWwsaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhuLHQsZSk7dGhpcy5zdXNwZW5kZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9aS5jb250ZXh0O2NvbnN0IHM9dGhpcy5jdHg7cy5zZXRUcmFuc2Zvcm0oLi4uKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLnN1c3BlbmRlZEN0eCkpO2NvcHlDdHhTdGF0ZSh0aGlzLnN1c3BlbmRlZEN0eCxzKTshZnVuY3Rpb24gbWlycm9yQ29udGV4dE9wZXJhdGlvbnModCxlKXtpZih0Ll9yZW1vdmVNaXJyb3JpbmcpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IGlzIGFscmVhZHkgZm9yd2FyZGluZyBvcGVyYXRpb25zLiIpO3QuX19vcmlnaW5hbFNhdmU9dC5zYXZlO3QuX19vcmlnaW5hbFJlc3RvcmU9dC5yZXN0b3JlO3QuX19vcmlnaW5hbFJvdGF0ZT10LnJvdGF0ZTt0Ll9fb3JpZ2luYWxTY2FsZT10LnNjYWxlO3QuX19vcmlnaW5hbFRyYW5zbGF0ZT10LnRyYW5zbGF0ZTt0Ll9fb3JpZ2luYWxUcmFuc2Zvcm09dC50cmFuc2Zvcm07dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtPXQuc2V0VHJhbnNmb3JtO3QuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtPXQucmVzZXRUcmFuc2Zvcm07dC5fX29yaWdpbmFsQ2xpcD10LmNsaXA7dC5fX29yaWdpbmFsTW92ZVRvPXQubW92ZVRvO3QuX19vcmlnaW5hbExpbmVUbz10LmxpbmVUbzt0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvPXQuYmV6aWVyQ3VydmVUbzt0Ll9fb3JpZ2luYWxSZWN0PXQucmVjdDt0Ll9fb3JpZ2luYWxDbG9zZVBhdGg9dC5jbG9zZVBhdGg7dC5fX29yaWdpbmFsQmVnaW5QYXRoPXQuYmVnaW5QYXRoO3QuX3JlbW92ZU1pcnJvcmluZz0oKT0+e3Quc2F2ZT10Ll9fb3JpZ2luYWxTYXZlO3QucmVzdG9yZT10Ll9fb3JpZ2luYWxSZXN0b3JlO3Qucm90YXRlPXQuX19vcmlnaW5hbFJvdGF0ZTt0LnNjYWxlPXQuX19vcmlnaW5hbFNjYWxlO3QudHJhbnNsYXRlPXQuX19vcmlnaW5hbFRyYW5zbGF0ZTt0LnRyYW5zZm9ybT10Ll9fb3JpZ2luYWxUcmFuc2Zvcm07dC5zZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtO3QucmVzZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm07dC5jbGlwPXQuX19vcmlnaW5hbENsaXA7dC5tb3ZlVG89dC5fX29yaWdpbmFsTW92ZVRvO3QubGluZVRvPXQuX19vcmlnaW5hbExpbmVUbzt0LmJlemllckN1cnZlVG89dC5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbzt0LnJlY3Q9dC5fX29yaWdpbmFsUmVjdDt0LmNsb3NlUGF0aD10Ll9fb3JpZ2luYWxDbG9zZVBhdGg7dC5iZWdpblBhdGg9dC5fX29yaWdpbmFsQmVnaW5QYXRoO2RlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmd9O3Quc2F2ZT1mdW5jdGlvbiBjdHhTYXZlKCl7ZS5zYXZlKCk7dGhpcy5fX29yaWdpbmFsU2F2ZSgpfTt0LnJlc3RvcmU9ZnVuY3Rpb24gY3R4UmVzdG9yZSgpe2UucmVzdG9yZSgpO3RoaXMuX19vcmlnaW5hbFJlc3RvcmUoKX07dC50cmFuc2xhdGU9ZnVuY3Rpb24gY3R4VHJhbnNsYXRlKHQsbil7ZS50cmFuc2xhdGUodCxuKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2xhdGUodCxuKX07dC5zY2FsZT1mdW5jdGlvbiBjdHhTY2FsZSh0LG4pe2Uuc2NhbGUodCxuKTt0aGlzLl9fb3JpZ2luYWxTY2FsZSh0LG4pfTt0LnRyYW5zZm9ybT1mdW5jdGlvbiBjdHhUcmFuc2Zvcm0odCxuLGkscixzLGEpe2UudHJhbnNmb3JtKHQsbixpLHIscyxhKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCxuLGkscixzLGEpfTt0LnNldFRyYW5zZm9ybT1mdW5jdGlvbiBjdHhTZXRUcmFuc2Zvcm0odCxuLGkscixzLGEpe2Uuc2V0VHJhbnNmb3JtKHQsbixpLHIscyxhKTt0aGlzLl9fb3JpZ2luYWxTZXRUcmFuc2Zvcm0odCxuLGkscixzLGEpfTt0LnJlc2V0VHJhbnNmb3JtPWZ1bmN0aW9uIGN0eFJlc2V0VHJhbnNmb3JtKCl7ZS5yZXNldFRyYW5zZm9ybSgpO3RoaXMuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtKCl9O3Qucm90YXRlPWZ1bmN0aW9uIGN0eFJvdGF0ZSh0KXtlLnJvdGF0ZSh0KTt0aGlzLl9fb3JpZ2luYWxSb3RhdGUodCl9O3QuY2xpcD1mdW5jdGlvbiBjdHhSb3RhdGUodCl7ZS5jbGlwKHQpO3RoaXMuX19vcmlnaW5hbENsaXAodCl9O3QubW92ZVRvPWZ1bmN0aW9uKHQsbil7ZS5tb3ZlVG8odCxuKTt0aGlzLl9fb3JpZ2luYWxNb3ZlVG8odCxuKX07dC5saW5lVG89ZnVuY3Rpb24odCxuKXtlLmxpbmVUbyh0LG4pO3RoaXMuX19vcmlnaW5hbExpbmVUbyh0LG4pfTt0LmJlemllckN1cnZlVG89ZnVuY3Rpb24odCxuLGkscixzLGEpe2UuYmV6aWVyQ3VydmVUbyh0LG4saSxyLHMsYSk7dGhpcy5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyh0LG4saSxyLHMsYSl9O3QucmVjdD1mdW5jdGlvbih0LG4saSxyKXtlLnJlY3QodCxuLGkscik7dGhpcy5fX29yaWdpbmFsUmVjdCh0LG4saSxyKX07dC5jbG9zZVBhdGg9ZnVuY3Rpb24oKXtlLmNsb3NlUGF0aCgpO3RoaXMuX19vcmlnaW5hbENsb3NlUGF0aCgpfTt0LmJlZ2luUGF0aD1mdW5jdGlvbigpe2UuYmVnaW5QYXRoKCk7dGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCl9fShzLHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLnNldEdTdGF0ZShbWyJCTSIsInNvdXJjZS1vdmVyIl0sWyJjYSIsMV0sWyJDQSIsMV1dKX1lbmRTTWFza01vZGUoKXtpZighdGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImVuZFNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgbm90IGluIHNtYXNrIG1vZGUiKTt0aGlzLmN0eC5fcmVtb3ZlTWlycm9yaW5nKCk7Y29weUN0eFN0YXRlKHRoaXMuY3R4LHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLmN0eD10aGlzLnN1c3BlbmRlZEN0eDt0aGlzLnN1c3BlbmRlZEN0eD1udWxsfWNvbXBvc2UodCl7aWYoIXRoaXMuY3VycmVudC5hY3RpdmVTTWFzaylyZXR1cm47aWYodCl7dFswXT1NYXRoLmZsb29yKHRbMF0pO3RbMV09TWF0aC5mbG9vcih0WzFdKTt0WzJdPU1hdGguY2VpbCh0WzJdKTt0WzNdPU1hdGguY2VpbCh0WzNdKX1lbHNlIHQ9WzAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodF07Y29uc3QgZT10aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s7Y29tcG9zZVNNYXNrKHRoaXMuc3VzcGVuZGVkQ3R4LGUsdGhpcy5jdHgsdCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodCk7dGhpcy5jdHgucmVzdG9yZSgpfXNhdmUoKXtpZih0aGlzLmluU01hc2tNb2RlKXtjb3B5Q3R4U3RhdGUodGhpcy5jdHgsdGhpcy5zdXNwZW5kZWRDdHgpO3RoaXMuc3VzcGVuZGVkQ3R4LnNhdmUoKX1lbHNlIHRoaXMuY3R4LnNhdmUoKTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLnN0YXRlU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXswPT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCYmdGhpcy5pblNNYXNrTW9kZSYmdGhpcy5lbmRTTWFza01vZGUoKTtpZigwIT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCl7dGhpcy5jdXJyZW50PXRoaXMuc3RhdGVTdGFjay5wb3AoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLnN1c3BlbmRlZEN0eC5yZXN0b3JlKCk7Y29weUN0eFN0YXRlKHRoaXMuc3VzcGVuZGVkQ3R4LHRoaXMuY3R4KX1lbHNlIHRoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLmNoZWNrU01hc2tTdGF0ZSgpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nWzBdPS0xO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbH19dHJhbnNmb3JtKHQsZSxuLGkscixzKXt0aGlzLmN0eC50cmFuc2Zvcm0odCxlLG4saSxyLHMpO3RoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmdbMF09LTE7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsfWNvbnN0cnVjdFBhdGgodCxlLG4pe2NvbnN0IHM9dGhpcy5jdHgsYT10aGlzLmN1cnJlbnQ7bGV0IG8sbCxjPWEueCxoPWEueTtjb25zdCBkPSgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkocyksdT0wPT09ZFswXSYmMD09PWRbM118fDA9PT1kWzFdJiYwPT09ZFsyXSxwPXU/bi5zbGljZSgwKTpudWxsO2ZvcihsZXQgbj0wLHI9MCxmPXQubGVuZ3RoO248ZjtuKyspc3dpdGNoKDB8dFtuXSl7Y2FzZSBpLk9QUy5yZWN0YW5nbGU6Yz1lW3IrK107aD1lW3IrK107Y29uc3QgdD1lW3IrK10sbj1lW3IrK10sZj1jK3QsZz1oK247cy5tb3ZlVG8oYyxoKTtpZigwPT09dHx8MD09PW4pcy5saW5lVG8oZixnKTtlbHNle3MubGluZVRvKGYsaCk7cy5saW5lVG8oZixnKTtzLmxpbmVUbyhjLGcpfXV8fGEudXBkYXRlUmVjdE1pbk1heChkLFtjLGgsZixnXSk7cy5jbG9zZVBhdGgoKTticmVhaztjYXNlIGkuT1BTLm1vdmVUbzpjPWVbcisrXTtoPWVbcisrXTtzLm1vdmVUbyhjLGgpO3V8fGEudXBkYXRlUGF0aE1pbk1heChkLGMsaCk7YnJlYWs7Y2FzZSBpLk9QUy5saW5lVG86Yz1lW3IrK107aD1lW3IrK107cy5saW5lVG8oYyxoKTt1fHxhLnVwZGF0ZVBhdGhNaW5NYXgoZCxjLGgpO2JyZWFrO2Nhc2UgaS5PUFMuY3VydmVUbzpvPWM7bD1oO2M9ZVtyKzRdO2g9ZVtyKzVdO3MuYmV6aWVyQ3VydmVUbyhlW3JdLGVbcisxXSxlW3IrMl0sZVtyKzNdLGMsaCk7YS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCxvLGwsZVtyXSxlW3IrMV0sZVtyKzJdLGVbciszXSxjLGgscCk7cis9NjticmVhaztjYXNlIGkuT1BTLmN1cnZlVG8yOm89YztsPWg7cy5iZXppZXJDdXJ2ZVRvKGMsaCxlW3JdLGVbcisxXSxlW3IrMl0sZVtyKzNdKTthLnVwZGF0ZUN1cnZlUGF0aE1pbk1heChkLG8sbCxjLGgsZVtyXSxlW3IrMV0sZVtyKzJdLGVbciszXSxwKTtjPWVbcisyXTtoPWVbciszXTtyKz00O2JyZWFrO2Nhc2UgaS5PUFMuY3VydmVUbzM6bz1jO2w9aDtjPWVbcisyXTtoPWVbciszXTtzLmJlemllckN1cnZlVG8oZVtyXSxlW3IrMV0sYyxoLGMsaCk7YS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCxvLGwsZVtyXSxlW3IrMV0sYyxoLGMsaCxwKTtyKz00O2JyZWFrO2Nhc2UgaS5PUFMuY2xvc2VQYXRoOnMuY2xvc2VQYXRoKCl9dSYmYS51cGRhdGVTY2FsaW5nUGF0aE1pbk1heChkLHApO2Euc2V0Q3VycmVudFBvaW50KGMsaCl9Y2xvc2VQYXRoKCl7dGhpcy5jdHguY2xvc2VQYXRoKCl9c3Ryb2tlKCl7bGV0IHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTtjb25zdCBlPXRoaXMuY3R4LG49dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yO2UuZ2xvYmFsQWxwaGE9dGhpcy5jdXJyZW50LnN0cm9rZUFscGhhO2lmKHRoaXMuY29udGVudFZpc2libGUpaWYoIm9iamVjdCI9PXR5cGVvZiBuJiZuPy5nZXRQYXR0ZXJuKXtlLnNhdmUoKTtlLnN0cm9rZVN0eWxlPW4uZ2V0UGF0dGVybihlLHRoaXMsKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSkscy5QYXRoVHlwZS5TVFJPS0UpO3RoaXMucmVzY2FsZUFuZFN0cm9rZSghMSk7ZS5yZXN0b3JlKCl9ZWxzZSB0aGlzLnJlc2NhbGVBbmRTdHJva2UoITApO3QmJnRoaXMuY29uc3VtZVBhdGgodGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKSk7ZS5nbG9iYWxBbHBoYT10aGlzLmN1cnJlbnQuZmlsbEFscGhhfWNsb3NlU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLnN0cm9rZSgpfWZpbGwoKXtsZXQgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO2NvbnN0IGU9dGhpcy5jdHgsbj10aGlzLmN1cnJlbnQuZmlsbENvbG9yO2xldCBpPSExO2lmKHRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCl7ZS5zYXZlKCk7ZS5maWxsU3R5bGU9bi5nZXRQYXR0ZXJuKGUsdGhpcywoMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShlKSxzLlBhdGhUeXBlLkZJTEwpO2k9ITB9Y29uc3QgYT10aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpO2lmKHRoaXMuY29udGVudFZpc2libGUmJm51bGwhPT1hKWlmKHRoaXMucGVuZGluZ0VPRmlsbCl7ZS5maWxsKCJldmVub2RkIik7dGhpcy5wZW5kaW5nRU9GaWxsPSExfWVsc2UgZS5maWxsKCk7aSYmZS5yZXN0b3JlKCk7dCYmdGhpcy5jb25zdW1lUGF0aChhKX1lb0ZpbGwoKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITA7dGhpcy5maWxsKCl9ZmlsbFN0cm9rZSgpe3RoaXMuZmlsbCghMSk7dGhpcy5zdHJva2UoITEpO3RoaXMuY29uc3VtZVBhdGgoKX1lb0ZpbGxTdHJva2UoKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITA7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VGaWxsU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLmZpbGxTdHJva2UoKX1jbG9zZUVPRmlsbFN0cm9rZSgpe3RoaXMucGVuZGluZ0VPRmlsbD0hMDt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuZmlsbFN0cm9rZSgpfWVuZFBhdGgoKXt0aGlzLmNvbnN1bWVQYXRoKCl9Y2xpcCgpe3RoaXMucGVuZGluZ0NsaXA9ZH1lb0NsaXAoKXt0aGlzLnBlbmRpbmdDbGlwPXV9YmVnaW5UZXh0KCl7dGhpcy5jdXJyZW50LnRleHRNYXRyaXg9aS5JREVOVElUWV9NQVRSSVg7dGhpcy5jdXJyZW50LnRleHRNYXRyaXhTY2FsZT0xO3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWD0wO3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWT0wfWVuZFRleHQoKXtjb25zdCB0PXRoaXMucGVuZGluZ1RleHRQYXRocyxlPXRoaXMuY3R4O2lmKHZvaWQgMCE9PXQpe2Uuc2F2ZSgpO2UuYmVnaW5QYXRoKCk7Zm9yKGNvbnN0IG4gb2YgdCl7ZS5zZXRUcmFuc2Zvcm0oLi4ubi50cmFuc2Zvcm0pO2UudHJhbnNsYXRlKG4ueCxuLnkpO24uYWRkVG9QYXRoKGUsbi5mb250U2l6ZSl9ZS5yZXN0b3JlKCk7ZS5jbGlwKCk7ZS5iZWdpblBhdGgoKTtkZWxldGUgdGhpcy5wZW5kaW5nVGV4dFBhdGhzfWVsc2UgZS5iZWdpblBhdGgoKX1zZXRDaGFyU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQuY2hhclNwYWNpbmc9dH1zZXRXb3JkU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQud29yZFNwYWNpbmc9dH1zZXRIU2NhbGUodCl7dGhpcy5jdXJyZW50LnRleHRIU2NhbGU9dC8xMDB9c2V0TGVhZGluZyh0KXt0aGlzLmN1cnJlbnQubGVhZGluZz0tdH1zZXRGb250KHQsZSl7Y29uc3Qgbj10aGlzLmNvbW1vbk9ianMuZ2V0KHQpLHI9dGhpcy5jdXJyZW50O2lmKCFuKXRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCBmb250IGZvciAke3R9YCk7ci5mb250TWF0cml4PW4uZm9udE1hdHJpeHx8aS5GT05UX0lERU5USVRZX01BVFJJWDswIT09ci5mb250TWF0cml4WzBdJiYwIT09ci5mb250TWF0cml4WzNdfHwoMCxpLndhcm4pKCJJbnZhbGlkIGZvbnQgbWF0cml4IGZvciBmb250ICIrdCk7aWYoZTwwKXtlPS1lO3IuZm9udERpcmVjdGlvbj0tMX1lbHNlIHIuZm9udERpcmVjdGlvbj0xO3RoaXMuY3VycmVudC5mb250PW47dGhpcy5jdXJyZW50LmZvbnRTaXplPWU7aWYobi5pc1R5cGUzRm9udClyZXR1cm47Y29uc3Qgcz1uLmxvYWRlZE5hbWV8fCJzYW5zLXNlcmlmIixhPW4uc3lzdGVtRm9udEluZm8/LmNzc3x8YCIke3N9IiwgJHtuLmZhbGxiYWNrTmFtZX1gO2xldCBvPSJub3JtYWwiO24uYmxhY2s/bz0iOTAwIjpuLmJvbGQmJihvPSJib2xkIik7Y29uc3QgbD1uLml0YWxpYz8iaXRhbGljIjoibm9ybWFsIjtsZXQgYz1lO2U8MTY/Yz0xNjplPjEwMCYmKGM9MTAwKTt0aGlzLmN1cnJlbnQuZm9udFNpemVTY2FsZT1lL2M7dGhpcy5jdHguZm9udD1gJHtsfSAke299ICR7Y31weCAke2F9YH1zZXRUZXh0UmVuZGVyaW5nTW9kZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGU9dH1zZXRUZXh0UmlzZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJpc2U9dH1tb3ZlVGV4dCh0LGUpe3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWCs9dDt0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVkrPWV9c2V0TGVhZGluZ01vdmVUZXh0KHQsZSl7dGhpcy5zZXRMZWFkaW5nKC1lKTt0aGlzLm1vdmVUZXh0KHQsZSl9c2V0VGV4dE1hdHJpeCh0LGUsbixpLHIscyl7dGhpcy5jdXJyZW50LnRleHRNYXRyaXg9W3QsZSxuLGkscixzXTt0aGlzLmN1cnJlbnQudGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKTt0aGlzLmN1cnJlbnQueD10aGlzLmN1cnJlbnQubGluZVg9MDt0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVk9MH1uZXh0TGluZSgpe3RoaXMubW92ZVRleHQoMCx0aGlzLmN1cnJlbnQubGVhZGluZyl9cGFpbnRDaGFyKHQsZSxuLHMpe2NvbnN0IGE9dGhpcy5jdHgsbz10aGlzLmN1cnJlbnQsbD1vLmZvbnQsYz1vLnRleHRSZW5kZXJpbmdNb2RlLGg9by5mb250U2l6ZS9vLmZvbnRTaXplU2NhbGUsZD1jJmkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSyx1PSEhKGMmaS5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHKSxwPW8ucGF0dGVybkZpbGwmJiFsLm1pc3NpbmdGaWxlO2xldCBmOyhsLmRpc2FibGVGb250RmFjZXx8dXx8cCkmJihmPWwuZ2V0UGF0aEdlbmVyYXRvcih0aGlzLmNvbW1vbk9ianMsdCkpO2lmKGwuZGlzYWJsZUZvbnRGYWNlfHxwKXthLnNhdmUoKTthLnRyYW5zbGF0ZShlLG4pO2EuYmVnaW5QYXRoKCk7ZihhLGgpO3MmJmEuc2V0VHJhbnNmb3JtKC4uLnMpO2QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTEwmJmQhPT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFfHxhLmZpbGwoKTtkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5TVFJPS0UmJmQhPT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFfHxhLnN0cm9rZSgpO2EucmVzdG9yZSgpfWVsc2V7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuZmlsbFRleHQodCxlLG4pO2QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuc3Ryb2tlVGV4dCh0LGUsbil9aWYodSl7KHRoaXMucGVuZGluZ1RleHRQYXRoc3x8PVtdKS5wdXNoKHt0cmFuc2Zvcm06KDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKShhKSx4OmUseTpuLGZvbnRTaXplOmgsYWRkVG9QYXRoOmZ9KX19Z2V0IGlzRm9udFN1YnBpeGVsQUFFbmFibGVkKCl7Y29uc3R7Y29udGV4dDp0fT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygiaXNGb250U3VicGl4ZWxBQUVuYWJsZWQiLDEwLDEwKTt0LnNjYWxlKDEuNSwxKTt0LmZpbGxUZXh0KCJJIiwwLDEwKTtjb25zdCBlPXQuZ2V0SW1hZ2VEYXRhKDAsMCwxMCwxMCkuZGF0YTtsZXQgbj0hMTtmb3IobGV0IHQ9Mzt0PGUubGVuZ3RoO3QrPTQpaWYoZVt0XT4wJiZlW3RdPDI1NSl7bj0hMDticmVha31yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiaXNGb250U3VicGl4ZWxBQUVuYWJsZWQiLG4pfXNob3dUZXh0KHQpe2NvbnN0IGU9dGhpcy5jdXJyZW50LG49ZS5mb250O2lmKG4uaXNUeXBlM0ZvbnQpcmV0dXJuIHRoaXMuc2hvd1R5cGUzVGV4dCh0KTtjb25zdCBhPWUuZm9udFNpemU7aWYoMD09PWEpcmV0dXJuO2NvbnN0IG89dGhpcy5jdHgsbD1lLmZvbnRTaXplU2NhbGUsYz1lLmNoYXJTcGFjaW5nLGg9ZS53b3JkU3BhY2luZyxkPWUuZm9udERpcmVjdGlvbix1PWUudGV4dEhTY2FsZSpkLHA9dC5sZW5ndGgsZj1uLnZlcnRpY2FsLGc9Zj8xOi0xLG09bi5kZWZhdWx0Vk1ldHJpY3MsYj1hKmUuZm9udE1hdHJpeFswXSx2PWUudGV4dFJlbmRlcmluZ01vZGU9PT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTEwmJiFuLmRpc2FibGVGb250RmFjZSYmIWUucGF0dGVybkZpbGw7by5zYXZlKCk7by50cmFuc2Zvcm0oLi4uZS50ZXh0TWF0cml4KTtvLnRyYW5zbGF0ZShlLngsZS55K2UudGV4dFJpc2UpO2Q+MD9vLnNjYWxlKHUsLTEpOm8uc2NhbGUodSwxKTtsZXQgeTtpZihlLnBhdHRlcm5GaWxsKXtvLnNhdmUoKTtjb25zdCB0PWUuZmlsbENvbG9yLmdldFBhdHRlcm4obyx0aGlzLCgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKG8pLHMuUGF0aFR5cGUuRklMTCk7eT0oMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm0pKG8pO28ucmVzdG9yZSgpO28uZmlsbFN0eWxlPXR9bGV0IEE9ZS5saW5lV2lkdGg7Y29uc3QgXz1lLnRleHRNYXRyaXhTY2FsZTtpZigwPT09X3x8MD09PUEpe2NvbnN0IHQ9ZS50ZXh0UmVuZGVyaW5nTW9kZSZpLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFX01BU0s7dCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZ0IT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8KEE9dGhpcy5nZXRTaW5nbGVQaXhlbFdpZHRoKCkpfWVsc2UgQS89XztpZigxIT09bCl7by5zY2FsZShsLGwpO0EvPWx9by5saW5lV2lkdGg9QTtpZihuLmlzSW52YWxpZFBERmpzRm9udCl7Y29uc3Qgbj1bXTtsZXQgaT0wO2Zvcihjb25zdCBlIG9mIHQpe24ucHVzaChlLnVuaWNvZGUpO2krPWUud2lkdGh9by5maWxsVGV4dChuLmpvaW4oIiIpLDAsMCk7ZS54Kz1pKmIqdTtvLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKTtyZXR1cm59bGV0IFMsRT0wO2ZvcihTPTA7UzxwOysrUyl7Y29uc3QgZT10W1NdO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7RSs9ZyplKmEvMWUzO2NvbnRpbnVlfWxldCBpPSExO2NvbnN0IHI9KGUuaXNTcGFjZT9oOjApK2Mscz1lLmZvbnRDaGFyLHU9ZS5hY2NlbnQ7bGV0IHAsQSxfPWUud2lkdGg7aWYoZil7Y29uc3QgdD1lLnZtZXRyaWN8fG0sbj0tKGUudm1ldHJpYz90WzFdOi41Kl8pKmIsaT10WzJdKmI7Xz10Py10WzBdOl87cD1uL2w7QT0oRStpKS9sfWVsc2V7cD1FL2w7QT0wfWlmKG4ucmVtZWFzdXJlJiZfPjApe2NvbnN0IHQ9MWUzKm8ubWVhc3VyZVRleHQocykud2lkdGgvYSpsO2lmKF88dCYmdGhpcy5pc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCl7Y29uc3QgZT1fL3Q7aT0hMDtvLnNhdmUoKTtvLnNjYWxlKGUsMSk7cC89ZX1lbHNlIF8hPT10JiYocCs9KF8tdCkvMmUzKmEvbCl9aWYodGhpcy5jb250ZW50VmlzaWJsZSYmKGUuaXNJbkZvbnR8fG4ubWlzc2luZ0ZpbGUpKWlmKHYmJiF1KW8uZmlsbFRleHQocyxwLEEpO2Vsc2V7dGhpcy5wYWludENoYXIocyxwLEEseSk7aWYodSl7Y29uc3QgdD1wK2EqdS5vZmZzZXQueC9sLGU9QS1hKnUub2Zmc2V0LnkvbDt0aGlzLnBhaW50Q2hhcih1LmZvbnRDaGFyLHQsZSx5KX19RSs9Zj9fKmItcipkOl8qYityKmQ7aSYmby5yZXN0b3JlKCl9Zj9lLnktPUU6ZS54Kz1FKnU7by5yZXN0b3JlKCk7dGhpcy5jb21wb3NlKCl9c2hvd1R5cGUzVGV4dCh0KXtjb25zdCBlPXRoaXMuY3R4LG49dGhpcy5jdXJyZW50LHI9bi5mb250LHM9bi5mb250U2l6ZSxhPW4uZm9udERpcmVjdGlvbixvPXIudmVydGljYWw/MTotMSxsPW4uY2hhclNwYWNpbmcsYz1uLndvcmRTcGFjaW5nLGg9bi50ZXh0SFNjYWxlKmEsZD1uLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVgsdT10Lmxlbmd0aDtsZXQgcCxmLGcsbTtpZighKG4udGV4dFJlbmRlcmluZ01vZGU9PT1pLlRleHRSZW5kZXJpbmdNb2RlLklOVklTSUJMRSkmJjAhPT1zKXt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nWzBdPS0xO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbDtlLnNhdmUoKTtlLnRyYW5zZm9ybSguLi5uLnRleHRNYXRyaXgpO2UudHJhbnNsYXRlKG4ueCxuLnkpO2Uuc2NhbGUoaCxhKTtmb3IocD0wO3A8dTsrK3Ape2Y9dFtwXTtpZigibnVtYmVyIj09dHlwZW9mIGYpe209bypmKnMvMWUzO3RoaXMuY3R4LnRyYW5zbGF0ZShtLDApO24ueCs9bSpoO2NvbnRpbnVlfWNvbnN0IGE9KGYuaXNTcGFjZT9jOjApK2wsdT1yLmNoYXJQcm9jT3BlcmF0b3JMaXN0W2Yub3BlcmF0b3JMaXN0SWRdO2lmKCF1KXsoMCxpLndhcm4pKGBUeXBlMyBjaGFyYWN0ZXIgIiR7Zi5vcGVyYXRvckxpc3RJZH0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29udGludWV9aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5wcm9jZXNzaW5nVHlwZTM9Zjt0aGlzLnNhdmUoKTtlLnNjYWxlKHMscyk7ZS50cmFuc2Zvcm0oLi4uZCk7dGhpcy5leGVjdXRlT3BlcmF0b3JMaXN0KHUpO3RoaXMucmVzdG9yZSgpfWc9aS5VdGlsLmFwcGx5VHJhbnNmb3JtKFtmLndpZHRoLDBdLGQpWzBdKnMrYTtlLnRyYW5zbGF0ZShnLDApO24ueCs9ZypofWUucmVzdG9yZSgpO3RoaXMucHJvY2Vzc2luZ1R5cGUzPW51bGx9fXNldENoYXJXaWR0aCh0LGUpe31zZXRDaGFyV2lkdGhBbmRCb3VuZHModCxlLG4saSxyLHMpe3RoaXMuY3R4LnJlY3QobixpLHItbixzLWkpO3RoaXMuY3R4LmNsaXAoKTt0aGlzLmVuZFBhdGgoKX1nZXRDb2xvck5fUGF0dGVybih0KXtsZXQgZTtpZigiVGlsaW5nUGF0dGVybiI9PT10WzBdKXtjb25zdCBuPXRbMV0saT10aGlzLmJhc2VUcmFuc2Zvcm18fCgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpLGE9e2NyZWF0ZUNhbnZhc0dyYXBoaWNzOnQ9Pm5ldyBDYW52YXNHcmFwaGljcyh0LHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LHRoaXMuZmlsdGVyRmFjdG9yeSx7b3B0aW9uYWxDb250ZW50Q29uZmlnOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLG1hcmtlZENvbnRlbnRTdGFjazp0aGlzLm1hcmtlZENvbnRlbnRTdGFja30pfTtlPW5ldyBzLlRpbGluZ1BhdHRlcm4odCxuLHRoaXMuY3R4LGEsaSl9ZWxzZSBlPXRoaXMuX2dldFBhdHRlcm4odFsxXSx0WzJdKTtyZXR1cm4gZX1zZXRTdHJva2VDb2xvck4oKXt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dGhpcy5nZXRDb2xvck5fUGF0dGVybihhcmd1bWVudHMpfXNldEZpbGxDb2xvck4oKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKTt0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw9ITB9c2V0U3Ryb2tlUkdCQ29sb3IodCxlLG4pe2NvbnN0IHI9aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUsbik7dGhpcy5jdHguc3Ryb2tlU3R5bGU9cjt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9cn1zZXRGaWxsUkdCQ29sb3IodCxlLG4pe2NvbnN0IHI9aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUsbik7dGhpcy5jdHguZmlsbFN0eWxlPXI7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1yO3RoaXMuY3VycmVudC5wYXR0ZXJuRmlsbD0hMX1fZ2V0UGF0dGVybih0KXtsZXQgZSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO2lmKHRoaXMuY2FjaGVkUGF0dGVybnMuaGFzKHQpKWU9dGhpcy5jYWNoZWRQYXR0ZXJucy5nZXQodCk7ZWxzZXtlPSgwLHMuZ2V0U2hhZGluZ1BhdHRlcm4pKHRoaXMuZ2V0T2JqZWN0KHQpKTt0aGlzLmNhY2hlZFBhdHRlcm5zLnNldCh0LGUpfW4mJihlLm1hdHJpeD1uKTtyZXR1cm4gZX1zaGFkaW5nRmlsbCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmN0eDt0aGlzLnNhdmUoKTtjb25zdCBuPXRoaXMuX2dldFBhdHRlcm4odCk7ZS5maWxsU3R5bGU9bi5nZXRQYXR0ZXJuKGUsdGhpcywoMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShlKSxzLlBhdGhUeXBlLlNIQURJTkcpO2NvbnN0IGE9KDAsci5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSk7aWYoYSl7Y29uc3R7d2lkdGg6dCxoZWlnaHQ6bn09ZS5jYW52YXMsW3IscyxvLGxdPWkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwwLHQsbl0sYSk7dGhpcy5jdHguZmlsbFJlY3QocixzLG8tcixsLXMpfWVsc2UgdGhpcy5jdHguZmlsbFJlY3QoLTFlMTAsLTFlMTAsMmUxMCwyZTEwKTt0aGlzLmNvbXBvc2UodGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKSk7dGhpcy5yZXN0b3JlKCl9YmVnaW5JbmxpbmVJbWFnZSgpeygwLGkudW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgYmVnaW5JbmxpbmVJbWFnZSIpfWJlZ2luSW1hZ2VEYXRhKCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBiZWdpbkltYWdlRGF0YSIpfXBhaW50Rm9ybVhPYmplY3RCZWdpbih0LGUpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuc2F2ZSgpO3RoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnB1c2godGhpcy5iYXNlVHJhbnNmb3JtKTtBcnJheS5pc0FycmF5KHQpJiY2PT09dC5sZW5ndGgmJnRoaXMudHJhbnNmb3JtKC4uLnQpO3RoaXMuYmFzZVRyYW5zZm9ybT0oMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtpZihlKXtjb25zdCB0PWVbMl0tZVswXSxuPWVbM10tZVsxXTt0aGlzLmN0eC5yZWN0KGVbMF0sZVsxXSx0LG4pO3RoaXMuY3VycmVudC51cGRhdGVSZWN0TWluTWF4KCgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpLGUpO3RoaXMuY2xpcCgpO3RoaXMuZW5kUGF0aCgpfX19cGFpbnRGb3JtWE9iamVjdEVuZCgpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMucmVzdG9yZSgpO3RoaXMuYmFzZVRyYW5zZm9ybT10aGlzLmJhc2VUcmFuc2Zvcm1TdGFjay5wb3AoKX19YmVnaW5Hcm91cCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47dGhpcy5zYXZlKCk7aWYodGhpcy5pblNNYXNrTW9kZSl7dGhpcy5lbmRTTWFza01vZGUoKTt0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s9bnVsbH1jb25zdCBlPXRoaXMuY3R4O3QuaXNvbGF0ZWR8fCgwLGkuaW5mbykoIlRPRE86IFN1cHBvcnQgbm9uLWlzb2xhdGVkIGdyb3Vwcy4iKTt0Lmtub2Nrb3V0JiYoMCxpLndhcm4pKCJLbm9ja291dCBncm91cHMgbm90IHN1cHBvcnRlZC4iKTtjb25zdCBuPSgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkoZSk7dC5tYXRyaXgmJmUudHJhbnNmb3JtKC4uLnQubWF0cml4KTtpZighdC5iYm94KXRocm93IG5ldyBFcnJvcigiQm91bmRpbmcgYm94IGlzIHJlcXVpcmVkLiIpO2xldCBzPWkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LmJib3gsKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKShlKSk7Y29uc3QgYT1bMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodF07cz1pLlV0aWwuaW50ZXJzZWN0KHMsYSl8fFswLDAsMCwwXTtjb25zdCBsPU1hdGguZmxvb3Ioc1swXSksYz1NYXRoLmZsb29yKHNbMV0pO2xldCBoPU1hdGgubWF4KE1hdGguY2VpbChzWzJdKS1sLDEpLGQ9TWF0aC5tYXgoTWF0aC5jZWlsKHNbM10pLWMsMSksdT0xLHA9MTtpZihoPm8pe3U9aC9vO2g9b31pZihkPm8pe3A9ZC9vO2Q9b310aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveChbMCwwLGgsZF0pO2xldCBmPSJncm91cEF0Iit0aGlzLmdyb3VwTGV2ZWw7dC5zbWFzayYmKGYrPSJfc21hc2tfIit0aGlzLnNtYXNrQ291bnRlcisrJTIpO2NvbnN0IGc9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoZixoLGQpLG09Zy5jb250ZXh0O20uc2NhbGUoMS91LDEvcCk7bS50cmFuc2xhdGUoLWwsLWMpO20udHJhbnNmb3JtKC4uLm4pO2lmKHQuc21hc2spdGhpcy5zbWFza1N0YWNrLnB1c2goe2NhbnZhczpnLmNhbnZhcyxjb250ZXh0Om0sb2Zmc2V0WDpsLG9mZnNldFk6YyxzY2FsZVg6dSxzY2FsZVk6cCxzdWJ0eXBlOnQuc21hc2suc3VidHlwZSxiYWNrZHJvcDp0LnNtYXNrLmJhY2tkcm9wLHRyYW5zZmVyTWFwOnQuc21hc2sudHJhbnNmZXJNYXB8fG51bGwsc3RhcnRUcmFuc2Zvcm1JbnZlcnNlOm51bGx9KTtlbHNle2Uuc2V0VHJhbnNmb3JtKDEsMCwwLDEsMCwwKTtlLnRyYW5zbGF0ZShsLGMpO2Uuc2NhbGUodSxwKTtlLnNhdmUoKX1jb3B5Q3R4U3RhdGUoZSxtKTt0aGlzLmN0eD1tO3RoaXMuc2V0R1N0YXRlKFtbIkJNIiwic291cmNlLW92ZXIiXSxbImNhIiwxXSxbIkNBIiwxXV0pO3RoaXMuZ3JvdXBTdGFjay5wdXNoKGUpO3RoaXMuZ3JvdXBMZXZlbCsrfWVuZEdyb3VwKHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjt0aGlzLmdyb3VwTGV2ZWwtLTtjb25zdCBlPXRoaXMuY3R4LG49dGhpcy5ncm91cFN0YWNrLnBvcCgpO3RoaXMuY3R4PW47dGhpcy5jdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkPSExO2lmKHQuc21hc2spe3RoaXMudGVtcFNNYXNrPXRoaXMuc21hc2tTdGFjay5wb3AoKTt0aGlzLnJlc3RvcmUoKX1lbHNle3RoaXMuY3R4LnJlc3RvcmUoKTtjb25zdCB0PSgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpO3RoaXMucmVzdG9yZSgpO3RoaXMuY3R4LnNhdmUoKTt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oLi4udCk7Y29uc3Qgbj1pLlV0aWwuZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3goWzAsMCxlLmNhbnZhcy53aWR0aCxlLmNhbnZhcy5oZWlnaHRdLHQpO3RoaXMuY3R4LmRyYXdJbWFnZShlLmNhbnZhcywwLDApO3RoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLmNvbXBvc2Uobil9fWJlZ2luQW5ub3RhdGlvbih0LGUsbixzLGEpe3RoaXMuI0d0KCk7cmVzZXRDdHhUb0RlZmF1bHQodGhpcy5jdHgpO3RoaXMuY3R4LnNhdmUoKTt0aGlzLnNhdmUoKTt0aGlzLmJhc2VUcmFuc2Zvcm0mJnRoaXMuY3R4LnNldFRyYW5zZm9ybSguLi50aGlzLmJhc2VUcmFuc2Zvcm0pO2lmKEFycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aCl7Y29uc3Qgcz1lWzJdLWVbMF0sbz1lWzNdLWVbMV07aWYoYSYmdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwKXsobj1uLnNsaWNlKCkpWzRdLT1lWzBdO25bNV0tPWVbMV07KGU9ZS5zbGljZSgpKVswXT1lWzFdPTA7ZVsyXT1zO2VbM109bztjb25zdFthLGxdPWkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSgoMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KSkse3ZpZXdwb3J0U2NhbGU6Y309dGhpcyxoPU1hdGguY2VpbChzKnRoaXMub3V0cHV0U2NhbGVYKmMpLGQ9TWF0aC5jZWlsKG8qdGhpcy5vdXRwdXRTY2FsZVkqYyk7dGhpcy5hbm5vdGF0aW9uQ2FudmFzPXRoaXMuY2FudmFzRmFjdG9yeS5jcmVhdGUoaCxkKTtjb25zdHtjYW52YXM6dSxjb250ZXh0OnB9PXRoaXMuYW5ub3RhdGlvbkNhbnZhczt0aGlzLmFubm90YXRpb25DYW52YXNNYXAuc2V0KHQsdSk7dGhpcy5hbm5vdGF0aW9uQ2FudmFzLnNhdmVkQ3R4PXRoaXMuY3R4O3RoaXMuY3R4PXA7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybShhLDAsMCwtbCwwLG8qbCk7cmVzZXRDdHhUb0RlZmF1bHQodGhpcy5jdHgpfWVsc2V7cmVzZXRDdHhUb0RlZmF1bHQodGhpcy5jdHgpO3RoaXMuY3R4LnJlY3QoZVswXSxlWzFdLHMsbyk7dGhpcy5jdHguY2xpcCgpO3RoaXMuZW5kUGF0aCgpfX10aGlzLmN1cnJlbnQ9bmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpO3RoaXMudHJhbnNmb3JtKC4uLm4pO3RoaXMudHJhbnNmb3JtKC4uLnMpfWVuZEFubm90YXRpb24oKXtpZih0aGlzLmFubm90YXRpb25DYW52YXMpe3RoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLiNWdCgpO3RoaXMuY3R4PXRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eDtkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzLnNhdmVkQ3R4O2RlbGV0ZSB0aGlzLmFubm90YXRpb25DYW52YXN9fXBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10LmNvdW50Oyh0PXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KSkuY291bnQ9ZTtjb25zdCBuPXRoaXMuY3R4LGk9dGhpcy5wcm9jZXNzaW5nVHlwZTM7aWYoaSl7dm9pZCAwPT09aS5jb21waWxlZCYmKGkuY29tcGlsZWQ9ZnVuY3Rpb24gY29tcGlsZVR5cGUzR2x5cGgodCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6bn09dDtpZihlPjFlM3x8bj4xZTMpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxyPWUrMTtsZXQgcyxhLG8sbD1uZXcgVWludDhBcnJheShyKihuKzEpKTtjb25zdCBjPWUrNyYtODtsZXQgaD1uZXcgVWludDhBcnJheShjKm4pLGQ9MDtmb3IoY29uc3QgZSBvZiB0LmRhdGEpe2xldCB0PTEyODtmb3IoO3Q+MDspe2hbZCsrXT1lJnQ/MDoyNTU7dD4+PTF9fWxldCB1PTA7ZD0wO2lmKDAhPT1oW2RdKXtsWzBdPTE7Kyt1fWZvcihhPTE7YTxlO2ErKyl7aWYoaFtkXSE9PWhbZCsxXSl7bFthXT1oW2RdPzI6MTsrK3V9ZCsrfWlmKDAhPT1oW2RdKXtsW2FdPTI7Kyt1fWZvcihzPTE7czxuO3MrKyl7ZD1zKmM7bz1zKnI7aWYoaFtkLWNdIT09aFtkXSl7bFtvXT1oW2RdPzE6ODsrK3V9bGV0IHQ9KGhbZF0/NDowKSsoaFtkLWNdPzg6MCk7Zm9yKGE9MTthPGU7YSsrKXt0PSh0Pj4yKSsoaFtkKzFdPzQ6MCkrKGhbZC1jKzFdPzg6MCk7aWYoaVt0XSl7bFtvK2FdPWlbdF07Kyt1fWQrK31pZihoW2QtY10hPT1oW2RdKXtsW28rYV09aFtkXT8yOjQ7Kyt1fWlmKHU+MWUzKXJldHVybiBudWxsfWQ9Yyoobi0xKTtvPXMqcjtpZigwIT09aFtkXSl7bFtvXT04OysrdX1mb3IoYT0xO2E8ZTthKyspe2lmKGhbZF0hPT1oW2QrMV0pe2xbbythXT1oW2RdPzQ6ODsrK3V9ZCsrfWlmKDAhPT1oW2RdKXtsW28rYV09NDsrK3V9aWYodT4xZTMpcmV0dXJuIG51bGw7Y29uc3QgcD1uZXcgSW50MzJBcnJheShbMCxyLC0xLDAsLXIsMCwwLDAsMV0pLGY9bmV3IFBhdGgyRDtmb3Iocz0wO3UmJnM8PW47cysrKXtsZXQgdD1zKnI7Y29uc3Qgbj10K2U7Zm9yKDt0PG4mJiFsW3RdOyl0Kys7aWYodD09PW4pY29udGludWU7Zi5tb3ZlVG8odCVyLHMpO2NvbnN0IGk9dDtsZXQgYT1sW3RdO2Rve2NvbnN0IGU9cFthXTtkb3t0Kz1lfXdoaWxlKCFsW3RdKTtjb25zdCBuPWxbdF07aWYoNSE9PW4mJjEwIT09bil7YT1uO2xbdF09MH1lbHNle2E9biY1MSphPj40O2xbdF0mPWE+PjJ8YTw8Mn1mLmxpbmVUbyh0JXIsdC9yfDApO2xbdF18fC0tdX13aGlsZShpIT09dCk7LS1zfWg9bnVsbDtsPW51bGw7cmV0dXJuIGZ1bmN0aW9uKHQpe3Quc2F2ZSgpO3Quc2NhbGUoMS9lLC0xL24pO3QudHJhbnNsYXRlKDAsLW4pO3QuZmlsbChmKTt0LmJlZ2luUGF0aCgpO3QucmVzdG9yZSgpfX0odCkpO2lmKGkuY29tcGlsZWQpe2kuY29tcGlsZWQobik7cmV0dXJufX1jb25zdCByPXRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCkscz1yLmNhbnZhcztuLnNhdmUoKTtuLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7bi5kcmF3SW1hZ2UocyxyLm9mZnNldFgsci5vZmZzZXRZKTtuLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQodCxlKXtsZXQgbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxzPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLGE9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDAsbz1hcmd1bWVudHMubGVuZ3RoPjU/YXJndW1lbnRzWzVdOnZvaWQgMDtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47dD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCk7Y29uc3QgbD10aGlzLmN0eDtsLnNhdmUoKTtjb25zdCBjPSgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkobCk7bC50cmFuc2Zvcm0oZSxuLHMsYSwwLDApO2NvbnN0IGg9dGhpcy5fY3JlYXRlTWFza0NhbnZhcyh0KTtsLnNldFRyYW5zZm9ybSgxLDAsMCwxLGgub2Zmc2V0WC1jWzRdLGgub2Zmc2V0WS1jWzVdKTtmb3IobGV0IHQ9MCxyPW8ubGVuZ3RoO3Q8cjt0Kz0yKXtjb25zdCByPWkuVXRpbC50cmFuc2Zvcm0oYyxbZSxuLHMsYSxvW3RdLG9bdCsxXV0pLFtkLHVdPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbMCwwXSxyKTtsLmRyYXdJbWFnZShoLmNhbnZhcyxkLHUpfWwucmVzdG9yZSgpO3RoaXMuY29tcG9zZSgpfXBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwKHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBlPXRoaXMuY3R4LG49dGhpcy5jdXJyZW50LmZpbGxDb2xvcixpPXRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbDtmb3IoY29uc3QgYSBvZiB0KXtjb25zdHtkYXRhOnQsd2lkdGg6byxoZWlnaHQ6bCx0cmFuc2Zvcm06Y309YSxoPXRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJtYXNrQ2FudmFzIixvLGwpLGQ9aC5jb250ZXh0O2Quc2F2ZSgpO3B1dEJpbmFyeUltYWdlTWFzayhkLHRoaXMuZ2V0T2JqZWN0KHQsYSkpO2QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2UtaW4iO2QuZmlsbFN0eWxlPWk/bi5nZXRQYXR0ZXJuKGQsdGhpcywoMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShlKSxzLlBhdGhUeXBlLkZJTEwpOm47ZC5maWxsUmVjdCgwLDAsbyxsKTtkLnJlc3RvcmUoKTtlLnNhdmUoKTtlLnRyYW5zZm9ybSguLi5jKTtlLnNjYWxlKDEsLTEpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhlLGguY2FudmFzLDAsMCxvLGwsMCwtMSwxLDEpO2UucmVzdG9yZSgpfXRoaXMuY29tcG9zZSgpfXBhaW50SW1hZ2VYT2JqZWN0KHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBlPXRoaXMuZ2V0T2JqZWN0KHQpO2U/dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChlKTooMCxpLndhcm4pKCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0Iil9cGFpbnRJbWFnZVhPYmplY3RSZXBlYXQodCxlLG4scil7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IHM9dGhpcy5nZXRPYmplY3QodCk7aWYoIXMpeygwLGkud2FybikoIkRlcGVuZGVudCBpbWFnZSBpc24ndCByZWFkeSB5ZXQiKTtyZXR1cm59Y29uc3QgYT1zLndpZHRoLG89cy5oZWlnaHQsbD1bXTtmb3IobGV0IHQ9MCxpPXIubGVuZ3RoO3Q8aTt0Kz0yKWwucHVzaCh7dHJhbnNmb3JtOltlLDAsMCxuLHJbdF0sclt0KzFdXSx4OjAseTowLHc6YSxoOm99KTt0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXAocyxsKX1hcHBseVRyYW5zZmVyTWFwc1RvQ2FudmFzKHQpe2lmKCJub25lIiE9PXRoaXMuY3VycmVudC50cmFuc2Zlck1hcHMpe3QuZmlsdGVyPXRoaXMuY3VycmVudC50cmFuc2Zlck1hcHM7dC5kcmF3SW1hZ2UodC5jYW52YXMsMCwwKTt0LmZpbHRlcj0ibm9uZSJ9cmV0dXJuIHQuY2FudmFzfWFwcGx5VHJhbnNmZXJNYXBzVG9CaXRtYXAodCl7aWYoIm5vbmUiPT09dGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcylyZXR1cm4gdC5iaXRtYXA7Y29uc3R7Yml0bWFwOmUsd2lkdGg6bixoZWlnaHQ6aX09dCxyPXRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJpbmxpbmVJbWFnZSIsbixpKSxzPXIuY29udGV4dDtzLmZpbHRlcj10aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzO3MuZHJhd0ltYWdlKGUsMCwwKTtzLmZpbHRlcj0ibm9uZSI7cmV0dXJuIHIuY2FudmFzfXBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBlPXQud2lkdGgsbj10LmhlaWdodCxzPXRoaXMuY3R4O3RoaXMuc2F2ZSgpO2lmKCFpLmlzTm9kZUpTKXtjb25zdHtmaWx0ZXI6dH09czsibm9uZSIhPT10JiYiIiE9PXQmJihzLmZpbHRlcj0ibm9uZSIpfXMuc2NhbGUoMS9lLC0xL24pO2xldCBhO2lmKHQuYml0bWFwKWE9dGhpcy5hcHBseVRyYW5zZmVyTWFwc1RvQml0bWFwKHQpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fCF0LmRhdGEpYT10O2Vsc2V7Y29uc3QgaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygiaW5saW5lSW1hZ2UiLGUsbikuY29udGV4dDtwdXRCaW5hcnlJbWFnZURhdGEoaSx0KTthPXRoaXMuYXBwbHlUcmFuc2Zlck1hcHNUb0NhbnZhcyhpKX1jb25zdCBvPXRoaXMuX3NjYWxlSW1hZ2UoYSwoMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShzKSk7cy5pbWFnZVNtb290aGluZ0VuYWJsZWQ9Z2V0SW1hZ2VTbW9vdGhpbmdFbmFibGVkKCgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkocyksdC5pbnRlcnBvbGF0ZSk7ZHJhd0ltYWdlQXRJbnRlZ2VyQ29vcmRzKHMsby5pbWcsMCwwLG8ucGFpbnRXaWR0aCxvLnBhaW50SGVpZ2h0LDAsLW4sZSxuKTt0aGlzLmNvbXBvc2UoKTt0aGlzLnJlc3RvcmUoKX1wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKHQsZSl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IG49dGhpcy5jdHg7bGV0IGk7aWYodC5iaXRtYXApaT10LmJpdG1hcDtlbHNle2NvbnN0IGU9dC53aWR0aCxuPXQuaGVpZ2h0LHI9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixlLG4pLmNvbnRleHQ7cHV0QmluYXJ5SW1hZ2VEYXRhKHIsdCk7aT10aGlzLmFwcGx5VHJhbnNmZXJNYXBzVG9DYW52YXMocil9Zm9yKGNvbnN0IHQgb2YgZSl7bi5zYXZlKCk7bi50cmFuc2Zvcm0oLi4udC50cmFuc2Zvcm0pO24uc2NhbGUoMSwtMSk7ZHJhd0ltYWdlQXRJbnRlZ2VyQ29vcmRzKG4saSx0LngsdC55LHQudyx0LmgsMCwtMSwxLDEpO24ucmVzdG9yZSgpfXRoaXMuY29tcG9zZSgpfXBhaW50U29saWRDb2xvckltYWdlTWFzaygpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuY3R4LmZpbGxSZWN0KDAsMCwxLDEpO3RoaXMuY29tcG9zZSgpfX1tYXJrUG9pbnQodCl7fW1hcmtQb2ludFByb3BzKHQsZSl7fWJlZ2luTWFya2VkQ29udGVudCh0KXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOiEwfSl9YmVnaW5NYXJrZWRDb250ZW50UHJvcHModCxlKXsiT0MiPT09dD90aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKX0pOnRoaXMubWFya2VkQ29udGVudFN0YWNrLnB1c2goe3Zpc2libGU6ITB9KTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWVuZE1hcmtlZENvbnRlbnQoKXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wb3AoKTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWJlZ2luQ29tcGF0KCl7fWVuZENvbXBhdCgpe31jb25zdW1lUGF0aCh0KXtjb25zdCBlPXRoaXMuY3VycmVudC5pc0VtcHR5Q2xpcCgpO3RoaXMucGVuZGluZ0NsaXAmJnRoaXMuY3VycmVudC51cGRhdGVDbGlwRnJvbVBhdGgoKTt0aGlzLnBlbmRpbmdDbGlwfHx0aGlzLmNvbXBvc2UodCk7Y29uc3Qgbj10aGlzLmN0eDtpZih0aGlzLnBlbmRpbmdDbGlwKXtlfHwodGhpcy5wZW5kaW5nQ2xpcD09PXU/bi5jbGlwKCJldmVub2RkIik6bi5jbGlwKCkpO3RoaXMucGVuZGluZ0NsaXA9bnVsbH10aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0aGlzLmN1cnJlbnQuY2xpcEJveCk7bi5iZWdpblBhdGgoKX1nZXRTaW5nbGVQaXhlbFdpZHRoKCl7aWYoIXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGgpe2NvbnN0IHQ9KDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7aWYoMD09PXRbMV0mJjA9PT10WzJdKXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9MS9NYXRoLm1pbihNYXRoLmFicyh0WzBdKSxNYXRoLmFicyh0WzNdKSk7ZWxzZXtjb25zdCBlPU1hdGguYWJzKHRbMF0qdFszXS10WzJdKnRbMV0pLG49TWF0aC5oeXBvdCh0WzBdLHRbMl0pLGk9TWF0aC5oeXBvdCh0WzFdLHRbM10pO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9TWF0aC5tYXgobixpKS9lfX1yZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aH1nZXRTY2FsZUZvclN0cm9raW5nKCl7aWYoLTE9PT10aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nWzBdKXtjb25zdHtsaW5lV2lkdGg6dH09dGhpcy5jdXJyZW50LHthOmUsYjpuLGM6aSxkOnJ9PXRoaXMuY3R4LmdldFRyYW5zZm9ybSgpO2xldCBzLGE7aWYoMD09PW4mJjA9PT1pKXtjb25zdCBuPU1hdGguYWJzKGUpLGk9TWF0aC5hYnMocik7aWYobj09PWkpaWYoMD09PXQpcz1hPTEvbjtlbHNle2NvbnN0IGU9bip0O3M9YT1lPDE/MS9lOjF9ZWxzZSBpZigwPT09dCl7cz0xL247YT0xL2l9ZWxzZXtjb25zdCBlPW4qdCxyPWkqdDtzPWU8MT8xL2U6MTthPXI8MT8xL3I6MX19ZWxzZXtjb25zdCBvPU1hdGguYWJzKGUqci1uKmkpLGw9TWF0aC5oeXBvdChlLG4pLGM9TWF0aC5oeXBvdChpLHIpO2lmKDA9PT10KXtzPWMvbzthPWwvb31lbHNle2NvbnN0IGU9dCpvO3M9Yz5lP2MvZToxO2E9bD5lP2wvZToxfX10aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nWzBdPXM7dGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZ1sxXT1hfXJldHVybiB0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nfXJlc2NhbGVBbmRTdHJva2UodCl7Y29uc3R7Y3R4OmV9PXRoaXMse2xpbmVXaWR0aDpufT10aGlzLmN1cnJlbnQsW2kscl09dGhpcy5nZXRTY2FsZUZvclN0cm9raW5nKCk7ZS5saW5lV2lkdGg9bnx8MTtpZigxPT09aSYmMT09PXIpe2Uuc3Ryb2tlKCk7cmV0dXJufWNvbnN0IHM9ZS5nZXRMaW5lRGFzaCgpO3QmJmUuc2F2ZSgpO2Uuc2NhbGUoaSxyKTtpZihzLmxlbmd0aD4wKXtjb25zdCB0PU1hdGgubWF4KGkscik7ZS5zZXRMaW5lRGFzaChzLm1hcCgoZT0+ZS90KSkpO2UubGluZURhc2hPZmZzZXQvPXR9ZS5zdHJva2UoKTt0JiZlLnJlc3RvcmUoKX1pc0NvbnRlbnRWaXNpYmxlKCl7Zm9yKGxldCB0PXRoaXMubWFya2VkQ29udGVudFN0YWNrLmxlbmd0aC0xO3Q+PTA7dC0tKWlmKCF0aGlzLm1hcmtlZENvbnRlbnRTdGFja1t0XS52aXNpYmxlKXJldHVybiExO3JldHVybiEwfX1lLkNhbnZhc0dyYXBoaWNzPUNhbnZhc0dyYXBoaWNzO2Zvcihjb25zdCB0IGluIGkuT1BTKXZvaWQgMCE9PUNhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSYmKENhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVtpLk9QU1t0XV09Q2FudmFzR3JhcGhpY3MucHJvdG90eXBlW3RdKX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UaWxpbmdQYXR0ZXJuPWUuUGF0aFR5cGU9dm9pZCAwO2UuZ2V0U2hhZGluZ1BhdHRlcm49ZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm4odCl7c3dpdGNoKHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybih0KTtjYXNlIk1lc2giOnJldHVybiBuZXcgTWVzaFNoYWRpbmdQYXR0ZXJuKHQpO2Nhc2UiRHVtbXkiOnJldHVybiBuZXcgRHVtbXlTaGFkaW5nUGF0dGVybn10aHJvdyBuZXcgRXJyb3IoYFVua25vd24gSVIgdHlwZTogJHt0WzBdfWApfTtuKDIpO3ZhciBpPW4oMSkscj1uKDE2Nyk7Y29uc3Qgcz17RklMTDoiRmlsbCIsU1RST0tFOiJTdHJva2UiLFNIQURJTkc6IlNoYWRpbmcifTtlLlBhdGhUeXBlPXM7ZnVuY3Rpb24gYXBwbHlCb3VuZGluZ0JveCh0LGUpe2lmKCFlKXJldHVybjtjb25zdCBuPWVbMl0tZVswXSxpPWVbM10tZVsxXSxyPW5ldyBQYXRoMkQ7ci5yZWN0KGVbMF0sZVsxXSxuLGkpO3QuY2xpcChyKX1jbGFzcyBCYXNlU2hhZGluZ1BhdHRlcm57Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmdQYXR0ZXJuJiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNoYWRpbmdQYXR0ZXJuLiIpfWdldFBhdHRlcm4oKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYXR0ZXJuYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm57Y29uc3RydWN0b3IodCl7c3VwZXIoKTt0aGlzLl90eXBlPXRbMV07dGhpcy5fYmJveD10WzJdO3RoaXMuX2NvbG9yU3RvcHM9dFszXTt0aGlzLl9wMD10WzRdO3RoaXMuX3AxPXRbNV07dGhpcy5fcjA9dFs2XTt0aGlzLl9yMT10WzddO3RoaXMubWF0cml4PW51bGx9X2NyZWF0ZUdyYWRpZW50KHQpe2xldCBlOyJheGlhbCI9PT10aGlzLl90eXBlP2U9dC5jcmVhdGVMaW5lYXJHcmFkaWVudCh0aGlzLl9wMFswXSx0aGlzLl9wMFsxXSx0aGlzLl9wMVswXSx0aGlzLl9wMVsxXSk6InJhZGlhbCI9PT10aGlzLl90eXBlJiYoZT10LmNyZWF0ZVJhZGlhbEdyYWRpZW50KHRoaXMuX3AwWzBdLHRoaXMuX3AwWzFdLHRoaXMuX3IwLHRoaXMuX3AxWzBdLHRoaXMuX3AxWzFdLHRoaXMuX3IxKSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fY29sb3JTdG9wcyllLmFkZENvbG9yU3RvcCh0WzBdLHRbMV0pO3JldHVybiBlfWdldFBhdHRlcm4odCxlLG4sYSl7bGV0IG87aWYoYT09PXMuU1RST0tFfHxhPT09cy5GSUxMKXtjb25zdCBzPWUuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KGEsKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KSl8fFswLDAsMCwwXSxsPU1hdGguY2VpbChzWzJdLXNbMF0pfHwxLGM9TWF0aC5jZWlsKHNbM10tc1sxXSl8fDEsaD1lLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygicGF0dGVybiIsbCxjLCEwKSxkPWguY29udGV4dDtkLmNsZWFyUmVjdCgwLDAsZC5jYW52YXMud2lkdGgsZC5jYW52YXMuaGVpZ2h0KTtkLmJlZ2luUGF0aCgpO2QucmVjdCgwLDAsZC5jYW52YXMud2lkdGgsZC5jYW52YXMuaGVpZ2h0KTtkLnRyYW5zbGF0ZSgtc1swXSwtc1sxXSk7bj1pLlV0aWwudHJhbnNmb3JtKG4sWzEsMCwwLDEsc1swXSxzWzFdXSk7ZC50cmFuc2Zvcm0oLi4uZS5iYXNlVHJhbnNmb3JtKTt0aGlzLm1hdHJpeCYmZC50cmFuc2Zvcm0oLi4udGhpcy5tYXRyaXgpO2FwcGx5Qm91bmRpbmdCb3goZCx0aGlzLl9iYm94KTtkLmZpbGxTdHlsZT10aGlzLl9jcmVhdGVHcmFkaWVudChkKTtkLmZpbGwoKTtvPXQuY3JlYXRlUGF0dGVybihoLmNhbnZhcywibm8tcmVwZWF0Iik7Y29uc3QgdT1uZXcgRE9NTWF0cml4KG4pO28uc2V0VHJhbnNmb3JtKHUpfWVsc2V7YXBwbHlCb3VuZGluZ0JveCh0LHRoaXMuX2Jib3gpO289dGhpcy5fY3JlYXRlR3JhZGllbnQodCl9cmV0dXJuIG99fWZ1bmN0aW9uIGRyYXdUcmlhbmdsZSh0LGUsbixpLHIscyxhLG8pe2NvbnN0IGw9ZS5jb29yZHMsYz1lLmNvbG9ycyxoPXQuZGF0YSxkPTQqdC53aWR0aDtsZXQgdTtpZihsW24rMV0+bFtpKzFdKXt1PW47bj1pO2k9dTt1PXM7cz1hO2E9dX1pZihsW2krMV0+bFtyKzFdKXt1PWk7aT1yO3I9dTt1PWE7YT1vO289dX1pZihsW24rMV0+bFtpKzFdKXt1PW47bj1pO2k9dTt1PXM7cz1hO2E9dX1jb25zdCBwPShsW25dK2Uub2Zmc2V0WCkqZS5zY2FsZVgsZj0obFtuKzFdK2Uub2Zmc2V0WSkqZS5zY2FsZVksZz0obFtpXStlLm9mZnNldFgpKmUuc2NhbGVYLG09KGxbaSsxXStlLm9mZnNldFkpKmUuc2NhbGVZLGI9KGxbcl0rZS5vZmZzZXRYKSplLnNjYWxlWCx2PShsW3IrMV0rZS5vZmZzZXRZKSplLnNjYWxlWTtpZihmPj12KXJldHVybjtjb25zdCB5PWNbc10sQT1jW3MrMV0sXz1jW3MrMl0sUz1jW2FdLEU9Y1thKzFdLHg9Y1thKzJdLHc9Y1tvXSxDPWNbbysxXSxUPWNbbysyXSxQPU1hdGgucm91bmQoZiksaz1NYXRoLnJvdW5kKHYpO2xldCBNLFIsSSxELE8sTCxOLEI7Zm9yKGxldCB0PVA7dDw9azt0Kyspe2lmKHQ8bSl7Y29uc3QgZT10PGY/MDooZi10KS8oZi1tKTtNPXAtKHAtZykqZTtSPXktKHktUykqZTtJPUEtKEEtRSkqZTtEPV8tKF8teCkqZX1lbHNle2xldCBlO2U9dD52PzE6bT09PXY/MDoobS10KS8obS12KTtNPWctKGctYikqZTtSPVMtKFMtdykqZTtJPUUtKEUtQykqZTtEPXgtKHgtVCkqZX1sZXQgZTtlPXQ8Zj8wOnQ+dj8xOihmLXQpLyhmLXYpO089cC0ocC1iKSplO0w9eS0oeS13KSplO049QS0oQS1DKSplO0I9Xy0oXy1UKSplO2NvbnN0IG49TWF0aC5yb3VuZChNYXRoLm1pbihNLE8pKSxpPU1hdGgucm91bmQoTWF0aC5tYXgoTSxPKSk7bGV0IHI9ZCp0KzQqbjtmb3IobGV0IHQ9bjt0PD1pO3QrKyl7ZT0oTS10KS8oTS1PKTtlPDA/ZT0wOmU+MSYmKGU9MSk7aFtyKytdPVItKFItTCkqZXwwO2hbcisrXT1JLShJLU4pKmV8MDtoW3IrK109RC0oRC1CKSplfDA7aFtyKytdPTI1NX19fWZ1bmN0aW9uIGRyYXdGaWd1cmUodCxlLG4pe2NvbnN0IGk9ZS5jb29yZHMscj1lLmNvbG9ycztsZXQgcyxhO3N3aXRjaChlLnR5cGUpe2Nhc2UibGF0dGljZSI6Y29uc3Qgbz1lLnZlcnRpY2VzUGVyUm93LGw9TWF0aC5mbG9vcihpLmxlbmd0aC9vKS0xLGM9by0xO2ZvcihzPTA7czxsO3MrKyl7bGV0IGU9cypvO2ZvcihsZXQgcz0wO3M8YztzKyssZSsrKXtkcmF3VHJpYW5nbGUodCxuLGlbZV0saVtlKzFdLGlbZStvXSxyW2VdLHJbZSsxXSxyW2Urb10pO2RyYXdUcmlhbmdsZSh0LG4saVtlK28rMV0saVtlKzFdLGlbZStvXSxyW2UrbysxXSxyW2UrMV0scltlK29dKX19YnJlYWs7Y2FzZSJ0cmlhbmdsZXMiOmZvcihzPTAsYT1pLmxlbmd0aDtzPGE7cys9MylkcmF3VHJpYW5nbGUodCxuLGlbc10saVtzKzFdLGlbcysyXSxyW3NdLHJbcysxXSxyW3MrMl0pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGZpZ3VyZSIpfX1jbGFzcyBNZXNoU2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm57Y29uc3RydWN0b3IodCl7c3VwZXIoKTt0aGlzLl9jb29yZHM9dFsyXTt0aGlzLl9jb2xvcnM9dFszXTt0aGlzLl9maWd1cmVzPXRbNF07dGhpcy5fYm91bmRzPXRbNV07dGhpcy5fYmJveD10WzddO3RoaXMuX2JhY2tncm91bmQ9dFs4XTt0aGlzLm1hdHJpeD1udWxsfV9jcmVhdGVNZXNoQ2FudmFzKHQsZSxuKXtjb25zdCBpPU1hdGguZmxvb3IodGhpcy5fYm91bmRzWzBdKSxyPU1hdGguZmxvb3IodGhpcy5fYm91bmRzWzFdKSxzPU1hdGguY2VpbCh0aGlzLl9ib3VuZHNbMl0pLWksYT1NYXRoLmNlaWwodGhpcy5fYm91bmRzWzNdKS1yLG89TWF0aC5taW4oTWF0aC5jZWlsKE1hdGguYWJzKHMqdFswXSoxLjEpKSwzZTMpLGw9TWF0aC5taW4oTWF0aC5jZWlsKE1hdGguYWJzKGEqdFsxXSoxLjEpKSwzZTMpLGM9cy9vLGg9YS9sLGQ9e2Nvb3Jkczp0aGlzLl9jb29yZHMsY29sb3JzOnRoaXMuX2NvbG9ycyxvZmZzZXRYOi1pLG9mZnNldFk6LXIsc2NhbGVYOjEvYyxzY2FsZVk6MS9ofSx1PW8rNCxwPWwrNCxmPW4uZ2V0Q2FudmFzKCJtZXNoIix1LHAsITEpLGc9Zi5jb250ZXh0LG09Zy5jcmVhdGVJbWFnZURhdGEobyxsKTtpZihlKXtjb25zdCB0PW0uZGF0YTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKz00KXt0W25dPWVbMF07dFtuKzFdPWVbMV07dFtuKzJdPWVbMl07dFtuKzNdPTI1NX19Zm9yKGNvbnN0IHQgb2YgdGhpcy5fZmlndXJlcylkcmF3RmlndXJlKG0sdCxkKTtnLnB1dEltYWdlRGF0YShtLDIsMik7cmV0dXJue2NhbnZhczpmLmNhbnZhcyxvZmZzZXRYOmktMipjLG9mZnNldFk6ci0yKmgsc2NhbGVYOmMsc2NhbGVZOmh9fWdldFBhdHRlcm4odCxlLG4sYSl7YXBwbHlCb3VuZGluZ0JveCh0LHRoaXMuX2Jib3gpO2xldCBvO2lmKGE9PT1zLlNIQURJTkcpbz1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoKDAsci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KSk7ZWxzZXtvPWkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShlLmJhc2VUcmFuc2Zvcm0pO2lmKHRoaXMubWF0cml4KXtjb25zdCB0PWkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0aGlzLm1hdHJpeCk7bz1bb1swXSp0WzBdLG9bMV0qdFsxXV19fWNvbnN0IGw9dGhpcy5fY3JlYXRlTWVzaENhbnZhcyhvLGE9PT1zLlNIQURJTkc/bnVsbDp0aGlzLl9iYWNrZ3JvdW5kLGUuY2FjaGVkQ2FudmFzZXMpO2lmKGEhPT1zLlNIQURJTkcpe3Quc2V0VHJhbnNmb3JtKC4uLmUuYmFzZVRyYW5zZm9ybSk7dGhpcy5tYXRyaXgmJnQudHJhbnNmb3JtKC4uLnRoaXMubWF0cml4KX10LnRyYW5zbGF0ZShsLm9mZnNldFgsbC5vZmZzZXRZKTt0LnNjYWxlKGwuc2NhbGVYLGwuc2NhbGVZKTtyZXR1cm4gdC5jcmVhdGVQYXR0ZXJuKGwuY2FudmFzLCJuby1yZXBlYXQiKX19Y2xhc3MgRHVtbXlTaGFkaW5nUGF0dGVybiBleHRlbmRzIEJhc2VTaGFkaW5nUGF0dGVybntnZXRQYXR0ZXJuKCl7cmV0dXJuImhvdHBpbmsifX1jb25zdCBhPTEsbz0yO2NsYXNzIFRpbGluZ1BhdHRlcm57c3RhdGljIE1BWF9QQVRURVJOX1NJWkU9M2UzO2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5vcGVyYXRvckxpc3Q9dFsyXTt0aGlzLm1hdHJpeD10WzNdfHxbMSwwLDAsMSwwLDBdO3RoaXMuYmJveD10WzRdO3RoaXMueHN0ZXA9dFs1XTt0aGlzLnlzdGVwPXRbNl07dGhpcy5wYWludFR5cGU9dFs3XTt0aGlzLnRpbGluZ1R5cGU9dFs4XTt0aGlzLmNvbG9yPWU7dGhpcy5jdHg9bjt0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeT1pO3RoaXMuYmFzZVRyYW5zZm9ybT1yfWNyZWF0ZVBhdHRlcm5DYW52YXModCl7Y29uc3QgZT10aGlzLm9wZXJhdG9yTGlzdCxuPXRoaXMuYmJveCxzPXRoaXMueHN0ZXAsYT10aGlzLnlzdGVwLG89dGhpcy5wYWludFR5cGUsbD10aGlzLnRpbGluZ1R5cGUsYz10aGlzLmNvbG9yLGg9dGhpcy5jYW52YXNHcmFwaGljc0ZhY3Rvcnk7KDAsaS5pbmZvKSgiVGlsaW5nVHlwZTogIitsKTtjb25zdCBkPW5bMF0sdT1uWzFdLHA9blsyXSxmPW5bM10sZz1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpLG09aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMuYmFzZVRyYW5zZm9ybSksYj1bZ1swXSptWzBdLGdbMV0qbVsxXV0sdj10aGlzLmdldFNpemVBbmRTY2FsZShzLHRoaXMuY3R4LmNhbnZhcy53aWR0aCxiWzBdKSx5PXRoaXMuZ2V0U2l6ZUFuZFNjYWxlKGEsdGhpcy5jdHguY2FudmFzLmhlaWdodCxiWzFdKSxBPXQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIix2LnNpemUseS5zaXplLCEwKSxfPUEuY29udGV4dCxTPWguY3JlYXRlQ2FudmFzR3JhcGhpY3MoXyk7Uy5ncm91cExldmVsPXQuZ3JvdXBMZXZlbDt0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChTLG8sYyk7bGV0IEU9ZCx4PXUsdz1wLEM9ZjtpZihkPDApe0U9MDt3Kz1NYXRoLmFicyhkKX1pZih1PDApe3g9MDtDKz1NYXRoLmFicyh1KX1fLnRyYW5zbGF0ZSgtdi5zY2FsZSpFLC15LnNjYWxlKngpO1MudHJhbnNmb3JtKHYuc2NhbGUsMCwwLHkuc2NhbGUsMCwwKTtfLnNhdmUoKTt0aGlzLmNsaXBCYm94KFMsRSx4LHcsQyk7Uy5iYXNlVHJhbnNmb3JtPSgwLHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkoUy5jdHgpO1MuZXhlY3V0ZU9wZXJhdG9yTGlzdChlKTtTLmVuZERyYXdpbmcoKTtyZXR1cm57Y2FudmFzOkEuY2FudmFzLHNjYWxlWDp2LnNjYWxlLHNjYWxlWTp5LnNjYWxlLG9mZnNldFg6RSxvZmZzZXRZOnh9fWdldFNpemVBbmRTY2FsZSh0LGUsbil7dD1NYXRoLmFicyh0KTtjb25zdCBpPU1hdGgubWF4KFRpbGluZ1BhdHRlcm4uTUFYX1BBVFRFUk5fU0laRSxlKTtsZXQgcj1NYXRoLmNlaWwodCpuKTtyPj1pP3I9aTpuPXIvdDtyZXR1cm57c2NhbGU6bixzaXplOnJ9fWNsaXBCYm94KHQsZSxuLGkscyl7Y29uc3QgYT1pLWUsbz1zLW47dC5jdHgucmVjdChlLG4sYSxvKTt0LmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCxyLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQuY3R4KSxbZSxuLGksc10pO3QuY2xpcCgpO3QuZW5kUGF0aCgpfXNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCh0LGUsbil7Y29uc3Qgcj10LmN0eCxzPXQuY3VycmVudDtzd2l0Y2goZSl7Y2FzZSBhOmNvbnN0IHQ9dGhpcy5jdHg7ci5maWxsU3R5bGU9dC5maWxsU3R5bGU7ci5zdHJva2VTdHlsZT10LnN0cm9rZVN0eWxlO3MuZmlsbENvbG9yPXQuZmlsbFN0eWxlO3Muc3Ryb2tlQ29sb3I9dC5zdHJva2VTdHlsZTticmVhaztjYXNlIG86Y29uc3QgbD1pLlV0aWwubWFrZUhleENvbG9yKG5bMF0sblsxXSxuWzJdKTtyLmZpbGxTdHlsZT1sO3Iuc3Ryb2tlU3R5bGU9bDtzLmZpbGxDb2xvcj1sO3Muc3Ryb2tlQ29sb3I9bDticmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwYWludCB0eXBlOiAke2V9YCl9fWdldFBhdHRlcm4odCxlLG4scil7bGV0IGE9bjtpZihyIT09cy5TSEFESU5HKXthPWkuVXRpbC50cmFuc2Zvcm0oYSxlLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiYoYT1pLlV0aWwudHJhbnNmb3JtKGEsdGhpcy5tYXRyaXgpKX1jb25zdCBvPXRoaXMuY3JlYXRlUGF0dGVybkNhbnZhcyhlKTtsZXQgbD1uZXcgRE9NTWF0cml4KGEpO2w9bC50cmFuc2xhdGUoby5vZmZzZXRYLG8ub2Zmc2V0WSk7bD1sLnNjYWxlKDEvby5zY2FsZVgsMS9vLnNjYWxlWSk7Y29uc3QgYz10LmNyZWF0ZVBhdHRlcm4oby5jYW52YXMsInJlcGVhdCIpO2Muc2V0VHJhbnNmb3JtKGwpO3JldHVybiBjfX1lLlRpbGluZ1BhdHRlcm49VGlsaW5nUGF0dGVybn0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5jb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQT1jb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQTtlLmNvbnZlcnRUb1JHQkE9ZnVuY3Rpb24gY29udmVydFRvUkdCQSh0KXtzd2l0Y2godC5raW5kKXtjYXNlIGkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh0KTtjYXNlIGkuSW1hZ2VLaW5kLlJHQl8yNEJQUDpyZXR1cm4gZnVuY3Rpb24gY29udmVydFJHQlRvUkdCQSh0KXtsZXR7c3JjOmUsc3JjUG9zOm49MCxkZXN0OnIsZGVzdFBvczpzPTAsd2lkdGg6YSxoZWlnaHQ6b309dCxsPTA7Y29uc3QgYz1lLmxlbmd0aD4+MixoPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlcixuLGMpO2lmKGkuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7bDxjLTI7bCs9MyxzKz00KXtjb25zdCB0PWhbbF0sZT1oW2wrMV0sbj1oW2wrMl07cltzXT00Mjc4MTkwMDgwfHQ7cltzKzFdPXQ+Pj4yNHxlPDw4fDQyNzgxOTAwODA7cltzKzJdPWU+Pj4xNnxuPDwxNnw0Mjc4MTkwMDgwO3JbcyszXT1uPj4+OHw0Mjc4MTkwMDgwfWZvcihsZXQgdD00Kmwsbj1lLmxlbmd0aDt0PG47dCs9MylyW3MrK109ZVt0XXxlW3QrMV08PDh8ZVt0KzJdPDwxNnw0Mjc4MTkwMDgwfWVsc2V7Zm9yKDtsPGMtMjtsKz0zLHMrPTQpe2NvbnN0IHQ9aFtsXSxlPWhbbCsxXSxuPWhbbCsyXTtyW3NdPTI1NXx0O3JbcysxXT10PDwyNHxlPj4+OHwyNTU7cltzKzJdPWU8PDE2fG4+Pj4xNnwyNTU7cltzKzNdPW48PDh8MjU1fWZvcihsZXQgdD00Kmwsbj1lLmxlbmd0aDt0PG47dCs9MylyW3MrK109ZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8MjU1fXJldHVybntzcmNQb3M6bixkZXN0UG9zOnN9fSh0KX1yZXR1cm4gbnVsbH07ZS5ncmF5VG9SR0JBPWZ1bmN0aW9uIGdyYXlUb1JHQkEodCxlKXtpZihpLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKWZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyllW25dPTY1NzkzKnRbbl18NDI3ODE5MDA4MDtlbHNlIGZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyllW25dPTE2ODQzMDA4KnRbbl18MjU1fTtuKDkzKTtuKDEwMSk7bigxMDIpO24oMTA1KTtuKDEwNyk7bigxMDkpO24oMTEzKTtuKDExNik7bigxMjMpO3ZhciBpPW4oMSk7ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEodCl7bGV0e3NyYzplLHNyY1BvczpuPTAsZGVzdDpyLHdpZHRoOnMsaGVpZ2h0OmEsbm9uQmxhY2tDb2xvcjpvPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpsPSExfT10O2NvbnN0IGM9aS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbaCxkXT1sP1tvLGNdOltjLG9dLHU9cz4+MyxwPTcmcyxmPWUubGVuZ3RoO3I9bmV3IFVpbnQzMkFycmF5KHIuYnVmZmVyKTtsZXQgZz0wO2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2Zvcihjb25zdCB0PW4rdTtuPHQ7bisrKXtjb25zdCB0PW48Zj9lW25dOjI1NTtyW2crK109MTI4JnQ/ZDpoO3JbZysrXT02NCZ0P2Q6aDtyW2crK109MzImdD9kOmg7cltnKytdPTE2JnQ/ZDpoO3JbZysrXT04JnQ/ZDpoO3JbZysrXT00JnQ/ZDpoO3JbZysrXT0yJnQ/ZDpoO3JbZysrXT0xJnQ/ZDpofWlmKDA9PT1wKWNvbnRpbnVlO2NvbnN0IHQ9bjxmP2VbbisrXToyNTU7Zm9yKGxldCBlPTA7ZTxwO2UrKylyW2crK109dCYxPDw3LWU/ZDpofXJldHVybntzcmNQb3M6bixkZXN0UG9zOmd9fX0sKHQsZSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuR2xvYmFsV29ya2VyT3B0aW9ucz12b2lkIDA7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO2UuR2xvYmFsV29ya2VyT3B0aW9ucz1uO24ud29ya2VyUG9ydD1udWxsO24ud29ya2VyU3JjPSIifSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk1lc3NhZ2VIYW5kbGVyPXZvaWQgMDtuKDIpO3ZhciBpPW4oMSk7Y29uc3Qgcj0xLHM9MixhPTEsbz0yLGw9MyxjPTQsaD01LGQ9Nix1PTcscD04O2Z1bmN0aW9uIHdyYXBSZWFzb24odCl7dCBpbnN0YW5jZW9mIEVycm9yfHwib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10fHwoMCxpLnVucmVhY2hhYmxlKSgnd3JhcFJlYXNvbjogRXhwZWN0ZWQgInJlYXNvbiIgdG8gYmUgYSAocG9zc2libHkgY2xvbmVkKSBFcnJvci4nKTtzd2l0Y2godC5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IGkuQWJvcnRFeGNlcHRpb24odC5tZXNzYWdlKTtjYXNlIk1pc3NpbmdQREZFeGNlcHRpb24iOnJldHVybiBuZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKHQubWVzc2FnZSk7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGkuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKHQubWVzc2FnZSx0LnN0YXR1cyk7Y2FzZSJVbmtub3duRXJyb3JFeGNlcHRpb24iOnJldHVybiBuZXcgaS5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQuZGV0YWlscyk7ZGVmYXVsdDpyZXR1cm4gbmV3IGkuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LnRvU3RyaW5nKCkpfX1lLk1lc3NhZ2VIYW5kbGVyPWNsYXNzIE1lc3NhZ2VIYW5kbGVye2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnNvdXJjZU5hbWU9dDt0aGlzLnRhcmdldE5hbWU9ZTt0aGlzLmNvbU9iaj1uO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9vbkNvbU9iak9uTWVzc2FnZT10PT57Y29uc3QgZT10LmRhdGE7aWYoZS50YXJnZXROYW1lIT09dGhpcy5zb3VyY2VOYW1lKXJldHVybjtpZihlLnN0cmVhbSl7dGhpcy4jJHQoZSk7cmV0dXJufWlmKGUuY2FsbGJhY2spe2NvbnN0IHQ9ZS5jYWxsYmFja0lkLG49dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZighbil0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7dH1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZihlLmNhbGxiYWNrPT09ciluLnJlc29sdmUoZS5kYXRhKTtlbHNle2lmKGUuY2FsbGJhY2shPT1zKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7bi5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpfXJldHVybn1jb25zdCBpPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl07aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHtlLmFjdGlvbn1gKTtpZihlLmNhbGxiYWNrSWQpe2NvbnN0IHQ9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lO25ldyBQcm9taXNlKChmdW5jdGlvbih0KXt0KGkoZS5kYXRhKSl9KSkudGhlbigoZnVuY3Rpb24oaSl7bi5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0LHRhcmdldE5hbWU6YSxjYWxsYmFjazpyLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLGRhdGE6aX0pfSksKGZ1bmN0aW9uKGkpe24ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dCx0YXJnZXROYW1lOmEsY2FsbGJhY2s6cyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbihpKX0pfSkpfWVsc2UgZS5zdHJlYW1JZD90aGlzLiNYdChlKTppKGUuZGF0YSl9O24uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UpfW9uKHQsZSl7Y29uc3Qgbj10aGlzLmFjdGlvbkhhbmRsZXI7aWYoblt0XSl0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIiR7dH0iYCk7blt0XT1lfXNlbmQodCxlLG4pe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246dCxkYXRhOmV9LG4pfXNlbmRXaXRoUHJvbWlzZSh0LGUsbil7Y29uc3Qgcj10aGlzLmNhbGxiYWNrSWQrKyxzPW5ldyBpLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbcl09czt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjp0LGNhbGxiYWNrSWQ6cixkYXRhOmV9LG4pfWNhdGNoKHQpe3MucmVqZWN0KHQpfXJldHVybiBzLnByb21pc2V9c2VuZFdpdGhTdHJlYW0odCxlLG4scil7Y29uc3Qgcz10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsbD10aGlzLnRhcmdldE5hbWUsYz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDpuPT57Y29uc3QgYT1uZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3NdPXtjb250cm9sbGVyOm4sc3RhcnRDYWxsOmEscHVsbENhbGw6bnVsbCxjYW5jZWxDYWxsOm51bGwsaXNDbG9zZWQ6ITF9O2MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmwsYWN0aW9uOnQsc3RyZWFtSWQ6cyxkYXRhOmUsZGVzaXJlZFNpemU6bi5kZXNpcmVkU2l6ZX0scik7cmV0dXJuIGEucHJvbWlzZX0scHVsbDp0PT57Y29uc3QgZT1uZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3NdLnB1bGxDYWxsPWU7Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxzdHJlYW06ZCxzdHJlYW1JZDpzLGRlc2lyZWRTaXplOnQuZGVzaXJlZFNpemV9KTtyZXR1cm4gZS5wcm9taXNlfSxjYW5jZWw6dD0+eygwLGkuYXNzZXJ0KSh0IGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCBlPW5ldyBpLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uY2FuY2VsQ2FsbD1lO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uaXNDbG9zZWQ9ITA7Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxzdHJlYW06YSxzdHJlYW1JZDpzLHJlYXNvbjp3cmFwUmVhc29uKHQpfSk7cmV0dXJuIGUucHJvbWlzZX19LG4pfSNYdCh0KXtjb25zdCBlPXQuc3RyZWFtSWQsbj10aGlzLnNvdXJjZU5hbWUscj10LnNvdXJjZU5hbWUscz10aGlzLmNvbU9iaixhPXRoaXMsbz10aGlzLmFjdGlvbkhhbmRsZXJbdC5hY3Rpb25dLGQ9e2VucXVldWUodCl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEsbz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBsPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09YTtpZihsPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5yZWFkeT10aGlzLnNpbmtDYXBhYmlsaXR5LnByb21pc2V9cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6cixzdHJlYW06YyxzdHJlYW1JZDplLGNodW5rOnR9LG8pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOnIsc3RyZWFtOmwsc3RyZWFtSWQ6ZX0pO2RlbGV0ZSBhLnN0cmVhbVNpbmtzW2VdfX0sZXJyb3IodCl7KDAsaS5hc3NlcnQpKHQgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6cixzdHJlYW06aCxzdHJlYW1JZDplLHJlYXNvbjp3cmFwUmVhc29uKHQpfSl9fSxzaW5rQ2FwYWJpbGl0eTpuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSxvblB1bGw6bnVsbCxvbkNhbmNlbDpudWxsLGlzQ2FuY2VsbGVkOiExLGRlc2lyZWRTaXplOnQuZGVzaXJlZFNpemUscmVhZHk6bnVsbH07ZC5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7ZC5yZWFkeT1kLnNpbmtDYXBhYmlsaXR5LnByb21pc2U7dGhpcy5zdHJlYW1TaW5rc1tlXT1kO25ldyBQcm9taXNlKChmdW5jdGlvbihlKXtlKG8odC5kYXRhLGQpKX0pKS50aGVuKChmdW5jdGlvbigpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOnIsc3RyZWFtOnAsc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24odCl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6cixzdHJlYW06cCxzdHJlYW1JZDplLHJlYXNvbjp3cmFwUmVhc29uKHQpfSl9KSl9IyR0KHQpe2NvbnN0IGU9dC5zdHJlYW1JZCxuPXRoaXMuc291cmNlTmFtZSxyPXQuc291cmNlTmFtZSxzPXRoaXMuY29tT2JqLGY9dGhpcy5zdHJlYW1Db250cm9sbGVyc1tlXSxnPXRoaXMuc3RyZWFtU2lua3NbZV07c3dpdGNoKHQuc3RyZWFtKXtjYXNlIHA6dC5zdWNjZXNzP2Yuc3RhcnRDYWxsLnJlc29sdmUoKTpmLnN0YXJ0Q2FsbC5yZWplY3Qod3JhcFJlYXNvbih0LnJlYXNvbikpO2JyZWFrO2Nhc2UgdTp0LnN1Y2Nlc3M/Zi5wdWxsQ2FsbC5yZXNvbHZlKCk6Zi5wdWxsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbih0LnJlYXNvbikpO2JyZWFrO2Nhc2UgZDppZighZyl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6cixzdHJlYW06dSxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KTticmVha31nLmRlc2lyZWRTaXplPD0wJiZ0LmRlc2lyZWRTaXplPjAmJmcuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2cuZGVzaXJlZFNpemU9dC5kZXNpcmVkU2l6ZTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChnLm9uUHVsbD8uKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6cixzdHJlYW06dSxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbih0KXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTpyLHN0cmVhbTp1LHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX0pKTticmVhaztjYXNlIGM6KDAsaS5hc3NlcnQpKGYsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihmLmlzQ2xvc2VkKWJyZWFrO2YuY29udHJvbGxlci5lbnF1ZXVlKHQuY2h1bmspO2JyZWFrO2Nhc2UgbDooMCxpLmFzc2VydCkoZiwiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihmLmlzQ2xvc2VkKWJyZWFrO2YuaXNDbG9zZWQ9ITA7Zi5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy4jS3QoZixlKTticmVhaztjYXNlIGg6KDAsaS5hc3NlcnQpKGYsImVycm9yIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7Zi5jb250cm9sbGVyLmVycm9yKHdyYXBSZWFzb24odC5yZWFzb24pKTt0aGlzLiNLdChmLGUpO2JyZWFrO2Nhc2Ugbzp0LnN1Y2Nlc3M/Zi5jYW5jZWxDYWxsLnJlc29sdmUoKTpmLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTt0aGlzLiNLdChmLGUpO2JyZWFrO2Nhc2UgYTppZighZylicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShnLm9uQ2FuY2VsPy4od3JhcFJlYXNvbih0LnJlYXNvbikpKX0pKS50aGVuKChmdW5jdGlvbigpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOnIsc3RyZWFtOm8sc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24odCl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6cixzdHJlYW06byxzdHJlYW1JZDplLHJlYXNvbjp3cmFwUmVhc29uKHQpfSl9KSk7Zy5zaW5rQ2FwYWJpbGl0eS5yZWplY3Qod3JhcFJlYXNvbih0LnJlYXNvbikpO2cuaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbZV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjS3QodCxlKXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW3Quc3RhcnRDYWxsPy5wcm9taXNlLHQucHVsbENhbGw/LnByb21pc2UsdC5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbZV19ZGVzdHJveSgpe3RoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX19fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk1ldGFkYXRhPXZvaWQgMDt2YXIgaT1uKDEpO2UuTWV0YWRhdGE9Y2xhc3MgTWV0YWRhdGF7I1l0OyNKdDtjb25zdHJ1Y3Rvcih0KXtsZXR7cGFyc2VkRGF0YTplLHJhd0RhdGE6bn09dDt0aGlzLiNZdD1lO3RoaXMuI0p0PW59Z2V0UmF3KCl7cmV0dXJuIHRoaXMuI0p0fWdldCh0KXtyZXR1cm4gdGhpcy4jWXQuZ2V0KHQpPz9udWxsfWdldEFsbCgpe3JldHVybigwLGkub2JqZWN0RnJvbU1hcCkodGhpcy4jWXQpfWhhcyh0KXtyZXR1cm4gdGhpcy4jWXQuaGFzKHQpfX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuT3B0aW9uYWxDb250ZW50Q29uZmlnPXZvaWQgMDt2YXIgaT1uKDEpLHI9bigxNjkpO2NvbnN0IHM9U3ltYm9sKCJJTlRFUk5BTCIpO2NsYXNzIE9wdGlvbmFsQ29udGVudEdyb3VweyNRdD0hMDtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMubmFtZT10O3RoaXMuaW50ZW50PWV9Z2V0IHZpc2libGUoKXtyZXR1cm4gdGhpcy4jUXR9X3NldFZpc2libGUodCxlKXt0IT09cyYmKDAsaS51bnJlYWNoYWJsZSkoIkludGVybmFsIG1ldGhvZCBgX3NldFZpc2libGVgIGNhbGxlZC4iKTt0aGlzLiNRdD1lfX1lLk9wdGlvbmFsQ29udGVudENvbmZpZz1jbGFzcyBPcHRpb25hbENvbnRlbnRDb25maWd7I1p0PW51bGw7I3RlPW5ldyBNYXA7I2VlPW51bGw7I25lPW51bGw7Y29uc3RydWN0b3IodCl7dGhpcy5uYW1lPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7aWYobnVsbCE9PXQpe3RoaXMubmFtZT10Lm5hbWU7dGhpcy5jcmVhdG9yPXQuY3JlYXRvcjt0aGlzLiNuZT10Lm9yZGVyO2Zvcihjb25zdCBlIG9mIHQuZ3JvdXBzKXRoaXMuI3RlLnNldChlLmlkLG5ldyBPcHRpb25hbENvbnRlbnRHcm91cChlLm5hbWUsZS5pbnRlbnQpKTtpZigiT0ZGIj09PXQuYmFzZVN0YXRlKWZvcihjb25zdCB0IG9mIHRoaXMuI3RlLnZhbHVlcygpKXQuX3NldFZpc2libGUocywhMSk7Zm9yKGNvbnN0IGUgb2YgdC5vbil0aGlzLiN0ZS5nZXQoZSkuX3NldFZpc2libGUocywhMCk7Zm9yKGNvbnN0IGUgb2YgdC5vZmYpdGhpcy4jdGUuZ2V0KGUpLl9zZXRWaXNpYmxlKHMsITEpO3RoaXMuI2VlPXRoaXMuZ2V0SGFzaCgpfX0jaWUodCl7Y29uc3QgZT10Lmxlbmd0aDtpZihlPDIpcmV0dXJuITA7Y29uc3Qgbj10WzBdO2ZvcihsZXQgcj0xO3I8ZTtyKyspe2NvbnN0IGU9dFtyXTtsZXQgcztpZihBcnJheS5pc0FycmF5KGUpKXM9dGhpcy4jaWUoZSk7ZWxzZXtpZighdGhpcy4jdGUuaGFzKGUpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiEwfXM9dGhpcy4jdGUuZ2V0KGUpLnZpc2libGV9c3dpdGNoKG4pe2Nhc2UiQW5kIjppZighcylyZXR1cm4hMTticmVhaztjYXNlIk9yIjppZihzKXJldHVybiEwO2JyZWFrO2Nhc2UiTm90IjpyZXR1cm4hcztkZWZhdWx0OnJldHVybiEwfX1yZXR1cm4iQW5kIj09PW59aXNWaXNpYmxlKHQpe2lmKDA9PT10aGlzLiN0ZS5zaXplKXJldHVybiEwO2lmKCF0KXsoMCxpLndhcm4pKCJPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBkZWZpbmVkLiIpO3JldHVybiEwfWlmKCJPQ0ciPT09dC50eXBlKXtpZighdGhpcy4jdGUuaGFzKHQuaWQpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHt0LmlkfWApO3JldHVybiEwfXJldHVybiB0aGlzLiN0ZS5nZXQodC5pZCkudmlzaWJsZX1pZigiT0NNRCI9PT10LnR5cGUpe2lmKHQuZXhwcmVzc2lvbilyZXR1cm4gdGhpcy4jaWUodC5leHByZXNzaW9uKTtpZighdC5wb2xpY3l8fCJBbnlPbiI9PT10LnBvbGljeSl7Zm9yKGNvbnN0IGUgb2YgdC5pZHMpe2lmKCF0aGlzLiN0ZS5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9aWYodGhpcy4jdGUuZ2V0KGUpLnZpc2libGUpcmV0dXJuITB9cmV0dXJuITF9aWYoIkFsbE9uIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI3RlLmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZighdGhpcy4jdGUuZ2V0KGUpLnZpc2libGUpcmV0dXJuITF9cmV0dXJuITB9aWYoIkFueU9mZiI9PT10LnBvbGljeSl7Zm9yKGNvbnN0IGUgb2YgdC5pZHMpe2lmKCF0aGlzLiN0ZS5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9aWYoIXRoaXMuI3RlLmdldChlKS52aXNpYmxlKXJldHVybiEwfXJldHVybiExfWlmKCJBbGxPZmYiPT09dC5wb2xpY3kpe2Zvcihjb25zdCBlIG9mIHQuaWRzKXtpZighdGhpcy4jdGUuaGFzKGUpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiEwfWlmKHRoaXMuI3RlLmdldChlKS52aXNpYmxlKXJldHVybiExfXJldHVybiEwfSgwLGkud2FybikoYFVua25vd24gb3B0aW9uYWwgY29udGVudCBwb2xpY3kgJHt0LnBvbGljeX0uYCk7cmV0dXJuITB9KDAsaS53YXJuKShgVW5rbm93biBncm91cCB0eXBlICR7dC50eXBlfS5gKTtyZXR1cm4hMH1zZXRWaXNpYmlsaXR5KHQpe2xldCBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07aWYodGhpcy4jdGUuaGFzKHQpKXt0aGlzLiN0ZS5nZXQodCkuX3NldFZpc2libGUocywhIWUpO3RoaXMuI1p0PW51bGx9ZWxzZSgwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke3R9YCl9Z2V0IGhhc0luaXRpYWxWaXNpYmlsaXR5KCl7cmV0dXJuIHRoaXMuZ2V0SGFzaCgpPT09dGhpcy4jZWV9Z2V0T3JkZXIoKXtyZXR1cm4gdGhpcy4jdGUuc2l6ZT90aGlzLiNuZT90aGlzLiNuZS5zbGljZSgpOlsuLi50aGlzLiN0ZS5rZXlzKCldOm51bGx9Z2V0R3JvdXBzKCl7cmV0dXJuIHRoaXMuI3RlLnNpemU+MD8oMCxpLm9iamVjdEZyb21NYXApKHRoaXMuI3RlKTpudWxsfWdldEdyb3VwKHQpe3JldHVybiB0aGlzLiN0ZS5nZXQodCl8fG51bGx9Z2V0SGFzaCgpe2lmKG51bGwhPT10aGlzLiNadClyZXR1cm4gdGhpcy4jWnQ7Y29uc3QgdD1uZXcgci5NdXJtdXJIYXNoM182NDtmb3IoY29uc3RbZSxuXW9mIHRoaXMuI3RlKXQudXBkYXRlKGAke2V9OiR7bi52aXNpYmxlfWApO3JldHVybiB0aGlzLiNadD10LmhleGRpZ2VzdCgpfX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT12b2lkIDA7big5Myk7bigxMDEpO24oMTAyKTtuKDEwNSk7bigxMDcpO24oMTA5KTtuKDExMyk7bigxMTYpO24oMTIzKTtuKDg5KTt2YXIgaT1uKDEpLHI9bigxNjcpO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT1jbGFzcyBQREZEYXRhVHJhbnNwb3J0U3RyZWFte2NvbnN0cnVjdG9yKHQsZSl7bGV0e2xlbmd0aDpuLGluaXRpYWxEYXRhOnIscHJvZ3Jlc3NpdmVEb25lOnM9ITEsY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6YT1udWxsLGRpc2FibGVSYW5nZTpvPSExLGRpc2FibGVTdHJlYW06bD0hMX09dDsoMCxpLmFzc2VydCkoZSwnUERGRGF0YVRyYW5zcG9ydFN0cmVhbSAtIG1pc3NpbmcgcmVxdWlyZWQgInBkZkRhdGFSYW5nZVRyYW5zcG9ydCIgYXJndW1lbnQuJyk7dGhpcy5fcXVldWVkQ2h1bmtzPVtdO3RoaXMuX3Byb2dyZXNzaXZlRG9uZT1zO3RoaXMuX2NvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPWE7aWYocj8ubGVuZ3RoPjApe2NvbnN0IHQ9ciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJnIuYnl0ZUxlbmd0aD09PXIuYnVmZmVyLmJ5dGVMZW5ndGg/ci5idWZmZXI6bmV3IFVpbnQ4QXJyYXkocikuYnVmZmVyO3RoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHQpfXRoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydD1lO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IW87dGhpcy5fY29udGVudExlbmd0aD1uO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZWFkZXJzPVtdO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRSYW5nZUxpc3RlbmVyKCgodCxlKT0+e3RoaXMuX29uUmVjZWl2ZURhdGEoe2JlZ2luOnQsY2h1bms6ZX0pfSkpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc0xpc3RlbmVyKCgodCxlKT0+e3RoaXMuX29uUHJvZ3Jlc3Moe2xvYWRlZDp0LHRvdGFsOmV9KX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIoKHQ9Pnt0aGlzLl9vblJlY2VpdmVEYXRhKHtjaHVuazp0fSl9KSk7dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzaXZlRG9uZUxpc3RlbmVyKCgoKT0+e3RoaXMuX29uUHJvZ3Jlc3NpdmVEb25lKCl9KSk7dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LnRyYW5zcG9ydFJlYWR5KCl9X29uUmVjZWl2ZURhdGEodCl7bGV0e2JlZ2luOmUsY2h1bms6bn09dDtjb25zdCByPW4gaW5zdGFuY2VvZiBVaW50OEFycmF5JiZuLmJ5dGVMZW5ndGg9PT1uLmJ1ZmZlci5ieXRlTGVuZ3RoP24uYnVmZmVyOm5ldyBVaW50OEFycmF5KG4pLmJ1ZmZlcjtpZih2b2lkIDA9PT1lKXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyP3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKHIpOnRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHIpO2Vsc2V7Y29uc3QgdD10aGlzLl9yYW5nZVJlYWRlcnMuc29tZSgoZnVuY3Rpb24odCl7aWYodC5fYmVnaW4hPT1lKXJldHVybiExO3QuX2VucXVldWUocik7cmV0dXJuITB9KSk7KDAsaS5hc3NlcnQpKHQsIl9vblJlY2VpdmVEYXRhIC0gbm8gYFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlcmAgaW5zdGFuY2UgZm91bmQuIil9fWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5fbG9hZGVkPz8wfV9vblByb2dyZXNzKHQpe3ZvaWQgMD09PXQudG90YWw/dGhpcy5fcmFuZ2VSZWFkZXJzWzBdPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZH0pOnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9X29uUHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LnByb2dyZXNzaXZlRG9uZSgpO3RoaXMuX3Byb2dyZXNzaXZlRG9uZT0hMH1fcmVtb3ZlUmFuZ2VSZWFkZXIodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlYWRlcnMuaW5kZXhPZih0KTtlPj0wJiZ0aGlzLl9yYW5nZVJlYWRlcnMuc3BsaWNlKGUsMSl9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkRhdGFUcmFuc3BvcnRTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rczt0aGlzLl9xdWV1ZWRDaHVua3M9bnVsbDtyZXR1cm4gbmV3IFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SZWFkZXIodGhpcyx0LHRoaXMuX3Byb2dyZXNzaXZlRG9uZSx0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSl9Z2V0UmFuZ2VSZWFkZXIodCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgbj1uZXcgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSh0LGUpO3RoaXMuX3JhbmdlUmVhZGVycy5wdXNoKG4pO3JldHVybiBufWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpfX07Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJlYWRlcntjb25zdHJ1Y3Rvcih0LGUpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDt0aGlzLl9zdHJlYW09dDt0aGlzLl9kb25lPW58fCExO3RoaXMuX2ZpbGVuYW1lPSgwLHIuaXNQZGZGaWxlKShpKT9pOm51bGw7dGhpcy5fcXVldWVkQ2h1bmtzPWV8fFtdO3RoaXMuX2xvYWRlZD0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX3F1ZXVlZENodW5rcyl0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLl9yZXF1ZXN0cz1bXTt0aGlzLl9oZWFkZXJzUmVhZHk9UHJvbWlzZS5yZXNvbHZlKCk7dC5fZnVsbFJlcXVlc3RSZWFkZXI9dGhpczt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1fZW5xdWV1ZSh0KXtpZighdGhpcy5fZG9uZSl7aWYodGhpcy5fcmVxdWVzdHMubGVuZ3RoPjApe3RoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6dCxkb25lOiExfSl9ZWxzZSB0aGlzLl9xdWV1ZWRDaHVua3MucHVzaCh0KTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aH19Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzUmVhZHl9Z2V0IGZpbGVuYW1lKCl7cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX3N0cmVhbS5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9zdHJlYW0uX2NvbnRlbnRMZW5ndGh9YXN5bmMgcmVhZCgpe2lmKHRoaXMuX3F1ZXVlZENodW5rcy5sZW5ndGg+MCl7cmV0dXJue3ZhbHVlOnRoaXMuX3F1ZXVlZENodW5rcy5zaGlmdCgpLGRvbmU6ITF9fWlmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtjb25zdCB0PW5ldyBpLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuX3JlcXVlc3RzLnB1c2godCk7cmV0dXJuIHQucHJvbWlzZX1jYW5jZWwodCl7dGhpcy5fZG9uZT0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9cHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fZG9uZXx8KHRoaXMuX2RvbmU9ITApfX1jbGFzcyBQREZEYXRhVHJhbnNwb3J0U3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3N0cmVhbT10O3RoaXMuX2JlZ2luPWU7dGhpcy5fZW5kPW47dGhpcy5fcXVldWVkQ2h1bms9bnVsbDt0aGlzLl9yZXF1ZXN0cz1bXTt0aGlzLl9kb25lPSExO3RoaXMub25Qcm9ncmVzcz1udWxsfV9lbnF1ZXVlKHQpe2lmKCF0aGlzLl9kb25lKXtpZigwPT09dGhpcy5fcmVxdWVzdHMubGVuZ3RoKXRoaXMuX3F1ZXVlZENodW5rPXQ7ZWxzZXt0aGlzLl9yZXF1ZXN0cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOnQsZG9uZTohMX0pO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MH10aGlzLl9kb25lPSEwO3RoaXMuX3N0cmVhbS5fcmVtb3ZlUmFuZ2VSZWFkZXIodGhpcyl9fWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtpZih0aGlzLl9xdWV1ZWRDaHVuayl7Y29uc3QgdD10aGlzLl9xdWV1ZWRDaHVuazt0aGlzLl9xdWV1ZWRDaHVuaz1udWxsO3JldHVybnt2YWx1ZTp0LGRvbmU6ITF9fWlmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtjb25zdCB0PW5ldyBpLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuX3JlcXVlc3RzLnB1c2godCk7cmV0dXJuIHQucHJvbWlzZX1jYW5jZWwodCl7dGhpcy5fZG9uZT0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTA7dGhpcy5fc3RyZWFtLl9yZW1vdmVSYW5nZVJlYWRlcih0aGlzKX19fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkZldGNoU3RyZWFtPXZvaWQgMDtuKDkzKTtuKDEwMSk7bigxMDIpO24oMTA1KTtuKDEwNyk7bigxMDkpO24oMTEzKTtuKDExNik7bigxMjMpO24oODkpO3ZhciBpPW4oMSkscj1uKDE4MSk7ZnVuY3Rpb24gY3JlYXRlRmV0Y2hPcHRpb25zKHQsZSxuKXtyZXR1cm57bWV0aG9kOiJHRVQiLGhlYWRlcnM6dCxzaWduYWw6bi5zaWduYWwsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6ZT8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIixyZWRpcmVjdDoiZm9sbG93In19ZnVuY3Rpb24gY3JlYXRlSGVhZGVycyh0KXtjb25zdCBlPW5ldyBIZWFkZXJzO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTt2b2lkIDAhPT1pJiZlLmFwcGVuZChuLGkpfXJldHVybiBlfWZ1bmN0aW9uIGdldEFycmF5QnVmZmVyKHQpe2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB0LmJ1ZmZlcjtpZih0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIHQ7KDAsaS53YXJuKShgZ2V0QXJyYXlCdWZmZXIgLSB1bmV4cGVjdGVkIGRhdGEgZm9ybWF0OiAke3R9YCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcn1lLlBERkZldGNoU3RyZWFtPWNsYXNzIFBERkZldGNoU3RyZWFte2NvbnN0cnVjdG9yKHQpe3RoaXMuc291cmNlPXQ7dGhpcy5pc0h0dHA9L15odHRwcz86L2kudGVzdCh0LnVybCk7dGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmdC5odHRwSGVhZGVyc3x8e307dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzPVtdfWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5fbG9hZGVkPz8wfWdldEZ1bGxSZWFkZXIoKXsoMCxpLmFzc2VydCkoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZGZXRjaFN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZGZXRjaFN0cmVhbVJlYWRlcih0aGlzKTtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXJ9Z2V0UmFuZ2VSZWFkZXIodCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgbj1uZXcgUERGRmV0Y2hTdHJlYW1SYW5nZVJlYWRlcih0aGlzLHQsZSk7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKG4pO3JldHVybiBufWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSllLmNhbmNlbCh0KX19O2NsYXNzIFBERkZldGNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKHQpe3RoaXMuX3N0cmVhbT10O3RoaXMuX3JlYWRlcj1udWxsO3RoaXMuX2xvYWRlZD0wO3RoaXMuX2ZpbGVuYW1lPW51bGw7Y29uc3QgZT10LnNvdXJjZTt0aGlzLl93aXRoQ3JlZGVudGlhbHM9ZS53aXRoQ3JlZGVudGlhbHN8fCExO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5sZW5ndGg7dGhpcy5faGVhZGVyc0NhcGFiaWxpdHk9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5fZGlzYWJsZVJhbmdlPWUuZGlzYWJsZVJhbmdlfHwhMTt0aGlzLl9yYW5nZUNodW5rU2l6ZT1lLnJhbmdlQ2h1bmtTaXplO3RoaXMuX3JhbmdlQ2h1bmtTaXplfHx0aGlzLl9kaXNhYmxlUmFuZ2V8fCh0aGlzLl9kaXNhYmxlUmFuZ2U9ITApO3RoaXMuX2Fib3J0Q29udHJvbGxlcj1uZXcgQWJvcnRDb250cm9sbGVyO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW07dGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hZS5kaXNhYmxlUmFuZ2U7dGhpcy5faGVhZGVycz1jcmVhdGVIZWFkZXJzKHRoaXMuX3N0cmVhbS5odHRwSGVhZGVycyk7Y29uc3Qgbj1lLnVybDtmZXRjaChuLGNyZWF0ZUZldGNoT3B0aW9ucyh0aGlzLl9oZWFkZXJzLHRoaXMuX3dpdGhDcmVkZW50aWFscyx0aGlzLl9hYm9ydENvbnRyb2xsZXIpKS50aGVuKCh0PT57aWYoISgwLHIudmFsaWRhdGVSZXNwb25zZVN0YXR1cykodC5zdGF0dXMpKXRocm93KDAsci5jcmVhdGVSZXNwb25zZVN0YXR1c0Vycm9yKSh0LnN0YXR1cyxuKTt0aGlzLl9yZWFkZXI9dC5ib2R5LmdldFJlYWRlcigpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKTtjb25zdCBnZXRSZXNwb25zZUhlYWRlcj1lPT50LmhlYWRlcnMuZ2V0KGUpLHthbGxvd1JhbmdlUmVxdWVzdHM6ZSxzdWdnZXN0ZWRMZW5ndGg6c309KDAsci52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOmdldFJlc3BvbnNlSGVhZGVyLGlzSHR0cDp0aGlzLl9zdHJlYW0uaXNIdHRwLHJhbmdlQ2h1bmtTaXplOnRoaXMuX3JhbmdlQ2h1bmtTaXplLGRpc2FibGVSYW5nZTp0aGlzLl9kaXNhYmxlUmFuZ2V9KTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWU7dGhpcy5fY29udGVudExlbmd0aD1zfHx0aGlzLl9jb250ZW50TGVuZ3RoO3RoaXMuX2ZpbGVuYW1lPSgwLHIuZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcikoZ2V0UmVzcG9uc2VIZWFkZXIpOyF0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5faXNSYW5nZVN1cHBvcnRlZCYmdGhpcy5jYW5jZWwobmV3IGkuQWJvcnRFeGNlcHRpb24oIlN0cmVhbWluZyBpcyBkaXNhYmxlZC4iKSl9KSkuY2F0Y2godGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVqZWN0KTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnByb21pc2V9Z2V0IGZpbGVuYW1lKCl7cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2F3YWl0IHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnByb21pc2U7Y29uc3R7dmFsdWU6dCxkb25lOmV9PWF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7aWYoZSlyZXR1cm57dmFsdWU6dCxkb25lOmV9O3RoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RoO3RoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dGhpcy5fbG9hZGVkLHRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KTtyZXR1cm57dmFsdWU6Z2V0QXJyYXlCdWZmZXIodCksZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRlcj8uY2FuY2VsKHQpO3RoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpfX1jbGFzcyBQREZGZXRjaFN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9zdHJlYW09dDt0aGlzLl9yZWFkZXI9bnVsbDt0aGlzLl9sb2FkZWQ9MDtjb25zdCBzPXQuc291cmNlO3RoaXMuX3dpdGhDcmVkZW50aWFscz1zLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5fcmVhZENhcGFiaWxpdHk9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9IXMuZGlzYWJsZVN0cmVhbTt0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9oZWFkZXJzPWNyZWF0ZUhlYWRlcnModGhpcy5fc3RyZWFtLmh0dHBIZWFkZXJzKTt0aGlzLl9oZWFkZXJzLmFwcGVuZCgiUmFuZ2UiLGBieXRlcz0ke2V9LSR7bi0xfWApO2NvbnN0IGE9cy51cmw7ZmV0Y2goYSxjcmVhdGVGZXRjaE9wdGlvbnModGhpcy5faGVhZGVycyx0aGlzLl93aXRoQ3JlZGVudGlhbHMsdGhpcy5fYWJvcnRDb250cm9sbGVyKSkudGhlbigodD0+e2lmKCEoMCxyLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMpKHQuc3RhdHVzKSl0aHJvdygwLHIuY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodC5zdGF0dXMsYSk7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3JlYWRlcj10LmJvZHkuZ2V0UmVhZGVyKCl9KSkuY2F0Y2godGhpcy5fcmVhZENhcGFiaWxpdHkucmVqZWN0KTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2F3YWl0IHRoaXMuX3JlYWRDYXBhYmlsaXR5LnByb21pc2U7Y29uc3R7dmFsdWU6dCxkb25lOmV9PWF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7aWYoZSlyZXR1cm57dmFsdWU6dCxkb25lOmV9O3RoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RoO3RoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dGhpcy5fbG9hZGVkfSk7cmV0dXJue3ZhbHVlOmdldEFycmF5QnVmZmVyKHQpLGRvbmU6ITF9fWNhbmNlbCh0KXt0aGlzLl9yZWFkZXI/LmNhbmNlbCh0KTt0aGlzLl9hYm9ydENvbnRyb2xsZXIuYWJvcnQoKX19fSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3I9ZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcih0LGUpe2lmKDQwND09PXR8fDA9PT10JiZlLnN0YXJ0c1dpdGgoImZpbGU6IikpcmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInK2UrJyIuJyk7cmV0dXJuIG5ldyBpLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihgVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UgKCR7dH0pIHdoaWxlIHJldHJpZXZpbmcgUERGICIke2V9Ii5gLHQpfTtlLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXI9ZnVuY3Rpb24gZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcih0KXtjb25zdCBlPXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTtpZihlKXtsZXQgdD0oMCxyLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcikoZSk7aWYodC5pbmNsdWRlcygiJSIpKXRyeXt0PWRlY29kZVVSSUNvbXBvbmVudCh0KX1jYXRjaHt9aWYoKDAscy5pc1BkZkZpbGUpKHQpKXJldHVybiB0fXJldHVybiBudWxsfTtlLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzPWZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKHQpe2xldHtnZXRSZXNwb25zZUhlYWRlcjplLGlzSHR0cDpuLHJhbmdlQ2h1bmtTaXplOmksZGlzYWJsZVJhbmdlOnJ9PXQ7Y29uc3Qgcz17YWxsb3dSYW5nZVJlcXVlc3RzOiExLHN1Z2dlc3RlZExlbmd0aDp2b2lkIDB9LGE9cGFyc2VJbnQoZSgiQ29udGVudC1MZW5ndGgiKSwxMCk7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpcmV0dXJuIHM7cy5zdWdnZXN0ZWRMZW5ndGg9YTtpZihhPD0yKmkpcmV0dXJuIHM7aWYocnx8IW4pcmV0dXJuIHM7aWYoImJ5dGVzIiE9PWUoIkFjY2VwdC1SYW5nZXMiKSlyZXR1cm4gcztpZigiaWRlbnRpdHkiIT09KGUoIkNvbnRlbnQtRW5jb2RpbmciKXx8ImlkZW50aXR5IikpcmV0dXJuIHM7cy5hbGxvd1JhbmdlUmVxdWVzdHM9ITA7cmV0dXJuIHN9O2UudmFsaWRhdGVSZXNwb25zZVN0YXR1cz1mdW5jdGlvbiB2YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKHQpe3JldHVybiAyMDA9PT10fHwyMDY9PT10fTt2YXIgaT1uKDEpLHI9bigxODIpLHM9bigxNjcpfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcj1mdW5jdGlvbiBnZXRGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb25IZWFkZXIodCl7bGV0IGU9ITAsbj10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZVxcKiIsImkiKS5leGVjKHQpO2lmKG4pe249blsxXTtsZXQgdD1yZmMyNjE2dW5xdW90ZShuKTt0PXVuZXNjYXBlKHQpO3Q9cmZjNTk4N2RlY29kZSh0KTt0PXJmYzIwNDdkZWNvZGUodCk7cmV0dXJuIGZpeHVwRW5jb2RpbmcodCl9bj1mdW5jdGlvbiByZmMyMjMxZ2V0cGFyYW0odCl7Y29uc3QgZT1bXTtsZXQgbjtjb25zdCBpPXRvUGFyYW1SZWdFeHAoImZpbGVuYW1lXFwqKCg/ITBcXGQpXFxkKykoXFwqPykiLCJpZyIpO2Zvcig7bnVsbCE9PShuPWkuZXhlYyh0KSk7KXtsZXRbLHQsaSxyXT1uO3Q9cGFyc2VJbnQodCwxMCk7aWYodCBpbiBlKXtpZigwPT09dClicmVha31lbHNlIGVbdF09W2kscl19Y29uc3Qgcj1bXTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoJiZ0IGluIGU7Kyt0KXtsZXRbbixpXT1lW3RdO2k9cmZjMjYxNnVucXVvdGUoaSk7aWYobil7aT11bmVzY2FwZShpKTswPT09dCYmKGk9cmZjNTk4N2RlY29kZShpKSl9ci5wdXNoKGkpfXJldHVybiByLmpvaW4oIiIpfSh0KTtpZihuKXtyZXR1cm4gZml4dXBFbmNvZGluZyhyZmMyMDQ3ZGVjb2RlKG4pKX1uPXRvUGFyYW1SZWdFeHAoImZpbGVuYW1lIiwiaSIpLmV4ZWModCk7aWYobil7bj1uWzFdO2xldCB0PXJmYzI2MTZ1bnF1b3RlKG4pO3Q9cmZjMjA0N2RlY29kZSh0KTtyZXR1cm4gZml4dXBFbmNvZGluZyh0KX1mdW5jdGlvbiB0b1BhcmFtUmVnRXhwKHQsZSl7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58OylcXHMqIit0KydcXHMqPVxccyooW14iO1xcc11bXjtcXHNdKnwiKD86W14iXFxcXF18XFxcXCI/KSsiPyknLGUpfWZ1bmN0aW9uIHRleHRkZWNvZGUodCxuKXtpZih0KXtpZighL15bXHgwMC1ceEZGXSskLy50ZXN0KG4pKXJldHVybiBuO3RyeXtjb25zdCByPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLHM9KDAsaS5zdHJpbmdUb0J5dGVzKShuKTtuPXIuZGVjb2RlKHMpO2U9ITF9Y2F0Y2h7fX1yZXR1cm4gbn1mdW5jdGlvbiBmaXh1cEVuY29kaW5nKHQpe2lmKGUmJi9bXHg4MC1ceGZmXS8udGVzdCh0KSl7dD10ZXh0ZGVjb2RlKCJ1dGYtOCIsdCk7ZSYmKHQ9dGV4dGRlY29kZSgiaXNvLTg4NTktMSIsdCkpfXJldHVybiB0fWZ1bmN0aW9uIHJmYzI2MTZ1bnF1b3RlKHQpe2lmKHQuc3RhcnRzV2l0aCgnIicpKXtjb25zdCBlPXQuc2xpY2UoMSkuc3BsaXQoJ1xcIicpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7Kyt0KXtjb25zdCBuPWVbdF0uaW5kZXhPZignIicpO2lmKC0xIT09bil7ZVt0XT1lW3RdLnNsaWNlKDAsbik7ZS5sZW5ndGg9dCsxfWVbdF09ZVt0XS5yZXBsYWNlQWxsKC9cXCguKS9nLCIkMSIpfXQ9ZS5qb2luKCciJyl9cmV0dXJuIHR9ZnVuY3Rpb24gcmZjNTk4N2RlY29kZSh0KXtjb25zdCBlPXQuaW5kZXhPZigiJyIpO2lmKC0xPT09ZSlyZXR1cm4gdDtyZXR1cm4gdGV4dGRlY29kZSh0LnNsaWNlKDAsZSksdC5zbGljZShlKzEpLnJlcGxhY2UoL15bXiddKicvLCIiKSl9ZnVuY3Rpb24gcmZjMjA0N2RlY29kZSh0KXtyZXR1cm4hdC5zdGFydHNXaXRoKCI9PyIpfHwvW1x4MDAtXHgxOVx4ODAtXHhmZl0vLnRlc3QodCk/dDp0LnJlcGxhY2VBbGwoLz1cPyhbXHctXSopXD8oW1FxQmJdKVw/KCg/OlteP118XD8oPyE9KSkqKVw/PS9nLChmdW5jdGlvbih0LGUsbixpKXtpZigicSI9PT1ufHwiUSI9PT1uKXJldHVybiB0ZXh0ZGVjb2RlKGUsaT0oaT1pLnJlcGxhY2VBbGwoIl8iLCIgIikpLnJlcGxhY2VBbGwoLz0oWzAtOWEtZkEtRl17Mn0pL2csKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZSwxNikpfSkpKTt0cnl7aT1hdG9iKGkpfWNhdGNoe31yZXR1cm4gdGV4dGRlY29kZShlLGkpfSkpfXJldHVybiIifTtuKDg5KTtuKDE0OCk7dmFyIGk9bigxKX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5QREZOZXR3b3JrU3RyZWFtPXZvaWQgMDtuKDg5KTt2YXIgaT1uKDEpLHI9bigxODEpO2NsYXNzIE5ldHdvcmtNYW5hZ2Vye2NvbnN0cnVjdG9yKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTt0aGlzLnVybD10O3RoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QodCk7dGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmZS5odHRwSGVhZGVyc3x8T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5jdXJyWGhySWQ9MDt0aGlzLnBlbmRpbmdSZXF1ZXN0cz1PYmplY3QuY3JlYXRlKG51bGwpfXJlcXVlc3RSYW5nZSh0LGUsbil7Y29uc3QgaT17YmVnaW46dCxlbmQ6ZX07Zm9yKGNvbnN0IHQgaW4gbilpW3RdPW5bdF07cmV0dXJuIHRoaXMucmVxdWVzdChpKX1yZXF1ZXN0RnVsbCh0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHQpfXJlcXVlc3QodCl7Y29uc3QgZT1uZXcgWE1MSHR0cFJlcXVlc3Qsbj10aGlzLmN1cnJYaHJJZCsrLGk9dGhpcy5wZW5kaW5nUmVxdWVzdHNbbl09e3hocjplfTtlLm9wZW4oIkdFVCIsdGhpcy51cmwpO2Uud2l0aENyZWRlbnRpYWxzPXRoaXMud2l0aENyZWRlbnRpYWxzO2Zvcihjb25zdCB0IGluIHRoaXMuaHR0cEhlYWRlcnMpe2NvbnN0IG49dGhpcy5odHRwSGVhZGVyc1t0XTt2b2lkIDAhPT1uJiZlLnNldFJlcXVlc3RIZWFkZXIodCxuKX1pZih0aGlzLmlzSHR0cCYmImJlZ2luImluIHQmJiJlbmQiaW4gdCl7ZS5zZXRSZXF1ZXN0SGVhZGVyKCJSYW5nZSIsYGJ5dGVzPSR7dC5iZWdpbn0tJHt0LmVuZC0xfWApO2kuZXhwZWN0ZWRTdGF0dXM9MjA2fWVsc2UgaS5leHBlY3RlZFN0YXR1cz0yMDA7ZS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt0Lm9uRXJyb3ImJihlLm9uZXJyb3I9ZnVuY3Rpb24obil7dC5vbkVycm9yKGUuc3RhdHVzKX0pO2Uub25yZWFkeXN0YXRlY2hhbmdlPXRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMsbik7ZS5vbnByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMsbik7aS5vbkhlYWRlcnNSZWNlaXZlZD10Lm9uSGVhZGVyc1JlY2VpdmVkO2kub25Eb25lPXQub25Eb25lO2kub25FcnJvcj10Lm9uRXJyb3I7aS5vblByb2dyZXNzPXQub25Qcm9ncmVzcztlLnNlbmQobnVsbCk7cmV0dXJuIG59b25Qcm9ncmVzcyh0LGUpe2NvbnN0IG49dGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07biYmbi5vblByb2dyZXNzPy4oZSl9b25TdGF0ZUNoYW5nZSh0LGUpe2NvbnN0IG49dGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07aWYoIW4pcmV0dXJuO2NvbnN0IHI9bi54aHI7aWYoci5yZWFkeVN0YXRlPj0yJiZuLm9uSGVhZGVyc1JlY2VpdmVkKXtuLm9uSGVhZGVyc1JlY2VpdmVkKCk7ZGVsZXRlIG4ub25IZWFkZXJzUmVjZWl2ZWR9aWYoNCE9PXIucmVhZHlTdGF0ZSlyZXR1cm47aWYoISh0IGluIHRoaXMucGVuZGluZ1JlcXVlc3RzKSlyZXR1cm47ZGVsZXRlIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdO2lmKDA9PT1yLnN0YXR1cyYmdGhpcy5pc0h0dHApe24ub25FcnJvcj8uKHIuc3RhdHVzKTtyZXR1cm59Y29uc3Qgcz1yLnN0YXR1c3x8MjAwO2lmKCEoMjAwPT09cyYmMjA2PT09bi5leHBlY3RlZFN0YXR1cykmJnMhPT1uLmV4cGVjdGVkU3RhdHVzKXtuLm9uRXJyb3I/LihyLnN0YXR1cyk7cmV0dXJufWNvbnN0IGE9ZnVuY3Rpb24gZ2V0QXJyYXlCdWZmZXIodCl7Y29uc3QgZT10LnJlc3BvbnNlO3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9lOigwLGkuc3RyaW5nVG9CeXRlcykoZSkuYnVmZmVyfShyKTtpZigyMDY9PT1zKXtjb25zdCB0PXIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtUmFuZ2UiKSxlPS9ieXRlcyAoXGQrKS0oXGQrKVwvKFxkKykvLmV4ZWModCk7bi5vbkRvbmUoe2JlZ2luOnBhcnNlSW50KGVbMV0sMTApLGNodW5rOmF9KX1lbHNlIGE/bi5vbkRvbmUoe2JlZ2luOjAsY2h1bms6YX0pOm4ub25FcnJvcj8uKHIuc3RhdHVzKX1nZXRSZXF1ZXN0WGhyKHQpe3JldHVybiB0aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XS54aHJ9aXNQZW5kaW5nUmVxdWVzdCh0KXtyZXR1cm4gdCBpbiB0aGlzLnBlbmRpbmdSZXF1ZXN0c31hYm9ydFJlcXVlc3QodCl7Y29uc3QgZT10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XS54aHI7ZGVsZXRlIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdO2UuYWJvcnQoKX19ZS5QREZOZXR3b3JrU3RyZWFtPWNsYXNzIFBERk5ldHdvcmtTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5fc291cmNlPXQ7dGhpcy5fbWFuYWdlcj1uZXcgTmV0d29ya01hbmFnZXIodC51cmwse2h0dHBIZWFkZXJzOnQuaHR0cEhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOnQud2l0aENyZWRlbnRpYWxzfSk7dGhpcy5fcmFuZ2VDaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119X29uUmFuZ2VSZXF1ZXN0UmVhZGVyQ2xvc2VkKHQpe2NvbnN0IGU9dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5pbmRleE9mKHQpO2U+PTAmJnRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc3BsaWNlKGUsMSl9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERk5ldHdvcmtTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgUERGTmV0d29ya1N0cmVhbUZ1bGxSZXF1ZXN0UmVhZGVyKHRoaXMuX21hbmFnZXIsdGhpcy5fc291cmNlKTtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXJ9Z2V0UmFuZ2VSZWFkZXIodCxlKXtjb25zdCBuPW5ldyBQREZOZXR3b3JrU3RyZWFtUmFuZ2VSZXF1ZXN0UmVhZGVyKHRoaXMuX21hbmFnZXIsdCxlKTtuLm9uQ2xvc2VkPXRoaXMuX29uUmFuZ2VSZXF1ZXN0UmVhZGVyQ2xvc2VkLmJpbmQodGhpcyk7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKG4pO3JldHVybiBufWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSllLmNhbmNlbCh0KX19O2NsYXNzIFBERk5ldHdvcmtTdHJlYW1GdWxsUmVxdWVzdFJlYWRlcntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX21hbmFnZXI9dDtjb25zdCBuPXtvbkhlYWRlcnNSZWNlaXZlZDp0aGlzLl9vbkhlYWRlcnNSZWNlaXZlZC5iaW5kKHRoaXMpLG9uRG9uZTp0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxvbkVycm9yOnRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxvblByb2dyZXNzOnRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKX07dGhpcy5fdXJsPWUudXJsO3RoaXMuX2Z1bGxSZXF1ZXN0SWQ9dC5yZXF1ZXN0RnVsbChuKTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5PW5ldyBpLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuX2Rpc2FibGVSYW5nZT1lLmRpc2FibGVSYW5nZXx8ITE7dGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aDt0aGlzLl9yYW5nZUNodW5rU2l6ZT1lLnJhbmdlQ2h1bmtTaXplO3RoaXMuX3JhbmdlQ2h1bmtTaXplfHx0aGlzLl9kaXNhYmxlUmFuZ2V8fCh0aGlzLl9kaXNhYmxlUmFuZ2U9ITApO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5fY2FjaGVkQ2h1bmtzPVtdO3RoaXMuX3JlcXVlc3RzPVtdO3RoaXMuX2RvbmU9ITE7dGhpcy5fc3RvcmVkRXJyb3I9dm9pZCAwO3RoaXMuX2ZpbGVuYW1lPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGx9X29uSGVhZGVyc1JlY2VpdmVkKCl7Y29uc3QgdD10aGlzLl9mdWxsUmVxdWVzdElkLGU9dGhpcy5fbWFuYWdlci5nZXRSZXF1ZXN0WGhyKHQpLGdldFJlc3BvbnNlSGVhZGVyPXQ9PmUuZ2V0UmVzcG9uc2VIZWFkZXIodCkse2FsbG93UmFuZ2VSZXF1ZXN0czpuLHN1Z2dlc3RlZExlbmd0aDppfT0oMCxyLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKSh7Z2V0UmVzcG9uc2VIZWFkZXI6Z2V0UmVzcG9uc2VIZWFkZXIsaXNIdHRwOnRoaXMuX21hbmFnZXIuaXNIdHRwLHJhbmdlQ2h1bmtTaXplOnRoaXMuX3JhbmdlQ2h1bmtTaXplLGRpc2FibGVSYW5nZTp0aGlzLl9kaXNhYmxlUmFuZ2V9KTtuJiYodGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hMCk7dGhpcy5fY29udGVudExlbmd0aD1pfHx0aGlzLl9jb250ZW50TGVuZ3RoO3RoaXMuX2ZpbGVuYW1lPSgwLHIuZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcikoZ2V0UmVzcG9uc2VIZWFkZXIpO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuX21hbmFnZXIuYWJvcnRSZXF1ZXN0KHQpO3RoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9vbkRvbmUodCl7aWYodClpZih0aGlzLl9yZXF1ZXN0cy5sZW5ndGg+MCl7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LmNodW5rLGRvbmU6ITF9KX1lbHNlIHRoaXMuX2NhY2hlZENodW5rcy5wdXNoKHQuY2h1bmspO3RoaXMuX2RvbmU9ITA7aWYoISh0aGlzLl9jYWNoZWRDaHVua3MubGVuZ3RoPjApKXtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9fV9vbkVycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLHIuY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpO3RoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTA7dGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD0wfV9vblByb2dyZXNzKHQpe3RoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC5sZW5ndGhDb21wdXRhYmxlP3QudG90YWw6dGhpcy5fY29udGVudExlbmd0aH0pfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBoZWFkZXJzUmVhZHkoKXtyZXR1cm4gdGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5wcm9taXNlfWFzeW5jIHJlYWQoKXtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtpZih0aGlzLl9jYWNoZWRDaHVua3MubGVuZ3RoPjApe3JldHVybnt2YWx1ZTp0aGlzLl9jYWNoZWRDaHVua3Muc2hpZnQoKSxkb25lOiExfX1pZih0aGlzLl9kb25lKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07Y29uc3QgdD1uZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7dGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5yZWplY3QodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fZnVsbFJlcXVlc3RJZCk7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbH19Y2xhc3MgUERGTmV0d29ya1N0cmVhbVJhbmdlUmVxdWVzdFJlYWRlcntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fbWFuYWdlcj10O2NvbnN0IGk9e29uRG9uZTp0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxvbkVycm9yOnRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxvblByb2dyZXNzOnRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKX07dGhpcy5fdXJsPXQudXJsO3RoaXMuX3JlcXVlc3RJZD10LnJlcXVlc3RSYW5nZShlLG4saSk7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fcXVldWVkQ2h1bms9bnVsbDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLm9uQ2xvc2VkPW51bGx9X2Nsb3NlKCl7dGhpcy5vbkNsb3NlZD8uKHRoaXMpfV9vbkRvbmUodCl7Y29uc3QgZT10LmNodW5rO2lmKHRoaXMuX3JlcXVlc3RzLmxlbmd0aD4wKXt0aGlzLl9yZXF1ZXN0cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOmUsZG9uZTohMX0pfWVsc2UgdGhpcy5fcXVldWVkQ2h1bms9ZTt0aGlzLl9kb25lPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9jbG9zZSgpfV9vbkVycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLHIuY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9xdWV1ZWRDaHVuaz1udWxsfV9vblByb2dyZXNzKHQpe3RoaXMuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fHRoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWR9KX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYobnVsbCE9PXRoaXMuX3F1ZXVlZENodW5rKXtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5fcmVxdWVzdHMucHVzaCh0KTtyZXR1cm4gdC5wcm9taXNlfWNhbmNlbCh0KXt0aGlzLl9kb25lPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9tYW5hZ2VyLmlzUGVuZGluZ1JlcXVlc3QodGhpcy5fcmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fcmVxdWVzdElkKTt0aGlzLl9jbG9zZSgpfX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuUERGTm9kZVN0cmVhbT12b2lkIDA7big4OSk7big5Myk7bigxMDEpO24oMTAyKTtuKDEwNSk7bigxMDcpO24oMTA5KTtuKDExMyk7bigxMTYpO24oMTIzKTt2YXIgaT1uKDEpLHI9bigxODEpO2NvbnN0IHM9L15maWxlOlwvXC9cL1thLXpBLVpdOlwvLztlLlBERk5vZGVTdHJlYW09Y2xhc3MgUERGTm9kZVN0cmVhbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnNvdXJjZT10O3RoaXMudXJsPWZ1bmN0aW9uIHBhcnNlVXJsKHQpe2NvbnN0IGU9cmVxdWlyZSgidXJsIiksbj1lLnBhcnNlKHQpO2lmKCJmaWxlOiI9PT1uLnByb3RvY29sfHxuLmhvc3QpcmV0dXJuIG47aWYoL15bYS16XTpbL1xcXS9pLnRlc3QodCkpcmV0dXJuIGUucGFyc2UoYGZpbGU6Ly8vJHt0fWApO24uaG9zdHx8KG4ucHJvdG9jb2w9ImZpbGU6Iik7cmV0dXJuIG59KHQudXJsKTt0aGlzLmlzSHR0cD0iaHR0cDoiPT09dGhpcy51cmwucHJvdG9jb2x8fCJodHRwczoiPT09dGhpcy51cmwucHJvdG9jb2w7dGhpcy5pc0ZzVXJsPSJmaWxlOiI9PT10aGlzLnVybC5wcm90b2NvbDt0aGlzLmh0dHBIZWFkZXJzPXRoaXMuaXNIdHRwJiZ0Lmh0dHBIZWFkZXJzfHx7fTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0IF9wcm9ncmVzc2l2ZURhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERk5vZGVTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj10aGlzLmlzRnNVcmw/bmV3IFBERk5vZGVTdHJlYW1Gc0Z1bGxSZWFkZXIodGhpcyk6bmV3IFBERk5vZGVTdHJlYW1GdWxsUmVhZGVyKHRoaXMpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2lmKGU8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBuPXRoaXMuaXNGc1VybD9uZXcgUERGTm9kZVN0cmVhbUZzUmFuZ2VSZWFkZXIodGhpcyx0LGUpOm5ldyBQREZOb2RlU3RyZWFtUmFuZ2VSZWFkZXIodGhpcyx0LGUpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChuKTtyZXR1cm4gbn1jYW5jZWxBbGxSZXF1ZXN0cyh0KXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uY2FuY2VsKHQpO2Zvcihjb25zdCBlIG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpZS5jYW5jZWwodCl9fTtjbGFzcyBCYXNlRnVsbFJlYWRlcntjb25zdHJ1Y3Rvcih0KXt0aGlzLl91cmw9dC51cmw7dGhpcy5fZG9uZT0hMTt0aGlzLl9zdG9yZWRFcnJvcj1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IGU9dC5zb3VyY2U7dGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aDt0aGlzLl9sb2FkZWQ9MDt0aGlzLl9maWxlbmFtZT1udWxsO3RoaXMuX2Rpc2FibGVSYW5nZT1lLmRpc2FibGVSYW5nZXx8ITE7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hZS5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IWUuZGlzYWJsZVJhbmdlO3RoaXMuX3JlYWRhYmxlU3RyZWFtPW51bGw7dGhpcy5fcmVhZENhcGFiaWxpdHk9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHk7dGhpcy5faGVhZGVyc0NhcGFiaWxpdHk9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHk7cmV0dXJuIHRoaXMucmVhZCgpfXRoaXMuX2xvYWRlZCs9dC5sZW5ndGg7dGhpcy5vblByb2dyZXNzPy4oe2xvYWRlZDp0aGlzLl9sb2FkZWQsdG90YWw6dGhpcy5fY29udGVudExlbmd0aH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9X2Vycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQ7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9zZXRSZWFkYWJsZVN0cmVhbSh0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT10O3Qub24oInJlYWRhYmxlIiwoKCk9Pnt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSk7dC5vbigiZW5kIiwoKCk9Pnt0LmRlc3Ryb3koKTt0aGlzLl9kb25lPSEwO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9lcnJvcih0KX0pKTshdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuX2Vycm9yKG5ldyBpLkFib3J0RXhjZXB0aW9uKCJzdHJlYW1pbmcgaXMgZGlzYWJsZWQiKSk7dGhpcy5fc3RvcmVkRXJyb3ImJnRoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodGhpcy5fc3RvcmVkRXJyb3IpfX1jbGFzcyBCYXNlUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCl7dGhpcy5fdXJsPXQudXJsO3RoaXMuX2RvbmU9ITE7dGhpcy5fc3RvcmVkRXJyb3I9bnVsbDt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLl9sb2FkZWQ9MDt0aGlzLl9yZWFkYWJsZVN0cmVhbT1udWxsO3RoaXMuX3JlYWRDYXBhYmlsaXR5PW5ldyBpLlByb21pc2VDYXBhYmlsaXR5O2NvbnN0IGU9dC5zb3VyY2U7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9IWUuZGlzYWJsZVN0cmVhbX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2F3YWl0IHRoaXMuX3JlYWRDYXBhYmlsaXR5LnByb21pc2U7aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2lmKHRoaXMuX3N0b3JlZEVycm9yKXRocm93IHRoaXMuX3N0b3JlZEVycm9yO2NvbnN0IHQ9dGhpcy5fcmVhZGFibGVTdHJlYW0ucmVhZCgpO2lmKG51bGw9PT10KXt0aGlzLl9yZWFkQ2FwYWJpbGl0eT1uZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9X2Vycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQ7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9zZXRSZWFkYWJsZVN0cmVhbSh0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT10O3Qub24oInJlYWRhYmxlIiwoKCk9Pnt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSk7dC5vbigiZW5kIiwoKCk9Pnt0LmRlc3Ryb3koKTt0aGlzLl9kb25lPSEwO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9lcnJvcih0KX0pKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RPcHRpb25zKHQsZSl7cmV0dXJue3Byb3RvY29sOnQucHJvdG9jb2wsYXV0aDp0LmF1dGgsaG9zdDp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGg6dC5wYXRoLG1ldGhvZDoiR0VUIixoZWFkZXJzOmV9fWNsYXNzIFBERk5vZGVTdHJlYW1GdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7Y29uc3QgaGFuZGxlUmVzcG9uc2U9ZT0+e2lmKDQwND09PWUuc3RhdHVzQ29kZSl7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtyZXR1cm59dGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKGUpO2NvbnN0IGdldFJlc3BvbnNlSGVhZGVyPXQ9PnRoaXMuX3JlYWRhYmxlU3RyZWFtLmhlYWRlcnNbdC50b0xvd2VyQ2FzZSgpXSx7YWxsb3dSYW5nZVJlcXVlc3RzOm4sc3VnZ2VzdGVkTGVuZ3RoOnN9PSgwLHIudmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dC5pc0h0dHAscmFuZ2VDaHVua1NpemU6dGhpcy5fcmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOnRoaXMuX2Rpc2FibGVSYW5nZX0pO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9bjt0aGlzLl9jb250ZW50TGVuZ3RoPXN8fHRoaXMuX2NvbnRlbnRMZW5ndGg7dGhpcy5fZmlsZW5hbWU9KDAsci5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcil9O3RoaXMuX3JlcXVlc3Q9bnVsbDtpZigiaHR0cDoiPT09dGhpcy5fdXJsLnByb3RvY29sKXtjb25zdCBlPXJlcXVpcmUoImh0dHAiKTt0aGlzLl9yZXF1ZXN0PWUucmVxdWVzdChjcmVhdGVSZXF1ZXN0T3B0aW9ucyh0aGlzLl91cmwsdC5odHRwSGVhZGVycyksaGFuZGxlUmVzcG9uc2UpfWVsc2V7Y29uc3QgZT1yZXF1aXJlKCJodHRwcyIpO3RoaXMuX3JlcXVlc3Q9ZS5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCx0Lmh0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSl9dGhpcy5fcmVxdWVzdC5vbigiZXJyb3IiLCh0PT57dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9KSk7dGhpcy5fcmVxdWVzdC5lbmQoKX19Y2xhc3MgUERGTm9kZVN0cmVhbVJhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0KTt0aGlzLl9odHRwSGVhZGVycz17fTtmb3IoY29uc3QgZSBpbiB0Lmh0dHBIZWFkZXJzKXtjb25zdCBuPXQuaHR0cEhlYWRlcnNbZV07dm9pZCAwIT09biYmKHRoaXMuX2h0dHBIZWFkZXJzW2VdPW4pfXRoaXMuX2h0dHBIZWFkZXJzLlJhbmdlPWBieXRlcz0ke2V9LSR7bi0xfWA7Y29uc3QgaGFuZGxlUmVzcG9uc2U9dD0+e2lmKDQwNCE9PXQuc3RhdHVzQ29kZSl0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbSh0KTtlbHNle2NvbnN0IHQ9bmV3IGkuTWlzc2luZ1BERkV4Y2VwdGlvbihgTWlzc2luZyBQREYgIiR7dGhpcy5fdXJsfSIuYCk7dGhpcy5fc3RvcmVkRXJyb3I9dH19O3RoaXMuX3JlcXVlc3Q9bnVsbDtpZigiaHR0cDoiPT09dGhpcy5fdXJsLnByb3RvY29sKXtjb25zdCB0PXJlcXVpcmUoImh0dHAiKTt0aGlzLl9yZXF1ZXN0PXQucmVxdWVzdChjcmVhdGVSZXF1ZXN0T3B0aW9ucyh0aGlzLl91cmwsdGhpcy5faHR0cEhlYWRlcnMpLGhhbmRsZVJlc3BvbnNlKX1lbHNle2NvbnN0IHQ9cmVxdWlyZSgiaHR0cHMiKTt0aGlzLl9yZXF1ZXN0PXQucmVxdWVzdChjcmVhdGVSZXF1ZXN0T3B0aW9ucyh0aGlzLl91cmwsdGhpcy5faHR0cEhlYWRlcnMpLGhhbmRsZVJlc3BvbnNlKX10aGlzLl9yZXF1ZXN0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9zdG9yZWRFcnJvcj10fSkpO3RoaXMuX3JlcXVlc3QuZW5kKCl9fWNsYXNzIFBERk5vZGVTdHJlYW1Gc0Z1bGxSZWFkZXIgZXh0ZW5kcyBCYXNlRnVsbFJlYWRlcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KTtsZXQgZT1kZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO3MudGVzdCh0aGlzLl91cmwuaHJlZikmJihlPWUucmVwbGFjZSgvXlwvLywiIikpO2NvbnN0IG49cmVxdWlyZSgiZnMiKTtuLmxzdGF0KGUsKCh0LHIpPT57aWYodCl7IkVOT0VOVCI9PT10LmNvZGUmJih0PW5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oYE1pc3NpbmcgUERGICIke2V9Ii5gKSk7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9ZWxzZXt0aGlzLl9jb250ZW50TGVuZ3RoPXIuc2l6ZTt0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShuLmNyZWF0ZVJlYWRTdHJlYW0oZSkpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX19KSl9fWNsYXNzIFBERk5vZGVTdHJlYW1Gc1JhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0KTtsZXQgaT1kZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO3MudGVzdCh0aGlzLl91cmwuaHJlZikmJihpPWkucmVwbGFjZSgvXlwvLywiIikpO2NvbnN0IHI9cmVxdWlyZSgiZnMiKTt0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShyLmNyZWF0ZVJlYWRTdHJlYW0oaSx7c3RhcnQ6ZSxlbmQ6bi0xfSkpfX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU1ZHR3JhcGhpY3M9dm9pZCAwO24oODQpO24oODYpO24oODcpO24oOTMpO24oMTAxKTtuKDEwMik7bigxMDUpO24oMTA3KTtuKDEwOSk7bigxMTMpO24oMTE2KTtuKDEyMyk7bigyKTtuKDg5KTtuKDE4Nik7dmFyIGk9bigxNjcpLHI9bigxKTtjb25zdCBzPSJub3JtYWwiLGE9Im5vcm1hbCIsbz0iIzAwMDAwMCIsbD1bImJ1dHQiLCJyb3VuZCIsInNxdWFyZSJdLGM9WyJtaXRlciIsInJvdW5kIiwiYmV2ZWwiXSxjcmVhdGVPYmplY3RVUkw9ZnVuY3Rpb24odCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiIiLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZihVUkwuY3JlYXRlT2JqZWN0VVJMJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJiFuKXJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFt0XSx7dHlwZTplfSkpO2NvbnN0IGk9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IjtsZXQgcj1gZGF0YToke2V9O2Jhc2U2NCxgO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTMpe2NvbnN0IHM9MjU1JnRbZV0sYT0yNTUmdFtlKzFdLG89MjU1JnRbZSsyXTtyKz1pW3M+PjJdK2lbKDMmcyk8PDR8YT4+NF0raVtlKzE8bj8oMTUmYSk8PDJ8bz4+Njo2NF0raVtlKzI8bj82MyZvOjY0XX1yZXR1cm4gcn0saD1mdW5jdGlvbigpe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoWzEzNyw4MCw3OCw3MSwxMywxMCwyNiwxMF0pLGU9bmV3IEludDMyQXJyYXkoMjU2KTtmb3IobGV0IHQ9MDt0PDI1Njt0Kyspe2xldCBuPXQ7Zm9yKGxldCB0PTA7dDw4O3QrKyluPTEmbj8zOTg4MjkyMzg0Xm4+PjEmMjE0NzQ4MzY0NzpuPj4xJjIxNDc0ODM2NDc7ZVt0XT1ufWZ1bmN0aW9uIHdyaXRlUG5nQ2h1bmsodCxuLGkscil7bGV0IHM9cjtjb25zdCBhPW4ubGVuZ3RoO2lbc109YT4+MjQmMjU1O2lbcysxXT1hPj4xNiYyNTU7aVtzKzJdPWE+PjgmMjU1O2lbcyszXT0yNTUmYTtzKz00O2lbc109MjU1JnQuY2hhckNvZGVBdCgwKTtpW3MrMV09MjU1JnQuY2hhckNvZGVBdCgxKTtpW3MrMl09MjU1JnQuY2hhckNvZGVBdCgyKTtpW3MrM109MjU1JnQuY2hhckNvZGVBdCgzKTtzKz00O2kuc2V0KG4scyk7cys9bi5sZW5ndGg7Y29uc3Qgbz1mdW5jdGlvbiBjcmMzMih0LG4saSl7bGV0IHI9LTE7Zm9yKGxldCBzPW47czxpO3MrKyl7Y29uc3Qgbj0yNTUmKHJedFtzXSk7cj1yPj4+OF5lW25dfXJldHVybi0xXnJ9KGkscis0LHMpO2lbc109bz4+MjQmMjU1O2lbcysxXT1vPj4xNiYyNTU7aVtzKzJdPW8+PjgmMjU1O2lbcyszXT0yNTUmb31mdW5jdGlvbiBkZWZsYXRlU3luY1VuY29tcHJlc3NlZCh0KXtsZXQgZT10Lmxlbmd0aDtjb25zdCBuPTY1NTM1LGk9TWF0aC5jZWlsKGUvbikscj1uZXcgVWludDhBcnJheSgyK2UrNSppKzQpO2xldCBzPTA7cltzKytdPTEyMDtyW3MrK109MTU2O2xldCBhPTA7Zm9yKDtlPm47KXtyW3MrK109MDtyW3MrK109MjU1O3JbcysrXT0yNTU7cltzKytdPTA7cltzKytdPTA7ci5zZXQodC5zdWJhcnJheShhLGErbikscyk7cys9bjthKz1uO2UtPW59cltzKytdPTE7cltzKytdPTI1NSZlO3JbcysrXT1lPj44JjI1NTtyW3MrK109MjU1Jn5lO3JbcysrXT0oNjU1MzUmfmUpPj44JjI1NTtyLnNldCh0LnN1YmFycmF5KGEpLHMpO3MrPXQubGVuZ3RoLWE7Y29uc3Qgbz1mdW5jdGlvbiBhZGxlcjMyKHQsZSxuKXtsZXQgaT0xLHI9MDtmb3IobGV0IHM9ZTtzPG47KytzKXtpPShpKygyNTUmdFtzXSkpJTY1NTIxO3I9KHIraSklNjU1MjF9cmV0dXJuIHI8PDE2fGl9KHQsMCx0Lmxlbmd0aCk7cltzKytdPW8+PjI0JjI1NTtyW3MrK109bz4+MTYmMjU1O3JbcysrXT1vPj44JjI1NTtyW3MrK109MjU1Jm87cmV0dXJuIHJ9ZnVuY3Rpb24gZW5jb2RlKGUsbixpLHMpe2NvbnN0IGE9ZS53aWR0aCxvPWUuaGVpZ2h0O2xldCBsLGMsaDtjb25zdCBkPWUuZGF0YTtzd2l0Y2gobil7Y2FzZSByLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDpjPTA7bD0xO2g9YSs3Pj4zO2JyZWFrO2Nhc2Ugci5JbWFnZUtpbmQuUkdCXzI0QlBQOmM9MjtsPTg7aD0zKmE7YnJlYWs7Y2FzZSByLkltYWdlS2luZC5SR0JBXzMyQlBQOmM9NjtsPTg7aD00KmE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0Iil9Y29uc3QgdT1uZXcgVWludDhBcnJheSgoMStoKSpvKTtsZXQgcD0wLGY9MDtmb3IobGV0IHQ9MDt0PG87Kyt0KXt1W3ArK109MDt1LnNldChkLnN1YmFycmF5KGYsZitoKSxwKTtmKz1oO3ArPWh9aWYobj09PXIuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQJiZzKXtwPTA7Zm9yKGxldCB0PTA7dDxvO3QrKyl7cCsrO2ZvcihsZXQgdD0wO3Q8aDt0KyspdVtwKytdXj0yNTV9fWNvbnN0IGc9bmV3IFVpbnQ4QXJyYXkoW2E+PjI0JjI1NSxhPj4xNiYyNTUsYT4+OCYyNTUsMjU1JmEsbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxsLGMsMCwwLDBdKSxtPWZ1bmN0aW9uIGRlZmxhdGVTeW5jKHQpe2lmKCFyLmlzTm9kZUpTKXJldHVybiBkZWZsYXRlU3luY1VuY29tcHJlc3NlZCh0KTt0cnl7Y29uc3QgZT1wYXJzZUludChwcm9jZXNzLnZlcnNpb25zLm5vZGUpPj04P3Q6QnVmZmVyLmZyb20odCksbj1yZXF1aXJlKCJ6bGliIikuZGVmbGF0ZVN5bmMoZSx7bGV2ZWw6OX0pO3JldHVybiBuIGluc3RhbmNlb2YgVWludDhBcnJheT9uOm5ldyBVaW50OEFycmF5KG4pfWNhdGNoKHQpeygwLHIud2FybikoIk5vdCBjb21wcmVzc2luZyBQTkcgYmVjYXVzZSB6bGliLmRlZmxhdGVTeW5jIGlzIHVuYXZhaWxhYmxlOiAiK3QpfXJldHVybiBkZWZsYXRlU3luY1VuY29tcHJlc3NlZCh0KX0odSksYj10Lmxlbmd0aCszNitnLmxlbmd0aCttLmxlbmd0aCx2PW5ldyBVaW50OEFycmF5KGIpO2xldCB5PTA7di5zZXQodCx5KTt5Kz10Lmxlbmd0aDt3cml0ZVBuZ0NodW5rKCJJSERSIixnLHYseSk7eSs9MTIrZy5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSURBVEEiLG0sdix5KTt5Kz0xMittLmxlbmd0aDt3cml0ZVBuZ0NodW5rKCJJRU5EIixuZXcgVWludDhBcnJheSgwKSx2LHkpO3JldHVybiBjcmVhdGVPYmplY3RVUkwodiwiaW1hZ2UvcG5nIixpKX1yZXR1cm4gZnVuY3Rpb24gY29udmVydEltZ0RhdGFUb1BuZyh0LGUsbil7cmV0dXJuIGVuY29kZSh0LHZvaWQgMD09PXQua2luZD9yLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDp0LmtpbmQsZSxuKX19KCk7Y2xhc3MgU1ZHRXh0cmFTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuZm9udFNpemVTY2FsZT0xO3RoaXMuZm9udFdlaWdodD1hO3RoaXMuZm9udFNpemU9MDt0aGlzLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVg7dGhpcy5mb250TWF0cml4PXIuRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1yLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPW87dGhpcy5zdHJva2VDb2xvcj0iIzAwMDAwMCI7dGhpcy5maWxsQWxwaGE9MTt0aGlzLnN0cm9rZUFscGhhPTE7dGhpcy5saW5lV2lkdGg9MTt0aGlzLmxpbmVKb2luPSIiO3RoaXMubGluZUNhcD0iIjt0aGlzLm1pdGVyTGltaXQ9MDt0aGlzLmRhc2hBcnJheT1bXTt0aGlzLmRhc2hQaGFzZT0wO3RoaXMuZGVwZW5kZW5jaWVzPVtdO3RoaXMuYWN0aXZlQ2xpcFVybD1udWxsO3RoaXMuY2xpcEdyb3VwPW51bGw7dGhpcy5tYXNrSWQ9IiJ9Y2xvbmUoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKX1zZXRDdXJyZW50UG9pbnQodCxlKXt0aGlzLng9dDt0aGlzLnk9ZX19ZnVuY3Rpb24gcGYodCl7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm4gdC50b1N0cmluZygpO2NvbnN0IGU9dC50b0ZpeGVkKDEwKTtsZXQgbj1lLmxlbmd0aC0xO2lmKCIwIiE9PWVbbl0pcmV0dXJuIGU7ZG97bi0tfXdoaWxlKCIwIj09PWVbbl0pO3JldHVybiBlLnN1YnN0cmluZygwLCIuIj09PWVbbl0/bjpuKzEpfWZ1bmN0aW9uIHBtKHQpe2lmKDA9PT10WzRdJiYwPT09dFs1XSl7aWYoMD09PXRbMV0mJjA9PT10WzJdKXJldHVybiAxPT09dFswXSYmMT09PXRbM10/IiI6YHNjYWxlKCR7cGYodFswXSl9ICR7cGYodFszXSl9KWA7aWYodFswXT09PXRbM10mJnRbMV09PT0tdFsyXSl7cmV0dXJuYHJvdGF0ZSgke3BmKDE4MCpNYXRoLmFjb3ModFswXSkvTWF0aC5QSSl9KWB9fWVsc2UgaWYoMT09PXRbMF0mJjA9PT10WzFdJiYwPT09dFsyXSYmMT09PXRbM10pcmV0dXJuYHRyYW5zbGF0ZSgke3BmKHRbNF0pfSAke3BmKHRbNV0pfSlgO3JldHVybmBtYXRyaXgoJHtwZih0WzBdKX0gJHtwZih0WzFdKX0gJHtwZih0WzJdKX0gJHtwZih0WzNdKX0gJHtwZih0WzRdKX0gJHtwZih0WzVdKX0pYH1sZXQgZD0wLHU9MCxwPTA7ZS5TVkdHcmFwaGljcz1jbGFzcyBTVkdHcmFwaGljc3tjb25zdHJ1Y3Rvcih0LGUpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07KDAsaS5kZXByZWNhdGVkKSgiVGhlIFNWRyBiYWNrLWVuZCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgKm1heSogYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiIpO3RoaXMuc3ZnRmFjdG9yeT1uZXcgaS5ET01TVkdGYWN0b3J5O3RoaXMuY3VycmVudD1uZXcgU1ZHRXh0cmFTdGF0ZTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1yLklERU5USVRZX01BVFJJWDt0aGlzLnRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZXh0cmFTdGFjaz1bXTt0aGlzLmNvbW1vbk9ianM9dDt0aGlzLm9ianM9ZTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMuZW1iZWRGb250cz0hMTt0aGlzLmVtYmVkZGVkRm9udHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNzc1N0eWxlPW51bGw7dGhpcy5mb3JjZURhdGFTY2hlbWE9ISFuO3RoaXMuX29wZXJhdG9ySWRNYXBwaW5nPVtdO2Zvcihjb25zdCB0IGluIHIuT1BTKXRoaXMuX29wZXJhdG9ySWRNYXBwaW5nW3IuT1BTW3RdXT10fWdldE9iamVjdCh0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC5zdGFydHNXaXRoKCJnXyIpP3RoaXMuY29tbW9uT2Jqcy5nZXQodCk6dGhpcy5vYmpzLmdldCh0KTplfXNhdmUoKXt0aGlzLnRyYW5zZm9ybVN0YWNrLnB1c2godGhpcy50cmFuc2Zvcm1NYXRyaXgpO2NvbnN0IHQ9dGhpcy5jdXJyZW50O3RoaXMuZXh0cmFTdGFjay5wdXNoKHQpO3RoaXMuY3VycmVudD10LmNsb25lKCl9cmVzdG9yZSgpe3RoaXMudHJhbnNmb3JtTWF0cml4PXRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCk7dGhpcy5jdXJyZW50PXRoaXMuZXh0cmFTdGFjay5wb3AoKTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy50Z3JwPW51bGx9Z3JvdXAodCl7dGhpcy5zYXZlKCk7dGhpcy5leGVjdXRlT3BUcmVlKHQpO3RoaXMucmVzdG9yZSgpfWxvYWREZXBlbmRlbmNpZXModCl7Y29uc3QgZT10LmZuQXJyYXksbj10LmFyZ3NBcnJheTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0KyspaWYoZVt0XT09PXIuT1BTLmRlcGVuZGVuY3kpZm9yKGNvbnN0IGUgb2Ygblt0XSl7Y29uc3QgdD1lLnN0YXJ0c1dpdGgoImdfIik/dGhpcy5jb21tb25PYmpzOnRoaXMub2JqcyxuPW5ldyBQcm9taXNlKChuPT57dC5nZXQoZSxuKX0pKTt0aGlzLmN1cnJlbnQuZGVwZW5kZW5jaWVzLnB1c2gobil9cmV0dXJuIFByb21pc2UuYWxsKHRoaXMuY3VycmVudC5kZXBlbmRlbmNpZXMpfXRyYW5zZm9ybSh0LGUsbixpLHMsYSl7Y29uc3Qgbz1bdCxlLG4saSxzLGFdO3RoaXMudHJhbnNmb3JtTWF0cml4PXIuVXRpbC50cmFuc2Zvcm0odGhpcy50cmFuc2Zvcm1NYXRyaXgsbyk7dGhpcy50Z3JwPW51bGx9Z2V0U1ZHKHQsZSl7dGhpcy52aWV3cG9ydD1lO2NvbnN0IG49dGhpcy5faW5pdGlhbGl6ZShlKTtyZXR1cm4gdGhpcy5sb2FkRGVwZW5kZW5jaWVzKHQpLnRoZW4oKCgpPT57dGhpcy50cmFuc2Zvcm1NYXRyaXg9ci5JREVOVElUWV9NQVRSSVg7dGhpcy5leGVjdXRlT3BUcmVlKHRoaXMuY29udmVydE9wTGlzdCh0KSk7cmV0dXJuIG59KSl9Y29udmVydE9wTGlzdCh0KXtjb25zdCBlPXRoaXMuX29wZXJhdG9ySWRNYXBwaW5nLG49dC5hcmdzQXJyYXksaT10LmZuQXJyYXkscj1bXTtmb3IobGV0IHQ9MCxzPWkubGVuZ3RoO3Q8czt0Kyspe2NvbnN0IHM9aVt0XTtyLnB1c2goe2ZuSWQ6cyxmbjplW3NdLGFyZ3M6blt0XX0pfXJldHVybiBmdW5jdGlvbiBvcExpc3RUb1RyZWUodCl7bGV0IGU9W107Y29uc3Qgbj1bXTtmb3IoY29uc3QgaSBvZiB0KWlmKCJzYXZlIiE9PWkuZm4pInJlc3RvcmUiPT09aS5mbj9lPW4ucG9wKCk6ZS5wdXNoKGkpO2Vsc2V7ZS5wdXNoKHtmbklkOjkyLGZuOiJncm91cCIsaXRlbXM6W119KTtuLnB1c2goZSk7ZT1lLmF0KC0xKS5pdGVtc31yZXR1cm4gZX0ocil9ZXhlY3V0ZU9wVHJlZSh0KXtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWUuZm4sbj1lLmZuSWQsaT1lLmFyZ3M7c3dpdGNoKDB8bil7Y2FzZSByLk9QUy5iZWdpblRleHQ6dGhpcy5iZWdpblRleHQoKTticmVhaztjYXNlIHIuT1BTLmRlcGVuZGVuY3k6YnJlYWs7Y2FzZSByLk9QUy5zZXRMZWFkaW5nOnRoaXMuc2V0TGVhZGluZyhpKTticmVhaztjYXNlIHIuT1BTLnNldExlYWRpbmdNb3ZlVGV4dDp0aGlzLnNldExlYWRpbmdNb3ZlVGV4dChpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugci5PUFMuc2V0Rm9udDp0aGlzLnNldEZvbnQoaSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93VGV4dDpjYXNlIHIuT1BTLnNob3dTcGFjZWRUZXh0OnRoaXMuc2hvd1RleHQoaVswXSk7YnJlYWs7Y2FzZSByLk9QUy5lbmRUZXh0OnRoaXMuZW5kVGV4dCgpO2JyZWFrO2Nhc2Ugci5PUFMubW92ZVRleHQ6dGhpcy5tb3ZlVGV4dChpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugci5PUFMuc2V0Q2hhclNwYWNpbmc6dGhpcy5zZXRDaGFyU3BhY2luZyhpWzBdKTticmVhaztjYXNlIHIuT1BTLnNldFdvcmRTcGFjaW5nOnRoaXMuc2V0V29yZFNwYWNpbmcoaVswXSk7YnJlYWs7Y2FzZSByLk9QUy5zZXRIU2NhbGU6dGhpcy5zZXRIU2NhbGUoaVswXSk7YnJlYWs7Y2FzZSByLk9QUy5zZXRUZXh0TWF0cml4OnRoaXMuc2V0VGV4dE1hdHJpeChpWzBdLGlbMV0saVsyXSxpWzNdLGlbNF0saVs1XSk7YnJlYWs7Y2FzZSByLk9QUy5zZXRUZXh0UmlzZTp0aGlzLnNldFRleHRSaXNlKGlbMF0pO2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6dGhpcy5zZXRUZXh0UmVuZGVyaW5nTW9kZShpWzBdKTticmVhaztjYXNlIHIuT1BTLnNldExpbmVXaWR0aDp0aGlzLnNldExpbmVXaWR0aChpWzBdKTticmVhaztjYXNlIHIuT1BTLnNldExpbmVKb2luOnRoaXMuc2V0TGluZUpvaW4oaVswXSk7YnJlYWs7Y2FzZSByLk9QUy5zZXRMaW5lQ2FwOnRoaXMuc2V0TGluZUNhcChpWzBdKTticmVhaztjYXNlIHIuT1BTLnNldE1pdGVyTGltaXQ6dGhpcy5zZXRNaXRlckxpbWl0KGlbMF0pO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbFJHQkNvbG9yOnRoaXMuc2V0RmlsbFJHQkNvbG9yKGlbMF0saVsxXSxpWzJdKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOnRoaXMuc2V0U3Ryb2tlUkdCQ29sb3IoaVswXSxpWzFdLGlbMl0pO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JOOnRoaXMuc2V0U3Ryb2tlQ29sb3JOKGkpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yTjp0aGlzLnNldEZpbGxDb2xvck4oaSk7YnJlYWs7Y2FzZSByLk9QUy5zaGFkaW5nRmlsbDp0aGlzLnNoYWRpbmdGaWxsKGlbMF0pO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RGFzaDp0aGlzLnNldERhc2goaVswXSxpWzFdKTticmVhaztjYXNlIHIuT1BTLnNldFJlbmRlcmluZ0ludGVudDp0aGlzLnNldFJlbmRlcmluZ0ludGVudChpWzBdKTticmVhaztjYXNlIHIuT1BTLnNldEZsYXRuZXNzOnRoaXMuc2V0RmxhdG5lc3MoaVswXSk7YnJlYWs7Y2FzZSByLk9QUy5zZXRHU3RhdGU6dGhpcy5zZXRHU3RhdGUoaVswXSk7YnJlYWs7Y2FzZSByLk9QUy5maWxsOnRoaXMuZmlsbCgpO2JyZWFrO2Nhc2Ugci5PUFMuZW9GaWxsOnRoaXMuZW9GaWxsKCk7YnJlYWs7Y2FzZSByLk9QUy5zdHJva2U6dGhpcy5zdHJva2UoKTticmVhaztjYXNlIHIuT1BTLmZpbGxTdHJva2U6dGhpcy5maWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSByLk9QUy5lb0ZpbGxTdHJva2U6dGhpcy5lb0ZpbGxTdHJva2UoKTticmVhaztjYXNlIHIuT1BTLmNsaXA6dGhpcy5jbGlwKCJub256ZXJvIik7YnJlYWs7Y2FzZSByLk9QUy5lb0NsaXA6dGhpcy5jbGlwKCJldmVub2RkIik7YnJlYWs7Y2FzZSByLk9QUy5wYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6dGhpcy5wYWludFNvbGlkQ29sb3JJbWFnZU1hc2soKTticmVhaztjYXNlIHIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0OnRoaXMucGFpbnRJbWFnZVhPYmplY3QoaVswXSk7YnJlYWs7Y2FzZSByLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdDp0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGlbMF0pO2JyZWFrO2Nhc2Ugci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0OnRoaXMucGFpbnRJbWFnZU1hc2tYT2JqZWN0KGlbMF0pO2JyZWFrO2Nhc2Ugci5PUFMucGFpbnRGb3JtWE9iamVjdEJlZ2luOnRoaXMucGFpbnRGb3JtWE9iamVjdEJlZ2luKGlbMF0saVsxXSk7YnJlYWs7Y2FzZSByLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kOnRoaXMucGFpbnRGb3JtWE9iamVjdEVuZCgpO2JyZWFrO2Nhc2Ugci5PUFMuY2xvc2VQYXRoOnRoaXMuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSByLk9QUy5jbG9zZVN0cm9rZTp0aGlzLmNsb3NlU3Ryb2tlKCk7YnJlYWs7Y2FzZSByLk9QUy5jbG9zZUZpbGxTdHJva2U6dGhpcy5jbG9zZUZpbGxTdHJva2UoKTticmVhaztjYXNlIHIuT1BTLmNsb3NlRU9GaWxsU3Ryb2tlOnRoaXMuY2xvc2VFT0ZpbGxTdHJva2UoKTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lOnRoaXMubmV4dExpbmUoKTticmVhaztjYXNlIHIuT1BTLnRyYW5zZm9ybTp0aGlzLnRyYW5zZm9ybShpWzBdLGlbMV0saVsyXSxpWzNdLGlbNF0saVs1XSk7YnJlYWs7Y2FzZSByLk9QUy5jb25zdHJ1Y3RQYXRoOnRoaXMuY29uc3RydWN0UGF0aChpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugci5PUFMuZW5kUGF0aDp0aGlzLmVuZFBhdGgoKTticmVhaztjYXNlIDkyOnRoaXMuZ3JvdXAoZS5pdGVtcyk7YnJlYWs7ZGVmYXVsdDooMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIG9wZXJhdG9yICR7dH1gKX19fXNldFdvcmRTcGFjaW5nKHQpe3RoaXMuY3VycmVudC53b3JkU3BhY2luZz10fXNldENoYXJTcGFjaW5nKHQpe3RoaXMuY3VycmVudC5jaGFyU3BhY2luZz10fW5leHRMaW5lKCl7dGhpcy5tb3ZlVGV4dCgwLHRoaXMuY3VycmVudC5sZWFkaW5nKX1zZXRUZXh0TWF0cml4KHQsZSxuLGkscixzKXtjb25zdCBhPXRoaXMuY3VycmVudDthLnRleHRNYXRyaXg9YS5saW5lTWF0cml4PVt0LGUsbixpLHIsc107YS50ZXh0TWF0cml4U2NhbGU9TWF0aC5oeXBvdCh0LGUpO2EueD1hLmxpbmVYPTA7YS55PWEubGluZVk9MDthLnhjb29yZHM9W107YS55Y29vcmRzPVtdO2EudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1mYW1pbHkiLGEuZm9udEZhbWlseSk7YS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXNpemUiLGAke3BmKGEuZm9udFNpemUpfXB4YCk7YS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtYS55KSk7YS50eHRFbGVtZW50PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dGV4dCIpO2EudHh0RWxlbWVudC5hcHBlbmQoYS50c3Bhbil9YmVnaW5UZXh0KCl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7dC54PXQubGluZVg9MDt0Lnk9dC5saW5lWT0wO3QudGV4dE1hdHJpeD1yLklERU5USVRZX01BVFJJWDt0LmxpbmVNYXRyaXg9ci5JREVOVElUWV9NQVRSSVg7dC50ZXh0TWF0cml4U2NhbGU9MTt0LnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKTt0LnR4dEVsZW1lbnQ9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0ZXh0Iik7dC50eHRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIik7dC54Y29vcmRzPVtdO3QueWNvb3Jkcz1bXX1tb3ZlVGV4dCh0LGUpe2NvbnN0IG49dGhpcy5jdXJyZW50O24ueD1uLmxpbmVYKz10O24ueT1uLmxpbmVZKz1lO24ueGNvb3Jkcz1bXTtuLnljb29yZHM9W107bi50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7bi50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LWZhbWlseSIsbi5mb250RmFtaWx5KTtuLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc2l6ZSIsYCR7cGYobi5mb250U2l6ZSl9cHhgKTtuLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1uLnkpKX1zaG93VGV4dCh0KXtjb25zdCBlPXRoaXMuY3VycmVudCxuPWUuZm9udCxpPWUuZm9udFNpemU7aWYoMD09PWkpcmV0dXJuO2NvbnN0IGw9ZS5mb250U2l6ZVNjYWxlLGM9ZS5jaGFyU3BhY2luZyxoPWUud29yZFNwYWNpbmcsZD1lLmZvbnREaXJlY3Rpb24sdT1lLnRleHRIU2NhbGUqZCxwPW4udmVydGljYWwsZj1wPzE6LTEsZz1uLmRlZmF1bHRWTWV0cmljcyxtPWkqZS5mb250TWF0cml4WzBdO2xldCBiPTA7Zm9yKGNvbnN0IHIgb2YgdCl7aWYobnVsbD09PXIpe2IrPWQqaDtjb250aW51ZX1pZigibnVtYmVyIj09dHlwZW9mIHIpe2IrPWYqcippLzFlMztjb250aW51ZX1jb25zdCB0PShyLmlzU3BhY2U/aDowKStjLHM9ci5mb250Q2hhcjtsZXQgYSxvLHU9ci53aWR0aDtpZihwKXtsZXQgdDtjb25zdCBlPXIudm1ldHJpY3x8Zzt0PXIudm1ldHJpYz9lWzFdOi41KnU7dD0tdCptO2NvbnN0IG49ZVsyXSptO3U9ZT8tZVswXTp1O2E9dC9sO289KGIrbikvbH1lbHNle2E9Yi9sO289MH1pZihyLmlzSW5Gb250fHxuLm1pc3NpbmdGaWxlKXtlLnhjb29yZHMucHVzaChlLngrYSk7cCYmZS55Y29vcmRzLnB1c2goLWUueStvKTtlLnRzcGFuLnRleHRDb250ZW50Kz1zfWIrPXA/dSptLXQqZDp1Km0rdCpkfWUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieCIsZS54Y29vcmRzLm1hcChwZikuam9pbigiICIpKTtwP2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZS55Y29vcmRzLm1hcChwZikuam9pbigiICIpKTplLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1lLnkpKTtwP2UueS09YjplLngrPWIqdTtlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtZmFtaWx5IixlLmZvbnRGYW1pbHkpO2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1zaXplIixgJHtwZihlLmZvbnRTaXplKX1weGApO2UuZm9udFN0eWxlIT09cyYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXN0eWxlIixlLmZvbnRTdHlsZSk7ZS5mb250V2VpZ2h0IT09YSYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXdlaWdodCIsZS5mb250V2VpZ2h0KTtjb25zdCB2PWUudGV4dFJlbmRlcmluZ01vZGUmci5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLO2lmKHY9PT1yLlRleHRSZW5kZXJpbmdNb2RlLkZJTEx8fHY9PT1yLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFKXtlLmZpbGxDb2xvciE9PW8mJmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsZS5maWxsQ29sb3IpO2UuZmlsbEFscGhhPDEmJmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1vcGFjaXR5IixlLmZpbGxBbHBoYSl9ZWxzZSBlLnRleHRSZW5kZXJpbmdNb2RlPT09ci5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSD9lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCJ0cmFuc3BhcmVudCIpOmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKTtpZih2PT09ci5UZXh0UmVuZGVyaW5nTW9kZS5TVFJPS0V8fHY9PT1yLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFKXtjb25zdCB0PTEvKGUudGV4dE1hdHJpeFNjYWxlfHwxKTt0aGlzLl9zZXRTdHJva2VBdHRyaWJ1dGVzKGUudHNwYW4sdCl9bGV0IHk9ZS50ZXh0TWF0cml4O2lmKDAhPT1lLnRleHRSaXNlKXt5PXkuc2xpY2UoKTt5WzVdKz1lLnRleHRSaXNlfWUudHh0RWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLGAke3BtKHkpfSBzY2FsZSgke3BmKHUpfSwgLTEpYCk7ZS50eHRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCJ4bWw6c3BhY2UiLCJwcmVzZXJ2ZSIpO2UudHh0RWxlbWVudC5hcHBlbmQoZS50c3Bhbik7ZS50eHRncnAuYXBwZW5kKGUudHh0RWxlbWVudCk7dGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQoZS50eHRFbGVtZW50KX1zZXRMZWFkaW5nTW92ZVRleHQodCxlKXt0aGlzLnNldExlYWRpbmcoLWUpO3RoaXMubW92ZVRleHQodCxlKX1hZGRGb250U3R5bGUodCl7aWYoIXQuZGF0YSl0aHJvdyBuZXcgRXJyb3IoJ2FkZEZvbnRTdHlsZTogTm8gZm9udCBkYXRhIGF2YWlsYWJsZSwgZW5zdXJlIHRoYXQgdGhlICJmb250RXh0cmFQcm9wZXJ0aWVzIiBBUEkgcGFyYW1ldGVyIGlzIHNldC4nKTtpZighdGhpcy5jc3NTdHlsZSl7dGhpcy5jc3NTdHlsZT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnN0eWxlIik7dGhpcy5jc3NTdHlsZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0eXBlIiwidGV4dC9jc3MiKTt0aGlzLmRlZnMuYXBwZW5kKHRoaXMuY3NzU3R5bGUpfWNvbnN0IGU9Y3JlYXRlT2JqZWN0VVJMKHQuZGF0YSx0Lm1pbWV0eXBlLHRoaXMuZm9yY2VEYXRhU2NoZW1hKTt0aGlzLmNzc1N0eWxlLnRleHRDb250ZW50Kz1gQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAiJHt0LmxvYWRlZE5hbWV9Ijsgc3JjOiB1cmwoJHtlfSk7IH1cbmB9c2V0Rm9udCh0KXtjb25zdCBlPXRoaXMuY3VycmVudCxuPXRoaXMuY29tbW9uT2Jqcy5nZXQodFswXSk7bGV0IGk9dFsxXTtlLmZvbnQ9bjtpZih0aGlzLmVtYmVkRm9udHMmJiFuLm1pc3NpbmdGaWxlJiYhdGhpcy5lbWJlZGRlZEZvbnRzW24ubG9hZGVkTmFtZV0pe3RoaXMuYWRkRm9udFN0eWxlKG4pO3RoaXMuZW1iZWRkZWRGb250c1tuLmxvYWRlZE5hbWVdPW59ZS5mb250TWF0cml4PW4uZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWDtsZXQgcz0ibm9ybWFsIjtuLmJsYWNrP3M9IjkwMCI6bi5ib2xkJiYocz0iYm9sZCIpO2NvbnN0IGE9bi5pdGFsaWM/Iml0YWxpYyI6Im5vcm1hbCI7aWYoaTwwKXtpPS1pO2UuZm9udERpcmVjdGlvbj0tMX1lbHNlIGUuZm9udERpcmVjdGlvbj0xO2UuZm9udFNpemU9aTtlLmZvbnRGYW1pbHk9bi5sb2FkZWROYW1lO2UuZm9udFdlaWdodD1zO2UuZm9udFN0eWxlPWE7ZS50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtZS55KSk7ZS54Y29vcmRzPVtdO2UueWNvb3Jkcz1bXX1lbmRUZXh0KCl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7aWYodC50ZXh0UmVuZGVyaW5nTW9kZSZyLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcmJnQudHh0RWxlbWVudD8uaGFzQ2hpbGROb2RlcygpKXt0LmVsZW1lbnQ9dC50eHRFbGVtZW50O3RoaXMuY2xpcCgibm9uemVybyIpO3RoaXMuZW5kUGF0aCgpfX1zZXRMaW5lV2lkdGgodCl7dD4wJiYodGhpcy5jdXJyZW50LmxpbmVXaWR0aD10KX1zZXRMaW5lQ2FwKHQpe3RoaXMuY3VycmVudC5saW5lQ2FwPWxbdF19c2V0TGluZUpvaW4odCl7dGhpcy5jdXJyZW50LmxpbmVKb2luPWNbdF19c2V0TWl0ZXJMaW1pdCh0KXt0aGlzLmN1cnJlbnQubWl0ZXJMaW1pdD10fXNldFN0cm9rZUFscGhhKHQpe3RoaXMuY3VycmVudC5zdHJva2VBbHBoYT10fXNldFN0cm9rZVJHQkNvbG9yKHQsZSxuKXt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9ci5VdGlsLm1ha2VIZXhDb2xvcih0LGUsbil9c2V0RmlsbEFscGhhKHQpe3RoaXMuY3VycmVudC5maWxsQWxwaGE9dH1zZXRGaWxsUkdCQ29sb3IodCxlLG4pe3RoaXMuY3VycmVudC5maWxsQ29sb3I9ci5VdGlsLm1ha2VIZXhDb2xvcih0LGUsbik7dGhpcy5jdXJyZW50LnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKTt0aGlzLmN1cnJlbnQueGNvb3Jkcz1bXTt0aGlzLmN1cnJlbnQueWNvb3Jkcz1bXX1zZXRTdHJva2VDb2xvck4odCl7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPXRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KX1zZXRGaWxsQ29sb3JOKHQpe3RoaXMuY3VycmVudC5maWxsQ29sb3I9dGhpcy5fbWFrZUNvbG9yTl9QYXR0ZXJuKHQpfXNoYWRpbmdGaWxsKHQpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0Om59PXRoaXMudmlld3BvcnQsaT1yLlV0aWwuaW52ZXJzZVRyYW5zZm9ybSh0aGlzLnRyYW5zZm9ybU1hdHJpeCksW3MsYSxvLGxdPXIuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwwLGUsbl0saSksYz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtjLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLHMpO2Muc2V0QXR0cmlidXRlTlMobnVsbCwieSIsYSk7Yy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIsby1zKTtjLnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsbC1hKTtjLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHRoaXMuX21ha2VTaGFkaW5nUGF0dGVybih0KSk7dGhpcy5jdXJyZW50LmZpbGxBbHBoYTwxJiZjLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtb3BhY2l0eSIsdGhpcy5jdXJyZW50LmZpbGxBbHBoYSk7dGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQoYyl9X21ha2VDb2xvck5fUGF0dGVybih0KXtyZXR1cm4iVGlsaW5nUGF0dGVybiI9PT10WzBdP3RoaXMuX21ha2VUaWxpbmdQYXR0ZXJuKHQpOnRoaXMuX21ha2VTaGFkaW5nUGF0dGVybih0KX1fbWFrZVRpbGluZ1BhdHRlcm4odCl7Y29uc3QgZT10WzFdLG49dFsyXSxpPXRbM118fHIuSURFTlRJVFlfTUFUUklYLFtzLGEsbyxsXT10WzRdLGM9dFs1XSxoPXRbNl0sZD10WzddLHU9InNoYWRpbmciK3ArKyxbZixnLG0sYl09ci5VdGlsLm5vcm1hbGl6ZVJlY3QoWy4uLnIuVXRpbC5hcHBseVRyYW5zZm9ybShbcyxhXSxpKSwuLi5yLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW28sbF0saSldKSxbdix5XT1yLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoaSksQT1jKnYsXz1oKnksUz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnBhdHRlcm4iKTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIix1KTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsInBhdHRlcm5Vbml0cyIsInVzZXJTcGFjZU9uVXNlIik7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIsQSk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLF8pO1Muc2V0QXR0cmlidXRlTlMobnVsbCwieCIsYCR7Zn1gKTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGAke2d9YCk7Y29uc3QgRT10aGlzLnN2Zyx4PXRoaXMudHJhbnNmb3JtTWF0cml4LHc9dGhpcy5jdXJyZW50LmZpbGxDb2xvcixDPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcixUPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUobS1mLGItZyk7dGhpcy5zdmc9VDt0aGlzLnRyYW5zZm9ybU1hdHJpeD1pO2lmKDI9PT1kKXtjb25zdCB0PXIuVXRpbC5tYWtlSGV4Q29sb3IoLi4uZSk7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj10O3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj10fXRoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QobikpO3RoaXMuc3ZnPUU7dGhpcy50cmFuc2Zvcm1NYXRyaXg9eDt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXc7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPUM7Uy5hcHBlbmQoVC5jaGlsZE5vZGVzWzBdKTt0aGlzLmRlZnMuYXBwZW5kKFMpO3JldHVybmB1cmwoIyR7dX0pYH1fbWFrZVNoYWRpbmdQYXR0ZXJuKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dGhpcy5vYmpzLmdldCh0KSk7c3dpdGNoKHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOmNvbnN0IGU9InNoYWRpbmciK3ArKyxuPXRbM107bGV0IGk7c3dpdGNoKHRbMV0pe2Nhc2UiYXhpYWwiOmNvbnN0IG49dFs0XSxyPXRbNV07aT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmxpbmVhckdyYWRpZW50Iik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsZSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJncmFkaWVudFVuaXRzIiwidXNlclNwYWNlT25Vc2UiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngxIixuWzBdKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsInkxIixuWzFdKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngyIixyWzBdKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsInkyIixyWzFdKTticmVhaztjYXNlInJhZGlhbCI6Y29uc3Qgcz10WzRdLGE9dFs1XSxvPXRbNl0sbD10WzddO2k9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyYWRpYWxHcmFkaWVudCIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaWQiLGUpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiZ3JhZGllbnRVbml0cyIsInVzZXJTcGFjZU9uVXNlIik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjeCIsYVswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjeSIsYVsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJyIixsKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImZ4IixzWzBdKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImZ5IixzWzFdKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImZyIixvKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBSYWRpYWxBeGlhbCB0eXBlOiAke3RbMV19YCl9Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3QgZT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnN0b3AiKTtlLnNldEF0dHJpYnV0ZU5TKG51bGwsIm9mZnNldCIsdFswXSk7ZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdG9wLWNvbG9yIix0WzFdKTtpLmFwcGVuZChlKX10aGlzLmRlZnMuYXBwZW5kKGkpO3JldHVybmB1cmwoIyR7ZX0pYDtjYXNlIk1lc2giOigwLHIud2FybikoIlVuaW1wbGVtZW50ZWQgcGF0dGVybiBNZXNoIik7cmV0dXJuIG51bGw7Y2FzZSJEdW1teSI6cmV0dXJuImhvdHBpbmsiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIElSIHR5cGU6ICR7dFswXX1gKX19c2V0RGFzaCh0LGUpe3RoaXMuY3VycmVudC5kYXNoQXJyYXk9dDt0aGlzLmN1cnJlbnQuZGFzaFBoYXNlPWV9Y29uc3RydWN0UGF0aCh0LGUpe2NvbnN0IG49dGhpcy5jdXJyZW50O2xldCBpPW4ueCxzPW4ueSxhPVtdLG89MDtmb3IoY29uc3QgbiBvZiB0KXN3aXRjaCgwfG4pe2Nhc2Ugci5PUFMucmVjdGFuZ2xlOmk9ZVtvKytdO3M9ZVtvKytdO2NvbnN0IHQ9aStlW28rK10sbj1zK2VbbysrXTthLnB1c2goIk0iLHBmKGkpLHBmKHMpLCJMIixwZih0KSxwZihzKSwiTCIscGYodCkscGYobiksIkwiLHBmKGkpLHBmKG4pLCJaIik7YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86aT1lW28rK107cz1lW28rK107YS5wdXNoKCJNIixwZihpKSxwZihzKSk7YnJlYWs7Y2FzZSByLk9QUy5saW5lVG86aT1lW28rK107cz1lW28rK107YS5wdXNoKCJMIixwZihpKSxwZihzKSk7YnJlYWs7Y2FzZSByLk9QUy5jdXJ2ZVRvOmk9ZVtvKzRdO3M9ZVtvKzVdO2EucHVzaCgiQyIscGYoZVtvXSkscGYoZVtvKzFdKSxwZihlW28rMl0pLHBmKGVbbyszXSkscGYoaSkscGYocykpO28rPTY7YnJlYWs7Y2FzZSByLk9QUy5jdXJ2ZVRvMjphLnB1c2goIkMiLHBmKGkpLHBmKHMpLHBmKGVbb10pLHBmKGVbbysxXSkscGYoZVtvKzJdKSxwZihlW28rM10pKTtpPWVbbysyXTtzPWVbbyszXTtvKz00O2JyZWFrO2Nhc2Ugci5PUFMuY3VydmVUbzM6aT1lW28rMl07cz1lW28rM107YS5wdXNoKCJDIixwZihlW29dKSxwZihlW28rMV0pLHBmKGkpLHBmKHMpLHBmKGkpLHBmKHMpKTtvKz00O2JyZWFrO2Nhc2Ugci5PUFMuY2xvc2VQYXRoOmEucHVzaCgiWiIpfWE9YS5qb2luKCIgIik7aWYobi5wYXRoJiZ0Lmxlbmd0aD4wJiZ0WzBdIT09ci5PUFMucmVjdGFuZ2xlJiZ0WzBdIT09ci5PUFMubW92ZVRvKWE9bi5wYXRoLmdldEF0dHJpYnV0ZU5TKG51bGwsImQiKSthO2Vsc2V7bi5wYXRoPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cGF0aCIpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKG4ucGF0aCl9bi5wYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLGEpO24ucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO24uZWxlbWVudD1uLnBhdGg7bi5zZXRDdXJyZW50UG9pbnQoaSxzKX1lbmRQYXRoKCl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7dC5wYXRoPW51bGw7aWYoIXRoaXMucGVuZGluZ0NsaXApcmV0dXJuO2lmKCF0LmVsZW1lbnQpe3RoaXMucGVuZGluZ0NsaXA9bnVsbDtyZXR1cm59Y29uc3QgZT0iY2xpcHBhdGgiK2QrKyxuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6Y2xpcFBhdGgiKTtuLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixlKTtuLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIscG0odGhpcy50cmFuc2Zvcm1NYXRyaXgpKTtjb25zdCBpPXQuZWxlbWVudC5jbG9uZU5vZGUoITApOyJldmVub2RkIj09PXRoaXMucGVuZGluZ0NsaXA/aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjbGlwLXJ1bGUiLCJldmVub2RkIik6aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjbGlwLXJ1bGUiLCJub256ZXJvIik7dGhpcy5wZW5kaW5nQ2xpcD1udWxsO24uYXBwZW5kKGkpO3RoaXMuZGVmcy5hcHBlbmQobik7aWYodC5hY3RpdmVDbGlwVXJsKXt0LmNsaXBHcm91cD1udWxsO2Zvcihjb25zdCB0IG9mIHRoaXMuZXh0cmFTdGFjayl0LmNsaXBHcm91cD1udWxsO24uc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0LmFjdGl2ZUNsaXBVcmwpfXQuYWN0aXZlQ2xpcFVybD1gdXJsKCMke2V9KWA7dGhpcy50Z3JwPW51bGx9Y2xpcCh0KXt0aGlzLnBlbmRpbmdDbGlwPXR9Y2xvc2VQYXRoKCl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7aWYodC5wYXRoKXtjb25zdCBlPWAke3QucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIil9WmA7dC5wYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLGUpfX1zZXRMZWFkaW5nKHQpe3RoaXMuY3VycmVudC5sZWFkaW5nPS10fXNldFRleHRSaXNlKHQpe3RoaXMuY3VycmVudC50ZXh0UmlzZT10fXNldFRleHRSZW5kZXJpbmdNb2RlKHQpe3RoaXMuY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZT10fXNldEhTY2FsZSh0KXt0aGlzLmN1cnJlbnQudGV4dEhTY2FsZT10LzEwMH1zZXRSZW5kZXJpbmdJbnRlbnQodCl7fXNldEZsYXRuZXNzKHQpe31zZXRHU3RhdGUodCl7Zm9yKGNvbnN0W2Usbl1vZiB0KXN3aXRjaChlKXtjYXNlIkxXIjp0aGlzLnNldExpbmVXaWR0aChuKTticmVhaztjYXNlIkxDIjp0aGlzLnNldExpbmVDYXAobik7YnJlYWs7Y2FzZSJMSiI6dGhpcy5zZXRMaW5lSm9pbihuKTticmVhaztjYXNlIk1MIjp0aGlzLnNldE1pdGVyTGltaXQobik7YnJlYWs7Y2FzZSJEIjp0aGlzLnNldERhc2goblswXSxuWzFdKTticmVhaztjYXNlIlJJIjp0aGlzLnNldFJlbmRlcmluZ0ludGVudChuKTticmVhaztjYXNlIkZMIjp0aGlzLnNldEZsYXRuZXNzKG4pO2JyZWFrO2Nhc2UiRm9udCI6dGhpcy5zZXRGb250KG4pO2JyZWFrO2Nhc2UiQ0EiOnRoaXMuc2V0U3Ryb2tlQWxwaGEobik7YnJlYWs7Y2FzZSJjYSI6dGhpcy5zZXRGaWxsQWxwaGEobik7YnJlYWs7ZGVmYXVsdDooMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgJHtlfWApfX1maWxsKCl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7aWYodC5lbGVtZW50KXt0LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdC5maWxsQ29sb3IpO3QuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLHQuZmlsbEFscGhhKTt0aGlzLmVuZFBhdGgoKX19c3Ryb2tlKCl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7aWYodC5lbGVtZW50KXt0aGlzLl9zZXRTdHJva2VBdHRyaWJ1dGVzKHQuZWxlbWVudCk7dC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCJub25lIik7dGhpcy5lbmRQYXRoKCl9fV9zZXRTdHJva2VBdHRyaWJ1dGVzKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxO2NvbnN0IG49dGhpcy5jdXJyZW50O2xldCBpPW4uZGFzaEFycmF5OzEhPT1lJiZpLmxlbmd0aD4wJiYoaT1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUqdH0pKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UiLG4uc3Ryb2tlQ29sb3IpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLW9wYWNpdHkiLG4uc3Ryb2tlQWxwaGEpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLW1pdGVybGltaXQiLHBmKG4ubWl0ZXJMaW1pdCkpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWxpbmVjYXAiLG4ubGluZUNhcCk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbGluZWpvaW4iLG4ubGluZUpvaW4pO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLXdpZHRoIixwZihlKm4ubGluZVdpZHRoKSsicHgiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZS1kYXNoYXJyYXkiLGkubWFwKHBmKS5qb2luKCIgIikpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWRhc2hvZmZzZXQiLHBmKGUqbi5kYXNoUGhhc2UpKyJweCIpfWVvRmlsbCgpe3RoaXMuY3VycmVudC5lbGVtZW50Py5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLXJ1bGUiLCJldmVub2RkIik7dGhpcy5maWxsKCl9ZmlsbFN0cm9rZSgpe3RoaXMuc3Ryb2tlKCk7dGhpcy5maWxsKCl9ZW9GaWxsU3Ryb2tlKCl7dGhpcy5jdXJyZW50LmVsZW1lbnQ/LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsImV2ZW5vZGQiKTt0aGlzLmZpbGxTdHJva2UoKX1jbG9zZVN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5zdHJva2UoKX1jbG9zZUZpbGxTdHJva2UoKXt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlRU9GaWxsU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLmVvRmlsbFN0cm9rZSgpfXBhaW50U29saWRDb2xvckltYWdlTWFzaygpe2NvbnN0IHQ9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIiwiMXB4Iik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLCIxcHgiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHRoaXMuY3VycmVudC5maWxsQ29sb3IpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKHQpfXBhaW50SW1hZ2VYT2JqZWN0KHQpe2NvbnN0IGU9dGhpcy5nZXRPYmplY3QodCk7ZT90aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUpOigwLHIud2FybikoYERlcGVuZGVudCBpbWFnZSB3aXRoIG9iamVjdCBJRCAke3R9IGlzIG5vdCByZWFkeSB5ZXRgKX1wYWludElubGluZUltYWdlWE9iamVjdCh0LGUpe2NvbnN0IG49dC53aWR0aCxpPXQuaGVpZ2h0LHI9aCh0LHRoaXMuZm9yY2VEYXRhU2NoZW1hLCEhZSkscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtzLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLCIwIik7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IiwiMCIpO3Muc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLHBmKG4pKTtzLnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIscGYoaSkpO3RoaXMuY3VycmVudC5lbGVtZW50PXM7dGhpcy5jbGlwKCJub256ZXJvIik7Y29uc3QgYT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmltYWdlIik7YS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOmhyZWYiLHIpO2Euc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTthLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1pKSk7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYobikrInB4Iik7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKGkpKyJweCIpO2Euc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixgc2NhbGUoJHtwZigxL24pfSAke3BmKC0xL2kpfSlgKTtlP2UuYXBwZW5kKGEpOnRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGEpfXBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KXtjb25zdCBlPXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KTtpZihlLmJpdG1hcCl7KDAsci53YXJuKSgicGFpbnRJbWFnZU1hc2tYT2JqZWN0OiBJbWFnZUJpdG1hcCBzdXBwb3J0IGlzIG5vdCBpbXBsZW1lbnRlZCwgZW5zdXJlIHRoYXQgdGhlIGBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZGAgQVBJIHBhcmFtZXRlciBpcyBkaXNhYmxlZC4iKTtyZXR1cm59Y29uc3Qgbj10aGlzLmN1cnJlbnQsaT1lLndpZHRoLHM9ZS5oZWlnaHQsYT1uLmZpbGxDb2xvcjtuLm1hc2tJZD0ibWFzayIrdSsrO2NvbnN0IG89dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzptYXNrIik7by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsbi5tYXNrSWQpO2NvbnN0IGw9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixwZihpKSk7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKHMpKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLGEpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwibWFzayIsYHVybCgjJHtuLm1hc2tJZH0pYCk7dGhpcy5kZWZzLmFwcGVuZChvKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChsKTt0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUsbyl9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmNj09PXQubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7aWYoZSl7Y29uc3QgdD1lWzJdLWVbMF0sbj1lWzNdLWVbMV0saT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGVbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZVsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYodCkpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihuKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9aTt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19cGFpbnRGb3JtWE9iamVjdEVuZCgpe31faW5pdGlhbGl6ZSh0KXtjb25zdCBlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCx0LmhlaWdodCksbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmRlZnMiKTtlLmFwcGVuZChuKTt0aGlzLmRlZnM9bjtjb25zdCBpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixwbSh0LnRyYW5zZm9ybSkpO2UuYXBwZW5kKGkpO3RoaXMuc3ZnPWk7cmV0dXJuIGV9X2Vuc3VyZUNsaXBHcm91cCgpe2lmKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKXtjb25zdCB0PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybCk7dGhpcy5zdmcuYXBwZW5kKHQpO3RoaXMuY3VycmVudC5jbGlwR3JvdXA9dH1yZXR1cm4gdGhpcy5jdXJyZW50LmNsaXBHcm91cH1fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKXtpZighdGhpcy50Z3JwKXt0aGlzLnRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIik7dGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIscG0odGhpcy50cmFuc2Zvcm1NYXRyaXgpKTt0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybD90aGlzLl9lbnN1cmVDbGlwR3JvdXAoKS5hcHBlbmQodGhpcy50Z3JwKTp0aGlzLnN2Zy5hcHBlbmQodGhpcy50Z3JwKX1yZXR1cm4gdGhpcy50Z3JwfX19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7dmFyIGk9bigzKSxyPW4oMTg3KSxzPW4oMTkyKTtpKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2dyb3VwOmZ1bmN0aW9uIGdyb3VwKHQpe3JldHVybiByKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7cygiZ3JvdXAiKX0sKHQsZSxuKT0+e3ZhciBpPW4oOTkpLHI9bigxNCkscz1uKDEzKSxhPW4oNDApLG89bigxOCksbD1uKDY0KSxjPW4oMTg4KSxoPW4oMTA4KSxkPUFycmF5LHU9cihbXS5wdXNoKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scil7Zm9yKHZhciBwLGYsZyxtPWEodCksYj1zKG0pLHY9aShlLG4pLHk9YyhudWxsKSxBPWwoYiksXz0wO0E+XztfKyspe2c9YltfXTsoZj1vKHYoZyxfLG0pKSlpbiB5P3UoeVtmXSxnKTp5W2ZdPVtnXX1pZihyJiYocD1yKG0pKSE9PWQpZm9yKGYgaW4geSl5W2ZdPWgocCx5W2ZdKTtyZXR1cm4geX19LCh0LGUsbik9Pnt2YXIgaSxyPW4oNDcpLHM9bigxODkpLGE9big2Niksbz1uKDU1KSxsPW4oMTkxKSxjPW4oNDMpLGg9big1NCksZD0icHJvdG90eXBlIix1PSJzY3JpcHQiLHA9aCgiSUVfUFJPVE8iKSxFbXB0eUNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSxzY3JpcHRUYWc9ZnVuY3Rpb24odCl7cmV0dXJuIjwiK3UrIj4iK3QrIjwvIit1KyI+In0sTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWD1mdW5jdGlvbih0KXt0LndyaXRlKHNjcmlwdFRhZygiIikpO3QuY2xvc2UoKTt2YXIgZT10LnBhcmVudFdpbmRvdy5PYmplY3Q7dD1udWxsO3JldHVybiBlfSxOdWxsUHJvdG9PYmplY3Q9ZnVuY3Rpb24oKXt0cnl7aT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaCh0KXt9TnVsbFByb3RvT2JqZWN0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZpP051bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoaSk6ZnVuY3Rpb24oKXt2YXIgdCxlPWMoImlmcmFtZSIpLG49ImphdmEiK3UrIjoiO2Uuc3R5bGUuZGlzcGxheT0ibm9uZSI7bC5hcHBlbmRDaGlsZChlKTtlLnNyYz1TdHJpbmcobik7KHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7dC53cml0ZShzY3JpcHRUYWcoImRvY3VtZW50LkY9T2JqZWN0IikpO3QuY2xvc2UoKTtyZXR1cm4gdC5GfSgpOk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoaSk7Zm9yKHZhciB0PWEubGVuZ3RoO3QtLTspZGVsZXRlIE51bGxQcm90b09iamVjdFtkXVthW3RdXTtyZXR1cm4gTnVsbFByb3RvT2JqZWN0KCl9O29bcF09ITA7dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZSh0LGUpe3ZhciBuO2lmKG51bGwhPT10KXtFbXB0eUNvbnN0cnVjdG9yW2RdPXIodCk7bj1uZXcgRW1wdHlDb25zdHJ1Y3RvcjtFbXB0eUNvbnN0cnVjdG9yW2RdPW51bGw7bltwXT10fWVsc2Ugbj1OdWxsUHJvdG9PYmplY3QoKTtyZXR1cm4gdm9pZCAwPT09ZT9uOnMuZihuLGUpfX0sKHQsZSxuKT0+e3ZhciBpPW4oNikscj1uKDQ2KSxzPW4oNDUpLGE9big0Nyksbz1uKDEyKSxsPW4oMTkwKTtlLmY9aSYmIXI/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0LGUpe2EodCk7Zm9yKHZhciBuLGk9byhlKSxyPWwoZSksYz1yLmxlbmd0aCxoPTA7Yz5oOylzLmYodCxuPXJbaCsrXSxpW25dKTtyZXR1cm4gdH19LCh0LGUsbik9Pnt2YXIgaT1uKDU5KSxyPW4oNjYpO3QuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ga2V5cyh0KXtyZXR1cm4gaSh0LHIpfX0sKHQsZSxuKT0+e3ZhciBpPW4oMjQpO3QuZXhwb3J0cz1pKCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIpfSwodCxlLG4pPT57dmFyIGk9bigzNCkscj1uKDE4OCkscz1uKDQ1KS5mLGE9aSgidW5zY29wYWJsZXMiKSxvPUFycmF5LnByb3RvdHlwZTtudWxsPT1vW2FdJiZzKG8sYSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnIobnVsbCl9KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7b1thXVt0XT0hMH19LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuWGZhVGV4dD12b2lkIDA7big4OSk7Y2xhc3MgWGZhVGV4dHtzdGF0aWMgdGV4dENvbnRlbnQodCl7Y29uc3QgZT1bXSxuPXtpdGVtczplLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfTshZnVuY3Rpb24gd2Fsayh0KXtpZighdClyZXR1cm47bGV0IG49bnVsbDtjb25zdCBpPXQubmFtZTtpZigiI3RleHQiPT09aSluPXQudmFsdWU7ZWxzZXtpZighWGZhVGV4dC5zaG91bGRCdWlsZFRleHQoaSkpcmV0dXJuO3Q/LmF0dHJpYnV0ZXM/LnRleHRDb250ZW50P249dC5hdHRyaWJ1dGVzLnRleHRDb250ZW50OnQudmFsdWUmJihuPXQudmFsdWUpfW51bGwhPT1uJiZlLnB1c2goe3N0cjpufSk7aWYodC5jaGlsZHJlbilmb3IoY29uc3QgZSBvZiB0LmNoaWxkcmVuKXdhbGsoZSl9KHQpO3JldHVybiBufXN0YXRpYyBzaG91bGRCdWlsZFRleHQodCl7cmV0dXJuISgidGV4dGFyZWEiPT09dHx8ImlucHV0Ij09PXR8fCJvcHRpb24iPT09dHx8InNlbGVjdCI9PT10KX19ZS5YZmFUZXh0PVhmYVRleHR9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuVGV4dExheWVyUmVuZGVyVGFzaz12b2lkIDA7ZS5yZW5kZXJUZXh0TGF5ZXI9ZnVuY3Rpb24gcmVuZGVyVGV4dExheWVyKHQpe2lmKCF0LnRleHRDb250ZW50U291cmNlJiYodC50ZXh0Q29udGVudHx8dC50ZXh0Q29udGVudFN0cmVhbSkpeygwLHIuZGVwcmVjYXRlZCkoIlRoZSBUZXh0TGF5ZXJSZW5kZXIgYHRleHRDb250ZW50YC9gdGV4dENvbnRlbnRTdHJlYW1gIHBhcmFtZXRlcnMgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUsIHBsZWFzZSB1c2UgYHRleHRDb250ZW50U291cmNlYCBpbnN0ZWFkLiIpO3QudGV4dENvbnRlbnRTb3VyY2U9dC50ZXh0Q29udGVudHx8dC50ZXh0Q29udGVudFN0cmVhbX1jb25zdHtjb250YWluZXI6ZSx2aWV3cG9ydDpufT10LGk9Z2V0Q29tcHV0ZWRTdHlsZShlKSxzPWkuZ2V0UHJvcGVydHlWYWx1ZSgidmlzaWJpbGl0eSIpLGE9cGFyc2VGbG9hdChpLmdldFByb3BlcnR5VmFsdWUoIi0tc2NhbGUtZmFjdG9yIikpOyJ2aXNpYmxlIj09PXMmJighYXx8TWF0aC5hYnMoYS1uLnNjYWxlKT4xZS01KSYmY29uc29sZS5lcnJvcigiVGhlIGAtLXNjYWxlLWZhY3RvcmAgQ1NTLXZhcmlhYmxlIG11c3QgYmUgc2V0LCB0byB0aGUgc2FtZSB2YWx1ZSBhcyBgdmlld3BvcnQuc2NhbGVgLCBlaXRoZXIgb24gdGhlIGBjb250YWluZXJgLWVsZW1lbnQgaXRzZWxmIG9yIGhpZ2hlciB1cCBpbiB0aGUgRE9NLiIpO2NvbnN0IG89bmV3IFRleHRMYXllclJlbmRlclRhc2sodCk7by5fcmVuZGVyKCk7cmV0dXJuIG99O2UudXBkYXRlVGV4dExheWVyPWZ1bmN0aW9uIHVwZGF0ZVRleHRMYXllcih0KXtsZXR7Y29udGFpbmVyOmUsdmlld3BvcnQ6bix0ZXh0RGl2czppLHRleHREaXZQcm9wZXJ0aWVzOnMsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6YSxtdXN0Um90YXRlOm89ITAsbXVzdFJlc2NhbGU6bD0hMH09dDtvJiYoMCxyLnNldExheWVyRGltZW5zaW9ucykoZSx7cm90YXRpb246bi5yb3RhdGlvbn0pO2lmKGwpe2NvbnN0IHQ9Z2V0Q3R4KDAsYSksZT17cHJldkZvbnRTaXplOm51bGwscHJldkZvbnRGYW1pbHk6bnVsbCxkaXY6bnVsbCxzY2FsZTpuLnNjYWxlKihnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpLHByb3BlcnRpZXM6bnVsbCxjdHg6dH07Zm9yKGNvbnN0IHQgb2YgaSl7ZS5wcm9wZXJ0aWVzPXMuZ2V0KHQpO2UuZGl2PXQ7bGF5b3V0KGUpfX19O24oODkpO24oMik7dmFyIGk9bigxKSxyPW4oMTY3KTtjb25zdCBzPTMwLGE9Ljgsbz1uZXcgTWFwO2Z1bmN0aW9uIGdldEN0eCh0LGUpe2xldCBuO2lmKGUmJmkuRmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsdCkuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pO2Vsc2V7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtlLndpZHRoPWUuaGVpZ2h0PXQ7bj1lLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITF9KX1yZXR1cm4gbn1mdW5jdGlvbiBhcHBlbmRUZXh0KHQsZSxuKXtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxsPXthbmdsZTowLGNhbnZhc1dpZHRoOjAsaGFzVGV4dDoiIiE9PWUuc3RyLGhhc0VPTDplLmhhc0VPTCxmb250U2l6ZTowfTt0Ll90ZXh0RGl2cy5wdXNoKHIpO2NvbnN0IGM9aS5VdGlsLnRyYW5zZm9ybSh0Ll90cmFuc2Zvcm0sZS50cmFuc2Zvcm0pO2xldCBoPU1hdGguYXRhbjIoY1sxXSxjWzBdKTtjb25zdCBkPW5bZS5mb250TmFtZV07ZC52ZXJ0aWNhbCYmKGgrPU1hdGguUEkvMik7Y29uc3QgdT1NYXRoLmh5cG90KGNbMl0sY1szXSkscD11KmZ1bmN0aW9uIGdldEFzY2VudCh0LGUpe2NvbnN0IG49by5nZXQodCk7aWYobilyZXR1cm4gbjtjb25zdCBpPWdldEN0eChzLGUpO2kuZm9udD1gJHtzfXB4ICR7dH1gO2NvbnN0IHI9aS5tZWFzdXJlVGV4dCgiIik7bGV0IGw9ci5mb250Qm91bmRpbmdCb3hBc2NlbnQsYz1NYXRoLmFicyhyLmZvbnRCb3VuZGluZ0JveERlc2NlbnQpO2lmKGwpe2NvbnN0IGU9bC8obCtjKTtvLnNldCh0LGUpO2kuY2FudmFzLndpZHRoPWkuY2FudmFzLmhlaWdodD0wO3JldHVybiBlfWkuc3Ryb2tlU3R5bGU9InJlZCI7aS5jbGVhclJlY3QoMCwwLHMscyk7aS5zdHJva2VUZXh0KCJnIiwwLDApO2xldCBoPWkuZ2V0SW1hZ2VEYXRhKDAsMCxzLHMpLmRhdGE7Yz0wO2ZvcihsZXQgdD1oLmxlbmd0aC0xLTM7dD49MDt0LT00KWlmKGhbdF0+MCl7Yz1NYXRoLmNlaWwodC80L3MpO2JyZWFrfWkuY2xlYXJSZWN0KDAsMCxzLHMpO2kuc3Ryb2tlVGV4dCgiQSIsMCxzKTtoPWkuZ2V0SW1hZ2VEYXRhKDAsMCxzLHMpLmRhdGE7bD0wO2ZvcihsZXQgdD0wLGU9aC5sZW5ndGg7dDxlO3QrPTQpaWYoaFt0XT4wKXtsPXMtTWF0aC5mbG9vcih0LzQvcyk7YnJlYWt9aS5jYW52YXMud2lkdGg9aS5jYW52YXMuaGVpZ2h0PTA7aWYobCl7Y29uc3QgZT1sLyhsK2MpO28uc2V0KHQsZSk7cmV0dXJuIGV9by5zZXQodCxhKTtyZXR1cm4gYX0oZC5mb250RmFtaWx5LHQuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKTtsZXQgZixnO2lmKDA9PT1oKXtmPWNbNF07Zz1jWzVdLXB9ZWxzZXtmPWNbNF0rcCpNYXRoLnNpbihoKTtnPWNbNV0tcCpNYXRoLmNvcyhoKX1jb25zdCBtPSJjYWxjKHZhcigtLXNjYWxlLWZhY3RvcikqIixiPXIuc3R5bGU7aWYodC5fY29udGFpbmVyPT09dC5fcm9vdENvbnRhaW5lcil7Yi5sZWZ0PWAkeygxMDAqZi90Ll9wYWdlV2lkdGgpLnRvRml4ZWQoMil9JWA7Yi50b3A9YCR7KDEwMCpnL3QuX3BhZ2VIZWlnaHQpLnRvRml4ZWQoMil9JWB9ZWxzZXtiLmxlZnQ9YCR7bX0ke2YudG9GaXhlZCgyKX1weClgO2IudG9wPWAke219JHtnLnRvRml4ZWQoMil9cHgpYH1iLmZvbnRTaXplPWAke219JHt1LnRvRml4ZWQoMil9cHgpYDtiLmZvbnRGYW1pbHk9ZC5mb250RmFtaWx5O2wuZm9udFNpemU9dTtyLnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpO3IudGV4dENvbnRlbnQ9ZS5zdHI7ci5kaXI9ZS5kaXI7dC5fZm9udEluc3BlY3RvckVuYWJsZWQmJihyLmRhdGFzZXQuZm9udE5hbWU9ZS5mb250TmFtZSk7MCE9PWgmJihsLmFuZ2xlPWgqKDE4MC9NYXRoLlBJKSk7bGV0IHY9ITE7aWYoZS5zdHIubGVuZ3RoPjEpdj0hMDtlbHNlIGlmKCIgIiE9PWUuc3RyJiZlLnRyYW5zZm9ybVswXSE9PWUudHJhbnNmb3JtWzNdKXtjb25zdCB0PU1hdGguYWJzKGUudHJhbnNmb3JtWzBdKSxuPU1hdGguYWJzKGUudHJhbnNmb3JtWzNdKTt0IT09biYmTWF0aC5tYXgodCxuKS9NYXRoLm1pbih0LG4pPjEuNSYmKHY9ITApfXYmJihsLmNhbnZhc1dpZHRoPWQudmVydGljYWw/ZS5oZWlnaHQ6ZS53aWR0aCk7dC5fdGV4dERpdlByb3BlcnRpZXMuc2V0KHIsbCk7dC5faXNSZWFkYWJsZVN0cmVhbSYmdC5fbGF5b3V0VGV4dChyKX1mdW5jdGlvbiBsYXlvdXQodCl7Y29uc3R7ZGl2OmUsc2NhbGU6bixwcm9wZXJ0aWVzOmksY3R4OnIscHJldkZvbnRTaXplOnMscHJldkZvbnRGYW1pbHk6YX09dCx7c3R5bGU6b309ZTtsZXQgbD0iIjtpZigwIT09aS5jYW52YXNXaWR0aCYmaS5oYXNUZXh0KXtjb25zdHtmb250RmFtaWx5OmN9PW8se2NhbnZhc1dpZHRoOmgsZm9udFNpemU6ZH09aTtpZihzIT09ZHx8YSE9PWMpe3IuZm9udD1gJHtkKm59cHggJHtjfWA7dC5wcmV2Rm9udFNpemU9ZDt0LnByZXZGb250RmFtaWx5PWN9Y29uc3R7d2lkdGg6dX09ci5tZWFzdXJlVGV4dChlLnRleHRDb250ZW50KTt1PjAmJihsPWBzY2FsZVgoJHtoKm4vdX0pYCl9MCE9PWkuYW5nbGUmJihsPWByb3RhdGUoJHtpLmFuZ2xlfWRlZykgJHtsfWApO2wubGVuZ3RoPjAmJihvLnRyYW5zZm9ybT1sKX1jbGFzcyBUZXh0TGF5ZXJSZW5kZXJUYXNre2NvbnN0cnVjdG9yKHQpe2xldHt0ZXh0Q29udGVudFNvdXJjZTplLGNvbnRhaW5lcjpuLHZpZXdwb3J0OnMsdGV4dERpdnM6YSx0ZXh0RGl2UHJvcGVydGllczpvLHRleHRDb250ZW50SXRlbXNTdHI6bCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpjfT10O3RoaXMuX3RleHRDb250ZW50U291cmNlPWU7dGhpcy5faXNSZWFkYWJsZVN0cmVhbT1lIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW07dGhpcy5fY29udGFpbmVyPXRoaXMuX3Jvb3RDb250YWluZXI9bjt0aGlzLl90ZXh0RGl2cz1hfHxbXTt0aGlzLl90ZXh0Q29udGVudEl0ZW1zU3RyPWx8fFtdO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWM7dGhpcy5fZm9udEluc3BlY3RvckVuYWJsZWQ9ISFnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3I/LmVuYWJsZWQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fdGV4dERpdlByb3BlcnRpZXM9b3x8bmV3IFdlYWtNYXA7dGhpcy5fY2FuY2VsZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1uZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLl9sYXlvdXRUZXh0UGFyYW1zPXtwcmV2Rm9udFNpemU6bnVsbCxwcmV2Rm9udEZhbWlseTpudWxsLGRpdjpudWxsLHNjYWxlOnMuc2NhbGUqKGdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpb3x8MSkscHJvcGVydGllczpudWxsLGN0eDpnZXRDdHgoMCxjKX07Y29uc3R7cGFnZVdpZHRoOmgscGFnZUhlaWdodDpkLHBhZ2VYOnUscGFnZVk6cH09cy5yYXdEaW1zO3RoaXMuX3RyYW5zZm9ybT1bMSwwLDAsLTEsLXUscCtkXTt0aGlzLl9wYWdlV2lkdGg9aDt0aGlzLl9wYWdlSGVpZ2h0PWQ7KDAsci5zZXRMYXllckRpbWVuc2lvbnMpKG4scyk7dGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlLmZpbmFsbHkoKCgpPT57dGhpcy5fbGF5b3V0VGV4dFBhcmFtcz1udWxsfSkpLmNhdGNoKCgoKT0+e30pKX1nZXQgcHJvbWlzZSgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9Y2FuY2VsKCl7dGhpcy5fY2FuY2VsZWQ9ITA7aWYodGhpcy5fcmVhZGVyKXt0aGlzLl9yZWFkZXIuY2FuY2VsKG5ldyBpLkFib3J0RXhjZXB0aW9uKCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuIikpLmNhdGNoKCgoKT0+e30pKTt0aGlzLl9yZWFkZXI9bnVsbH10aGlzLl9jYXBhYmlsaXR5LnJlamVjdChuZXcgaS5BYm9ydEV4Y2VwdGlvbigiVGV4dExheWVyIHRhc2sgY2FuY2VsbGVkLiIpKX1fcHJvY2Vzc0l0ZW1zKHQsZSl7Zm9yKGNvbnN0IG4gb2YgdClpZih2b2lkIDAhPT1uLnN0cil7dGhpcy5fdGV4dENvbnRlbnRJdGVtc1N0ci5wdXNoKG4uc3RyKTthcHBlbmRUZXh0KHRoaXMsbixlKX1lbHNlIGlmKCJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyI9PT1uLnR5cGV8fCJiZWdpbk1hcmtlZENvbnRlbnQiPT09bi50eXBlKXtjb25zdCB0PXRoaXMuX2NvbnRhaW5lcjt0aGlzLl9jb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3RoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJtYXJrZWRDb250ZW50Iik7bnVsbCE9PW4uaWQmJnRoaXMuX2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImlkIixgJHtuLmlkfWApO3QuYXBwZW5kKHRoaXMuX2NvbnRhaW5lcil9ZWxzZSJlbmRNYXJrZWRDb250ZW50Ij09PW4udHlwZSYmKHRoaXMuX2NvbnRhaW5lcj10aGlzLl9jb250YWluZXIucGFyZW50Tm9kZSl9X2xheW91dFRleHQodCl7Y29uc3QgZT10aGlzLl9sYXlvdXRUZXh0UGFyYW1zLnByb3BlcnRpZXM9dGhpcy5fdGV4dERpdlByb3BlcnRpZXMuZ2V0KHQpO3RoaXMuX2xheW91dFRleHRQYXJhbXMuZGl2PXQ7bGF5b3V0KHRoaXMuX2xheW91dFRleHRQYXJhbXMpO2UuaGFzVGV4dCYmdGhpcy5fY29udGFpbmVyLmFwcGVuZCh0KTtpZihlLmhhc0VPTCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpO3Quc2V0QXR0cmlidXRlKCJyb2xlIiwicHJlc2VudGF0aW9uIik7dGhpcy5fY29udGFpbmVyLmFwcGVuZCh0KX19X3JlbmRlcigpe2NvbnN0IHQ9bmV3IGkuUHJvbWlzZUNhcGFiaWxpdHk7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLl9pc1JlYWRhYmxlU3RyZWFtKXtjb25zdCBwdW1wPSgpPT57dGhpcy5fcmVhZGVyLnJlYWQoKS50aGVuKChuPT57bGV0e3ZhbHVlOmksZG9uZTpyfT1uO2lmKHIpdC5yZXNvbHZlKCk7ZWxzZXtPYmplY3QuYXNzaWduKGUsaS5zdHlsZXMpO3RoaXMuX3Byb2Nlc3NJdGVtcyhpLml0ZW1zLGUpO3B1bXAoKX19KSx0LnJlamVjdCl9O3RoaXMuX3JlYWRlcj10aGlzLl90ZXh0Q29udGVudFNvdXJjZS5nZXRSZWFkZXIoKTtwdW1wKCl9ZWxzZXtpZighdGhpcy5fdGV4dENvbnRlbnRTb3VyY2UpdGhyb3cgbmV3IEVycm9yKCdObyAidGV4dENvbnRlbnRTb3VyY2UiIHBhcmFtZXRlciBzcGVjaWZpZWQuJyk7e2NvbnN0e2l0ZW1zOmUsc3R5bGVzOm59PXRoaXMuX3RleHRDb250ZW50U291cmNlO3RoaXMuX3Byb2Nlc3NJdGVtcyhlLG4pO3QucmVzb2x2ZSgpfX10LnByb21pc2UudGhlbigoKCk9PntlPW51bGw7IWZ1bmN0aW9uIHJlbmRlcih0KXtpZih0Ll9jYW5jZWxlZClyZXR1cm47Y29uc3QgZT10Ll90ZXh0RGl2cyxuPXQuX2NhcGFiaWxpdHk7aWYoZS5sZW5ndGg+MWU1KW4ucmVzb2x2ZSgpO2Vsc2V7aWYoIXQuX2lzUmVhZGFibGVTdHJlYW0pZm9yKGNvbnN0IG4gb2YgZSl0Ll9sYXlvdXRUZXh0KG4pO24ucmVzb2x2ZSgpfX0odGhpcyl9KSx0aGlzLl9jYXBhYmlsaXR5LnJlamVjdCl9fWUuVGV4dExheWVyUmVuZGVyVGFzaz1UZXh0TGF5ZXJSZW5kZXJUYXNrfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25FZGl0b3JMYXllcj12b2lkIDA7bigxMjUpO24oMTM1KTtuKDEzNyk7bigxNDApO24oMTQyKTtuKDE0NCk7bigxNDYpO3ZhciBpPW4oMSkscj1uKDE2Mykscz1uKDE2NCksYT1uKDE5Niksbz1uKDIwMSksbD1uKDE2NyksYz1uKDIwMik7Y2xhc3MgQW5ub3RhdGlvbkVkaXRvckxheWVyeyNyZTsjc2U9ITE7I2FlPW51bGw7I29lPXRoaXMucG9pbnRlcnVwLmJpbmQodGhpcyk7I2xlPXRoaXMucG9pbnRlcmRvd24uYmluZCh0aGlzKTsjY2U9bmV3IE1hcDsjaGU9ITE7I2RlPSExOyN1ZT0hMTsjcGU7c3RhdGljIF9pbml0aWFsaXplZD0hMTtjb25zdHJ1Y3Rvcih0KXtsZXR7dWlNYW5hZ2VyOmUscGFnZUluZGV4Om4sZGl2OmksYWNjZXNzaWJpbGl0eU1hbmFnZXI6cixhbm5vdGF0aW9uTGF5ZXI6cyx2aWV3cG9ydDpsLGwxMG46aH09dDtjb25zdCBkPVthLkZyZWVUZXh0RWRpdG9yLG8uSW5rRWRpdG9yLGMuU3RhbXBFZGl0b3JdO2lmKCFBbm5vdGF0aW9uRWRpdG9yTGF5ZXIuX2luaXRpYWxpemVkKXtBbm5vdGF0aW9uRWRpdG9yTGF5ZXIuX2luaXRpYWxpemVkPSEwO2Zvcihjb25zdCB0IG9mIGQpdC5pbml0aWFsaXplKGgpfWUucmVnaXN0ZXJFZGl0b3JUeXBlcyhkKTt0aGlzLiNwZT1lO3RoaXMucGFnZUluZGV4PW47dGhpcy5kaXY9aTt0aGlzLiNyZT1yO3RoaXMuI2FlPXM7dGhpcy52aWV3cG9ydD1sO3RoaXMuI3BlLmFkZExheWVyKHRoaXMpfWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLiNjZS5zaXplfXVwZGF0ZVRvb2xiYXIodCl7dGhpcy4jcGUudXBkYXRlVG9vbGJhcih0KX11cGRhdGVNb2RlKCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuI3BlLmdldE1vZGUoKTt0aGlzLiNmZSgpO2lmKHQ9PT1pLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyl7dGhpcy5hZGRJbmtFZGl0b3JJZk5lZWRlZCghMSk7dGhpcy5kaXNhYmxlQ2xpY2soKX1lbHNlIHRoaXMuZW5hYmxlQ2xpY2soKTt0aGlzLiNwZS51bnNlbGVjdEFsbCgpO2lmKHQhPT1pLkFubm90YXRpb25FZGl0b3JUeXBlLk5PTkUpe3RoaXMuZGl2LmNsYXNzTGlzdC50b2dnbGUoImZyZWVUZXh0RWRpdGluZyIsdD09PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQpO3RoaXMuZGl2LmNsYXNzTGlzdC50b2dnbGUoImlua0VkaXRpbmciLHQ9PT1pLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyk7dGhpcy5kaXYuY2xhc3NMaXN0LnRvZ2dsZSgic3RhbXBFZGl0aW5nIix0PT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5TVEFNUCk7dGhpcy5kaXYuaGlkZGVuPSExfX1hZGRJbmtFZGl0b3JJZk5lZWRlZCh0KXtpZighdCYmdGhpcy4jcGUuZ2V0TW9kZSgpIT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspcmV0dXJuO2lmKCF0KWZvcihjb25zdCB0IG9mIHRoaXMuI2NlLnZhbHVlcygpKWlmKHQuaXNFbXB0eSgpKXt0LnNldEluQmFja2dyb3VuZCgpO3JldHVybn10aGlzLiNnZSh7b2Zmc2V0WDowLG9mZnNldFk6MH0pLnNldEluQmFja2dyb3VuZCgpfXNldEVkaXRpbmdTdGF0ZSh0KXt0aGlzLiNwZS5zZXRFZGl0aW5nU3RhdGUodCl9YWRkQ29tbWFuZHModCl7dGhpcy4jcGUuYWRkQ29tbWFuZHModCl9ZW5hYmxlKCl7dGhpcy5kaXYuc3R5bGUucG9pbnRlckV2ZW50cz0iYXV0byI7Y29uc3QgdD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIHRoaXMuI2NlLnZhbHVlcygpKXtlLmVuYWJsZUVkaXRpbmcoKTtlLmFubm90YXRpb25FbGVtZW50SWQmJnQuYWRkKGUuYW5ub3RhdGlvbkVsZW1lbnRJZCl9aWYoIXRoaXMuI2FlKXJldHVybjtjb25zdCBlPXRoaXMuI2FlLmdldEVkaXRhYmxlQW5ub3RhdGlvbnMoKTtmb3IoY29uc3QgbiBvZiBlKXtuLmhpZGUoKTtpZih0aGlzLiNwZS5pc0RlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudChuLmRhdGEuaWQpKWNvbnRpbnVlO2lmKHQuaGFzKG4uZGF0YS5pZCkpY29udGludWU7Y29uc3QgZT10aGlzLmRlc2VyaWFsaXplKG4pO2lmKGUpe3RoaXMuYWRkT3JSZWJ1aWxkKGUpO2UuZW5hYmxlRWRpdGluZygpfX19ZGlzYWJsZSgpe3RoaXMuI3VlPSEwO3RoaXMuZGl2LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiO2NvbnN0IHQ9bmV3IFNldDtmb3IoY29uc3QgZSBvZiB0aGlzLiNjZS52YWx1ZXMoKSl7ZS5kaXNhYmxlRWRpdGluZygpO2lmKGUuYW5ub3RhdGlvbkVsZW1lbnRJZCYmbnVsbD09PWUuc2VyaWFsaXplKCkpe3RoaXMuZ2V0RWRpdGFibGVBbm5vdGF0aW9uKGUuYW5ub3RhdGlvbkVsZW1lbnRJZCk/LnNob3coKTtlLnJlbW92ZSgpfWVsc2UgdC5hZGQoZS5hbm5vdGF0aW9uRWxlbWVudElkKX1pZih0aGlzLiNhZSl7Y29uc3QgZT10aGlzLiNhZS5nZXRFZGl0YWJsZUFubm90YXRpb25zKCk7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3R7aWQ6ZX09bi5kYXRhO3QuaGFzKGUpfHx0aGlzLiNwZS5pc0RlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudChlKXx8bi5zaG93KCl9fXRoaXMuI2ZlKCk7dGhpcy5pc0VtcHR5JiYodGhpcy5kaXYuaGlkZGVuPSEwKTt0aGlzLiN1ZT0hMX1nZXRFZGl0YWJsZUFubm90YXRpb24odCl7cmV0dXJuIHRoaXMuI2FlPy5nZXRFZGl0YWJsZUFubm90YXRpb24odCl8fG51bGx9c2V0QWN0aXZlRWRpdG9yKHQpe3RoaXMuI3BlLmdldEFjdGl2ZSgpIT09dCYmdGhpcy4jcGUuc2V0QWN0aXZlRWRpdG9yKHQpfWVuYWJsZUNsaWNrKCl7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI2xlKTt0aGlzLmRpdi5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuI29lKX1kaXNhYmxlQ2xpY2soKXt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy4jbGUpO3RoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy4jb2UpfWF0dGFjaCh0KXt0aGlzLiNjZS5zZXQodC5pZCx0KTtjb25zdHthbm5vdGF0aW9uRWxlbWVudElkOmV9PXQ7ZSYmdGhpcy4jcGUuaXNEZWxldGVkQW5ub3RhdGlvbkVsZW1lbnQoZSkmJnRoaXMuI3BlLnJlbW92ZURlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudCh0KX1kZXRhY2godCl7dGhpcy4jY2UuZGVsZXRlKHQuaWQpO3RoaXMuI3JlPy5yZW1vdmVQb2ludGVySW5UZXh0TGF5ZXIodC5jb250ZW50RGl2KTshdGhpcy4jdWUmJnQuYW5ub3RhdGlvbkVsZW1lbnRJZCYmdGhpcy4jcGUuYWRkRGVsZXRlZEFubm90YXRpb25FbGVtZW50KHQpfXJlbW92ZSh0KXt0aGlzLmRldGFjaCh0KTt0aGlzLiNwZS5yZW1vdmVFZGl0b3IodCk7dC5kaXYuc3R5bGUuZGlzcGxheT0ibm9uZSI7c2V0VGltZW91dCgoKCk9Pnt0LmRpdi5zdHlsZS5kaXNwbGF5PSIiO3QuZGl2LnJlbW92ZSgpO3QuaXNBdHRhY2hlZFRvRE9NPSExO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1kb2N1bWVudC5ib2R5JiZ0aGlzLiNwZS5mb2N1c01haW5Db250YWluZXIoKX0pLDApO3RoaXMuI2RlfHx0aGlzLmFkZElua0VkaXRvcklmTmVlZGVkKCExKX0jbWUodCl7aWYodC5wYXJlbnQhPT10aGlzKXtpZih0LmFubm90YXRpb25FbGVtZW50SWQpe3RoaXMuI3BlLmFkZERlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudCh0LmFubm90YXRpb25FbGVtZW50SWQpO3IuQW5ub3RhdGlvbkVkaXRvci5kZWxldGVBbm5vdGF0aW9uRWxlbWVudCh0KTt0LmFubm90YXRpb25FbGVtZW50SWQ9bnVsbH10aGlzLmF0dGFjaCh0KTt0LnBhcmVudD8uZGV0YWNoKHQpO3Quc2V0UGFyZW50KHRoaXMpO2lmKHQuZGl2JiZ0LmlzQXR0YWNoZWRUb0RPTSl7dC5kaXYucmVtb3ZlKCk7dGhpcy5kaXYuYXBwZW5kKHQuZGl2KX19fWFkZCh0KXt0aGlzLiNtZSh0KTt0aGlzLiNwZS5hZGRFZGl0b3IodCk7dGhpcy5hdHRhY2godCk7aWYoIXQuaXNBdHRhY2hlZFRvRE9NKXtjb25zdCBlPXQucmVuZGVyKCk7dGhpcy5kaXYuYXBwZW5kKGUpO3QuaXNBdHRhY2hlZFRvRE9NPSEwfXRoaXMubW92ZUVkaXRvckluRE9NKHQpO3Qub25jZUFkZGVkKCk7dGhpcy4jcGUuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KX1tb3ZlRWRpdG9ySW5ET00odCl7dGhpcy4jcmU/Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdC5kaXYsdC5jb250ZW50RGl2LCEwKX1hZGRPclJlYnVpbGQodCl7dC5uZWVkc1RvQmVSZWJ1aWx0KCk/dC5yZWJ1aWxkKCk6dGhpcy5hZGQodCl9YWRkVW5kb2FibGVFZGl0b3IodCl7dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5hZGRPclJlYnVpbGQodCl9LHVuZG86KCk9Pnt0LnJlbW92ZSgpfSxtdXN0RXhlYzohMX0pfWdldE5leHRJZCgpe3JldHVybiB0aGlzLiNwZS5nZXRJZCgpfSNiZSh0KXtzd2l0Y2godGhpcy4jcGUuZ2V0TW9kZSgpKXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIG5ldyBhLkZyZWVUZXh0RWRpdG9yKHQpO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6cmV0dXJuIG5ldyBvLklua0VkaXRvcih0KTtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuU1RBTVA6cmV0dXJuIG5ldyBjLlN0YW1wRWRpdG9yKHQpfXJldHVybiBudWxsfWRlc2VyaWFsaXplKHQpe3N3aXRjaCh0LmFubm90YXRpb25UeXBlPz90LmFubm90YXRpb25FZGl0b3JUeXBlKXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIGEuRnJlZVRleHRFZGl0b3IuZGVzZXJpYWxpemUodCx0aGlzLHRoaXMuI3BlKTtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnJldHVybiBvLklua0VkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMsdGhpcy4jcGUpO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5TVEFNUDpyZXR1cm4gYy5TdGFtcEVkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMsdGhpcy4jcGUpfXJldHVybiBudWxsfSNnZSh0KXtjb25zdCBlPXRoaXMuZ2V0TmV4dElkKCksbj10aGlzLiNiZSh7cGFyZW50OnRoaXMsaWQ6ZSx4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WSx1aU1hbmFnZXI6dGhpcy4jcGV9KTtuJiZ0aGlzLmFkZChuKTtyZXR1cm4gbn1zZXRTZWxlY3RlZCh0KXt0aGlzLiNwZS5zZXRTZWxlY3RlZCh0KX10b2dnbGVTZWxlY3RlZCh0KXt0aGlzLiNwZS50b2dnbGVTZWxlY3RlZCh0KX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLiNwZS5pc1NlbGVjdGVkKHQpfXVuc2VsZWN0KHQpe3RoaXMuI3BlLnVuc2VsZWN0KHQpfXBvaW50ZXJ1cCh0KXtjb25zdHtpc01hYzplfT1pLkZlYXR1cmVUZXN0LnBsYXRmb3JtO2lmKCEoMCE9PXQuYnV0dG9ufHx0LmN0cmxLZXkmJmUpJiZ0LnRhcmdldD09PXRoaXMuZGl2JiZ0aGlzLiNoZSl7dGhpcy4jaGU9ITE7dGhpcy4jc2U/dGhpcy4jZ2UodCk6dGhpcy4jc2U9ITB9fXBvaW50ZXJkb3duKHQpe2lmKHRoaXMuI2hlKXt0aGlzLiNoZT0hMTtyZXR1cm59Y29uc3R7aXNNYWM6ZX09aS5GZWF0dXJlVGVzdC5wbGF0Zm9ybTtpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSlyZXR1cm47aWYodC50YXJnZXQhPT10aGlzLmRpdilyZXR1cm47dGhpcy4jaGU9ITA7Y29uc3Qgbj10aGlzLiNwZS5nZXRBY3RpdmUoKTt0aGlzLiNzZT0hbnx8bi5pc0VtcHR5KCl9ZHJvcCh0KXtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvcGxhaW4iKSxuPXRoaXMuI3BlLmdldEVkaXRvcihlKTtpZighbilyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO3QuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9Im1vdmUiO3RoaXMuI21lKG4pO2NvbnN0IGk9dGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10LmNsaWVudFgtaS54LHM9dC5jbGllbnRZLWkueTtuLnRyYW5zbGF0ZShyLW4uc3RhcnRYLHMtbi5zdGFydFkpO3RoaXMubW92ZUVkaXRvckluRE9NKG4pO24uZGl2LmZvY3VzKCl9ZHJhZ292ZXIodCl7dC5wcmV2ZW50RGVmYXVsdCgpfWRlc3Ryb3koKXt0aGlzLiNwZS5nZXRBY3RpdmUoKT8ucGFyZW50PT09dGhpcyYmdGhpcy4jcGUuc2V0QWN0aXZlRWRpdG9yKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuI2NlLnZhbHVlcygpKXt0aGlzLiNyZT8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdik7dC5zZXRQYXJlbnQobnVsbCk7dC5pc0F0dGFjaGVkVG9ET009ITE7dC5kaXYucmVtb3ZlKCl9dGhpcy5kaXY9bnVsbDt0aGlzLiNjZS5jbGVhcigpO3RoaXMuI3BlLnJlbW92ZUxheWVyKHRoaXMpfSNmZSgpe3RoaXMuI2RlPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuI2NlLnZhbHVlcygpKXQuaXNFbXB0eSgpJiZ0LnJlbW92ZSgpO3RoaXMuI2RlPSExfXJlbmRlcih0KXtsZXR7dmlld3BvcnQ6ZX09dDt0aGlzLnZpZXdwb3J0PWU7KDAsbC5zZXRMYXllckRpbWVuc2lvbnMpKHRoaXMuZGl2LGUpOygwLHMuYmluZEV2ZW50cykodGhpcyx0aGlzLmRpdixbImRyYWdvdmVyIiwiZHJvcCJdKTtmb3IoY29uc3QgdCBvZiB0aGlzLiNwZS5nZXRFZGl0b3JzKHRoaXMucGFnZUluZGV4KSl0aGlzLmFkZCh0KTt0aGlzLnVwZGF0ZU1vZGUoKX11cGRhdGUodCl7bGV0e3ZpZXdwb3J0OmV9PXQ7dGhpcy4jcGUuY29tbWl0T3JSZW1vdmUoKTt0aGlzLnZpZXdwb3J0PWU7KDAsbC5zZXRMYXllckRpbWVuc2lvbnMpKHRoaXMuZGl2LHtyb3RhdGlvbjplLnJvdGF0aW9ufSk7dGhpcy51cGRhdGVNb2RlKCl9Z2V0IHBhZ2VEaW1lbnNpb25zKCl7Y29uc3R7cGFnZVdpZHRoOnQscGFnZUhlaWdodDplfT10aGlzLnZpZXdwb3J0LnJhd0RpbXM7cmV0dXJuW3QsZV19fWUuQW5ub3RhdGlvbkVkaXRvckxheWVyPUFubm90YXRpb25FZGl0b3JMYXllcn0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5GcmVlVGV4dEVkaXRvcj12b2lkIDA7big4OSk7dmFyIGk9bigxKSxyPW4oMTY0KSxzPW4oMTYzKSxhPW4oMTk3KTtjbGFzcyBGcmVlVGV4dEVkaXRvciBleHRlbmRzIHMuQW5ub3RhdGlvbkVkaXRvcnsjdmU9dGhpcy5lZGl0b3JEaXZCbHVyLmJpbmQodGhpcyk7I3llPXRoaXMuZWRpdG9yRGl2Rm9jdXMuYmluZCh0aGlzKTsjQWU9dGhpcy5lZGl0b3JEaXZJbnB1dC5iaW5kKHRoaXMpOyNfZT10aGlzLmVkaXRvckRpdktleWRvd24uYmluZCh0aGlzKTsjU2U7I0VlPSIiOyN4ZT1gJHt0aGlzLmlkfS1lZGl0b3JgOyN3ZTsjQ2U9bnVsbDtzdGF0aWMgX2ZyZWVUZXh0RGVmYXVsdENvbnRlbnQ9IiI7c3RhdGljIF9sMTBuUHJvbWlzZTtzdGF0aWMgX2ludGVybmFsUGFkZGluZz0wO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0Rm9udFNpemU9MTA7c3RhdGljIGdldCBfa2V5Ym9hcmRNYW5hZ2VyKCl7Y29uc3QgdD1GcmVlVGV4dEVkaXRvci5wcm90b3R5cGUsYXJyb3dDaGVja2VyPXQ9PnQuaXNFbXB0eSgpLGU9ci5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLlRSQU5TTEFURV9TTUFMTCxuPXIuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlci5UUkFOU0xBVEVfQklHO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfa2V5Ym9hcmRNYW5hZ2VyIixuZXcgci5LZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrcyIsIm1hYyttZXRhK3MiLCJjdHJsK3AiLCJtYWMrbWV0YStwIl0sdC5jb21taXRPclJlbW92ZSx7YnViYmxlczohMH1dLFtbImN0cmwrRW50ZXIiLCJtYWMrbWV0YStFbnRlciIsIkVzY2FwZSIsIm1hYytFc2NhcGUiXSx0LmNvbW1pdE9yUmVtb3ZlXSxbWyJBcnJvd0xlZnQiLCJtYWMrQXJyb3dMZWZ0Il0sdC5fdHJhbnNsYXRlRW1wdHkse2FyZ3M6Wy1lLDBdLGNoZWNrZXI6YXJyb3dDaGVja2VyfV0sW1siY3RybCtBcnJvd0xlZnQiLCJtYWMrc2hpZnQrQXJyb3dMZWZ0Il0sdC5fdHJhbnNsYXRlRW1wdHkse2FyZ3M6Wy1uLDBdLGNoZWNrZXI6YXJyb3dDaGVja2VyfV0sW1siQXJyb3dSaWdodCIsIm1hYytBcnJvd1JpZ2h0Il0sdC5fdHJhbnNsYXRlRW1wdHkse2FyZ3M6W2UsMF0sY2hlY2tlcjphcnJvd0NoZWNrZXJ9XSxbWyJjdHJsK0Fycm93UmlnaHQiLCJtYWMrc2hpZnQrQXJyb3dSaWdodCJdLHQuX3RyYW5zbGF0ZUVtcHR5LHthcmdzOltuLDBdLGNoZWNrZXI6YXJyb3dDaGVja2VyfV0sW1siQXJyb3dVcCIsIm1hYytBcnJvd1VwIl0sdC5fdHJhbnNsYXRlRW1wdHkse2FyZ3M6WzAsLWVdLGNoZWNrZXI6YXJyb3dDaGVja2VyfV0sW1siY3RybCtBcnJvd1VwIiwibWFjK3NoaWZ0K0Fycm93VXAiXSx0Ll90cmFuc2xhdGVFbXB0eSx7YXJnczpbMCwtbl0sY2hlY2tlcjphcnJvd0NoZWNrZXJ9XSxbWyJBcnJvd0Rvd24iLCJtYWMrQXJyb3dEb3duIl0sdC5fdHJhbnNsYXRlRW1wdHkse2FyZ3M6WzAsZV0sY2hlY2tlcjphcnJvd0NoZWNrZXJ9XSxbWyJjdHJsK0Fycm93RG93biIsIm1hYytzaGlmdCtBcnJvd0Rvd24iXSx0Ll90cmFuc2xhdGVFbXB0eSx7YXJnczpbMCxuXSxjaGVja2VyOmFycm93Q2hlY2tlcn1dXSkpfXN0YXRpYyBfdHlwZT0iZnJlZXRleHQiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6ImZyZWVUZXh0RWRpdG9yIn0pO3RoaXMuI1NlPXQuY29sb3J8fEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3J8fHMuQW5ub3RhdGlvbkVkaXRvci5fZGVmYXVsdExpbmVDb2xvcjt0aGlzLiN3ZT10LmZvbnRTaXplfHxGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplfXN0YXRpYyBpbml0aWFsaXplKHQpe3RoaXMuX2wxMG5Qcm9taXNlPW5ldyBNYXAoWyJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIsImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWwiXS5tYXAoKGU9PltlLHQuZ2V0KGUpXSkpKTtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTt0aGlzLl9pbnRlcm5hbFBhZGRpbmc9cGFyc2VGbG9hdChlLmdldFByb3BlcnR5VmFsdWUoIi0tZnJlZXRleHQtcGFkZGluZyIpKX1zdGF0aWMgdXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRTpGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOkZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3I9ZX19dXBkYXRlUGFyYW1zKHQsZSl7c3dpdGNoKHQpe2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFOnRoaXMuI1RlKGUpO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUjp0aGlzLiNQZShlKX19c3RhdGljIGdldCBkZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKCl7cmV0dXJuW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRGb250U2l6ZV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1IsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvcnx8cy5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLHRoaXMuI3dlXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUix0aGlzLiNTZV1dfSNUZSh0KXtjb25zdCBzZXRGb250c2l6ZT10PT57dGhpcy5lZGl0b3JEaXYuc3R5bGUuZm9udFNpemU9YGNhbGMoJHt0fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3RoaXMudHJhbnNsYXRlKDAsLSh0LXRoaXMuI3dlKSp0aGlzLnBhcmVudFNjYWxlKTt0aGlzLiN3ZT10O3RoaXMuI2tlKCl9LGU9dGhpcy4jd2U7dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57c2V0Rm9udHNpemUodCl9LHVuZG86KCk9PntzZXRGb250c2l6ZShlKX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsb3ZlcndyaXRlSWZTYW1lVHlwZTohMCxrZWVwVW5kbzohMH0pfSNQZSh0KXtjb25zdCBlPXRoaXMuI1NlO3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuI1NlPXRoaXMuZWRpdG9yRGl2LnN0eWxlLmNvbG9yPXR9LHVuZG86KCk9Pnt0aGlzLiNTZT10aGlzLmVkaXRvckRpdi5zdHlsZS5jb2xvcj1lfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1Isb3ZlcndyaXRlSWZTYW1lVHlwZTohMCxrZWVwVW5kbzohMH0pfV90cmFuc2xhdGVFbXB0eSh0LGUpe3RoaXMuX3VpTWFuYWdlci50cmFuc2xhdGVTZWxlY3RlZEVkaXRvcnModCxlLCEwKX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtjb25zdCB0PXRoaXMucGFyZW50U2NhbGU7cmV0dXJuWy1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nKnQsLShGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nK3RoaXMuI3dlKSp0XX1yZWJ1aWxkKCl7c3VwZXIucmVidWlsZCgpO251bGwhPT10aGlzLmRpdiYmKHRoaXMuaXNBdHRhY2hlZFRvRE9NfHx0aGlzLnBhcmVudC5hZGQodGhpcykpfWVuYWJsZUVkaXRNb2RlKCl7aWYoIXRoaXMuaXNJbkVkaXRNb2RlKCkpe3RoaXMucGFyZW50LnNldEVkaXRpbmdTdGF0ZSghMSk7dGhpcy5wYXJlbnQudXBkYXRlVG9vbGJhcihpLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTtzdXBlci5lbmFibGVFZGl0TW9kZSgpO3RoaXMub3ZlcmxheURpdi5jbGFzc0xpc3QucmVtb3ZlKCJlbmFibGVkIik7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwO3RoaXMuZGl2LmRyYWdnYWJsZT0hMTt0aGlzLmRpdi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpO3RoaXMuZWRpdG9yRGl2LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI19lKTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy4jeWUpO3RoaXMuZWRpdG9yRGl2LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuI3ZlKTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsdGhpcy4jQWUpfX1kaXNhYmxlRWRpdE1vZGUoKXtpZih0aGlzLmlzSW5FZGl0TW9kZSgpKXt0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITApO3N1cGVyLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMub3ZlcmxheURpdi5jbGFzc0xpc3QuYWRkKCJlbmFibGVkIik7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSExO3RoaXMuZGl2LnNldEF0dHJpYnV0ZSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50Iix0aGlzLiN4ZSk7dGhpcy5kaXYuZHJhZ2dhYmxlPSEwO3RoaXMuZWRpdG9yRGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI19lKTt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy4jeWUpO3RoaXMuZWRpdG9yRGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuI3ZlKTt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIsdGhpcy4jQWUpO3RoaXMuZGl2LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSk7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5wYXJlbnQuZGl2LmNsYXNzTGlzdC5hZGQoImZyZWVUZXh0RWRpdGluZyIpfX1mb2N1c2luKHQpe3N1cGVyLmZvY3VzaW4odCk7dC50YXJnZXQhPT10aGlzLmVkaXRvckRpdiYmdGhpcy5lZGl0b3JEaXYuZm9jdXMoKX1vbmNlQWRkZWQoKXtpZih0aGlzLndpZHRoKXRoaXMuI01lKCk7ZWxzZXt0aGlzLmVuYWJsZUVkaXRNb2RlKCk7dGhpcy5lZGl0b3JEaXYuZm9jdXMoKX19aXNFbXB0eSgpe3JldHVybiF0aGlzLmVkaXRvckRpdnx8IiI9PT10aGlzLmVkaXRvckRpdi5pbm5lclRleHQudHJpbSgpfXJlbW92ZSgpe3RoaXMuaXNFZGl0aW5nPSExO2lmKHRoaXMucGFyZW50KXt0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITApO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKCJmcmVlVGV4dEVkaXRpbmciKX1zdXBlci5yZW1vdmUoKX0jUmUoKXtjb25zdCB0PXRoaXMuZWRpdG9yRGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dDtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHQpZS5wdXNoKG4uaW5uZXJUZXh0LnJlcGxhY2UoL1xyXG4/fFxuLywiIikpO3JldHVybiBlLmpvaW4oIlxuIil9I2tlKCl7Y29uc3RbdCxlXT10aGlzLnBhcmVudERpbWVuc2lvbnM7bGV0IG47aWYodGhpcy5pc0F0dGFjaGVkVG9ET00pbj10aGlzLmRpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle2NvbnN0e2N1cnJlbnRMYXllcjp0LGRpdjplfT10aGlzLGk9ZS5zdHlsZS5kaXNwbGF5O2Uuc3R5bGUuZGlzcGxheT0iaGlkZGVuIjt0LmRpdi5hcHBlbmQodGhpcy5kaXYpO249ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLnJlbW92ZSgpO2Uuc3R5bGUuZGlzcGxheT1pfWlmKHRoaXMucm90YXRpb24lMTgwPT10aGlzLnBhcmVudFJvdGF0aW9uJTE4MCl7dGhpcy53aWR0aD1uLndpZHRoL3Q7dGhpcy5oZWlnaHQ9bi5oZWlnaHQvZX1lbHNle3RoaXMud2lkdGg9bi5oZWlnaHQvdDt0aGlzLmhlaWdodD1uLndpZHRoL2V9dGhpcy5maXhBbmRTZXRQb3NpdGlvbigpfWNvbW1pdCgpe2lmKCF0aGlzLmlzSW5FZGl0TW9kZSgpKXJldHVybjtzdXBlci5jb21taXQoKTt0aGlzLmRpc2FibGVFZGl0TW9kZSgpO2NvbnN0IHQ9dGhpcy4jRWUsZT10aGlzLiNFZT10aGlzLiNSZSgpLnRyaW1FbmQoKTtpZih0PT09ZSlyZXR1cm47Y29uc3Qgc2V0VGV4dD10PT57dGhpcy4jRWU9dDtpZih0KXt0aGlzLiNGZSgpO3RoaXMucmVidWlsZCgpO3RoaXMuI2tlKCl9ZWxzZSB0aGlzLnJlbW92ZSgpfTt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9PntzZXRUZXh0KGUpfSx1bmRvOigpPT57c2V0VGV4dCh0KX0sbXVzdEV4ZWM6ITF9KTt0aGlzLiNrZSgpfXNob3VsZEdldEtleWJvYXJkRXZlbnRzKCl7cmV0dXJuIHRoaXMuaXNJbkVkaXRNb2RlKCl9ZW50ZXJJbkVkaXRNb2RlKCl7dGhpcy5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZWRpdG9yRGl2LmZvY3VzKCl9ZGJsY2xpY2sodCl7dGhpcy5lbnRlckluRWRpdE1vZGUoKX1rZXlkb3duKHQpe3QudGFyZ2V0PT09dGhpcy5kaXYmJiJFbnRlciI9PT10LmtleSYmdGhpcy5lbnRlckluRWRpdE1vZGUoKX1lZGl0b3JEaXZLZXlkb3duKHQpe0ZyZWVUZXh0RWRpdG9yLl9rZXlib2FyZE1hbmFnZXIuZXhlYyh0aGlzLHQpfWVkaXRvckRpdkZvY3VzKHQpe3RoaXMuaXNFZGl0aW5nPSEwfWVkaXRvckRpdkJsdXIodCl7dGhpcy5pc0VkaXRpbmc9ITF9ZWRpdG9yRGl2SW5wdXQodCl7dGhpcy5wYXJlbnQuZGl2LmNsYXNzTGlzdC50b2dnbGUoImZyZWVUZXh0RWRpdGluZyIsdGhpcy5pc0VtcHR5KCkpfWRpc2FibGVFZGl0aW5nKCl7dGhpcy5lZGl0b3JEaXYuc2V0QXR0cmlidXRlKCJyb2xlIiwiY29tbWVudCIpO3RoaXMuZWRpdG9yRGl2LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tdWx0aWxpbmUiKX1lbmFibGVFZGl0aW5nKCl7dGhpcy5lZGl0b3JEaXYuc2V0QXR0cmlidXRlKCJyb2xlIiwidGV4dGJveCIpO3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgiYXJpYS1tdWx0aWxpbmUiLCEwKX1yZW5kZXIoKXtpZih0aGlzLmRpdilyZXR1cm4gdGhpcy5kaXY7bGV0IHQsZTtpZih0aGlzLndpZHRoKXt0PXRoaXMueDtlPXRoaXMueX1zdXBlci5yZW5kZXIoKTt0aGlzLmVkaXRvckRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmVkaXRvckRpdi5jbGFzc05hbWU9ImludGVybmFsIjt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoImlkIix0aGlzLiN4ZSk7dGhpcy5lbmFibGVFZGl0aW5nKCk7RnJlZVRleHRFZGl0b3IuX2wxMG5Qcm9taXNlLmdldCgiZWRpdG9yX2ZyZWVfdGV4dDJfYXJpYV9sYWJlbCIpLnRoZW4oKHQ9PnRoaXMuZWRpdG9yRGl2Py5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHQpKSk7RnJlZVRleHRFZGl0b3IuX2wxMG5Qcm9taXNlLmdldCgiZnJlZV90ZXh0Ml9kZWZhdWx0X2NvbnRlbnQiKS50aGVuKCh0PT50aGlzLmVkaXRvckRpdj8uc2V0QXR0cmlidXRlKCJkZWZhdWx0LWNvbnRlbnQiLHQpKSk7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwO2NvbnN0e3N0eWxlOm59PXRoaXMuZWRpdG9yRGl2O24uZm9udFNpemU9YGNhbGMoJHt0aGlzLiN3ZX1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpYDtuLmNvbG9yPXRoaXMuI1NlO3RoaXMuZGl2LmFwcGVuZCh0aGlzLmVkaXRvckRpdik7dGhpcy5vdmVybGF5RGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMub3ZlcmxheURpdi5jbGFzc0xpc3QuYWRkKCJvdmVybGF5IiwiZW5hYmxlZCIpO3RoaXMuZGl2LmFwcGVuZCh0aGlzLm92ZXJsYXlEaXYpOygwLHIuYmluZEV2ZW50cykodGhpcyx0aGlzLmRpdixbImRibGNsaWNrIiwia2V5ZG93biJdKTtpZih0aGlzLndpZHRoKXtjb25zdFtuLGldPXRoaXMucGFyZW50RGltZW5zaW9ucztpZih0aGlzLmFubm90YXRpb25FbGVtZW50SWQpe2NvbnN0e3Bvc2l0aW9uOnJ9PXRoaXMuI0NlO2xldFtzLGFdPXRoaXMuZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCk7W3MsYV09dGhpcy5wYWdlVHJhbnNsYXRpb25Ub1NjcmVlbihzLGEpO2NvbnN0W28sbF09dGhpcy5wYWdlRGltZW5zaW9ucyxbYyxoXT10aGlzLnBhZ2VUcmFuc2xhdGlvbjtsZXQgZCx1O3N3aXRjaCh0aGlzLnJvdGF0aW9uKXtjYXNlIDA6ZD10KyhyWzBdLWMpL287dT1lK3RoaXMuaGVpZ2h0LShyWzFdLWgpL2w7YnJlYWs7Y2FzZSA5MDpkPXQrKHJbMF0tYykvbzt1PWUtKHJbMV0taCkvbDtbcyxhXT1bYSwtc107YnJlYWs7Y2FzZSAxODA6ZD10LXRoaXMud2lkdGgrKHJbMF0tYykvbzt1PWUtKHJbMV0taCkvbDtbcyxhXT1bLXMsLWFdO2JyZWFrO2Nhc2UgMjcwOmQ9dCsoclswXS1jLXRoaXMuaGVpZ2h0KmwpL287dT1lKyhyWzFdLWgtdGhpcy53aWR0aCpvKS9sO1tzLGFdPVstYSxzXX10aGlzLnNldEF0KGQqbix1KmkscyxhKX1lbHNlIHRoaXMuc2V0QXQodCpuLGUqaSx0aGlzLndpZHRoKm4sdGhpcy5oZWlnaHQqaSk7dGhpcy4jRmUoKTt0aGlzLmRpdi5kcmFnZ2FibGU9ITA7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSExfWVsc2V7dGhpcy5kaXYuZHJhZ2dhYmxlPSExO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMH1yZXR1cm4gdGhpcy5kaXZ9I0ZlKCl7dGhpcy5lZGl0b3JEaXYucmVwbGFjZUNoaWxkcmVuKCk7aWYodGhpcy4jRWUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jRWUuc3BsaXQoIlxuIikpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5hcHBlbmQodD9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTt0aGlzLmVkaXRvckRpdi5hcHBlbmQoZSl9fWdldCBjb250ZW50RGl2KCl7cmV0dXJuIHRoaXMuZWRpdG9yRGl2fXN0YXRpYyBkZXNlcmlhbGl6ZSh0LGUsbil7bGV0IHI9bnVsbDtpZih0IGluc3RhbmNlb2YgYS5GcmVlVGV4dEFubm90YXRpb25FbGVtZW50KXtjb25zdHtkYXRhOntkZWZhdWx0QXBwZWFyYW5jZURhdGE6e2ZvbnRTaXplOmUsZm9udENvbG9yOm59LHJlY3Q6cyxyb3RhdGlvbjphLGlkOm99LHRleHRDb250ZW50OmwsdGV4dFBvc2l0aW9uOmMscGFyZW50OntwYWdlOntwYWdlTnVtYmVyOmh9fX09dDtpZighbHx8MD09PWwubGVuZ3RoKXJldHVybiBudWxsO3I9dD17YW5ub3RhdGlvblR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCxjb2xvcjpBcnJheS5mcm9tKG4pLGZvbnRTaXplOmUsdmFsdWU6bC5qb2luKCJcbiIpLHBvc2l0aW9uOmMscGFnZUluZGV4OmgtMSxyZWN0OnMscm90YXRpb246YSxpZDpvLGRlbGV0ZWQ6ITF9fWNvbnN0IHM9c3VwZXIuZGVzZXJpYWxpemUodCxlLG4pO3MuI3dlPXQuZm9udFNpemU7cy4jU2U9aS5VdGlsLm1ha2VIZXhDb2xvciguLi50LmNvbG9yKTtzLiNFZT10LnZhbHVlO3MuYW5ub3RhdGlvbkVsZW1lbnRJZD10LmlkfHxudWxsO3MuI0NlPXI7cmV0dXJuIHN9c2VyaWFsaXplKCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDtpZih0aGlzLmRlbGV0ZWQpcmV0dXJue3BhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZDp0aGlzLmFubm90YXRpb25FbGVtZW50SWQsZGVsZXRlZDohMH07Y29uc3QgZT1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nKnRoaXMucGFyZW50U2NhbGUsbj10aGlzLmdldFJlY3QoZSxlKSxyPXMuQW5ub3RhdGlvbkVkaXRvci5fY29sb3JNYW5hZ2VyLmNvbnZlcnQodGhpcy5pc0F0dGFjaGVkVG9ET00/Z2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVkaXRvckRpdikuY29sb3I6dGhpcy4jU2UpLGE9e2Fubm90YXRpb25UeXBlOmkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQsY29sb3I6cixmb250U2l6ZTp0aGlzLiN3ZSx2YWx1ZTp0aGlzLiNFZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgscmVjdDpuLHJvdGF0aW9uOnRoaXMucm90YXRpb259O2lmKHQpcmV0dXJuIGE7aWYodGhpcy5hbm5vdGF0aW9uRWxlbWVudElkJiYhdGhpcy4jSWUoYSkpcmV0dXJuIG51bGw7YS5pZD10aGlzLmFubm90YXRpb25FbGVtZW50SWQ7cmV0dXJuIGF9I0llKHQpe2NvbnN0e3ZhbHVlOmUsZm9udFNpemU6bixjb2xvcjppLHJlY3Q6cixwYWdlSW5kZXg6c309dGhpcy4jQ2U7cmV0dXJuIHQudmFsdWUhPT1lfHx0LmZvbnRTaXplIT09bnx8dC5yZWN0LnNvbWUoKCh0LGUpPT5NYXRoLmFicyh0LXJbZV0pPj0xKSl8fHQuY29sb3Iuc29tZSgoKHQsZSk9PnQhPT1pW2VdKSl8fHQucGFnZUluZGV4IT09c30jTWUoKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKCF0aGlzLmFubm90YXRpb25FbGVtZW50SWQpcmV0dXJuO3RoaXMuI2tlKCk7aWYoIXQmJigwPT09dGhpcy53aWR0aHx8MD09PXRoaXMuaGVpZ2h0KSl7c2V0VGltZW91dCgoKCk9PnRoaXMuI01lKCEwKSksMCk7cmV0dXJufWNvbnN0IGU9RnJlZVRleHRFZGl0b3IuX2ludGVybmFsUGFkZGluZyp0aGlzLnBhcmVudFNjYWxlO3RoaXMuI0NlLnJlY3Q9dGhpcy5nZXRSZWN0KGUsZSl9fWUuRnJlZVRleHRFZGl0b3I9RnJlZVRleHRFZGl0b3J9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU3RhbXBBbm5vdGF0aW9uRWxlbWVudD1lLklua0Fubm90YXRpb25FbGVtZW50PWUuRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudD1lLkFubm90YXRpb25MYXllcj12b2lkIDA7big4OSk7bigxMjUpO24oMTM1KTtuKDEzNyk7bigxNDApO24oMTQyKTtuKDE0NCk7bigxNDYpO3ZhciBpPW4oMSkscj1uKDE2Nykscz1uKDE2MiksYT1uKDE5OCksbz1uKDE5OSksbD1uKDIwMCk7Y29uc3QgYz0xZTMsaD1uZXcgV2Vha1NldDtmdW5jdGlvbiBnZXRSZWN0RGltcyh0KXtyZXR1cm57d2lkdGg6dFsyXS10WzBdLGhlaWdodDp0WzNdLXRbMV19fWNsYXNzIEFubm90YXRpb25FbGVtZW50RmFjdG9yeXtzdGF0aWMgY3JlYXRlKHQpe3N3aXRjaCh0LmRhdGEuYW5ub3RhdGlvblR5cGUpe2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5MSU5LOnJldHVybiBuZXcgTGlua0Fubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5URVhUOnJldHVybiBuZXcgVGV4dEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ6c3dpdGNoKHQuZGF0YS5maWVsZFR5cGUpe2Nhc2UiVHgiOnJldHVybiBuZXcgVGV4dFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UiQnRuIjpyZXR1cm4gdC5kYXRhLnJhZGlvQnV0dG9uP25ldyBSYWRpb0J1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KHQpOnQuZGF0YS5jaGVja0JveD9uZXcgQ2hlY2tib3hXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KTpuZXcgUHVzaEJ1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UiQ2giOnJldHVybiBuZXcgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJTaWciOnJldHVybiBuZXcgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCl9cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuUE9QVVA6cmV0dXJuIG5ldyBQb3B1cEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5GUkVFVEVYVDpyZXR1cm4gbmV3IEZyZWVUZXh0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkxJTkU6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlNRVUFSRTpyZXR1cm4gbmV3IFNxdWFyZUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5DSVJDTEU6cmV0dXJuIG5ldyBDaXJjbGVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuUE9MWUxJTkU6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5DQVJFVDpyZXR1cm4gbmV3IENhcmV0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLklOSzpyZXR1cm4gbmV3IElua0Fubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT0xZR09OOnJldHVybiBuZXcgUG9seWdvbkFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5ISUdITElHSFQ6cmV0dXJuIG5ldyBIaWdobGlnaHRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuVU5ERVJMSU5FOnJldHVybiBuZXcgVW5kZXJsaW5lQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlNRVUlHR0xZOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1RSSUtFT1VUOnJldHVybiBuZXcgU3RyaWtlT3V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlNUQU1QOnJldHVybiBuZXcgU3RhbXBBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuRklMRUFUVEFDSE1FTlQ6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb25FbGVtZW50KHQpO2RlZmF1bHQ6cmV0dXJuIG5ldyBBbm5vdGF0aW9uRWxlbWVudCh0KX19fWNsYXNzIEFubm90YXRpb25FbGVtZW50eyNEZT0hMTtjb25zdHJ1Y3Rvcih0KXtsZXR7aXNSZW5kZXJhYmxlOmU9ITEsaWdub3JlQm9yZGVyOm49ITEsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6aT0hMX09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3RoaXMuaXNSZW5kZXJhYmxlPWU7dGhpcy5kYXRhPXQuZGF0YTt0aGlzLmxheWVyPXQubGF5ZXI7dGhpcy5saW5rU2VydmljZT10LmxpbmtTZXJ2aWNlO3RoaXMuZG93bmxvYWRNYW5hZ2VyPXQuZG93bmxvYWRNYW5hZ2VyO3RoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoPXQuaW1hZ2VSZXNvdXJjZXNQYXRoO3RoaXMucmVuZGVyRm9ybXM9dC5yZW5kZXJGb3Jtczt0aGlzLnN2Z0ZhY3Rvcnk9dC5zdmdGYWN0b3J5O3RoaXMuYW5ub3RhdGlvblN0b3JhZ2U9dC5hbm5vdGF0aW9uU3RvcmFnZTt0aGlzLmVuYWJsZVNjcmlwdGluZz10LmVuYWJsZVNjcmlwdGluZzt0aGlzLmhhc0pTQWN0aW9ucz10Lmhhc0pTQWN0aW9uczt0aGlzLl9maWVsZE9iamVjdHM9dC5maWVsZE9iamVjdHM7dGhpcy5wYXJlbnQ9dC5wYXJlbnQ7ZSYmKHRoaXMuY29udGFpbmVyPXRoaXMuX2NyZWF0ZUNvbnRhaW5lcihuKSk7aSYmdGhpcy5fY3JlYXRlUXVhZHJpbGF0ZXJhbHMoKX1fY3JlYXRlQ29udGFpbmVyKHQpe2NvbnN0e2RhdGE6ZSxwYXJlbnQ6e3BhZ2U6bix2aWV3cG9ydDpyfX09dGhpcyxzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iKTtzLnNldEF0dHJpYnV0ZSgiZGF0YS1hbm5vdGF0aW9uLWlkIixlLmlkKTtzLnN0eWxlLnpJbmRleD10aGlzLnBhcmVudC56SW5kZXgrKzt0aGlzLmRhdGEucG9wdXBSZWYmJnMuc2V0QXR0cmlidXRlKCJhcmlhLWhhc3BvcHVwIiwiZGlhbG9nIik7ZS5ub1JvdGF0ZSYmcy5jbGFzc0xpc3QuYWRkKCJub3JvdGF0ZSIpO2NvbnN0e3BhZ2VXaWR0aDphLHBhZ2VIZWlnaHQ6byxwYWdlWDpsLHBhZ2VZOmN9PXIucmF3RGltcztpZighZS5yZWN0fHx0aGlzIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uRWxlbWVudCl7Y29uc3R7cm90YXRpb246dH09ZTtlLmhhc093bkNhbnZhc3x8MD09PXR8fHRoaXMuc2V0Um90YXRpb24odCxzKTtyZXR1cm4gc31jb25zdHt3aWR0aDpoLGhlaWdodDpkfT1nZXRSZWN0RGltcyhlLnJlY3QpLHU9aS5VdGlsLm5vcm1hbGl6ZVJlY3QoW2UucmVjdFswXSxuLnZpZXdbM10tZS5yZWN0WzFdK24udmlld1sxXSxlLnJlY3RbMl0sbi52aWV3WzNdLWUucmVjdFszXStuLnZpZXdbMV1dKTtpZighdCYmZS5ib3JkZXJTdHlsZS53aWR0aD4wKXtzLnN0eWxlLmJvcmRlcldpZHRoPWAke2UuYm9yZGVyU3R5bGUud2lkdGh9cHhgO2NvbnN0IHQ9ZS5ib3JkZXJTdHlsZS5ob3Jpem9udGFsQ29ybmVyUmFkaXVzLG49ZS5ib3JkZXJTdHlsZS52ZXJ0aWNhbENvcm5lclJhZGl1cztpZih0PjB8fG4+MCl7Y29uc3QgZT1gY2FsYygke3R9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSAvIGNhbGMoJHtufXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3Muc3R5bGUuYm9yZGVyUmFkaXVzPWV9ZWxzZSBpZih0aGlzIGluc3RhbmNlb2YgUmFkaW9CdXR0b25XaWRnZXRBbm5vdGF0aW9uRWxlbWVudCl7Y29uc3QgdD1gY2FsYygke2h9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSAvIGNhbGMoJHtkfXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3Muc3R5bGUuYm9yZGVyUmFkaXVzPXR9c3dpdGNoKGUuYm9yZGVyU3R5bGUuc3R5bGUpe2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlNPTElEOnMuc3R5bGUuYm9yZGVyU3R5bGU9InNvbGlkIjticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5EQVNIRUQ6cy5zdHlsZS5ib3JkZXJTdHlsZT0iZGFzaGVkIjticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5CRVZFTEVEOigwLGkud2FybikoIlVuaW1wbGVtZW50ZWQgYm9yZGVyIHN0eWxlOiBiZXZlbGVkIik7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuSU5TRVQ6KDAsaS53YXJuKSgiVW5pbXBsZW1lbnRlZCBib3JkZXIgc3R5bGU6IGluc2V0Iik7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuVU5ERVJMSU5FOnMuc3R5bGUuYm9yZGVyQm90dG9tU3R5bGU9InNvbGlkIn1jb25zdCByPWUuYm9yZGVyQ29sb3J8fG51bGw7aWYocil7dGhpcy4jRGU9ITA7cy5zdHlsZS5ib3JkZXJDb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKDB8clswXSwwfHJbMV0sMHxyWzJdKX1lbHNlIHMuc3R5bGUuYm9yZGVyV2lkdGg9MH1zLnN0eWxlLmxlZnQ9MTAwKih1WzBdLWwpL2ErIiUiO3Muc3R5bGUudG9wPTEwMCoodVsxXS1jKS9vKyIlIjtjb25zdHtyb3RhdGlvbjpwfT1lO2lmKGUuaGFzT3duQ2FudmFzfHwwPT09cCl7cy5zdHlsZS53aWR0aD0xMDAqaC9hKyIlIjtzLnN0eWxlLmhlaWdodD0xMDAqZC9vKyIlIn1lbHNlIHRoaXMuc2V0Um90YXRpb24ocCxzKTtyZXR1cm4gc31zZXRSb3RhdGlvbih0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5jb250YWluZXI7aWYoIXRoaXMuZGF0YS5yZWN0KXJldHVybjtjb25zdHtwYWdlV2lkdGg6bixwYWdlSGVpZ2h0Oml9PXRoaXMucGFyZW50LnZpZXdwb3J0LnJhd0RpbXMse3dpZHRoOnIsaGVpZ2h0OnN9PWdldFJlY3REaW1zKHRoaXMuZGF0YS5yZWN0KTtsZXQgYSxvO2lmKHQlMTgwPT0wKXthPTEwMCpyL247bz0xMDAqcy9pfWVsc2V7YT0xMDAqcy9uO289MTAwKnIvaX1lLnN0eWxlLndpZHRoPWAke2F9JWA7ZS5zdHlsZS5oZWlnaHQ9YCR7b30lYDtlLnNldEF0dHJpYnV0ZSgiZGF0YS1tYWluLXJvdGF0aW9uIiwoMzYwLXQpJTM2MCl9Z2V0IF9jb21tb25BY3Rpb25zKCl7Y29uc3Qgc2V0Q29sb3I9KHQsZSxuKT0+e2NvbnN0IGk9bi5kZXRhaWxbdF07bi50YXJnZXQuc3R5bGVbZV09YS5Db2xvckNvbnZlcnRlcnNbYCR7aVswXX1fSFRNTGBdKGkuc2xpY2UoMSkpfTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2NvbW1vbkFjdGlvbnMiLHtkaXNwbGF5OnQ9Pntjb25zdCBlPXQuZGV0YWlsLmRpc3BsYXklMj09MTt0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PWU/ImhpZGRlbiI6InZpc2libGUiO3RoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLHtoaWRkZW46ZSxwcmludDowPT09dC5kZXRhaWwuZGlzcGxheXx8Mz09PXQuZGV0YWlsLmRpc3BsYXl9KX0scHJpbnQ6dD0+e3RoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLHtwcmludDp0LmRldGFpbC5wcmludH0pfSxoaWRkZW46dD0+e3RoaXMuY29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHk9dC5kZXRhaWwuaGlkZGVuPyJoaWRkZW4iOiJ2aXNpYmxlIjt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7aGlkZGVuOnQuZGV0YWlsLmhpZGRlbn0pfSxmb2N1czp0PT57c2V0VGltZW91dCgoKCk9PnQudGFyZ2V0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiExfSkpLDApfSx1c2VyTmFtZTp0PT57dC50YXJnZXQudGl0bGU9dC5kZXRhaWwudXNlck5hbWV9LHJlYWRvbmx5OnQ9Pnt0LmRldGFpbC5yZWFkb25seT90LnRhcmdldC5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwiIik6dC50YXJnZXQucmVtb3ZlQXR0cmlidXRlKCJyZWFkb25seSIpfSxyZXF1aXJlZDp0PT57dGhpcy5fc2V0UmVxdWlyZWQodC50YXJnZXQsdC5kZXRhaWwucmVxdWlyZWQpfSxiZ0NvbG9yOnQ9PntzZXRDb2xvcigiYmdDb2xvciIsImJhY2tncm91bmRDb2xvciIsdCl9LGZpbGxDb2xvcjp0PT57c2V0Q29sb3IoImZpbGxDb2xvciIsImJhY2tncm91bmRDb2xvciIsdCl9LGZnQ29sb3I6dD0+e3NldENvbG9yKCJmZ0NvbG9yIiwiY29sb3IiLHQpfSx0ZXh0Q29sb3I6dD0+e3NldENvbG9yKCJ0ZXh0Q29sb3IiLCJjb2xvciIsdCl9LGJvcmRlckNvbG9yOnQ9PntzZXRDb2xvcigiYm9yZGVyQ29sb3IiLCJib3JkZXJDb2xvciIsdCl9LHN0cm9rZUNvbG9yOnQ9PntzZXRDb2xvcigic3Ryb2tlQ29sb3IiLCJib3JkZXJDb2xvciIsdCl9LHJvdGF0aW9uOnQ9Pntjb25zdCBlPXQuZGV0YWlsLnJvdGF0aW9uO3RoaXMuc2V0Um90YXRpb24oZSk7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0aGlzLmRhdGEuaWQse3JvdGF0aW9uOmV9KX19KX1fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KHQsZSl7Y29uc3Qgbj10aGlzLl9jb21tb25BY3Rpb25zO2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuZGV0YWlsKSl7Y29uc3Qgcj10W2ldfHxuW2ldO3I/LihlKX19X3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKHQpe2lmKCF0aGlzLmVuYWJsZVNjcmlwdGluZylyZXR1cm47Y29uc3QgZT10aGlzLmFubm90YXRpb25TdG9yYWdlLmdldFJhd1ZhbHVlKHRoaXMuZGF0YS5pZCk7aWYoIWUpcmV0dXJuO2NvbnN0IG49dGhpcy5fY29tbW9uQWN0aW9ucztmb3IoY29uc3RbaSxyXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtjb25zdCBzPW5baV07aWYocyl7cyh7ZGV0YWlsOntbaV06cn0sdGFyZ2V0OnR9KTtkZWxldGUgZVtpXX19fV9jcmVhdGVRdWFkcmlsYXRlcmFscygpe2lmKCF0aGlzLmNvbnRhaW5lcilyZXR1cm47Y29uc3R7cXVhZFBvaW50czp0fT10aGlzLmRhdGE7aWYoIXQpcmV0dXJuO2NvbnN0W2UsbixpLHJdPXRoaXMuZGF0YS5yZWN0O2lmKDE9PT10Lmxlbmd0aCl7Y29uc3RbLHt4OnMseTphfSx7eDpvLHk6bH1dPXRbMF07aWYoaT09PXMmJnI9PT1hJiZlPT09byYmbj09PWwpcmV0dXJufWNvbnN0e3N0eWxlOnN9PXRoaXMuY29udGFpbmVyO2xldCBhO2lmKHRoaXMuI0RlKXtjb25zdHtib3JkZXJDb2xvcjp0LGJvcmRlcldpZHRoOmV9PXM7cy5ib3JkZXJXaWR0aD0wO2E9WyJ1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCIsJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIicsJyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB2aWV3Qm94PSIwIDAgMSAxIj4nLGA8ZyBmaWxsPSJ0cmFuc3BhcmVudCIgc3Ryb2tlPSIke3R9IiBzdHJva2Utd2lkdGg9IiR7ZX0iPmBdO3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhc0JvcmRlciIpfWNvbnN0IG89aS1lLGw9ci1uLHtzdmdGYWN0b3J5OmN9PXRoaXMsaD1jLmNyZWF0ZUVsZW1lbnQoInN2ZyIpO2guY2xhc3NMaXN0LmFkZCgicXVhZHJpbGF0ZXJhbHNDb250YWluZXIiKTtoLnNldEF0dHJpYnV0ZSgid2lkdGgiLDApO2guc2V0QXR0cmlidXRlKCJoZWlnaHQiLDApO2NvbnN0IGQ9Yy5jcmVhdGVFbGVtZW50KCJkZWZzIik7aC5hcHBlbmQoZCk7Y29uc3QgdT1jLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIikscD1gY2xpcHBhdGhfJHt0aGlzLmRhdGEuaWR9YDt1LnNldEF0dHJpYnV0ZSgiaWQiLHApO3Uuc2V0QXR0cmlidXRlKCJjbGlwUGF0aFVuaXRzIiwib2JqZWN0Qm91bmRpbmdCb3giKTtkLmFwcGVuZCh1KTtmb3IoY29uc3RbLHt4Om4seTppfSx7eDpzLHk6aH1db2YgdCl7Y29uc3QgdD1jLmNyZWF0ZUVsZW1lbnQoInJlY3QiKSxkPShzLWUpL28scD0oci1pKS9sLGY9KG4tcykvbyxnPShpLWgpL2w7dC5zZXRBdHRyaWJ1dGUoIngiLGQpO3Quc2V0QXR0cmlidXRlKCJ5IixwKTt0LnNldEF0dHJpYnV0ZSgid2lkdGgiLGYpO3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLGcpO3UuYXBwZW5kKHQpO2E/LnB1c2goYDxyZWN0IHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgeD0iJHtkfSIgeT0iJHtwfSIgd2lkdGg9IiR7Zn0iIGhlaWdodD0iJHtnfSIvPmApfWlmKHRoaXMuI0RlKXthLnB1c2goIjwvZz48L3N2Zz4nKSIpO3MuYmFja2dyb3VuZEltYWdlPWEuam9pbigiIil9dGhpcy5jb250YWluZXIuYXBwZW5kKGgpO3RoaXMuY29udGFpbmVyLnN0eWxlLmNsaXBQYXRoPWB1cmwoIyR7cH0pYH1fY3JlYXRlUG9wdXAoKXtjb25zdHtjb250YWluZXI6dCxkYXRhOmV9PXRoaXM7dC5zZXRBdHRyaWJ1dGUoImFyaWEtaGFzcG9wdXAiLCJkaWFsb2ciKTtjb25zdCBuPW5ldyBQb3B1cEFubm90YXRpb25FbGVtZW50KHtkYXRhOntjb2xvcjplLmNvbG9yLHRpdGxlT2JqOmUudGl0bGVPYmosbW9kaWZpY2F0aW9uRGF0ZTplLm1vZGlmaWNhdGlvbkRhdGUsY29udGVudHNPYmo6ZS5jb250ZW50c09iaixyaWNoVGV4dDplLnJpY2hUZXh0LHBhcmVudFJlY3Q6ZS5yZWN0LGJvcmRlclN0eWxlOjAsaWQ6YHBvcHVwXyR7ZS5pZH1gLHJvdGF0aW9uOmUucm90YXRpb259LHBhcmVudDp0aGlzLnBhcmVudCxlbGVtZW50czpbdGhpc119KTt0aGlzLnBhcmVudC5kaXYuYXBwZW5kKG4ucmVuZGVyKCkpfXJlbmRlcigpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYEFubm90YXRpb25FbGVtZW50LnJlbmRlcmAgY2FsbGVkIil9X2dldEVsZW1lbnRzQnlOYW1lKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO2NvbnN0IG49W107aWYodGhpcy5fZmllbGRPYmplY3RzKXtjb25zdCByPXRoaXMuX2ZpZWxkT2JqZWN0c1t0XTtpZihyKWZvcihjb25zdHtwYWdlOnQsaWQ6cyxleHBvcnRWYWx1ZXM6YX1vZiByKXtpZigtMT09PXQpY29udGludWU7aWYocz09PWUpY29udGludWU7Y29uc3Qgcj0ic3RyaW5nIj09dHlwZW9mIGE/YTpudWxsLG89ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtZWxlbWVudC1pZD0iJHtzfSJdYCk7IW98fGguaGFzKG8pP24ucHVzaCh7aWQ6cyxleHBvcnRWYWx1ZTpyLGRvbUVsZW1lbnQ6b30pOigwLGkud2FybikoYF9nZXRFbGVtZW50c0J5TmFtZSAtIGVsZW1lbnQgbm90IGFsbG93ZWQ6ICR7c31gKX1yZXR1cm4gbn1mb3IoY29uc3QgaSBvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSh0KSl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09aSxyPWkuZ2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiKTtyIT09ZSYmKGguaGFzKGkpJiZuLnB1c2goe2lkOnIsZXhwb3J0VmFsdWU6dCxkb21FbGVtZW50Oml9KSl9cmV0dXJuIG59c2hvdygpe3RoaXMuY29udGFpbmVyJiYodGhpcy5jb250YWluZXIuaGlkZGVuPSExKTt0aGlzLnBvcHVwPy5tYXliZVNob3coKX1oaWRlKCl7dGhpcy5jb250YWluZXImJih0aGlzLmNvbnRhaW5lci5oaWRkZW49ITApO3RoaXMucG9wdXA/LmZvcmNlSGlkZSgpfWdldEVsZW1lbnRzVG9UcmlnZ2VyUG9wdXAoKXtyZXR1cm4gdGhpcy5jb250YWluZXJ9YWRkSGlnaGxpZ2h0QXJlYSgpe2NvbnN0IHQ9dGhpcy5nZXRFbGVtZW50c1RvVHJpZ2dlclBvcHVwKCk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWUuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0QXJlYSIpO2Vsc2UgdC5jbGFzc0xpc3QuYWRkKCJoaWdobGlnaHRBcmVhIil9X2VkaXRPbkRvdWJsZUNsaWNrKCl7Y29uc3R7YW5ub3RhdGlvbkVkaXRvclR5cGU6dCxkYXRhOntpZDplfX09dGhpczt0aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsKCgpPT57dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goInN3aXRjaGFubm90YXRpb25lZGl0b3Jtb2RlIix7c291cmNlOnRoaXMsbW9kZTp0LGVkaXRJZDplfSl9KSl9fWNsYXNzIExpbmtBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMCxpZ25vcmVCb3JkZXI6ISFlPy5pZ25vcmVCb3JkZXIsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KTt0aGlzLmlzVG9vbHRpcE9ubHk9dC5kYXRhLmlzVG9vbHRpcE9ubHl9cmVuZGVyKCl7Y29uc3R7ZGF0YTp0LGxpbmtTZXJ2aWNlOmV9PXRoaXMsbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7bi5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsdC5pZCk7bGV0IGk9ITE7aWYodC51cmwpe2UuYWRkTGlua0F0dHJpYnV0ZXMobix0LnVybCx0Lm5ld1dpbmRvdyk7aT0hMH1lbHNlIGlmKHQuYWN0aW9uKXt0aGlzLl9iaW5kTmFtZWRBY3Rpb24obix0LmFjdGlvbik7aT0hMH1lbHNlIGlmKHQuYXR0YWNobWVudCl7dGhpcy5fYmluZEF0dGFjaG1lbnQobix0LmF0dGFjaG1lbnQpO2k9ITB9ZWxzZSBpZih0LnNldE9DR1N0YXRlKXt0aGlzLiNPZShuLHQuc2V0T0NHU3RhdGUpO2k9ITB9ZWxzZSBpZih0LmRlc3Qpe3RoaXMuX2JpbmRMaW5rKG4sdC5kZXN0KTtpPSEwfWVsc2V7aWYodC5hY3Rpb25zJiYodC5hY3Rpb25zLkFjdGlvbnx8dC5hY3Rpb25zWyJNb3VzZSBVcCJdfHx0LmFjdGlvbnNbIk1vdXNlIERvd24iXSkmJnRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7dGhpcy5fYmluZEpTQWN0aW9uKG4sdCk7aT0hMH1pZih0LnJlc2V0Rm9ybSl7dGhpcy5fYmluZFJlc2V0Rm9ybUFjdGlvbihuLHQucmVzZXRGb3JtKTtpPSEwfWVsc2UgaWYodGhpcy5pc1Rvb2x0aXBPbmx5JiYhaSl7dGhpcy5fYmluZExpbmsobiwiIik7aT0hMH19dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibGlua0Fubm90YXRpb24iKTtpJiZ0aGlzLmNvbnRhaW5lci5hcHBlbmQobik7cmV0dXJuIHRoaXMuY29udGFpbmVyfSNMZSgpe3RoaXMuY29udGFpbmVyLnNldEF0dHJpYnV0ZSgiZGF0YS1pbnRlcm5hbC1saW5rIiwiIil9X2JpbmRMaW5rKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpO3Qub25jbGljaz0oKT0+e2UmJnRoaXMubGlua1NlcnZpY2UuZ29Ub0Rlc3RpbmF0aW9uKGUpO3JldHVybiExfTsoZXx8IiI9PT1lKSYmdGhpcy4jTGUoKX1fYmluZE5hbWVkQWN0aW9uKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVOYW1lZEFjdGlvbihlKTtyZXR1cm4hMX07dGhpcy4jTGUoKX1fYmluZEF0dGFjaG1lbnQodCxlKXt0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpO3Qub25jbGljaz0oKT0+e3RoaXMuZG93bmxvYWRNYW5hZ2VyPy5vcGVuT3JEb3dubG9hZERhdGEodGhpcy5jb250YWluZXIsZS5jb250ZW50LGUuZmlsZW5hbWUpO3JldHVybiExfTt0aGlzLiNMZSgpfSNPZSh0LGUpe3QuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIik7dC5vbmNsaWNrPSgpPT57dGhpcy5saW5rU2VydmljZS5leGVjdXRlU2V0T0NHU3RhdGUoZSk7cmV0dXJuITF9O3RoaXMuI0xlKCl9X2JpbmRKU0FjdGlvbih0LGUpe3QuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIik7Y29uc3Qgbj1uZXcgTWFwKFtbIkFjdGlvbiIsIm9uY2xpY2siXSxbIk1vdXNlIFVwIiwib25tb3VzZXVwIl0sWyJNb3VzZSBEb3duIiwib25tb3VzZWRvd24iXV0pO2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuYWN0aW9ucykpe2NvbnN0IHI9bi5nZXQoaSk7ciYmKHRbcl09KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZS5pZCxuYW1lOml9fSk7cmV0dXJuITF9KX10Lm9uY2xpY2t8fCh0Lm9uY2xpY2s9KCk9PiExKTt0aGlzLiNMZSgpfV9iaW5kUmVzZXRGb3JtQWN0aW9uKHQsZSl7Y29uc3Qgbj10Lm9uY2xpY2s7bnx8KHQuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIikpO3RoaXMuI0xlKCk7aWYodGhpcy5fZmllbGRPYmplY3RzKXQub25jbGljaz0oKT0+e24/LigpO2NvbnN0e2ZpZWxkczp0LHJlZnM6cixpbmNsdWRlOnN9PWUsYT1bXTtpZigwIT09dC5sZW5ndGh8fDAhPT1yLmxlbmd0aCl7Y29uc3QgZT1uZXcgU2V0KHIpO2Zvcihjb25zdCBuIG9mIHQpe2NvbnN0IHQ9dGhpcy5fZmllbGRPYmplY3RzW25dfHxbXTtmb3IoY29uc3R7aWQ6bn1vZiB0KWUuYWRkKG4pfWZvcihjb25zdCB0IG9mIE9iamVjdC52YWx1ZXModGhpcy5fZmllbGRPYmplY3RzKSlmb3IoY29uc3QgbiBvZiB0KWUuaGFzKG4uaWQpPT09cyYmYS5wdXNoKG4pfWVsc2UgZm9yKGNvbnN0IHQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZE9iamVjdHMpKWEucHVzaCguLi50KTtjb25zdCBvPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UsbD1bXTtmb3IoY29uc3QgdCBvZiBhKXtjb25zdHtpZDplfT10O2wucHVzaChlKTtzd2l0Y2godC50eXBlKXtjYXNlInRleHQiOntjb25zdCBuPXQuZGVmYXVsdFZhbHVlfHwiIjtvLnNldFZhbHVlKGUse3ZhbHVlOm59KTticmVha31jYXNlImNoZWNrYm94IjpjYXNlInJhZGlvYnV0dG9uIjp7Y29uc3Qgbj10LmRlZmF1bHRWYWx1ZT09PXQuZXhwb3J0VmFsdWVzO28uc2V0VmFsdWUoZSx7dmFsdWU6bn0pO2JyZWFrfWNhc2UiY29tYm9ib3giOmNhc2UibGlzdGJveCI6e2NvbnN0IG49dC5kZWZhdWx0VmFsdWV8fCIiO28uc2V0VmFsdWUoZSx7dmFsdWU6bn0pO2JyZWFrfWRlZmF1bHQ6Y29udGludWV9Y29uc3Qgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1lbGVtZW50LWlkPSIke2V9Il1gKTtuJiYoaC5oYXMobik/bi5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgicmVzZXRmb3JtIikpOigwLGkud2FybikoYF9iaW5kUmVzZXRGb3JtQWN0aW9uIC0gZWxlbWVudCBub3QgYWxsb3dlZDogJHtlfWApKX10aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOiJhcHAiLGlkczpsLG5hbWU6IlJlc2V0Rm9ybSJ9fSk7cmV0dXJuITF9O2Vsc2V7KDAsaS53YXJuKSgnX2JpbmRSZXNldEZvcm1BY3Rpb24gLSAicmVzZXRGb3JtIiBhY3Rpb24gbm90IHN1cHBvcnRlZCwgZW5zdXJlIHRoYXQgdGhlIGBmaWVsZE9iamVjdHNgIHBhcmFtZXRlciBpcyBwcm92aWRlZC4nKTtufHwodC5vbmNsaWNrPSgpPT4hMSl9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLnBvcHVwUmVmfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKX0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInRleHRBbm5vdGF0aW9uIik7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTt0LnNyYz10aGlzLmltYWdlUmVzb3VyY2VzUGF0aCsiYW5ub3RhdGlvbi0iK3RoaXMuZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkrIi5zdmciO3QuYWx0PSJbe3t0eXBlfX0gQW5ub3RhdGlvbl0iO3QuZGF0YXNldC5sMTBuSWQ9InRleHRfYW5ub3RhdGlvbl90eXBlIjt0LmRhdGFzZXQubDEwbkFyZ3M9SlNPTi5zdHJpbmdpZnkoe3R5cGU6dGhpcy5kYXRhLm5hbWV9KTt0aGlzLmRhdGEucG9wdXBSZWZ8fHRoaXMuX2NyZWF0ZVBvcHVwKCk7dGhpcy5jb250YWluZXIuYXBwZW5kKHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtyZW5kZXIoKXt0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0JiYodGhpcy5jb250YWluZXIudGl0bGU9dGhpcy5kYXRhLmFsdGVybmF0aXZlVGV4dCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfXNob3dFbGVtZW50QW5kSGlkZUNhbnZhcyh0KXtpZih0aGlzLmRhdGEuaGFzT3duQ2FudmFzKXsiQ0FOVkFTIj09PXQucHJldmlvdXNTaWJsaW5nPy5ub2RlTmFtZSYmKHQucHJldmlvdXNTaWJsaW5nLmhpZGRlbj0hMCk7dC5oaWRkZW49ITF9fV9nZXRLZXlNb2RpZmllcih0KXtjb25zdHtpc1dpbjplLGlzTWFjOm59PWkuRmVhdHVyZVRlc3QucGxhdGZvcm07cmV0dXJuIGUmJnQuY3RybEtleXx8biYmdC5tZXRhS2V5fV9zZXRFdmVudExpc3RlbmVyKHQsZSxuLGkpe2UuaW5jbHVkZXMoIm1vdXNlIik/dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6bix2YWx1ZTppKHQpLHNoaWZ0OnQuc2hpZnRLZXksbW9kaWZpZXI6dGhpcy5fZ2V0S2V5TW9kaWZpZXIodCl9fSl9KSk6dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6bix2YWx1ZTppKHQpfX0pfSkpfV9zZXRFdmVudExpc3RlbmVycyh0LGUsbil7Zm9yKGNvbnN0W2kscl1vZiBlKSgiQWN0aW9uIj09PXJ8fHRoaXMuZGF0YS5hY3Rpb25zPy5bcl0pJiZ0aGlzLl9zZXRFdmVudExpc3RlbmVyKHQsaSxyLG4pfV9zZXRCYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yfHxudWxsO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPW51bGw9PT1lPyJ0cmFuc3BhcmVudCI6aS5VdGlsLm1ha2VIZXhDb2xvcihlWzBdLGVbMV0sZVsyXSl9X3NldFRleHRTdHlsZSh0KXtjb25zdCBlPVsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0se2ZvbnRDb2xvcjpufT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHI9dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8OSxzPXQuc3R5bGU7bGV0IGE7Y29uc3Qgcm91bmRUb09uZURlY2ltYWw9dD0+TWF0aC5yb3VuZCgxMCp0KS8xMDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjb25zdCB0PU1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLTIpLGU9dC8oTWF0aC5yb3VuZCh0LyhpLkxJTkVfRkFDVE9SKnIpKXx8MSk7YT1NYXRoLm1pbihyLHJvdW5kVG9PbmVEZWNpbWFsKGUvaS5MSU5FX0ZBQ1RPUikpfWVsc2V7Y29uc3QgdD1NYXRoLmFicyh0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXS0yKTthPU1hdGgubWluKHIscm91bmRUb09uZURlY2ltYWwodC9pLkxJTkVfRkFDVE9SKSl9cy5mb250U2l6ZT1gY2FsYygke2F9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7cy5jb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKG5bMF0sblsxXSxuWzJdKTtudWxsIT09dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQmJihzLnRleHRBbGlnbj1lW3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50XSl9X3NldFJlcXVpcmVkKHQsZSl7ZT90LnNldEF0dHJpYnV0ZSgicmVxdWlyZWQiLCEwKTp0LnJlbW92ZUF0dHJpYnV0ZSgicmVxdWlyZWQiKTt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsZSl9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfHwhdC5kYXRhLmhhc0FwcGVhcmFuY2UmJiEhdC5kYXRhLmZpZWxkVmFsdWV9KX1zZXRQcm9wZXJ0eU9uU2libGluZ3ModCxlLG4saSl7Y29uc3Qgcj10aGlzLmFubm90YXRpb25TdG9yYWdlO2Zvcihjb25zdCBzIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSx0LmlkKSl7cy5kb21FbGVtZW50JiYocy5kb21FbGVtZW50W2VdPW4pO3Iuc2V0VmFsdWUocy5pZCx7W2ldOm59KX19cmVuZGVyKCl7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLmlkO3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInRleHRXaWRnZXRBbm5vdGF0aW9uIik7bGV0IG49bnVsbDtpZih0aGlzLnJlbmRlckZvcm1zKXtjb25zdCBpPXQuZ2V0VmFsdWUoZSx7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KTtsZXQgcj1pLnZhbHVlfHwiIjtjb25zdCBzPXQuZ2V0VmFsdWUoZSx7Y2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW59KS5jaGFyTGltaXQ7cyYmci5sZW5ndGg+cyYmKHI9ci5zbGljZSgwLHMpKTtsZXQgYT1pLmZvcm1hdHRlZFZhbHVlfHx0aGlzLmRhdGEudGV4dENvbnRlbnQ/LmpvaW4oIlxuIil8fG51bGw7YSYmdGhpcy5kYXRhLmNvbWImJihhPWEucmVwbGFjZUFsbCgvXHMrL2csIiIpKTtjb25zdCBvPXt1c2VyVmFsdWU6cixmb3JtYXR0ZWRWYWx1ZTphLGxhc3RDb21taXR0ZWRWYWx1ZTpudWxsLGNvbW1pdEtleToxfTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7bi50ZXh0Q29udGVudD1hPz9yO3RoaXMuZGF0YS5kb05vdFNjcm9sbCYmKG4uc3R5bGUub3ZlcmZsb3dZPSJoaWRkZW4iKX1lbHNle249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtuLnR5cGU9InRleHQiO24uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYT8/cik7dGhpcy5kYXRhLmRvTm90U2Nyb2xsJiYobi5zdHlsZS5vdmVyZmxvd1g9ImhpZGRlbiIpfXRoaXMuZGF0YS5oYXNPd25DYW52YXMmJihuLmhpZGRlbj0hMCk7aC5hZGQobik7bi5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsZSk7bi5kaXNhYmxlZD10aGlzLmRhdGEucmVhZE9ubHk7bi5uYW1lPXRoaXMuZGF0YS5iYXNlRmllbGROYW1lfHx0aGlzLmRhdGEuZmllbGROYW1lO24udGFiSW5kZXg9Yzt0aGlzLl9zZXRSZXF1aXJlZChuLHRoaXMuZGF0YS5yZXF1aXJlZCk7cyYmKG4ubWF4TGVuZ3RoPXMpO24uYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChpPT57dC5zZXRWYWx1ZShlLHt2YWx1ZTppLnRhcmdldC52YWx1ZX0pO3RoaXMuc2V0UHJvcGVydHlPblNpYmxpbmdzKG4sInZhbHVlIixpLnRhcmdldC52YWx1ZSwidmFsdWUiKTtvLmZvcm1hdHRlZFZhbHVlPW51bGx9KSk7bi5hZGRFdmVudExpc3RlbmVyKCJyZXNldGZvcm0iLCh0PT57Y29uc3QgZT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU/PyIiO24udmFsdWU9by51c2VyVmFsdWU9ZTtvLmZvcm1hdHRlZFZhbHVlPW51bGx9KSk7bGV0IGJsdXJMaXN0ZW5lcj10PT57Y29uc3R7Zm9ybWF0dGVkVmFsdWU6ZX09bztudWxsIT1lJiYodC50YXJnZXQudmFsdWU9ZSk7dC50YXJnZXQuc2Nyb2xsTGVmdD0wfTtpZih0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMpe24uYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCh0PT57Y29uc3R7dGFyZ2V0OmV9PXQ7by51c2VyVmFsdWUmJihlLnZhbHVlPW8udXNlclZhbHVlKTtvLmxhc3RDb21taXR0ZWRWYWx1ZT1lLnZhbHVlO28uY29tbWl0S2V5PTF9KSk7bi5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKG49Pnt0aGlzLnNob3dFbGVtZW50QW5kSGlkZUNhbnZhcyhuLnRhcmdldCk7Y29uc3QgaT17dmFsdWUobil7by51c2VyVmFsdWU9bi5kZXRhaWwudmFsdWU/PyIiO3Quc2V0VmFsdWUoZSx7dmFsdWU6by51c2VyVmFsdWUudG9TdHJpbmcoKX0pO24udGFyZ2V0LnZhbHVlPW8udXNlclZhbHVlfSxmb3JtYXR0ZWRWYWx1ZShuKXtjb25zdHtmb3JtYXR0ZWRWYWx1ZTppfT1uLmRldGFpbDtvLmZvcm1hdHRlZFZhbHVlPWk7bnVsbCE9aSYmbi50YXJnZXQhPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYobi50YXJnZXQudmFsdWU9aSk7dC5zZXRWYWx1ZShlLHtmb3JtYXR0ZWRWYWx1ZTppfSl9LHNlbFJhbmdlKHQpe3QudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKC4uLnQuZGV0YWlsLnNlbFJhbmdlKX0sY2hhckxpbWl0Om49Pntjb25zdHtjaGFyTGltaXQ6aX09bi5kZXRhaWwse3RhcmdldDpyfT1uO2lmKDA9PT1pKXtyLnJlbW92ZUF0dHJpYnV0ZSgibWF4TGVuZ3RoIik7cmV0dXJufXIuc2V0QXR0cmlidXRlKCJtYXhMZW5ndGgiLGkpO2xldCBzPW8udXNlclZhbHVlO2lmKHMmJiEocy5sZW5ndGg8PWkpKXtzPXMuc2xpY2UoMCxpKTtyLnZhbHVlPW8udXNlclZhbHVlPXM7dC5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpzLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6ci5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6ci5zZWxlY3Rpb25FbmR9fSl9fX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGksbil9KSk7bi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e28uY29tbWl0S2V5PTE7bGV0IG49LTE7IkVzY2FwZSI9PT10LmtleT9uPTA6IkVudGVyIiE9PXQua2V5fHx0aGlzLmRhdGEubXVsdGlMaW5lPyJUYWIiPT09dC5rZXkmJihvLmNvbW1pdEtleT0zKTpuPTI7aWYoLTE9PT1uKXJldHVybjtjb25zdHt2YWx1ZTppfT10LnRhcmdldDtpZihvLmxhc3RDb21taXR0ZWRWYWx1ZSE9PWkpe28ubGFzdENvbW1pdHRlZFZhbHVlPWk7by51c2VyVmFsdWU9aTt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZSxuYW1lOiJLZXlzdHJva2UiLHZhbHVlOmksd2lsbENvbW1pdDohMCxjb21taXRLZXk6bixzZWxTdGFydDp0LnRhcmdldC5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6dC50YXJnZXQuc2VsZWN0aW9uRW5kfX0pfX0pKTtjb25zdCBpPWJsdXJMaXN0ZW5lcjtibHVyTGlzdGVuZXI9bnVsbDtuLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCh0PT57aWYoIXQucmVsYXRlZFRhcmdldClyZXR1cm47Y29uc3R7dmFsdWU6bn09dC50YXJnZXQ7by51c2VyVmFsdWU9bjtvLmxhc3RDb21taXR0ZWRWYWx1ZSE9PW4mJnRoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bix3aWxsQ29tbWl0OiEwLGNvbW1pdEtleTpvLmNvbW1pdEtleSxzZWxTdGFydDp0LnRhcmdldC5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6dC50YXJnZXQuc2VsZWN0aW9uRW5kfX0pO2kodCl9KSk7dGhpcy5kYXRhLmFjdGlvbnM/LktleXN0cm9rZSYmbi5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsKHQ9PntvLmxhc3RDb21taXR0ZWRWYWx1ZT1udWxsO2NvbnN0e2RhdGE6bix0YXJnZXQ6aX09dCx7dmFsdWU6cixzZWxlY3Rpb25TdGFydDpzLHNlbGVjdGlvbkVuZDphfT1pO2xldCBsPXMsYz1hO3N3aXRjaCh0LmlucHV0VHlwZSl7Y2FzZSJkZWxldGVXb3JkQmFja3dhcmQiOntjb25zdCB0PXIuc3Vic3RyaW5nKDAscykubWF0Y2goL1x3KlteXHddKiQvKTt0JiYobC09dFswXS5sZW5ndGgpO2JyZWFrfWNhc2UiZGVsZXRlV29yZEZvcndhcmQiOntjb25zdCB0PXIuc3Vic3RyaW5nKHMpLm1hdGNoKC9eW15cd10qXHcqLyk7dCYmKGMrPXRbMF0ubGVuZ3RoKTticmVha31jYXNlImRlbGV0ZUNvbnRlbnRCYWNrd2FyZCI6cz09PWEmJihsLT0xKTticmVhaztjYXNlImRlbGV0ZUNvbnRlbnRGb3J3YXJkIjpzPT09YSYmKGMrPTEpfXQucHJldmVudERlZmF1bHQoKTt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZSxuYW1lOiJLZXlzdHJva2UiLHZhbHVlOnIsY2hhbmdlOm58fCIiLHdpbGxDb21taXQ6ITEsc2VsU3RhcnQ6bCxzZWxFbmQ6Y319KX0pKTt0aGlzLl9zZXRFdmVudExpc3RlbmVycyhuLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXV0sKHQ9PnQudGFyZ2V0LnZhbHVlKSl9Ymx1ckxpc3RlbmVyJiZuLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLGJsdXJMaXN0ZW5lcik7aWYodGhpcy5kYXRhLmNvbWIpe2NvbnN0IHQ9KHRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdKS9zO24uY2xhc3NMaXN0LmFkZCgiY29tYiIpO24uc3R5bGUubGV0dGVyU3BhY2luZz1gY2FsYygke3R9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpIC0gMWNoKWB9fWVsc2V7bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtuLnRleHRDb250ZW50PXRoaXMuZGF0YS5maWVsZFZhbHVlO24uc3R5bGUudmVydGljYWxBbGlnbj0ibWlkZGxlIjtuLnN0eWxlLmRpc3BsYXk9InRhYmxlLWNlbGwifXRoaXMuX3NldFRleHRTdHlsZShuKTt0aGlzLl9zZXRCYWNrZ3JvdW5kQ29sb3Iobik7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMobik7dGhpcy5jb250YWluZXIuYXBwZW5kKG4pO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISF0LmRhdGEuaGFzT3duQ2FudmFzfSl9fWNsYXNzIENoZWNrYm94V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6dC5yZW5kZXJGb3Jtc30pfXJlbmRlcigpe2NvbnN0IHQ9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxlPXRoaXMuZGF0YSxuPWUuaWQ7bGV0IGk9dC5nZXRWYWx1ZShuLHt2YWx1ZTplLmV4cG9ydFZhbHVlPT09ZS5maWVsZFZhbHVlfSkudmFsdWU7aWYoInN0cmluZyI9PXR5cGVvZiBpKXtpPSJPZmYiIT09aTt0LnNldFZhbHVlKG4se3ZhbHVlOml9KX10aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJidXR0b25XaWRnZXRBbm5vdGF0aW9uIiwiY2hlY2tCb3giKTtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7aC5hZGQocik7ci5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsbik7ci5kaXNhYmxlZD1lLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKHIsdGhpcy5kYXRhLnJlcXVpcmVkKTtyLnR5cGU9ImNoZWNrYm94IjtyLm5hbWU9ZS5iYXNlRmllbGROYW1lfHxlLmZpZWxkTmFtZTtpJiZyLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsITApO3Iuc2V0QXR0cmlidXRlKCJleHBvcnRWYWx1ZSIsZS5leHBvcnRWYWx1ZSk7ci50YWJJbmRleD1jO3IuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoaT0+e2NvbnN0e25hbWU6cixjaGVja2VkOnN9PWkudGFyZ2V0O2Zvcihjb25zdCBpIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHIsbikpe2NvbnN0IG49cyYmaS5leHBvcnRWYWx1ZT09PWUuZXhwb3J0VmFsdWU7aS5kb21FbGVtZW50JiYoaS5kb21FbGVtZW50LmNoZWNrZWQ9bik7dC5zZXRWYWx1ZShpLmlkLHt2YWx1ZTpufSl9dC5zZXRWYWx1ZShuLHt2YWx1ZTpzfSl9KSk7ci5hZGRFdmVudExpc3RlbmVyKCJyZXNldGZvcm0iLCh0PT57Y29uc3Qgbj1lLmRlZmF1bHRGaWVsZFZhbHVlfHwiT2ZmIjt0LnRhcmdldC5jaGVja2VkPW49PT1lLmV4cG9ydFZhbHVlfSkpO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7ci5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKGU9Pntjb25zdCBpPXt2YWx1ZShlKXtlLnRhcmdldC5jaGVja2VkPSJPZmYiIT09ZS5kZXRhaWwudmFsdWU7dC5zZXRWYWx1ZShuLHt2YWx1ZTplLnRhcmdldC5jaGVja2VkfSl9fTt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goaSxlKX0pKTt0aGlzLl9zZXRFdmVudExpc3RlbmVycyhyLFtbImNoYW5nZSIsIlZhbGlkYXRlIl0sWyJjaGFuZ2UiLCJBY3Rpb24iXSxbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXV0sKHQ9PnQudGFyZ2V0LmNoZWNrZWQpKX10aGlzLl9zZXRCYWNrZ3JvdW5kQ29sb3Iocik7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMocik7dGhpcy5jb250YWluZXIuYXBwZW5kKHIpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgUmFkaW9CdXR0b25XaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgiYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiIsInJhZGlvQnV0dG9uIik7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLG49ZS5pZDtsZXQgaT10LmdldFZhbHVlKG4se3ZhbHVlOmUuZmllbGRWYWx1ZT09PWUuYnV0dG9uVmFsdWV9KS52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2k9aSE9PWUuYnV0dG9uVmFsdWU7dC5zZXRWYWx1ZShuLHt2YWx1ZTppfSl9Y29uc3Qgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2guYWRkKHIpO3Iuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLG4pO3IuZGlzYWJsZWQ9ZS5yZWFkT25seTt0aGlzLl9zZXRSZXF1aXJlZChyLHRoaXMuZGF0YS5yZXF1aXJlZCk7ci50eXBlPSJyYWRpbyI7ci5uYW1lPWUuYmFzZUZpZWxkTmFtZXx8ZS5maWVsZE5hbWU7aSYmci5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTtyLnRhYkluZGV4PWM7ci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChlPT57Y29uc3R7bmFtZTppLGNoZWNrZWQ6cn09ZS50YXJnZXQ7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZ2V0RWxlbWVudHNCeU5hbWUoaSxuKSl0LnNldFZhbHVlKGUuaWQse3ZhbHVlOiExfSk7dC5zZXRWYWx1ZShuLHt2YWx1ZTpyfSl9KSk7ci5hZGRFdmVudExpc3RlbmVyKCJyZXNldGZvcm0iLCh0PT57Y29uc3Qgbj1lLmRlZmF1bHRGaWVsZFZhbHVlO3QudGFyZ2V0LmNoZWNrZWQ9bnVsbCE9biYmbj09PWUuYnV0dG9uVmFsdWV9KSk7aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtjb25zdCBpPWUuYnV0dG9uVmFsdWU7ci5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKGU9Pntjb25zdCByPXt2YWx1ZTplPT57Y29uc3Qgcj1pPT09ZS5kZXRhaWwudmFsdWU7Zm9yKGNvbnN0IGkgb2YgdGhpcy5fZ2V0RWxlbWVudHNCeU5hbWUoZS50YXJnZXQubmFtZSkpe2NvbnN0IGU9ciYmaS5pZD09PW47aS5kb21FbGVtZW50JiYoaS5kb21FbGVtZW50LmNoZWNrZWQ9ZSk7dC5zZXRWYWx1ZShpLmlkLHt2YWx1ZTplfSl9fX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KHIsZSl9KSk7dGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMocixbWyJjaGFuZ2UiLCJWYWxpZGF0ZSJdLFsiY2hhbmdlIiwiQWN0aW9uIl0sWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9dGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKHIpO3RoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChyKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFB1c2hCdXR0b25XaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIExpbmtBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpZ25vcmVCb3JkZXI6dC5kYXRhLmhhc0FwcGVhcmFuY2V9KX1yZW5kZXIoKXtjb25zdCB0PXN1cGVyLnJlbmRlcigpO3QuY2xhc3NMaXN0LmFkZCgiYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiIsInB1c2hCdXR0b24iKTt0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0JiYodC50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtjb25zdCBlPXQubGFzdENoaWxkO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmZSl7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMoZSk7ZS5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKHQ9Pnt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goe30sdCl9KSl9cmV0dXJuIHR9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJjaG9pY2VXaWRnZXRBbm5vdGF0aW9uIik7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLmlkLG49dC5nZXRWYWx1ZShlLHt2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZX0pLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7aC5hZGQoaSk7aS5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsZSk7aS5kaXNhYmxlZD10aGlzLmRhdGEucmVhZE9ubHk7dGhpcy5fc2V0UmVxdWlyZWQoaSx0aGlzLmRhdGEucmVxdWlyZWQpO2kubmFtZT10aGlzLmRhdGEuYmFzZUZpZWxkTmFtZXx8dGhpcy5kYXRhLmZpZWxkTmFtZTtpLnRhYkluZGV4PWM7bGV0IHI9dGhpcy5kYXRhLmNvbWJvJiZ0aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg+MDtpZighdGhpcy5kYXRhLmNvbWJvKXtpLnNpemU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO3RoaXMuZGF0YS5tdWx0aVNlbGVjdCYmKGkubXVsdGlwbGU9ITApfWkuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPXQudmFsdWU9PT1lfSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO2UudGV4dENvbnRlbnQ9dC5kaXNwbGF5VmFsdWU7ZS52YWx1ZT10LmV4cG9ydFZhbHVlO2lmKG4udmFsdWUuaW5jbHVkZXModC5leHBvcnRWYWx1ZSkpe2Uuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsITApO3I9ITF9aS5hcHBlbmQoZSl9bGV0IHM9bnVsbDtpZihyKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3QudmFsdWU9IiAiO3Quc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKTt0LnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCEwKTtpLnByZXBlbmQodCk7cz0oKT0+e3QucmVtb3ZlKCk7aS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIscyk7cz1udWxsfTtpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixzKX1jb25zdCBnZXRWYWx1ZT10PT57Y29uc3QgZT10PyJ2YWx1ZSI6InRleHRDb250ZW50Iix7b3B0aW9uczpuLG11bHRpcGxlOnJ9PWk7cmV0dXJuIHI/QXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKG4sKHQ9PnQuc2VsZWN0ZWQpKS5tYXAoKHQ9PnRbZV0pKTotMT09PW4uc2VsZWN0ZWRJbmRleD9udWxsOm5bbi5zZWxlY3RlZEluZGV4XVtlXX07bGV0IGE9Z2V0VmFsdWUoITEpO2NvbnN0IGdldEl0ZW1zPXQ9Pntjb25zdCBlPXQudGFyZ2V0Lm9wdGlvbnM7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChlLCh0PT4oe2Rpc3BsYXlWYWx1ZTp0LnRleHRDb250ZW50LGV4cG9ydFZhbHVlOnQudmFsdWV9KSkpfTtpZih0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMpe2kuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChuPT57Y29uc3Qgcj17dmFsdWUobil7cz8uKCk7Y29uc3Qgcj1uLmRldGFpbC52YWx1ZSxvPW5ldyBTZXQoQXJyYXkuaXNBcnJheShyKT9yOltyXSk7Zm9yKGNvbnN0IHQgb2YgaS5vcHRpb25zKXQuc2VsZWN0ZWQ9by5oYXModC52YWx1ZSk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZSghMCl9KTthPWdldFZhbHVlKCExKX0sbXVsdGlwbGVTZWxlY3Rpb24odCl7aS5tdWx0aXBsZT0hMH0scmVtb3ZlKG4pe2NvbnN0IHI9aS5vcHRpb25zLHM9bi5kZXRhaWwucmVtb3ZlO3Jbc10uc2VsZWN0ZWQ9ITE7aS5yZW1vdmUocyk7aWYoci5sZW5ndGg+MCl7LTE9PT1BcnJheS5wcm90b3R5cGUuZmluZEluZGV4LmNhbGwociwodD0+dC5zZWxlY3RlZCkpJiYoclswXS5zZWxlY3RlZD0hMCl9dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZSghMCksaXRlbXM6Z2V0SXRlbXMobil9KTthPWdldFZhbHVlKCExKX0sY2xlYXIobil7Zm9yKDswIT09aS5sZW5ndGg7KWkucmVtb3ZlKDApO3Quc2V0VmFsdWUoZSx7dmFsdWU6bnVsbCxpdGVtczpbXX0pO2E9Z2V0VmFsdWUoITEpfSxpbnNlcnQobil7Y29uc3R7aW5kZXg6cixkaXNwbGF5VmFsdWU6cyxleHBvcnRWYWx1ZTpvfT1uLmRldGFpbC5pbnNlcnQsbD1pLmNoaWxkcmVuW3JdLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Yy50ZXh0Q29udGVudD1zO2MudmFsdWU9bztsP2wuYmVmb3JlKGMpOmkuYXBwZW5kKGMpO3Quc2V0VmFsdWUoZSx7dmFsdWU6Z2V0VmFsdWUoITApLGl0ZW1zOmdldEl0ZW1zKG4pfSk7YT1nZXRWYWx1ZSghMSl9LGl0ZW1zKG4pe2NvbnN0e2l0ZW1zOnJ9PW4uZGV0YWlsO2Zvcig7MCE9PWkubGVuZ3RoOylpLnJlbW92ZSgwKTtmb3IoY29uc3QgdCBvZiByKXtjb25zdHtkaXNwbGF5VmFsdWU6ZSxleHBvcnRWYWx1ZTpufT10LHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7ci50ZXh0Q29udGVudD1lO3IudmFsdWU9bjtpLmFwcGVuZChyKX1pLm9wdGlvbnMubGVuZ3RoPjAmJihpLm9wdGlvbnNbMF0uc2VsZWN0ZWQ9ITApO3Quc2V0VmFsdWUoZSx7dmFsdWU6Z2V0VmFsdWUoITApLGl0ZW1zOmdldEl0ZW1zKG4pfSk7YT1nZXRWYWx1ZSghMSl9LGluZGljZXMobil7Y29uc3QgaT1uZXcgU2V0KG4uZGV0YWlsLmluZGljZXMpO2Zvcihjb25zdCB0IG9mIG4udGFyZ2V0Lm9wdGlvbnMpdC5zZWxlY3RlZD1pLmhhcyh0LmluZGV4KTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKCEwKX0pO2E9Z2V0VmFsdWUoITEpfSxlZGl0YWJsZSh0KXt0LnRhcmdldC5kaXNhYmxlZD0hdC5kZXRhaWwuZWRpdGFibGV9fTt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3gocixuKX0pKTtpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0Iiwobj0+e2NvbnN0IGk9Z2V0VmFsdWUoITApO3Quc2V0VmFsdWUoZSx7dmFsdWU6aX0pO24ucHJldmVudERlZmF1bHQoKTt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZSxuYW1lOiJLZXlzdHJva2UiLHZhbHVlOmEsY2hhbmdlRXg6aSx3aWxsQ29tbWl0OiExLGNvbW1pdEtleToxLGtleURvd246ITF9fSl9KSk7dGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMoaSxbWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl0sWyJpbnB1dCIsIkFjdGlvbiJdLFsiaW5wdXQiLCJWYWxpZGF0ZSJdXSwodD0+dC50YXJnZXQudmFsdWUpKX1lbHNlIGkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChmdW5jdGlvbihuKXt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKCEwKX0pfSkpO3RoaXMuZGF0YS5jb21ibyYmdGhpcy5fc2V0VGV4dFN0eWxlKGkpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihpKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhpKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7Y29uc3R7ZGF0YTplLGVsZW1lbnRzOm59PXQ7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKGUudGl0bGVPYmo/LnN0cnx8ZS5jb250ZW50c09iaj8uc3RyfHxlLnJpY2hUZXh0Py5zdHIpfSk7dGhpcy5lbGVtZW50cz1ufXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInBvcHVwQW5ub3RhdGlvbiIpO2NvbnN0IHQ9bmV3IFBvcHVwRWxlbWVudCh7Y29udGFpbmVyOnRoaXMuY29udGFpbmVyLGNvbG9yOnRoaXMuZGF0YS5jb2xvcix0aXRsZU9iajp0aGlzLmRhdGEudGl0bGVPYmosbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZSxjb250ZW50c09iajp0aGlzLmRhdGEuY29udGVudHNPYmoscmljaFRleHQ6dGhpcy5kYXRhLnJpY2hUZXh0LHJlY3Q6dGhpcy5kYXRhLnJlY3QscGFyZW50UmVjdDp0aGlzLmRhdGEucGFyZW50UmVjdHx8bnVsbCxwYXJlbnQ6dGhpcy5wYXJlbnQsZWxlbWVudHM6dGhpcy5lbGVtZW50cyxvcGVuOnRoaXMuZGF0YS5vcGVufSksZT1bXTtmb3IoY29uc3QgbiBvZiB0aGlzLmVsZW1lbnRzKXtuLnBvcHVwPXQ7ZS5wdXNoKG4uZGF0YS5pZCk7bi5hZGRIaWdobGlnaHRBcmVhKCl9dGhpcy5jb250YWluZXIuc2V0QXR0cmlidXRlKCJhcmlhLWNvbnRyb2xzIixlLmpvaW4oIiwiKSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEVsZW1lbnR7I05lPW51bGw7I0JlPXRoaXMuI2plLmJpbmQodGhpcyk7I1VlPXRoaXMuI3plLmJpbmQodGhpcyk7I0hlPXRoaXMuI3FlLmJpbmQodGhpcyk7I1NlPW51bGw7I2J0PW51bGw7I1dlPW51bGw7I0dlPW51bGw7I1ZlPW51bGw7IyRlPW51bGw7I1hlPSExOyNLZT1udWxsOyNZZT1udWxsOyNKZT1udWxsOyNRZT1udWxsOyNaZT0hMTtjb25zdHJ1Y3Rvcih0KXtsZXR7Y29udGFpbmVyOmUsY29sb3I6bixlbGVtZW50czppLHRpdGxlT2JqOnMsbW9kaWZpY2F0aW9uRGF0ZTphLGNvbnRlbnRzT2JqOm8scmljaFRleHQ6bCxwYXJlbnQ6YyxyZWN0OmgscGFyZW50UmVjdDpkLG9wZW46dX09dDt0aGlzLiNidD1lO3RoaXMuI1FlPXM7dGhpcy4jV2U9bzt0aGlzLiNKZT1sO3RoaXMuI1ZlPWM7dGhpcy4jU2U9bjt0aGlzLiNZZT1oO3RoaXMuIyRlPWQ7dGhpcy4jR2U9aTtjb25zdCBwPXIuUERGRGF0ZVN0cmluZy50b0RhdGVPYmplY3QoYSk7cCYmKHRoaXMuI05lPWMubDEwbi5nZXQoImFubm90YXRpb25fZGF0ZV9zdHJpbmciLHtkYXRlOnAudG9Mb2NhbGVEYXRlU3RyaW5nKCksdGltZTpwLnRvTG9jYWxlVGltZVN0cmluZygpfSkpO3RoaXMudHJpZ2dlcj1pLmZsYXRNYXAoKHQ9PnQuZ2V0RWxlbWVudHNUb1RyaWdnZXJQb3B1cCgpKSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy50cmlnZ2VyKXt0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLiNIZSk7dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIix0aGlzLiNVZSk7dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIix0aGlzLiNCZSl9dGhpcy4jYnQuaGlkZGVuPSEwO3UmJnRoaXMuI3FlKCl9cmVuZGVyKCl7aWYodGhpcy4jS2UpcmV0dXJuO2NvbnN0e3BhZ2U6e3ZpZXc6dH0sdmlld3BvcnQ6e3Jhd0RpbXM6e3BhZ2VXaWR0aDplLHBhZ2VIZWlnaHQ6bixwYWdlWDpyLHBhZ2VZOnN9fX09dGhpcy4jVmUsYT10aGlzLiNLZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0icG9wdXAiO2lmKHRoaXMuI1NlKXtjb25zdCB0PWEuc3R5bGUub3V0bGluZUNvbG9yPWkuVXRpbC5tYWtlSGV4Q29sb3IoLi4udGhpcy4jU2UpO2lmKENTUy5zdXBwb3J0cygiYmFja2dyb3VuZC1jb2xvciIsImNvbG9yLW1peChpbiBzcmdiLCByZWQgMzAlLCB3aGl0ZSkiKSlhLnN0eWxlLmJhY2tncm91bmRDb2xvcj1gY29sb3ItbWl4KGluIHNyZ2IsICR7dH0gMzAlLCB3aGl0ZSlgO2Vsc2V7Y29uc3QgdD0uNzthLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKC4uLnRoaXMuI1NlLm1hcCgoZT0+TWF0aC5mbG9vcih0KigyNTUtZSkrZSkpKSl9fWNvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO28uY2xhc3NOYW1lPSJoZWFkZXIiO2NvbnN0IGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKTtvLmFwcGVuZChjKTsoe2RpcjpjLmRpcixzdHI6Yy50ZXh0Q29udGVudH09dGhpcy4jUWUpO2EuYXBwZW5kKG8pO2lmKHRoaXMuI05lKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0LmNsYXNzTGlzdC5hZGQoInBvcHVwRGF0ZSIpO3RoaXMuI05lLnRoZW4oKGU9Pnt0LnRleHRDb250ZW50PWV9KSk7by5hcHBlbmQodCl9Y29uc3QgaD10aGlzLiNXZSxkPXRoaXMuI0plO2lmKCFkPy5zdHJ8fGg/LnN0ciYmaC5zdHIhPT1kLnN0cil7Y29uc3QgdD10aGlzLl9mb3JtYXRDb250ZW50cyhoKTthLmFwcGVuZCh0KX1lbHNle2wuWGZhTGF5ZXIucmVuZGVyKHt4ZmFIdG1sOmQuaHRtbCxpbnRlbnQ6InJpY2hUZXh0IixkaXY6YX0pO2EubGFzdENoaWxkLmNsYXNzTGlzdC5hZGQoInJpY2hUZXh0IiwicG9wdXBDb250ZW50Iil9bGV0IHU9ISF0aGlzLiMkZSxwPXU/dGhpcy4jJGU6dGhpcy4jWWU7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jR2UpaWYoIXB8fG51bGwhPT1pLlV0aWwuaW50ZXJzZWN0KHQuZGF0YS5yZWN0LHApKXtwPXQuZGF0YS5yZWN0O3U9ITA7YnJlYWt9Y29uc3QgZj1pLlV0aWwubm9ybWFsaXplUmVjdChbcFswXSx0WzNdLXBbMV0rdFsxXSxwWzJdLHRbM10tcFszXSt0WzFdXSksZz11P3BbMl0tcFswXSs1OjAsbT1mWzBdK2csYj1mWzFdLHtzdHlsZTp2fT10aGlzLiNidDt2LmxlZnQ9MTAwKihtLXIpL2UrIiUiO3YudG9wPTEwMCooYi1zKS9uKyIlIjt0aGlzLiNidC5hcHBlbmQoYSl9X2Zvcm1hdENvbnRlbnRzKHQpe2xldHtzdHI6ZSxkaXI6bn09dDtjb25zdCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTtpLmNsYXNzTGlzdC5hZGQoInBvcHVwQ29udGVudCIpO2kuZGlyPW47Y29uc3Qgcj1lLnNwbGl0KC8oPzpcclxuP3xcbikvKTtmb3IobGV0IHQ9MCxlPXIubGVuZ3RoO3Q8ZTsrK3Qpe2NvbnN0IG49clt0XTtpLmFwcGVuZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSk7dDxlLTEmJmkuYXBwZW5kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpfXJldHVybiBpfSNxZSgpe3RoaXMuI1hlPSF0aGlzLiNYZTtpZih0aGlzLiNYZSl7dGhpcy4jemUoKTt0aGlzLiNidC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy4jSGUpfWVsc2V7dGhpcy4jamUoKTt0aGlzLiNidC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy4jSGUpfX0jemUoKXt0aGlzLiNLZXx8dGhpcy5yZW5kZXIoKTtpZih0aGlzLmlzVmlzaWJsZSl0aGlzLiNYZSYmdGhpcy4jYnQuY2xhc3NMaXN0LmFkZCgiZm9jdXNlZCIpO2Vsc2V7dGhpcy4jYnQuaGlkZGVuPSExO3RoaXMuI2J0LnN0eWxlLnpJbmRleD1wYXJzZUludCh0aGlzLiNidC5zdHlsZS56SW5kZXgpKzFlM319I2plKCl7dGhpcy4jYnQuY2xhc3NMaXN0LnJlbW92ZSgiZm9jdXNlZCIpO2lmKCF0aGlzLiNYZSYmdGhpcy5pc1Zpc2libGUpe3RoaXMuI2J0LmhpZGRlbj0hMDt0aGlzLiNidC5zdHlsZS56SW5kZXg9cGFyc2VJbnQodGhpcy4jYnQuc3R5bGUuekluZGV4KS0xZTN9fWZvcmNlSGlkZSgpe3RoaXMuI1plPXRoaXMuaXNWaXNpYmxlO3RoaXMuI1plJiYodGhpcy4jYnQuaGlkZGVuPSEwKX1tYXliZVNob3coKXtpZih0aGlzLiNaZSl7dGhpcy4jWmU9ITE7dGhpcy4jYnQuaGlkZGVuPSExfX1nZXQgaXNWaXNpYmxlKCl7cmV0dXJuITE9PT10aGlzLiNidC5oaWRkZW59fWNsYXNzIEZyZWVUZXh0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLnBvcHVwUmVmfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KTt0aGlzLnRleHRDb250ZW50PXQuZGF0YS50ZXh0Q29udGVudDt0aGlzLnRleHRQb3NpdGlvbj10LmRhdGEudGV4dFBvc2l0aW9uO3RoaXMuYW5ub3RhdGlvbkVkaXRvclR5cGU9aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVH1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJmcmVlVGV4dEFubm90YXRpb24iKTtpZih0aGlzLnRleHRDb250ZW50KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NMaXN0LmFkZCgiYW5ub3RhdGlvblRleHRDb250ZW50Iik7dC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjb21tZW50Iik7Zm9yKGNvbnN0IGUgb2YgdGhpcy50ZXh0Q29udGVudCl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bi50ZXh0Q29udGVudD1lO3QuYXBwZW5kKG4pfXRoaXMuY29udGFpbmVyLmFwcGVuZCh0KX10aGlzLmRhdGEucG9wdXBSZWZ8fHRoaXMuX2NyZWF0ZVBvcHVwKCk7dGhpcy5fZWRpdE9uRG91YmxlQ2xpY2soKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWUuRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudD1GcmVlVGV4dEFubm90YXRpb25FbGVtZW50O2NsYXNzIExpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50eyN0bj1udWxsO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEucG9wdXBSZWZ8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImxpbmVBbm5vdGF0aW9uIik7Y29uc3QgdD10aGlzLmRhdGEse3dpZHRoOmUsaGVpZ2h0Om59PWdldFJlY3REaW1zKHQucmVjdCksaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUsbiwhMCkscj10aGlzLiN0bj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmxpbmUiKTtyLnNldEF0dHJpYnV0ZSgieDEiLHQucmVjdFsyXS10LmxpbmVDb29yZGluYXRlc1swXSk7ci5zZXRBdHRyaWJ1dGUoInkxIix0LnJlY3RbM10tdC5saW5lQ29vcmRpbmF0ZXNbMV0pO3Iuc2V0QXR0cmlidXRlKCJ4MiIsdC5yZWN0WzJdLXQubGluZUNvb3JkaW5hdGVzWzJdKTtyLnNldEF0dHJpYnV0ZSgieTIiLHQucmVjdFszXS10LmxpbmVDb29yZGluYXRlc1szXSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0LnBvcHVwUmVmfHx0aGlzLl9jcmVhdGVQb3B1cCgpO3JldHVybiB0aGlzLmNvbnRhaW5lcn1nZXRFbGVtZW50c1RvVHJpZ2dlclBvcHVwKCl7cmV0dXJuIHRoaXMuI3RufWFkZEhpZ2hsaWdodEFyZWEoKXt0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoaWdobGlnaHRBcmVhIil9fWNsYXNzIFNxdWFyZUFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7I2VuPW51bGw7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5wb3B1cFJlZnx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgic3F1YXJlQW5ub3RhdGlvbiIpO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpufT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLG4sITApLHI9dC5ib3JkZXJTdHlsZS53aWR0aCxzPXRoaXMuI2VuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO3Muc2V0QXR0cmlidXRlKCJ4IixyLzIpO3Muc2V0QXR0cmlidXRlKCJ5IixyLzIpO3Muc2V0QXR0cmlidXRlKCJ3aWR0aCIsZS1yKTtzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixuLXIpO3Muc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLHJ8fDEpO3Muc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpO3Muc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKTtpLmFwcGVuZChzKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7dC5wb3B1cFJlZnx8dGhpcy5fY3JlYXRlUG9wdXAoKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9Z2V0RWxlbWVudHNUb1RyaWdnZXJQb3B1cCgpe3JldHVybiB0aGlzLiNlbn1hZGRIaWdobGlnaHRBcmVhKCl7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0QXJlYSIpfX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50eyNubj1udWxsO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEucG9wdXBSZWZ8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImNpcmNsZUFubm90YXRpb24iKTtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6bn09Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxuLCEwKSxyPXQuYm9yZGVyU3R5bGUud2lkdGgscz10aGlzLiNubj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmVsbGlwc2UiKTtzLnNldEF0dHJpYnV0ZSgiY3giLGUvMik7cy5zZXRBdHRyaWJ1dGUoImN5IixuLzIpO3Muc2V0QXR0cmlidXRlKCJyeCIsZS8yLXIvMik7cy5zZXRBdHRyaWJ1dGUoInJ5IixuLzItci8yKTtzLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixyfHwxKTtzLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwidHJhbnNwYXJlbnQiKTtzLnNldEF0dHJpYnV0ZSgiZmlsbCIsInRyYW5zcGFyZW50Iik7aS5hcHBlbmQocyk7dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3QucG9wdXBSZWZ8fHRoaXMuX2NyZWF0ZVBvcHVwKCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfWdldEVsZW1lbnRzVG9UcmlnZ2VyUG9wdXAoKXtyZXR1cm4gdGhpcy4jbm59YWRkSGlnaGxpZ2h0QXJlYSgpe3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhpZ2hsaWdodEFyZWEiKX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50eyNpbj1udWxsO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEucG9wdXBSZWZ8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pO3RoaXMuY29udGFpbmVyQ2xhc3NOYW1lPSJwb2x5bGluZUFubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSJ9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnRhaW5lckNsYXNzTmFtZSk7Y29uc3QgdD10aGlzLmRhdGEse3dpZHRoOmUsaGVpZ2h0Om59PWdldFJlY3REaW1zKHQucmVjdCksaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUsbiwhMCk7bGV0IHI9W107Zm9yKGNvbnN0IGUgb2YgdC52ZXJ0aWNlcyl7Y29uc3Qgbj1lLngtdC5yZWN0WzBdLGk9dC5yZWN0WzNdLWUueTtyLnB1c2gobisiLCIraSl9cj1yLmpvaW4oIiAiKTtjb25zdCBzPXRoaXMuI2luPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KHRoaXMuc3ZnRWxlbWVudE5hbWUpO3Muc2V0QXR0cmlidXRlKCJwb2ludHMiLHIpO3Muc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLHQuYm9yZGVyU3R5bGUud2lkdGh8fDEpO3Muc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpO3Muc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKTtpLmFwcGVuZChzKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7dC5wb3B1cFJlZnx8dGhpcy5fY3JlYXRlUG9wdXAocyx0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9Z2V0RWxlbWVudHNUb1RyaWdnZXJQb3B1cCgpe3JldHVybiB0aGlzLiNpbn1hZGRIaWdobGlnaHRBcmVhKCl7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0QXJlYSIpfX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpO3RoaXMuY29udGFpbmVyQ2xhc3NOYW1lPSJwb2x5Z29uQW5ub3RhdGlvbiI7dGhpcy5zdmdFbGVtZW50TmFtZT0ic3ZnOnBvbHlnb24ifX1jbGFzcyBDYXJldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5wb3B1cFJlZnx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgiY2FyZXRBbm5vdGF0aW9uIik7dGhpcy5kYXRhLnBvcHVwUmVmfHx0aGlzLl9jcmVhdGVQb3B1cCgpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgSW5rQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHsjcm49W107Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5wb3B1cFJlZnx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSk7dGhpcy5jb250YWluZXJDbGFzc05hbWU9Imlua0Fubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSI7dGhpcy5hbm5vdGF0aW9uRWRpdG9yVHlwZT1pLkFubm90YXRpb25FZGl0b3JUeXBlLklOS31yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuY29udGFpbmVyQ2xhc3NOYW1lKTtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6bn09Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxuLCEwKTtmb3IoY29uc3QgZSBvZiB0Lmlua0xpc3RzKXtsZXQgbj1bXTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPWkueC10LnJlY3RbMF0scj10LnJlY3RbM10taS55O24ucHVzaChgJHtlfSwke3J9YCl9bj1uLmpvaW4oIiAiKTtjb25zdCByPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KHRoaXMuc3ZnRWxlbWVudE5hbWUpO3RoaXMuI3JuLnB1c2gocik7ci5zZXRBdHRyaWJ1dGUoInBvaW50cyIsbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO3QucG9wdXBSZWZ8fHRoaXMuX2NyZWF0ZVBvcHVwKHIsdCk7aS5hcHBlbmQocil9dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3JldHVybiB0aGlzLmNvbnRhaW5lcn1nZXRFbGVtZW50c1RvVHJpZ2dlclBvcHVwKCl7cmV0dXJuIHRoaXMuI3JufWFkZEhpZ2hsaWdodEFyZWEoKXt0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoaWdobGlnaHRBcmVhIil9fWUuSW5rQW5ub3RhdGlvbkVsZW1lbnQ9SW5rQW5ub3RhdGlvbkVsZW1lbnQ7Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLnBvcHVwUmVmfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEucG9wdXBSZWZ8fHRoaXMuX2NyZWF0ZVBvcHVwKCk7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0QW5ub3RhdGlvbiIpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLnBvcHVwUmVmfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEucG9wdXBSZWZ8fHRoaXMuX2NyZWF0ZVBvcHVwKCk7dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgidW5kZXJsaW5lQW5ub3RhdGlvbiIpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgU3F1aWdnbHlBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEucG9wdXBSZWZ8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMCxjcmVhdGVRdWFkcmlsYXRlcmFsczohMH0pfXJlbmRlcigpe3RoaXMuZGF0YS5wb3B1cFJlZnx8dGhpcy5fY3JlYXRlUG9wdXAoKTt0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzcXVpZ2dseUFubm90YXRpb24iKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFN0cmlrZU91dEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5wb3B1cFJlZnx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwLGNyZWF0ZVF1YWRyaWxhdGVyYWxzOiEwfSl9cmVuZGVyKCl7dGhpcy5kYXRhLnBvcHVwUmVmfHx0aGlzLl9jcmVhdGVQb3B1cCgpO3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInN0cmlrZW91dEFubm90YXRpb24iKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLnBvcHVwUmVmfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJzdGFtcEFubm90YXRpb24iKTt0aGlzLmRhdGEucG9wdXBSZWZ8fHRoaXMuX2NyZWF0ZVBvcHVwKCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1lLlN0YW1wQW5ub3RhdGlvbkVsZW1lbnQ9U3RhbXBBbm5vdGF0aW9uRWxlbWVudDtjbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7I3NuPW51bGw7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEwfSk7Y29uc3R7ZmlsZW5hbWU6ZSxjb250ZW50Om59PXRoaXMuZGF0YS5maWxlO3RoaXMuZmlsZW5hbWU9KDAsci5nZXRGaWxlbmFtZUZyb21VcmwpKGUsITApO3RoaXMuY29udGVudD1uO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJmaWxlYXR0YWNobWVudGFubm90YXRpb24iLHtzb3VyY2U6dGhpcyxmaWxlbmFtZTplLGNvbnRlbnQ6bn0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiIpO2xldCB0O2lmKHRoaXMuZGF0YS5oYXNBcHBlYXJhbmNlKXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZWxzZXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO3Quc3JjPWAke3RoaXMuaW1hZ2VSZXNvdXJjZXNQYXRofWFubm90YXRpb24tJHsvcGFwZXJjbGlwL2kudGVzdCh0aGlzLmRhdGEubmFtZSk/InBhcGVyY2xpcCI6InB1c2hwaW4ifS5zdmdgfXQuY2xhc3NMaXN0LmFkZCgicG9wdXBUcmlnZ2VyQXJlYSIpO3QuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLHRoaXMuX2Rvd25sb2FkLmJpbmQodGhpcykpO3RoaXMuI3NuPXQ7IXRoaXMuZGF0YS5wb3B1cFJlZiYmKHRoaXMuZGF0YS50aXRsZU9iaj8uc3RyfHx0aGlzLmRhdGEuY29udGVudHNPYmo/LnN0cnx8dGhpcy5kYXRhLnJpY2hUZXh0KSYmdGhpcy5fY3JlYXRlUG9wdXAoKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfWdldEVsZW1lbnRzVG9UcmlnZ2VyUG9wdXAoKXtyZXR1cm4gdGhpcy4jc259YWRkSGlnaGxpZ2h0QXJlYSgpe3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhpZ2hsaWdodEFyZWEiKX1fZG93bmxvYWQoKXt0aGlzLmRvd25sb2FkTWFuYWdlcj8ub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLHRoaXMuY29udGVudCx0aGlzLmZpbGVuYW1lKX19ZS5Bbm5vdGF0aW9uTGF5ZXI9Y2xhc3MgQW5ub3RhdGlvbkxheWVyeyNyZT1udWxsOyNhbj1udWxsOyNvbj1uZXcgTWFwO2NvbnN0cnVjdG9yKHQpe2xldHtkaXY6ZSxhY2Nlc3NpYmlsaXR5TWFuYWdlcjpuLGFubm90YXRpb25DYW52YXNNYXA6aSxsMTBuOnIscGFnZTpzLHZpZXdwb3J0OmF9PXQ7dGhpcy5kaXY9ZTt0aGlzLiNyZT1uO3RoaXMuI2FuPWk7dGhpcy5sMTBuPXI7dGhpcy5wYWdlPXM7dGhpcy52aWV3cG9ydD1hO3RoaXMuekluZGV4PTA7dGhpcy5sMTBufHw9by5OdWxsTDEwbn0jbG4odCxlKXtjb25zdCBuPXQuZmlyc3RDaGlsZHx8dDtuLmlkPWAke3IuQW5ub3RhdGlvblByZWZpeH0ke2V9YDt0aGlzLmRpdi5hcHBlbmQodCk7dGhpcy4jcmU/Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdCxuLCExKX1hc3luYyByZW5kZXIodCl7Y29uc3R7YW5ub3RhdGlvbnM6ZX09dCxuPXRoaXMuZGl2OygwLHIuc2V0TGF5ZXJEaW1lbnNpb25zKShuLHRoaXMudmlld3BvcnQpO2NvbnN0IGE9bmV3IE1hcCxvPXtkYXRhOm51bGwsbGF5ZXI6bixsaW5rU2VydmljZTp0LmxpbmtTZXJ2aWNlLGRvd25sb2FkTWFuYWdlcjp0LmRvd25sb2FkTWFuYWdlcixpbWFnZVJlc291cmNlc1BhdGg6dC5pbWFnZVJlc291cmNlc1BhdGh8fCIiLHJlbmRlckZvcm1zOiExIT09dC5yZW5kZXJGb3JtcyxzdmdGYWN0b3J5Om5ldyByLkRPTVNWR0ZhY3RvcnksYW5ub3RhdGlvblN0b3JhZ2U6dC5hbm5vdGF0aW9uU3RvcmFnZXx8bmV3IHMuQW5ub3RhdGlvblN0b3JhZ2UsZW5hYmxlU2NyaXB0aW5nOiEwPT09dC5lbmFibGVTY3JpcHRpbmcsaGFzSlNBY3Rpb25zOnQuaGFzSlNBY3Rpb25zLGZpZWxkT2JqZWN0czp0LmZpZWxkT2JqZWN0cyxwYXJlbnQ6dGhpcyxlbGVtZW50czpudWxsfTtmb3IoY29uc3QgdCBvZiBlKXtpZih0Lm5vSFRNTCljb250aW51ZTtjb25zdCBlPXQuYW5ub3RhdGlvblR5cGU9PT1pLkFubm90YXRpb25UeXBlLlBPUFVQO2lmKGUpe2NvbnN0IGU9YS5nZXQodC5pZCk7aWYoIWUpY29udGludWU7by5lbGVtZW50cz1lfWVsc2V7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6bn09Z2V0UmVjdERpbXModC5yZWN0KTtpZihlPD0wfHxuPD0wKWNvbnRpbnVlfW8uZGF0YT10O2NvbnN0IG49QW5ub3RhdGlvbkVsZW1lbnRGYWN0b3J5LmNyZWF0ZShvKTtpZighbi5pc1JlbmRlcmFibGUpY29udGludWU7aWYoIWUmJnQucG9wdXBSZWYpe2NvbnN0IGU9YS5nZXQodC5wb3B1cFJlZik7ZT9lLnB1c2gobik6YS5zZXQodC5wb3B1cFJlZixbbl0pfW4uYW5ub3RhdGlvbkVkaXRvclR5cGU+MCYmdGhpcy4jb24uc2V0KG4uZGF0YS5pZCxuKTtjb25zdCByPW4ucmVuZGVyKCk7dC5oaWRkZW4mJihyLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO3RoaXMuI2xuKHIsdC5pZCl9dGhpcy4jY24oKTthd2FpdCB0aGlzLmwxMG4udHJhbnNsYXRlKG4pfXVwZGF0ZSh0KXtsZXR7dmlld3BvcnQ6ZX09dDtjb25zdCBuPXRoaXMuZGl2O3RoaXMudmlld3BvcnQ9ZTsoMCxyLnNldExheWVyRGltZW5zaW9ucykobix7cm90YXRpb246ZS5yb3RhdGlvbn0pO3RoaXMuI2NuKCk7bi5oaWRkZW49ITF9I2NuKCl7aWYoIXRoaXMuI2FuKXJldHVybjtjb25zdCB0PXRoaXMuZGl2O2Zvcihjb25zdFtlLG5db2YgdGhpcy4jYW4pe2NvbnN0IGk9dC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1hbm5vdGF0aW9uLWlkPSIke2V9Il1gKTtpZighaSljb250aW51ZTtjb25zdHtmaXJzdENoaWxkOnJ9PWk7cj8iQ0FOVkFTIj09PXIubm9kZU5hbWU/ci5yZXBsYWNlV2l0aChuKTpyLmJlZm9yZShuKTppLmFwcGVuZChuKX10aGlzLiNhbi5jbGVhcigpfWdldEVkaXRhYmxlQW5ub3RhdGlvbnMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLiNvbi52YWx1ZXMoKSl9Z2V0RWRpdGFibGVBbm5vdGF0aW9uKHQpe3JldHVybiB0aGlzLiNvbi5nZXQodCl9fX0sKHQsZSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQ29sb3JDb252ZXJ0ZXJzPXZvaWQgMDtmdW5jdGlvbiBtYWtlQ29sb3JDb21wKHQpe3JldHVybiBNYXRoLmZsb29yKDI1NSpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpfWUuQ29sb3JDb252ZXJ0ZXJzPWNsYXNzIENvbG9yQ29udmVydGVyc3tzdGF0aWMgQ01ZS19HKHQpe2xldFtlLG4saSxyXT10O3JldHVyblsiRyIsMS1NYXRoLm1pbigxLC4zKmUrLjU5KmkrLjExKm4rcildfXN0YXRpYyBHX0NNWUsodCl7bGV0W2VdPXQ7cmV0dXJuWyJDTVlLIiwwLDAsMCwxLWVdfXN0YXRpYyBHX1JHQih0KXtsZXRbZV09dDtyZXR1cm5bIlJHQiIsZSxlLGVdfXN0YXRpYyBHX0hUTUwodCl7bGV0W2VdPXQ7Y29uc3Qgbj1tYWtlQ29sb3JDb21wKGUpO3JldHVybmAjJHtufSR7bn0ke259YH1zdGF0aWMgUkdCX0codCl7bGV0W2UsbixpXT10O3JldHVyblsiRyIsLjMqZSsuNTkqbisuMTEqaV19c3RhdGljIFJHQl9IVE1MKHQpe2xldFtlLG4saV09dDtyZXR1cm5gIyR7bWFrZUNvbG9yQ29tcChlKX0ke21ha2VDb2xvckNvbXAobil9JHttYWtlQ29sb3JDb21wKGkpfWB9c3RhdGljIFRfSFRNTCgpe3JldHVybiIjMDAwMDAwMDAifXN0YXRpYyBDTVlLX1JHQih0KXtsZXRbZSxuLGkscl09dDtyZXR1cm5bIlJHQiIsMS1NYXRoLm1pbigxLGUrciksMS1NYXRoLm1pbigxLGkrciksMS1NYXRoLm1pbigxLG4rcildfXN0YXRpYyBDTVlLX0hUTUwodCl7Y29uc3QgZT10aGlzLkNNWUtfUkdCKHQpLnNsaWNlKDEpO3JldHVybiB0aGlzLlJHQl9IVE1MKGUpfXN0YXRpYyBSR0JfQ01ZSyh0KXtsZXRbZSxuLGldPXQ7Y29uc3Qgcj0xLWUscz0xLW4sYT0xLWk7cmV0dXJuWyJDTVlLIixyLHMsYSxNYXRoLm1pbihyLHMsYSldfX19LCh0LGUpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk51bGxMMTBuPXZvaWQgMDtlLmdldEwxMG5GYWxsYmFjaz1nZXRMMTBuRmFsbGJhY2s7Y29uc3Qgbj17b2ZfcGFnZXM6Im9mIHt7cGFnZXNDb3VudH19IixwYWdlX29mX3BhZ2VzOiIoe3twYWdlTnVtYmVyfX0gb2Yge3twYWdlc0NvdW50fX0pIixkb2N1bWVudF9wcm9wZXJ0aWVzX2tiOiJ7e3NpemVfa2J9fSBLQiAoe3tzaXplX2J9fSBieXRlcykiLGRvY3VtZW50X3Byb3BlcnRpZXNfbWI6Int7c2l6ZV9tYn19IE1CICh7e3NpemVfYn19IGJ5dGVzKSIsZG9jdW1lbnRfcHJvcGVydGllc19kYXRlX3N0cmluZzoie3tkYXRlfX0sIHt7dGltZX19Iixkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV91bml0X2luY2hlczoiaW4iLGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX3VuaXRfbWlsbGltZXRlcnM6Im1tIixkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV9vcmllbnRhdGlvbl9wb3J0cmFpdDoicG9ydHJhaXQiLGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX29yaWVudGF0aW9uX2xhbmRzY2FwZToibGFuZHNjYXBlIixkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV9uYW1lX2EzOiJBMyIsZG9jdW1lbnRfcHJvcGVydGllc19wYWdlX3NpemVfbmFtZV9hNDoiQTQiLGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX25hbWVfbGV0dGVyOiJMZXR0ZXIiLGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX25hbWVfbGVnYWw6IkxlZ2FsIixkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV9kaW1lbnNpb25fc3RyaW5nOiJ7e3dpZHRofX0gw5cge3toZWlnaHR9fSB7e3VuaXR9fSAoe3tvcmllbnRhdGlvbn19KSIsZG9jdW1lbnRfcHJvcGVydGllc19wYWdlX3NpemVfZGltZW5zaW9uX25hbWVfc3RyaW5nOiJ7e3dpZHRofX0gw5cge3toZWlnaHR9fSB7e3VuaXR9fSAoe3tuYW1lfX0sIHt7b3JpZW50YXRpb259fSkiLGRvY3VtZW50X3Byb3BlcnRpZXNfbGluZWFyaXplZF95ZXM6IlllcyIsZG9jdW1lbnRfcHJvcGVydGllc19saW5lYXJpemVkX25vOiJObyIsYWRkaXRpb25hbF9sYXllcnM6IkFkZGl0aW9uYWwgTGF5ZXJzIixwYWdlX2xhbmRtYXJrOiJQYWdlIHt7cGFnZX19Iix0aHVtYl9wYWdlX3RpdGxlOiJQYWdlIHt7cGFnZX19Iix0aHVtYl9wYWdlX2NhbnZhczoiVGh1bWJuYWlsIG9mIFBhZ2Uge3twYWdlfX0iLGZpbmRfcmVhY2hlZF90b3A6IlJlYWNoZWQgdG9wIG9mIGRvY3VtZW50LCBjb250aW51ZWQgZnJvbSBib3R0b20iLGZpbmRfcmVhY2hlZF9ib3R0b206IlJlYWNoZWQgZW5kIG9mIGRvY3VtZW50LCBjb250aW51ZWQgZnJvbSB0b3AiLCJmaW5kX21hdGNoX2NvdW50W29uZV0iOiJ7e2N1cnJlbnR9fSBvZiB7e3RvdGFsfX0gbWF0Y2giLCJmaW5kX21hdGNoX2NvdW50W290aGVyXSI6Int7Y3VycmVudH19IG9mIHt7dG90YWx9fSBtYXRjaGVzIiwiZmluZF9tYXRjaF9jb3VudF9saW1pdFtvbmVdIjoiTW9yZSB0aGFuIHt7bGltaXR9fSBtYXRjaCIsImZpbmRfbWF0Y2hfY291bnRfbGltaXRbb3RoZXJdIjoiTW9yZSB0aGFuIHt7bGltaXR9fSBtYXRjaGVzIixmaW5kX25vdF9mb3VuZDoiUGhyYXNlIG5vdCBmb3VuZCIscGFnZV9zY2FsZV93aWR0aDoiUGFnZSBXaWR0aCIscGFnZV9zY2FsZV9maXQ6IlBhZ2UgRml0IixwYWdlX3NjYWxlX2F1dG86IkF1dG9tYXRpYyBab29tIixwYWdlX3NjYWxlX2FjdHVhbDoiQWN0dWFsIFNpemUiLHBhZ2Vfc2NhbGVfcGVyY2VudDoie3tzY2FsZX19JSIsbG9hZGluZ19lcnJvcjoiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGluZyB0aGUgUERGLiIsaW52YWxpZF9maWxlX2Vycm9yOiJJbnZhbGlkIG9yIGNvcnJ1cHRlZCBQREYgZmlsZS4iLG1pc3NpbmdfZmlsZV9lcnJvcjoiTWlzc2luZyBQREYgZmlsZS4iLHVuZXhwZWN0ZWRfcmVzcG9uc2VfZXJyb3I6IlVuZXhwZWN0ZWQgc2VydmVyIHJlc3BvbnNlLiIscmVuZGVyaW5nX2Vycm9yOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSByZW5kZXJpbmcgdGhlIHBhZ2UuIixhbm5vdGF0aW9uX2RhdGVfc3RyaW5nOiJ7e2RhdGV9fSwge3t0aW1lfX0iLHByaW50aW5nX25vdF9zdXBwb3J0ZWQ6Ildhcm5pbmc6IFByaW50aW5nIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLiIscHJpbnRpbmdfbm90X3JlYWR5OiJXYXJuaW5nOiBUaGUgUERGIGlzIG5vdCBmdWxseSBsb2FkZWQgZm9yIHByaW50aW5nLiIsd2ViX2ZvbnRzX2Rpc2FibGVkOiJXZWIgZm9udHMgYXJlIGRpc2FibGVkOiB1bmFibGUgdG8gdXNlIGVtYmVkZGVkIFBERiBmb250cy4iLGZyZWVfdGV4dDJfZGVmYXVsdF9jb250ZW50OiJTdGFydCB0eXBpbmfigKYiLGVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWw6IlRleHQgRWRpdG9yIixlZGl0b3JfaW5rMl9hcmlhX2xhYmVsOiJEcmF3IEVkaXRvciIsZWRpdG9yX2lua19jYW52YXNfYXJpYV9sYWJlbDoiVXNlci1jcmVhdGVkIGltYWdlIixwcmludF9wcm9ncmVzc19wZXJjZW50OiJ7e3Byb2dyZXNzfX0lIn07ZnVuY3Rpb24gZ2V0TDEwbkZhbGxiYWNrKHQsZSl7c3dpdGNoKHQpe2Nhc2UiZmluZF9tYXRjaF9jb3VudCI6dD1gZmluZF9tYXRjaF9jb3VudFskezE9PT1lLnRvdGFsPyJvbmUiOiJvdGhlciJ9XWA7YnJlYWs7Y2FzZSJmaW5kX21hdGNoX2NvdW50X2xpbWl0Ijp0PWBmaW5kX21hdGNoX2NvdW50X2xpbWl0WyR7MT09PWUubGltaXQ/Im9uZSI6Im90aGVyIn1dYH1yZXR1cm4gblt0XXx8IiJ9Y29uc3QgaT17Z2V0TGFuZ3VhZ2U6YXN5bmMoKT0+ImVuLXVzIixnZXREaXJlY3Rpb246YXN5bmMoKT0+Imx0ciIsYXN5bmMgZ2V0KHQpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3JldHVybiBmdW5jdGlvbiBmb3JtYXRMMTBuVmFsdWUodCxlKXtyZXR1cm4gZT90LnJlcGxhY2VBbGwoL1x7XHtccyooXHcrKVxzKlx9XH0vZywoKHQsbik9Pm4gaW4gZT9lW25dOiJ7eyIrbisifX0iKSk6dH0oYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmdldEwxMG5GYWxsYmFjayh0LGUpLGUpfSxhc3luYyB0cmFuc2xhdGUodCl7fX07ZS5OdWxsTDEwbj1pfSwodCxlLG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlhmYUxheWVyPXZvaWQgMDtuKDg5KTt2YXIgaT1uKDE5Myk7ZS5YZmFMYXllcj1jbGFzcyBYZmFMYXllcntzdGF0aWMgc2V0dXBTdG9yYWdlKHQsZSxuLGkscil7Y29uc3Qgcz1pLmdldFZhbHVlKGUse3ZhbHVlOm51bGx9KTtzd2l0Y2gobi5uYW1lKXtjYXNlInRleHRhcmVhIjpudWxsIT09cy52YWx1ZSYmKHQudGV4dENvbnRlbnQ9cy52YWx1ZSk7aWYoInByaW50Ij09PXIpYnJlYWs7dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LnZhbHVlfSl9KSk7YnJlYWs7Y2FzZSJpbnB1dCI6aWYoInJhZGlvIj09PW4uYXR0cmlidXRlcy50eXBlfHwiY2hlY2tib3giPT09bi5hdHRyaWJ1dGVzLnR5cGUpe3MudmFsdWU9PT1uLmF0dHJpYnV0ZXMueGZhT24/dC5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTpzLnZhbHVlPT09bi5hdHRyaWJ1dGVzLnhmYU9mZiYmdC5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKTtpZigicHJpbnQiPT09cilicmVhazt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LmNoZWNrZWQ/dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJ4ZmFPbiIpOnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgieGZhT2ZmIil9KX0pKX1lbHNle251bGwhPT1zLnZhbHVlJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHMudmFsdWUpO2lmKCJwcmludCI9PT1yKWJyZWFrO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57aS5zZXRWYWx1ZShlLHt2YWx1ZTp0LnRhcmdldC52YWx1ZX0pfSkpfWJyZWFrO2Nhc2Uic2VsZWN0IjppZihudWxsIT09cy52YWx1ZSl7dC5zZXRBdHRyaWJ1dGUoInZhbHVlIixzLnZhbHVlKTtmb3IoY29uc3QgdCBvZiBuLmNoaWxkcmVuKXQuYXR0cmlidXRlcy52YWx1ZT09PXMudmFsdWU/dC5hdHRyaWJ1dGVzLnNlbGVjdGVkPSEwOnQuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eSgic2VsZWN0ZWQiKSYmZGVsZXRlIHQuYXR0cmlidXRlcy5zZWxlY3RlZH10LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwodD0+e2NvbnN0IG49dC50YXJnZXQub3B0aW9ucyxyPS0xPT09bi5zZWxlY3RlZEluZGV4PyIiOm5bbi5zZWxlY3RlZEluZGV4XS52YWx1ZTtpLnNldFZhbHVlKGUse3ZhbHVlOnJ9KX0pKX19c3RhdGljIHNldEF0dHJpYnV0ZXModCl7bGV0e2h0bWw6ZSxlbGVtZW50Om4sc3RvcmFnZTppPW51bGwsaW50ZW50OnIsbGlua1NlcnZpY2U6c309dDtjb25zdHthdHRyaWJ1dGVzOmF9PW4sbz1lIGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQ7InJhZGlvIj09PWEudHlwZSYmKGEubmFtZT1gJHthLm5hbWV9LSR7cn1gKTtmb3IoY29uc3RbdCxuXW9mIE9iamVjdC5lbnRyaWVzKGEpKWlmKG51bGwhPW4pc3dpdGNoKHQpe2Nhc2UiY2xhc3MiOm4ubGVuZ3RoJiZlLnNldEF0dHJpYnV0ZSh0LG4uam9pbigiICIpKTticmVhaztjYXNlImRhdGFJZCI6YnJlYWs7Y2FzZSJpZCI6ZS5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsbik7YnJlYWs7Y2FzZSJzdHlsZSI6T2JqZWN0LmFzc2lnbihlLnN0eWxlLG4pO2JyZWFrO2Nhc2UidGV4dENvbnRlbnQiOmUudGV4dENvbnRlbnQ9bjticmVhaztkZWZhdWx0Oighb3x8ImhyZWYiIT09dCYmIm5ld1dpbmRvdyIhPT10KSYmZS5zZXRBdHRyaWJ1dGUodCxuKX1vJiZzLmFkZExpbmtBdHRyaWJ1dGVzKGUsYS5ocmVmLGEubmV3V2luZG93KTtpJiZhLmRhdGFJZCYmdGhpcy5zZXR1cFN0b3JhZ2UoZSxhLmRhdGFJZCxuLGkpfXN0YXRpYyByZW5kZXIodCl7Y29uc3QgZT10LmFubm90YXRpb25TdG9yYWdlLG49dC5saW5rU2VydmljZSxyPXQueGZhSHRtbCxzPXQuaW50ZW50fHwiZGlzcGxheSIsYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHIubmFtZSk7ci5hdHRyaWJ1dGVzJiZ0aGlzLnNldEF0dHJpYnV0ZXMoe2h0bWw6YSxlbGVtZW50OnIsaW50ZW50OnMsbGlua1NlcnZpY2U6bn0pO2NvbnN0IG89W1tyLC0xLGFdXSxsPXQuZGl2O2wuYXBwZW5kKGEpO2lmKHQudmlld3BvcnQpe2NvbnN0IGU9YG1hdHJpeCgke3Qudmlld3BvcnQudHJhbnNmb3JtLmpvaW4oIiwiKX0pYDtsLnN0eWxlLnRyYW5zZm9ybT1lfSJyaWNoVGV4dCIhPT1zJiZsLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJ4ZmFMYXllciB4ZmFGb250Iik7Y29uc3QgYz1bXTtmb3IoO28ubGVuZ3RoPjA7KXtjb25zdFt0LHIsYV09by5hdCgtMSk7aWYocisxPT09dC5jaGlsZHJlbi5sZW5ndGgpe28ucG9wKCk7Y29udGludWV9Y29uc3QgbD10LmNoaWxkcmVuWysrby5hdCgtMSlbMV1dO2lmKG51bGw9PT1sKWNvbnRpbnVlO2NvbnN0e25hbWU6aH09bDtpZigiI3RleHQiPT09aCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsLnZhbHVlKTtjLnB1c2godCk7YS5hcHBlbmQodCk7Y29udGludWV9Y29uc3QgZD1sPy5hdHRyaWJ1dGVzPy54bWxucz9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobC5hdHRyaWJ1dGVzLnhtbG5zLGgpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaCk7YS5hcHBlbmQoZCk7bC5hdHRyaWJ1dGVzJiZ0aGlzLnNldEF0dHJpYnV0ZXMoe2h0bWw6ZCxlbGVtZW50Omwsc3RvcmFnZTplLGludGVudDpzLGxpbmtTZXJ2aWNlOm59KTtpZihsLmNoaWxkcmVuJiZsLmNoaWxkcmVuLmxlbmd0aD4wKW8ucHVzaChbbCwtMSxkXSk7ZWxzZSBpZihsLnZhbHVlKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGwudmFsdWUpO2kuWGZhVGV4dC5zaG91bGRCdWlsZFRleHQoaCkmJmMucHVzaCh0KTtkLmFwcGVuZCh0KX19Zm9yKGNvbnN0IHQgb2YgbC5xdWVyeVNlbGVjdG9yQWxsKCIueGZhTm9uSW50ZXJhY3RpdmUgaW5wdXQsIC54ZmFOb25JbnRlcmFjdGl2ZSB0ZXh0YXJlYSIpKXQuc2V0QXR0cmlidXRlKCJyZWFkT25seSIsITApO3JldHVybnt0ZXh0RGl2czpjfX1zdGF0aWMgdXBkYXRlKHQpe2NvbnN0IGU9YG1hdHJpeCgke3Qudmlld3BvcnQudHJhbnNmb3JtLmpvaW4oIiwiKX0pYDt0LmRpdi5zdHlsZS50cmFuc2Zvcm09ZTt0LmRpdi5oaWRkZW49ITF9fX0sKHQsZSxuKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5JbmtFZGl0b3I9dm9pZCAwO24oODkpO24oMik7dmFyIGk9bigxKSxyPW4oMTYzKSxzPW4oMTk3KSxhPW4oMTY0KTtjbGFzcyBJbmtFZGl0b3IgZXh0ZW5kcyByLkFubm90YXRpb25FZGl0b3J7I2huPTA7I2RuPTA7I3VuPXRoaXMuY2FudmFzQ29udGV4dE1lbnUuYmluZCh0aGlzKTsjcG49dGhpcy5jYW52YXNQb2ludGVybW92ZS5iaW5kKHRoaXMpOyNmbj10aGlzLmNhbnZhc1BvaW50ZXJsZWF2ZS5iaW5kKHRoaXMpOyNnbj10aGlzLmNhbnZhc1BvaW50ZXJ1cC5iaW5kKHRoaXMpOyNtbj10aGlzLmNhbnZhc1BvaW50ZXJkb3duLmJpbmQodGhpcyk7I2JuPW5ldyBQYXRoMkQ7I3ZuPSExOyN5bj0hMTsjQW49ITE7I19uPW51bGw7I1NuPTA7I0VuPTA7I3huPW51bGw7c3RhdGljIF9kZWZhdWx0Q29sb3I9bnVsbDtzdGF0aWMgX2RlZmF1bHRPcGFjaXR5PTE7c3RhdGljIF9kZWZhdWx0VGhpY2tuZXNzPTE7c3RhdGljIF9sMTBuUHJvbWlzZTtzdGF0aWMgX3R5cGU9ImluayI7Y29uc3RydWN0b3IodCl7c3VwZXIoey4uLnQsbmFtZToiaW5rRWRpdG9yIn0pO3RoaXMuY29sb3I9dC5jb2xvcnx8bnVsbDt0aGlzLnRoaWNrbmVzcz10LnRoaWNrbmVzc3x8bnVsbDt0aGlzLm9wYWNpdHk9dC5vcGFjaXR5fHxudWxsO3RoaXMucGF0aHM9W107dGhpcy5iZXppZXJQYXRoMkQ9W107dGhpcy5hbGxSYXdQYXRocz1bXTt0aGlzLmN1cnJlbnRQYXRoPVtdO3RoaXMuc2NhbGVGYWN0b3I9MTt0aGlzLnRyYW5zbGF0aW9uWD10aGlzLnRyYW5zbGF0aW9uWT0wO3RoaXMueD0wO3RoaXMueT0wO3RoaXMuX3dpbGxLZWVwQXNwZWN0UmF0aW89ITB9c3RhdGljIGluaXRpYWxpemUodCl7dGhpcy5fbDEwblByb21pc2U9bmV3IE1hcChbImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiLCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIl0ubWFwKChlPT5bZSx0LmdldChlKV0pKSl9c3RhdGljIHVwZGF0ZURlZmF1bHRQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjpJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcj1lO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWTpJbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5PWUvMTAwfX11cGRhdGVQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6dGhpcy4jd24oZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjp0aGlzLiNQZShlKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6dGhpcy4jQ24oZSl9fXN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLElua0VkaXRvci5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLElua0VkaXRvci5fZGVmYXVsdENvbG9yfHxyLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZLE1hdGgucm91bmQoMTAwKklua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkpXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLHRoaXMudGhpY2tuZXNzfHxJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3NdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUix0aGlzLmNvbG9yfHxJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8ci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCoodGhpcy5vcGFjaXR5Pz9JbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5KSldXX0jd24odCl7Y29uc3QgZT10aGlzLnRoaWNrbmVzczt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9Pnt0aGlzLnRoaWNrbmVzcz10O3RoaXMuI1RuKCl9LHVuZG86KCk9Pnt0aGlzLnRoaWNrbmVzcz1lO3RoaXMuI1RuKCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLG92ZXJ3cml0ZUlmU2FtZVR5cGU6ITAsa2VlcFVuZG86ITB9KX0jUGUodCl7Y29uc3QgZT10aGlzLmNvbG9yO3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuY29sb3I9dDt0aGlzLiNQbigpfSx1bmRvOigpPT57dGhpcy5jb2xvcj1lO3RoaXMuI1BuKCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfQ09MT1Isb3ZlcndyaXRlSWZTYW1lVHlwZTohMCxrZWVwVW5kbzohMH0pfSNDbih0KXt0Lz0xMDA7Y29uc3QgZT10aGlzLm9wYWNpdHk7dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5vcGFjaXR5PXQ7dGhpcy4jUG4oKX0sdW5kbzooKT0+e3RoaXMub3BhY2l0eT1lO3RoaXMuI1BuKCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtpZihudWxsIT09dGhpcy5kaXYpe2lmKCF0aGlzLmNhbnZhcyl7dGhpcy4ja24oKTt0aGlzLiNNbigpfWlmKCF0aGlzLmlzQXR0YWNoZWRUb0RPTSl7dGhpcy5wYXJlbnQuYWRkKHRoaXMpO3RoaXMuI1JuKCl9dGhpcy4jVG4oKX19cmVtb3ZlKCl7aWYobnVsbCE9PXRoaXMuY2FudmFzKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5yZW1vdmUoKTt0aGlzLmNhbnZhcz1udWxsO3RoaXMuI19uLmRpc2Nvbm5lY3QoKTt0aGlzLiNfbj1udWxsO3N1cGVyLnJlbW92ZSgpfX1zZXRQYXJlbnQodCl7IXRoaXMucGFyZW50JiZ0P3RoaXMuX3VpTWFuYWdlci5yZW1vdmVTaG91bGRSZXNjYWxlKHRoaXMpOnRoaXMucGFyZW50JiZudWxsPT09dCYmdGhpcy5fdWlNYW5hZ2VyLmFkZFNob3VsZFJlc2NhbGUodGhpcyk7c3VwZXIuc2V0UGFyZW50KHQpfW9uU2NhbGVDaGFuZ2luZygpe2NvbnN0W3QsZV09dGhpcy5wYXJlbnREaW1lbnNpb25zLG49dGhpcy53aWR0aCp0LGk9dGhpcy5oZWlnaHQqZTt0aGlzLnNldERpbWVuc2lvbnMobixpKX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLiN2biYmbnVsbCE9PXRoaXMuY2FudmFzKXtzdXBlci5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy4jbW4pfX1kaXNhYmxlRWRpdE1vZGUoKXtpZih0aGlzLmlzSW5FZGl0TW9kZSgpJiZudWxsIT09dGhpcy5jYW52YXMpe3N1cGVyLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCk7dGhpcy5kaXYuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNtbil9fW9uY2VBZGRlZCgpe3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5wYXRocy5sZW5ndGh8fDE9PT10aGlzLnBhdGhzLmxlbmd0aCYmMD09PXRoaXMucGF0aHNbMF0ubGVuZ3RofSNGbigpe2NvbnN0e3BhcmVudFJvdGF0aW9uOnQscGFyZW50RGltZW5zaW9uczpbZSxuXX09dGhpcztzd2l0Y2godCl7Y2FzZSA5MDpyZXR1cm5bMCxuLG4sZV07Y2FzZSAxODA6cmV0dXJuW2UsbixlLG5dO2Nhc2UgMjcwOnJldHVybltlLDAsbixlXTtkZWZhdWx0OnJldHVyblswLDAsZSxuXX19I0luKCl7Y29uc3R7Y3R4OnQsY29sb3I6ZSxvcGFjaXR5Om4sdGhpY2tuZXNzOmkscGFyZW50U2NhbGU6cixzY2FsZUZhY3RvcjpzfT10aGlzO3QubGluZVdpZHRoPWkqci9zO3QubGluZUNhcD0icm91bmQiO3QubGluZUpvaW49InJvdW5kIjt0Lm1pdGVyTGltaXQ9MTA7dC5zdHJva2VTdHlsZT1gJHtlfSR7KDAsYS5vcGFjaXR5VG9IZXgpKG4pfWB9I0RuKHQsZSl7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLHRoaXMuI3VuKTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHRoaXMuI2ZuKTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdGhpcy4jcG4pO3RoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy4jZ24pO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNtbik7dGhpcy5pc0VkaXRpbmc9ITA7aWYoIXRoaXMuI0FuKXt0aGlzLiNBbj0hMDt0aGlzLiNSbigpO3RoaXMudGhpY2tuZXNzfHw9SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzO3RoaXMuY29sb3J8fD1JbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8ci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yO3RoaXMub3BhY2l0eT8/PUlua0VkaXRvci5fZGVmYXVsdE9wYWNpdHl9dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTt0aGlzLiN5bj0hMTt0aGlzLiNJbigpO3RoaXMuI3huPSgpPT57dGhpcy4jT24oKTt0aGlzLiN4biYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLiN4bil9O3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy4jeG4pfSNMbih0LGUpe2NvbnN0W24saV09dGhpcy5jdXJyZW50UGF0aC5hdCgtMSk7aWYodGhpcy5jdXJyZW50UGF0aC5sZW5ndGg+MSYmdD09PW4mJmU9PT1pKXJldHVybjtjb25zdCByPXRoaXMuY3VycmVudFBhdGg7bGV0IHM9dGhpcy4jYm47ci5wdXNoKFt0LGVdKTt0aGlzLiN5bj0hMDtpZihyLmxlbmd0aDw9Mil7cy5tb3ZlVG8oLi4uclswXSk7cy5saW5lVG8odCxlKX1lbHNle2lmKDM9PT1yLmxlbmd0aCl7dGhpcy4jYm49cz1uZXcgUGF0aDJEO3MubW92ZVRvKC4uLnJbMF0pfXRoaXMuI05uKHMsLi4uci5hdCgtMyksLi4uci5hdCgtMiksdCxlKX19I0JuKCl7aWYoMD09PXRoaXMuY3VycmVudFBhdGgubGVuZ3RoKXJldHVybjtjb25zdCB0PXRoaXMuY3VycmVudFBhdGguYXQoLTEpO3RoaXMuI2JuLmxpbmVUbyguLi50KX0jam4odCxlKXt0aGlzLiN4bj1udWxsO3Q9TWF0aC5taW4oTWF0aC5tYXgodCwwKSx0aGlzLmNhbnZhcy53aWR0aCk7ZT1NYXRoLm1pbihNYXRoLm1heChlLDApLHRoaXMuY2FudmFzLmhlaWdodCk7dGhpcy4jTG4odCxlKTt0aGlzLiNCbigpO2xldCBuO2lmKDEhPT10aGlzLmN1cnJlbnRQYXRoLmxlbmd0aCluPXRoaXMuI1VuKCk7ZWxzZXtjb25zdCBpPVt0LGVdO249W1tpLGkuc2xpY2UoKSxpLnNsaWNlKCksaV1dfWNvbnN0IGk9dGhpcy4jYm4scj10aGlzLmN1cnJlbnRQYXRoO3RoaXMuY3VycmVudFBhdGg9W107dGhpcy4jYm49bmV3IFBhdGgyRDt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9Pnt0aGlzLmFsbFJhd1BhdGhzLnB1c2gocik7dGhpcy5wYXRocy5wdXNoKG4pO3RoaXMuYmV6aWVyUGF0aDJELnB1c2goaSk7dGhpcy5yZWJ1aWxkKCl9LHVuZG86KCk9Pnt0aGlzLmFsbFJhd1BhdGhzLnBvcCgpO3RoaXMucGF0aHMucG9wKCk7dGhpcy5iZXppZXJQYXRoMkQucG9wKCk7aWYoMD09PXRoaXMucGF0aHMubGVuZ3RoKXRoaXMucmVtb3ZlKCk7ZWxzZXtpZighdGhpcy5jYW52YXMpe3RoaXMuI2tuKCk7dGhpcy4jTW4oKX10aGlzLiNUbigpfX0sbXVzdEV4ZWM6ITB9KX0jT24oKXtpZighdGhpcy4jeW4pcmV0dXJuO3RoaXMuI3luPSExO2NvbnN0IHQ9TWF0aC5jZWlsKHRoaXMudGhpY2tuZXNzKnRoaXMucGFyZW50U2NhbGUpLGU9dGhpcy5jdXJyZW50UGF0aC5zbGljZSgtMyksbj1lLm1hcCgodD0+dFswXSkpLGk9ZS5tYXAoKHQ9PnRbMV0pKSx7Y3R4OnJ9PShNYXRoLm1pbiguLi5uKSxNYXRoLm1heCguLi5uKSxNYXRoLm1pbiguLi5pKSxNYXRoLm1heCguLi5pKSx0aGlzKTtyLnNhdmUoKTtyLmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiB0aGlzLmJlemllclBhdGgyRClyLnN0cm9rZSh0KTtyLnN0cm9rZSh0aGlzLiNibik7ci5yZXN0b3JlKCl9I05uKHQsZSxuLGkscixzLGEpe2NvbnN0IG89KGUraSkvMixsPShuK3IpLzIsYz0oaStzKS8yLGg9KHIrYSkvMjt0LmJlemllckN1cnZlVG8obysyKihpLW8pLzMsbCsyKihyLWwpLzMsYysyKihpLWMpLzMsaCsyKihyLWgpLzMsYyxoKX0jVW4oKXtjb25zdCB0PXRoaXMuY3VycmVudFBhdGg7aWYodC5sZW5ndGg8PTIpcmV0dXJuW1t0WzBdLHRbMF0sdC5hdCgtMSksdC5hdCgtMSldXTtjb25zdCBlPVtdO2xldCBuLFtpLHJdPXRbMF07Zm9yKG49MTtuPHQubGVuZ3RoLTI7bisrKXtjb25zdFtzLGFdPXRbbl0sW28sbF09dFtuKzFdLGM9KHMrbykvMixoPShhK2wpLzIsZD1baSsyKihzLWkpLzMscisyKihhLXIpLzNdLHU9W2MrMioocy1jKS8zLGgrMiooYS1oKS8zXTtlLnB1c2goW1tpLHJdLGQsdSxbYyxoXV0pO1tpLHJdPVtjLGhdfWNvbnN0W3MsYV09dFtuXSxbbyxsXT10W24rMV0sYz1baSsyKihzLWkpLzMscisyKihhLXIpLzNdLGg9W28rMioocy1vKS8zLGwrMiooYS1sKS8zXTtlLnB1c2goW1tpLHJdLGMsaCxbbyxsXV0pO3JldHVybiBlfSNQbigpe2lmKHRoaXMuaXNFbXB0eSgpKXt0aGlzLiN6bigpO3JldHVybn10aGlzLiNJbigpO2NvbnN0e2NhbnZhczp0LGN0eDplfT10aGlzO2Uuc2V0VHJhbnNmb3JtKDEsMCwwLDEsMCwwKTtlLmNsZWFyUmVjdCgwLDAsdC53aWR0aCx0LmhlaWdodCk7dGhpcy4jem4oKTtmb3IoY29uc3QgdCBvZiB0aGlzLmJlemllclBhdGgyRCllLnN0cm9rZSh0KX1jb21taXQoKXtpZighdGhpcy4jdm4pe3N1cGVyLmNvbW1pdCgpO3RoaXMuaXNFZGl0aW5nPSExO3RoaXMuZGlzYWJsZUVkaXRNb2RlKCk7dGhpcy5zZXRJbkZvcmVncm91bmQoKTt0aGlzLiN2bj0hMDt0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJkaXNhYmxlZCIpO3RoaXMuI1RuKCEwKTt0aGlzLm1ha2VSZXNpemFibGUoKTt0aGlzLnBhcmVudC5hZGRJbmtFZGl0b3JJZk5lZWRlZCghMCk7dGhpcy5wYXJlbnQubW92ZUVkaXRvckluRE9NKHRoaXMpO3RoaXMuZGl2LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9fWZvY3VzaW4odCl7c3VwZXIuZm9jdXNpbih0KTt0aGlzLmVuYWJsZUVkaXRNb2RlKCl9Y2FudmFzUG9pbnRlcmRvd24odCl7aWYoMD09PXQuYnV0dG9uJiZ0aGlzLmlzSW5FZGl0TW9kZSgpJiYhdGhpcy4jdm4pe3RoaXMuc2V0SW5Gb3JlZ3JvdW5kKCk7dC5wcmV2ZW50RGVmYXVsdCgpOyJtb3VzZSIhPT10LnR5cGUmJnRoaXMuZGl2LmZvY3VzKCk7dGhpcy4jRG4odC5vZmZzZXRYLHQub2Zmc2V0WSl9fWNhbnZhc0NvbnRleHRNZW51KHQpe3QucHJldmVudERlZmF1bHQoKX1jYW52YXNQb2ludGVybW92ZSh0KXt0LnByZXZlbnREZWZhdWx0KCk7dGhpcy4jTG4odC5vZmZzZXRYLHQub2Zmc2V0WSl9Y2FudmFzUG9pbnRlcnVwKHQpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLiNIbih0KX1jYW52YXNQb2ludGVybGVhdmUodCl7dGhpcy4jSG4odCl9I0huKHQpe3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsdGhpcy4jZm4pO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLiNwbik7dGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNnbik7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI21uKTtzZXRUaW1lb3V0KCgoKT0+e3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLiN1bil9KSwxMCk7dGhpcy4jam4odC5vZmZzZXRYLHQub2Zmc2V0WSk7dGhpcy5hZGRUb0Fubm90YXRpb25TdG9yYWdlKCk7dGhpcy5zZXRJbkJhY2tncm91bmQoKX0ja24oKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5jbGFzc05hbWU9Imlua0VkaXRvckNhbnZhcyI7SW5rRWRpdG9yLl9sMTBuUHJvbWlzZS5nZXQoImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiKS50aGVuKCh0PT50aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSkpO3RoaXMuZGl2LmFwcGVuZCh0aGlzLmNhbnZhcyk7dGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKX0jTW4oKXt0aGlzLiNfbj1uZXcgUmVzaXplT2JzZXJ2ZXIoKHQ9Pntjb25zdCBlPXRbMF0uY29udGVudFJlY3Q7ZS53aWR0aCYmZS5oZWlnaHQmJnRoaXMuc2V0RGltZW5zaW9ucyhlLndpZHRoLGUuaGVpZ2h0KX0pKTt0aGlzLiNfbi5vYnNlcnZlKHRoaXMuZGl2KX1nZXQgaXNSZXNpemFibGUoKXtyZXR1cm4hdGhpcy5pc0VtcHR5KCkmJnRoaXMuI3ZufXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO0lua0VkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5kaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtjb25zdFtuLGkscixzXT10aGlzLiNGbigpO3RoaXMuc2V0QXQobixpLDAsMCk7dGhpcy5zZXREaW1zKHIscyk7dGhpcy4ja24oKTtpZih0aGlzLndpZHRoKXtjb25zdFtuLGldPXRoaXMucGFyZW50RGltZW5zaW9uczt0aGlzLnNldEFzcGVjdFJhdGlvKHRoaXMud2lkdGgqbix0aGlzLmhlaWdodCppKTt0aGlzLnNldEF0KHQqbixlKmksdGhpcy53aWR0aCpuLHRoaXMuaGVpZ2h0KmkpO3RoaXMuI0FuPSEwO3RoaXMuI1JuKCk7dGhpcy5zZXREaW1zKHRoaXMud2lkdGgqbix0aGlzLmhlaWdodCppKTt0aGlzLiNQbigpO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIil9ZWxzZXt0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nIik7dGhpcy5lbmFibGVFZGl0TW9kZSgpfXRoaXMuI01uKCk7cmV0dXJuIHRoaXMuZGl2fSNSbigpe2lmKCF0aGlzLiNBbilyZXR1cm47Y29uc3RbdCxlXT10aGlzLnBhcmVudERpbWVuc2lvbnM7dGhpcy5jYW52YXMud2lkdGg9TWF0aC5jZWlsKHRoaXMud2lkdGgqdCk7dGhpcy5jYW52YXMuaGVpZ2h0PU1hdGguY2VpbCh0aGlzLmhlaWdodCplKTt0aGlzLiN6bigpfXNldERpbWVuc2lvbnModCxlKXtjb25zdCBuPU1hdGgucm91bmQodCksaT1NYXRoLnJvdW5kKGUpO2lmKHRoaXMuI1NuPT09biYmdGhpcy4jRW49PT1pKXJldHVybjt0aGlzLiNTbj1uO3RoaXMuI0VuPWk7dGhpcy5jYW52YXMuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtjb25zdFtyLHNdPXRoaXMucGFyZW50RGltZW5zaW9uczt0aGlzLndpZHRoPXQvcjt0aGlzLmhlaWdodD1lL3M7dGhpcy5maXhBbmRTZXRQb3NpdGlvbigpO3RoaXMuI3ZuJiZ0aGlzLiNxbih0LGUpO3RoaXMuI1JuKCk7dGhpcy4jUG4oKTt0aGlzLmNhbnZhcy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIjt0aGlzLmZpeERpbXMoKX0jcW4odCxlKXtjb25zdCBuPXRoaXMuI1duKCksaT0odC1uKS90aGlzLiNkbixyPShlLW4pL3RoaXMuI2huO3RoaXMuc2NhbGVGYWN0b3I9TWF0aC5taW4oaSxyKX0jem4oKXtjb25zdCB0PXRoaXMuI1duKCkvMjt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0odGhpcy5zY2FsZUZhY3RvciwwLDAsdGhpcy5zY2FsZUZhY3Rvcix0aGlzLnRyYW5zbGF0aW9uWCp0aGlzLnNjYWxlRmFjdG9yK3QsdGhpcy50cmFuc2xhdGlvblkqdGhpcy5zY2FsZUZhY3Rvcit0KX1zdGF0aWMjR24odCl7Y29uc3QgZT1uZXcgUGF0aDJEO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3RbaSxyLHMsYV09dFtuXTswPT09biYmZS5tb3ZlVG8oLi4uaSk7ZS5iZXppZXJDdXJ2ZVRvKHJbMF0sclsxXSxzWzBdLHNbMV0sYVswXSxhWzFdKX1yZXR1cm4gZX1zdGF0aWMjVm4odCxlLG4pe2NvbnN0W2kscixzLGFdPWU7c3dpdGNoKG4pe2Nhc2UgMDpmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKz0yKXt0W2VdKz1pO3RbZSsxXT1hLXRbZSsxXX1icmVhaztjYXNlIDkwOmZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpe2NvbnN0IG49dFtlXTt0W2VdPXRbZSsxXStpO3RbZSsxXT1uK3J9YnJlYWs7Y2FzZSAxODA6Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9Mil7dFtlXT1zLXRbZV07dFtlKzFdKz1yfWJyZWFrO2Nhc2UgMjcwOmZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpe2NvbnN0IG49dFtlXTt0W2VdPXMtdFtlKzFdO3RbZSsxXT1hLW59YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX1yZXR1cm4gdH1zdGF0aWMjJG4odCxlLG4pe2NvbnN0W2kscixzLGFdPWU7c3dpdGNoKG4pe2Nhc2UgMDpmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKz0yKXt0W2VdLT1pO3RbZSsxXT1hLXRbZSsxXX1icmVhaztjYXNlIDkwOmZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpe2NvbnN0IG49dFtlXTt0W2VdPXRbZSsxXS1yO3RbZSsxXT1uLWl9YnJlYWs7Y2FzZSAxODA6Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9Mil7dFtlXT1zLXRbZV07dFtlKzFdLT1yfWJyZWFrO2Nhc2UgMjcwOmZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpe2NvbnN0IG49dFtlXTt0W2VdPWEtdFtlKzFdO3RbZSsxXT1zLW59YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX1yZXR1cm4gdH0jWG4odCxlLG4saSl7Y29uc3Qgcj1bXSxzPXRoaXMudGhpY2tuZXNzLzIsYT10KmUrcyxvPXQqbitzO2Zvcihjb25zdCBlIG9mIHRoaXMucGF0aHMpe2NvbnN0IG49W10scz1bXTtmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2k8cjtpKyspe2NvbnN0W2wsYyxoLGRdPWVbaV0sdT10KmxbMF0rYSxwPXQqbFsxXStvLGY9dCpjWzBdK2EsZz10KmNbMV0rbyxtPXQqaFswXSthLGI9dCpoWzFdK28sdj10KmRbMF0rYSx5PXQqZFsxXStvO2lmKDA9PT1pKXtuLnB1c2godSxwKTtzLnB1c2godSxwKX1uLnB1c2goZixnLG0sYix2LHkpO3MucHVzaChmLGcpO2k9PT1yLTEmJnMucHVzaCh2LHkpfXIucHVzaCh7YmV6aWVyOklua0VkaXRvci4jVm4obixpLHRoaXMucm90YXRpb24pLHBvaW50czpJbmtFZGl0b3IuI1ZuKHMsaSx0aGlzLnJvdGF0aW9uKX0pfXJldHVybiByfSNLbigpe2xldCB0PTEvMCxlPS0xLzAsbj0xLzAscj0tMS8wO2Zvcihjb25zdCBzIG9mIHRoaXMucGF0aHMpZm9yKGNvbnN0W2EsbyxsLGNdb2Ygcyl7Y29uc3Qgcz1pLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goLi4uYSwuLi5vLC4uLmwsLi4uYyk7dD1NYXRoLm1pbih0LHNbMF0pO249TWF0aC5taW4obixzWzFdKTtlPU1hdGgubWF4KGUsc1syXSk7cj1NYXRoLm1heChyLHNbM10pfXJldHVyblt0LG4sZSxyXX0jV24oKXtyZXR1cm4gdGhpcy4jdm4/TWF0aC5jZWlsKHRoaXMudGhpY2tuZXNzKnRoaXMucGFyZW50U2NhbGUpOjB9I1RuKCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm47aWYoIXRoaXMuI3ZuKXt0aGlzLiNQbigpO3JldHVybn1jb25zdCBlPXRoaXMuI0tuKCksbj10aGlzLiNXbigpO3RoaXMuI2RuPU1hdGgubWF4KHIuQW5ub3RhdGlvbkVkaXRvci5NSU5fU0laRSxlWzJdLWVbMF0pO3RoaXMuI2huPU1hdGgubWF4KHIuQW5ub3RhdGlvbkVkaXRvci5NSU5fU0laRSxlWzNdLWVbMV0pO2NvbnN0IGk9TWF0aC5jZWlsKG4rdGhpcy4jZG4qdGhpcy5zY2FsZUZhY3Rvcikscz1NYXRoLmNlaWwobit0aGlzLiNobip0aGlzLnNjYWxlRmFjdG9yKSxbYSxvXT10aGlzLnBhcmVudERpbWVuc2lvbnM7dGhpcy53aWR0aD1pL2E7dGhpcy5oZWlnaHQ9cy9vO3RoaXMuc2V0QXNwZWN0UmF0aW8oaSxzKTtjb25zdCBsPXRoaXMudHJhbnNsYXRpb25YLGM9dGhpcy50cmFuc2xhdGlvblk7dGhpcy50cmFuc2xhdGlvblg9LWVbMF07dGhpcy50cmFuc2xhdGlvblk9LWVbMV07dGhpcy4jUm4oKTt0aGlzLiNQbigpO3RoaXMuI1NuPWk7dGhpcy4jRW49czt0aGlzLnNldERpbXMoaSxzKTtjb25zdCBoPXQ/bi90aGlzLnNjYWxlRmFjdG9yLzI6MDt0aGlzLnRyYW5zbGF0ZShsLXRoaXMudHJhbnNsYXRpb25YLWgsYy10aGlzLnRyYW5zbGF0aW9uWS1oKX1zdGF0aWMgZGVzZXJpYWxpemUodCxlLG4pe2lmKHQgaW5zdGFuY2VvZiBzLklua0Fubm90YXRpb25FbGVtZW50KXJldHVybiBudWxsO2NvbnN0IGE9c3VwZXIuZGVzZXJpYWxpemUodCxlLG4pO2EudGhpY2tuZXNzPXQudGhpY2tuZXNzO2EuY29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvciguLi50LmNvbG9yKTthLm9wYWNpdHk9dC5vcGFjaXR5O2NvbnN0W28sbF09YS5wYWdlRGltZW5zaW9ucyxjPWEud2lkdGgqbyxoPWEuaGVpZ2h0KmwsZD1hLnBhcmVudFNjYWxlLHU9dC50aGlja25lc3MvMjthLiN2bj0hMDthLiNTbj1NYXRoLnJvdW5kKGMpO2EuI0VuPU1hdGgucm91bmQoaCk7Y29uc3R7cGF0aHM6cCxyZWN0OmYscm90YXRpb246Z309dDtmb3IobGV0e2Jlemllcjp0fW9mIHApe3Q9SW5rRWRpdG9yLiMkbih0LGYsZyk7Y29uc3QgZT1bXTthLnBhdGhzLnB1c2goZSk7bGV0IG49ZCoodFswXS11KSxpPWQqKHRbMV0tdSk7Zm9yKGxldCByPTIscz10Lmxlbmd0aDtyPHM7cis9Nil7Y29uc3Qgcz1kKih0W3JdLXUpLGE9ZCoodFtyKzFdLXUpLG89ZCoodFtyKzJdLXUpLGw9ZCoodFtyKzNdLXUpLGM9ZCoodFtyKzRdLXUpLGg9ZCoodFtyKzVdLXUpO2UucHVzaChbW24saV0sW3MsYV0sW28sbF0sW2MsaF1dKTtuPWM7aT1ofWNvbnN0IHI9dGhpcy4jR24oZSk7YS5iZXppZXJQYXRoMkQucHVzaChyKX1jb25zdCBtPWEuI0tuKCk7YS4jZG49TWF0aC5tYXgoci5Bbm5vdGF0aW9uRWRpdG9yLk1JTl9TSVpFLG1bMl0tbVswXSk7YS4jaG49TWF0aC5tYXgoci5Bbm5vdGF0aW9uRWRpdG9yLk1JTl9TSVpFLG1bM10tbVsxXSk7YS4jcW4oYyxoKTtyZXR1cm4gYX1zZXJpYWxpemUoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZ2V0UmVjdCgwLDApLGU9ci5Bbm5vdGF0aW9uRWRpdG9yLl9jb2xvck1hbmFnZXIuY29udmVydCh0aGlzLmN0eC5zdHJva2VTdHlsZSk7cmV0dXJue2Fubm90YXRpb25UeXBlOmkuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LLGNvbG9yOmUsdGhpY2tuZXNzOnRoaXMudGhpY2tuZXNzLG9wYWNpdHk6dGhpcy5vcGFjaXR5LHBhdGhzOnRoaXMuI1huKHRoaXMuc2NhbGVGYWN0b3IvdGhpcy5wYXJlbnRTY2FsZSx0aGlzLnRyYW5zbGF0aW9uWCx0aGlzLnRyYW5zbGF0aW9uWSx0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgscmVjdDp0LHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLklua0VkaXRvcj1JbmtFZGl0b3J9LCh0LGUsbik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU3RhbXBFZGl0b3I9dm9pZCAwO24oMTQ4KTtuKDE1MSk7dmFyIGk9bigxNjMpLHI9bigxKSxzPW4oMTY3KSxhPW4oMTk3KTtjbGFzcyBTdGFtcEVkaXRvciBleHRlbmRzIGkuQW5ub3RhdGlvbkVkaXRvcnsjWW49bnVsbDsjSm49bnVsbDsjUW49bnVsbDsjWm49bnVsbDsjdGk9bnVsbDsjX249bnVsbDsjZWk9bnVsbDsjbmk9ITE7c3RhdGljIF90eXBlPSJzdGFtcCI7Y29uc3RydWN0b3IodCl7c3VwZXIoey4uLnQsbmFtZToic3RhbXBFZGl0b3IifSk7dGhpcy4jWm49dC5iaXRtYXBVcmx9I2lpKCl7aWYodGhpcy4jSm4pe3RoaXMuX3VpTWFuYWdlci5pbWFnZU1hbmFnZXIuZ2V0RnJvbUlkKHRoaXMuI0puKS50aGVuKCh0PT57aWYodCl7dGhpcy4jWW49dC5iaXRtYXA7dGhpcy4ja24oKX1lbHNlIHRoaXMucmVtb3ZlKCl9KSk7cmV0dXJufWlmKHRoaXMuI1puKXtjb25zdCB0PXRoaXMuI1puO3RoaXMuI1puPW51bGw7dGhpcy4jUW49dGhpcy5fdWlNYW5hZ2VyLmltYWdlTWFuYWdlci5nZXRGcm9tVXJsKHQpLnRoZW4oKHQ9Pnt0aGlzLiNRbj1udWxsO2lmKHQpeyh7Yml0bWFwOnRoaXMuI1luLGlkOnRoaXMuI0puLGlzU3ZnOnRoaXMuI25pfT10KTt0aGlzLiNrbigpfWVsc2UgdGhpcy5yZW1vdmUoKX0pKTtyZXR1cm59Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3QudHlwZT0iZmlsZSI7dC5hY2NlcHQ9ImltYWdlLyoiO3RoaXMuI1FuPW5ldyBQcm9taXNlKChlPT57dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChhc3luYygpPT57dGhpcy4jUW49bnVsbDtpZih0LmZpbGVzJiYwIT09dC5maWxlcy5sZW5ndGgpe2NvbnN0IGU9YXdhaXQgdGhpcy5fdWlNYW5hZ2VyLmltYWdlTWFuYWdlci5nZXRGcm9tRmlsZSh0LmZpbGVzWzBdKTtpZighZSl7dGhpcy5yZW1vdmUoKTtyZXR1cm59KHtiaXRtYXA6dGhpcy4jWW4saWQ6dGhpcy4jSm4saXNTdmc6dGhpcy4jbml9PWUpO3RoaXMuI2tuKCl9ZWxzZSB0aGlzLnJlbW92ZSgpO2UoKX0pKTt0LmFkZEV2ZW50TGlzdGVuZXIoImNhbmNlbCIsKCgpPT57dGhpcy4jUW49bnVsbDt0aGlzLnJlbW92ZSgpO2UoKX0pKX0pKTt0LmNsaWNrKCl9cmVtb3ZlKCl7aWYodGhpcy4jSm4pe3RoaXMuI1luPW51bGw7dGhpcy5fdWlNYW5hZ2VyLmltYWdlTWFuYWdlci5kZWxldGVJZCh0aGlzLiNKbik7dGhpcy4jdGk/LnJlbW92ZSgpO3RoaXMuI3RpPW51bGw7dGhpcy4jX24/LmRpc2Nvbm5lY3QoKTt0aGlzLiNfbj1udWxsfXN1cGVyLnJlbW92ZSgpfXJlYnVpbGQoKXtzdXBlci5yZWJ1aWxkKCk7aWYobnVsbCE9PXRoaXMuZGl2KXt0aGlzLiNKbiYmdGhpcy4jaWkoKTt0aGlzLmlzQXR0YWNoZWRUb0RPTXx8dGhpcy5wYXJlbnQuYWRkKHRoaXMpfX1vbmNlQWRkZWQoKXt0aGlzLmRpdi5kcmFnZ2FibGU9ITA7dGhpcy5wYXJlbnQuYWRkVW5kb2FibGVFZGl0b3IodGhpcyk7dGhpcy5kaXYuZm9jdXMoKX1pc0VtcHR5KCl7cmV0dXJuIG51bGw9PT10aGlzLiNRbiYmbnVsbD09PXRoaXMuI1luJiZudWxsPT09dGhpcy4jWm59Z2V0IGlzUmVzaXphYmxlKCl7cmV0dXJuITB9cmVuZGVyKCl7aWYodGhpcy5kaXYpcmV0dXJuIHRoaXMuZGl2O2xldCB0LGU7aWYodGhpcy53aWR0aCl7dD10aGlzLng7ZT10aGlzLnl9c3VwZXIucmVuZGVyKCk7aWYodGhpcy4jWW4pdGhpcy4ja24oKTtlbHNle3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImxvYWRpbmciKTt0aGlzLiNpaSgpfWlmKHRoaXMud2lkdGgpe2NvbnN0W24saV09dGhpcy5wYXJlbnREaW1lbnNpb25zO3RoaXMuc2V0QXQodCpuLGUqaSx0aGlzLndpZHRoKm4sdGhpcy5oZWlnaHQqaSl9cmV0dXJuIHRoaXMuZGl2fSNrbigpe2NvbnN0e2Rpdjp0fT10aGlzO2xldHt3aWR0aDplLGhlaWdodDpufT10aGlzLiNZbjtjb25zdFtpLHJdPXRoaXMucGFnZURpbWVuc2lvbnMscz0uNzU7aWYodGhpcy53aWR0aCl7ZT10aGlzLndpZHRoKmk7bj10aGlzLmhlaWdodCpyfWVsc2UgaWYoZT5zKml8fG4+cypyKXtjb25zdCB0PU1hdGgubWluKHMqaS9lLHMqci9uKTtlKj10O24qPXR9Y29uc3RbYSxvXT10aGlzLnBhcmVudERpbWVuc2lvbnM7dGhpcy5zZXREaW1zKGUqYS9pLG4qby9yKTtjb25zdCBsPXRoaXMuI3RpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3QuYXBwZW5kKGwpO3RoaXMuI3JpKGUsbik7dGhpcy4jTW4oKTt0LmNsYXNzTGlzdC5yZW1vdmUoImxvYWRpbmciKX0jc2kodCxlKXtjb25zdFtuLGldPXRoaXMucGFyZW50RGltZW5zaW9uczt0aGlzLndpZHRoPXQvbjt0aGlzLmhlaWdodD1lL2k7dGhpcy5zZXREaW1zKHQsZSk7dGhpcy5maXhBbmRTZXRQb3NpdGlvbigpO251bGwhPT10aGlzLiNlaSYmY2xlYXJUaW1lb3V0KHRoaXMuI2VpKTt0aGlzLiNlaT1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuI2VpPW51bGw7dGhpcy4jcmkodCxlKX0pLDIwMCl9I2FpKHQsZSl7Y29uc3R7d2lkdGg6bixoZWlnaHQ6aX09dGhpcy4jWW47bGV0IHI9bixzPWksYT10aGlzLiNZbjtmb3IoO3I+Mip0fHxzPjIqZTspe2NvbnN0IG49cixpPXM7cj4yKnQmJihyPXI+PTE2Mzg0P01hdGguZmxvb3Ioci8yKS0xOk1hdGguY2VpbChyLzIpKTtzPjIqZSYmKHM9cz49MTYzODQ/TWF0aC5mbG9vcihzLzIpLTE6TWF0aC5jZWlsKHMvMikpO2NvbnN0IG89bmV3IE9mZnNjcmVlbkNhbnZhcyhyLHMpO28uZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoYSwwLDAsbixpLDAsMCxyLHMpO2E9by50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1yZXR1cm4gYX0jcmkodCxlKXtjb25zdCBuPXRoaXMuI3RpO2lmKCFufHxuLndpZHRoPT09dCYmbi5oZWlnaHQ9PT1lKXJldHVybjtuLndpZHRoPXQ7bi5oZWlnaHQ9ZTtjb25zdCBpPXRoaXMuI25pP3RoaXMuI1luOnRoaXMuI2FpKHQsZSkscj1uLmdldENvbnRleHQoIjJkIik7ci5maWx0ZXI9dGhpcy5fdWlNYW5hZ2VyLmhjbUZpbHRlcjtyLmRyYXdJbWFnZShpLDAsMCxpLndpZHRoLGkuaGVpZ2h0LDAsMCx0LGUpfSNvaSh0KXtpZih0KXtpZih0aGlzLiNuaSl7Y29uc3QgdD10aGlzLl91aU1hbmFnZXIuaW1hZ2VNYW5hZ2VyLmdldFN2Z1VybCh0aGlzLiNKbik7aWYodClyZXR1cm4gdH1jb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOyh7d2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9PXRoaXMuI1luKTt0LmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKHRoaXMuI1luLDAsMCk7cmV0dXJuIHQudG9EYXRhVVJMKCl9aWYodGhpcy4jbmkpe2NvbnN0W3QsZV09dGhpcy5wYWdlRGltZW5zaW9ucyxuPU1hdGgucm91bmQodGhpcy53aWR0aCp0KnMuUGl4ZWxzUGVySW5jaC5QREZfVE9fQ1NTX1VOSVRTKSxpPU1hdGgucm91bmQodGhpcy5oZWlnaHQqZSpzLlBpeGVsc1BlckluY2guUERGX1RPX0NTU19VTklUUykscj1uZXcgT2Zmc2NyZWVuQ2FudmFzKG4saSk7ci5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh0aGlzLiNZbiwwLDAsdGhpcy4jWW4ud2lkdGgsdGhpcy4jWW4uaGVpZ2h0LDAsMCxuLGkpO3JldHVybiByLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfXJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy4jWW4pfSNNbigpe3RoaXMuI19uPW5ldyBSZXNpemVPYnNlcnZlcigodD0+e2NvbnN0IGU9dFswXS5jb250ZW50UmVjdDtlLndpZHRoJiZlLmhlaWdodCYmdGhpcy4jc2koZS53aWR0aCxlLmhlaWdodCl9KSk7dGhpcy4jX24ub2JzZXJ2ZSh0aGlzLmRpdil9c3RhdGljIGRlc2VyaWFsaXplKHQsZSxuKXtpZih0IGluc3RhbmNlb2YgYS5TdGFtcEFubm90YXRpb25FbGVtZW50KXJldHVybiBudWxsO2NvbnN0IGk9c3VwZXIuZGVzZXJpYWxpemUodCxlLG4pLHtyZWN0OnIsYml0bWFwVXJsOnMsYml0bWFwSWQ6byxpc1N2ZzpsfT10O28mJm4uaW1hZ2VNYW5hZ2VyLmlzVmFsaWRJZChvKT9pLiNKbj1vOmkuI1puPXM7aS4jbmk9bDtjb25zdFtjLGhdPWkucGFnZURpbWVuc2lvbnM7aS53aWR0aD0oclsyXS1yWzBdKS9jO2kuaGVpZ2h0PShyWzNdLXJbMV0pL2g7cmV0dXJuIGl9c2VyaWFsaXplKCl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO2lmKHRoaXMuaXNFbXB0eSgpKXJldHVybiBudWxsO2NvbnN0IG49e2Fubm90YXRpb25UeXBlOnIuQW5ub3RhdGlvbkVkaXRvclR5cGUuU1RBTVAsYml0bWFwSWQ6dGhpcy4jSm4scGFnZUluZGV4OnRoaXMucGFnZUluZGV4LHJlY3Q6dGhpcy5nZXRSZWN0KDAsMCkscm90YXRpb246dGhpcy5yb3RhdGlvbixpc1N2Zzp0aGlzLiNuaX07aWYodCl7bi5iaXRtYXBVcmw9dGhpcy4jb2koITApO3JldHVybiBufWlmKG51bGw9PT1lKXJldHVybiBuO2Uuc3RhbXBzfHw9bmV3IE1hcDtjb25zdCBpPXRoaXMuI25pPyhuLnJlY3RbMl0tbi5yZWN0WzBdKSoobi5yZWN0WzNdLW4ucmVjdFsxXSk6bnVsbDtpZihlLnN0YW1wcy5oYXModGhpcy4jSm4pKXtpZih0aGlzLiNuaSl7Y29uc3QgdD1lLnN0YW1wcy5nZXQodGhpcy4jSm4pO2lmKGk+dC5hcmVhKXt0LmFyZWE9aTt0LnNlcmlhbGl6ZWQuYml0bWFwLmNsb3NlKCk7dC5zZXJpYWxpemVkLmJpdG1hcD10aGlzLiNvaSghMSl9fX1lbHNle2Uuc3RhbXBzLnNldCh0aGlzLiNKbix7YXJlYTppLHNlcmlhbGl6ZWQ6bn0pO24uYml0bWFwPXRoaXMuI29pKCExKX1yZXR1cm4gbn19ZS5TdGFtcEVkaXRvcj1TdGFtcEVkaXRvcn1dLF9fd2VicGFja19tb2R1bGVfY2FjaGVfXz17fTtmdW5jdGlvbiBfX3dfcGRmanNfcmVxdWlyZV9fKHQpe3ZhciBlPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XTtpZih2b2lkIDAhPT1lKXJldHVybiBlLmV4cG9ydHM7dmFyIG49X193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW3RdPXtleHBvcnRzOnt9fTtfX3dlYnBhY2tfbW9kdWxlc19fW3RdLmNhbGwobi5leHBvcnRzLG4sbi5leHBvcnRzLF9fd19wZGZqc19yZXF1aXJlX18pO3JldHVybiBuLmV4cG9ydHN9dmFyIF9fd2VicGFja19leHBvcnRzX189e307KCgpPT57InVzZSBzdHJpY3QiO3ZhciB0PV9fd2VicGFja19leHBvcnRzX187T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBYm9ydEV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQWJvcnRFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JMYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuQW5ub3RhdGlvbkVkaXRvckxheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JUeXBlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkxheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5Bbm5vdGF0aW9uTGF5ZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25Nb2RlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5Bbm5vdGF0aW9uTW9kZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQ01hcENvbXByZXNzaW9uVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQ01hcENvbXByZXNzaW9uVHlwZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiRmVhdHVyZVRlc3QiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkZlYXR1cmVUZXN0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJHbG9iYWxXb3JrZXJPcHRpb25zIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5HbG9iYWxXb3JrZXJPcHRpb25zfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJJbWFnZUtpbmQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkltYWdlS2luZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiSW52YWxpZFBERkV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuSW52YWxpZFBERkV4Y2VwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiTWlzc2luZ1BERkV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuTWlzc2luZ1BERkV4Y2VwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiT1BTIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5PUFN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBERkRhdGFSYW5nZVRyYW5zcG9ydCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uUERGRGF0YVJhbmdlVHJhbnNwb3J0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQREZEYXRlU3RyaW5nIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5QREZEYXRlU3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQREZXb3JrZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlBERldvcmtlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUGFzc3dvcmRSZXNwb25zZXMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlBhc3N3b3JkUmVzcG9uc2VzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQZXJtaXNzaW9uRmxhZyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuUGVybWlzc2lvbkZsYWd9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBpeGVsc1BlckluY2giLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLlBpeGVsc1BlckluY2h9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlByb21pc2VDYXBhYmlsaXR5Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5Qcm9taXNlQ2FwYWJpbGl0eX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlNWR0dyYXBoaWNzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5TVkdHcmFwaGljc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlV0aWwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlV0aWx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlZlcmJvc2l0eUxldmVsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5WZXJib3NpdHlMZXZlbH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiWGZhTGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBjLlhmYUxheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJidWlsZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uYnVpbGR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldERvY3VtZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXREb2N1bWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0RmlsZW5hbWVGcm9tVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRGaWxlbmFtZUZyb21Vcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFBkZkZpbGVuYW1lRnJvbVVybCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0UGRmRmlsZW5hbWVGcm9tVXJsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXRYZmFQYWdlVmlld3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmdldFhmYVBhZ2VWaWV3cG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNEYXRhU2NoZW1lIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pc0RhdGFTY2hlbWV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImlzUGRmRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuaXNQZGZGaWxlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJsb2FkU2NyaXB0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5sb2FkU2NyaXB0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJub3JtYWxpemVVbmljb2RlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5ub3JtYWxpemVVbmljb2RlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyZW5kZXJUZXh0TGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnJlbmRlclRleHRMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2V0TGF5ZXJEaW1lbnNpb25zIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5zZXRMYXllckRpbWVuc2lvbnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNoYWRvdyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuc2hhZG93fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ1cGRhdGVUZXh0TGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLnVwZGF0ZVRleHRMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmVyc2lvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4udmVyc2lvbn19KTt2YXIgZT1fX3dfcGRmanNfcmVxdWlyZV9fKDEpLG49X193X3BkZmpzX3JlcXVpcmVfXygxMjQpLGk9X193X3BkZmpzX3JlcXVpcmVfXygxNjcpLHI9X193X3BkZmpzX3JlcXVpcmVfXygxOTQpLHM9X193X3BkZmpzX3JlcXVpcmVfXygxOTUpLGE9X193X3BkZmpzX3JlcXVpcmVfXygxNjQpLG89X193X3BkZmpzX3JlcXVpcmVfXygxOTcpLGw9X193X3BkZmpzX3JlcXVpcmVfXygxNzUpLGM9X193X3BkZmpzX3JlcXVpcmVfXygyMDApfSkoKTtyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfX30pKCkpKTs=",i=`data:text/javascript;base64,${a}`,J=`data:text/javascript;base64,${s}`;class S{constructor(l,Z={},b={}){G(this,"container",null);G(this,"wrapper",null);G(this,"wrapperMain",null);G(this,"options",{});G(this,"requestOptions",{});G(this,"pdfDocument",null);this.container=l,this.options={staticFileUrl:"https://unpkg.com/pdfjs-dist@3.1.81/",...Z},this.requestOptions=b,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(){const l=document.createElement("canvas");return l.setAttribute("style","width:100%"),this.wrapperMain.appendChild(l),[l,l.getContext("2d")]}installPdfScript(){return u(i).then(()=>{window.pdfjsLib.GlobalWorkerOptions.workerSrc=J})}checkPdfLib(){return window.pdfjsLib?Promise.resolve():this.installPdfScript()}getDocument(l){return window.pdfjsLib.getDocument({url:h(l),cMapUrl:`${this.options.staticFileUrl.endsWith("/")?this.options.staticFileUrl:this.options.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0,...L(this.options,["width","staticFileUrl"])}).promise}renderSinglePage(l){return this.pdfDocument.getPage(l).then(Z=>{const b=Z.getViewport({scale:2}),W=window.devicePixelRatio||1;let[c,Y]=this.createCanvas();c.width=Math.floor(b.width*W),c.height=Math.floor(b.height*W);let m=Math.floor(b.width),X=Math.floor(b.height);if(this.options.width){let V=this.options.width/m;m=Math.floor(this.options.width),X=Math.floor(X*V)}if(m>document.documentElement.clientWidth){let V=document.documentElement.clientWidth/m;m=Math.floor(document.documentElement.clientWidth),X=Math.floor(X*V)}c.style.width=m+"px",c.style.height=X+"px";const N=W!==1?[W,0,0,W,0,0]:null;return Z.render({canvasContext:Y,transform:N,viewport:b}).promise.then(()=>{this.pdfDocument.numPages>l&&this.renderSinglePage(l+1)})})}renderPage(){return this.wrapperMain||this.createWrapperMain(),this.renderSinglePage(1)}clearAllCanvas(){this.wrapperMain&&(this.wrapper.removeChild(this.wrapperMain),this.wrapperMain=null)}setOptions(l){this.options=l}setRequestOptions(l){this.requestOptions=l}preview(l){return new Promise((Z,b)=>{if(!l){this.clearAllCanvas(),b(new Error("预览地址不能为空"));return}this.checkPdfLib().then(W=>{this.getDocument(l).then(c=>{this.pdfDocument=c,this.renderPage().then(Y=>{Z()}).catch(Y=>{this.clearAllCanvas(),b(Y)})}).catch(c=>{this.clearAllCanvas(),b(c)})}).catch(W=>{this.clearAllCanvas(),b(W)})})}save(l){this.pdfDocument&&this.pdfDocument._transport&&this.pdfDocument._transport.getData().then(Z=>{T(l||`js-preview-pdf-${new Date().getTime()}.pdf`,Z.buffer)})}destroy(){this.container.removeChild(this.wrapper),this.container=null,this.wrapper=null,this.wrapperMain=null,this.options={},this.requestOptions={},this.pdfDocument=null}}function x(d,l,Z){return new S(d,l,Z)}const F={init:x},n={__name:"JsPdfDemo",setup(d){const l=R(null);return p(()=>{window.myPdfPreview=F.init(l.value),window.myPdfPreview.preview("/vue-office/examples/dist/static/test-files/test.pdf").then(Z=>{console.log("excel preview done",window.myPdfPreview)}).catch(Z=>{console.log("err",Z)})}),(Z,b)=>(z(),I("div",{ref_key:"dom",ref:l,style:{height:"calc(100vh - 50px)"}},null,512))}};export{n as default}; diff --git a/examples/dist/assets/PdfDemo-711b6389.js b/examples/dist/assets/PdfDemo-711b6389.js new file mode 100644 index 0000000..a8b796a --- /dev/null +++ b/examples/dist/assets/PdfDemo-711b6389.js @@ -0,0 +1 @@ +import{g as P,d as O,l as C}from"./url-de9b02cf.js";import{o as T}from"./omit-98776422.js";import{d as R,_ as I,r as v,o as F,w as M,a as g,c as b,F as D,k as L,l as N,e as U,f as B,g as q,u as $}from"./index-11290fb6.js";import{P as G,u as x}from"./PreviewWrapper-95ad6bf9.js";const W=`(()=>{"use strict";var e={7757:(e,t,r)=>{var n,a;function i(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){l(e,t),t.add(e)}function o(e,t,r){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return r}function c(e,t,r){l(e,t),t.set(e,r)}function l(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function h(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,d(e,t,"get"))}function u(e,t,r){return function(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}(e,d(e,t,"set"),r),r}function d(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}r(5837),r(1703),r(9575),r(2472),r(8675),r(3105),r(3408),r(2958),r(3462),r(3824),r(2974),r(1439),r(7585),r(5315),r(3948),r(7658),r(8674),r(7727),r(4944),r(3792),r(9714),r(1550),r(4916),r(3123),r(1817),r(4723),r(6314),r(5306),r(7601),r(1299),r(7635),r(8264),r(7287),r(9743),r(2707),r(5581),r(7145),r(6699),r(2023),r(6755),r(285),r(1637),r(6229),r(7330),r(2062),r(8757),r(9135),r(4129),r(6977),r(1058),r(4603),r(8450),r(4678),r(9601),r(2262),r(2087),r(541),r(3210),r(5827),r(5438),r(8255),r(4197),r(5125),r(4506),r(5109),r(6495),r(8862),r(7852),r(7714),r(2801),r(1174),r(7922),e=r.hmd(e),n=globalThis,a=()=>(()=>{var e=[,(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WorkerTask=t.WorkerMessageHandler=void 0,r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(143);var n=r(144),a=r(149),i=r(150),s=r(152),o=r(156),c=r(222),l=r(216),h=r(257),u=r(258);class d{constructor(e){this.name=e,this.terminated=!1,this._capability=new n.PromiseCapability}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}t.WorkerTask=d;class f{static setup(e,t){let r=!1;e.on("test",(function(t){r||(r=!0,e.send("test",t instanceof Uint8Array))})),e.on("configure",(function(e){(0,n.setVerbosityLevel)(e.verbosity)})),e.on("GetDocRequest",(function(e){return f.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let r,f=!1,g=null;const p=new Set,m=(0,n.getVerbosityLevel)(),{docId:b,apiVersion:y}=e,w="3.9.179";if(y!==w)throw new Error('The API version "'.concat(y,'" does not match the Worker version "').concat(w,'".'));const v=[];for(const e in[])v.push(e);if(v.length)throw new Error("The \`Array.prototype\` contains unexpected enumerable properties: "+v.join(", ")+"; thus breaking e.g. \`for...in\` iteration of \`Array\`s.");const x=b+"_worker";let S=new h.MessageHandler(x,b,t);function A(){if(f)throw new Error("Worker was terminated")}function k(e){p.add(e)}function C(e){e.finish(),p.delete(e)}async function O(e){await r.ensureDoc("checkHeader"),await r.ensureDoc("parseStartXRef"),await r.ensureDoc("parse",[e]),await r.ensureDoc("checkFirstPage",[e]),await r.ensureDoc("checkLastPage",[e]);const t=await r.ensureDoc("isPureXfa");if(t){const e=new d("loadXfaFonts");k(e),await Promise.all([r.loadXfaFonts(S,e).catch((e=>{})).then((()=>C(e))),r.loadXfaImages()])}const[n,a]=await Promise.all([r.ensureDoc("numPages"),r.ensureDoc("fingerprints")]);return{numPages:n,fingerprints:a,htmlForXfa:t?await r.ensureDoc("htmlForXfa"):null}}return S.on("GetPage",(function(e){return r.getPage(e.pageIndex).then((function(e){return Promise.all([r.ensure(e,"rotate"),r.ensure(e,"ref"),r.ensure(e,"userUnit"),r.ensure(e,"view")]).then((function(e){let[t,r,n,a]=e;return{rotate:t,ref:r,userUnit:n,view:a}}))}))})),S.on("GetPageIndex",(function(e){const t=i.Ref.get(e.num,e.gen);return r.ensureCatalog("getPageIndex",[t])})),S.on("GetDestinations",(function(e){return r.ensureCatalog("destinations")})),S.on("GetDestination",(function(e){return r.ensureCatalog("getDestination",[e.id])})),S.on("GetPageLabels",(function(e){return r.ensureCatalog("pageLabels")})),S.on("GetPageLayout",(function(e){return r.ensureCatalog("pageLayout")})),S.on("GetPageMode",(function(e){return r.ensureCatalog("pageMode")})),S.on("GetViewerPreferences",(function(e){return r.ensureCatalog("viewerPreferences")})),S.on("GetOpenAction",(function(e){return r.ensureCatalog("openAction")})),S.on("GetAttachments",(function(e){return r.ensureCatalog("attachments")})),S.on("GetJavaScript",(function(e){return r.ensureCatalog("javaScript")})),S.on("GetDocJSActions",(function(e){return r.ensureCatalog("jsActions")})),S.on("GetPageJSActions",(function(e){let{pageIndex:t}=e;return r.getPage(t).then((function(e){return r.ensure(e,"jsActions")}))})),S.on("GetOutline",(function(e){return r.ensureCatalog("documentOutline")})),S.on("GetOptionalContentConfig",(function(e){return r.ensureCatalog("optionalContentConfig")})),S.on("GetPermissions",(function(e){return r.ensureCatalog("permissions")})),S.on("GetMetadata",(function(e){return Promise.all([r.ensureDoc("documentInfo"),r.ensureCatalog("metadata")])})),S.on("GetMarkInfo",(function(e){return r.ensureCatalog("markInfo")})),S.on("GetData",(function(e){return r.requestLoadedStream().then((function(e){return e.bytes}))})),S.on("GetAnnotations",(function(e){let{pageIndex:t,intent:n}=e;return r.getPage(t).then((function(e){const r=new d("GetAnnotations: page ".concat(t));return k(r),e.getAnnotationsData(S,r,n).then((e=>(C(r),e)),(e=>{throw C(r),e}))}))})),S.on("GetFieldObjects",(function(e){return r.ensureDoc("fieldObjects")})),S.on("HasJSActions",(function(e){return r.ensureDoc("hasJSActions")})),S.on("GetCalculationOrderIds",(function(e){return r.ensureDoc("calculationOrderIds")})),S.on("SaveDocument",(async function(e){let{isPureXfa:t,numPages:s,annotationStorage:c,filename:h}=e;const u=[r.requestLoadedStream(),r.ensureCatalog("acroForm"),r.ensureCatalog("acroFormRef"),r.ensureDoc("startXRef"),r.ensureDoc("linearization")],f=t?null:(0,a.getNewAnnotationsMap)(c),g=await r.ensureDoc("xref");if(f){const e=o.AnnotationFactory.generateImages(c.values(),g,r.evaluatorOptions.isOffscreenCanvasSupported);for(const[t,n]of f)u.push(r.getPage(t).then((r=>{const a=new d("Save (editor): page ".concat(t));return r.saveNewAnnotations(S,a,n,e).finally((function(){C(a)}))})))}if(t)u.push(r.serializeXfaData(c));else for(let e=0;ee.needAppearances)),m=a instanceof i.Dict&&a.get("XFA")||null;let b=null,y=!1;if(Array.isArray(m)){for(let e=0,t=m.length;e{"string"==typeof r&&(e[t]=(0,n.stringToPDFString)(r))})),w={rootRef:g.trailer.getRaw("Root")||null,encryptRef:g.trailer.getRaw("Encrypt")||null,newRef:g.getNewTemporaryRef(),infoRef:g.trailer.getRaw("Info")||null,info:e,fileIds:g.trailer.get("ID")||null,startXRef:c?o:null!==(v=g.lastXRefStreamPos)&&void 0!==v?v:o,filename:h}}return(0,l.incrementalUpdate)({originalData:r.bytes,xrefInfo:w,newRefs:d,xref:g,hasXfa:!!m,xfaDatasetsRef:b,hasXfaDatasetsEntry:y,needAppearances:p,acroFormRef:s,acroForm:a,xfaData:f}).finally((()=>{g.resetNewTemporaryRef()}))}))})),S.on("GetOperatorList",(function(e,t){const a=e.pageIndex;r.getPage(a).then((function(r){const i=new d("GetOperatorList: page ".concat(a));k(i);const s=m>=n.VerbosityLevel.INFOS?Date.now():0;r.getOperatorList({handler:S,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){C(i),s&&(0,n.info)("page=".concat(a+1," - getOperatorList: time=").concat(Date.now()-s,"ms, len=").concat(e.length)),t.close()}),(function(e){C(i),i.terminated||t.error(e)}))}))})),S.on("GetTextContent",(function(e,t){const{pageIndex:a,includeMarkedContent:i,disableNormalization:s}=e;r.getPage(a).then((function(e){const r=new d("GetTextContent: page "+a);k(r);const o=m>=n.VerbosityLevel.INFOS?Date.now():0;e.extractTextContent({handler:S,task:r,sink:t,includeMarkedContent:i,disableNormalization:s}).then((function(){C(r),o&&(0,n.info)("page=".concat(a+1," - getTextContent: time=")+(Date.now()-o)+"ms"),t.close()}),(function(e){C(r),r.terminated||t.error(e)}))}))})),S.on("GetStructTree",(function(e){return r.getPage(e.pageIndex).then((function(e){return r.ensure(e,"getStructTree")}))})),S.on("FontFallback",(function(e){return r.fontFallback(e.id,S)})),S.on("Cleanup",(function(e){return r.cleanup(!0)})),S.on("Terminate",(function(e){f=!0;const t=[];if(r){r.terminate(new n.AbortException("Worker was terminated."));const e=r.cleanup();t.push(e),r=null}else(0,c.clearGlobalCaches)();g&&g(new n.AbortException("Worker was terminated."));for(const e of p)t.push(e.finished),e.terminate();return Promise.all(t).then((function(){S.destroy(),S=null}))})),S.on("Ready",(function(t){!function(e){function t(e){A(),S.send("GetDoc",{pdfInfo:e})}function i(e){if(A(),e instanceof n.PasswordException){const t=new d("PasswordException: response ".concat(e.code));k(t),S.sendWithPromise("PasswordRequest",e).then((function(e){let{password:n}=e;C(t),r.updatePassword(n),o()})).catch((function(){C(t),S.send("DocException",e)}))}else e instanceof n.InvalidPDFException||e instanceof n.MissingPDFException||e instanceof n.UnexpectedResponseException||e instanceof n.UnknownErrorException?S.send("DocException",e):S.send("DocException",new n.UnknownErrorException(e.message,e.toString()))}function o(){A(),O(!1).then(t,(function(e){A(),e instanceof a.XRefParseException?r.requestLoadedStream().then((function(){A(),O(!0).then(t,i)})):i(e)}))}A(),function(e){let{data:t,password:r,disableAutoFetch:i,rangeChunkSize:o,length:c,docBaseUrl:l,enableXfa:h,evaluatorOptions:d}=e;const f={source:null,disableAutoFetch:i,docBaseUrl:l,docId:b,enableXfa:h,evaluatorOptions:d,handler:S,length:c,password:r,rangeChunkSize:o},p=new n.PromiseCapability;let m;if(t){try{f.source=t,m=new s.LocalPdfManager(f),p.resolve(m)}catch(e){p.reject(e)}return p.promise}let y,w=[];try{y=new u.PDFWorkerStream(S)}catch(e){return p.reject(e),p.promise}const v=y.getFullReader();v.headersReady.then((function(){if(v.isRangeSupported){f.source=y,f.length=v.contentLength,f.disableAutoFetch||(f.disableAutoFetch=v.isStreamingSupported),m=new s.NetworkPdfManager(f);for(const e of w)m.sendProgressiveData(e);w=[],p.resolve(m),g=null}})).catch((function(e){p.reject(e),g=null}));let x=0;return new Promise((function(e,t){v.read().then((function e(r){let{value:i,done:o}=r;try{if(A(),o)return m||function(){const e=(0,a.arrayBuffersToBytes)(w);c&&e.length!==c&&(0,n.warn)("reported HTTP length is different from actual");try{f.source=e,m=new s.LocalPdfManager(f),p.resolve(m)}catch(e){p.reject(e)}w=[]}(),void(g=null);x+=i.byteLength,v.isStreamingSupported||S.send("DocProgress",{loaded:x,total:Math.max(x,v.contentLength||0)}),m?m.sendProgressiveData(i):w.push(i),v.read().then(e,t)}catch(r){t(r)}}),t)})).catch((function(e){p.reject(e),g=null})),g=function(e){y.cancelAllRequests(e)},p.promise}(e).then((function(e){if(f)throw e.terminate(new n.AbortException("Worker was terminated.")),new Error("Worker was terminated");r=e,r.requestLoadedStream(!0).then((e=>{S.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(o,i)}(e),e=null})),x}static initializeFromPort(e){const t=new h.MessageHandler("worker","main",e);f.setup(t,e),t.send("ready",null)}}t.WorkerMessageHandler=f,"undefined"==typeof window&&!n.isNodeJS&&"undefined"!=typeof self&&function(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&f.initializeFromPort(self)},(e,t,r)=>{var n=r(3),a=r(4),i=r(69),s=r(70),o="WebAssembly",c=a[o],l=7!==Error("e",{cause:7}).cause,h=function(e,t){var r={};r[e]=s(e,t,l),n({global:!0,constructor:!0,arity:1,forced:l},r)},u=function(e,t){if(c&&c[e]){var r={};r[e]=s(o+"."+e,t,l),n({target:o,stat:!0,constructor:!0,arity:1,forced:l},r)}};h("Error",(function(e){return function(t){return i(e,this,arguments)}})),h("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),h("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),h("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),h("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),h("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),h("URIError",(function(e){return function(t){return i(e,this,arguments)}})),u("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),u("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),u("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},(e,t,r)=>{var n=r(4),a=r(5).f,i=r(44),s=r(48),o=r(38),c=r(56),l=r(68);e.exports=function(e,t){var r,h,u,d,f,g=e.target,p=e.global,m=e.stat;if(r=p?n:m?n[g]||o(g,{}):(n[g]||{}).prototype)for(h in t){if(d=t[h],u=e.dontCallGetSet?(f=a(r,h))&&f.value:r[h],!l(p?h:g+(m?".":"#")+h,e.forced)&&void 0!==u){if(typeof d==typeof u)continue;c(d,u)}(e.sham||u&&u.sham)&&i(d,"sham",!0),s(r,h,d,e)}}},function(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 r.g&&r.g)||function(){return this}()||this||Function("return this")()},(e,t,r)=>{var n=r(6),a=r(8),i=r(10),s=r(11),o=r(12),c=r(18),l=r(39),h=r(42),u=Object.getOwnPropertyDescriptor;t.f=n?u:function(e,t){if(e=o(e),t=c(t),h)try{return u(e,t)}catch(e){}if(l(e,t))return s(!a(i.f,e,t),e[t])}},(e,t,r)=>{var n=r(7);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(9),a=Function.prototype.call;e.exports=n?a.bind(a):function(){return a.apply(a,arguments)}},(e,t,r)=>{var n=r(7);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(13),a=r(16);e.exports=function(e){return n(a(e))}},(e,t,r)=>{var n=r(14),a=r(7),i=r(15),s=Object,o=n("".split);e.exports=a((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?o(e,""):s(e)}:s},(e,t,r)=>{var n=r(9),a=Function.prototype,i=a.call,s=n&&a.bind.bind(i,i);e.exports=n?s:function(e){return function(){return i.apply(e,arguments)}}},(e,t,r)=>{var n=r(14),a=n({}.toString),i=n("".slice);e.exports=function(e){return i(a(e),8,-1)}},(e,t,r)=>{var n=r(17),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(19),a=r(23);e.exports=function(e){var t=n(e,"string");return a(t)?t:t+""}},(e,t,r)=>{var n=r(8),a=r(20),i=r(23),s=r(30),o=r(33),c=r(34),l=TypeError,h=c("toPrimitive");e.exports=function(e,t){if(!a(e)||i(e))return e;var r,c=s(e,h);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!a(r)||i(r))return r;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),o(e,t)}},(e,t,r)=>{var n=r(21),a=r(22),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(22),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(24),a=r(21),i=r(25),s=r(26),o=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return a(t)&&i(t.prototype,o(e))}},(e,t,r)=>{var n=r(4),a=r(21);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(14);e.exports=n({}.isPrototypeOf)},(e,t,r)=>{var n=r(27);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},(e,t,r)=>{var n=r(28),a=r(7),i=r(4).String;e.exports=!!Object.getOwnPropertySymbols&&!a((function(){var e=Symbol();return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},(e,t,r)=>{var n,a,i=r(4),s=r(29),o=i.process,c=i.Deno,l=o&&o.versions||c&&c.version,h=l&&l.v8;h&&(a=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!a&&s&&(!(n=s.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=s.match(/Chrome\\/(\\d+)/))&&(a=+n[1]),e.exports=a},e=>{e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},(e,t,r)=>{var n=r(31),a=r(17);e.exports=function(e,t){var r=e[t];return a(r)?void 0:n(r)}},(e,t,r)=>{var n=r(21),a=r(32),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(8),a=r(21),i=r(20),s=TypeError;e.exports=function(e,t){var r,o;if("string"===t&&a(r=e.toString)&&!i(o=n(r,e)))return o;if(a(r=e.valueOf)&&!i(o=n(r,e)))return o;if("string"!==t&&a(r=e.toString)&&!i(o=n(r,e)))return o;throw s("Can't convert object to primitive value")}},(e,t,r)=>{var n=r(4),a=r(35),i=r(39),s=r(41),o=r(27),c=r(26),l=n.Symbol,h=a("wks"),u=c?l.for||l:l&&l.withoutSetter||s;e.exports=function(e){return i(h,e)||(h[e]=o&&i(l,e)?l[e]:u("Symbol."+e)),h[e]}},(e,t,r)=>{var n=r(36),a=r(37);(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.31.1",mode:n?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},e=>{e.exports=!1},(e,t,r)=>{var n=r(4),a=r(38),i="__core-js_shared__",s=n[i]||a(i,{});e.exports=s},(e,t,r)=>{var n=r(4),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(14),a=r(40),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(a(e),t)}},(e,t,r)=>{var n=r(16),a=Object;e.exports=function(e){return a(n(e))}},(e,t,r)=>{var n=r(14),a=0,i=Math.random(),s=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++a+i,36)}},(e,t,r)=>{var n=r(6),a=r(7),i=r(43);e.exports=!n&&!a((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},(e,t,r)=>{var n=r(4),a=r(20),i=n.document,s=a(i)&&a(i.createElement);e.exports=function(e){return s?i.createElement(e):{}}},(e,t,r)=>{var n=r(6),a=r(45),i=r(11);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(6),a=r(42),i=r(46),s=r(47),o=r(18),c=TypeError,l=Object.defineProperty,h=Object.getOwnPropertyDescriptor,u="enumerable",d="configurable",f="writable";t.f=n?i?function(e,t,r){if(s(e),t=o(t),s(r),"function"==typeof e&&"prototype"===t&&"value"in r&&f in r&&!r[f]){var n=h(e,t);n&&n[f]&&(e[t]=r.value,r={configurable:d in r?r[d]:n[d],enumerable:u in r?r[u]:n[u],writable:!1})}return l(e,t,r)}:l:function(e,t,r){if(s(e),t=o(t),s(r),a)try{return l(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(6),a=r(7);e.exports=n&&a((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},(e,t,r)=>{var n=r(20),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(21),a=r(45),i=r(49),s=r(38);e.exports=function(e,t,r,o){o||(o={});var c=o.enumerable,l=void 0!==o.name?o.name:t;if(n(r)&&i(r,l,o),o.global)c?e[t]=r:s(t,r);else{try{o.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:a.f(e,t,{value:r,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}},(e,t,r)=>{var n=r(14),a=r(7),i=r(21),s=r(39),o=r(6),c=r(50).CONFIGURABLE,l=r(51),h=r(52),u=h.enforce,d=h.get,f=String,g=Object.defineProperty,p=n("".slice),m=n("".replace),b=n([].join),y=o&&!a((function(){return 8!==g((function(){}),"length",{value:8}).length})),w=String(String).split("String"),v=e.exports=function(e,t,r){"Symbol("===p(f(t),0,7)&&(t="["+m(f(t),/^Symbol\\(([^)]*)\\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!s(e,"name")||c&&e.name!==t)&&(o?g(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&s(r,"arity")&&e.length!==r.arity&&g(e,"length",{value:r.arity});try{r&&s(r,"constructor")&&r.constructor?o&&g(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=u(e);return s(n,"source")||(n.source=b(w,"string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return i(this)&&d(this).source||l(this)}),"toString")},(e,t,r)=>{var n=r(6),a=r(39),i=Function.prototype,s=n&&Object.getOwnPropertyDescriptor,o=a(i,"name"),c=o&&"something"===function(){}.name,l=o&&(!n||n&&s(i,"name").configurable);e.exports={EXISTS:o,PROPER:c,CONFIGURABLE:l}},(e,t,r)=>{var n=r(14),a=r(21),i=r(37),s=n(Function.toString);a(i.inspectSource)||(i.inspectSource=function(e){return s(e)}),e.exports=i.inspectSource},(e,t,r)=>{var n,a,i,s=r(53),o=r(4),c=r(20),l=r(44),h=r(39),u=r(37),d=r(54),f=r(55),g="Object already initialized",p=o.TypeError,m=o.WeakMap;if(s||u.state){var b=u.state||(u.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,n=function(e,t){if(b.has(e))throw p(g);return t.facade=e,b.set(e,t),t},a=function(e){return b.get(e)||{}},i=function(e){return b.has(e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(h(e,y))throw p(g);return t.facade=e,l(e,y,t),t},a=function(e){return h(e,y)?e[y]:{}},i=function(e){return h(e,y)}}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 p("Incompatible receiver, "+e+" required");return r}}}},(e,t,r)=>{var n=r(4),a=r(21),i=n.WeakMap;e.exports=a(i)&&/native code/.test(String(i))},(e,t,r)=>{var n=r(35),a=r(41),i=n("keys");e.exports=function(e){return i[e]||(i[e]=a(e))}},e=>{e.exports={}},(e,t,r)=>{var n=r(39),a=r(57),i=r(5),s=r(45);e.exports=function(e,t,r){for(var o=a(t),c=s.f,l=i.f,h=0;h{var n=r(24),a=r(14),i=r(58),s=r(67),o=r(47),c=a([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(o(e)),r=s.f;return r?c(t,r(e)):t}},(e,t,r)=>{var n=r(59),a=r(66).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,a)}},(e,t,r)=>{var n=r(14),a=r(39),i=r(12),s=r(60).indexOf,o=r(55),c=n([].push);e.exports=function(e,t){var r,n=i(e),l=0,h=[];for(r in n)!a(o,r)&&a(n,r)&&c(h,r);for(;t.length>l;)a(n,r=t[l++])&&(~s(h,r)||c(h,r));return h}},(e,t,r)=>{var n=r(12),a=r(61),i=r(64),s=function(e){return function(t,r,s){var o,c=n(t),l=i(c),h=a(s,l);if(e&&r!=r){for(;l>h;)if((o=c[h++])!=o)return!0}else for(;l>h;h++)if((e||h in c)&&c[h]===r)return e||h||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},(e,t,r)=>{var n=r(62),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(63);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(65);e.exports=function(e){return n(e.length)}},(e,t,r)=>{var n=r(62),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(7),a=r(21),i=/#|\\.prototype\\./,s=function(e,t){var r=c[o(e)];return r==h||r!=l&&(a(t)?n(t):!!t)},o=s.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=s.data={},l=s.NATIVE="N",h=s.POLYFILL="P";e.exports=s},(e,t,r)=>{var n=r(9),a=Function.prototype,i=a.apply,s=a.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?s.bind(i):function(){return s.apply(i,arguments)})},(e,t,r)=>{var n=r(24),a=r(39),i=r(44),s=r(25),o=r(71),c=r(56),l=r(74),h=r(75),u=r(76),d=r(80),f=r(81),g=r(6),p=r(36);e.exports=function(e,t,r,m){var b="stackTraceLimit",y=m?2:1,w=e.split("."),v=w[w.length-1],x=n.apply(null,w);if(x){var S=x.prototype;if(!p&&a(S,"cause")&&delete S.cause,!r)return x;var A=n("Error"),k=t((function(e,t){var r=u(m?t:e,void 0),n=m?new x(e):new x;return void 0!==r&&i(n,"message",r),f(n,k,n.stack,2),this&&s(S,this)&&h(n,this,k),arguments.length>y&&d(n,arguments[y]),n}));if(k.prototype=S,"Error"!==v?o?o(k,A):c(k,A,{name:!0}):g&&b in x&&(l(k,x,b),l(k,x,"prepareStackTrace")),c(k,x),!p)try{S.name!==v&&i(S,"name",v),S.constructor=k}catch(e){}return k}}},(e,t,r)=>{var n=r(72),a=r(47),i=r(73);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(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(14),a=r(31);e.exports=function(e,t,r){try{return n(a(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},(e,t,r)=>{var n=r(21),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)=>{var n=r(45).f;e.exports=function(e,t,r){r in e||n(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})}},(e,t,r)=>{var n=r(21),a=r(20),i=r(71);e.exports=function(e,t,r){var s,o;return i&&n(s=t.constructor)&&s!==r&&a(o=s.prototype)&&o!==r.prototype&&i(e,o),e}},(e,t,r)=>{var n=r(77);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},(e,t,r)=>{var n=r(78),a=String;e.exports=function(e){if("Symbol"===n(e))throw TypeError("Cannot convert a Symbol value to a string");return a(e)}},(e,t,r)=>{var n=r(79),a=r(21),i=r(15),s=r(34)("toStringTag"),o=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=o(e),s))?r:c?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},(e,t,r)=>{var n={};n[r(34)("toStringTag")]="z",e.exports="[object z]"===String(n)},(e,t,r)=>{var n=r(20),a=r(44);e.exports=function(e,t){n(t)&&"cause"in t&&a(e,"cause",t.cause)}},(e,t,r)=>{var n=r(44),a=r(82),i=r(83),s=Error.captureStackTrace;e.exports=function(e,t,r,o){i&&(s?s(e,t):n(e,"stack",a(r,o)))}},(e,t,r)=>{var n=r(14),a=Error,i=n("".replace),s=String(a("zxcasd").stack),o=/\\n\\s*at [^:]*:[^\\n]*/,c=o.test(s);e.exports=function(e,t){if(c&&"string"==typeof e&&!a.prepareStackTrace)for(;t--;)e=i(e,o,"");return e}},(e,t,r)=>{var n=r(7),a=r(11);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(85),a=r(90).findLast,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLast",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},(e,t,r)=>{var n,a,i,s=r(86),o=r(6),c=r(4),l=r(21),h=r(20),u=r(39),d=r(78),f=r(32),g=r(44),p=r(48),m=r(87),b=r(25),y=r(88),w=r(71),v=r(34),x=r(41),S=r(52),A=S.enforce,k=S.get,C=c.Int8Array,O=C&&C.prototype,F=c.Uint8ClampedArray,I=F&&F.prototype,T=C&&y(C),M=O&&y(O),E=Object.prototype,P=c.TypeError,R=v("toStringTag"),N=x("TYPED_ARRAY_TAG"),D="TypedArrayConstructor",B=s&&!!w&&"Opera"!==d(c.opera),L=!1,_={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},j={BigInt64Array:8,BigUint64Array:8},U=function(e){if(!h(e))return!1;var t=d(e);return u(_,t)||u(j,t)};for(n in _)(i=(a=c[n])&&a.prototype)?A(i)[D]=a:B=!1;for(n in j)(i=(a=c[n])&&a.prototype)&&(A(i)[D]=a);if((!B||!l(T)||T===Function.prototype)&&(T=function(){throw P("Incorrect invocation")},B))for(n in _)c[n]&&w(c[n],T);if((!B||!M||M===E)&&(M=T.prototype,B))for(n in _)c[n]&&w(c[n].prototype,M);if(B&&y(I)!==M&&w(I,M),o&&!u(M,R))for(n in L=!0,m(M,R,{configurable:!0,get:function(){return h(this)?this[N]:void 0}}),_)c[n]&&g(c[n],N,n);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:B,TYPED_ARRAY_TAG:L&&N,aTypedArray:function(e){if(U(e))return e;throw P("Target is not a typed array")},aTypedArrayConstructor:function(e){if(l(e)&&(!w||b(T,e)))return e;throw P(f(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,r,n){if(o){if(r)for(var a in _){var i=c[a];if(i&&u(i.prototype,e))try{delete i.prototype[e]}catch(r){try{i.prototype[e]=t}catch(e){}}}M[e]&&!r||p(M,e,r?t:B&&O[e]||t,n)}},exportTypedArrayStaticMethod:function(e,t,r){var n,a;if(o){if(w){if(r)for(n in _)if((a=c[n])&&u(a,e))try{delete a[e]}catch(e){}if(T[e]&&!r)return;try{return p(T,e,r?t:B&&T[e]||t)}catch(e){}}for(n in _)!(a=c[n])||a[e]&&!r||p(a,e,t)}},getTypedArrayConstructor:function e(t){var r=y(t);if(h(r)){var n=k(r);return n&&u(n,D)?n[D]:e(r)}},isView:function(e){if(!h(e))return!1;var t=d(e);return"DataView"===t||u(_,t)||u(j,t)},isTypedArray:U,TypedArray:T,TypedArrayPrototype:M}},e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},(e,t,r)=>{var n=r(49),a=r(45);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),a.f(e,t,r)}},(e,t,r)=>{var n=r(39),a=r(21),i=r(40),s=r(54),o=r(89),c=s("IE_PROTO"),l=Object,h=l.prototype;e.exports=o?l.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 l?h:null}},(e,t,r)=>{var n=r(7);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},(e,t,r)=>{var n=r(91),a=r(13),i=r(40),s=r(64),o=function(e){var t=1==e;return function(r,o,c){for(var l,h=i(r),u=a(h),d=n(o,c),f=s(u);f-- >0;)if(d(l=u[f],f,h))switch(e){case 0:return l;case 1:return f}return t?-1:void 0}};e.exports={findLast:o(0),findLastIndex:o(1)}},(e,t,r)=>{var n=r(92),a=r(31),i=r(9),s=n(n.bind);e.exports=function(e,t){return a(e),void 0===t?e:i?s(e,t):function(){return e.apply(t,arguments)}}},(e,t,r)=>{var n=r(15),a=r(14);e.exports=function(e){if("Function"===n(e))return a(e)}},(e,t,r)=>{var n=r(85),a=r(90).findLastIndex,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLastIndex",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},(e,t,r)=>{var n=r(4),a=r(8),i=r(85),s=r(64),o=r(95),c=r(40),l=r(7),h=n.RangeError,u=n.Int8Array,d=u&&u.prototype,f=d&&d.set,g=i.aTypedArray,p=i.exportTypedArrayMethod,m=!l((function(){var e=new Uint8ClampedArray(2);return a(f,e,{length:1,0:3},1),3!==e[1]})),b=m&&i.NATIVE_ARRAY_BUFFER_VIEWS&&l((function(){var e=new u(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));p("set",(function(e){g(this);var t=o(arguments.length>1?arguments[1]:void 0,1),r=c(e);if(m)return a(f,this,r,t);var n=this.length,i=s(r),l=0;if(i+t>n)throw h("Wrong length");for(;l{var n=r(96),a=RangeError;e.exports=function(e,t){var r=n(e);if(r%t)throw a("Wrong offset");return r}},(e,t,r)=>{var n=r(62),a=RangeError;e.exports=function(e){var t=n(e);if(t<0)throw a("The argument can't be less than 0");return t}},(e,t,r)=>{var n=r(98),a=r(85),i=a.aTypedArray,s=a.exportTypedArrayMethod,o=a.getTypedArrayConstructor;s("toReversed",(function(){return n(i(this),o(this))}))},(e,t,r)=>{var n=r(64);e.exports=function(e,t){for(var r=n(e),a=new t(r),i=0;i{var n=r(85),a=r(14),i=r(31),s=r(100),o=n.aTypedArray,c=n.getTypedArrayConstructor,l=n.exportTypedArrayMethod,h=a(n.TypedArrayPrototype.sort);l("toSorted",(function(e){void 0!==e&&i(e);var t=o(this),r=s(c(t),t);return h(r,e)}))},(e,t,r)=>{var n=r(64);e.exports=function(e,t){for(var r=0,a=n(t),i=new e(a);a>r;)i[r]=t[r++];return i}},(e,t,r)=>{var n=r(102),a=r(85),i=r(103),s=r(62),o=r(104),c=a.aTypedArray,l=a.getTypedArrayConstructor,h=a.exportTypedArrayMethod,u=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(e){return 8===e}}();h("with",{with:function(e,t){var r=c(this),a=s(e),h=i(r)?o(t):+t;return n(r,l(r),a,h)}}.with,!u)},(e,t,r)=>{var n=r(64),a=r(62),i=RangeError;e.exports=function(e,t,r,s){var o=n(e),c=a(r),l=c<0?o+c:c;if(l>=o||l<0)throw i("Incorrect index");for(var h=new t(o),u=0;u{var n=r(78);e.exports=function(e){var t=n(e);return"BigInt64Array"==t||"BigUint64Array"==t}},(e,t,r)=>{var n=r(19),a=TypeError;e.exports=function(e){var t=n(e,"number");if("number"==typeof t)throw a("Can't convert number to bigint");return BigInt(t)}},(e,t,r)=>{var n=r(6),a=r(87),i=r(106),s=ArrayBuffer.prototype;n&&!("detached"in s)&&a(s,"detached",{configurable:!0,get:function(){return i(this)}})},(e,t,r)=>{var n=r(14),a=r(107),i=n(ArrayBuffer.prototype.slice);e.exports=function(e){if(0!==a(e))return!1;try{return i(e,0,0),!1}catch(e){return!0}}},(e,t,r)=>{var n=r(72),a=r(15),i=TypeError;e.exports=n(ArrayBuffer.prototype,"byteLength","get")||function(e){if("ArrayBuffer"!=a(e))throw i("ArrayBuffer expected");return e.byteLength}},(e,t,r)=>{var n=r(3),a=r(109);a&&n({target:"ArrayBuffer",proto:!0},{transfer:function(){return a(this,arguments.length?arguments[0]:void 0,!0)}})},(e,t,r)=>{var n=r(4),a=r(14),i=r(72),s=r(110),o=r(106),c=r(107),l=r(111),h=n.TypeError,u=n.structuredClone,d=n.ArrayBuffer,f=n.DataView,g=Math.min,p=d.prototype,m=f.prototype,b=a(p.slice),y=i(p,"resizable","get"),w=i(p,"maxByteLength","get"),v=a(m.getInt8),x=a(m.setInt8);e.exports=l&&function(e,t,r){var n=c(e),a=void 0===t?n:s(t),i=!y||!y(e);if(o(e))throw h("ArrayBuffer is detached");var l=u(e,{transfer:[e]});if(n==a&&(r||i))return l;if(n>=a&&(!r||i))return b(l,0,a);for(var p=r&&!i&&w?{maxByteLength:w(l)}:void 0,m=new d(a,p),S=new f(l),A=new f(m),k=g(a,n),C=0;C{var n=r(62),a=r(65),i=RangeError;e.exports=function(e){if(void 0===e)return 0;var t=n(e),r=a(t);if(t!==r)throw i("Wrong length or index");return r}},(e,t,r)=>{var n=r(4),a=r(7),i=r(28),s=r(112),o=r(113),c=r(114),l=n.structuredClone;e.exports=!!l&&!a((function(){if(o&&i>92||c&&i>94||s&&i>97)return!1;var e=new ArrayBuffer(8),t=l(e,{transfer:[e]});return 0!=e.byteLength||8!=t.byteLength}))},(e,t,r)=>{var n=r(113),a=r(114);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(15);e.exports="undefined"!=typeof process&&"process"==n(process)},(e,t,r)=>{var n=r(3),a=r(109);a&&n({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return a(this,arguments.length?arguments[0]:void 0,!1)}})},(e,t,r)=>{var n=r(3),a=r(117);n({target:"Set",proto:!0,real:!0,forced:!r(125)("difference")},{difference:a})},(e,t,r)=>{var n=r(118),a=r(119),i=r(120),s=r(123),o=r(124),c=r(121),l=r(122),h=a.has,u=a.remove;e.exports=function(e){var t=n(this),r=o(e),a=i(t);return s(t)<=r.size?c(t,(function(e){r.includes(e)&&u(a,e)})):l(r.getIterator(),(function(e){h(t,e)&&u(a,e)})),a}},(e,t,r)=>{var n=r(119).has;e.exports=function(e){return n(e),e}},(e,t,r)=>{var n=r(14),a=Set.prototype;e.exports={Set,add:n(a.add),has:n(a.has),remove:n(a.delete),proto:a}},(e,t,r)=>{var n=r(119),a=r(121),i=n.Set,s=n.add;e.exports=function(e){var t=new i;return a(e,(function(e){s(t,e)})),t}},(e,t,r)=>{var n=r(14),a=r(122),i=r(119),s=i.Set,o=i.proto,c=n(o.forEach),l=n(o.keys),h=l(new s).next;e.exports=function(e,t,r){return r?a(l(e),t,h):c(e,t)}},(e,t,r)=>{var n=r(8);e.exports=function(e,t,r){for(var a,i,s=r||e.next;!(a=n(s,e)).done;)if(void 0!==(i=t(a.value)))return i}},(e,t,r)=>{var n=r(72),a=r(119);e.exports=n(a.proto,"size","get")||function(e){return e.size}},(e,t,r)=>{var n=r(31),a=r(47),i=r(8),s=r(62),o=TypeError,c=Math.max,l=function(e,t,r,n){this.set=e,this.size=t,this.has=r,this.keys=n};l.prototype={getIterator:function(){return a(i(this.keys,this.set))},includes:function(e){return i(this.has,this.set,e)}},e.exports=function(e){a(e);var t=+e.size;if(t!=t)throw o("Invalid size");return new l(e,c(s(t),0),n(e.has),n(e.keys))}},(e,t,r)=>{var n=r(24);e.exports=function(e){try{return(new(n("Set")))[e]({size:0,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}),!0}catch(e){return!1}}},(e,t,r)=>{var n=r(3),a=r(7),i=r(127);n({target:"Set",proto:!0,real:!0,forced:!r(125)("intersection")||a((function(){return"3,2"!=Array.from(new Set([1,2,3]).intersection(new Set([3,2])))}))},{intersection:i})},(e,t,r)=>{var n=r(118),a=r(119),i=r(123),s=r(124),o=r(121),c=r(122),l=a.Set,h=a.add,u=a.has;e.exports=function(e){var t=n(this),r=s(e),a=new l;return i(t)>r.size?c(r.getIterator(),(function(e){u(t,e)&&h(a,e)})):o(t,(function(e){r.includes(e)&&h(a,e)})),a}},(e,t,r)=>{var n=r(3),a=r(129);n({target:"Set",proto:!0,real:!0,forced:!r(125)("isDisjointFrom")},{isDisjointFrom:a})},(e,t,r)=>{var n=r(118),a=r(119).has,i=r(123),s=r(124),o=r(121),c=r(122),l=r(130);e.exports=function(e){var t=n(this),r=s(e);if(i(t)<=r.size)return!1!==o(t,(function(e){if(r.includes(e))return!1}),!0);var h=r.getIterator();return!1!==c(h,(function(e){if(a(t,e))return l(h,"normal",!1)}))}},(e,t,r)=>{var n=r(8),a=r(47),i=r(30);e.exports=function(e,t,r){var s,o;a(e);try{if(!(s=i(e,"return"))){if("throw"===t)throw r;return r}s=n(s,e)}catch(e){o=!0,s=e}if("throw"===t)throw r;if(o)throw s;return a(s),r}},(e,t,r)=>{var n=r(3),a=r(132);n({target:"Set",proto:!0,real:!0,forced:!r(125)("isSubsetOf")},{isSubsetOf:a})},(e,t,r)=>{var n=r(118),a=r(123),i=r(121),s=r(124);e.exports=function(e){var t=n(this),r=s(e);return!(a(t)>r.size)&&!1!==i(t,(function(e){if(!r.includes(e))return!1}),!0)}},(e,t,r)=>{var n=r(3),a=r(134);n({target:"Set",proto:!0,real:!0,forced:!r(125)("isSupersetOf")},{isSupersetOf:a})},(e,t,r)=>{var n=r(118),a=r(119).has,i=r(123),s=r(124),o=r(122),c=r(130);e.exports=function(e){var t=n(this),r=s(e);if(i(t){var n=r(3),a=r(136);n({target:"Set",proto:!0,real:!0,forced:!r(125)("symmetricDifference")},{symmetricDifference:a})},(e,t,r)=>{var n=r(118),a=r(119),i=r(120),s=r(124),o=r(122),c=a.add,l=a.has,h=a.remove;e.exports=function(e){var t=n(this),r=s(e).getIterator(),a=i(t);return o(r,(function(e){l(t,e)?h(a,e):c(a,e)})),a}},(e,t,r)=>{var n=r(3),a=r(138);n({target:"Set",proto:!0,real:!0,forced:!r(125)("union")},{union:a})},(e,t,r)=>{var n=r(118),a=r(119).add,i=r(120),s=r(124),o=r(122);e.exports=function(e){var t=n(this),r=s(e).getIterator(),c=i(t);return o(r,(function(e){a(c,e)})),c}},(e,t,r)=>{var n=r(3),a=r(40),i=r(64),s=r(140),o=r(142);n({target:"Array",proto:!0,arity:1,forced:r(7)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var t=a(this),r=i(t),n=arguments.length;o(r+n);for(var c=0;c{var n=r(6),a=r(141),i=TypeError,s=Object.getOwnPropertyDescriptor,o=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=o?function(e,t){if(a(e)&&!s(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},(e,t,r)=>{var n=r(15);e.exports=Array.isArray||function(e){return"Array"==n(e)}},e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},(e,t,r)=>{var n=r(3),a=r(4),i=r(87),s=r(6),o=TypeError,c=Object.defineProperty,l=a.self!==a;try{if(s){var h=Object.getOwnPropertyDescriptor(a,"self");!l&&h&&h.get&&h.enumerable||i(a,"self",{get:function(){return a},set:function(e){if(this!==a)throw o("Illegal invocation");c(a,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else n({global:!0,simple:!0,forced:l},{self:a})}catch(e){}},(e,t,r)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.VerbosityLevel=t.Util=t.UnknownErrorException=t.UnexpectedResponseException=t.TextRenderingMode=t.RenderingIntentFlag=t.PromiseCapability=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.MAX_IMAGE_SIZE_TO_CACHE=t.LINE_FACTOR=t.LINE_DESCENT_FACTOR=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FeatureTest=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.BASELINE_FACTOR=t.AnnotationType=t.AnnotationReplyType=t.AnnotationMode=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationEditorType=t.AnnotationEditorPrefix=t.AnnotationEditorParamsType=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0,t.assert=function(e,t){e||l(t)},t.bytesToString=g,t.createValidAbsoluteUrl=function(e){let t=arguments.length>1&&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.")){const t=e.match(/\\./g);(null==t?void 0:t.length)>=2&&(e="http://".concat(e))}if(r.tryConvertEncoding)try{e=y(e)}catch(e){}}const n=t?new URL(e,t):new URL(e);if(function(e){switch(null==e?void 0:e.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(n))return n}catch(e){}return null},t.getModificationDate=function(){let 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.getUuid=function(){var e,t;if("undefined"!=typeof crypto&&"function"==typeof(null===(e=crypto)||void 0===e?void 0:e.randomUUID))return crypto.randomUUID();const r=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof(null===(t=crypto)||void 0===t?void 0:t.getRandomValues))crypto.getRandomValues(r);else for(let e=0;e<32;e++)r[e]=Math.floor(255*Math.random());return g(r)},t.getVerbosityLevel=function(){return s},t.info=function(e){s>=i.INFOS&&console.log("Info: ".concat(e))},t.isArrayBuffer=function(e){return"object"==typeof e&&void 0!==(null==e?void 0:e.byteLength)},t.isArrayEqual=function(e,t){if(e.length!==t.length)return!1;for(let r=0,n=e.length;rt?t.normalize("NFKC"):v.get(r)))},t.objectFromMap=function(e){const t=Object.create(null);for(const[r,n]of e)t[r]=n;return t},t.objectSize=function(e){return Object.keys(e).length},t.setVerbosityLevel=function(e){Number.isInteger(e)&&(s=e)},t.shadow=d,t.string32=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},t.stringToBytes=p,t.stringToPDFString=function(e){if(e[0]>="ï"){let t;if("þ"===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{const r=new TextDecoder(t,{fatal:!0}),n=p(e);return r.decode(n)}catch(e){o('stringToPDFString: "'.concat(e,'".'))}}const t=[];for(let r=0,n=e.length;r=i.WARNINGS&&console.log("Warning: ".concat(e))}function l(e){throw new Error(e)}function d(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return Object.defineProperty(e,t,{value:r,enumerable:!n,configurable:!0,writable:!1}),r}const f=function(){function e(t,r){this.constructor===e&&l("Cannot initialize BaseException."),this.message=t,this.name=r}return e.prototype=new Error,e.constructor=e,e}();function g(e){"object"==typeof e&&void 0!==(null==e?void 0:e.length)||l("Invalid argument for bytesToString");const t=e.length,r=8192;if(te.toString(16).padStart(2,"0")));t.Util=class{static makeHexColor(e,t,r){return"#".concat(m[e]).concat(m[t]).concat(m[r])}static scaleMinMax(e,t){let r;e[0]?(e[0]<0&&(r=t[0],t[0]=t[1],t[1]=r),t[0]*=e[0],t[1]*=e[0],e[3]<0&&(r=t[2],t[2]=t[3],t[3]=r),t[2]*=e[3],t[3]*=e[3]):(r=t[0],t[0]=t[2],t[2]=r,r=t[1],t[1]=t[3],t[3]=r,e[1]<0&&(r=t[2],t[2]=t[3],t[3]=r),t[2]*=e[1],t[3]*=e[1],e[2]<0&&(r=t[0],t[0]=t[1],t[1]=r),t[0]*=e[2],t[1]*=e[2]),t[0]+=e[4],t[1]+=e[4],t[2]+=e[5],t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const r=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/r,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/r]}static getAxialAlignedBoundingBox(e,t){const r=this.applyTransform(e,t),n=this.applyTransform(e.slice(2,4),t),a=this.applyTransform([e[0],e[3]],t),i=this.applyTransform([e[2],e[1]],t);return[Math.min(r[0],n[0],a[0],i[0]),Math.min(r[1],n[1],a[1],i[1]),Math.max(r[0],n[0],a[0],i[0]),Math.max(r[1],n[1],a[1],i[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],r=e[0]*t[0]+e[1]*t[2],n=e[0]*t[1]+e[1]*t[3],a=e[2]*t[0]+e[3]*t[2],i=e[2]*t[1]+e[3]*t[3],s=(r+i)/2,o=Math.sqrt((r+i)**2-4*(r*i-a*n))/2,c=s+o||1,l=s-o||1;return[Math.sqrt(c),Math.sqrt(l)]}static normalizeRect(e){const t=e.slice(0);return e[0]>e[2]&&(t[0]=e[2],t[2]=e[0]),e[1]>e[3]&&(t[1]=e[3],t[3]=e[1]),t}static intersect(e,t){const 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;const 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]}static bezierBoundingBox(e,t,r,n,a,i,s,o){const c=[],l=[[],[]];let h,u,d,f,g,p,m,b;for(let l=0;l<2;++l)if(0===l?(u=6*e-12*r+6*a,h=-3*e+9*r-9*a+3*s,d=3*r-3*e):(u=6*t-12*n+6*i,h=-3*t+9*n-9*i+3*o,d=3*n-3*t),Math.abs(h)<1e-12){if(Math.abs(u)<1e-12)continue;f=-d/u,0{this.resolve=t=>{u(this,n,!0),e(t)},this.reject=e=>{u(this,n,!0),t(e)}}))}get settled(){return h(this,n)}});let w=null,v=null},(e,t,r)=>{var n=r(48),a=r(14),i=r(77),s=r(146),o=URLSearchParams,c=o.prototype,l=a(c.append),h=a(c.delete),u=a(c.forEach),d=a([].push),f=new o("a=1&a=2");f.delete("a",1),f+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=[];u(this,(function(e,t){d(n,{key:t,value:e})})),s(t,1);for(var a,o=i(e),c=i(r),f=0,g=0,p=!1,m=n.length;f{var t=TypeError;e.exports=function(e,r){if(e{var n=r(48),a=r(14),i=r(77),s=r(146),o=URLSearchParams,c=o.prototype,l=a(c.getAll),h=a(c.has);new o("a=1").has("a",2)&&n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=l(this,e);s(t,1);for(var a=i(r),o=0;o{var n=r(6),a=r(14),i=r(87),s=URLSearchParams.prototype,o=a(s.forEach);n&&!("size"in s)&&i(s,"size",{get:function(){var e=0;return o(this,(function(){e++})),e},configurable:!0,enumerable:!0})},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XRefParseException=t.XRefEntryException=t.ParserEOFException=t.PDF_VERSION_REGEXP=t.MissingDataException=void 0,t.arrayBuffersToBytes=function(e){const t=e.length;if(0===t)return new Uint8Array(0);if(1===t)return new Uint8Array(e[0]);let r=0;for(let n=0;n=0;t--){const n=s[t];if(n instanceof a.Dict)for(const t of n.getKeys()){const s=r[t];if(!s)continue;const o=[];d(n.getRaw(t),e,o,new a.RefSet),o.length>0&&(i[s]=o)}}if(t.has("A")){const r=[];d(t.get("A"),e,r,new a.RefSet),r.length>0&&(i.Action=r)}return(0,n.objectSize)(i)>0?i:null},t.encodeToXmlString=function(e){const t=[];let r=0;for(let n=0,a=e.length;n55295&&(a<57344||a>65533)&&n++,r=n+1}return 0===t.length?e:(r126||35===a||40===a||41===a||60===a||62===a||91===a||93===a||123===a||125===a||47===a||37===a)&&(r"\\n"===e?"\\\\n":"\\r"===e?"\\\\r":"\\\\".concat(e)))},t.getInheritableProperty=h,t.getLookupTableFactory=function(e){let t;return function(){return e&&(t=Object.create(null),e(t),e=null),t}},t.getNewAnnotationsMap=function(e){if(!e)return null;const t=new Map;for(const[r,a]of e){if(!r.startsWith(n.AnnotationEditorPrefix))continue;let e=t.get(a.pageIndex);e||(e=[],t.set(a.pageIndex,e)),e.push(a)}return t.size>0?t: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();const 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){const t=/(.+)\\[(\\d+)\\]$/;return e.split(".").map((e=>{const 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){const t=new RegExp("^\\\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\\\.")+")\\\\((?:'|\\")([^'\\"]*)(?:'|\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))","i").exec(e);if(null!=t&&t[2]){const e=t[2];let r=!1;return"true"===t[3]&&"app.launchURL"===t[1]&&(r=!0),{url:e,newWindow:r}}return null},t.stringToUTF16HexString=function(e){const t=[];for(let r=0,n=e.length;r>8&255).toString(16).padStart(2,"0"),(255&n).toString(16).padStart(2,"0"))}return t.join("")},t.stringToUTF16String=function(e){const t=[];arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&t.push("þÿ");for(let r=0,n=e.length;r>8&255),String.fromCharCode(255&n))}return t.join("")},t.toRomanNumerals=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,n.assert)(Number.isInteger(e)&&e>0,"The number should be a positive integer.");const r=[];let a;for(;e>=1e3;)e-=1e3,r.push("M");a=e/100|0,e%=100,r.push(u[a]),a=e/10|0,e%=10,r.push(u[10+a]),r.push(u[20+e]);const i=r.join("");return t?i.toLowerCase():i},t.validateCSSFont=function(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:r,fontWeight:n,italicAngle:a}=e;if(!g(r,!0))return!1;const i=n?n.toString():"";e.fontWeight=t.has(i)?i:"400";const s=parseFloat(a);return e.italicAngle=isNaN(s)||s<-90||s>90?"14":a.toString(),!0},t.validateFontName=g,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(2);var n=r(144),a=r(150),i=r(151);t.PDF_VERSION_REGEXP=/^[1-9]\\.\\d$/;class s extends n.BaseException{constructor(e,t){super("Missing data [".concat(e,", ").concat(t,")"),"MissingDataException"),this.begin=e,this.end=t}}t.MissingDataException=s;class o extends n.BaseException{constructor(e){super(e,"ParserEOFException")}}t.ParserEOFException=o;class c extends n.BaseException{constructor(e){super(e,"XRefEntryException")}}t.XRefEntryException=c;class l extends n.BaseException{constructor(e){super(e,"XRefParseException")}}function h(e){let t,{dict:r,key:n,getArray:i=!1,stopWhenFound:s=!0}=e;const o=new a.RefSet;for(;r instanceof a.Dict&&(!r.objId||!o.has(r.objId));){r.objId&&o.put(r.objId);const e=i?r.getArray(n):r.get(n);if(void 0!==e){if(s)return e;(t||(t=[])).push(e)}r=r.get("Parent")}return t}t.XRefParseException=l;const u=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];function d(e,t,r,s){if(!e)return;let o=null;if(e instanceof a.Ref){if(s.has(e))return;o=e,s.put(o),e=t.fetch(e)}if(Array.isArray(e))for(const n of e)d(n,t,r,s);else if(e instanceof a.Dict){if((0,a.isName)(e.get("S"),"JavaScript")){const t=e.get("JS");let a;t instanceof i.BaseStream?a=t.getString():"string"==typeof t&&(a=t),a&&(a=(0,n.stringToPDFString)(a).replaceAll("\\0","")),a&&r.push(a)}d(e.getRaw("Next"),t,r,s)}o&&s.remove(o)}const f={60:"<",62:">",38:"&",34:""",39:"'"};function g(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=/^("|').*("|')$/.exec(e);if(r&&r[1]===r[2]){if(new RegExp("[^\\\\\\\\]".concat(r[1])).test(e.slice(1,-1)))return t&&(0,n.warn)("FontFamily contains unescaped ".concat(r[1],": ").concat(e,".")),!1}else for(const r of e.split(/[ \\t]+/))if(/^(\\d|(-(\\d|-)))/.test(r)||!/^[\\w-\\\\]+$/.test(r))return t&&(0,n.warn)("FontFamily contains invalid : ".concat(e,".")),!1;return!0}},(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(){s=Object.create(null),o=Object.create(null),c=Object.create(null)},t.isCmd=function(e,t){return e instanceof h&&(void 0===t||e.cmd===t)},t.isDict=function(e,t){return e instanceof d&&(void 0===t||m(e.get("Type"),t))},t.isName=m,t.isRefsEqual=function(e,t){return e.num===t.num&&e.gen===t.gen},r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(144);const a=Symbol("CIRCULAR_REF");t.CIRCULAR_REF=a;const i=Symbol("EOF");t.EOF=i;let s=Object.create(null),o=Object.create(null),c=Object.create(null);class l{constructor(e){this.name=e}static get(e){var t;return(t=o)[e]||(t[e]=new l(e))}}t.Name=l;class h{constructor(e){this.cmd=e}static get(e){var t;return(t=s)[e]||(t[e]=new h(e))}}t.Cmd=h;const u=function(){return u};class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._map=Object.create(null),this.xref=e,this.objId=null,this.suppressEncryption=!1,this.__nonSerializable__=u}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,r){let n=this._map[e];return void 0===n&&void 0!==t&&(n=this._map[t],void 0===n&&void 0!==r&&(n=this._map[r])),n instanceof f&&this.xref?this.xref.fetch(n,this.suppressEncryption):n}async getAsync(e,t,r){let n=this._map[e];return void 0===n&&void 0!==t&&(n=this._map[t],void 0===n&&void 0!==r&&(n=this._map[r])),n instanceof f&&this.xref?this.xref.fetchAsync(n,this.suppressEncryption):n}getArray(e,t,r){let n=this._map[e];if(void 0===n&&void 0!==t&&(n=this._map[t],void 0===n&&void 0!==r&&(n=this._map[r])),n instanceof f&&this.xref&&(n=this.xref.fetch(n,this.suppressEncryption)),Array.isArray(n)){n=n.slice();for(let e=0,t=n.length;e{(0,n.unreachable)("Should not call \`set\` on the empty dictionary.")},(0,n.shadow)(this,"empty",e)}static merge(e){let{xref:t,dictArray:r,mergeSubDicts:n=!1}=e;const a=new d(t),i=new Map;for(const e of r)if(e instanceof d)for(const[t,r]of Object.entries(e._map)){let e=i.get(t);if(void 0===e)e=[],i.set(t,e);else if(!(n&&r instanceof d))continue;e.push(r)}for(const[e,r]of i){if(1===r.length||!(r[0]instanceof d)){a._map[e]=r[0];continue}const n=new d(t);for(const e of r)for(const[t,r]of Object.entries(e._map))void 0===n._map[t]&&(n._map[t]=r);n.size>0&&(a._map[e]=n)}return i.clear(),a.size>0?a:d.empty}}t.Dict=d;class f{constructor(e,t){this.num=e,this.gen=t}toString(){return 0===this.gen?"".concat(this.num,"R"):"".concat(this.num,"R").concat(this.gen)}static fromString(e){const t=c[e];if(t)return t;const r=/^(\\d+)R(\\d*)$/.exec(e);return r&&"0"!==r[1]?c[e]=new f(parseInt(r[1]),r[2]?parseInt(r[2]):0):null}static get(e,t){var r;const n=0===t?"".concat(e,"R"):"".concat(e,"R").concat(t);return(r=c)[n]||(r[n]=new f(e,t))}}t.Ref=f;class g{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._set=new Set(null==e?void 0:e._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}t.RefSet=g;class p{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}}function m(e,t){return e instanceof l&&(void 0===t||e.name===t)}t.RefSetCache=p},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseStream=void 0;var n=r(144);class a{constructor(){this.constructor===a&&(0,n.unreachable)("Cannot initialize BaseStream.")}get length(){(0,n.unreachable)("Abstract getter \`length\` accessed")}get isEmpty(){(0,n.unreachable)("Abstract getter \`isEmpty\` accessed")}get isDataLoaded(){return(0,n.shadow)(this,"isDataLoaded",!0)}getByte(){(0,n.unreachable)("Abstract method \`getByte\` called")}getBytes(e){(0,n.unreachable)("Abstract method \`getBytes\` called")}peekByte(){const e=this.getByte();return-1!==e&&this.pos--,e}peekBytes(e){const t=this.getBytes(e);return this.pos-=t.length,t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){(0,n.unreachable)("Abstract method \`getByteRange\` called")}getString(e){return(0,n.bytesToString)(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){(0,n.unreachable)("Abstract method \`reset\` called")}moveStart(){(0,n.unreachable)("Abstract method \`moveStart\` called")}makeSubStream(e,t){(0,n.unreachable)("Abstract method \`makeSubStream\` called")}getBaseStreams(){return null}}t.BaseStream=a},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NetworkPdfManager=t.LocalPdfManager=void 0;var n=r(144),a=r(153),i=r(149),s=r(155),o=r(154);class c{constructor(e){var t;this.constructor===c&&(0,n.unreachable)("Cannot initialize BasePdfManager."),this._docBaseUrl=function(e){if(e){const t=(0,n.createValidAbsoluteUrl)(e);if(t)return t.href;(0,n.warn)('Invalid absolute docBaseUrl: "'.concat(e,'".'))}return null}(e.docBaseUrl),this._docId=e.docId,this._password=e.password,this.enableXfa=e.enableXfa,(t=e.evaluatorOptions).isOffscreenCanvasSupported&&(t.isOffscreenCanvasSupported=n.FeatureTest.isOffscreenCanvasSupported),this.evaluatorOptions=e.evaluatorOptions}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){const e=this.pdfDocument.catalog;return(0,n.shadow)(this,"docBaseUrl",e.baseUrl||this._docBaseUrl)}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.pdfDocument.cleanup(e)}async ensure(e,t,r){(0,n.unreachable)("Abstract method \`ensure\` called")}requestRange(e,t){(0,n.unreachable)("Abstract method \`requestRange\` called")}requestLoadedStream(){(0,n.unreachable)("Abstract method \`requestLoadedStream\` called")}sendProgressiveData(e){(0,n.unreachable)("Abstract method \`sendProgressiveData\` called")}updatePassword(e){this._password=e}terminate(e){(0,n.unreachable)("Abstract method \`terminate\` called")}}t.LocalPdfManager=class extends c{constructor(e){super(e);const t=new o.Stream(e.source);this.pdfDocument=new s.PDFDocument(this,t),this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,r){const n=e[t];return"function"==typeof n?n.apply(e,r):n}requestRange(e,t){return Promise.resolve()}requestLoadedStream(){return this._loadedStreamPromise}terminate(e){}},t.NetworkPdfManager=class extends c{constructor(e){super(e),this.streamManager=new a.ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize}),this.pdfDocument=new s.PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,r){try{const n=e[t];return"function"==typeof n?n.apply(e,r):n}catch(n){if(!(n instanceof i.MissingDataException))throw n;return await this.requestRange(n.begin,n.end),this.ensure(e,t,r)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ChunkedStreamManager=t.ChunkedStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(2);var n=r(149),a=r(144),i=r(154);class s extends i.Stream{constructor(e,t,r){super(new Uint8Array(e),0,e,null),this.chunkSize=t,this._loadedChunks=new Set,this.numChunks=Math.ceil(e/t),this.manager=r,this.progressiveDataLength=0,this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,r=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=r;ethis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new n.MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const r=Math.floor(e/this.chunkSize);if(r>this.numChunks)return;const a=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let i=r;i=this.end?-1:(e>=this.progressiveDataLength&&this.ensureByte(e),this.bytes[this.pos++])}getBytes(e){const t=this.bytes,r=this.pos,n=this.end;if(!e)return n>this.progressiveDataLength&&this.ensureRange(r,n),t.subarray(r,n);let a=r+e;return a>n&&(a=n),a>this.progressiveDataLength&&this.ensureRange(r,a),this.pos=a,t.subarray(r,a)}getByteRange(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)}makeSubStream(e,t){let 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(){const e=this.chunkSize,t=Math.floor(this.start/e),r=Math.floor((this.end-1)/e)+1,n=[];for(let e=t;e{const s=o=>{let{value:c,done:l}=o;try{if(l){const t=(0,n.arrayBuffersToBytes)(a);return a=null,void e(t)}i+=c.byteLength,r.isStreamingSupported&&this.onProgress({loaded:i}),a.push(c),r.read().then(s,t)}catch(e){t(e)}};r.read().then(s,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0])){const e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,r=new Set;this._chunksNeededByRequest.set(t,r);for(const t of e)this.stream.hasChunk(t)||r.add(t);if(0===r.size)return Promise.resolve();const n=new a.PromiseCapability;this._promisesByRequest.set(t,n);const i=[];for(const e of r){let r=this._requestsByChunk.get(e);r||(r=[],this._requestsByChunk.set(e,r),i.push(e)),r.push(t)}if(i.length>0){const e=this.groupChunks(i);for(const t of e){const e=t.beginChunk*this.chunkSize,r=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,r).catch(n.reject)}}return n.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const r=this.getBeginChunk(e),n=this.getEndChunk(t),a=[];for(let e=r;e0&&void 0!==arguments[0]?arguments[0]:[];const t=[];for(const r of e){const e=this.getBeginChunk(r.begin),n=this.getEndChunk(r.end);for(let r=e;r=0&&n+1!==i&&(t.push({beginChunk:r,endChunk:n+1}),r=i),a+1===e.length&&t.push({beginChunk:r,endChunk:i+1}),n=i}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const 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||o.push(r)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e),t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0,this.pdfNetworkStream&&this.pdfNetworkStream.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StringStream=t.Stream=t.NullStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(151),a=r(144);class i extends n.BaseStream{constructor(e,t,r,n){super(),this.bytes=e instanceof Uint8Array?e:new Uint8Array(e),this.start=t||0,this.pos=this.start,this.end=t+r||this.bytes.length,this.dict=n}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,r=this.pos,n=this.end;if(!e)return t.subarray(r,n);let a=r+e;return a>n&&(a=n),this.pos=a,t.subarray(r,a)}getByteRange(e,t){return e<0&&(e=0),t>this.end&&(t=this.end),this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return new i(this.bytes.buffer,e,t,r)}}t.Stream=i,t.StringStream=class extends i{constructor(e){super((0,a.stringToBytes)(e))}},t.NullStream=class extends i{constructor(){super(new Uint8Array(0))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Page=t.PDFDocument=void 0,r(2),r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(156),i=r(149),c=r(150),l=r(201),h=r(151),u=r(218),d=r(220),f=r(222),g=r(255),p=r(166),m=r(154),b=r(226),y=r(214),w=r(163),v=r(168),x=r(225),S=r(216),A=r(227),k=r(256);const C=[0,0,612,792];var O=new WeakSet;class F{constructor(e){s(this,O);let{pdfManager:t,xref:r,pageIndex:n,pageDict:a,ref:i,globalIdFactory:o,fontCache:c,builtInCMapCache:l,standardFontDataCache:h,globalImageCache:u,systemFontCache:d,nonBlendModesSet:f,xfaFactory:g}=e;this.pdfManager=t,this.pageIndex=n,this.pageDict=a,this.xref=r,this.ref=i,this.fontCache=c,this.builtInCMapCache=l,this.standardFontDataCache=h,this.globalImageCache=u,this.systemFontCache=d,this.nonBlendModesSet=f,this.evaluatorOptions=t.evaluatorOptions,this.resourcesPromise=null,this.xfaFactory=g;const p={obj:0};this._localIdFactory=class extends o{static createObjId(){return"p".concat(n,"_").concat(++p.obj)}static getPageObjId(){return"p".concat(i.toString())}}}_getInheritableProperty(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=(0,i.getInheritableProperty)({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(r)?1!==r.length&&r[0]instanceof c.Dict?c.Dict.merge({xref:this.xref,dictArray:r}):r[0]:r}get content(){return this.pageDict.getArray("Contents")}get resources(){const e=this._getInheritableProperty("Resources");return(0,n.shadow)(this,"resources",e instanceof c.Dict?e:c.Dict.empty)}_getBoundingBox(e){if(this.xfaData)return this.xfaData.bbox;let t=this._getInheritableProperty(e,!0);if(Array.isArray(t)&&4===t.length){if(t=n.Util.normalizeRect(t),t[2]-t[0]>0&&t[3]-t[1]>0)return t;(0,n.warn)("Empty, or invalid, /".concat(e," entry."))}return null}get mediaBox(){return(0,n.shadow)(this,"mediaBox",this._getBoundingBox("MediaBox")||C)}get cropBox(){return(0,n.shadow)(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");return("number"!=typeof e||e<=0)&&(e=1),(0,n.shadow)(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!(0,n.isArrayEqual)(e,t)){const r=n.Util.intersect(e,t);if(r&&r[2]-r[0]>0&&r[3]-r[1]>0)return(0,n.shadow)(this,"view",r);(0,n.warn)("Empty /CropBox and /MediaBox intersection.")}return(0,n.shadow)(this,"view",t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;return e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360),(0,n.shadow)(this,"rotate",e)}_onSubStreamError(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;(0,n.warn)("getContentStream - ignoring sub-stream (".concat(t,'): "').concat(e,'".'))}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof h.BaseStream?e:Array.isArray(e)?new v.StreamsSequenceStream(e,this._onSubStreamError.bind(this)):new m.NullStream))}get xfaData(){return(0,n.shadow)(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}async saveNewAnnotations(e,t,r,n){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const i=new w.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),s=new c.RefSet,l=new c.RefSet;o(this,O,I).call(this,r,s,l);const h=this.pageDict,u=this.annotations.filter((e=>!(e instanceof c.Ref&&s.has(e)))),d=await a.AnnotationFactory.saveNewAnnotations(i,t,r,n);for(const{ref:e}of d.annotations)e instanceof c.Ref&&!l.has(e)&&u.push(e);const f=h.get("Annots");h.set("Annots",u);const g=[];let p=null;this.xref.encrypt&&(p=this.xref.encrypt.createCipherTransform(this.ref.num,this.ref.gen)),await(0,S.writeObject)(this.ref,h,g,p),f&&h.set("Annots",f);const m=d.dependencies;return m.push({ref:this.ref,data:g.join("")},...d.annotations),m}save(e,t,r){const a=new w.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const i=[];for(const s of e)s.mustBePrinted(r)&&i.push(s.save(a,t,r).catch((function(e){return(0,n.warn)('save - ignoring annotation data during "'.concat(t.name,'" task: "').concat(e,'".')),null})));return Promise.all(i).then((function(e){return e.filter((e=>!!e))}))}))}loadResources(e){return this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources")),this.resourcesPromise.then((()=>new b.ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList(e){let{handler:t,sink:r,task:s,intent:l,cacheKey:h,annotationStorage:u=null}=e;const d=this.getContentStream(),f=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),g=new w.PartialEvaluator({xref:this.xref,handler:t,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),p=this.xfaFactory?null:(0,i.getNewAnnotationsMap)(u);let m=null,b=Promise.resolve(null);if(p){let e;const t=p.get(this.pageIndex);if(t){const r=new Set;for(const{bitmapId:e,bitmap:n}of t)!e||n||r.has(e)||r.add(e);const{isOffscreenCanvasSupported:i}=this.evaluatorOptions;if(r.size>0){const s=t.slice();for(const[e,t]of u)e.startsWith(n.AnnotationEditorPrefix)&&t.bitmap&&r.has(t.bitmapId)&&s.push(t);e=a.AnnotationFactory.generateImages(s,this.xref,i)}else e=a.AnnotationFactory.generateImages(t,this.xref,i);m=new c.RefSet,o(this,O,I).call(this,t,m,null),b=a.AnnotationFactory.printNewAnnotations(g,s,t,e)}}const v=Promise.all([d,f]).then((e=>{let[n]=e;const a=new y.OperatorList(l,r);return t.send("StartRenderPage",{transparency:g.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:h}),g.getOperatorList({stream:n,task:s,resources:this.resources,operatorList:a}).then((function(){return a}))}));return Promise.all([v,this._parsedAnnotations,b]).then((function(e){let[t,r,a]=e;if(a){r=r.filter((e=>!(e.ref&&m.has(e.ref))));for(let e=0,t=a.length;ee.ref&&(0,c.isRefsEqual)(e.ref,n.refToReplace)));i>=0&&(r.splice(i,1,n),a.splice(e--,1),t--)}}r=r.concat(a)}if(0===r.length||l&n.RenderingIntentFlag.ANNOTATIONS_DISABLE)return t.flush(!0),{length:t.totalLength};const i=!!(l&n.RenderingIntentFlag.ANNOTATIONS_FORMS),o=!!(l&n.RenderingIntentFlag.ANY),h=!!(l&n.RenderingIntentFlag.DISPLAY),d=!!(l&n.RenderingIntentFlag.PRINT),f=[];for(const e of r)(o||h&&e.mustBeViewed(u)||d&&e.mustBePrinted(u))&&f.push(e.getOperatorList(g,s,l,i,u).catch((function(e){return(0,n.warn)('getOperatorList - ignoring annotation data during "'.concat(s.name,'" task: "').concat(e,'".')),{opList:null,separateForm:!1,separateCanvas:!1}})));return Promise.all(f).then((function(e){let r=!1,n=!1;for(const{opList:a,separateForm:i,separateCanvas:s}of e)t.addOpList(a),r||(r=i),n||(n=s);return t.flush(!0,{form:r,canvas:n}),{length:t.totalLength}}))}))}extractTextContent(e){let{handler:t,task:r,includeMarkedContent:n,disableNormalization:a,sink:i}=e;const s=this.getContentStream(),o=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([s,o]).then((e=>{let[s]=e;return new w.PartialEvaluator({xref:this.xref,handler:t,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}).getTextContent({stream:s,task:r,resources:this.resources,includeMarkedContent:n,disableNormalization:a,sink:i,viewBox:this.view})}))}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");return e?(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable:null}_parseStructTree(e){const t=new x.StructTreePage(e,this.pageDict);return t.parse(),t}async getAnnotationsData(e,t,r){const a=await this._parsedAnnotations;if(0===a.length)return[];const i=[],s=[];let o;const c=!!(r&n.RenderingIntentFlag.ANY),l=!!(r&n.RenderingIntentFlag.DISPLAY),h=!!(r&n.RenderingIntentFlag.PRINT);for(const r of a){const a=c||l&&r.viewable;(a||h&&r.printable)&&i.push(r.data),r.hasTextContent&&a&&(o||(o=new w.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions})),s.push(r.extractTextContent(o,t,[-1/0,-1/0,1/0,1/0]).catch((function(e){(0,n.warn)('getAnnotationsData - ignoring textContent during "'.concat(t.name,'" task: "').concat(e,'".'))}))))}return await Promise.all(s),i}get annotations(){const e=this._getInheritableProperty("Annots");return(0,n.shadow)(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then((()=>{const e=[];for(const t of this.annotations)e.push(a.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!1).catch((function(e){return(0,n.warn)('_parsedAnnotations: "'.concat(e,'".')),null})));return Promise.all(e).then((function(e){if(0===e.length)return e;const t=[];let r;for(const n of e)n&&(n instanceof a.PopupAnnotation?(r||(r=[])).push(n):t.push(n));return r&&t.push(...r),t}))}));return(0,n.shadow)(this,"_parsedAnnotations",e)}get jsActions(){const e=(0,i.collectActions)(this.xref,this.pageDict,n.PageActionEventType);return(0,n.shadow)(this,"jsActions",e)}}function I(e,t,r){for(const a of e)if(a.id){const e=c.Ref.fromString(a.id);if(!e){(0,n.warn)("A non-linked annotation cannot be modified: ".concat(a.id));continue}if(a.deleted){t.put(e);continue}null==r||r.put(e),a.ref=e,delete a.id}}t.Page=F;const T=new Uint8Array([37,80,68,70,45]),M=new Uint8Array([115,116,97,114,116,120,114,101,102]),E=new Uint8Array([101,110,100,111,98,106]);function P(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1024,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const a=t.length,i=e.peekBytes(r),s=i.length-a;if(s<=0)return!1;if(n){const r=a-1;let n=i.length-1;for(;n>=r;){let s=0;for(;s=a)return e.pos+=n-r,!0;n--}}else{let r=0;for(;r<=s;){let n=0;for(;n=a)return e.pos+=r,!0;r++}}return!1}t.PDFDocument=class{constructor(e,t){if(t.length<=0)throw new n.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e,this.stream=t,this.xref=new k.XRef(t,e),this._pagePromises=new Map,this._version=null;const r={font:0};this._globalIdFactory=class{static getDocId(){return"g_".concat(e.docId)}static createFontId(){return"f"+ ++r.font}static createObjId(){(0,n.unreachable)("Abstract method \`createObjId\` called.")}static getPageObjId(){(0,n.unreachable)("Abstract method \`getPageObjId\` called.")}}}parse(e){this.xref.parse(e),this.catalog=new d.Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=p.Linearization.create(this.stream)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)(e)}return(0,n.shadow)(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization)e.reset(),P(e,E)&&(t=e.pos+6-e.start);else{const r=1024,n=M.length;let a=!1,s=e.end;for(;!a&&s>0;)s-=r-n,s<0&&(s=0),e.pos=s,a=P(e,M,r,!0);if(a){let r;e.skip(9);do{r=e.getByte()}while((0,i.isWhiteSpace)(r));let n="";for(;r>=32&&r<=57;)n+=String.fromCharCode(r),r=e.getByte();t=parseInt(n,10),isNaN(t)&&(t=0)}}return(0,n.shadow)(this,"startXRef",t)}checkHeader(){const e=this.stream;if(e.reset(),!P(e,T))return;e.moveStart(),e.skip(T.length);let t,r="";for(;(t=e.getByte())>32&&r.length<7;)r+=String.fromCharCode(t);i.PDF_VERSION_REGEXP.test(r)?this._version=r:(0,n.warn)("Invalid PDF header version: ".concat(r))}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;return e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages,(0,n.shadow)(this,"numPages",e)}_hasOnlyDocumentSignatures(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof c.Dict))return!1;if(e.has("Kids"))return++t>10?((0,n.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached"),!1):this._hasOnlyDocumentSignatures(e.get("Kids"),t);const r=(0,c.isName)(e.get("FT"),"Sig"),a=e.get("Rect"),i=Array.isArray(a)&&a.every((e=>0===e));return r&&i}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),r={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof h.BaseStream&&!t.isEmpty)return r["xdp:xdp"]=t,r;if(!Array.isArray(t)||0===t.length)return null;for(let e=0,n=t.length;e{p.set(e,t)}));const m=[];for(const[e,r]of p){const s=r.get("FontDescriptor");if(!(s instanceof c.Dict))continue;let o=s.get("FontFamily");o=o.replaceAll(/[ ]+(\\d)/g,"$1");const l={fontFamily:o,fontWeight:s.get("FontWeight"),italicAngle:-s.get("ItalicAngle")};(0,i.validateCSSFont)(l)&&m.push(u.handleSetFont(a,[c.Name.get(e),1],null,d,t,g,null,l).catch((function(e){return(0,n.warn)('loadXfaFonts: "'.concat(e,'".')),null})))}await Promise.all(m);const v=this.xfaFactory.setFonts(f);if(!v)return;h.ignoreErrors=!0,m.length=0,f.length=0;const x=new Set;for(const e of v)(0,l.getXfaFontName)("".concat(e,"-Regular"))||x.add(e);x.size&&v.push("PdfJS-Fallback");for(const e of v)if(!x.has(e))for(const r of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const i="".concat(e,"-").concat(r.name),s=(0,l.getXfaFontDict)(i);m.push(u.handleSetFont(a,[c.Name.get(i),1],null,d,t,g,s,{fontFamily:e,fontWeight:r.fontWeight,italicAngle:r.italicAngle}).catch((function(e){return(0,n.warn)('loadXfaFonts: "'.concat(e,'".')),null})))}await Promise.all(m),this.xfaFactory.appendFonts(f,x)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this._version}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return(0,n.shadow)(this,"formInfo",e);try{const r=t.get("Fields"),n=Array.isArray(r)&&r.length>0;e.hasFields=n;const a=t.get("XFA");e.hasXfa=Array.isArray(a)&&a.length>0||a instanceof h.BaseStream&&!a.isEmpty;const i=!!(1&t.get("SigFlags")),s=i&&this._hasOnlyDocumentSignatures(r);e.hasAcroForm=n&&!s,e.hasSignatures=i}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)('Cannot fetch form information: "'.concat(e,'".'))}return(0,n.shadow)(this,"formInfo",e)}get documentInfo(){const e={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};let t;try{t=this.xref.trailer.get("Info")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)("The document information dictionary is invalid.")}if(!(t instanceof c.Dict))return(0,n.shadow)(this,"documentInfo",e);for(const r of t.getKeys()){const a=t.get(r);switch(r){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof a){e[r]=(0,n.stringToPDFString)(a);continue}break;case"Trapped":if(a instanceof c.Name){e[r]=a;continue}break;default:let t;switch(typeof a){case"string":t=(0,n.stringToPDFString)(a);break;case"number":case"boolean":t=a;break;default:a instanceof c.Name&&(t=a)}if(void 0===t){(0,n.warn)('Bad value, for custom key "'.concat(r,'", in Info: ').concat(a,"."));continue}e.Custom||(e.Custom=Object.create(null)),e.Custom[r]=t;continue}(0,n.warn)('Bad value, for key "'.concat(r,'", in Info: ').concat(a,"."))}return(0,n.shadow)(this,"documentInfo",e)}get fingerprints(){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){const t=[];for(const r of e){const e=r.toString(16);t.push(e.padStart(2,"0"))}return t.join("")}const r=this.xref.trailer.get("ID");let a,i;return Array.isArray(r)&&e(r[0])?(a=(0,n.stringToBytes)(r[0]),r[1]!==r[0]&&e(r[1])&&(i=(0,n.stringToBytes)(r[1]))):a=(0,u.calculateMD5)(this.stream.getByteRange(0,1024),0,1024),(0,n.shadow)(this,"fingerprints",[t(a),i?t(i):null])}async _getLinearizationPage(e){const{catalog:t,linearization:r,xref:a}=this,i=c.Ref.get(r.objectNumberFirst,0);try{const e=await a.fetchAsync(i);if(e instanceof c.Dict){let r=e.getRaw("Type");if(r instanceof c.Ref&&(r=await a.fetchAsync(r)),(0,c.isName)(r,"Page")||!e.has("Type")&&!e.has("Kids"))return t.pageKidsCountCache.has(i)||t.pageKidsCountCache.put(i,1),t.pageIndexCache.has(i)||t.pageIndexCache.put(i,0),[e,i]}throw new n.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(r){return(0,n.warn)('_getLinearizationPage: "'.concat(r.message,'".')),t.getPageDict(e)}}getPage(e){const t=this._pagePromises.get(e);if(t)return t;const{catalog:r,linearization:n,xfaFactory:a}=this;let i;return i=a?Promise.resolve([c.Dict.empty,null]):(null==n?void 0:n.pageFirst)===e?this._getLinearizationPage(e):r.getPageDict(e),i=i.then((t=>{let[n,i]=t;return new F({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:n,ref:i,globalIdFactory:this._globalIdFactory,fontCache:r.fontCache,builtInCMapCache:r.builtInCMapCache,standardFontDataCache:r.standardFontDataCache,globalImageCache:r.globalImageCache,systemFontCache:r.systemFontCache,nonBlendModesSet:r.nonBlendModesSet,xfaFactory:a})})),this._pagePromises.set(e,i),i}async checkFirstPage(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0]))try{await this.getPage(0)}catch(e){if(e instanceof i.XRefEntryException)throw this._pagePromises.delete(0),await this.cleanup(),new i.XRefParseException}}async checkLastPage(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{catalog:t,pdfManager:r}=this;let a;t.setActualNumPages();try{if(await Promise.all([r.ensureDoc("xfaFactory"),r.ensureDoc("linearization"),r.ensureCatalog("numPages")]),this.xfaFactory)return;if(a=this.linearization?this.linearization.numPages:t.numPages,!Number.isInteger(a))throw new n.FormatError("Page count is not an integer.");if(a<=1)return;await this.getPage(a-1)}catch(s){if(this._pagePromises.delete(a-1),await this.cleanup(),s instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;let o;(0,n.warn)("checkLastPage - invalid /Pages tree /Count: ".concat(a,"."));try{o=await t.getAllPageDicts(e)}catch(r){if(r instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;return void t.setActualNumPages(1)}for(const[e,[n,a]]of o){let i;n instanceof Error?(i=Promise.reject(n),i.catch((()=>{}))):i=Promise.resolve(new F({pdfManager:r,xref:this.xref,pageIndex:e,pageDict:n,ref:a,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null})),this._pagePromises.set(e,i)}t.setActualNumPages(o.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.catalog?this.catalog.cleanup(e):(0,f.clearGlobalCaches)()}_collectFieldObjects(e,t,r){const i=this.xref.fetchIfRef(t);if(i.has("T")){const t=(0,n.stringToPDFString)(i.get("T"));e=""===e?t:"".concat(e,".").concat(t)}if(!i.has("Kids")&&/\\[\\d+\\]$/.test(e)&&(e=e.substring(0,e.lastIndexOf("["))),r.has(e)||r.set(e,[]),r.get(e).push(a.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!0).then((e=>null==e?void 0:e.getFieldObject())).catch((function(e){return(0,n.warn)('_collectFieldObjects: "'.concat(e,'".')),null}))),i.has("Kids")){const t=i.get("Kids");for(const n of t)this._collectFieldObjects(e,n,r)}}get fieldObjects(){if(!this.formInfo.hasFields)return(0,n.shadow)(this,"fieldObjects",Promise.resolve(null));const e=Object.create(null),t=new Map;for(const e of this.catalog.acroForm.get("Fields"))this._collectFieldObjects("",e,t);const r=[];for(const[n,a]of t)r.push(Promise.all(a).then((t=>{(t=t.filter((e=>!!e))).length>0&&(e[n]=t)})));return(0,n.shadow)(this,"fieldObjects",Promise.all(r).then((()=>e)))}get hasJSActions(){const e=this.pdfManager.ensureDoc("_parseHasJSActions");return(0,n.shadow)(this,"hasJSActions",e)}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(null==e||!e.has("CO"))return(0,n.shadow)(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return(0,n.shadow)(this,"calculationOrderIds",null);const r=[];for(const e of t)e instanceof c.Ref&&r.push(e.toString());return 0===r.length?(0,n.shadow)(this,"calculationOrderIds",null):(0,n.shadow)(this,"calculationOrderIds",r)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PopupAnnotation=t.MarkupAnnotation=t.AnnotationFactory=t.AnnotationBorderStyle=t.Annotation=void 0,t.getQuadPoints=v,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(157),r(159);var n=r(144),a=r(149),i=r(161),s=r(150),o=r(154),c=r(216),l=r(151),h=r(210),u=r(220),d=r(162),f=r(223),g=r(176),p=r(226),m=r(214),b=r(227);function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Uint8ClampedArray(3);if(!Array.isArray(e))return t;const r=t||new Uint8ClampedArray(3);switch(e.length){case 0:return null;case 1:return d.ColorSpace.singletons.gray.getRgbItem(e,0,r,0),r;case 3:return d.ColorSpace.singletons.rgb.getRgbItem(e,0,r,0),r;case 4:return d.ColorSpace.singletons.cmyk.getRgbItem(e,0,r,0),r;default:return t}}function w(e){return Array.from(e,(e=>e/255))}function v(e,t){const r=e.getArray("QuadPoints");if(!Array.isArray(r)||0===r.length||r.length%8>0)return null;const n=[];for(let e=0,a=r.length/8;et[2]||st[3]))return null;n.push([{x:a,y:o},{x:i,y:o},{x:a,y:s},{x:i,y:s}])}return n}function x(e,t,r){const[a,i,s,o]=n.Util.getAxialAlignedBoundingBox(t,r);if(a===s||i===o)return[1,0,0,1,e[0],e[1]];const c=(e[2]-e[0])/(s-a),l=(e[3]-e[1])/(o-i);return[c,0,0,l,e[0]-a*c,e[1]-i*l]}t.AnnotationFactory=class{static create(e,t,r,n,a){return Promise.all([r.ensureCatalog("acroForm"),r.ensureCatalog("baseUrl"),r.ensureCatalog("attachments"),r.ensureDoc("xfaDatasets"),a?this._getPageIndex(e,t,r):-1]).then((i=>{let[s,o,c,l,h]=i;return r.ensure(this,"_create",[e,t,r,n,s,c,l,a,h])}))}static _create(e,t,r,i,o){let c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,l=arguments.length>6?arguments[6]:void 0,h=arguments.length>7?arguments[7]:void 0,u=arguments.length>8&&void 0!==arguments[8]?arguments[8]:-1;const d=e.fetchIfRef(t);if(!(d instanceof s.Dict))return;const f=t instanceof s.Ref?t.toString():"annot_".concat(i.createObjId());let g=d.get("Subtype");g=g instanceof s.Name?g.name:null;const p=o instanceof s.Dict?o:s.Dict.empty,m={xref:e,ref:t,dict:d,subtype:g,id:f,pdfManager:r,acroForm:p,attachments:c,xfaDatasets:l,collectFields:h,needAppearances:!h&&!0===p.get("NeedAppearances"),pageIndex:u,evaluatorOptions:r.evaluatorOptions};switch(g){case"Link":return new E(m);case"Text":return new M(m);case"Widget":let e=(0,a.getInheritableProperty)({dict:d,key:"FT"});switch(e=e instanceof s.Name?e.name:null,e){case"Tx":return new O(m);case"Btn":return new F(m);case"Ch":return new I(m);case"Sig":return new T(m)}return(0,n.warn)('Unimplemented widget field type "'.concat(e,'", falling back to base field type.')),new C(m);case"Popup":return new P(m);case"FreeText":return new R(m);case"Line":return new N(m);case"Square":return new D(m);case"Circle":return new B(m);case"PolyLine":return new L(m);case"Polygon":return new _(m);case"Caret":return new j(m);case"Ink":return new U(m);case"Highlight":return new $(m);case"Underline":return new X(m);case"Squiggly":return new H(m);case"StrikeOut":return new q(m);case"Stamp":return new z(m);case"FileAttachment":return new G(m);default:return h||(g?(0,n.warn)('Unimplemented annotation type "'.concat(g,'", falling back to base annotation.')):(0,n.warn)("Annotation is missing the required /Subtype.")),new S(m)}}static async _getPageIndex(e,t,r){try{const n=await e.fetchIfRefAsync(t);if(!(n instanceof s.Dict))return-1;const a=n.getRaw("P");return a instanceof s.Ref?await r.ensureCatalog("getPageIndex",[a]):-1}catch(e){return(0,n.warn)('_getPageIndex: "'.concat(e,'".')),-1}}static generateImages(e,t,r){if(!r)return(0,n.warn)("generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images."),null;let a;for(const{bitmapId:r,bitmap:n}of e)n&&(a||(a=new Map),a.set(r,z.createImage(n,t)));return a}static async saveNewAnnotations(e,t,r,a){const i=e.xref;let o;const l=[],h=[],{isOffscreenCanvasSupported:u}=e.options;for(const d of r)if(!d.deleted)switch(d.annotationType){case n.AnnotationEditorType.FREETEXT:if(!o){const e=new s.Dict(i);e.set("BaseFont",s.Name.get("Helvetica")),e.set("Type",s.Name.get("Font")),e.set("Subtype",s.Name.get("Type1")),e.set("Encoding",s.Name.get("WinAnsiEncoding"));const t=[];o=i.getNewTemporaryRef(),await(0,c.writeObject)(o,e,t,null),l.push({ref:o,data:t.join("")})}h.push(R.createNewAnnotation(i,d,l,{evaluator:e,task:t,baseFontRef:o}));break;case n.AnnotationEditorType.INK:h.push(U.createNewAnnotation(i,d,l));break;case n.AnnotationEditorType.STAMP:if(!u)break;const r=await a.get(d.bitmapId);if(r.imageStream){const{imageStream:e,smaskStream:t}=r,n=[];if(t){const r=i.getNewTemporaryRef();await(0,c.writeObject)(r,t,n,null),l.push({ref:r,data:n.join("")}),e.dict.set("SMask",r),n.length=0}const a=r.imageRef=i.getNewTemporaryRef();await(0,c.writeObject)(a,e,n,null),l.push({ref:a,data:n.join("")}),r.imageStream=r.smaskStream=null}h.push(z.createNewAnnotation(i,d,l,{image:r}))}return{annotations:await Promise.all(h),dependencies:l}}static async printNewAnnotations(e,t,r,a){if(!r)return null;const{options:i,xref:s}=e,o=[];for(const c of r)if(!c.deleted)switch(c.annotationType){case n.AnnotationEditorType.FREETEXT:o.push(R.createNewPrintAnnotation(s,c,{evaluator:e,task:t,evaluatorOptions:i}));break;case n.AnnotationEditorType.INK:o.push(U.createNewPrintAnnotation(s,c,{evaluatorOptions:i}));break;case n.AnnotationEditorType.STAMP:if(!i.isOffscreenCanvasSupported)break;const r=await a.get(c.bitmapId);if(r.imageStream){const{imageStream:e,smaskStream:t}=r;t&&e.dict.set("SMask",t),r.imageRef=new g.JpegStream(e,e.length),r.imageStream=r.smaskStream=null}o.push(z.createNewPrintAnnotation(s,c,{image:r,evaluatorOptions:i}))}return Promise.all(o)}};class S{constructor(e){const{dict:t,xref:r}=e;this.setTitle(t.get("T")),this.setContents(t.get("Contents")),this.setModificationDate(t.get("M")),this.setFlags(t.get("F")),this.setRectangle(t.getArray("Rect")),this.setColor(t.getArray("C")),this.setBorderStyle(t),this.setAppearance(t),this.setOptionalContent(t);const i=t.get("MK");this.setBorderAndBackgroundColors(i),this.setRotation(i,t),this.ref=e.ref instanceof s.Ref?e.ref:null,this._streams=[],this.appearance&&this._streams.push(this.appearance);const o=!!(this.flags&n.AnnotationFlag.LOCKED),c=!!(this.flags&n.AnnotationFlag.LOCKEDCONTENTS);if(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:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1,noRotate:!!(this.flags&n.AnnotationFlag.NOROTATE),noHTML:o&&c},e.collectFields){const i=t.get("Kids");if(Array.isArray(i)){const e=[];for(const t of i)t instanceof s.Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=(0,a.collectActions)(r,t,n.AnnotationActionEventType),this.data.fieldName=this._constructFieldName(t),this.data.pageIndex=e.pageIndex}this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported,this._fallbackFontDict=null,this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,n.AnnotationFlag.INVISIBLE)&&!this._hasFlag(e,n.AnnotationFlag.NOVIEW)}_isPrintable(e){return this._hasFlag(e,n.AnnotationFlag.PRINT)&&!this._hasFlag(e,n.AnnotationFlag.INVISIBLE)}mustBeViewed(e){var t;const r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.hidden;return void 0!==r?!r:this.viewable&&!this._hasFlag(this.flags,n.AnnotationFlag.HIDDEN)}mustBePrinted(e){var t;const r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.print;return void 0!==r?r:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&0!==this.flags&&this._isPrintable(this.flags)}_parseStringHelper(e){const t="string"==typeof e?(0,n.stringToPDFString)(e):"";return{str:t,dir:t&&"rtl"===(0,h.bidi)(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const 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)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=Array.isArray(e)&&4===e.length?n.Util.normalizeRect(e):[0,0,0,0]}setColor(e){this.color=y(e)}setLineEndings(e){if(this.lineEndings=["None","None"],Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const r=e[t];if(r instanceof s.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))}}setRotation(e,t){this.rotation=0;let r=e instanceof s.Dict?e.get("R")||0:t.get("Rotate")||0;Number.isInteger(r)&&0!==r&&(r%=360,r<0&&(r+=360),r%90==0&&(this.rotation=r))}setBorderAndBackgroundColors(e){e instanceof s.Dict?(this.borderColor=y(e.getArray("BC"),null),this.backgroundColor=y(e.getArray("BG"),null)):this.borderColor=this.backgroundColor=null}setBorderStyle(e){if(this.borderStyle=new A,e instanceof s.Dict)if(e.has("BS")){const t=e.get("BS"),r=t.get("Type");r&&!(0,s.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")){const t=e.getArray("Border");Array.isArray(t)&&t.length>=3&&(this.borderStyle.setHorizontalCornerRadius(t[0]),this.borderStyle.setVerticalCornerRadius(t[1]),this.borderStyle.setWidth(t[2],this.rectangle),4===t.length&&this.borderStyle.setDashArray(t[3],!0))}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof s.Dict))return;const r=t.get("N");if(r instanceof l.BaseStream)return void(this.appearance=r);if(!(r instanceof s.Dict))return;const n=e.get("AS");if(!(n instanceof s.Name&&r.has(n.name)))return;const a=r.get(n.name);a instanceof l.BaseStream&&(this.appearance=a)}setOptionalContent(e){this.oc=null;const t=e.get("OC");t instanceof s.Name?(0,n.warn)("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof s.Dict&&(this.oc=t)}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(t)return new p.ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}async getOperatorList(e,t,r,a,i){const c=this.data;let l=this.appearance;const h=!!(this.data.hasOwnCanvas&&r&n.RenderingIntentFlag.DISPLAY);if(!l){if(!h)return{opList:new m.OperatorList,separateForm:!1,separateCanvas:!1};l=new o.StringStream(""),l.dict=new s.Dict}const u=l.dict,d=await this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],l),f=u.getArray("BBox")||[0,0,1,1],g=u.getArray("Matrix")||[1,0,0,1,0,0],p=x(c.rect,f,g),b=new m.OperatorList;let y;return this.oc&&(y=await e.parseMarkedContentProps(this.oc,null)),void 0!==y&&b.addOp(n.OPS.beginMarkedContentProps,["OC",y]),b.addOp(n.OPS.beginAnnotation,[c.id,c.rect,p,g,h]),await e.getOperatorList({stream:l,task:t,resources:d,operatorList:b,fallbackFontDict:this._fallbackFontDict}),b.addOp(n.OPS.endAnnotation,[]),void 0!==y&&b.addOp(n.OPS.endMarkedContent,[]),this.reset(),{opList:b,separateForm:!1,separateCanvas:h}}async save(e,t,r){return null}get hasTextContent(){return!1}async extractTextContent(e,t,r){if(!this.appearance)return;const a=await this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance),i=[],s=[];let o=null;const c={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)void 0!==t.str&&(o||(o=t.transform.slice(-2)),s.push(t.str),t.hasEOL&&(i.push(s.join("")),s.length=0))}};if(await e.getTextContent({stream:this.appearance,task:t,resources:a,includeMarkedContent:!0,sink:c,viewBox:r}),this.reset(),s.length&&i.push(s.join("")),i.length>1||i[0]){const e=this.appearance.dict,t=e.getArray("BBox")||[0,0,1,1],r=e.getArray("Matrix")||[1,0,0,1,0,0],a=this.data.rect,s=x(a,t,r);s[4]-=a[0],s[5]-=a[1],o=n.Util.applyTransform(o,s),o=n.Util.applyTransform(o,r),this.data.textPosition=o,this.data.textContent=i}}getFieldObject(){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}reset(){for(const e of this._streams)e.reset()}_constructFieldName(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"));const t=[];e.has("T")&&t.unshift((0,n.stringToPDFString)(e.get("T")));let r=e;const a=new s.RefSet;for(e.objId&&a.put(e.objId);r.has("Parent")&&(r=r.get("Parent"),r instanceof s.Dict&&(!r.objId||!a.has(r.objId)));)if(r.objId&&a.put(r.objId),r.has("T")){const e=(0,n.stringToPDFString)(r.get("T"));e.startsWith("#")||t.unshift(e)}return t.join(".")}}t.Annotation=S;class A{constructor(){this.width=1,this.style=n.AnnotationBorderStyleType.SOLID,this.dashArray=[3],this.horizontalCornerRadius=0,this.verticalCornerRadius=0}setWidth(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0,0,0];if(e instanceof s.Name)this.width=0;else if("number"==typeof e){if(e>0){const 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}}setStyle(e){if(e instanceof s.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}}setDashArray(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Array.isArray(e)&&e.length>0){let r=!0,n=!0;for(const t of e){if(!(+t>=0)){r=!1;break}t>0&&(n=!1)}r&&!n?(this.dashArray=e,t&&this.setStyle(s.Name.get("D"))):this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}t.AnnotationBorderStyle=A;class k extends S{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof s.Ref?e.toString():null;const r=t.get("RT");this.data.replyType=r instanceof s.Name?r.name:n.AnnotationReplyType.REPLY}let r=null;if(this.data.replyType===n.AnnotationReplyType.GROUP){const e=t.get("IRT");this.setTitle(e.get("T")),this.data.titleObj=this._title,this.setContents(e.get("Contents")),this.data.contentsObj=this._contents,e.has("CreationDate")?(this.setCreationDate(e.get("CreationDate")),this.data.creationDate=this.creationDate):this.data.creationDate=null,e.has("M")?(this.setModificationDate(e.get("M")),this.data.modificationDate=this.modificationDate):this.data.modificationDate=null,r=e.getRaw("Popup"),e.has("C")?(this.setColor(e.getArray("C")),this.data.color=this.color):this.data.color=null}else this.data.titleObj=this._title,this.setCreationDate(t.get("CreationDate")),this.data.creationDate=this.creationDate,r=t.getRaw("Popup"),t.has("C")||(this.data.color=null);this.data.popupRef=r instanceof s.Ref?r.toString():null,t.has("RC")&&(this.data.richText=b.XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance(e){let{xref:t,extra:r,strokeColor:n,fillColor:a,blendMode:i,strokeAlpha:c,fillAlpha:l,pointsCallback:h}=e,u=Number.MAX_VALUE,d=Number.MAX_VALUE,f=Number.MIN_VALUE,g=Number.MIN_VALUE;const 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"));let m=this.data.quadPoints;m||(m=[[{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]}]]);for(const e of m){const[t,r,n,a]=h(p,e);u=Math.min(u,t),f=Math.max(f,r),d=Math.min(d,n),g=Math.max(g,a)}p.push("Q");const b=new s.Dict(t),y=new s.Dict(t);y.set("Subtype",s.Name.get("Form"));const w=new o.StringStream(p.join(" "));w.dict=y,b.set("Fm0",w);const v=new s.Dict(t);i&&v.set("BM",s.Name.get(i)),"number"==typeof c&&v.set("CA",c),"number"==typeof l&&v.set("ca",l);const x=new s.Dict(t);x.set("GS0",v);const S=new s.Dict(t);S.set("ExtGState",x),S.set("XObject",b);const A=new s.Dict(t);A.set("Resources",S);const k=this.data.rect=[u,d,f,g];A.set("BBox",k),this.appearance=new o.StringStream("/GS0 gs /Fm0 Do"),this.appearance.dict=A,this._streams.push(this.appearance,w)}static async createNewAnnotation(e,t,r,n){const a=t.ref||e.getNewTemporaryRef(),i=await this.createNewAppearanceStream(t,e,n),s=[];let o;if(i){const n=e.getNewTemporaryRef();o=this.createNewDict(t,e,{apRef:n});const a=e.encrypt?e.encrypt.createCipherTransform(n.num,n.gen):null;await(0,c.writeObject)(n,i,s,a),r.push({ref:n,data:s.join("")})}else o=this.createNewDict(t,e,{});s.length=0;const l=e.encrypt?e.encrypt.createCipherTransform(a.num,a.gen):null;return await(0,c.writeObject)(a,o,s,l),{ref:a,data:s.join("")}}static async createNewPrintAnnotation(e,t,r){const n=await this.createNewAppearanceStream(t,e,r),a=this.createNewDict(t,e,{ap:n}),i=new this.prototype.constructor({dict:a,xref:e,evaluatorOptions:r.evaluatorOptions});return t.ref&&(i.ref=i.refToReplace=t.ref),i}}t.MarkupAnnotation=k;class C extends S{constructor(e){var t;super(e);const{dict:r,xref:i}=e,o=this.data;this._needAppearances=e.needAppearances,o.annotationType=n.AnnotationType.WIDGET,void 0===o.fieldName&&(o.fieldName=this._constructFieldName(r)),o.fieldName&&/\\[\\d+\\]$/.test(o.fieldName)&&!r.has("Kids")&&(o.baseFieldName=o.fieldName.substring(0,o.fieldName.lastIndexOf("["))),void 0===o.actions&&(o.actions=(0,a.collectActions)(i,r,n.AnnotationActionEventType));let c=(0,a.getInheritableProperty)({dict:r,key:"V",getArray:!0});o.fieldValue=this._decodeFormValue(c);const l=(0,a.getInheritableProperty)({dict:r,key:"DV",getArray:!0});if(o.defaultFieldValue=this._decodeFormValue(l),void 0===c&&e.xfaDatasets){const t=this._title.str;t&&(this._hasValueFromXFA=!0,o.fieldValue=c=e.xfaDatasets.getValue(t))}void 0===c&&null!==o.defaultFieldValue&&(o.fieldValue=o.defaultFieldValue),o.alternativeText=(0,n.stringToPDFString)(r.get("TU")||""),this.setDefaultAppearance(e),o.hasAppearance||(o.hasAppearance=this._needAppearances&&void 0!==o.fieldValue&&null!==o.fieldValue);const h=(0,a.getInheritableProperty)({dict:r,key:"FT"});o.fieldType=h instanceof s.Name?h.name:null;const u=(0,a.getInheritableProperty)({dict:r,key:"DR"}),d=e.acroForm.get("DR"),f=null===(t=this.appearance)||void 0===t?void 0:t.dict.get("Resources");this._fieldResources={localResources:u,acroFormResources:d,appearanceResources:f,mergedResources:s.Dict.merge({xref:i,dictArray:[u,f,d],mergeSubDicts:!0})},o.fieldFlags=(0,a.getInheritableProperty)({dict:r,key:"Ff"}),(!Number.isInteger(o.fieldFlags)||o.fieldFlags<0)&&(o.fieldFlags=0),o.readOnly=this.hasFieldFlag(n.AnnotationFieldFlag.READONLY),o.required=this.hasFieldFlag(n.AnnotationFieldFlag.REQUIRED),o.hidden=this._hasFlag(o.annotationFlags,n.AnnotationFlag.HIDDEN)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>(0,n.stringToPDFString)(e))):e instanceof s.Name?(0,n.stringToPDFString)(e.name):"string"==typeof e?(0,n.stringToPDFString)(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}getRotationMatrix(e){var t;let r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.rotation;if(void 0===r&&(r=this.rotation),0===r)return n.IDENTITY_MATRIX;const i=this.data.rect[2]-this.data.rect[0],s=this.data.rect[3]-this.data.rect[1];return(0,a.getRotationMatrix)(r,i,s)}getBorderAndBackgroundAppearances(e){var t;let r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.rotation;if(void 0===r&&(r=this.rotation),!this.backgroundColor&&!this.borderColor)return"";const n=this.data.rect[2]-this.data.rect[0],a=this.data.rect[3]-this.data.rect[1],s=0===r||180===r?"0 0 ".concat(n," ").concat(a," re"):"0 0 ".concat(a," ").concat(n," re");let o="";return this.backgroundColor&&(o="".concat((0,i.getPdfColor)(this.backgroundColor,!0)," ").concat(s," f ")),this.borderColor&&(o+="".concat(this.borderStyle.width||1," w ").concat((0,i.getPdfColor)(this.borderColor,!1)," ").concat(s," S ")),o}async getOperatorList(e,t,r,a,i){if(a&&!(this instanceof T)&&!this.data.noHTML&&!this.data.hasOwnCanvas)return{opList:new m.OperatorList,separateForm:!0,separateCanvas:!1};if(!this._hasText)return super.getOperatorList(e,t,r,a,i);const s=await this._getAppearance(e,t,r,i);if(this.appearance&&null===s)return super.getOperatorList(e,t,r,a,i);const c=new m.OperatorList;if(!this._defaultAppearance||null===s)return{opList:c,separateForm:!1,separateCanvas:!1};const l=!!(this.data.hasOwnCanvas&&r&n.RenderingIntentFlag.DISPLAY),h=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],u=x(this.data.rect,h,[1,0,0,1,0,0]);let d;this.oc&&(d=await e.parseMarkedContentProps(this.oc,null)),void 0!==d&&c.addOp(n.OPS.beginMarkedContentProps,["OC",d]),c.addOp(n.OPS.beginAnnotation,[this.data.id,this.data.rect,u,this.getRotationMatrix(i),l]);const f=new o.StringStream(s);return await e.getOperatorList({stream:f,task:t,resources:this._fieldResources.mergedResources,operatorList:c}),c.addOp(n.OPS.endAnnotation,[]),void 0!==d&&c.addOp(n.OPS.endMarkedContent,[]),{opList:c,separateForm:!1,separateCanvas:l}}_getMKDict(e){const t=new s.Dict(null);return e&&t.set("R",e),this.borderColor&&t.set("BC",w(this.borderColor)),this.backgroundColor&&t.set("BG",w(this.backgroundColor)),t.size>0?t:null}amendSavedDict(e,t){}async save(e,t,r){var i;const l=null==r?void 0:r.get(this.data.id);let h=null==l?void 0:l.value,u=null==l?void 0:l.rotation;if(h===this.data.fieldValue||void 0===h){if(!this._hasValueFromXFA&&void 0===u)return null;h||(h=this.data.fieldValue)}if(void 0===u&&!this._hasValueFromXFA&&Array.isArray(h)&&Array.isArray(this.data.fieldValue)&&h.length===this.data.fieldValue.length&&h.every(((e,t)=>e===this.data.fieldValue[t])))return null;void 0===u&&(u=this.rotation);let d=null;if(!this._needAppearances&&(d=await this._getAppearance(e,t,n.RenderingIntentFlag.SAVE,r),null===d))return null;let f=!1;null!==(i=d)&&void 0!==i&&i.needAppearances&&(f=!0,d=null);const{xref:g}=e,p=g.fetchIfRef(this.ref);if(!(p instanceof s.Dict))return null;const m=new s.Dict(g);for(const e of p.getKeys())"AP"!==e&&m.set(e,p.getRaw(e));const b={path:this.data.fieldName,value:h},y=e=>(0,a.isAscii)(e)?e:(0,a.stringToUTF16String)(e,!0);m.set("V",Array.isArray(h)?h.map(y):y(h)),this.amendSavedDict(r,m);const w=this._getMKDict(u);w&&m.set("MK",w);const v=g.encrypt,x=v?v.createCipherTransform(this.ref.num,this.ref.gen):null,S=[],A=[{ref:this.ref,data:"",xfa:b,needAppearances:f}];if(null!==d){const e=g.getNewTemporaryRef(),t=new s.Dict(g);m.set("AP",t),t.set("N",e);let a=null;v&&(a=v.createCipherTransform(e.num,e.gen));const i=this._getSaveFieldResources(g),l=new o.StringStream(d),h=l.dict=new s.Dict(g);h.set("Subtype",s.Name.get("Form")),h.set("Resources",i),h.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]);const u=this.getRotationMatrix(r);u!==n.IDENTITY_MATRIX&&h.set("Matrix",u),await(0,c.writeObject)(e,l,S,a),A.push({ref:e,data:S.join(""),xfa:null,needAppearances:!1}),S.length=0}return m.set("M","D:".concat((0,n.getModificationDate)())),await(0,c.writeObject)(this.ref,m,S,x),A[0].data=S.join(""),A}async _getAppearance(e,t,r,s){if(this.hasFieldFlag(n.AnnotationFieldFlag.PASSWORD))return null;const o=null==s?void 0:s.get(this.data.id);let c,l;if(o&&(c=o.formattedValue||o.value,l=o.rotation),void 0===l&&void 0===c&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const h=this.getBorderAndBackgroundAppearances(s);if(void 0===c&&(c=this.data.fieldValue,!c))return"/Tx BMC q ".concat(h,"Q EMC");if(Array.isArray(c)&&1===c.length&&(c=c[0]),(0,n.assert)("string"==typeof c,"Expected \`value\` to be a string."),c=c.trim(),this.data.combo){const e=this.data.options.find((e=>{let{exportValue:t}=e;return c===t}));c=(null==e?void 0:e.displayValue)||c}if(""===c)return"/Tx BMC q ".concat(h,"Q EMC");void 0===l&&(l=this.rotation);let u,d=-1;this.data.multiLine?(u=c.split(/\\r\\n?|\\n/).map((e=>e.normalize("NFC"))),d=u.length):u=[c.replace(/\\r\\n?|\\n/,"").normalize("NFC")];let f=this.data.rect[3]-this.data.rect[1],g=this.data.rect[2]-this.data.rect[0];90!==l&&270!==l||([g,f]=[f,g]),this._defaultAppearance||(this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let p,m,b,y=await C._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const w=[];let v=!1;for(const e of u){const t=y.encodeString(e);t.length>1&&(v=!0),w.push(t.join(""))}if(v&&r&n.RenderingIntentFlag.SAVE)return{needAppearances:!0};if(v&&this._isOffscreenCanvasSupported){const r=this.data.comb?"monospace":"sans-serif",n=new i.FakeUnicodeFont(e.xref,r),s=n.createFontResources(u.join("")),o=s.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const t of o.getKeys())e.set(t,o.getRaw(t))}else this._fieldResources.mergedResources.set("Font",o);const l=n.fontName.name;y=await C._getFontData(e,t,{fontName:l,fontSize:0},s);for(let e=0,t=w.length;e2?"/Tx BMC q ".concat(h,"BT ")+p+" 1 0 0 1 ".concat((0,a.numberToString)(2)," ").concat((0,a.numberToString)(k)," Tm (").concat((0,a.escapeString)(w[0]),") Tj ET Q EMC"):"/Tx BMC q ".concat(h,"BT ")+p+" 1 0 0 1 0 0 Tm ".concat(this._renderText(w[0],y,m,g,A,{shift:0},2,k)," ET Q EMC")}static async _getFontData(e,t,r,n){const a=new m.OperatorList,i={font:null,clone(){return this}},{fontName:o,fontSize:c}=r;return await e.handleSetFont(n,[o&&s.Name.get(o),c],null,a,t,i,null),i.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,r,a,s){let{fontSize:o}=this.data.defaultAppearanceData,c=(o||12)*n.LINE_FACTOR,l=Math.round(e/c);if(!o){const h=e=>Math.floor(100*e)/100;if(-1===s){const i=this._getTextWidth(r,a);o=h(Math.min(e/n.LINE_FACTOR,i>t?t/i:1/0)),l=1}else{const i=r.split(/\\r\\n?|\\n/),u=[];for(const e of i){const t=a.encodeString(e).join(""),r=a.charsToGlyphs(t),n=a.getCharPositions(t);u.push({line:t,glyphs:r,positions:n})}const d=r=>{let n=0;for(const i of u)if(n+=this._splitLine(null,a,r,t,i).length*r,n>e)return!0;return!1};for(l=Math.max(l,s);c=e/l,o=h(c/n.LINE_FACTOR),d(o);)l++}const{fontName:u,fontColor:d}=this.data.defaultAppearanceData;this._defaultAppearance=(0,i.createDefaultAppearance)({fontSize:o,fontName:u,fontColor:d})}return[this._defaultAppearance,o,e/l]}_renderText(e,t,r,n,i,s,o,c){let l;l=1===i?(n-this._getTextWidth(e,t)*r)/2:2===i?n-this._getTextWidth(e,t)*r-o:o;const h=(0,a.numberToString)(l-s.shift);return s.shift=l,"".concat(h," ").concat(c=(0,a.numberToString)(c)," Td (").concat((0,a.escapeString)(e),") Tj")}_getSaveFieldResources(e){var t;const{localResources:r,appearanceResources:n,acroFormResources:a}=this._fieldResources,i=null===(t=this.data.defaultAppearanceData)||void 0===t?void 0:t.fontName;if(!i)return r||s.Dict.empty;for(const e of[r,n])if(e instanceof s.Dict){const t=e.get("Font");if(t instanceof s.Dict&&t.has(i))return e}if(a instanceof s.Dict){const t=a.get("Font");if(t instanceof s.Dict&&t.has(i)){const n=new s.Dict(e);n.set(i,t.getRaw(i));const a=new s.Dict(e);return a.set("Font",n),s.Dict.merge({xref:e,dictArray:[a,r],mergeSubDicts:!0})}}return r||s.Dict.empty}getFieldObject(){return null}}class O extends C{constructor(e){super(e),this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML,this._hasText=!0;const t=e.dict;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let r=(0,a.getInheritableProperty)({dict:t,key:"Q"});(!Number.isInteger(r)||r<0||r>2)&&(r=null),this.data.textAlignment=r;let i=(0,a.getInheritableProperty)({dict:t,key:"MaxLen"});(!Number.isInteger(i)||i<0)&&(i=0),this.data.maxLen=i,this.data.multiLine=this.hasFieldFlag(n.AnnotationFieldFlag.MULTILINE),this.data.comb=this.hasFieldFlag(n.AnnotationFieldFlag.COMB)&&!this.hasFieldFlag(n.AnnotationFieldFlag.MULTILINE)&&!this.hasFieldFlag(n.AnnotationFieldFlag.PASSWORD)&&!this.hasFieldFlag(n.AnnotationFieldFlag.FILESELECT)&&0!==this.data.maxLen,this.data.doNotScroll=this.hasFieldFlag(n.AnnotationFieldFlag.DONOTSCROLL)}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,r,n,i,s,o,c,l,h,u){const d=i/this.data.maxLen,f=this.getBorderAndBackgroundAppearances(u),g=[],p=t.getCharPositions(r);for(const[e,t]of p)g.push("(".concat((0,a.escapeString)(r.substring(e,t)),") Tj"));const m=g.join(" ".concat((0,a.numberToString)(d)," 0 Td "));return"/Tx BMC q ".concat(f,"BT ")+e+" 1 0 0 1 ".concat((0,a.numberToString)(o)," ").concat((0,a.numberToString)(c+l)," Tm ").concat(m," ET Q EMC")}_getMultilineAppearance(e,t,r,n,i,s,o,c,l,h,u,d){const f=[],g=i-2*c,p={shift:0};for(let e=0,a=t.length;e4&&void 0!==arguments[4]?arguments[4]:{};e=a.line||e;const i=a.glyphs||t.charsToGlyphs(e);if(i.length<=1)return[e];const s=a.positions||t.getCharPositions(e),o=r/1e3,c=[];let l=-1,h=-1,u=-1,d=0,f=0;for(let t=0,r=i.length;tn?(c.push(e.substring(d,r)),d=r,f=p,l=-1,u=-1):(f+=p,l=r,h=a,u=t):f+p>n?-1!==l?(c.push(e.substring(d,h)),d=h,t=u+1,l=-1,f=0):(c.push(e.substring(d,r)),d=r,f=p):f+=p}return d"Off"!==e));i.length=0,i.push("Off",e)}i.includes(this.data.fieldValue)||(this.data.fieldValue="Off"),this.data.exportValue=i[1];const o=r.get(this.data.exportValue);this.checkedAppearance=o instanceof l.BaseStream?o:null;const c=r.get("Off");this.uncheckedAppearance=c instanceof l.BaseStream?c:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict}_processRadioButton(e){this.data.fieldValue=this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof s.Dict){this.parent=e.dict.getRaw("Parent");const r=t.get("V");r instanceof s.Name&&(this.data.fieldValue=this._decodeFormValue(r))}const r=e.dict.get("AP");if(!(r instanceof s.Dict))return;const n=r.get("N");if(!(n instanceof s.Dict))return;for(const e of n.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const a=n.get(this.data.buttonValue);this.checkedAppearance=a instanceof l.BaseStream?a:null;const i=n.get("Off");this.uncheckedAppearance=i instanceof l.BaseStream?i:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict}_processPushButton(e){e.dict.has("A")||e.dict.has("AA")||this.data.alternativeText?(this.data.isTooltipOnly=!e.dict.has("A")&&!e.dict.has("AA"),u.Catalog.parseDestDictionary({destDict:e.dict,resultObj:this.data,docBaseUrl:e.pdfManager.docBaseUrl,docAttachments:e.attachments})):(0,n.warn)("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";return this.data.checkBox?(t="checkbox",e=this.data.exportValue):this.data.radioButton&&(t="radiobutton",e=this.data.buttonValue),{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new s.Dict;return e.set("BaseFont",s.Name.get("ZapfDingbats")),e.set("Type",s.Name.get("FallbackType")),e.set("Subtype",s.Name.get("FallbackType")),e.set("Encoding",s.Name.get("ZapfDingbatsEncoding")),(0,n.shadow)(this,"fallbackFontDict",e)}}class I extends C{constructor(e){super(e);const{dict:t,xref:r}=e;this.indices=t.getArray("I"),this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0,this.data.options=[];const i=(0,a.getInheritableProperty)({dict:t,key:"Opt"});if(Array.isArray(i))for(let e=0,t=i.length;e=0&&t0?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}}amendSavedDict(e,t){var r;if(!this.hasIndices)return;let n=null==e||null===(r=e.get(this.data.id))||void 0===r?void 0:r.value;Array.isArray(n)||(n=[n]);const a=[],{options:i}=this.data;for(let e=0,t=0,r=i.length;er&&(r=n,t=e)}[g,p]=this._computeFontSize(e,h-4,t,f,-1)}const m=p*n.LINE_FACTOR,b=(m-p)/2,y=Math.floor(l/m);let w=0;if(d.length>0){const e=Math.min(...d),t=Math.max(...d);w=Math.max(0,t-y+1),w>e&&(w=e)}const v=Math.min(w+y+1,u),x=["/Tx BMC q","1 1 ".concat(h," ").concat(l," re W n")];if(d.length){x.push("0.600006 0.756866 0.854904 rg");for(const e of d)w<=e&&e1)return null;e=t.join(""),T.push(e);let r=0;const n=y.charsToGlyphs(e);for(const e of n)r+=e.width*F;I=Math.max(I,r)}let M=1;I>A&&(M=A/I);let E=1;const P=n.LINE_FACTOR*d,R=(n.LINE_FACTOR-n.LINE_DESCENT_FACTOR)*d,N=P*O.length;N>k&&(E=k/N);const D=d*Math.min(M,E);let B,L,_;switch(g){case 0:_=[1,0,0,1],L=[f[0],f[1],A,k],B=[f[0],f[3]-R];break;case 90:_=[0,1,-1,0],L=[f[1],-f[2],A,k],B=[f[1],-f[0]-R];break;case 180:_=[-1,0,0,-1],L=[-f[2],-f[3],A,k],B=[-f[2],-f[1]-R];break;case 270:_=[0,-1,1,0],L=[-f[3],f[0],A,k],B=[-f[3],f[2]-R]}const j=["q","".concat(_.join(" ")," 0 0 cm"),"".concat(L.join(" ")," re W n"),"BT","".concat((0,i.getPdfColor)(u,!0)),"0 Tc /Helv ".concat((0,a.numberToString)(D)," Tf")];j.push("".concat(B.join(" ")," Td (").concat((0,a.escapeString)(T[0]),") Tj"));const U=(0,a.numberToString)(P);for(let e=1,t=T.length;e(e.push("".concat(a[0]," ").concat(a[1]," m"),"".concat(a[2]," ").concat(a[3]," l"),"S"),[t[0].x-l,t[1].x+l,t[3].y-l,t[1].y+l])})}}}class D extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.SQUARE,this.data.hasOwnCanvas=this.data.noRotate,!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA"),a=y(t.getArray("IC"),null),i=a?w(a):null,s=i?n:null;if(0===this.borderStyle.width&&!i)return;this._setDefaultAppearance({xref:r,extra:"".concat(this.borderStyle.width," w"),strokeColor:e,fillColor:i,strokeAlpha:n,fillAlpha:s,pointsCallback:(e,t)=>{const r=t[2].x+this.borderStyle.width/2,n=t[2].y+this.borderStyle.width/2,a=t[3].x-t[2].x-this.borderStyle.width,s=t[1].y-t[3].y-this.borderStyle.width;return e.push("".concat(r," ").concat(n," ").concat(a," ").concat(s," re")),i?e.push("B"):e.push("S"),[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class B extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.CIRCLE,!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA"),a=y(t.getArray("IC"),null),i=a?w(a):null,s=i?n:null;if(0===this.borderStyle.width&&!i)return;const o=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:r,extra:"".concat(this.borderStyle.width," w"),strokeColor:e,fillColor:i,strokeAlpha:n,fillAlpha:s,pointsCallback:(e,t)=>{const r=t[0].x+this.borderStyle.width/2,n=t[0].y-this.borderStyle.width/2,a=t[3].x-this.borderStyle.width/2,s=t[3].y+this.borderStyle.width/2,c=r+(a-r)/2,l=n+(s-n)/2,h=(a-r)/2*o,u=(s-n)/2*o;return e.push("".concat(c," ").concat(s," m"),"".concat(c+h," ").concat(s," ").concat(a," ").concat(l+u," ").concat(a," ").concat(l," c"),"".concat(a," ").concat(l-u," ").concat(c+h," ").concat(n," ").concat(c," ").concat(n," c"),"".concat(c-h," ").concat(n," ").concat(r," ").concat(l-u," ").concat(r," ").concat(l," c"),"".concat(r," ").concat(l+u," ").concat(c-h," ").concat(s," ").concat(c," ").concat(s," c"),"h"),i?e.push("B"):e.push("S"),[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class L extends k{constructor(e){super(e);const{dict:t,xref:r}=e;this.data.annotationType=n.AnnotationType.POLYLINE,this.data.hasOwnCanvas=this.data.noRotate,this.data.vertices=[],this instanceof _||(this.setLineEndings(t.getArray("LE")),this.data.lineEndings=this.lineEndings);const a=t.getArray("Vertices");if(Array.isArray(a)){for(let e=0,t=a.length;e{const r=this.data.vertices;for(let t=0,n=r.length;t{for(const t of this.data.inkLists){for(let r=0,n=t.length;re.points))),f.set("F",4),f.set("Rotate",u);const g=new s.Dict(t);f.set("BS",g),g.set("W",d),f.set("C",Array.from(o,(e=>e/255))),f.set("CA",c);const p=new s.Dict(t);return f.set("AP",p),a?p.set("N",a):p.set("N",i),f}static async createNewAppearanceStream(e,t,r){const{color:n,rect:c,paths:l,thickness:h,opacity:u}=e,d=["".concat(h," w 1 J 1 j"),"".concat((0,i.getPdfColor)(n,!1))];1!==u&&d.push("/R0 gs");const f=[];for(const{bezier:e}of l){f.length=0,f.push("".concat((0,a.numberToString)(e[0])," ").concat((0,a.numberToString)(e[1])," m"));for(let t=2,r=e.length;t(e.push("".concat(t[0].x," ").concat(t[0].y," m"),"".concat(t[1].x," ").concat(t[1].y," l"),"".concat(t[3].x," ").concat(t[3].y," l"),"".concat(t[2].x," ").concat(t[2].y," l"),"f"),[t[0].x,t[1].x,t[3].y,t[1].y])})}}else this.data.popupRef=null}}class X extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.UNDERLINE,this.data.quadPoints=v(t,null)){if(!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA");this._setDefaultAppearance({xref:r,extra:"[] 0 d 0.571 w",strokeColor:e,strokeAlpha:n,pointsCallback:(e,t)=>(e.push("".concat(t[2].x," ").concat(t[2].y+1.3," m"),"".concat(t[3].x," ").concat(t[3].y+1.3," l"),"S"),[t[0].x,t[1].x,t[3].y,t[1].y])})}}else this.data.popupRef=null}}class H extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.SQUIGGLY,this.data.quadPoints=v(t,null)){if(!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA");this._setDefaultAppearance({xref:r,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:n,pointsCallback:(e,t)=>{const r=(t[0].y-t[2].y)/6;let n=r,a=t[2].x;const i=t[2].y,s=t[3].x;e.push("".concat(a," ").concat(i+n," m"));do{a+=2,n=0===n?r:0,e.push("".concat(a," ").concat(i+n," l"))}while(a(e.push((t[0].x+t[2].x)/2+" "+(t[0].y+t[2].y)/2+" m",(t[1].x+t[3].x)/2+" "+(t[1].y+t[3].y)/2+" l","S"),[t[0].x,t[1].x,t[3].y,t[1].y])})}}else this.data.popupRef=null}}class z extends k{constructor(e){super(e),this.data.annotationType=n.AnnotationType.STAMP,this.data.hasOwnCanvas=this.data.noRotate}static async createImage(e,t){const{width:r,height:a}=e,i=new OffscreenCanvas(r,a),c=i.getContext("2d",{alpha:!0});c.drawImage(e,0,0);const l=c.getImageData(0,0,r,a).data,h=new Uint32Array(l.buffer),u=h.some(n.FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>255!=(255&e));u&&(c.fillStyle="white",c.fillRect(0,0,r,a),c.drawImage(e,0,0));const d=i.convertToBlob({type:"image/jpeg",quality:1}).then((e=>e.arrayBuffer())),f=s.Name.get("XObject"),g=s.Name.get("Image"),p=new s.Dict(t);p.set("Type",f),p.set("Subtype",g),p.set("BitsPerComponent",8),p.set("ColorSpace",s.Name.get("DeviceRGB")),p.set("Filter",s.Name.get("DCTDecode")),p.set("BBox",[0,0,r,a]),p.set("Width",r),p.set("Height",a);let m=null;if(u){const e=new Uint8Array(h.length);if(n.FeatureTest.isLittleEndian)for(let t=0,r=h.length;t>>24;else for(let t=0,r=h.length;t{var n=r(4),a=r(6),i=r(87),s=r(158),o=r(7),c=n.RegExp,l=c.prototype;a&&o((function(){var e=!0;try{c(".","d")}catch(t){e=!1}var t={},r="",n=e?"dgimsy":"gimsy",a=function(e,n){Object.defineProperty(t,e,{get:function(){return r+=n,!0}})},i={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in e&&(i.hasIndices="d"),i)a(s,i[s]);return Object.getOwnPropertyDescriptor(l,"flags").get.call(t)!==n||r!==n}))&&i(l,"flags",{configurable:!0,get:s})},(e,t,r)=>{var n=r(47);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(3),a=r(40),i=r(64),s=r(140),o=r(160),c=r(142);n({target:"Array",proto:!0,arity:1,forced:1!==[].unshift(0)||!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(e){return e instanceof TypeError}}()},{unshift:function(e){var t=a(this),r=i(t),n=arguments.length;if(n){c(r+n);for(var l=r;l--;){var h=l+n;l in t?t[h]=t[l]:o(t,h)}for(var u=0;u{var n=r(32),a=TypeError;e.exports=function(e,t){if(!delete e[t])throw a("Cannot delete property "+n(t)+" of "+n(e))}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FakeUnicodeFont=void 0,t.createDefaultAppearance=function(e){let{fontSize:t,fontName:r,fontColor:n}=e;return"/".concat((0,a.escapePDFName)(r)," ").concat(t," Tf ").concat(f(n,!0))},t.getPdfColor=f,t.parseAppearanceStream=function(e,t,r){return new d(e,t,r).parse()},t.parseDefaultAppearance=function(e){return new u(e).parse()},r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(150),a=r(149),i=r(144),s=r(162),o=r(163),c=r(209),l=r(207),h=r(154);class u extends o.EvaluatorPreprocessor{constructor(e){super(new h.StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;e.args.length=0,this.read(e);){if(0!==this.savedStatesDepth)continue;const{fn:r,args:a}=e;switch(0|r){case i.OPS.setFont:const[e,r]=a;e instanceof n.Name&&(t.fontName=e.name),"number"==typeof r&&r>0&&(t.fontSize=r);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(a,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(a,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(a,0,t.fontColor,0)}}}catch(e){(0,i.warn)('parseDefaultAppearance - ignoring errors: "'.concat(e,'".'))}return t}}class d extends o.EvaluatorPreprocessor{constructor(e,t,r){var n;super(e),this.stream=e,this.evaluatorOptions=t,this.xref=r,this.resources=null===(n=e.dict)||void 0===n?void 0:n.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:s.ColorSpace.singletons.gray},r=!1;const a=[];try{for(;e.args.length=0,!r&&this.read(e);){const{fn:o,args:c}=e;switch(0|o){case i.OPS.save:a.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case i.OPS.restore:t=a.pop()||t;break;case i.OPS.setTextMatrix:t.scaleFactor*=Math.hypot(c[0],c[1]);break;case i.OPS.setFont:const[e,o]=c;e instanceof n.Name&&(t.fontName=e.name),"number"==typeof o&&o>0&&(t.fontSize=o*t.scaleFactor);break;case i.OPS.setFillColorSpace:t.fillColorSpace=s.ColorSpace.parse({cs:c[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:this._localColorSpaceCache});break;case i.OPS.setFillColor:t.fillColorSpace.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.showText:case i.OPS.showSpacedText:case i.OPS.nextLineShowText:case i.OPS.nextLineSetSpacingShowText:r=!0}}}catch(e){(0,i.warn)('parseAppearanceStream - ignoring errors: "'.concat(e,'".'))}return this.stream.reset(),delete t.scaleFactor,delete t.fillColorSpace,t}get _localColorSpaceCache(){return(0,i.shadow)(this,"_localColorSpaceCache",new c.LocalColorSpaceCache)}get _pdfFunctionFactory(){const e=new l.PDFFunctionFactory({xref:this.xref,isEvalSupported:this.evaluatorOptions.isEvalSupported});return(0,i.shadow)(this,"_pdfFunctionFactory",e)}}function f(e,t){if(e[0]===e[1]&&e[1]===e[2]){const r=e[0]/255;return"".concat((0,a.numberToString)(r)," ").concat(t?"g":"G")}return Array.from(e,(e=>(0,a.numberToString)(e/255))).join(" ")+" "+(t?"rg":"RG")}class g{constructor(e,t){this.xref=e,this.widths=null,this.firstChar=1/0,this.lastChar=-1/0,this.fontFamily=t;const r=new OffscreenCanvas(1,1);this.ctxMeasure=r.getContext("2d"),g._fontNameId||(g._fontNameId=1),this.fontName=n.Name.get("InvalidPDFjsFont_".concat(t,"_").concat(g._fontNameId++))}get toUnicodeRef(){if(!g._toUnicodeRef){const e="/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",t=g.toUnicodeStream=new h.StringStream(e),r=new n.Dict(this.xref);t.dict=r,r.set("Length",e.length),g._toUnicodeRef=this.xref.getNewPersistentRef(t)}return g._toUnicodeRef}get fontDescriptorRef(){if(!g._fontDescriptorRef){const e=new n.Dict(this.xref);e.set("Type",n.Name.get("FontDescriptor")),e.set("FontName",this.fontName),e.set("FontFamily","MyriadPro Regular"),e.set("FontBBox",[0,0,0,0]),e.set("FontStretch",n.Name.get("Normal")),e.set("FontWeight",400),e.set("ItalicAngle",0),g._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return g._fontDescriptorRef}get descendantFontRef(){const e=new n.Dict(this.xref);e.set("BaseFont",this.fontName),e.set("Type",n.Name.get("Font")),e.set("Subtype",n.Name.get("CIDFontType0")),e.set("CIDToGIDMap",n.Name.get("Identity")),e.set("FirstChar",this.firstChar),e.set("LastChar",this.lastChar),e.set("FontDescriptor",this.fontDescriptorRef),e.set("DW",1e3);const t=[],r=[...this.widths.entries()].sort();let a=null,i=null;for(const[e,n]of r)a?e===a+i.length?i.push(n):(t.push(a,i),a=e,i=[n]):(a=e,i=[n]);a&&t.push(a,i),e.set("W",t);const s=new n.Dict(this.xref);return s.set("Ordering","Identity"),s.set("Registry","Adobe"),s.set("Supplement",0),e.set("CIDSystemInfo",s),this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new n.Dict(this.xref);return e.set("BaseFont",this.fontName),e.set("Type",n.Name.get("Font")),e.set("Subtype",n.Name.get("Type0")),e.set("Encoding",n.Name.get("Identity-H")),e.set("DescendantFonts",[this.descendantFontRef]),e.set("ToUnicode",this.toUnicodeRef),this.xref.getNewPersistentRef(e)}get resources(){const e=new n.Dict(this.xref),t=new n.Dict(this.xref);return t.set(this.fontName.name,this.baseFontRef),e.set("Font",t),e}_createContext(){return this.widths=new Map,this.ctxMeasure.font="1000px ".concat(this.fontFamily),this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const r of e.split(/\\r\\n?|\\n/))for(const e of r.split("")){const r=e.charCodeAt(0);if(this.widths.has(r))continue;const n=t.measureText(e),a=Math.ceil(n.width);this.widths.set(r,a),this.firstChar=Math.min(r,this.firstChar),this.lastChar=Math.max(r,this.lastChar)}return this.resources}createAppearance(e,t,r,s,o,c){const l=this._createContext(),u=[];let d=-1/0;for(const t of e.split(/\\r\\n?|\\n/)){u.push(t);const e=l.measureText(t).width;d=Math.max(d,e);for(const e of t.split("")){const t=e.charCodeAt(0);let r=this.widths.get(t);if(void 0===r){const n=l.measureText(e);r=Math.ceil(n.width),this.widths.set(t,r),this.firstChar=Math.min(t,this.firstChar),this.lastChar=Math.max(t,this.lastChar)}}}d*=s/1e3;const[g,p,m,b]=t;let y=m-g,w=b-p;r%180!=0&&([y,w]=[w,y]);let v=1;d>y&&(v=y/d);let x=1;const S=i.LINE_FACTOR*s,A=i.LINE_DESCENT_FACTOR*s,k=S*u.length;k>w&&(x=w/k);const C=s*Math.min(v,x),O=["q","0 0 ".concat((0,a.numberToString)(y)," ").concat((0,a.numberToString)(w)," re W n"),"BT","1 0 0 1 0 ".concat((0,a.numberToString)(w+A)," Tm 0 Tc ").concat(f(o,!0)),"/".concat(this.fontName.name," ").concat((0,a.numberToString)(C)," Tf")],{resources:F}=this;if(1!==(c="number"==typeof c&&c>=0&&c<=1?c:1)){O.push("/R0 gs");const e=new n.Dict(this.xref),t=new n.Dict(this.xref);t.set("ca",c),t.set("CA",c),t.set("Type",n.Name.get("ExtGState")),e.set("R0",t),F.set("ExtGState",e)}const I=(0,a.numberToString)(S);for(const e of u)O.push("0 -".concat(I," Td <").concat((0,a.stringToUTF16HexString)(e),"> Tj"));O.push("ET","Q");const T=O.join("\\n"),M=new n.Dict(this.xref);if(M.set("Subtype",n.Name.get("Form")),M.set("Type",n.Name.get("XObject")),M.set("BBox",[0,0,y,w]),M.set("Length",T.length),M.set("Resources",F),r){const e=(0,a.getRotationMatrix)(r,y,w);M.set("Matrix",e)}const E=new h.StringStream(T);return E.dict=M,E}}t.FakeUnicodeFont=g},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorSpace=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144),a=r(150),i=r(151),s=r(149);class o{constructor(e,t){this.constructor===o&&(0,n.unreachable)("Cannot initialize ColorSpace."),this.name=e,this.numComps=t}getRgb(e,t){const r=new Uint8ClampedArray(3);return this.getRgbItem(e,t,r,0),r}getRgbItem(e,t,r,a){(0,n.unreachable)("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,r,a,i,s,o){(0,n.unreachable)("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){(0,n.unreachable)("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return o.isDefaultDecode(e,this.numComps)}fillRgb(e,t,r,n,a,i,s,o,c){const l=t*r;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e2&&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 l(null);default:if(r instanceof a.Dict){const n=r.get("ColorSpace");if(n instanceof a.Dict){const s=n.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)){const a=t.fetchIfRef(e[0]).name;let s,o,u,d,f,b;switch(a){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 s=t.fetchIfRef(e[1]),d=s.getArray("WhitePoint"),f=s.getArray("BlackPoint"),b=s.get("Gamma"),new g(d,f,b);case"CalRGB":s=t.fetchIfRef(e[1]),d=s.getArray("WhitePoint"),f=s.getArray("BlackPoint"),b=s.getArray("Gamma");const y=s.getArray("Matrix");return new p(d,f,b,y);case"ICCBased":const w=t.fetchIfRef(e[1]).dict;o=w.get("N");const v=w.get("Alternate");if(v){const e=this._parse(v,t,r,i);if(e.numComps===o)return e;(0,n.warn)("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(1===o)return this.singletons.gray;if(3===o)return this.singletons.rgb;if(4===o)return this.singletons.cmyk;break;case"Pattern":return u=e[1]||null,u&&(u=this._parse(u,t,r,i)),new l(u);case"I":case"Indexed":u=this._parse(e[1],t,r,i);const x=t.fetchIfRef(e[2])+1,S=t.fetchIfRef(e[3]);return new h(u,x,S);case"Separation":case"DeviceN":const A=t.fetchIfRef(e[1]);o=Array.isArray(A)?A.length:1,u=this._parse(e[2],t,r,i);const k=i.create(e[3]);return new c(o,u,k);case"Lab":s=t.fetchIfRef(e[1]),d=s.getArray("WhitePoint"),f=s.getArray("BlackPoint");const C=s.getArray("Range");return new m(d,f,C);default:throw new n.FormatError("Unimplemented ColorSpace object: ".concat(a))}}throw new n.FormatError("Unrecognized ColorSpace object: ".concat(e))}static isDefaultDecode(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(let t=0,r=e.length;t=.99554525?1:d(0,1,1.055*e**(1/2.4)-.055)}function d(e,t,r){return Math.max(e,Math.min(t,r))}function f(e){return e<0?-f(-e):e>8?((e+16)/116)**3:e*l}function g(n,o,l,g,p,m){const b=d(0,1,o[l]*m),y=d(0,1,o[l+1]*m),w=d(0,1,o[l+2]*m),v=1===b?1:b**n.GR,x=1===y?1:y**n.GG,S=1===w?1:w**n.GB,A=n.MXA*v+n.MXB*x+n.MXC*S,k=n.MYA*v+n.MYB*x+n.MYC*S,C=n.MZA*v+n.MZB*x+n.MZC*S,O=s;O[0]=A,O[1]=k,O[2]=C;const 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]);const s=a;h(e,n,s);const o=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,s,o),h(t,o,a)}(n.whitePoint,O,F);const I=s;!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]);const n=f(0),a=(1-n)/(1-f(e[0])),i=1-a,s=(1-n)/(1-f(e[1])),o=1-s,c=(1-n)/(1-f(e[2])),l=1-c;r[0]=t[0]*a+i,r[1]=t[1]*s+o,r[2]=t[2]*c+l}(n.blackPoint,F,I);const T=c;!function(r,n,a){const s=a;h(e,n,s);const o=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,s,o),h(t,o,a)}(a,I,T);const M=s;h(r,T,M),g[p]=255*u(M[0]),g[p+1]=255*u(M[1]),g[p+2]=255*u(M[2])}return class extends o{constructor(e,t,r,a){if(super("CalRGB",3),!e)throw new n.FormatError("WhitePoint missing - required for color space CalRGB");t||(t=new Float32Array(3)),r||(r=new Float32Array([1,1,1])),a||(a=new Float32Array([1,0,0,0,1,0,0,0,1]));const i=e[0],s=e[1],o=e[2];this.whitePoint=e;const c=t[0],l=t[1],h=t[2];if(this.blackPoint=t,this.GR=r[0],this.GG=r[1],this.GB=r[2],this.MXA=a[0],this.MYA=a[1],this.MZA=a[2],this.MXB=a[3],this.MYB=a[4],this.MZB=a[5],this.MXC=a[6],this.MYC=a[7],this.MZC=a[8],i<0||o<0||1!==s)throw new n.FormatError("Invalid WhitePoint components for ".concat(this.name,", no fallback available"));(c<0||l<0||h<0)&&((0,n.info)("Invalid BlackPoint for ".concat(this.name," [").concat(c,", ").concat(l,", ").concat(h,"], falling back to default.")),this.blackPoint=new Float32Array(3)),(this.GR<0||this.GG<0||this.GB<0)&&((0,n.info)("Invalid Gamma [".concat(this.GR,", ").concat(this.GG,", ").concat(this.GB,"] for ").concat(this.name,", falling back to default.")),this.GR=this.GG=this.GB=1)}getRgbItem(e,t,r,n){g(this,e,t,r,n,1)}getRgbBuffer(e,t,r,n,a,i,s){const o=1/((1<=6/29?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,s,o){let c=n[a],l=n[a+1],h=n[a+2];!1!==i&&(c=t(c,i,0,100),l=t(l,i,r.amin,r.amax),h=t(h,i,r.bmin,r.bmax)),l>r.amax?l=r.amax:lr.bmax?h=r.bmax:hthis.amax||this.bmin>this.bmax)&&((0,n.info)("Invalid Range, falling back to defaults"),this.amin=-100,this.amax=100,this.bmin=-100,this.bmax=100)}getRgbItem(e,t,n,a){r(this,e,t,!1,n,a)}getRgbBuffer(e,t,n,a,i,s,o){const c=(1<{Object.defineProperty(t,"__esModule",{value:!0}),t.PartialEvaluator=t.EvaluatorPreprocessor=void 0,r(139),r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(157),r(159);var n=r(144),a=r(164),s=r(150),o=r(184),c=r(187),l=r(191),h=r(200),u=r(201),d=r(192),f=r(207),g=r(166),p=r(209),m=r(154),b=r(151),y=r(210),w=r(162),v=r(168),x=r(188),S=r(211),A=r(189),k=r(149),C=r(195),O=r(190),F=r(212),I=r(213),T=r(214),M=r(215);const E=Object.freeze({maxImageSize:-1,disableFontFace:!1,ignoreErrors:!1,isEvalSupported:!0,isOffscreenCanvasSupported:!1,canvasMaxAreaInBytes:-1,fontExtraProperties:!1,useSystemFonts:!0,cMapUrl:null,standardFontDataUrl:null}),P=Promise.resolve();function R(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Array.isArray(e)){for(const t of e){const e=R(t,!0);if(e)return e}return(0,n.warn)("Unsupported blend mode Array: ".concat(e)),"source-over"}if(!(e instanceof s.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,n.warn)("Unsupported blend mode: ".concat(e.name)),"source-over")}function N(e){var t;e.fn===n.OPS.paintImageMaskXObject&&(null===(t=e.args[0])||void 0===t?void 0:t.count)>0&&e.args[0].count++}class D{constructor(){this.reset()}check(){return!(++this.checked0&&void 0!==arguments[0]?arguments[0]:null;const t=Object.create(this);return t.options=Object.assign(Object.create(null),this.options,e),t}hasBlendModes(e,t){if(!(e instanceof s.Dict))return!1;if(e.objId&&t.has(e.objId))return!1;const r=new s.RefSet(t);e.objId&&r.put(e.objId);const a=[e],i=this.xref;for(;a.length;){const e=a.shift(),o=e.get("ExtGState");if(o instanceof s.Dict)for(let e of o.getRawValues()){if(e instanceof s.Ref){if(r.has(e))continue;try{e=i.fetch(e)}catch(t){r.put(e),(0,n.info)('hasBlendModes - ignoring ExtGState: "'.concat(t,'".'));continue}}if(!(e instanceof s.Dict))continue;e.objId&&r.put(e.objId);const a=e.get("BM");if(a instanceof s.Name){if("Normal"!==a.name)return!0}else if(void 0!==a&&Array.isArray(a))for(const e of a)if(e instanceof s.Name&&"Normal"!==e.name)return!0}const c=e.get("XObject");if(c instanceof s.Dict)for(let e of c.getRawValues()){if(e instanceof s.Ref){if(r.has(e))continue;try{e=i.fetch(e)}catch(t){r.put(e),(0,n.info)('hasBlendModes - ignoring XObject: "'.concat(t,'".'));continue}}if(!(e instanceof b.BaseStream))continue;e.dict.objId&&r.put(e.dict.objId);const o=e.dict.get("Resources");!(o instanceof s.Dict)||o.objId&&r.has(o.objId)||(a.push(o),o.objId&&r.put(o.objId))}}for(const e of r)t.put(e);return!1}async fetchBuiltInCMap(e){const t=this.builtInCMapCache.get(e);if(t)return t;let r;if(null!==this.options.cMapUrl){const t="".concat(this.options.cMapUrl).concat(e,".bcmap"),a=await fetch(t);if(!a.ok)throw new Error('fetchBuiltInCMap: failed to fetch file "'.concat(t,'" with "').concat(a.statusText,'".'));r={cMapData:new Uint8Array(await a.arrayBuffer()),compressionType:n.CMapCompressionType.BINARY}}else r=await this.handler.sendWithPromise("FetchBuiltInCMap",{name:e});return r.compressionType!==n.CMapCompressionType.NONE&&this.builtInCMapCache.set(e,r),r}async fetchStandardFontData(e){const t=this.standardFontDataCache.get(e);if(t)return new m.Stream(t);if(this.options.useSystemFonts&&"Symbol"!==e&&"ZapfDingbats"!==e)return null;const r=(0,l.getFontNameToFileMap)()[e];let a;if(null!==this.options.standardFontDataUrl){const e="".concat(this.options.standardFontDataUrl).concat(r),t=await fetch(e);t.ok?a=await t.arrayBuffer():(0,n.warn)('fetchStandardFontData: failed to fetch file "'.concat(e,'" with "').concat(t.statusText,'".'))}else try{a=await this.handler.sendWithPromise("FetchStandardFontData",{filename:r})}catch(e){(0,n.warn)('fetchStandardFontData: failed to fetch file "'.concat(r,'" with "').concat(e,'".'))}return a?(this.standardFontDataCache.set(e,a),new m.Stream(a)):null}async buildFormXObject(e,t,r,a,i,o,c){const l=t.dict,h=l.getArray("Matrix");let u,d,f=l.getArray("BBox");f=Array.isArray(f)&&4===f.length?n.Util.normalizeRect(f):null,l.has("OC")&&(u=await this.parseMarkedContentProps(l.get("OC"),e)),void 0!==u&&a.addOp(n.OPS.beginMarkedContentProps,["OC",u]);const g=l.get("Group");if(g){d={matrix:h,bbox:f,smask:r,isolated:!1,knockout:!1};const t=g.get("S");let i=null;if((0,s.isName)(t,"Transparency")&&(d.isolated=g.get("I")||!1,d.knockout=g.get("K")||!1,g.has("CS"))){const t=g.getRaw("CS");i=w.ColorSpace.getCached(t,this.xref,c)||await this.parseColorSpace({cs:t,resources:e,localColorSpaceCache:c})}null!=r&&r.backdrop&&(i||(i=w.ColorSpace.singletons.rgb),r.backdrop=i.getRgb(r.backdrop,0)),a.addOp(n.OPS.beginGroup,[d])}const p=g?[h,null]:[h,f];return a.addOp(n.OPS.paintFormXObjectBegin,p),this.getOperatorList({stream:t,task:i,resources:l.get("Resources")||e,operatorList:a,initialState:o}).then((function(){a.addOp(n.OPS.paintFormXObjectEnd,[]),g&&a.addOp(n.OPS.endGroup,[d]),void 0!==u&&a.addOp(n.OPS.endMarkedContent,[])}))}_sendImgData(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const 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)}async buildPaintImageXObject(e){let{resources:t,image:r,isInline:a=!1,operatorList:i,cacheKey:s,localImageCache:o,localColorSpaceCache:c}=e;const l=r.dict,h=l.objId,u=l.get("W","Width"),d=l.get("H","Height");if(!u||"number"!=typeof u||!d||"number"!=typeof d)return void(0,n.warn)("Image dimensions are missing, or not numbers.");const f=this.options.maxImageSize;if(-1!==f&&u*d>f){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors)return void(0,n.warn)(e);throw new Error(e)}let g,p,m;if(l.has("OC")&&(g=await this.parseMarkedContentProps(l.get("OC"),t)),l.get("IM","ImageMask")){const e=l.get("I","Interpolate"),t=u+7>>3,a=r.getBytes(t*d),c=l.getArray("D","Decode");if(this.parsingType3Font){if(p=M.PDFImage.createRawMask({imgArray:a,width:u,height:d,imageIsFromDecodeStream:r instanceof v.DecodeStream,inverseDecode:(null==c?void 0:c[0])>0,interpolate:e}),p.cached=!!s,m=[p],i.addImageOps(n.OPS.paintImageMaskXObject,m,g),s){const e={fn:n.OPS.paintImageMaskXObject,args:m,optionalContent:g};o.set(s,h,e),h&&this._regionalImageCache.set(null,h,e)}return}if(p=await M.PDFImage.createMask({imgArray:a,width:u,height:d,imageIsFromDecodeStream:r instanceof v.DecodeStream,inverseDecode:(null==c?void 0:c[0])>0,interpolate:e,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported}),p.isSingleOpaquePixel){if(i.addImageOps(n.OPS.paintSolidColorImageMask,[],g),s){const e={fn:n.OPS.paintSolidColorImageMask,args:[],optionalContent:g};o.set(s,h,e),h&&this._regionalImageCache.set(null,h,e)}return}const f="mask_".concat(this.idFactory.createObjId());if(i.addDependency(f),this._sendImgData(f,p),m=[{data:f,width:p.width,height:p.height,interpolate:p.interpolate,count:1}],i.addImageOps(n.OPS.paintImageMaskXObject,m,g),s){const e={fn:n.OPS.paintImageMaskXObject,args:m,optionalContent:g};o.set(s,h,e),h&&this._regionalImageCache.set(null,h,e)}return}if(a&&!l.has("SMask")&&!l.has("Mask")&&u+d<200){const e=new M.PDFImage({xref:this.xref,res:t,image:r,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:c});return p=await e.createImageData(!0,!1),i.isOffscreenCanvasSupported=this.options.isOffscreenCanvasSupported,void i.addImageOps(n.OPS.paintInlineImageXObject,[p],g)}let b="img_".concat(this.idFactory.createObjId()),y=!1;if(this.parsingType3Font?b="".concat(this.idFactory.getDocId(),"_type3_").concat(b):h&&(y=this.globalImageCache.shouldCache(h,this.pageIndex),y&&(b="".concat(this.idFactory.getDocId(),"_").concat(b))),i.addDependency(b),m=[b,u,d],M.PDFImage.buildImage({xref:this.xref,res:t,image:r,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:c}).then((async e=>{if(p=await e.createImageData(!1,this.options.isOffscreenCanvasSupported),s&&h&&y){const e=p.bitmap?p.width*p.height*4:p.data.length;this.globalImageCache.addByteSize(h,e)}return this._sendImgData(b,p,y)})).catch((e=>((0,n.warn)('Unable to decode image "'.concat(b,'": "').concat(e,'".')),this._sendImgData(b,null,y)))),i.addImageOps(n.OPS.paintImageXObject,m,g),s){const e={fn:n.OPS.paintImageXObject,args:m,optionalContent:g};o.set(s,h,e),h&&(this._regionalImageCache.set(null,h,e),y&&((0,n.assert)(!a,"Cannot cache an inline image globally."),this.globalImageCache.setData(h,{objId:b,fn:n.OPS.paintImageXObject,args:m,optionalContent:g,byteSize:0})))}}handleSMask(e,t,r,n,a,i){const s=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if((0,f.isPDFFunction)(c)){const e=this._pdfFunctionFactory.create(c),t=new Uint8Array(256),r=new Float32Array(1);for(let n=0;n<256;n++)r[0]=n/255,e(r,0,r,0),t[n]=255*r[0]|0;o.transferMap=t}return this.buildFormXObject(t,s,o,r,n,a.state.clone(),i)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!(0,f.isPDFFunction)(e))return null;t=[e]}const r=[];let n=0,a=0;for(const e of t){const t=this.xref.fetchIfRef(e);if(n++,(0,s.isName)(t,"Identity")){r.push(null);continue}if(!(0,f.isPDFFunction)(t))return null;const i=this._pdfFunctionFactory.create(t),o=new Uint8Array(256),c=new Float32Array(1);for(let e=0;e<256;e++)c[0]=e/255,i(c,0,c,0),o[e]=255*c[0]|0;r.push(o),a++}return 1!==n&&4!==n||0===a?null:r}handleTilingType(e,t,r,a,i,o,c,l){const u=new T.OperatorList,d=s.Dict.merge({xref:this.xref,dictArray:[i.get("Resources"),r]});return this.getOperatorList({stream:a,task:c,resources:d,operatorList:u}).then((function(){const r=u.getIR(),n=(0,h.getTilingPatternIR)(r,i,t);o.addDependencies(u.dependencies),o.addOp(e,n),i.objId&&l.set(null,i.objId,{operatorListIR:r,dict:i})})).catch((e=>{if(!(e instanceof n.AbortException)){if(!this.options.ignoreErrors)throw e;(0,n.warn)('handleTilingType - ignoring pattern: "'.concat(e,'".'))}}))}handleSetFont(e,t,r,n,a,i){let c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null;const h=(null==t?void 0:t[0])instanceof s.Name?t[0].name:null;return this.loadFont(h,r,e,c,l).then((t=>t.font.isType3Font?t.loadType3Data(this,e,a).then((function(){return n.addDependencies(t.type3Dependencies),t})).catch((e=>new L({loadedName:"g_font_error",font:new o.ErrorFont("Type3 font load error: ".concat(e)),dict:t.font,evaluatorOptions:this.options}))):t)).then((e=>(i.font=e.font,e.send(this.handler),e.loadedName)))}handleText(e,t){const r=t.font,a=r.charsToGlyphs(e);return r.data&&(t.textRenderingMode&n.TextRenderingMode.ADD_TO_PATH_FLAG||"Pattern"===t.fillColorSpace.name||r.disableFontFace||this.options.disableFontFace)&&B.buildFontPaths(r,a,this.handler,this.options),a}ensureStateFont(e){if(e.font)return;const t=new n.FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;(0,n.warn)('ensureStateFont: "'.concat(t,'".'))}async setGState(e){let{resources:t,gState:r,operatorList:a,cacheKey:i,task:o,stateManager:c,localGStateCache:l,localColorSpaceCache:h}=e;const u=r.objId;let d=!0;const f=[];let g=Promise.resolve();for(const e of r.getKeys()){const i=r.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":f.push([e,i]);break;case"Font":d=!1,g=g.then((()=>this.handleSetFont(t,null,i[0],a,o,c.state).then((function(t){a.addDependency(t),f.push([e,[t,i[1]]])}))));break;case"BM":f.push([e,R(i)]);break;case"SMask":if((0,s.isName)(i,"None")){f.push([e,!1]);break}i instanceof s.Dict?(d=!1,g=g.then((()=>this.handleSMask(i,t,a,o,c,h))),f.push([e,!0])):(0,n.warn)("Unsupported SMask type");break;case"TR":const r=this.handleTransferFunction(i);f.push([e,r]);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,n.info)("graphic state operator "+e);break;default:(0,n.info)("Unknown graphic state operator "+e)}}return g.then((function(){f.length>0&&a.addOp(n.OPS.setGState,[f]),d&&l.set(i,u,f)}))}loadFont(e,t,r){var a;let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;const l=async()=>new L({loadedName:"g_font_error",font:new o.ErrorFont('Font "'.concat(e,'" is not available.')),dict:t,evaluatorOptions:this.options});let h;if(t)t instanceof s.Ref&&(h=t);else{const t=r.get("Font");t&&(h=t.getRaw(e))}if(h){if(this.parsingType3Font&&this.type3FontRefs.has(h))return l();if(this.fontCache.has(h))return this.fontCache.get(h);t=this.xref.fetchIfRef(h)}if(!(t instanceof s.Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font)return(0,n.warn)('Font "'.concat(e,'" is not available.')),l();(0,n.warn)('Font "'.concat(e,'" is not available -- attempting to fallback to a default font.')),t=i||B.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const u=new n.PromiseCapability;let d;try{d=this.preEvaluateFont(t),d.cssFontInfo=c}catch(e){return(0,n.warn)('loadFont - preEvaluateFont failed: "'.concat(e,'".')),l()}const{descriptor:f,hash:g}=d,p=h instanceof s.Ref;let m;if(g&&f instanceof s.Dict){const e=f.fontAliases||(f.fontAliases=Object.create(null));if(e[g]){const t=e[g].aliasRef;if(p&&t&&this.fontCache.has(t))return this.fontCache.putAlias(h,t),this.fontCache.get(h)}else e[g]={fontID:this.idFactory.createFontId()};p&&(e[g].aliasRef=h),m=e[g].fontID}else m=this.idFactory.createFontId();return(0,n.assert)(null===(a=m)||void 0===a?void 0:a.startsWith("f"),'The "fontID" must be (correctly) defined.'),p?this.fontCache.put(h,u.promise):(t.cacheKey="cacheKey_".concat(m),this.fontCache.put(t.cacheKey,u.promise)),t.loadedName="".concat(this.idFactory.getDocId(),"_").concat(m),this.translateFont(d).then((e=>{u.resolve(new L({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{(0,n.warn)('loadFont - translateFont failed: "'.concat(e,'".')),u.resolve(new L({loadedName:t.loadedName,font:new o.ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))})),u.promise}buildPath(e,t,r){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const i=e.length-1;if(r||(r=[]),i<0||e.fnArray[i]!==n.OPS.constructPath){let i;switch(a&&((0,n.warn)('Encountered path operator "'.concat(t,'" inside of a text object.')),e.addOp(n.OPS.save,null)),t){case n.OPS.rectangle:const e=r[0]+r[2],t=r[1]+r[3];i=[Math.min(r[0],e),Math.max(r[0],e),Math.min(r[1],t),Math.max(r[1],t)];break;case n.OPS.moveTo:case n.OPS.lineTo:i=[r[0],r[0],r[1],r[1]];break;default:i=[1/0,-1/0,1/0,-1/0]}e.addOp(n.OPS.constructPath,[[t],r,i]),a&&e.addOp(n.OPS.restore,null)}else{const a=e.argsArray[i];a[0].push(t),a[1].push(...r);const s=a[2];switch(t){case n.OPS.rectangle:const e=r[0]+r[2],t=r[1]+r[3];s[0]=Math.min(s[0],r[0],e),s[1]=Math.max(s[1],r[0],e),s[2]=Math.min(s[2],r[1],t),s[3]=Math.max(s[3],r[1],t);break;case n.OPS.moveTo:case n.OPS.lineTo:s[0]=Math.min(s[0],r[0]),s[1]=Math.max(s[1],r[0]),s[2]=Math.min(s[2],r[1]),s[3]=Math.max(s[3],r[1])}}}parseColorSpace(e){let{cs:t,resources:r,localColorSpaceCache:a}=e;return w.ColorSpace.parseAsync({cs:t,xref:this.xref,resources:r,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:a}).catch((e=>{if(e instanceof n.AbortException)return null;if(this.options.ignoreErrors)return(0,n.warn)('parseColorSpace - ignoring ColorSpace: "'.concat(e,'".')),null;throw e}))}parseShading(e){let{shading:t,resources:r,localColorSpaceCache:n,localShadingPatternCache:a}=e,i=a.get(t);if(!i){const e=h.Pattern.parseShading(t,this.xref,r,this._pdfFunctionFactory,n).getIR();i="pattern_".concat(this.idFactory.createObjId()),this.parsingType3Font&&(i="".concat(this.idFactory.getDocId(),"_type3_").concat(i)),a.set(t,i),this.parsingType3Font?this.handler.send("commonobj",[i,"Pattern",e]):this.handler.send("obj",[i,this.pageIndex,"Pattern",e])}return i}handleColorN(e,t,r,a,i,o,c,l,u,d){const f=r.pop();if(f instanceof s.Name){const g=i.getRaw(f.name),p=g instanceof s.Ref&&u.getByRef(g);if(p)try{const n=a.base?a.base.getRgb(r,0):null,i=(0,h.getTilingPatternIR)(p.operatorListIR,p.dict,n);return void e.addOp(t,i)}catch(e){}const m=this.xref.fetchIfRef(g);if(m){const i=m instanceof b.BaseStream?m.dict:m,s=i.get("PatternType");if(1===s){const n=a.base?a.base.getRgb(r,0):null;return this.handleTilingType(t,n,o,m,i,e,c,u)}if(2===s){const r=i.get("Shading"),n=i.getArray("Matrix"),a=this.parseShading({shading:r,resources:o,localColorSpaceCache:l,localShadingPatternCache:d});return void e.addOp(t,["Shading",a,n])}throw new n.FormatError("Unknown PatternType: ".concat(s))}}throw new n.FormatError("Unknown PatternName: ".concat(f))}_parseVisibilityExpression(e,t,r){if(++t>10)return void(0,n.warn)("Visibility expression is too deeply nested");const a=e.length,i=this.xref.fetchIfRef(e[0]);if(!(a<2)&&i instanceof s.Name){switch(i.name){case"And":case"Or":case"Not":r.push(i.name);break;default:return void(0,n.warn)("Invalid operator ".concat(i.name," in visibility expression"))}for(let n=1;n0)return{type:"OCMD",expression:t}}const t=r.get("OCGs");if(Array.isArray(t)||t instanceof s.Dict){const e=[];if(Array.isArray(t))for(const r of t)e.push(r.toString());else e.push(t.objId);return{type:a,ids:e,policy:r.get("P")instanceof s.Name?r.get("P").name:null,expression:null}}if(t instanceof s.Ref)return{type:a,id:t.toString()}}return null}getOperatorList(e){let{stream:t,task:r,resources:a,operatorList:i,initialState:o=null,fallbackFontDict:c=null}=e;if(a||(a=s.Dict.empty),o||(o=new U),!i)throw new Error('getOperatorList: missing "operatorList" parameter');const l=this,h=this.xref;let u=!1;const d=new p.LocalImageCache,f=new p.LocalColorSpaceCache,g=new p.LocalGStateCache,m=new p.LocalTilingPatternCache,y=new Map,v=a.get("XObject")||s.Dict.empty,x=a.get("Pattern")||s.Dict.empty,S=new _(o),A=new $(t,h,S),k=new D;function C(e){for(let e=0,t=A.savedStatesDepth;e0&&i.addOp(n.OPS.setGState,[t]),e=null;continue}}return void p(new Promise((function(e,t){if(!R)throw new n.FormatError("GState must be referred to by name.");const o=a.get("ExtGState");if(!(o instanceof s.Dict))throw new n.FormatError("ExtGState should be a dictionary.");const c=o.get(E);if(!(c instanceof s.Dict))throw new n.FormatError("GState should be a dictionary.");l.setGState({resources:a,gState:c,operatorList:i,cacheKey:E,task:r,stateManager:S,localGStateCache:g,localColorSpaceCache:f}).then(e,t)})).catch((function(e){if(!(e instanceof n.AbortException)){if(!l.options.ignoreErrors)throw e;(0,n.warn)('getOperatorList - ignoring ExtGState: "'.concat(e,'".'))}})));case n.OPS.moveTo:case n.OPS.lineTo:case n.OPS.curveTo:case n.OPS.curveTo2:case n.OPS.curveTo3:case n.OPS.closePath:case n.OPS.rectangle:l.buildPath(i,t,e,u);continue;case n.OPS.markPoint:case n.OPS.markPointProps:case n.OPS.beginCompat:case n.OPS.endCompat:continue;case n.OPS.beginMarkedContentProps:if(!(e[0]instanceof s.Name)){(0,n.warn)("Expected name for beginMarkedContentProps arg0=".concat(e[0]));continue}if("OC"===e[0].name)return void p(l.parseMarkedContentProps(e[1],a).then((e=>{i.addOp(n.OPS.beginMarkedContentProps,["OC",e])})).catch((e=>{if(!(e instanceof n.AbortException)){if(!l.options.ignoreErrors)throw e;(0,n.warn)('getOperatorList - ignoring beginMarkedContentProps: "'.concat(e,'".'))}})));e=[e[0].name,e[1]instanceof s.Dict?e[1].get("MCID"):null];break;case n.OPS.beginMarkedContent:case n.OPS.endMarkedContent:default:if(null!==e){for(I=0,T=e.length;I{if(!(e instanceof n.AbortException)){if(!this.options.ignoreErrors)throw e;(0,n.warn)('getOperatorList - ignoring errors during "'.concat(r.name,'" task: "').concat(e,'".')),C()}}))}getTextContent(e){let{stream:t,task:r,resources:a,stateManager:i=null,includeMarkedContent:o=!1,sink:c,seenStyles:l=new Set,viewBox:h,markedContentData:u=null,disableNormalization:d=!1}=e;a||(a=s.Dict.empty),i||(i=new _(new j)),o&&(u||(u={level:0}));const f={items:[],styles:Object.create(null)},g={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},m=[" "," "];let w=0;function v(e){const t=(w+1)%2,r=" "!==m[w]&&" "===m[t];return m[w]=e,w=t,r}function x(){return" "!==m[w]&&" "===m[(w+1)%2]}function S(){m[0]=m[1]=" ",w=0}const A=this,k=this.xref,C=[];let O=null;const F=new p.LocalImageCache,I=new p.LocalGStateCache,T=new $(t,k,i);let M;function E(e){let{width:t=0,height:r=0,transform:n=g.prevTransform,fontName:a=g.fontName}=e;f.items.push({str:" ",dir:"ltr",width:t,height:r,transform:n,fontName:a,hasEOL:!1})}function R(){const e=M.font,t=[M.fontSize*M.textHScale,0,0,M.fontSize,0,M.textRise];if(e.isType3Font&&(M.fontSize<=1||e.isCharBBox)&&!(0,n.isArrayEqual)(M.fontMatrix,n.FONT_IDENTITY_MATRIX)){const r=e.bbox[3]-e.bbox[1];r>0&&(t[3]*=r*M.fontMatrix[3])}return n.Util.transform(M.ctm,n.Util.transform(M.textMatrix,t))}function N(){if(g.initialized)return g;const{font:e,loadedName:t}=M;l.has(t)||(l.add(t),f.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical}),g.fontName=t;const r=g.transform=R();e.vertical?(g.width=g.totalWidth=Math.hypot(r[0],r[1]),g.height=g.totalHeight=0,g.vertical=!0):(g.width=g.totalWidth=0,g.height=g.totalHeight=Math.hypot(r[2],r[3]),g.vertical=!1);const n=Math.hypot(M.textLineMatrix[0],M.textLineMatrix[1]),a=Math.hypot(M.ctm[0],M.ctm[1]);g.textAdvanceScale=a*n;const{fontSize:i}=M;return g.trackingSpaceMin=.102*i,g.notASpace=.03*i,g.negativeSpaceMax=-.2*i,g.spaceInFlowMin=.102*i,g.spaceInFlowMax=.6*i,g.hasEOL=!1,g.initialized=!0,g}function B(){if(!g.initialized)return;const e=Math.hypot(M.textLineMatrix[0],M.textLineMatrix[1]),t=Math.hypot(M.ctm[0],M.ctm[1])*e;t!==g.textAdvanceScale&&(g.vertical?(g.totalHeight+=g.height*g.textAdvanceScale,g.height=0):(g.totalWidth+=g.width*g.textAdvanceScale,g.width=0),g.textAdvanceScale=t)}function L(e,t){return A.loadFont(e,t,a).then((function(e){return e.font.isType3Font?e.loadType3Data(A,a,r).catch((function(){})).then((function(){return e})):e})).then((function(e){M.loadedName=e.loadedName,M.font=e.font,M.fontMatrix=e.font.fontMatrix||n.FONT_IDENTITY_MATRIX}))}function U(e,t,r){const n=Math.hypot(r[0],r[1]);return[(r[0]*e+r[1]*t)/n,(r[2]*e+r[3]*t)/n]}function X(e){var t;const r=R();let n=r[4],a=r[5];if(null!==(t=M.font)&&void 0!==t&&t.vertical){if(nh[2]||a+eh[3])return!1}else if(n+eh[2]||ah[3])return!1;if(!M.font||!g.prevTransform)return!0;let i=g.prevTransform[4],s=g.prevTransform[5];if(i===n&&s===a)return!0;let o=-1;switch(r[0]&&0===r[1]&&0===r[2]?o=r[0]>0?0:180:r[1]&&0===r[0]&&0===r[3]&&(o=r[1]>0?90:270),o){case 0:break;case 90:[n,a]=[a,n],[i,s]=[s,i];break;case 180:[n,a,i,s]=[-n,-a,-i,-s];break;case 270:[n,a]=[-a,-n],[i,s]=[-s,-i];break;default:[n,a]=U(n,a,r),[i,s]=U(i,s,g.prevTransform)}if(M.font.vertical){const e=(s-a)/g.textAdvanceScale,t=n-i,r=Math.sign(g.height);return e.5*g.width?(q(),!0):(S(),G(),!0):Math.abs(t)>g.width?(q(),!0):(e<=r*g.notASpace&&S(),e<=r*g.trackingSpaceMin?x()?(S(),G(),E({height:Math.abs(e)})):g.height+=e:z(e,g.prevTransform,r)||(0===g.str.length?(S(),E({height:Math.abs(e)})):g.height+=e),Math.abs(t)>.25*g.width&&G(),!0)}const c=(n-i)/g.textAdvanceScale,l=a-s,u=Math.sign(g.width);return c.5*g.height?(q(),!0):(S(),G(),!0):Math.abs(l)>g.height?(q(),!0):(c<=u*g.notASpace&&S(),c<=u*g.trackingSpaceMin?x()?(S(),G(),E({width:Math.abs(c)})):g.width+=c:z(c,g.prevTransform,u)||(0===g.str.length?(S(),E({width:Math.abs(c)})):g.width+=c),Math.abs(l)>.25*g.height&&G(),!0)}function H(e){let{chars:t,extraSpacing:r}=e;const n=M.font;if(!t){const e=M.charSpacing+r;return void(e&&(n.vertical?M.translateTextMatrix(0,-e):M.translateTextMatrix(e*M.textHScale,0)))}const a=n.charsToGlyphs(t),i=M.fontMatrix[0]*M.fontSize;for(let e=0,t=a.length;e0&&void 0!==arguments[0]&&arguments[0];const t=f.items.length;0===t||e&&t<10||(c.enqueue(f,t),f.items=[],f.styles=Object.create(null))}const V=new D;return new Promise((function e(t,g){const p=function(r){W(!0),Promise.all([r,c.ready]).then((function(){try{e(t,g)}catch(e){g(e)}}),g)};r.ensureNotTerminated(),V.reset();const m={};let y,w=[];for(;!(y=V.check())&&(w.length=0,m.args=w,T.read(m));){const e=M;M=i.state;const t=m.fn;switch(w=m.args,0|t){case n.OPS.setFont:var v=w[0].name,x=w[1];if(M.font&&v===M.fontName&&x===M.fontSize)break;return G(),M.fontName=v,M.fontSize=x,void p(L(v,null));case n.OPS.setTextRise:M.textRise=w[0];break;case n.OPS.setHScale:M.textHScale=w[0]/100;break;case n.OPS.setLeading:M.leading=w[0];break;case n.OPS.moveText:M.translateTextLineMatrix(w[0],w[1]),M.textMatrix=M.textLineMatrix.slice();break;case n.OPS.setLeadingMoveText:M.leading=-w[1],M.translateTextLineMatrix(w[0],w[1]),M.textMatrix=M.textLineMatrix.slice();break;case n.OPS.nextLine:M.carriageReturn();break;case n.OPS.setTextMatrix:M.setTextMatrix(w[0],w[1],w[2],w[3],w[4],w[5]),M.setTextLineMatrix(w[0],w[1],w[2],w[3],w[4],w[5]),B();break;case n.OPS.setCharSpacing:M.charSpacing=w[0];break;case n.OPS.setWordSpacing:M.wordSpacing=w[0];break;case n.OPS.beginText:M.textMatrix=n.IDENTITY_MATRIX.slice(),M.textLineMatrix=n.IDENTITY_MATRIX.slice();break;case n.OPS.showSpacedText:if(!i.state.font){A.ensureStateFont(i.state);continue}const t=(M.font.vertical?1:-1)*M.fontSize/1e3,g=w[0];for(let e=0,r=g.length;e0){const e=C.join("");C.length=0,H({chars:e,extraSpacing:0})}break;case n.OPS.showText:if(!i.state.font){A.ensureStateFont(i.state);continue}H({chars:w[0],extraSpacing:0});break;case n.OPS.nextLineShowText:if(!i.state.font){A.ensureStateFont(i.state);continue}M.carriageReturn(),H({chars:w[0],extraSpacing:0});break;case n.OPS.nextLineSetSpacingShowText:if(!i.state.font){A.ensureStateFont(i.state);continue}M.wordSpacing=w[0],M.charSpacing=w[1],M.carriageReturn(),H({chars:w[2],extraSpacing:0});break;case n.OPS.paintXObject:G(),O||(O=a.get("XObject")||s.Dict.empty);var S=w[0]instanceof s.Name,E=w[0].name;if(S&&F.getByName(E))break;return void p(new Promise((function(e,t){if(!S)throw new n.FormatError("XObject must be referred to by name.");let f=O.getRaw(E);if(f instanceof s.Ref){if(F.getByRef(f))return void e();if(A.globalImageCache.getData(f,A.pageIndex))return void e();f=k.fetch(f)}if(!(f instanceof b.BaseStream))throw new n.FormatError("XObject should be a stream");const g=f.dict.get("Subtype");if(!(g instanceof s.Name))throw new n.FormatError("XObject should have a Name subtype");if("Form"!==g.name)return F.set(E,f.dict.objId,!0),void e();const p=i.state.clone(),m=new _(p),y=f.dict.getArray("Matrix");Array.isArray(y)&&6===y.length&&m.transform(y),W();const w={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0,c.enqueue(e,t)},get desiredSize(){return c.desiredSize},get ready(){return c.ready}};A.getTextContent({stream:f,task:r,resources:f.dict.get("Resources")||a,stateManager:m,includeMarkedContent:o,sink:w,seenStyles:l,viewBox:h,markedContentData:u,disableNormalization:d}).then((function(){w.enqueueInvoked||F.set(E,f.dict.objId,!0),e()}),t)})).catch((function(e){if(!(e instanceof n.AbortException)){if(!A.options.ignoreErrors)throw e;(0,n.warn)('getTextContent - ignoring XObject: "'.concat(e,'".'))}})));case n.OPS.setGState:if(S=w[0]instanceof s.Name,E=w[0].name,S&&I.getByName(E))break;return void p(new Promise((function(e,t){if(!S)throw new n.FormatError("GState must be referred to by name.");const r=a.get("ExtGState");if(!(r instanceof s.Dict))throw new n.FormatError("ExtGState should be a dictionary.");const i=r.get(E);if(!(i instanceof s.Dict))throw new n.FormatError("GState should be a dictionary.");const o=i.get("Font");o?(G(),M.fontName=null,M.fontSize=o[1],L(null,o[0]).then(e,t)):(I.set(E,i.objId,!0),e())})).catch((function(e){if(!(e instanceof n.AbortException)){if(!A.options.ignoreErrors)throw e;(0,n.warn)('getTextContent - ignoring ExtGState: "'.concat(e,'".'))}})));case n.OPS.beginMarkedContent:G(),o&&(u.level++,f.items.push({type:"beginMarkedContent",tag:w[0]instanceof s.Name?w[0].name:null}));break;case n.OPS.beginMarkedContentProps:if(G(),o){u.level++;let e=null;w[1]instanceof s.Dict&&(e=w[1].get("MCID")),f.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?"".concat(A.idFactory.getPageObjId(),"_mc").concat(e):null,tag:w[0]instanceof s.Name?w[0].name:null})}break;case n.OPS.endMarkedContent:if(G(),o){if(0===u.level)break;u.level--,f.items.push({type:"endMarkedContent"})}break;case n.OPS.restore:!e||e.font===M.font&&e.fontSize===M.fontSize&&e.fontName===M.fontName||G()}if(f.items.length>=c.desiredSize){y=!0;break}}y?p(P):(G(),W(),t())})).catch((e=>{if(!(e instanceof n.AbortException)){if(!this.options.ignoreErrors)throw e;(0,n.warn)('getTextContent - ignoring errors during "'.concat(r.name,'" task: "').concat(e,'".')),G(),W()}}))}extractDataStructures(e,t,r){const a=this.xref;let i;const o=this.readToUnicode(r.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(r.composite){const t=e.get("CIDSystemInfo");t instanceof s.Dict&&(r.cidSystemInfo={registry:(0,n.stringToPDFString)(t.get("Registry")),ordering:(0,n.stringToPDFString)(t.get("Ordering")),supplement:t.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof b.BaseStream&&(i=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;(0,n.warn)('extractDataStructures - ignoring CIDToGIDMap data: "'.concat(e,'".'))}}const h=[];let u,d=null;if(e.has("Encoding")){if(u=e.get("Encoding"),u instanceof s.Dict){if(d=u.get("BaseEncoding"),d=d instanceof s.Name?d.name:null,u.has("Differences")){const e=u.get("Differences");let t=0;for(const r of e){const e=a.fetchIfRef(r);if("number"==typeof e)t=e;else{if(!(e instanceof s.Name))throw new n.FormatError("Invalid entry in 'Differences' array: ".concat(e));h[t++]=e.name}}}}else if(u instanceof s.Name)d=u.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new n.FormatError(e);(0,n.warn)(e)}"MacRomanEncoding"!==d&&"MacExpertEncoding"!==d&&"WinAnsiEncoding"!==d&&(d=null)}const f=!r.file||r.isInternalFont,g=(0,l.getSymbolsFonts)()[r.name];if(d&&f&&g&&(d=null),d)r.defaultEncoding=(0,c.getEncoding)(d);else{const e=!!(r.flags&x.FontFlags.Symbolic),t=!!(r.flags&x.FontFlags.Nonsymbolic);u=c.StandardEncoding,"TrueType"!==r.type||t||(u=c.WinAnsiEncoding),(e||g)&&(u=c.MacRomanEncoding,f&&(/Symbol/i.test(r.name)?u=c.SymbolSetEncoding:/Dingbats/i.test(r.name)?u=c.ZapfDingbatsEncoding:/Wingdings/i.test(r.name)&&(u=c.WinAnsiEncoding))),r.defaultEncoding=u}return r.differences=h,r.baseEncodingName=d,r.hasEncoding=!!d||h.length>0,r.dict=e,o.then((e=>(r.toUnicode=e,this.buildToUnicode(r)))).then((e=>(r.toUnicode=e,i&&(r.cidToGidMap=this.readCidToGidMap(i,e)),r)))}_simpleFontToUnicode(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,n.assert)(!e.composite,"Must be a simple font.");const r=[],a=e.defaultEncoding.slice(),i=e.baseEncodingName,s=e.differences;for(const e in s){const t=s[e];".notdef"!==t&&(a[e]=t)}const o=(0,A.getGlyphsUnicode)();for(const n in a){let s=a[n];if(""===s)continue;let l=o[s];if(void 0!==l){r[n]=String.fromCharCode(l);continue}let h=0;switch(s[0]){case"G":3===s.length&&(h=parseInt(s.substring(1),16));break;case"g":5===s.length&&(h=parseInt(s.substring(1),16));break;case"C":case"c":if(s.length>=3&&s.length<=4){const r=s.substring(1);if(t){h=parseInt(r,16);break}if(h=+r,Number.isNaN(h)&&Number.isInteger(parseInt(r,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":l=(0,O.getUnicodeForGlyph)(s,o),-1!==l&&(h=l);break;default:switch(s){case"f_h":case"f_t":case"T_h":r[n]=s.replaceAll("_","");continue}}if(h>0&&h<=1114111&&Number.isInteger(h)){if(i&&h===+n){const e=(0,c.getEncoding)(i);if(e&&(s=e[n])){r[n]=String.fromCharCode(o[s]);continue}}r[n]=String.fromCodePoint(h)}}return r}async buildToUnicode(e){var t;if(e.hasIncludedToUnicodeMap=(null===(t=e.toUnicode)||void 0===t?void 0:t.length)>0,e.hasIncludedToUnicodeMap)return!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e)),e.toUnicode;if(!e.composite)return new d.ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof a.IdentityCMap)||"Adobe"===e.cidSystemInfo.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:r}=e.cidSystemInfo,i=s.Name.get("".concat(t,"-").concat(r,"-UCS2")),o=await a.CMapFactory.create({encoding:i,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),c=[],l=[];return e.cMap.forEach((function(e,t){if(t>65535)throw new n.FormatError("Max size of CID is 65,535");const r=o.lookup(t);if(r){l.length=0;for(let e=0,t=r.length;e{if(e instanceof n.AbortException)return null;if(this.options.ignoreErrors)return(0,n.warn)('readToUnicode - ignoring ToUnicode data: "'.concat(e,'".')),null;throw e})):Promise.resolve(null):Promise.resolve(null)}readCidToGidMap(e,t){const r=[];for(let n=0,a=e.length;n>1;(0!==a||t.has(i))&&(r[i]=a)}return r}extractWidths(e,t,r){const n=this.xref;let a=[],i=0;const o=[];let c,l,h,u,d,f,g,p;if(r.composite){if(i=e.has("DW")?e.get("DW"):1e3,p=e.get("W"),p)for(l=0,h=p.length;l{if(i){const e=[];let t=g;for(const r of i)e[t++]=this.xref.fetchIfRef(r);r.widths=e}else r.widths=this.buildCharCodeToWidth(t.widths,r);return new o.Font(e,d,r)}))}i=new s.Dict(null),i.set("FontName",s.Name.get(f)),i.set("FontBBox",c.getArray("FontBBox")||[0,0,0,0])}let A=i.get("FontName"),k=c.get("BaseFont");"string"==typeof A&&(A=s.Name.get(A)),"string"==typeof k&&(k=s.Name.get(k));const C=null===(t=A)||void 0===t?void 0:t.name,O=null===(r=k)||void 0===r?void 0:r.name;if(w||C===O||((0,n.info)("The FontDescriptor's FontName is \\"".concat(C,'" but should be the same as the Font\\'s BaseFont "').concat(O,'".')),C&&O&&(O.startsWith(C)||!(0,l.isKnownFontName)(C)&&(0,l.isKnownFontName)(O))&&(A=null)),A||(A=k),!(A instanceof s.Name))throw new n.FormatError("invalid font name");let F,I,T,M,E;try{F=i.get("FontFile","FontFile2","FontFile3")}catch(e){if(!this.options.ignoreErrors)throw e;(0,n.warn)('translateFont - fetching "'.concat(A.name,'" font file: "').concat(e,'".')),F=new m.NullStream}let P=!1,R=null,N=null;if(F){if(F.dict){const e=F.dict.get("Subtype");e instanceof s.Name&&(I=e.name),T=F.dict.get("Length1"),M=F.dict.get("Length2"),E=F.dict.get("Length3")}}else if(y){const e=(0,u.getXfaFontName)(A.name);e&&(y.fontFamily="".concat(y.fontFamily,"-PdfJS-XFA"),y.metrics=e.metrics||null,R=e.factors||null,F=await this.fetchStandardFontData(e.name),P=!!F,h=c=(0,u.getXfaFontDict)(A.name),d=!0)}else if(!w){const e=(0,l.getStandardFontName)(A.name);e&&(F=await this.fetchStandardFontData(e),P=!!F),!P&&this.options.useSystemFonts&&(N=(0,S.getFontSubstitution)(this.systemFontCache,this.idFactory,this.options.standardFontDataUrl,A.name,e))}if(v={type:f,name:A.name,subtype:I,file:F,length1:T,length2:M,length3:E,isInternalFont:P,loadedName:h.loadedName,composite:d,fixedPitch:!1,fontMatrix:c.getArray("FontMatrix")||n.FONT_IDENTITY_MATRIX,firstChar:g,lastChar:p,toUnicode:b,bbox:i.getArray("FontBBox")||c.getArray("FontBBox"),ascent:i.get("Ascent"),descent:i.get("Descent"),xHeight:i.get("XHeight")||0,capHeight:i.get("CapHeight")||0,flags:i.get("Flags"),italicAngle:i.get("ItalicAngle")||0,isType3Font:w,cssFontInfo:y,scaleFactors:R,systemFontInfo:N},d){const e=h.get("Encoding");e instanceof s.Name&&(v.cidEncoding=e.name);const t=await a.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});v.cMap=t,v.vertical=v.cMap.vertical}return this.extractDataStructures(c,h,v).then((e=>(this.extractWidths(c,i,e),new o.Font(A.name,F,e))))}static buildFontPaths(e,t,r,a){function i(t){const i="".concat(e.loadedName,"_path_").concat(t);try{if(e.renderer.hasBuiltPath(t))return;r.send("commonobj",[i,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(a.ignoreErrors)return void(0,n.warn)("buildFontPaths - ignoring ".concat(i,' glyph: "').concat(e,'".'));throw e}}for(const e of t){i(e.fontChar);const t=e.accent;(null==t?void 0:t.fontChar)&&i(t.fontChar)}}static get fallbackFontDict(){const e=new s.Dict;return e.set("BaseFont",s.Name.get("Helvetica")),e.set("Type",s.Name.get("FallbackType")),e.set("Subtype",s.Name.get("FallbackType")),e.set("Encoding",s.Name.get("WinAnsiEncoding")),(0,n.shadow)(this,"fallbackFontDict",e)}}t.PartialEvaluator=B;class L{constructor(e){let{loadedName:t,font:r,dict:n,evaluatorOptions:a}=e;this.loadedName=t,this.font=r,this.dict=n,this._evaluatorOptions=a||E,this.type3Loaded=null,this.type3Dependencies=r.isType3Font?new Set:null,this.sent=!1}send(e){this.sent||(this.sent=!0,e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)]))}fallback(e){this.font.data&&(this.font.disableFontFace=!0,B.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions))}loadType3Data(e,t,r){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const a=e.clone({ignoreErrors:!1});a.parsingType3Font=!0;const i=new s.RefSet(e.type3FontRefs);this.dict.objId&&!i.has(this.dict.objId)&&i.put(this.dict.objId),a.type3FontRefs=i;const o=this.font,c=this.type3Dependencies;let l=Promise.resolve();const h=this.dict.get("CharProcs"),u=this.dict.get("Resources")||t,d=Object.create(null),f=n.Util.normalizeRect(o.bbox||[0,0,0,0]),g=f[2]-f[0],p=f[3]-f[1],m=Math.hypot(g,p);for(const e of h.getKeys())l=l.then((()=>{const t=h.get(e),i=new T.OperatorList;return a.getOperatorList({stream:t,task:r,resources:u,operatorList:i}).then((()=>{i.fnArray[0]===n.OPS.setCharWidthAndBounds&&this._removeType3ColorOperators(i,m),d[e]=i.getIR();for(const e of i.dependencies)c.add(e)})).catch((function(t){(0,n.warn)('Type3 font resource "'.concat(e,'" is not available.'));const r=new T.OperatorList;d[e]=r.getIR()}))}));return this.type3Loaded=l.then((()=>{o.charProcOperatorList=d,this._bbox&&(o.isCharBBox=!0,o.bbox=this._bbox)})),this.type3Loaded}_removeType3ColorOperators(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN;const r=n.Util.normalizeRect(e.argsArray[0].slice(2)),a=r[2]-r[0],i=r[3]-r[1],s=Math.hypot(a,i);0===a||0===i?(e.fnArray.splice(0,1),e.argsArray.splice(0,1)):(0===t||Math.round(s/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]));let o=0,c=e.length;for(;o0&&void 0!==arguments[0]?arguments[0]:new U;this.state=e,this.stateStack=[]}save(){const e=this.state;this.stateStack.push(this.state),this.state=e.clone()}restore(){const e=this.stateStack.pop();e&&(this.state=e)}transform(e){this.state.ctm=n.Util.transform(this.state.ctm,e)}}class j{constructor(){this.ctm=new Float32Array(n.IDENTITY_MATRIX),this.fontName=null,this.fontSize=0,this.loadedName=null,this.font=null,this.fontMatrix=n.FONT_IDENTITY_MATRIX,this.textMatrix=n.IDENTITY_MATRIX.slice(),this.textLineMatrix=n.IDENTITY_MATRIX.slice(),this.charSpacing=0,this.wordSpacing=0,this.leading=0,this.textHScale=1,this.textRise=0}setTextMatrix(e,t,r,n,a,i){const s=this.textMatrix;s[0]=e,s[1]=t,s[2]=r,s[3]=n,s[4]=a,s[5]=i}setTextLineMatrix(e,t,r,n,a,i){const s=this.textLineMatrix;s[0]=e,s[1]=t,s[2]=r,s[3]=n,s[4]=a,s[5]=i}translateTextMatrix(e,t){const r=this.textMatrix;r[4]=r[0]*e+r[2]*t+r[4],r[5]=r[1]*e+r[3]*t+r[5]}translateTextLineMatrix(e,t){const r=this.textLineMatrix;r[4]=r[0]*e+r[2]*t+r[4],r[5]=r[1]*e+r[3]*t+r[5]}carriageReturn(){this.translateTextLineMatrix(0,-this.leading),this.textMatrix=this.textLineMatrix.slice()}clone(){const e=Object.create(this);return e.textMatrix=this.textMatrix.slice(),e.textLineMatrix=this.textLineMatrix.slice(),e.fontMatrix=this.fontMatrix.slice(),e}}class U{constructor(){this.ctm=new Float32Array(n.IDENTITY_MATRIX),this.font=null,this.textRenderingMode=n.TextRenderingMode.FILL,this.fillColorSpace=w.ColorSpace.singletons.gray,this.strokeColorSpace=w.ColorSpace.singletons.gray}clone(){return Object.create(this)}}class \${static get opMap(){const e=(0,k.getLookupTableFactory)((function(e){e.w={id:n.OPS.setLineWidth,numArgs:1,variableArgs:!1},e.J={id:n.OPS.setLineCap,numArgs:1,variableArgs:!1},e.j={id:n.OPS.setLineJoin,numArgs:1,variableArgs:!1},e.M={id:n.OPS.setMiterLimit,numArgs:1,variableArgs:!1},e.d={id:n.OPS.setDash,numArgs:2,variableArgs:!1},e.ri={id:n.OPS.setRenderingIntent,numArgs:1,variableArgs:!1},e.i={id:n.OPS.setFlatness,numArgs:1,variableArgs:!1},e.gs={id:n.OPS.setGState,numArgs:1,variableArgs:!1},e.q={id:n.OPS.save,numArgs:0,variableArgs:!1},e.Q={id:n.OPS.restore,numArgs:0,variableArgs:!1},e.cm={id:n.OPS.transform,numArgs:6,variableArgs:!1},e.m={id:n.OPS.moveTo,numArgs:2,variableArgs:!1},e.l={id:n.OPS.lineTo,numArgs:2,variableArgs:!1},e.c={id:n.OPS.curveTo,numArgs:6,variableArgs:!1},e.v={id:n.OPS.curveTo2,numArgs:4,variableArgs:!1},e.y={id:n.OPS.curveTo3,numArgs:4,variableArgs:!1},e.h={id:n.OPS.closePath,numArgs:0,variableArgs:!1},e.re={id:n.OPS.rectangle,numArgs:4,variableArgs:!1},e.S={id:n.OPS.stroke,numArgs:0,variableArgs:!1},e.s={id:n.OPS.closeStroke,numArgs:0,variableArgs:!1},e.f={id:n.OPS.fill,numArgs:0,variableArgs:!1},e.F={id:n.OPS.fill,numArgs:0,variableArgs:!1},e["f*"]={id:n.OPS.eoFill,numArgs:0,variableArgs:!1},e.B={id:n.OPS.fillStroke,numArgs:0,variableArgs:!1},e["B*"]={id:n.OPS.eoFillStroke,numArgs:0,variableArgs:!1},e.b={id:n.OPS.closeFillStroke,numArgs:0,variableArgs:!1},e["b*"]={id:n.OPS.closeEOFillStroke,numArgs:0,variableArgs:!1},e.n={id:n.OPS.endPath,numArgs:0,variableArgs:!1},e.W={id:n.OPS.clip,numArgs:0,variableArgs:!1},e["W*"]={id:n.OPS.eoClip,numArgs:0,variableArgs:!1},e.BT={id:n.OPS.beginText,numArgs:0,variableArgs:!1},e.ET={id:n.OPS.endText,numArgs:0,variableArgs:!1},e.Tc={id:n.OPS.setCharSpacing,numArgs:1,variableArgs:!1},e.Tw={id:n.OPS.setWordSpacing,numArgs:1,variableArgs:!1},e.Tz={id:n.OPS.setHScale,numArgs:1,variableArgs:!1},e.TL={id:n.OPS.setLeading,numArgs:1,variableArgs:!1},e.Tf={id:n.OPS.setFont,numArgs:2,variableArgs:!1},e.Tr={id:n.OPS.setTextRenderingMode,numArgs:1,variableArgs:!1},e.Ts={id:n.OPS.setTextRise,numArgs:1,variableArgs:!1},e.Td={id:n.OPS.moveText,numArgs:2,variableArgs:!1},e.TD={id:n.OPS.setLeadingMoveText,numArgs:2,variableArgs:!1},e.Tm={id:n.OPS.setTextMatrix,numArgs:6,variableArgs:!1},e["T*"]={id:n.OPS.nextLine,numArgs:0,variableArgs:!1},e.Tj={id:n.OPS.showText,numArgs:1,variableArgs:!1},e.TJ={id:n.OPS.showSpacedText,numArgs:1,variableArgs:!1},e["'"]={id:n.OPS.nextLineShowText,numArgs:1,variableArgs:!1},e['"']={id:n.OPS.nextLineSetSpacingShowText,numArgs:3,variableArgs:!1},e.d0={id:n.OPS.setCharWidth,numArgs:2,variableArgs:!1},e.d1={id:n.OPS.setCharWidthAndBounds,numArgs:6,variableArgs:!1},e.CS={id:n.OPS.setStrokeColorSpace,numArgs:1,variableArgs:!1},e.cs={id:n.OPS.setFillColorSpace,numArgs:1,variableArgs:!1},e.SC={id:n.OPS.setStrokeColor,numArgs:4,variableArgs:!0},e.SCN={id:n.OPS.setStrokeColorN,numArgs:33,variableArgs:!0},e.sc={id:n.OPS.setFillColor,numArgs:4,variableArgs:!0},e.scn={id:n.OPS.setFillColorN,numArgs:33,variableArgs:!0},e.G={id:n.OPS.setStrokeGray,numArgs:1,variableArgs:!1},e.g={id:n.OPS.setFillGray,numArgs:1,variableArgs:!1},e.RG={id:n.OPS.setStrokeRGBColor,numArgs:3,variableArgs:!1},e.rg={id:n.OPS.setFillRGBColor,numArgs:3,variableArgs:!1},e.K={id:n.OPS.setStrokeCMYKColor,numArgs:4,variableArgs:!1},e.k={id:n.OPS.setFillCMYKColor,numArgs:4,variableArgs:!1},e.sh={id:n.OPS.shadingFill,numArgs:1,variableArgs:!1},e.BI={id:n.OPS.beginInlineImage,numArgs:0,variableArgs:!1},e.ID={id:n.OPS.beginImageData,numArgs:0,variableArgs:!1},e.EI={id:n.OPS.endInlineImage,numArgs:1,variableArgs:!1},e.Do={id:n.OPS.paintXObject,numArgs:1,variableArgs:!1},e.MP={id:n.OPS.markPoint,numArgs:1,variableArgs:!1},e.DP={id:n.OPS.markPointProps,numArgs:2,variableArgs:!1},e.BMC={id:n.OPS.beginMarkedContent,numArgs:1,variableArgs:!1},e.BDC={id:n.OPS.beginMarkedContentProps,numArgs:2,variableArgs:!1},e.EMC={id:n.OPS.endMarkedContent,numArgs:0,variableArgs:!1},e.BX={id:n.OPS.beginCompat,numArgs:0,variableArgs:!1},e.EX={id:n.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,n.shadow)(this,"opMap",e())}constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new _;this.parser=new g.Parser({lexer:new g.Lexer(e,$.opMap),xref:t}),this.stateManager=r,this.nonProcessedArgs=[],this._isPathOp=!1,this._numInvalidPathOPS=0}get savedStatesDepth(){return this.stateManager.stateStack.length}read(e){let t=e.args;for(;;){const r=this.parser.getObj();if(r instanceof s.Cmd){const a=r.cmd,i=$.opMap[a];if(!i){(0,n.warn)('Unknown command "'.concat(a,'".'));continue}const s=i.id,o=i.numArgs;let c=null!==t?t.length:0;if(this._isPathOp||(this._numInvalidPathOPS=0),this._isPathOp=s>=n.OPS.moveTo&&s<=n.OPS.endPath,i.variableArgs)c>o&&(0,n.info)("Command ".concat(a,": expected [0, ").concat(o,"] args, but received ").concat(c," args."));else{if(c!==o){const e=this.nonProcessedArgs;for(;c>o;)e.push(t.shift()),c--;for(;c$.MAX_INVALID_PATH_OPS)throw new n.FormatError("Invalid ".concat(e));(0,n.warn)("Skipping ".concat(e)),null!==t&&(t.length=0);continue}}return this.preprocessCommand(s,t),e.fn=s,e.args=t,!0}if(r===s.EOF)return!1;if(null!==r&&(null===t&&(t=[]),t.push(r),t.length>33))throw new n.FormatError("Too many arguments")}}preprocessCommand(e,t){switch(0|e){case n.OPS.save:this.stateManager.save();break;case n.OPS.restore:this.stateManager.restore();break;case n.OPS.transform:this.stateManager.transform(t)}}}i($,"MAX_INVALID_PATH_OPS",10),t.EvaluatorPreprocessor=$},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityCMap=t.CMapFactory=t.CMap=void 0,r(139),r(2);var n=r(144),a=r(150),i=r(151),s=r(165),o=r(166),c=r(149),l=r(154);const h=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],u=2**24-1;class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.codespaceRanges=[[],[],[],[]],this.numCodespaceRanges=0,this._map=[],this.name="",this.vertical=!1,this.useCMap=null,this.builtInCMap=e}addCodespaceRange(e,t,r){this.codespaceRanges[e-1].push(t,r),this.numCodespaceRanges++}mapCidRange(e,t,r){if(t-e>u)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=r++}mapBfRange(e,t,r){if(t-e>u)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const n=r.length-1;for(;e<=t;){this._map[e++]=r;const t=r.charCodeAt(n)+1;r=t>255?r.substring(0,n-1)+String.fromCharCode(r.charCodeAt(n-1)+1)+"\\0":r.substring(0,n)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,r){if(t-e>u)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const n=r.length;let a=0;for(;e<=t&&a>>0;const s=a[i];for(let e=0,t=s.length;e=t&&n<=a)return r.charcode=n,void(r.length=i+1)}}r.charcode=0,r.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let r=0,n=t.length;r=a&&e<=i)return r+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}t.CMap=d;class f extends d{constructor(e,t){super(),this.vertical=e,this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,r){(0,n.unreachable)("should not call mapCidRange")}mapBfRange(e,t,r){(0,n.unreachable)("should not call mapBfRange")}mapBfRangeToArray(e,t,r){(0,n.unreachable)("should not call mapBfRangeToArray")}mapOne(e,t){(0,n.unreachable)("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){(0,n.unreachable)("should not access .isIdentityCMap")}}function g(e){let t=0;for(let r=0;r>>0}function p(e){if("string"!=typeof e)throw new n.FormatError("Malformed CMap: expected string.")}function m(e){if(!Number.isInteger(e))throw new n.FormatError("Malformed CMap: expected int.")}function b(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endbfchar"))return;p(r);const n=g(r);r=t.getObj(),p(r);const i=r;e.mapOne(n,i)}}function y(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endbfrange"))return;p(r);const n=g(r);r=t.getObj(),p(r);const i=g(r);if(r=t.getObj(),Number.isInteger(r)||"string"==typeof r){const t=Number.isInteger(r)?String.fromCharCode(r):r;e.mapBfRange(n,i,t)}else{if(!(0,a.isCmd)(r,"["))break;{r=t.getObj();const s=[];for(;!(0,a.isCmd)(r,"]")&&r!==a.EOF;)s.push(r),r=t.getObj();e.mapBfRangeToArray(n,i,s)}}}throw new n.FormatError("Invalid bf range.")}function w(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endcidchar"))return;p(r);const n=g(r);r=t.getObj(),m(r);const i=r;e.mapOne(n,i)}}function v(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endcidrange"))return;p(r);const n=g(r);r=t.getObj(),p(r);const i=g(r);r=t.getObj(),m(r);const s=r;e.mapCidRange(n,i,s)}}function x(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endcodespacerange"))return;if("string"!=typeof r)break;const n=g(r);if(r=t.getObj(),"string"!=typeof r)break;const i=g(r);e.addCodespaceRange(r.length,n,i)}throw new n.FormatError("Invalid codespace range.")}function S(e,t){const r=t.getObj();Number.isInteger(r)&&(e.vertical=!!r)}function A(e,t){const r=t.getObj();r instanceof a.Name&&(e.name=r.name)}async function k(e,t,r,i){let s,o;e:for(;;)try{const r=t.getObj();if(r===a.EOF)break;if(r instanceof a.Name)"WMode"===r.name?S(e,t):"CMapName"===r.name&&A(e,t),s=r;else if(r instanceof a.Cmd)switch(r.cmd){case"endcmap":break e;case"usecmap":s instanceof a.Name&&(o=s.name);break;case"begincodespacerange":x(e,t);break;case"beginbfchar":b(e,t);break;case"begincidchar":w(e,t);break;case"beginbfrange":y(e,t);break;case"begincidrange":v(e,t)}}catch(e){if(e instanceof c.MissingDataException)throw e;(0,n.warn)("Invalid cMap data: "+e);continue}return!i&&o&&(i=o),i?C(e,r,i):e}async function C(e,t,r){if(e.useCMap=await O(r,t),0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let r=0;rC(i,t,e)));if(a===n.CMapCompressionType.NONE){const e=new o.Lexer(new l.Stream(r));return k(i,e,t,null)}throw new Error('Invalid CMap "compressionType" value: '.concat(a))}t.IdentityCMap=f,t.CMapFactory=class{static async create(e){let{encoding:t,fetchBuiltInCMap:r,useCMap:n}=e;if(t instanceof a.Name)return O(t.name,r);if(t instanceof i.BaseStream){const e=await k(new d,new o.Lexer(t),r,n);return e.isIdentityCMap?O(e.name,r):e}throw new Error("Encoding required.")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BinaryCMapReader=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144);function a(e,t){let r=0;for(let n=0;n<=t;n++)r=r<<8|e[n];return r>>>0}function i(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(...e.subarray(0,t+1))}function s(e,t,r){let n=0;for(let a=r;a>=0;a--)n+=e[a]+t[a],e[a]=255&n,n>>=8}function o(e,t){let r=1;for(let n=t;n>=0&&r>0;n--)r+=e[n],e[n]=255&r,r>>=8}const c=16;class l{constructor(e){this.buffer=e,this.pos=0,this.end=e.length,this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const 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}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1)),this.pos+=t+1}readHexNumber(e,t){let r;const a=this.tmpBuf;let i=0;do{const e=this.readByte();if(e<0)throw new n.FormatError("unexpected EOF in bcmap");r=!(128&e),a[i++]=127&e}while(!r);let s=t,o=0,c=0;for(;s>=0;){for(;c<8&&a.length>0;)o|=a[--i]<>=8,c-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const r=1&e[t]?255:0;let n=0;for(let a=0;a<=t;a++)n=(1&n)<<8|e[a],e[a]=n>>1^r}readString(){const e=this.readNumber(),t=new Array(e);for(let r=0;r=0;){const e=y>>5;if(7===e){switch(31&y){case 0:n.readString();break;case 1:u=n.readString()}continue}const r=!!(16&y),l=15&y;if(l+1>c)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const h=1,w=n.readNumber();switch(e){case 0:n.readHex(d,l),n.readHexNumber(f,l),s(f,d,l),t.addCodespaceRange(l+1,a(d,l),a(f,l));for(let e=1;e{Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=t.Linearization=t.Lexer=void 0,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144),a=r(150),i=r(149),s=r(154),o=r(167),c=r(169),l=r(170),h=r(172),u=r(173),d=r(176),f=r(179),g=r(181),p=r(182),m=r(183);class b{constructor(e){let{lexer:t,xref:r,allowStreams:n=!1,recoveryMode:a=!1}=e;this.lexer=t,this.xref=r,this.allowStreams=n,this.recoveryMode=a,this.imageCache=Object.create(null),this._imageId=0,this.refill()}refill(){this.buf1=this.lexer.getObj(),this.buf2=this.lexer.getObj()}shift(){this.buf2 instanceof a.Cmd&&"ID"===this.buf2.cmd?(this.buf1=this.buf2,this.buf2=null):(this.buf1=this.buf2,this.buf2=this.lexer.getObj())}tryShift(){try{return this.shift(),!0}catch(e){if(e instanceof i.MissingDataException)throw e;return!1}}getObj(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=this.buf1;if(this.shift(),t instanceof a.Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":const r=[];for(;!(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"<<":const s=new a.Dict(this.xref);for(;!(0,a.isCmd)(this.buf1,">>")&&this.buf1!==a.EOF;){if(!(this.buf1 instanceof a.Name)){(0,n.info)("Malformed dictionary: key must be a name object"),this.shift();continue}const t=this.buf1.name;if(this.shift(),this.buf1===a.EOF)break;s.set(t,this.getObj(e))}if(this.buf1===a.EOF){if(this.recoveryMode)return s;throw new i.ParserEOFException("End of file inside dictionary.")}return(0,a.isCmd)(this.buf2,"stream")?this.allowStreams?this.makeStream(s,e):s:(this.shift(),s);default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&(0,a.isCmd)(this.buf2,"R")){const e=a.Ref.get(t,this.buf1);return this.shift(),this.shift(),e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,r=e.pos;let o,c,l=0;for(;-1!==(o=e.getByte());)if(0===l)l=69===o?1:0;else if(1===l)l=73===o?2:0;else if(32===o||10===o||13===o){c=e.pos;const r=e.peekBytes(15),i=r.length;if(0===i)break;for(let e=0;e127)){l=0;break}if(2!==l)continue;if(!t){(0,n.warn)("findDefaultInlineStreamEnd - \`lexer.knownCommands\` is undefined.");continue}const h=new v(new s.Stream(r.slice()),t);h._hexStringWarn=()=>{};let u=0;for(;;){const e=h.getObj();if(e===a.EOF){l=0;break}if(e instanceof a.Cmd){const r=t[e.cmd];if(!r){l=0;break}if(r.variableArgs?u<=r.numArgs:u===r.numArgs)break;u=0}else u++}if(2===l)break}else l=0;-1===o&&((0,n.warn)("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker"),c&&((0,n.warn)('... trying to recover by using the last "EI" occurrence.'),e.skip(-(e.pos-c))));let h=4;return e.skip(-h),o=e.peekByte(),e.skip(h),(0,i.isWhiteSpace)(o)||h--,e.pos-h-r}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let r,a,i=!1;for(;-1!==(r=e.getByte());)if(255===r){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:a=e.getUint16(),a>2?e.skip(a-2):e.skip(-2)}if(i)break}const s=e.pos-t;return-1===r?((0,n.warn)("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead."),e.skip(-s),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),s)}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let r;for(;-1!==(r=e.getByte());)if(126===r){const t=e.pos;for(r=e.peekByte();(0,i.isWhiteSpace)(r);)e.skip(),r=e.peekByte();if(62===r){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const a=e.pos-t;return-1===r?((0,n.warn)("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-a),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),a)}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let r;for(;-1!==(r=e.getByte())&&62!==r;);const a=e.pos-t;return-1===r?((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)}inlineStreamSkipEI(e){let t,r=0;for(;-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}makeInlineImage(e){const t=this.lexer,r=t.stream,i=Object.create(null);let s;for(;!(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");const t=this.buf1.name;if(this.shift(),this.buf1===a.EOF)break;i[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(s=r.pos-t.beginInlineImagePos);const o=this.xref.fetchIfRef(i.F||i.Filter);let c;if(o instanceof a.Name)c=o.name;else if(Array.isArray(o)){const e=this.xref.fetchIfRef(o[0]);e instanceof a.Name&&(c=e.name)}const l=r.pos;let h,u;switch(c){case"DCT":case"DCTDecode":h=this.findDCTDecodeInlineStreamEnd(r);break;case"A85":case"ASCII85Decode":h=this.findASCII85DecodeInlineStreamEnd(r);break;case"AHx":case"ASCIIHexDecode":h=this.findASCIIHexDecodeInlineStreamEnd(r);break;default:h=this.findDefaultInlineStreamEnd(r)}if(h<1e3&&s>0){const e=r.pos;r.pos=t.beginInlineImagePos,u=function(e){const t=[],r=e.length;let n=0;for(;n=n)return r.pos+=s,r.pos-e;s++}r.pos+=i}return-1}makeStream(e,t){const r=this.lexer;let s=r.stream;r.skipToNextLine();const o=s.pos-1;let c=e.get("Length");if(Number.isInteger(c)||((0,n.info)('Bad length "'.concat(c&&c.toString(),'" in stream.')),c=0),s.pos=o+c,r.nextChar(),this.tryShift()&&(0,a.isCmd)(this.buf2,"endstream"))this.shift();else{const e=new Uint8Array([101,110,100,115,116,114,101,97,109]);let t=this._findStreamLength(o,e);if(t<0){const r=1;for(let a=1;a<=r;a++){const r=e.length-a,c=e.slice(0,r),l=this._findStreamLength(o,c);if(l>=0){const e=s.peekBytes(r+1)[r];if(!(0,i.isWhiteSpace)(e))break;(0,n.info)('Found "'.concat((0,n.bytesToString)(c),'" when searching for endstream command.')),t=l;break}}if(t<0)throw new n.FormatError("Missing endstream command.")}c=t,r.nextChar(),this.shift(),this.shift()}return this.shift(),s=s.makeSubStream(o,c,e),t&&(s=t.createStream(s,c)),s=this.filter(s,e,c),s.dict=e,s}filter(e,t,r){let i=t.get("F","Filter"),s=t.get("DP","DecodeParms");if(i instanceof a.Name)return Array.isArray(s)&&(0,n.warn)("/DecodeParms should not be an Array, when /Filter is a Name."),this.makeFilter(e,i.name,r,s);let o=r;if(Array.isArray(i)){const t=i,r=s;for(let c=0,l=t.length;c=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class v{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.stream=e,this.nextChar(),this.strBuf=[],this.knownCommands=t,this._hexStringNumWarn=0,this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,r=0,a=1;if(45===e?(a=-1,e=this.nextChar(),45===e&&(e=this.nextChar())):43===e&&(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){const t="Invalid number: ".concat(String.fromCharCode(e)," (charCode ").concat(e,")");if((0,i.isWhiteSpace)(e)||-1===e)return(0,n.info)('Lexer.getNumber - "'.concat(t,'".')),0;throw new n.FormatError(t)}let s=e-48,o=0,c=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const n=e-48;t?o=10*o+n:(0!==r&&(r*=10),s=10*s+n)}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(e=this.peekChar(),43===e||45===e)c=45===e?-1:1,this.nextChar();else if(e<48||e>57)break;t=!0}return 0!==r&&(s/=r),t&&(s*=10**(c*o)),a*s}getString(){let e=1,t=!1;const r=this.strBuf;r.length=0;let a=this.nextChar();for(;;){let 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(),a){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:let e=15&a;a=this.nextChar(),i=!0,a>=48&&a<=55&&(e=(e<<3)+(15&a),a=this.nextChar(),a>=48&&a<=55&&(i=!1,e=(e<<3)+(15&a))),r.push(String.fromCharCode(e));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("")}getName(){let e,t;const r=this.strBuf;for(r.length=0;(e=this.nextChar())>=0&&!y[e];)if(35===e){if(e=this.nextChar(),y[e]){(0,n.warn)("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number."),r.push("#");break}const a=w(e);if(-1!==a){t=e,e=this.nextChar();const i=w(e);if(-1===i){if((0,n.warn)("Lexer_getName: Illegal digit (".concat(String.fromCharCode(e),") in hexadecimal number.")),r.push("#",String.fromCharCode(t)),y[e])break;r.push(String.fromCharCode(e));continue}r.push(String.fromCharCode(a<<4|i))}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(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||(0,n.warn)("getHexString - ignoring invalid character: ".concat(e)):(0,n.warn)("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let 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!==y[a]){if(i){if(t=w(a),-1===t){this._hexStringWarn(a),a=this.nextChar();continue}}else{if(r=w(a),-1===r){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("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return a.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==y[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 t=this.nextChar(),60===t?(this.nextChar(),a.Cmd.get("<<")):this.getHexString();case 62:return t=this.nextChar(),62===t?(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))}let r=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127)return this.nextChar(),a.Cmd.get(r)}const i=this.knownCommands;let s=void 0!==(null==i?void 0:i[r]);for(;(t=this.nextChar())>=0&&!y[t];){const e=r+String.fromCharCode(t);if(s&&void 0===i[e])break;if(128===r.length)throw new n.FormatError("Command token too long: ".concat(r.length));r=e,s=void 0!==(null==i?void 0:i[r])}return"true"===r||"false"!==r&&("null"===r?null:("BI"===r&&(this.beginInlineImagePos=this.stream.pos),a.Cmd.get(r)))}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar(),10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}t.Lexer=v,t.Linearization=class{static create(e){function t(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const 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.'))}const r=new b({lexer:new v(e),xref:null}),n=r.getObj(),i=r.getObj(),s=r.getObj(),o=r.getObj();let c,l;if(!(Number.isInteger(n)&&Number.isInteger(i)&&(0,a.isCmd)(s,"obj")&&o instanceof a.Dict&&"number"==typeof(c=o.get("Linearized"))&&c>0))return null;if((l=t(o,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:l,hints:function(e){const t=e.get("H");let r;if(Array.isArray(t)&&(2===(r=t.length)||4===r)){for(let e=0;e0))throw new Error("Hint (".concat(e,") in the linearization dictionary is invalid."))}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(o),objectNumberFirst:t(o,"O"),endFirst:t(o,"E"),numPages:t(o,"N"),mainXRefEntriesOffset:t(o,"T"),pageFirst:o.has("P")?t(o,"P",!0):0}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Ascii85Stream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(149);class i extends n.DecodeStream{constructor(e,t){t&&(t*=.8),super(t),this.str=e,this.dict=e.dict,this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;(0,a.isWhiteSpace)(t);)t=e.getByte();if(-1===t||126===t)return void(this.eof=!0);const r=this.bufferLength;let n,i;if(122===t){for(n=this.ensureBuffer(r+4),i=0;i<4;++i)n[r+i]=0;this.bufferLength+=4}else{const s=this.input;for(s[0]=t,i=1;i<5;++i){for(t=e.getByte();(0,a.isWhiteSpace)(t);)t=e.getByte();if(s[i]=t,-1===t||126===t)break}if(n=this.ensureBuffer(r+i-1),this.bufferLength+=i-1,i<5){for(;i<5;++i)s[i]=117;this.eof=!0}let o=0;for(i=0;i<5;++i)o=85*o+(s[i]-33);for(i=3;i>=0;--i)n[r+i]=255&o,o>>=8}}}t.Ascii85Stream=i},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StreamsSequenceStream=t.DecodeStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(151),a=r(154);const i=new Uint8Array(0);class s extends n.BaseStream{constructor(e){if(super(),this._rawMinBufferLength=e||0,this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=i,this.minBufferLength=512,e)for(;this.minBufferLengthn&&(r=n)}else{for(;!this.eof;)this.readBlock();r=this.bufferLength}return this.pos=r,this.buffer.subarray(t,r)}reset(){this.pos=0}makeSubStream(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(void 0===t)for(;!this.eof;)this.readBlock();else{const r=e+t;for(;this.bufferLength<=r&&!this.eof;)this.readBlock()}return new a.Stream(this.buffer,e,t,r)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}t.DecodeStream=s,t.StreamsSequenceStream=class extends s{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=0;for(const t of e)r+=t instanceof s?t._rawMinBufferLength:t.length;super(r),this.streams=e,this._onError=t}readBlock(){const e=this.streams;if(0===e.length)return void(this.eof=!0);const t=e.shift();let r;try{r=t.getBytes()}catch(e){var n;if(this._onError)return void this._onError(e,null===(n=t.dict)||void 0===n?void 0:n.objId);throw e}const a=this.bufferLength,i=a+r.length;this.ensureBuffer(i).set(r,a),this.bufferLength=i}getBaseStreams(){const e=[];for(const t of this.streams){const r=t.getBaseStreams();r&&e.push(...r)}return e.length>0?e:null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AsciiHexStream=void 0;var n=r(168);class a extends n.DecodeStream{constructor(e,t){t&&(t*=.5),super(t),this.str=e,this.dict=e.dict,this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length)return void(this.eof=!0);const t=e.length+1>>1,r=this.ensureBuffer(this.bufferLength+t);let n=this.bufferLength,a=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}a<0?a=e:(r[n++]=a<<4|e,a=-1)}a>=0&&this.eof&&(r[n++]=a<<4,a=-1),this.firstDigit=a,this.bufferLength=n}}t.AsciiHexStream=a},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CCITTFaxStream=void 0;var n=r(171),a=r(168),i=r(150);class s extends a.DecodeStream{constructor(e,t,r){super(t),this.str=e,this.dict=e.dict,r instanceof i.Dict||(r=i.Dict.empty);const a={next:()=>e.getByte()};this.ccittFaxDecoder=new n.CCITTFaxDecoder(a,{K:r.get("K"),EndOfLine:r.get("EndOfLine"),EncodedByteAlign:r.get("EncodedByteAlign"),Columns:r.get("Columns"),Rows:r.get("Rows"),EndOfBlock:r.get("EndOfBlock"),BlackIs1:r.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e)return void(this.eof=!0);this.ensureBuffer(this.bufferLength+1),this.buffer[this.bufferLength++]=e}}}t.CCITTFaxStream=s},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CCITTFaxDecoder=void 0,r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144);const a=-1,i=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],s=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],o=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],c=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],l=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],h=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];t.CCITTFaxDecoder=class{constructor(e){var t;let r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');for(this.source=e,this.eof=!1,this.encoding=n.K||0,this.eoline=n.EndOfLine||!1,this.byteAlign=n.EncodedByteAlign||!1,this.columns=n.Columns||1728,this.rows=n.Rows||0,this.eoblock=null===(t=n.EndOfBlock)||void 0===t||t,this.black=n.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===(r=this._lookBits(12));)this._eatBits(1);1===r&&this._eatBits(12),this.encoding>0&&(this.nextLine2D=!this._lookBits(1),this._eatBits(1))}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,r=this.columns;let i,s,o,c,l;if(0===this.outputBits){if(this.rowsDone&&(this.eof=!0),this.eof)return-1;let o,l,h;if(this.err=!1,this.nextLine2D){for(c=0;t[c]=64);do{l+=h=this._getWhiteCode()}while(h>=64)}else{do{o+=h=this._getWhiteCode()}while(h>=64);do{l+=h=this._getBlackCode()}while(h>=64)}for(this._addPixels(t[this.codingPos]+o,s),t[this.codingPos]0?--i:++i;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;e[i]<=t[this.codingPos]&&e[i]=64);else do{o+=h=this._getWhiteCode()}while(h>=64);this._addPixels(t[this.codingPos]+o,s),s^=1}let u=!1;if(this.byteAlign&&(this.inputBits&=-8),this.eoblock||this.row!==this.rows-1){if(o=this._lookBits(12),this.eoline)for(;o!==a&&1!==o;)this._eatBits(1),o=this._lookBits(12);else for(;0===o;)this._eatBits(1),o=this._lookBits(12);1===o?(this._eatBits(12),u=!0):o===a&&(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&&u&&this.byteAlign){if(o=this._lookBits(12),1===o){if(this._eatBits(12),this.encoding>0&&(this._lookBits(1),this._eatBits(1)),this.encoding>=0)for(c=0;c<4;++c)o=this._lookBits(12),1!==o&&(0,n.info)("bad rtc code: "+o),this._eatBits(12),this.encoding>0&&(this._lookBits(1),this._eatBits(1));this.eof=!0}}else if(this.err&&this.eoline){for(;;){if(o=this._lookBits(13),o===a)return this.eof=!0,-1;if(o>>1==1)break;this._eatBits(1)}this._eatBits(12),this.encoding>0&&(this._eatBits(1),this.nextLine2D=!(1&o))}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1],this.row++}if(this.outputBits>=8)l=1&this.codingPos?0:255,this.outputBits-=8,0===this.outputBits&&t[this.codingPos]o?(l<<=o,1&this.codingPos||(l|=255>>8-o),this.outputBits-=o,o=0):(l<<=this.outputBits,1&this.codingPos||(l|=255>>8-this.outputBits),o-=this.outputBits,this.outputBits=0,t[this.codingPos]0&&(l<<=o,o=0))}while(o)}return this.black&&(l^=255),l}_addPixels(e,t){const r=this.codingLine;let 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}_addPixelsNeg(e,t){const r=this.codingLine;let 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=i){const t=r[e-i];if(t[0]===n)return this._eatBits(n),[!0,t[1],!0]}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){var r;if(t=this._lookBits(7),e=i[t],(null===(r=e)||void 0===r?void 0:r[0])>0)return this._eatBits(e[0]),e[1]}else{const e=this._findTableCode(1,7,i);if(e[0]&&e[2])return e[1]}return(0,n.info)("Bad two dim code"),a}_getWhiteCode(){let e,t=0;if(this.eoblock){if(t=this._lookBits(12),t===a)return 1;if(e=t>>5==0?s[t]:o[t>>3],e[0]>0)return this._eatBits(e[0]),e[1]}else{let e=this._findTableCode(1,9,o);if(e[0])return e[1];if(e=this._findTableCode(11,12,s),e[0])return e[1]}return(0,n.info)("bad white code"),this._eatBits(1),1}_getBlackCode(){let e,t;if(this.eoblock){if(e=this._lookBits(13),e===a)return 1;if(t=e>>7==0?c[e]:e>>9==0&&e>>7!=0?l[(e>>1)-64]:h[e>>7],t[0]>0)return this._eatBits(t[0]),t[1]}else{let e=this._findTableCode(2,6,h);if(e[0])return e[1];if(e=this._findTableCode(7,12,l,64),e[0])return e[1];if(e=this._findTableCode(10,13,c),e[0])return e[1]}return(0,n.info)("bad black code"),this._eatBits(1),1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t,this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FlateStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(144);const i=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),o=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),c=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],l=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class h extends n.DecodeStream{constructor(e,t){super(t),this.str=e,this.dict=e.dict;const r=e.getByte(),n=e.getByte();if(-1===r||-1===n)throw new a.FormatError("Invalid header in flate stream: ".concat(r,", ").concat(n));if(8!=(15&r))throw new a.FormatError("Unknown compression method in flate stream: ".concat(r,", ").concat(n));if(((r<<8)+n)%31!=0)throw new a.FormatError("Bad FCHECK in flate stream: ".concat(r,", ").concat(n));if(32&n)throw new a.FormatError("FDICT bit set in flate stream: ".concat(r,", ").concat(n));this.codeSize=0,this.codeBuf=0}getBits(e){const t=this.str;let r,n=this.codeSize,i=this.codeBuf;for(;n>e,this.codeSize=n-=e,r}getCode(e){const t=this.str,r=e[0],n=e[1];let i,s=this.codeSize,o=this.codeBuf;for(;s>16,h=65535&c;if(l<1||s>l,this.codeSize=s-l,h}generateHuffmanTable(e){const t=e.length;let r,n=0;for(r=0;rn&&(n=e[r]);const a=1<>=1;for(r=e;r>=1,0===u){let t;if(-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");let n=t;if(-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");if(n|=t<<8,-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");let i=t;if(-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");if(i|=t<<8,i!==(65535&~n)&&(0!==n||0!==i))throw new a.FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0,this.codeSize=0;const s=this.bufferLength,o=s+n;if(e=this.ensureBuffer(o),this.bufferLength=o,0===n)-1===r.peekByte()&&(this.eof=!0);else{const t=r.getBytes(n);e.set(t,s),t.length0;)u[o++]=g}n=this.generateHuffmanTable(u.subarray(0,e)),h=this.generateHuffmanTable(u.subarray(e,l))}}e=this.buffer;let d=e?e.length:0,f=this.bufferLength;for(;;){let r=this.getCode(n);if(r<256){f+1>=d&&(e=this.ensureBuffer(f+1),d=e.length),e[f++]=r;continue}if(256===r)return void(this.bufferLength=f);r-=257,r=s[r];let a=r>>16;a>0&&(a=this.getBits(a)),t=(65535&r)+a,r=this.getCode(h),r=o[r],a=r>>16,a>0&&(a=this.getBits(a));const i=(65535&r)+a;f+t>=d&&(e=this.ensureBuffer(f+t),d=e.length);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.Jbig2Stream=void 0,r(139);var n=r(151),a=r(168),i=r(150),s=r(174),o=r(144);class c extends a.DecodeStream{constructor(e,t,r){super(t),this.stream=e,this.dict=e.dict,this.maybeLength=t,this.params=r}get bytes(){return(0,o.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new s.Jbig2Image,t=[];if(this.params instanceof i.Dict){const e=this.params.get("JBIG2Globals");if(e instanceof n.BaseStream){const r=e.getBytes();t.push({data:r,start:0,end:r.length})}}t.push({data:this.bytes,start:0,end:this.bytes.length});const r=e.parseChunks(t),a=r.length;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.Jbig2Image=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var n=r(144),a=r(149),i=r(175),s=r(171);class o extends n.BaseException{constructor(e){super("JBIG2 error: ".concat(e),"Jbig2Error")}}class c{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class l{constructor(e,t,r){this.data=e,this.start=t,this.end=r}get decoder(){const e=new i.ArithmeticDecoder(this.data,this.start,this.end);return(0,n.shadow)(this,"decoder",e)}get contextCache(){const e=new c;return(0,n.shadow)(this,"contextCache",e)}}const h=2**31-1,u=-(2**31);function d(e,t,r){const n=e.getContexts(t);let a=1;function i(e){let t=0;for(let i=0;i>>0}const s=i(1),o=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);let c;return 0===s?c=o:o>0&&(c=-o),c>=u&&c<=h?c:null}function f(e,t,r){const n=e.getContexts("IAID");let a=1;for(let e=0;e=O&&D=F)for(X=X<<1&y,m=0;m=0&&_=0&&(j=E[B][_],j&&(X|=j<=e?l<<=1:l=l<<1|k[o][c];for(g=0;g=S||c<0||c>=x?l<<=1:l=l<<1|n[o][c];const h=C.readBit(O,l);t[s]=h}}return k}function x(e,t,r,n,a,i,s,c,l,h,u,g,p,m,b,y,w,x,S){if(e&&t)throw new o("refinement with Huffman is not supported");const A=[];let k,C;for(k=0;k1&&(a=e?S.readBits(x):d(F,"IAIT",O));const i=s*I+a,T=e?m.symbolIDTable.decode(S):f(F,O,l),M=t&&(e?S.readBit():d(F,"IARI",O));let E=c[T],P=E[0].length,R=E.length;if(M){const e=d(F,"IARDW",O),t=d(F,"IARDH",O);P+=e,R+=t,E=v(P,R,b,E,(e>>1)+d(F,"IARDX",O),(t>>1)+d(F,"IARDY",O),!1,y,w)}const N=i-(1&g?0:R-1),D=n-(2&g?P-1:0);let B,L,_;if(h){for(B=0;B>5&7;const h=[31&c];let u=t+6;if(7===c){l=536870911&(0,a.readUint32)(e,u-1),u+=3;let t=l+7>>3;for(h[0]=e[u++];--t>0;)h.push(e[u++])}else if(5===c||6===c)throw new o("invalid referred-to flags");r.retainBits=h;let d=4;r.number<=256?d=1:r.number<=65536&&(d=2);const f=[];let p,m;for(p=0;p>>24&255,i[3]=t.height>>16&255,i[4]=t.height>>8&255,i[5]=255&t.height,p=u,m=e.length;p>2&3,e.huffmanDWSelector=t>>4&3,e.bitmapSizeSelector=t>>6&1,e.aggregationInstancesSelector=t>>7&1,e.bitmapCodingContextUsed=!!(256&t),e.bitmapCodingContextRetained=!!(512&t),e.template=t>>10&3,e.refinementTemplate=t>>12&1,u+=2,!e.huffman){for(h=0===e.template?4:1,c=[],l=0;l>2&3,d.stripSize=1<>4&3,d.transposed=!!(64&f),d.combinationOperator=f>>7&3,d.defaultPixelValue=f>>9&1,d.dsOffset=f<<17>>27,d.refinementTemplate=f>>15&1,d.huffman){const e=(0,a.readUint16)(n,u);u+=2,d.huffmanFS=3&e,d.huffmanDS=e>>2&3,d.huffmanDT=e>>4&3,d.huffmanRefinementDW=e>>6&3,d.huffmanRefinementDH=e>>8&3,d.huffmanRefinementDX=e>>10&3,d.huffmanRefinementDY=e>>12&3,d.huffmanRefinementSizeSelector=!!(16384&e)}if(d.refinement&&!d.refinementTemplate){for(c=[],l=0;l<2;l++)c.push({x:(0,a.readInt8)(n,u),y:(0,a.readInt8)(n,u+1)}),u+=2;d.refinementAt=c}d.numberOfSymbolInstances=(0,a.readUint32)(n,u),u+=4,s=[d,r.referredTo,n,u,i];break;case 16:const g={},p=n[u++];g.mmr=!!(1&p),g.template=p>>1&3,g.patternWidth=n[u++],g.patternHeight=n[u++],g.maxPatternIndex=(0,a.readUint32)(n,u),u+=4,s=[g,r.number,n,u,i];break;case 22:case 23:const m={};m.info=k(n,u),u+=C;const b=n[u++];m.mmr=!!(1&b),m.template=b>>1&3,m.enableSkip=!!(8&b),m.combinationOperator=b>>4&7,m.defaultPixelValue=b>>7&1,m.gridWidth=(0,a.readUint32)(n,u),u+=4,m.gridHeight=(0,a.readUint32)(n,u),u+=4,m.gridOffsetX=4294967295&(0,a.readUint32)(n,u),u+=4,m.gridOffsetY=4294967295&(0,a.readUint32)(n,u),u+=4,m.gridVectorX=(0,a.readUint16)(n,u),u+=2,m.gridVectorY=(0,a.readUint16)(n,u),u+=2,s=[m,r.referredTo,n,u,i];break;case 38:case 39:const y={};y.info=k(n,u),u+=C;const w=n[u++];if(y.mmr=!!(1&w),y.template=w>>1&3,y.prediction=!!(8&w),!y.mmr){for(h=0===y.template?4:1,c=[],l=0;l>2&1,v.combinationOperator=x>>3&3,v.requiresBuffer=!!(32&x),v.combinationOperatorOverride=!!(64&x),s=[v];break;case 49:case 50:case 51:case 62:break;case 53:s=[r.number,n,u,i];break;default:throw new o("segment type ".concat(r.typeName,"(").concat(r.type,") is not implemented"))}const d="on"+r.typeName;d in t&&t[d].apply(t,s)}function F(e,t){for(let r=0,n=e.length;r>3,r=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&r.fill(255),this.buffer=r}drawBitmap(e,t){const r=this.currentPageInfo,n=e.width,a=e.height,i=r.width+7>>3,s=r.combinationOperatorOverride?e.combinationOperator:r.combinationOperator,c=this.buffer,l=128>>(7&e.x);let h,u,d,f,g=e.y*i+(e.x>>3);switch(s){case 0:for(h=0;h>=1,d||(d=128,f++);g+=i}break;case 2:for(h=0;h>=1,d||(d=128,f++);g+=i}break;default:throw new o("operator ".concat(s," is not supported"))}}onImmediateGenericRegion(e,t,r,n){const a=e.info,i=new l(t,r,n),s=w(e.mmr,a.width,a.height,e.template,e.prediction,null,e.at,i);this.drawBitmap(a,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,r,n,i,s){let c,h;e.huffman&&(c=function(e,t,r){let n,a,i,s,c=0;switch(e.huffmanDHSelector){case 0:case 1:n=R(e.huffmanDHSelector+4);break;case 3:n=D(c,t,r),c++;break;default:throw new o("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:a=R(e.huffmanDWSelector+2);break;case 3:a=D(c,t,r),c++;break;default:throw new o("invalid Huffman DW selector")}return e.bitmapSizeSelector?(i=D(c,t,r),c++):i=R(1),s=e.aggregationInstancesSelector?D(c,t,r):R(1),{tableDeltaHeight:n,tableDeltaWidth:a,tableBitmapSize:i,tableAggregateInstances:s}}(e,r,this.customTables),h=new N(n,i,s));let u=this.symbols;u||(this.symbols=u={});const g=[];for(const e of r){const t=u[e];t&&g.push(...t)}const p=new l(n,i,s);u[t]=function(e,t,r,n,i,s,c,l,h,u,g,p){if(e&&t)throw new o("symbol refinement with Huffman is not supported");const m=[];let b=0,y=(0,a.log2)(r.length+n);const S=g.decoder,A=g.contextCache;let k,C;for(e&&(k=R(1),C=[],y=Math.max(y,1));m.length1)o=x(e,t,n,b,0,a,1,r.concat(m),y,0,0,1,0,s,h,u,g,0,p);else{const e=f(A,S,y),t=d(A,"IARDX",S),a=d(A,"IARDY",S);o=v(n,b,h,e=32){let r,n,s;switch(t){case 32:if(0===e)throw new o("no previous value in symbol ID table");n=a.readBits(2)+3,r=i[e-1].prefixLength;break;case 33:n=a.readBits(3)+3,r=0;break;case 34:n=a.readBits(7)+11,r=0;break;default:throw new o("invalid code length in symbol ID table")}for(s=0;s=0;y--)M=e?L(T,h,u,!0):w(!1,h,u,r,!1,null,F,m),I[y]=M;for(E=0;E=0;v--)R^=I[v][E][P],D|=R<>8,j=f+E*g-P*p>>8,_>=0&&_+k<=n&&j>=0&&j+C<=i)for(y=0;y=i))for($=b[t],U=B[y],v=0;v=0&&e>1&7),l=1+(n>>4&7),h=[];let u,d,f=i;do{u=o.readBits(c),d=o.readBits(l),h.push(new T([f,u,d,0])),f+=1<>t&1;if(t<=0)this.children[r]=new M(e);else{let n=this.children[r];n||(this.children[r]=n=new M(null)),n.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new o("invalid Huffman data");return t.decodeNode(e)}}class E{constructor(e,t){t||this.assignPrefixCodes(e),this.rootNode=new M(null);for(let t=0,r=e.length;t0&&this.rootNode.buildTree(r,r.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let r=0;for(let n=0;n=this.end)throw new o("end of data while reading bit");this.currentByte=this.data[this.position++],this.shift=7}const e=this.currentByte>>this.shift&1;return this.shift--,e}readBits(e){let t,r=0;for(t=e-1;t>=0;t--)r|=this.readBit()<=this.end?-1:this.data[this.position++]}}function D(e,t,r){let n=0;for(let a=0,i=t.length;a>r&1,r--}if(n&&!l){const e=5;for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0}),t.ArithmeticDecoder=void 0;const r=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];t.ArithmeticDecoder=class{constructor(e,t,r){this.data=e,this.bp=t,this.dataEnd=r,this.chigh=e[t],this.clow=0,this.byteIn(),this.chigh=this.chigh<<7&65535|this.clow>>9&127,this.clow=this.clow<<7&65535,this.ct-=7,this.a=32768}byteIn(){const e=this.data;let 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)}readBit(e,t){let n=e[t]>>1,a=1&e[t];const i=r[n],s=i.qe;let o,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|a,o}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.JpegStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(150),i=r(177),s=r(144);class o extends n.DecodeStream{constructor(e,t,r){let n;for(;-1!==(n=e.getByte());)if(255===n){e.skip(-1);break}super(t),this.stream=e,this.dict=e.dict,this.maybeLength=t,this.params=r}get bytes(){return(0,s.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e={decodeTransform:void 0,colorTransform:void 0},t=this.dict.getArray("D","Decode");if((this.forceRGBA||this.forceRGB)&&Array.isArray(t)){const r=this.dict.get("BPC","BitsPerComponent")||8,n=t.length,a=new Int32Array(n);let i=!1;const s=(1<{Object.defineProperty(t,"__esModule",{value:!0}),t.JpegImage=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(144),a=r(178),i=r(149);class s extends n.BaseException{constructor(e){super("JPEG error: ".concat(e),"JpegError")}}class o extends n.BaseException{constructor(e,t){super(e,"DNLMarkerError"),this.scanLines=t}}class c extends n.BaseException{constructor(e){super(e,"EOIMarkerError")}}const l=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),h=4017,u=799,d=3406,f=2276,g=1567,p=3784,m=5793,b=2896;function y(e,t){let r,n,a=0,i=16;for(;i>0&&!e[i-1];)i--;const s=[{children:[],index:0}];let o,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];const m=r.mcusPerLine,b=r.progressive,y=t;let v=0,x=0;function S(){if(x>0)return x--,v>>x&1;if(v=e[t++],255===v){const n=e[t++];if(n){if(220===n&&p){t+=2;const n=(0,i.readUint16)(e,t);if(t+=2,n>0&&n!==r.scanLines)throw new o("Found DNL marker (0xFFDC) while parsing scan data",n)}else if(217===n){if(p){const e=M*(8===r.precision?8:0);if(e>0&&Math.round(r.scanLines/e)>=5)throw new o("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect \`scanLines\` parameter",e)}throw new c("Found EOI marker (0xFFD9) while parsing scan data")}throw new s("unexpected marker ".concat((v<<8|n).toString(16)))}}return x=7,v>>>7}function k(e){let t=e;for(;;){switch(t=t[S()],typeof t){case"number":return t;case"object":continue}throw new s("invalid huffman sequence")}}function C(e){let t=0;for(;e>0;)t=t<<1|S(),e--;return t}function O(e){if(1===e)return 1===S()?1:-1;const t=C(e);return t>=1<0)return void I--;let r=u;const n=d;for(;r<=n;){const n=k(e.huffmanTableAC),a=15&n,i=n>>4;if(0===a){if(i<15){I=C(i)+(1<>4,0===a)o<15?(I=C(o)+(1<>4;if(0===n){if(i<15)break;a+=16;continue}a+=i;const s=l[a];e.blockData[t+s]=O(n),a++}};let U,$=0;const X=1===R?a[0].blocksPerLine*a[0].blocksPerColumn:m*r.mcusPerColumn;let H,q;for(;$<=X;){const r=h?Math.min(X-$,h):X;if(r>0){for(D=0;D0?"unexpected":"excessive";(0,n.warn)("decodeScan - ".concat(e," MCU data, current marker is: ").concat(U.invalid)),t=U.offset}if(!(U.marker>=65488&&U.marker<=65495))break;t+=2}return t-y}function x(e,t,r){const n=e.quantizationTable,a=e.blockData;let i,o,c,l,y,w,v,x,S,A,k,C,O,F,I,T,M;if(!n)throw new s("missing required Quantization Table.");for(let e=0;e<64;e+=8)S=a[t+e],A=a[t+e+1],k=a[t+e+2],C=a[t+e+3],O=a[t+e+4],F=a[t+e+5],I=a[t+e+6],T=a[t+e+7],S*=n[e],0!=(A|k|C|O|F|I|T)?(A*=n[e+1],k*=n[e+2],C*=n[e+3],O*=n[e+4],F*=n[e+5],I*=n[e+6],T*=n[e+7],i=m*S+128>>8,o=m*O+128>>8,c=k,l=I,y=b*(A-T)+128>>8,x=b*(A+T)+128>>8,w=C<<4,v=F<<4,i=i+o+1>>1,o=i-o,M=c*p+l*g+128>>8,c=c*g-l*p+128>>8,l=M,y=y+v+1>>1,v=y-v,x=x+w+1>>1,w=x-w,i=i+l+1>>1,l=i-l,o=o+c+1>>1,c=o-c,M=y*f+x*d+2048>>12,y=y*d-x*f+2048>>12,x=M,M=w*u+v*h+2048>>12,w=w*h-v*u+2048>>12,v=M,r[e]=i+x,r[e+7]=i-x,r[e+1]=o+v,r[e+6]=o-v,r[e+2]=c+w,r[e+5]=c-w,r[e+3]=l+y,r[e+4]=l-y):(M=m*S+512>>10,r[e]=M,r[e+1]=M,r[e+2]=M,r[e+3]=M,r[e+4]=M,r[e+5]=M,r[e+6]=M,r[e+7]=M);for(let e=0;e<8;++e)S=r[e],A=r[e+8],k=r[e+16],C=r[e+24],O=r[e+32],F=r[e+40],I=r[e+48],T=r[e+56],0!=(A|k|C|O|F|I|T)?(i=m*S+2048>>12,o=m*O+2048>>12,c=k,l=I,y=b*(A-T)+2048>>12,x=b*(A+T)+2048>>12,w=C,v=F,i=4112+(i+o+1>>1),o=i-o,M=c*p+l*g+2048>>12,c=c*g-l*p+2048>>12,l=M,y=y+v+1>>1,v=y-v,x=x+w+1>>1,w=x-w,i=i+l+1>>1,l=i-l,o=o+c+1>>1,c=o-c,M=y*f+x*d+2048>>12,y=y*d-x*f+2048>>12,x=M,M=w*u+v*h+2048>>12,w=w*h-v*u+2048>>12,v=M,S=i+x,T=i-x,A=o+v,I=o-v,k=c+w,F=c-w,C=l+y,O=l-y,S<16?S=0:S>=4080?S=255:S>>=4,A<16?A=0:A>=4080?A=255:A>>=4,k<16?k=0:k>=4080?k=255:k>>=4,C<16?C=0:C>=4080?C=255:C>>=4,O<16?O=0:O>=4080?O=255:O>>=4,F<16?F=0:F>=4080?F=255:F>>=4,I<16?I=0:I>=4080?I=255:I>>=4,T<16?T=0:T>=4080?T=255:T>>=4,a[t+e]=S,a[t+e+8]=A,a[t+e+16]=k,a[t+e+24]=C,a[t+e+32]=O,a[t+e+40]=F,a[t+e+48]=I,a[t+e+56]=T):(M=m*S+8192>>14,M=M<-2040?0:M>=2024?255:M+2056>>4,a[t+e]=M,a[t+e+8]=M,a[t+e+16]=M,a[t+e+24]=M,a[t+e+32]=M,a[t+e+40]=M,a[t+e+48]=M,a[t+e+56]=M)}function S(e,t){const r=t.blocksPerLine,n=t.blocksPerColumn,a=new Int16Array(64);for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:t;const n=e.length-1;let a=r=n)return null;const s=(0,i.readUint16)(e,t);if(s>=65472&&s<=65534)return{invalid:null,marker:s,offset:t};let o=(0,i.readUint16)(e,a);for(;!(o>=65472&&o<=65534);){if(++a>=n)return null;o=(0,i.readUint16)(e,a)}return{invalid:s.toString(16),marker:o,offset:a}}t.JpegImage=class{constructor(){let{decodeTransform:e=null,colorTransform:t=-1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._decodeTransform=e,this._colorTransform=t}parse(e){let{dnlScanLines:t=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};function r(){const t=(0,i.readUint16)(e,d);d+=2;let r=d+t-2;const a=A(e,r,d);null!=a&&a.invalid&&((0,n.warn)("readDataBlock - incorrect length, current marker is: "+a.invalid),r=a.offset);const s=e.subarray(d,r);return d+=s.length,s}function a(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),r=Math.ceil(e.scanLines/8/e.maxV);for(const n of e.components){const a=Math.ceil(Math.ceil(e.samplesPerLine/8)*n.h/e.maxH),i=Math.ceil(Math.ceil(e.scanLines/8)*n.v/e.maxV),s=t*n.h,o=r*n.v*64*(s+1);n.blockData=new Int16Array(o),n.blocksPerLine=a,n.blocksPerColumn=i}e.mcusPerLine=t,e.mcusPerColumn=r}let h,u,d=0,f=null,g=null,p=0;const m=[],b=[],w=[];let x=(0,i.readUint16)(e,d);if(d+=2,65496!==x)throw new s("SOI not found");x=(0,i.readUint16)(e,d),d+=2;e:for(;65497!==x;){let S,k,C;switch(x){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:const O=r();65504===x&&74===O[0]&&70===O[1]&&73===O[2]&&70===O[3]&&0===O[4]&&(f={version:{major:O[5],minor:O[6]},densityUnits:O[7],xDensity:O[8]<<8|O[9],yDensity:O[10]<<8|O[11],thumbWidth:O[12],thumbHeight:O[13],thumbData:O.subarray(14,14+3*O[12]*O[13])}),65518===x&&65===O[0]&&100===O[1]&&111===O[2]&&98===O[3]&&101===O[4]&&(g={version:O[5]<<8|O[6],flags0:O[7]<<8|O[8],flags1:O[9]<<8|O[10],transformCode:O[11]});break;case 65499:const F=(0,i.readUint16)(e,d);d+=2;const I=F+d-2;let T;for(;d>4==0)for(k=0;k<64;k++)T=l[k],r[T]=e[d++];else{if(t>>4!=1)throw new s("DQT - invalid table spec");for(k=0;k<64;k++)T=l[k],r[T]=(0,i.readUint16)(e,d),d+=2}m[15&t]=r}break;case 65472:case 65473:case 65474:if(h)throw new s("Only single frame JPEGs supported");d+=2,h={},h.extended=65473===x,h.progressive=65474===x,h.precision=e[d++];const M=(0,i.readUint16)(e,d);d+=2,h.scanLines=t||M,h.samplesPerLine=(0,i.readUint16)(e,d),d+=2,h.components=[],h.componentIds={};const E=e[d++];let P=0,R=0;for(S=0;S>4,n=15&e[d+1];P>4==0?w:b)[15&t]=y(r,a)}break;case 65501:d+=2,u=(0,i.readUint16)(e,d),d+=2;break;case 65498:const D=1==++p&&!t;d+=2;const B=e[d++],L=[];for(S=0;S>4],n.huffmanTableAC=b[15&a],L.push(n)}const _=e[d++],j=e[d++],U=e[d++];try{const t=v(e,d,h,L,u,_,j,U>>4,15&U,D);d+=t}catch(t){if(t instanceof o)return(0,n.warn)("".concat(t.message," -- attempting to re-parse the JPEG image.")),this.parse(e,{dnlScanLines:t.scanLines});if(t instanceof c){(0,n.warn)("".concat(t.message," -- ignoring the rest of the image data."));break e}throw t}break;case 65500:d+=4;break;case 65535:255!==e[d]&&d--;break;default:const $=A(e,d-2,d-3);if(null!=$&&$.invalid){(0,n.warn)("JpegImage.parse - unexpected data, current marker is: "+$.invalid),d=$.offset;break}if(!$||d>=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 s("JpegImage.parse - unknown marker: "+x.toString(16))}x=(0,i.readUint16)(e,d),d+=2}this.width=h.samplesPerLine,this.height=h.scanLines,this.jfif=f,this.adobe=g,this.components=[];for(const e of h.components){const t=m[e.quantizationId];t&&(e.quantizationTable=t),this.components.push({index:e.index,output:S(0,e),scaleX:e.h/h.maxH,scaleY:e.v/h.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.width/e,a=this.height/t;let i,s,o,c,l,h,u,d,f,g,p,m=0;const b=this.components.length,y=e*t*b,w=new Uint8ClampedArray(y),v=new Uint32Array(e),x=4294967288;let S;for(u=0;u>8)+A[f+1];return w}get _isColorConversionNeeded(){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}_convertYccToRgb(e){let t,r,n;for(let a=0,i=e.length;a4)throw new s("Unsupported color mode");const c=this._getLinearizedBlockData(t,r,o);if(1===this.numComponents&&(n||i)){const e=c.length*(n?4:3),t=new Uint8ClampedArray(e);let r=0;if(n)(0,a.grayToRGBA)(c,new Uint32Array(t.buffer));else for(const e of c)t[r++]=e,t[r++]=e,t[r++]=e;return t}if(3===this.numComponents&&this._isColorConversionNeeded){if(n){const e=new Uint8ClampedArray(c.length/3*4);return this._convertYccToRgba(c,e)}return this._convertYccToRgb(c)}if(4===this.numComponents){if(this._isColorConversionNeeded)return n?this._convertYcckToRgba(c):i?this._convertYcckToRgb(c):this._convertYcckToCmyk(c);if(n)return this._convertCmykToRgba(c);if(i)return this._convertCmykToRgb(c)}return c}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.convertBlackAndWhiteToRGBA=a,t.convertToRGBA=function(e){switch(e.kind){case n.ImageKind.GRAYSCALE_1BPP:return a(e);case n.ImageKind.RGB_24BPP:return function(e){let{src:t,srcPos:r=0,dest:a,destPos:i=0,width:s,height:o}=e,c=0;const l=t.length>>2,h=new Uint32Array(t.buffer,r,l);if(n.FeatureTest.isLittleEndian){for(;c>>24|t<<8|4278190080,a[i+2]=t>>>16|r<<16|4278190080,a[i+3]=r>>>8|4278190080}for(let e=4*c,r=t.length;e>>8|255,a[i+2]=t<<16|r>>>16|255,a[i+3]=r<<8|255}for(let e=4*c,r=t.length;e>3,f=7&i,g=t.length;a=new Uint32Array(a.buffer);let p=0;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.JpxStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(180),i=r(144);class s extends n.DecodeStream{constructor(e,t,r){super(t),this.stream=e,this.dict=e.dict,this.maybeLength=t,this.params=r}get bytes(){return(0,i.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new a.JpxImage;e.parse(this.bytes);const t=e.width,r=e.height,n=e.componentsCount,i=e.tiles.length;if(1===i)this.buffer=e.tiles[0].items;else{const a=new Uint8ClampedArray(t*r*n);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.JpxImage=void 0,r(139),r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(149),s=r(175);class o extends n.BaseException{constructor(e){super("JPX error: ".concat(e),"JpxError")}}const c={LL:0,LH:1,HL:1,HH:2};function l(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 h(e,t){const r=e.SIZ,n=[];let a;const i=Math.ceil((r.Xsiz-r.XTOsiz)/r.XTsiz),s=Math.ceil((r.Ysiz-r.YTOsiz)/r.YTsiz);for(let e=0;e0?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 d(e,t,r){const n=1<t.trx0?Math.ceil(t.trx1/n)-Math.floor(t.trx0/n):0,l=t.try1>t.try0?Math.ceil(t.try1/a)-Math.floor(t.try0/a):0,h=c*l;t.precinctParameters={precinctWidth:n,precinctHeight:a,numprecinctswide:c,numprecinctshigh:l,numprecincts:h,precinctWidthInSubband:s,precinctHeightInSubband:o}}function f(e,t,r){const n=r.xcb_,a=r.ycb_,i=1<>n,c=t.tby0>>a,l=t.tbx1+i-1>>n,h=t.tby1+s-1>>a,u=t.resolution.precinctParameters,d=[],f=[];let g,p,m,b;for(p=c;pe.cbxMax&&(e.cbxMax=g),pe.cbyMax&&(e.cbyMax=p)):f[b]=e={cbxMin:g,cbyMin:p,cbxMax:g,cbyMax:p},m.precinct=e}t.codeblockParameters={codeblockWidth:n,codeblockHeight:a,numcodeblockwide:l-o+1,numcodeblockhigh:h-c+1},t.codeblocks=d,t.precincts=f}function g(e,t,r){const n=[],a=e.subbands;for(let e=0,r=a.length;ee.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[l],r=t.precinctParameters.numprecincts;for(;ue.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],r=t.precinctParameters.numprecincts;for(;ue.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],r=t.precinctParameters.numprecincts;if(!(h>=r)){for(;s=0;--e){const r=t.resolutions[e],n=g*r.precinctParameters.precinctWidth,a=g*r.precinctParameters.precinctHeight;h=Math.min(h,n),u=Math.min(u,a),d=Math.max(d,r.precinctParameters.numprecinctswide),f=Math.max(f,r.precinctParameters.numprecinctshigh),l[e]={width:n,height:a},g<<=1}r=Math.min(r,h),n=Math.min(n,u),a=Math.max(a,d),i=Math.max(i,f),s[o]={resolutions:l,minWidth:h,minHeight:u,maxNumWide:d,maxNumHigh:f}}return{components:s,minWidth:r,minHeight:n,maxNumWide:a,maxNumHigh:i}}function S(e){const t=e.SIZ,r=e.currentTile.index,n=e.tiles[r],a=t.Csiz;for(let e=0;e>>c&(1<0;){const e=i.shift();c=e.codeblock,void 0===c.data&&(c.data=[]),c.data.push({data:t,start:r+s,end:r+s+e.dataLength,codingpasses:e.codingpasses}),s+=e.dataLength}}return s}function k(e,t,r,n,a,i,o,c,l){const h=n.tbx0,u=n.tby0,d=n.tbx1-n.tbx0,f=n.codeblocks,g="H"===n.type.charAt(0)?1:0,p="H"===n.type.charAt(1)?t:0;for(let r=0,m=f.length;r=i?L:L*(1<0?1-e:0));const p=t.subbands[n],m=c[p.type];k(i,r,0,p,g?1:2**(f+m-s)*(1+a/2048),h+s-1,g,u,d)}m.push({width:r,height:a,items:i})}const y=p.calculate(m,n.tcx0,n.tcy0);return{left:n.tcx0,top:n.tcy0,width:y.width,height:y.height,items:y.items}}function O(e,t){const r=e.SIZ.Csiz,n=e.tiles[t];for(let t=0;t>24&255,c>>16&255,c>>8&255,255&c);(0,n.warn)("Unsupported header type ".concat(c," (").concat(i,")."))}h&&(r+=l)}}parseImageProperties(e){let t=e.getByte();for(;t>=0;){const r=t;if(t=e.getByte(),65361==(r<<8|t)){e.skip(4);const t=e.getInt32()>>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0,a=e.getInt32()>>>0;e.skip(16);const i=e.getUint16();return this.width=t-n,this.height=r-a,this.componentsCount=i,void(this.bitsPerComponent=8)}}throw new o("No size marker found in JPX stream")}parseCodestream(e,t,r){const i={};let s=!1;try{let o=t;for(;o+1>5,u=[];r>3,t.mu=0):(t.epsilon=e[r]>>3,t.mu=(7&e[r])<<8|e[r+1],r+=2),u.push(t)}w.SPqcds=u,i.mainHeader?i.QCD=w:(i.currentTile.QCD=w,i.currentTile.QCC=[]);break;case 65373:p=(0,a.readUint16)(e,o);const v={};let x;switch(r=o+2,i.SIZ.Csiz<257?x=e[r++]:(x=(0,a.readUint16)(e,r),r+=2),c=e[r++],31&c){case 0:d=8,f=!0;break;case 1:d=16,f=!1;break;case 2:d=16,f=!0;break;default:throw new Error("Invalid SQcd value "+c)}for(v.noQuantization=8===d,v.scalarExpounded=f,v.guardBits=c>>5,u=[];r>3,t.mu=0):(t.epsilon=e[r]>>3,t.mu=(7&e[r])<<8|e[r+1],r+=2),u.push(t)}v.SPqcds=u,i.mainHeader?i.QCC[x]=v:i.currentTile.QCC[x]=v;break;case 65362:p=(0,a.readUint16)(e,o);const k={};r=o+2;const C=e[r++];k.entropyCoderWithCustomPrecincts=!!(1&C),k.sopMarkerUsed=!!(2&C),k.ephMarkerUsed=!!(4&C),k.progressionOrder=e[r++],k.layersCount=(0,a.readUint16)(e,r),r+=2,k.multipleComponentTransform=e[r++],k.decompositionLevelsCount=e[r++],k.xcb=2+(15&e[r++]),k.ycb=2+(15&e[r++]);const F=e[r++];if(k.selectiveArithmeticCodingBypass=!!(1&F),k.resetContextProbabilities=!!(2&F),k.terminationOnEachCodingPass=!!(4&F),k.verticallyStripe=!!(8&F),k.predictableTermination=!!(16&F),k.segmentationSymbolUsed=!!(32&F),k.reversibleTransformation=e[r++],k.entropyCoderWithCustomPrecincts){const t=[];for(;r>4})}k.precinctsSizes=t}const I=[];k.selectiveArithmeticCodingBypass&&I.push("selectiveArithmeticCodingBypass"),k.terminationOnEachCodingPass&&I.push("terminationOnEachCodingPass"),k.verticallyStripe&&I.push("verticallyStripe"),k.predictableTermination&&I.push("predictableTermination"),I.length>0&&(s=!0,(0,n.warn)("JPX: Unsupported COD options (".concat(I.join(", "),")."))),i.mainHeader?i.COD=k:(i.currentTile.COD=k,i.currentTile.COC=[]);break;case 65424:p=(0,a.readUint16)(e,o),g={},g.index=(0,a.readUint16)(e,o+2),g.length=(0,a.readUint32)(e,o+4),g.dataEnd=g.length+o-2,g.partIndex=e[o+8],g.partsCount=e[o+9],i.mainHeader=!1,0===g.partIndex&&(g.COD=i.COD,g.COC=i.COC.slice(0),g.QCD=i.QCD,g.QCC=i.QCC.slice(0)),i.currentTile=g;break;case 65427:g=i.currentTile,0===g.partIndex&&(O(i,g.index),S(i)),p=g.dataEnd-o,A(i,e,o,p);break;case 65363:(0,n.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:p=(0,a.readUint16)(e,o);break;default:throw new Error("Unknown codestream code: "+t.toString(16))}o+=p}}catch(e){if(s||this.failOnCorruptedImage)throw new o(e.message);(0,n.warn)('JPX: Trying to recover from: "'.concat(e.message,'".'))}this.tiles=function(e){const t=e.SIZ,r=e.components,n=t.Csiz,a=[];for(let t=0,i=e.tiles.length;t>2);c[b++]=e+m>>h,c[b++]=e>>h,c[b++]=e+p>>h}else for(d=0;d>h,c[b++]=g-.34413*p-.71414*m>>h,c[b++]=g+1.772*p>>h;if(e)for(d=0,b=3;d>h}else for(let e=0;e>h,b+=n}a.push(l)}return a}(i),this.width=i.SIZ.Xsiz-i.SIZ.XOsiz,this.height=i.SIZ.Ysiz-i.SIZ.YOsiz,this.componentsCount=i.SIZ.Csiz}};class F{constructor(e,t){const r=(0,a.log2)(Math.max(e,t))+1;this.levels=[];for(let n=0;n>=1,t>>=1,n++}n--,r=this.levels[n],r.items[r.index]=a,this.currentLevel=n,delete this.value}incrementValue(){const e=this.levels[this.currentLevel];e.items[e.index]++}nextLevel(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];return e--,e<0?(this.value=r,!1):(this.currentLevel=e,t=this.levels[e],t.items[t.index]=r,!0)}}class I{constructor(e,t,r){const n=(0,a.log2)(Math.max(e,t))+1;this.levels=[];for(let a=0;ar)return this.currentLevel=n,this.propagateValues(),!1;e>>=1,t>>=1,n++}return this.currentLevel=n-1,!0}incrementValue(e){const t=this.levels[this.currentLevel];t.items[t.index]=e+1,this.propagateValues()}propagateValues(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];for(;--e>=0;)t=this.levels[e],t.items[t.index]=r}nextLevel(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];return t.items[t.index]=255,e--,!(e<0||(this.currentLevel=e,t=this.levels[e],t.items[t.index]=r,0))}}class T{constructor(e,t,r,n,a){let i;this.width=e,this.height=t,i="HH"===r?T.HHContextLabel:"HL"===r?T.HLContextLabel:T.LLAndLHContextsLabel,this.contextLabelTable=i;const s=e*t;let o;this.neighborsSignificance=new Uint8Array(s),this.coefficentsSign=new Uint8Array(s),o=a>14?new Uint32Array(s):a>6?new Uint16Array(s):new Uint8Array(s),this.coefficentsMagnitude=o,this.processingFlags=new Uint8Array(s);const c=new Uint8Array(s);if(0!==n)for(let e=0;e0,o=t+10&&(c=r-a,s&&(n[c-1]+=16),o&&(n[c+1]+=16),n[c]+=4),e+1=r)break;if(s[d]&=-2,n[d]||!i[d])continue;const g=c[i[d]];if(e.readBit(o,g)){const e=this.decodeSignBit(t,u,d);a[d]=e,n[d]=1,this.setNeighborsSignificance(t,u,d),s[d]|=2}l[d]++,s[d]|=1}}}decodeSignBit(e,t,r){const n=this.width,a=this.height,i=this.coefficentsMagnitude,s=this.coefficentsSign;let o,c,l,h,u,d;h=t>0&&0!==i[r-1],t+10&&0!==i[r-n],e+1=0?(u=9+o,d=this.decoder.readBit(this.contexts,u)):(u=9-o,d=1^this.decoder.readBit(this.contexts,u)),d}runMagnitudeRefinementPass(){const e=this.decoder,t=this.width,r=this.height,n=this.coefficentsMagnitude,a=this.neighborsSignificance,i=this.contexts,s=this.bitsDecoded,o=this.processingFlags,c=t*r,l=4*t;for(let r,h=0;h>1;let a,i,s,o;const c=-1.586134342059924,l=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;for(a=(t|=0)-3,i=n+4;i--;a+=2)e[a]*=.8128930661159609;for(a=t-2,s=u*e[a-1],i=n+3;i--&&(o=u*e[a+1],e[a]=d*e[a]-s-o,i--);a+=2)a+=2,s=u*e[a+1],e[a]=d*e[a]-s-o;for(a=t-1,s=h*e[a-1],i=n+2;i--&&(o=h*e[a+1],e[a]-=s+o,i--);a+=2)a+=2,s=h*e[a+1],e[a]-=s+o;for(a=t,s=l*e[a-1],i=n+1;i--&&(o=l*e[a+1],e[a]-=s+o,i--);a+=2)a+=2,s=l*e[a+1],e[a]-=s+o;if(0!==n)for(a=t+1,s=c*e[a-1],i=n;i--&&(o=c*e[a+1],e[a]-=s+o,i--);a+=2)a+=2,s=c*e[a+1],e[a]-=s+o}}class P extends M{filter(e,t,r){const n=r>>1;let a,i;for(a=t|=0,i=n+1;i--;a+=2)e[a]-=e[a-1]+e[a+1]+2>>2;for(a=t+1,i=n;i--;a+=2)e[a]+=e[a-1]+e[a+1]>>1}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LZWStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168);class a extends n.DecodeStream{constructor(e,t,r){super(t),this.str=e,this.dict=e.dict,this.cachedData=0,this.bitsCached=0;const n=4096,a={earlyChange:r,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(n),dictionaryLengths:new Uint16Array(n),dictionaryPrevCodes:new Uint16Array(n),currentSequence:new Uint8Array(n),currentSequenceLength:0};for(let e=0;e<256;++e)a.dictionaryValues[e]=e,a.dictionaryLengths[e]=1;this.lzwState=a}readBits(e){let t=this.bitsCached,r=this.cachedData;for(;t>>t&(1<0;if(e<256)d[0]=e,f=1;else{if(!(e>=258)){if(256===e){h=9,s=258,f=0;continue}this.eof=!0,delete this.lzwState;break}if(e=0;t--)d[t]=o[r],r=l[r];else d[f++]=d[0]}if(a&&(l[s]=u,c[s]=c[u]+1,o[s]=d[0],s++,h=s+i&s+i-1?h:0|Math.min(Math.log(s+i)/.6931471805599453+1,12)),u=e,g+=f,n{Object.defineProperty(t,"__esModule",{value:!0}),t.PredictorStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(150),i=r(144);class s extends n.DecodeStream{constructor(e,t,r){if(super(t),!(r instanceof a.Dict))return e;const n=this.predictor=r.get("Predictor")||1;if(n<=1)return e;if(2!==n&&(n<10||n>15))throw new i.FormatError("Unsupported predictor: ".concat(n));this.readBlock=2===n?this.readBlockTiff:this.readBlockPng,this.str=e,this.dict=e.dict;const s=this.colors=r.get("Colors")||1,o=this.bits=r.get("BPC","BitsPerComponent")||8,c=this.columns=r.get("Columns")||1;return this.pixBytes=s*o+7>>3,this.rowBytes=c*s*o+7>>3,this}readBlockTiff(){const 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)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===n&&1===a)for(s=0;s>1,e^=e>>2,e^=e>>4,o=(1&e)<<7,r[u++]=e}else if(8===n){for(s=0;s>8&255,r[u++]=255&e}}else{const e=new Uint8Array(a+1),u=(1<>l-n)&u,l-=n,c=c<=8&&(r[f++]=c>>h-8&255,h-=8);h>0&&(r[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,r=this.str.getByte(),n=this.str.getBytes(e);if(this.eof=!n.length,this.eof)return;const a=this.bufferLength,s=this.ensureBuffer(a+e);let o=s.subarray(a-e,a);0===o.length&&(o=new Uint8Array(e));let c,l,h,u=a;switch(r){case 0:for(c=0;c>1)+n[c];for(;c>1)+n[c]&255,u++;break;case 4:for(c=0;c{Object.defineProperty(t,"__esModule",{value:!0}),t.RunLengthStream=void 0;var n=r(168);class a extends n.DecodeStream{constructor(e,t){super(t),this.str=e,this.dict=e.dict}readBlock(){const e=this.str.getBytes(2);if(!e||e.length<2||128===e[0])return void(this.eof=!0);let t,r=this.bufferLength,n=e[0];if(n<128){if(t=this.ensureBuffer(r+n+1),t[r++]=e[1],n>0){const e=this.str.getBytes(n);t.set(e,r),r+=n}}else{n=257-n;const a=e[1];t=this.ensureBuffer(r+n+1);for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.Font=t.ErrorFont=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(157),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(185),i=r(188),s=r(190),o=r(189),c=r(187),l=r(191),h=r(192),u=r(193),d=r(194),f=r(195),g=r(196),p=r(164),m=r(197),b=r(149),y=r(154),w=r(198);const v=[[57344,63743],[1048576,1114109]],x=1e3,S=["ascent","bbox","black","bold","charProcOperatorList","composite","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","fallbackName","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","subtype","systemFontInfo","type","vertical"],A=["cMap","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","toFontChar","toUnicode","vmetrics","widths"];function k(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===n.FONT_IDENTITY_MATRIX[0])return;const t=.001/e.fontMatrix[0],r=e.widths;for(const e in r)r[e]*=t;e.defaultWidth*=t}function C(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const t=[];for(const r in e.fallbackToUnicode)e.toUnicode.has(r)||(t[r]=e.fallbackToUnicode[r]);t.length>0&&e.toUnicode.amend(t)}class O{constructor(e,t,r,n,a,i,s,o,c){this.originalCharCode=e,this.fontChar=t,this.unicode=r,this.accent=n,this.width=a,this.vmetric=i,this.operatorListId=s,this.isSpace=o,this.isInFont=c}get category(){return(0,n.shadow)(this,"category",(0,s.getCharUnicodeCategory)(this.unicode),!0)}}function F(e,t){return(e<<8)+t}function I(e,t,r){e[t+1]=r,e[t]=r>>>8}function T(e,t){const r=(e<<8)+t;return 32768&r?r-65536:r}function M(e){return String.fromCharCode(e>>8&255,255&e)}function E(e){return e>32767?e=32767:e<-32768&&(e=-32768),String.fromCharCode(e>>8&255,255&e)}function P(e){const t=e.peekBytes(4);return"ttcf"===(0,n.bytesToString)(t)}function R(e,t){for(const r in t)e[+r]=t[r]}function N(e,t,r){const n=[];let a;for(let r=0,i=e.length;r2&&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)}const a="Unsupported CID string (charCode ".concat(e,'): "').concat(t,'".');if(r)throw new n.FormatError(a);return(0,n.warn)(a),t}function _(e,t,r,a){const i=Object.create(null),s=new Map,o=[],c=new Set;let l=0,h=v[l][0],u=v[l][1];for(let f in e){f|=0;let g=e[f];if(!t(g))continue;if(h>u){if(l++,l>=v.length){(0,n.warn)("Ran out of space in font private use area.");break}h=v[l][0],u=v[l][1]}const p=h++;0===g&&(g=r);let m=a.get(f);"string"==typeof m&&(m=m.codePointAt(0)),!m||(d=m,v[0][0]<=d&&d<=v[0][1]||v[1][0]<=d&&d<=v[1][1])||c.has(g)||(s.set(m,g),c.add(g)),i[p]=g,o[f]=p}var d;return{toFontChar:o,charCodeToGlyphId:i,toUnicodeExtraMap:s,nextAvailableFontCharCode:h}}function j(e,t,r){const a=function(e,t,r){const n=[];for(const t in e)e[t]>=r||n.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,a]of t)a>=r||n.push({fontCharCode:e,glyphId:a});0===n.length&&n.push({fontCharCode:0,glyphId:0}),n.sort((function(e,t){return e.fontCharCode-t.fontCharCode}));const a=[],i=n.length;for(let e=0;e65535?2:1;let s,o,c,l,h="\\0\\0"+M(i)+"\\0\\0"+(0,n.string32)(4+8*i);for(s=a.length-1;s>=0&&!(a[s][0]<=65535);--s);const u=s+1;a[s][0]<65535&&65535===a[s][1]&&(a[s][1]=65534);const d=a[s][1]<65535?1:0,f=u+d,g=m.OpenTypeFileBuilder.getSearchParams(f,2);let p,b,y,w,v="",x="",S="",A="",k="",C=0;for(s=0,o=u;s0&&(x+="ÿÿ",v+="ÿÿ",S+="\\0",A+="\\0\\0");const O="\\0\\0"+M(2*f)+M(g.range)+M(g.entry)+M(g.rangeShift)+x+"\\0\\0"+v+S+A+k;let F="",I="";if(i>1){for(h+="\\0\\0\\n"+(0,n.string32)(4+8*i+4+O.length),F="",s=0,o=a.length;se||!l)&&(l=e),h 123 are reserved for internal usage");c|=1<65535&&(h=65535)}else l=0,h=255;const d=e.bbox||[0,0,0,0],f=r.unitsPerEm||1/(e.fontMatrix||n.FONT_IDENTITY_MATRIX)[0],g=e.ascentScaled?1:f/x,p=r.ascent||Math.round(g*(e.ascent||d[3]));let m=r.descent||Math.round(g*(e.descent||d[1]));m>0&&e.descent>0&&d[1]<0&&(m=-m);const b=r.yMax||p,y=-r.yMin||-m;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)(o)+(0,n.string32)(c)+"*21*"+M(e.italicAngle?1:0)+M(l||e.firstChar)+M(h||e.lastChar)+M(p)+M(m)+"\\0d"+M(b)+M(y)+"\\0\\0\\0\\0\\0\\0\\0\\0"+M(e.xHeight)+M(e.capHeight)+M(0)+M(l||e.firstChar)+"\\0"}function $(e){const t=Math.floor(65536*e.italicAngle);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 X(e){return e.replaceAll(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g,"").slice(0,63)}function H(e,t){t||(t=[[],[]]);const r=[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]||X(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],n=[];let a,i,s,o,c;for(a=0,i=r.length;a=1&&t[3]>=1&&t[3]<=4}(e)?o?(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=s),[r,a]}(t,r),o===this.type&&c===this.subtype||(0,n.info)("Inconsistent font file Type/SubType, expected: ".concat(this.type,"/").concat(this.subtype," but found: ").concat(o,"/").concat(c,"."));try{switch(o){case"MMType1":(0,n.info)("MMType1 font ("+e+"), falling back to Type1.");case"Type1":case"CIDFontType0":this.mimetype="font/opentype";const a="Type1C"===c||"CIDFontType0C"===c?new u.CFFFont(t,r):new w.Type1Font(e,t,r);k(r),d=this.convert(e,a,r);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype",d=this.checkAndRepair(e,t,r),this.isOpenType&&(k(r),o="OpenType");break;default:throw new n.FormatError("Font ".concat(o," is not supported"))}}catch(e){return(0,n.warn)(e),void this.fallbackToSystemFont(r)}C(r),this.data=d,this.type=o,this.subtype=c,this.fontMatrix=r.fontMatrix,this.widths=r.widths,this.defaultWidth=r.defaultWidth,this.toUnicode=r.toUnicode,this.seacMap=r.seacMap}get renderer(){const e=d.FontRendererFactory.create(this,i.SEAC_ANALYSIS_ENABLED);return(0,n.shadow)(this,"renderer",e)}exportData(){const e=arguments.length>0&&void 0!==arguments[0]&&arguments[0]?[...S,...A]:S,t=Object.create(null);let r,n;for(r of e)n=this[r],void 0!==n&&(t[r]=n);return t}fallbackToSystemFont(e){this.missingFile=!0;const{name:t,type:r}=this;let n=(0,i.normalizeFontName)(t);const a=(0,l.getStdFontMap)(),u=(0,l.getNonStdFontMap)(),d=!!a[n],g=!(!u[n]||!a[u[n]]);n=a[n]||u[n]||n;const p=(0,f.getFontBasicMetrics)()[n];p&&(isNaN(this.ascent)&&(this.ascent=p.ascent/x),isNaN(this.descent)&&(this.descent=p.descent/x),isNaN(this.capHeight)&&(this.capHeight=p.capHeight/x)),this.bold=/bold/gi.test(n),this.italic=/oblique|italic/gi.test(n),this.black=/Black/g.test(t);const m=/Narrow/g.test(t);if(this.remeasure=(!d||m)&&Object.keys(this.widths).length>0,(d||g)&&"CIDFontType2"===r&&this.cidEncoding.startsWith("Identity-")){const r=e.cidToGidMap,n=[];if(R(n,(0,l.getGlyphMapForStandardFonts)()),/Arial-?Black/i.test(t)?R(n,(0,l.getSupplementalGlyphMapForArialBlack)()):/Calibri/i.test(t)&&R(n,(0,l.getSupplementalGlyphMapForCalibri)()),r){for(const e in n){const t=n[e];void 0!==r[t]&&(n[+e]=r[t])}r.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof h.IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const a=n[e];void 0===r[a]&&(n[+e]=t)}))}this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){n[+e]=t})),this.toFontChar=n,this.toUnicode=new h.ToUnicodeMap(n)}else if(/Symbol/i.test(n))this.toFontChar=N(c.SymbolSetEncoding,(0,o.getGlyphsUnicode)(),this.differences);else if(/Dingbats/i.test(n))this.toFontChar=N(c.ZapfDingbatsEncoding,(0,o.getDingbatsGlyphsUnicode)(),this.differences);else if(d){const e=N(this.defaultEncoding,(0,o.getGlyphsUnicode)(),this.differences);"CIDFontType2"!==r||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(t,r){e[+t]=r})),this.toFontChar=e}else{const e=(0,o.getGlyphsUnicode)(),r=[];this.toUnicode.forEach(((t,n)=>{if(!this.composite){const r=this.differences[t]||this.defaultEncoding[t],a=(0,s.getUnicodeForGlyph)(r,e);-1!==a&&(n=a)}r[+t]=n})),this.composite&&this.toUnicode instanceof h.IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&R(r,(0,l.getGlyphMapForStandardFonts)()),this.toFontChar=r}C(e),this.loadedName=n.split("-")[0]}checkAndRepair(e,t,r){var s,l;const d=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function f(e,t){const 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(let n=0;n>>0,n=e.getInt32()>>>0,a=e.getInt32()>>>0,i=e.pos;e.pos=e.start||0,e.skip(n);const s=e.getBytes(a);return e.pos=i,"head"===t&&(s[8]=s[9]=s[10]=s[11]=0,s[17]|=32),{tag:t,checksum:r,length:a,offset:n,data:s}}function w(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function v(e,t,r,n,a,i){const s={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||r>e.length||r-t<=12)return s;const o=e.subarray(t,r),c=T(o[2],o[3]),l=T(o[4],o[5]),h=T(o[6],o[7]),u=T(o[8],o[9]);c>h&&(I(o,2,h),I(o,6,c)),l>u&&(I(o,4,u),I(o,8,l));const d=T(o[0],o[1]);if(d<0)return d<-1||(n.set(o,a),s.length=o.length),s;let f,g=10,p=0;for(f=0;fo.length?s:!i&&b>0?(n.set(o.subarray(0,m),a),n.set([0,0],a+m),n.set(o.subarray(y,v),a+m+2),v-=b,o.length-v>3&&(v=v+3&-4),s.length=v,s):o.length-v>3?(v=v+3&-4,n.set(o.subarray(0,v),a),s.length=v,s):(n.set(o,a),s.length=o.length,s)}function x(e){const r=(t.start||0)+e.offset;t.pos=r;const n=[[],[]],a=[],i=e.length,s=r+i;if(0!==t.getUint16()||i<6)return[n,a];const o=t.getUint16(),c=t.getUint16();let l,h;for(l=0;ls)continue;t.pos=i;const o=e.name;if(e.encoding){let r="";for(let n=0,a=e.length;n0&&(l+=e-1)}}else(m||y)&&((0,n.warn)("TT: nested FDEFs not allowed"),p=!0),m=!0,u=l,s=d.pop(),t.functionsDefined[s]={data:c,i:l};else if(!m&&!y)if(s=d.at(-1),isNaN(s))(0,n.info)("TT: CALL empty stack (or invalid entry).");else if(t.functionsUsed[s]=!0,s in t.functionsStackDeltas){const e=d.length+t.functionsStackDeltas[s];if(e<0)return(0,n.warn)("TT: CALL invalid functions stack delta."),void(t.hintsValid=!1);d.length=e}else if(s in t.functionsDefined&&!g.includes(s)){if(f.push({data:c,i:l,stackTop:d.length-1}),g.push(s),o=t.functionsDefined[s],!o)return(0,n.warn)("TT: CALL non-existent function"),void(t.hintsValid=!1);c=o.data,l=o.i}if(!m&&!y){let t=0;for(e<=142?t=S[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2),e>=113&&e<=117&&(a=d.pop(),isNaN(a)||(t=2*-a));t<0&&d.length>0;)d.pop(),t++;for(;t>0;)d.push(NaN),t--}}t.tooComplexToFollowFunctions=p;const w=[c];l>c.length&&w.push(new Uint8Array(l-c.length)),u>h&&((0,n.warn)("TT: complementing a missing function tail"),w.push(new Uint8Array([34,45]))),function(e,t){if(t.length>1){let r,n,a=0;for(r=0,n=t.length;r>>0,s=[];for(let t=0;t>>0);const o={ttcTag:t,majorVersion:r,minorVersion:a,numFonts:i,offsetTable:s};switch(r){case 1:return o;case 2:return o.dsigTag=e.getInt32()>>>0,o.dsigLength=e.getInt32()>>>0,o.dsigOffset=e.getInt32()>>>0,o}throw new n.FormatError("Invalid TrueType Collection majorVersion: ".concat(r,"."))}(e),i=t.split("+");let s;for(let c=0;c0||!(r.cMap instanceof p.IdentityCMap));if("OTTO"===C.version&&!t||!O.head||!O.hhea||!O.maxp||!O.post)return E=new y.Stream(O["CFF "].data),M=new u.CFFFont(E,r),k(r),this.convert(e,M,r);delete O.glyf,delete O.loca,delete O.fpgm,delete O.prep,delete O["cvt "],this.isOpenType=!0}if(!O.maxp)throw new n.FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+O.maxp.offset;const X=t.getInt32(),q=t.getUint16();if((null===(s=r.scaleFactors)||void 0===s?void 0:s.length)===q&&R){const{scaleFactors:e}=r,t=F(O.head.data[50],O.head.data[51]),n=new g.GlyfTable({glyfTable:O.glyf.data,isGlyphLocationsLong:t,locaTable:O.loca.data,numGlyphs:q});n.scale(e);const{glyf:a,loca:i,isLocationLong:s}=n.write();O.glyf.data=a,O.loca.data=i,s!==!!t&&(O.head.data[50]=0,O.head.data[51]=s?1:0);const o=O.hmtx.data;for(let t=0;t>8&255,o[r+1]=255&n,I(o,r+2,Math.round(e[t]*T(o[r+2],o[r+3])))}}let z=q+1,G=!0;z>65535&&(G=!1,z=q,(0,n.warn)("Not enough space in glyfs to duplicate first glyph."));let W=0,V=0;X>=65536&&O.maxp.length>=22&&(t.pos+=8,t.getUint16()>2&&(O.maxp.data[14]=0,O.maxp.data[15]=2),t.pos+=4,W=t.getUint16(),t.pos+=4,V=t.getUint16()),O.maxp.data[4]=z>>8,O.maxp.data[5]=255&z;const K=function(e,t,r,a){const i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};if(e&&A(e,i),t&&A(t,i),e&&function(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t)(0,n.warn)("TT: more functions defined than expected"),e.hintsValid=!1;else for(let 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){const e=new Uint8Array(r.length+1);e.set(r.data),r.data=e}return i.hintsValid}(O.fpgm,O.prep,O["cvt "],W);if(K||(delete O.fpgm,delete O.prep,delete O["cvt "]),function(e,t,r,a,i,s){if(!t)return void(r&&(r.data=null));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;const o=e.getUint16();e.pos+=8,e.pos+=2;let c=e.getUint16();0!==o&&(2&F(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);const l=i-c-(r.length-4*c>>1);if(l>0){const e=new Uint8Array(r.length+2*l);e.set(r.data),s&&(e[r.length]=r.data[2],e[r.length+1]=r.data[3]),r.data=e}}(t,O.hhea,O.hmtx,O.head,z,G),!O.head)throw new n.FormatError('Required "head" table is not found');!function(e,t,r){const a=e.data,i=function(e,t,r,n){return(e<<24)+(t<<16)+(r<<8)+n}(a[0],a[1],a[2],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);const s=F(a[50],a[51]);if(s<0||s>1){(0,n.info)("Attempting to fix invalid indexToLocFormat in head table: "+s);const e=t+1;if(r===e<<1)a[50]=0,a[51]=0;else{if(r!==e<<2)throw new n.FormatError("Could not fix indexToLocFormat: "+s);a[50]=0,a[51]=1}}}(O.head,q,R?O.loca.length:0);let Y=Object.create(null);if(R){const e=F(O.head.data[50],O.head.data[51]),t=function(e,t,r,n,a,i,s){let o,c,l;n?(o=4,c=function(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]},l=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}):(o=2,c=function(e,t){return e[t]<<9|e[t+1]<<1},l=function(e,t,r){e[t]=r>>9&255,e[t+1]=r>>1&255});const h=i?r+1:r,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u)),e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g),y.push({index:m,offset:e,endOffset:0})}for(y.sort(((e,t)=>e.offset-t.offset)),m=0;me.index-t.index)),m=0;ms&&(s=e.sizeOfInstructions),x+=t,l(d,b,x)}if(0===x){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;mr+x?t.data=p.subarray(0,r+x):(t.data=new Uint8Array(r+x),t.data.set(p.subarray(0,x))),t.data.set(p.subarray(0,r),x),l(e.data,d.length-o,x+r)}else t.data=p.subarray(0,x);return{missingGlyphs:w,maxSizeOfInstructions:s}}(O.loca,O.glyf,q,e,K,G,V);Y=t.missingGlyphs,X>=65536&&O.maxp.length>=22&&(O.maxp.data[26]=t.maxSizeOfInstructions>>8,O.maxp.data[27]=255&t.maxSizeOfInstructions)}if(!O.hhea)throw new n.FormatError('Required "hhea" table is not found');0===O.hhea.data[10]&&0===O.hhea.data[11]&&(O.hhea.data[10]=255,O.hhea.data[11]=255);const J={unitsPerEm:F(O.head.data[18],O.head.data[19]),yMax:T(O.head.data[42],O.head.data[43]),yMin:T(O.head.data[38],O.head.data[39]),ascent:T(O.hhea.data[4],O.hhea.data[5]),descent:T(O.hhea.data[6],O.hhea.data[7]),lineGap:T(O.hhea.data[8],O.hhea.data[9])};this.ascent=J.ascent/J.unitsPerEm,this.descent=J.descent/J.unitsPerEm,this.lineGap=J.lineGap/J.unitsPerEm,null!==(l=this.cssFontInfo)&&void 0!==l&&l.lineHeight?(this.lineHeight=this.cssFontInfo.metrics.lineHeight,this.lineGap=this.cssFontInfo.metrics.lineGap):this.lineHeight=this.ascent-this.descent+this.lineGap,O.post&&function(e,r,a){const s=(t.start||0)+e.offset;t.pos=s;const o=s+e.length,c=t.getInt32();t.skip(28);let l,h,u=!0;switch(c){case 65536:l=i.MacStandardGlyphOrdering;break;case 131072:const e=t.getUint16();if(e!==a){u=!1;break}const s=[];for(h=0;h=32768){u=!1;break}s.push(e)}if(!u)break;const d=[],f=[];for(;t.pos65535)throw new n.FormatError("Max size of CID is 65,535");let i=-1;t?i=a:void 0!==e[a]&&(i=e[a]),i>=0&&i>>0;let d=!1;if((null===(h=c)||void 0===h?void 0:h.platformId)!==n||(null===(u=c)||void 0===u?void 0:u.encodingId)!==i){if(0!==n||0!==i&&1!==i&&3!==i)if(1===n&&0===i)d=!0;else if(3!==n||1!==i||!a&&c){if(r&&3===n&&0===i){d=!0;let r=!0;if(e>3;e.push(n),r=Math.max(n,r)}const n=[];for(let e=0;e<=r;e++)n.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:T(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let r=0;r<256;r++)if(0===e[r])t.pos=n[0].idRangePos+2*r,m=t.getUint16(),g.push({charCode:r,glyphId:m});else{const a=n[e[r]];for(p=0;p>1;t.skip(6);const r=[];let n;for(n=0;n>1)-(e-n),i.offsetIndex=a,o=Math.max(o,a+i.end-i.start+1)):i.offsetIndex=-1}const c=[];for(p=0;p>>0;for(p=0;p>>0,r=t.getInt32()>>>0;let n=t.getInt32()>>>0;for(let t=e;t<=r;t++)g.push({charCode:t,glyphId:n++})}}}g.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e=61440&&t<=61695&&(t&=255),Z[t]=e.glyphId}if(r.glyphNames&&(u.length||this.differences.length))for(let e=0;e<256;++e){if(!d&&void 0!==Z[e])continue;const t=this.differences[e]||u[e];if(!t)continue;const n=r.glyphNames.indexOf(t);n>0&&Q(n)&&(Z[e]=n)}}0===Z.length&&(Z[0]=0);let ee=z-1;if(G||(ee=0),!r.cssFontInfo){const e=_(Z,Q,ee,this.toUnicode);this.toFontChar=e.toFontChar,O.cmap={tag:"cmap",data:j(e.charCodeToGlyphId,e.toUnicodeExtraMap,z)},O["OS/2"]&&function(e,t){t.pos=(t.start||0)+e.offset;const r=t.getUint16();t.skip(60);const 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)))}(O["OS/2"],t)||(O["OS/2"]={tag:"OS/2",data:U(r,e.charCodeToGlyphId,J)})}if(!R)try{E=new y.Stream(O["CFF "].data),M=new a.CFFParser(E,r,i.SEAC_ANALYSIS_ENABLED).parse(),M.duplicateFirstGlyph();const e=new a.CFFCompiler(M);O["CFF "].data=e.compile()}catch(e){(0,n.warn)("Failed to compile font "+r.loadedName)}if(O.name){const[t,n]=x(O.name);O.name.data=H(e,t),this.psName=t[0][6]||null,r.composite||function(e,t,r){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;if(!t)return;if(0===r.length)return;if(e.defaultEncoding===c.WinAnsiEncoding)return;for(const e of r)if(!B(e))return;const n=c.WinAnsiEncoding,a=[],i=(0,o.getGlyphsUnicode)();for(const e in n){const t=n[e];if(""===t)continue;const r=i[t];void 0!==r&&(a[e]=String.fromCharCode(r))}a.length>0&&e.toUnicode.amend(a)}(r,this.isSymbolicFont,n)}else O.name={tag:"name",data:H(this.name)};const te=new m.OpenTypeFileBuilder(C.version);for(const e in O)te.addTable(e,O[e].data);return te.toArray()}convert(e,t,r){r.fixedPitch=!1,r.builtInEncoding&&function(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const r=[],n=(0,o.getGlyphsUnicode)();for(const a in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[a]))continue;const i=t[a],o=(0,s.getUnicodeForGlyph)(i,n);-1!==o&&(r[a]=String.fromCharCode(o))}r.length>0&&e.toUnicode.amend(r)}(r,r.builtInEncoding);let a=1;t instanceof u.CFFFont&&(a=t.numGlyphs-1);const l=t.getGlyphMapping(r);let d=null,f=l,g=null;r.cssFontInfo||(d=_(l,t.hasGlyphId.bind(t),a,this.toUnicode),this.toFontChar=d.toFontChar,f=d.charCodeToGlyphId,g=d.toUnicodeExtraMap);const p=t.numGlyphs;function b(e,t){let r=null;for(const n in e)t===e[n]&&(r||(r=[])).push(0|n);return r}function y(e,t){for(const r in e)if(t===e[r])return 0|r;return d.charCodeToGlyphId[d.nextAvailableFontCharCode]=t,d.nextAvailableFontCharCode++}const w=t.seacs;if(d&&i.SEAC_ANALYSIS_ENABLED&&null!=w&&w.length){const e=r.fontMatrix||n.FONT_IDENTITY_MATRIX,a=t.getCharset(),i=Object.create(null);for(let t in w){t|=0;const r=w[t],n=c.StandardEncoding[r[2]],s=c.StandardEncoding[r[3]],o=a.indexOf(n),h=a.indexOf(s);if(o<0||h<0)continue;const u={x:r[0]*e[0]+r[1]*e[2]+e[4],y:r[0]*e[1]+r[1]*e[3]+e[5]},f=b(l,t);if(f)for(const e of f){const t=d.charCodeToGlyphId,r=y(t,o),n=y(t,h);i[e]={baseFontCharCode:r,accentFontCharCode:n,accentOffset:u}}}r.seacMap=i}const v=1/(r.fontMatrix||n.FONT_IDENTITY_MATRIX)[0],x=new m.OpenTypeFileBuilder("OTTO");return x.addTable("CFF ",t.data),x.addTable("OS/2",U(r,f)),x.addTable("cmap",j(f,g,p)),x.addTable("head","\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0_<õ\\0\\0"+E(v)+"\\0\\0\\0\\0ž\\v~'\\0\\0\\0\\0ž\\v~'\\0\\0"+E(r.descent)+"ÿ"+E(r.ascent)+M(r.italicAngle?2:0)+"\\0\\0\\0\\0\\0\\0\\0"),x.addTable("hhea","\\0\\0\\0"+E(r.ascent)+E(r.descent)+"\\0\\0ÿÿ\\0\\0\\0\\0\\0\\0"+E(r.capHeight)+E(Math.tan(r.italicAngle)*r.xHeight)+"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"+M(p)),x.addTable("hmtx",function(){const e=t.charstrings,r=t.cff?t.cff.widths:null;let n="\\0\\0\\0\\0";for(let t=1,a=p;t1&&void 0!==arguments[1]&&arguments[1],u=this._glyphCache[e];if((null===(t=u)||void 0===t?void 0:t.isSpace)===h)return u;let d=e;null!==(r=this.cMap)&&void 0!==r&&r.contains(e)&&(d=this.cMap.lookup(e),"string"==typeof d&&(d=L(e,d))),c=this.widths[d],"number"!=typeof c&&(c=this.defaultWidth);const f=null===(a=this.vmetrics)||void 0===a?void 0:a[d];let g=this.toUnicode.get(e)||e;"number"==typeof g&&(g=String.fromCharCode(g));let p=void 0!==this.toFontChar[e];if(o=this.toFontChar[e]||e,this.missingFile){const t=this.differences[e]||this.defaultEncoding[e];".notdef"!==t&&""!==t||"Type1"!==this.type||(o=32),o=(0,s.mapSpecialUnicodeValues)(o)}this.isType3Font&&(l=o);let m=null;if(null!==(i=this.seacMap)&&void 0!==i&&i[e]){p=!0;const t=this.seacMap[e];o=t.baseFontCharCode,m={fontChar:String.fromCodePoint(t.accentFontCharCode),offset:t.accentOffset}}let b="";return"number"==typeof o&&(o<=1114111?b=String.fromCodePoint(o):(0,n.warn)("charToGlyph - invalid fontCharCode: ".concat(o))),u=new O(e,b,g,m,c,f,l,h,p),this._glyphCache[e]=u}charsToGlyphs(e){let t=this._charsCache[e];if(t)return t;if(t=[],this.cMap){const r=Object.create(null),n=e.length;let a=0;for(;at.length%2==1,a=this.toUnicode instanceof h.IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let i=0,s=e.length;i55295&&(s<57344||s>65533)&&i++,this.toUnicode){const e=a(s);if(-1!==e){n()&&(t.push(r.join("")),r.length=0);for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)r.push(String.fromCharCode(e>>8*t&255));continue}}n()||(t.push(r.join("")),r.length=0),r.push(String.fromCodePoint(s))}return t.push(r.join("")),t}},t.ErrorFont=class{constructor(e){this.error=e,this.loadedName="g_font_error",this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(){return{error:this.error}}}},(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,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(186),i=r(187);const s=[".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","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","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","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","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","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"];t.CFFStandardStrings=s;const o=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],c=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];t.CFFParser=class{constructor(e,t,r){this.bytes=e.getBytes(),this.properties=t,this.seacAnalysisEnabled=!!r}parse(){const e=this.properties,t=new l;this.cff=t;const r=this.parseHeader(),n=this.parseIndex(r.endPos),a=this.parseIndex(n.endPos),i=this.parseIndex(a.endPos),s=this.parseIndex(i.endPos),o=this.parseDict(a.obj.get(0)),c=this.createDict(p,o,t.strings);t.header=r.obj,t.names=this.parseNameIndex(n.obj),t.strings=this.parseStringIndex(i.obj),t.topDict=c,t.globalSubrIndex=s.obj,this.parsePrivateDict(t.topDict),t.isCIDFont=c.hasName("ROS");const h=c.getByName("CharStrings"),u=this.parseIndex(h).obj,d=c.getByName("FontMatrix");d&&(e.fontMatrix=d);const f=c.getByName("FontBBox");let g,m;if(f&&(e.ascent=Math.max(f[3],f[1]),e.descent=Math.min(f[1],f[3]),e.ascentScaled=!0),t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let r=0,n=e.count;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);const a=e[0],i=e[1],s=e[2],o=e[3];return{obj:new h(a,i,s,o),endPos:s}}parseDict(e){let t=0;function r(){let r=e[t++];return 30===r?function(){let r="";const n=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],a=e.length;for(;t>4,s=15&a;if(15===i)break;if(r+=n[i],15===s)break;r+=n[s]}return parseFloat(r)}():28===r?(r=e[t++],r=(r<<24|e[t++]<<16)>>16,r):29===r?(r=e[t++],r=r<<8|e[t++],r=r<<8|e[t++],r=r<<8|e[t++],r):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)}let a=[];const i=[];t=0;const s=e.length;for(;t10)return!1;let i=e.stackSize;const s=e.stack;let l=t.length;for(let h=0;h>16,h+=2,i++;else if(14===u){if(i>=4&&(i-=4,this.seacAnalysisEnabled))return e.seac=s.slice(i,i+4),!1;d=o[u]}else if(u>=32&&u<=246)s[i]=u-139,i++;else if(u>=247&&u<=254)s[i]=u<251?(u-247<<8)+t[h]+108:-(u-251<<8)-t[h]-108,h++,i++;else if(255===u)s[i]=(t[h]<<24|t[h+1]<<16|t[h+2]<<8|t[h+3])/65536,h+=4,i++;else if(19===u||20===u){if(e.hints+=i>>1,0===e.hints){t.copyWithin(h-1,h,-1),h-=1,l-=1;continue}h+=e.hints+7>>3,i%=2,d=o[u]}else{if(10===u||29===u){const t=10===u?r:a;if(!t)return d=o[u],(0,n.warn)("Missing subrsIndex for "+d.id),!1;let c=32768;t.count<1240?c=107:t.count<33900&&(c=1131);const l=s[--i]+c;if(l<0||l>=t.count||isNaN(l))return d=o[u],(0,n.warn)("Out of bounds subrIndex for "+d.id),!1;if(e.stackSize=i,e.callDepth++,!this.parseCharString(e,t.get(l),r,a))return!1;e.callDepth--,i=e.stackSize;continue}if(11===u)return e.stackSize=i,!0;if(0===u&&h===t.length)t[h-1]=14,d=o[14];else{if(9===u){t.copyWithin(h-1,h,-1),h-=1,l-=1;continue}d=o[u]}}if(d){if(d.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[h-1]=1===u?3:23)),"min"in d&&!e.undefStack&&i=2&&d.stem?i%=2:i>1&&(0,n.warn)("Found too many parameters for stack-clearing command"),i>0&&(e.width=s[i-1])),"stackDelta"in d?("stackFn"in d&&d.stackFn(s,i),i+=d.stackDelta):d.stackClearing?i=0:d.resetStack?(i=0,e.undefStack=!1):d.undefStack&&(i=0,e.undefStack=!0,e.firstStackClearing=!1)}}return l=s.length&&((0,n.warn)("Invalid fd index for glyph index."),d=!1),d&&(g=s[t].privateDict,f=g.subrsIndex)}else r&&(f=r);if(d&&(d=this.parseCharString(u,h,f,a)),null!==u.width){const t=g.getByName("nominalWidthX");l[e]=t+u.width}else{const t=g.getByName("defaultWidthX");l[e]=t}null!==u.seac&&(c[e]=u.seac),d||t.set(e,new Uint8Array([14]))}return{charStrings:t,seacs:c,widths:l}}emptyPrivateDictionary(e){const t=this.createDict(b,[],e.strings);e.setByKey(18,[0,0]),e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private"))return void this.emptyPrivateDictionary(e);const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length)return void e.removeByName("Private");const r=t[0],n=t[1];if(0===r||n>=this.bytes.length)return void this.emptyPrivateDictionary(e);const a=n+r,i=this.bytes.subarray(n,a),s=this.parseDict(i),o=this.createDict(b,s,e.strings);if(e.privateDict=o,0===o.getByName("ExpansionFactor")&&o.setByName("ExpansionFactor",.06),!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=n+c;if(0===c||l>=this.bytes.length)return void this.emptyPrivateDictionary(e);const h=this.parseIndex(l);o.subrsIndex=h.obj}parseCharsets(e,t,r,i){if(0===e)return new w(!0,y.ISO_ADOBE,a.ISOAdobeCharset);if(1===e)return new w(!0,y.EXPERT,a.ExpertCharset);if(2===e)return new w(!0,y.EXPERT_SUBSET,a.ExpertSubsetCharset);const s=this.bytes,o=e,c=s[e++],l=[i?0:".notdef"];let h,u,d;switch(t-=1,c){case 0:for(d=0;d=65535)return void(0,n.warn)("Not enough space in charstrings to duplicate first glyph.");const e=this.charStrings.get(0);this.charStrings.add(e),this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){return!(e<0||e>=this.charStrings.count)&&this.charStrings.get(e).length>0}}t.CFF=l;class h{constructor(e,t,r,n){this.major=e,this.minor=t,this.hdrSize=r,this.offSize=n}}t.CFFHeader=h;class u{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?s[e]:e-391<=this.strings.length?this.strings[e-391]:s[0]}getSID(e){let t=s.indexOf(e);return-1!==t?t:(t=this.strings.indexOf(e),-1!==t?t+391:-1)}add(e){this.strings.push(e)}get count(){return this.strings.length}}t.CFFStrings=u;class d{constructor(){this.objects=[],this.length=0}add(e){this.length+=e.length,this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length,this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}t.CFFIndex=d;class f{constructor(e,t){this.keyToNameMap=e.keyToNameMap,this.nameToKeyMap=e.nameToKeyMap,this.defaults=e.defaults,this.types=e.types,this.opcodes=e.opcodes,this.order=e.order,this.strings=t,this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const r of t)if(isNaN(r))return(0,n.warn)('Invalid CFFDict value: "'.concat(t,'" for key "').concat(e,'".')),!0;const r=this.types[e];return"num"!==r&&"sid"!==r&&"offset"!==r||(t=t[0]),this.values[e]=t,!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new n.FormatError('Invalid dictionary name "'.concat(e,'"'));this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new n.FormatError("Invalid dictionary name ".concat(e,'"'));const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const r of e){const e=Array.isArray(r[0])?(r[0][0]<<8)+r[0][1]:r[0];t.keyToNameMap[e]=r[1],t.nameToKeyMap[r[1]]=e,t.types[e]=r[2],t.defaults[e]=r[3],t.opcodes[e]=Array.isArray(r[0])?r[0]:[r[0]],t.order.push(e)}return t}}const g=[[[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]];class p extends f{static get tables(){return(0,n.shadow)(this,"tables",this.createTables(g))}constructor(e){super(p.tables,e),this.privateDict=null}}t.CFFTopDict=p;const m=[[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]];class b extends f{static get tables(){return(0,n.shadow)(this,"tables",this.createTables(m))}constructor(e){super(b.tables,e),this.subrsIndex=null}}t.CFFPrivateDict=b;const y={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class w{constructor(e,t,r,n){this.predefined=e,this.format=t,this.charset=r,this.raw=n}}t.CFFCharset=w;class v{constructor(e,t,r,n){this.predefined=e,this.format=t,this.encoding=r,this.raw=n}}class x{constructor(e,t){this.format=e,this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}t.CFFFDSelect=x;class S{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new n.FormatError("Already tracking location of ".concat(e));this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,r){if(!(e in this.offsets))throw new n.FormatError("Not tracking location of ".concat(e));const a=r.data,i=this.offsets[e];for(let e=0,r=t.length;e>24&255,a[o]=h>>16&255,a[c]=h>>8&255,a[l]=255&h}}}class A{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add(e){try{this.data.push(...e)}catch(t){this.data=this.data.concat(e)}this.length=this.data.length}},r=this.compileHeader(e.header);t.add(r);const a=this.compileNameIndex(e.names);if(t.add(a),e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const r of e.fdArray){let e=t.slice(0);r.hasName("FontMatrix")&&(e=n.Util.transform(e,r.getByName("FontMatrix"))),r.setByName("FontMatrix",e)}}const i=e.topDict.getByName("XUID");(null==i?void 0:i.length)>16&&e.topDict.removeByName("XUID"),e.topDict.setByName("charset",0);let s=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(s.output);const o=s.trackers[0],c=this.compileStringIndex(e.strings.strings);t.add(c);const l=this.compileIndex(e.globalSubrIndex);if(t.add(l),e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],t);else{const r=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[t.length],t),t.add(r)}const h=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[t.length],t),t.add(h);const u=this.compileCharStrings(e.charStrings);if(o.setEntryLocation("CharStrings",[t.length],t),t.add(u),e.isCIDFont){o.setEntryLocation("FDSelect",[t.length],t);const r=this.compileFDSelect(e.fdSelect);t.add(r),s=this.compileTopDicts(e.fdArray,t.length,!0),o.setEntryLocation("FDArray",[t.length],t),t.add(s.output);const n=s.trackers;this.compilePrivateDicts(e.fdArray,n,t)}return this.compilePrivateDicts([e.topDict],[o],t),t.add([0]),t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return(0,n.shadow)(this,"EncodeFloatRegExp",/\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const r=A.EncodeFloatRegExp.exec(t);if(r){const n=parseFloat("1e"+((r[2]?+r[2]:0)+r[1].length));t=(Math.round(e*n)/n).toString()}let n,a,i="";for(n=0,a=t.length;n=-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],t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new d;for(const r of e){const e=Math.min(r.length,127);let a=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_"),a[t]=e}a=a.join(""),""===a&&(a="Bad_Font_Name"),t.add((0,n.stringToBytes)(a))}return this.compileIndex(t)}compileTopDicts(e,t,r){const n=[];let a=new d;for(const i of e){r&&(i.removeByName("CIDFontVersion"),i.removeByName("CIDFontRevision"),i.removeByName("CIDFontType"),i.removeByName("CIDCount"),i.removeByName("UIDBase"));const e=new S,s=this.compileDict(i,e);n.push(e),a.add(s),e.offset(t)}return a=this.compileIndex(a,n),{trackers:n,output:a}}compilePrivateDicts(e,t,r){for(let a=0,i=e.length;a>8&255,255&s]);else{i=new Uint8Array(1+2*s),i[0]=0;let t=0;const a=e.charset.length;let o=!1;for(let s=1;s>8&255,i[s+1]=255&c}}return this.compileTypedArray(i)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let r,n;switch(t){case 0:for(r=new Uint8Array(1+e.fdSelect.length),r[0]=t,n=0;n>8&255,255&a,i];for(n=1;n>8&255,255&n,t),i=t)}const o=(s.length-3)/3;s[1]=o>>8&255,s[2]=255&o,s.push(n>>8&255,255&n),r=new Uint8Array(s)}return this.compileTypedArray(r)}compileTypedArray(e){return Array.from(e)}compileIndex(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const r=e.objects,n=r.length;if(0===n)return[0,0];const a=[n>>8&255,255&n];let i,s,o=1;for(i=0;i>8&255,255&c):3===s?a.push(c>>16&255,c>>8&255,255&c):a.push(c>>>24&255,c>>16&255,c>>8&255,255&c),r[i]&&(c+=r[i].length);for(i=0;i{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 s;case"StandardEncoding":return i;case"MacRomanEncoding":return a;case"SymbolSetEncoding":return o;case"ZapfDingbatsEncoding":return c;case"ExpertEncoding":return r;case"MacExpertEncoding":return n;default:return null}};const 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;const 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;const 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;const s=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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=s;const o=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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=o;const 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.normalizeFontName=function(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\\s/g,"")},t.recoverGlyphName=c,t.type1FontGlyphMapping=function(e,t,r){const i=Object.create(null);let s,l,h;const u=!!(e.flags&o.Symbolic);if(e.isInternalFont)for(h=t,l=0;l=0?s:0;else if(e.baseEncodingName)for(h=(0,n.getEncoding)(e.baseEncodingName),l=0;l=0?s:0;else if(u)for(l in t)i[l]=t[l];else for(h=n.StandardEncoding,l=0;l=0?s:0;const d=e.differences;let f;if(d)for(l in d){const e=d[l];if(s=r.indexOf(e),-1===s){f||(f=(0,a.getGlyphsUnicode)());const t=c(e,f);t!==e&&(s=r.indexOf(t))}i[l]=s>=0?s:0}return i},r(157);var n=r(187),a=r(189),i=r(190),s=r(144);t.SEAC_ANALYSIS_ENABLED=!0;const o={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;const r=(0,i.getUnicodeForGlyph)(e,t);if(-1!==r)for(const e in t)if(t[e]===r)return e;return(0,s.info)("Unable to recover a standard glyph name for: "+e),e}t.FontFlags=o,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(149);const a=(0,n.getLookupTableFactory)((function(e){e.A=65,e.AE=198,e.AEacute=508,e.AEmacron=482,e.AEsmall=63462,e.Aacute=193,e.Aacutesmall=63457,e.Abreve=258,e.Abreveacute=7854,e.Abrevecyrillic=1232,e.Abrevedotbelow=7862,e.Abrevegrave=7856,e.Abrevehookabove=7858,e.Abrevetilde=7860,e.Acaron=461,e.Acircle=9398,e.Acircumflex=194,e.Acircumflexacute=7844,e.Acircumflexdotbelow=7852,e.Acircumflexgrave=7846,e.Acircumflexhookabove=7848,e.Acircumflexsmall=63458,e.Acircumflextilde=7850,e.Acute=63177,e.Acutesmall=63412,e.Acyrillic=1040,e.Adblgrave=512,e.Adieresis=196,e.Adieresiscyrillic=1234,e.Adieresismacron=478,e.Adieresissmall=63460,e.Adotbelow=7840,e.Adotmacron=480,e.Agrave=192,e.Agravesmall=63456,e.Ahookabove=7842,e.Aiecyrillic=1236,e.Ainvertedbreve=514,e.Alpha=913,e.Alphatonos=902,e.Amacron=256,e.Amonospace=65313,e.Aogonek=260,e.Aring=197,e.Aringacute=506,e.Aringbelow=7680,e.Aringsmall=63461,e.Asmall=63329,e.Atilde=195,e.Atildesmall=63459,e.Aybarmenian=1329,e.B=66,e.Bcircle=9399,e.Bdotaccent=7682,e.Bdotbelow=7684,e.Becyrillic=1041,e.Benarmenian=1330,e.Beta=914,e.Bhook=385,e.Blinebelow=7686,e.Bmonospace=65314,e.Brevesmall=63220,e.Bsmall=63330,e.Btopbar=386,e.C=67,e.Caarmenian=1342,e.Cacute=262,e.Caron=63178,e.Caronsmall=63221,e.Ccaron=268,e.Ccedilla=199,e.Ccedillaacute=7688,e.Ccedillasmall=63463,e.Ccircle=9400,e.Ccircumflex=264,e.Cdot=266,e.Cdotaccent=266,e.Cedillasmall=63416,e.Chaarmenian=1353,e.Cheabkhasiancyrillic=1212,e.Checyrillic=1063,e.Chedescenderabkhasiancyrillic=1214,e.Chedescendercyrillic=1206,e.Chedieresiscyrillic=1268,e.Cheharmenian=1347,e.Chekhakassiancyrillic=1227,e.Cheverticalstrokecyrillic=1208,e.Chi=935,e.Chook=391,e.Circumflexsmall=63222,e.Cmonospace=65315,e.Coarmenian=1361,e.Csmall=63331,e.D=68,e.DZ=497,e.DZcaron=452,e.Daarmenian=1332,e.Dafrican=393,e.Dcaron=270,e.Dcedilla=7696,e.Dcircle=9401,e.Dcircumflexbelow=7698,e.Dcroat=272,e.Ddotaccent=7690,e.Ddotbelow=7692,e.Decyrillic=1044,e.Deicoptic=1006,e.Delta=8710,e.Deltagreek=916,e.Dhook=394,e.Dieresis=63179,e.DieresisAcute=63180,e.DieresisGrave=63181,e.Dieresissmall=63400,e.Digammagreek=988,e.Djecyrillic=1026,e.Dlinebelow=7694,e.Dmonospace=65316,e.Dotaccentsmall=63223,e.Dslash=272,e.Dsmall=63332,e.Dtopbar=395,e.Dz=498,e.Dzcaron=453,e.Dzeabkhasiancyrillic=1248,e.Dzecyrillic=1029,e.Dzhecyrillic=1039,e.E=69,e.Eacute=201,e.Eacutesmall=63465,e.Ebreve=276,e.Ecaron=282,e.Ecedillabreve=7708,e.Echarmenian=1333,e.Ecircle=9402,e.Ecircumflex=202,e.Ecircumflexacute=7870,e.Ecircumflexbelow=7704,e.Ecircumflexdotbelow=7878,e.Ecircumflexgrave=7872,e.Ecircumflexhookabove=7874,e.Ecircumflexsmall=63466,e.Ecircumflextilde=7876,e.Ecyrillic=1028,e.Edblgrave=516,e.Edieresis=203,e.Edieresissmall=63467,e.Edot=278,e.Edotaccent=278,e.Edotbelow=7864,e.Efcyrillic=1060,e.Egrave=200,e.Egravesmall=63464,e.Eharmenian=1335,e.Ehookabove=7866,e.Eightroman=8551,e.Einvertedbreve=518,e.Eiotifiedcyrillic=1124,e.Elcyrillic=1051,e.Elevenroman=8554,e.Emacron=274,e.Emacronacute=7702,e.Emacrongrave=7700,e.Emcyrillic=1052,e.Emonospace=65317,e.Encyrillic=1053,e.Endescendercyrillic=1186,e.Eng=330,e.Enghecyrillic=1188,e.Enhookcyrillic=1223,e.Eogonek=280,e.Eopen=400,e.Epsilon=917,e.Epsilontonos=904,e.Ercyrillic=1056,e.Ereversed=398,e.Ereversedcyrillic=1069,e.Escyrillic=1057,e.Esdescendercyrillic=1194,e.Esh=425,e.Esmall=63333,e.Eta=919,e.Etarmenian=1336,e.Etatonos=905,e.Eth=208,e.Ethsmall=63472,e.Etilde=7868,e.Etildebelow=7706,e.Euro=8364,e.Ezh=439,e.Ezhcaron=494,e.Ezhreversed=440,e.F=70,e.Fcircle=9403,e.Fdotaccent=7710,e.Feharmenian=1366,e.Feicoptic=996,e.Fhook=401,e.Fitacyrillic=1138,e.Fiveroman=8548,e.Fmonospace=65318,e.Fourroman=8547,e.Fsmall=63334,e.G=71,e.GBsquare=13191,e.Gacute=500,e.Gamma=915,e.Gammaafrican=404,e.Gangiacoptic=1002,e.Gbreve=286,e.Gcaron=486,e.Gcedilla=290,e.Gcircle=9404,e.Gcircumflex=284,e.Gcommaaccent=290,e.Gdot=288,e.Gdotaccent=288,e.Gecyrillic=1043,e.Ghadarmenian=1346,e.Ghemiddlehookcyrillic=1172,e.Ghestrokecyrillic=1170,e.Gheupturncyrillic=1168,e.Ghook=403,e.Gimarmenian=1331,e.Gjecyrillic=1027,e.Gmacron=7712,e.Gmonospace=65319,e.Grave=63182,e.Gravesmall=63328,e.Gsmall=63335,e.Gsmallhook=667,e.Gstroke=484,e.H=72,e.H18533=9679,e.H18543=9642,e.H18551=9643,e.H22073=9633,e.HPsquare=13259,e.Haabkhasiancyrillic=1192,e.Hadescendercyrillic=1202,e.Hardsigncyrillic=1066,e.Hbar=294,e.Hbrevebelow=7722,e.Hcedilla=7720,e.Hcircle=9405,e.Hcircumflex=292,e.Hdieresis=7718,e.Hdotaccent=7714,e.Hdotbelow=7716,e.Hmonospace=65320,e.Hoarmenian=1344,e.Horicoptic=1e3,e.Hsmall=63336,e.Hungarumlaut=63183,e.Hungarumlautsmall=63224,e.Hzsquare=13200,e.I=73,e.IAcyrillic=1071,e.IJ=306,e.IUcyrillic=1070,e.Iacute=205,e.Iacutesmall=63469,e.Ibreve=300,e.Icaron=463,e.Icircle=9406,e.Icircumflex=206,e.Icircumflexsmall=63470,e.Icyrillic=1030,e.Idblgrave=520,e.Idieresis=207,e.Idieresisacute=7726,e.Idieresiscyrillic=1252,e.Idieresissmall=63471,e.Idot=304,e.Idotaccent=304,e.Idotbelow=7882,e.Iebrevecyrillic=1238,e.Iecyrillic=1045,e.Ifraktur=8465,e.Igrave=204,e.Igravesmall=63468,e.Ihookabove=7880,e.Iicyrillic=1048,e.Iinvertedbreve=522,e.Iishortcyrillic=1049,e.Imacron=298,e.Imacroncyrillic=1250,e.Imonospace=65321,e.Iniarmenian=1339,e.Iocyrillic=1025,e.Iogonek=302,e.Iota=921,e.Iotaafrican=406,e.Iotadieresis=938,e.Iotatonos=906,e.Ismall=63337,e.Istroke=407,e.Itilde=296,e.Itildebelow=7724,e.Izhitsacyrillic=1140,e.Izhitsadblgravecyrillic=1142,e.J=74,e.Jaarmenian=1345,e.Jcircle=9407,e.Jcircumflex=308,e.Jecyrillic=1032,e.Jheharmenian=1355,e.Jmonospace=65322,e.Jsmall=63338,e.K=75,e.KBsquare=13189,e.KKsquare=13261,e.Kabashkircyrillic=1184,e.Kacute=7728,e.Kacyrillic=1050,e.Kadescendercyrillic=1178,e.Kahookcyrillic=1219,e.Kappa=922,e.Kastrokecyrillic=1182,e.Kaverticalstrokecyrillic=1180,e.Kcaron=488,e.Kcedilla=310,e.Kcircle=9408,e.Kcommaaccent=310,e.Kdotbelow=7730,e.Keharmenian=1364,e.Kenarmenian=1343,e.Khacyrillic=1061,e.Kheicoptic=998,e.Khook=408,e.Kjecyrillic=1036,e.Klinebelow=7732,e.Kmonospace=65323,e.Koppacyrillic=1152,e.Koppagreek=990,e.Ksicyrillic=1134,e.Ksmall=63339,e.L=76,e.LJ=455,e.LL=63167,e.Lacute=313,e.Lambda=923,e.Lcaron=317,e.Lcedilla=315,e.Lcircle=9409,e.Lcircumflexbelow=7740,e.Lcommaaccent=315,e.Ldot=319,e.Ldotaccent=319,e.Ldotbelow=7734,e.Ldotbelowmacron=7736,e.Liwnarmenian=1340,e.Lj=456,e.Ljecyrillic=1033,e.Llinebelow=7738,e.Lmonospace=65324,e.Lslash=321,e.Lslashsmall=63225,e.Lsmall=63340,e.M=77,e.MBsquare=13190,e.Macron=63184,e.Macronsmall=63407,e.Macute=7742,e.Mcircle=9410,e.Mdotaccent=7744,e.Mdotbelow=7746,e.Menarmenian=1348,e.Mmonospace=65325,e.Msmall=63341,e.Mturned=412,e.Mu=924,e.N=78,e.NJ=458,e.Nacute=323,e.Ncaron=327,e.Ncedilla=325,e.Ncircle=9411,e.Ncircumflexbelow=7754,e.Ncommaaccent=325,e.Ndotaccent=7748,e.Ndotbelow=7750,e.Nhookleft=413,e.Nineroman=8552,e.Nj=459,e.Njecyrillic=1034,e.Nlinebelow=7752,e.Nmonospace=65326,e.Nowarmenian=1350,e.Nsmall=63342,e.Ntilde=209,e.Ntildesmall=63473,e.Nu=925,e.O=79,e.OE=338,e.OEsmall=63226,e.Oacute=211,e.Oacutesmall=63475,e.Obarredcyrillic=1256,e.Obarreddieresiscyrillic=1258,e.Obreve=334,e.Ocaron=465,e.Ocenteredtilde=415,e.Ocircle=9412,e.Ocircumflex=212,e.Ocircumflexacute=7888,e.Ocircumflexdotbelow=7896,e.Ocircumflexgrave=7890,e.Ocircumflexhookabove=7892,e.Ocircumflexsmall=63476,e.Ocircumflextilde=7894,e.Ocyrillic=1054,e.Odblacute=336,e.Odblgrave=524,e.Odieresis=214,e.Odieresiscyrillic=1254,e.Odieresissmall=63478,e.Odotbelow=7884,e.Ogoneksmall=63227,e.Ograve=210,e.Ogravesmall=63474,e.Oharmenian=1365,e.Ohm=8486,e.Ohookabove=7886,e.Ohorn=416,e.Ohornacute=7898,e.Ohorndotbelow=7906,e.Ohorngrave=7900,e.Ohornhookabove=7902,e.Ohorntilde=7904,e.Ohungarumlaut=336,e.Oi=418,e.Oinvertedbreve=526,e.Omacron=332,e.Omacronacute=7762,e.Omacrongrave=7760,e.Omega=8486,e.Omegacyrillic=1120,e.Omegagreek=937,e.Omegaroundcyrillic=1146,e.Omegatitlocyrillic=1148,e.Omegatonos=911,e.Omicron=927,e.Omicrontonos=908,e.Omonospace=65327,e.Oneroman=8544,e.Oogonek=490,e.Oogonekmacron=492,e.Oopen=390,e.Oslash=216,e.Oslashacute=510,e.Oslashsmall=63480,e.Osmall=63343,e.Ostrokeacute=510,e.Otcyrillic=1150,e.Otilde=213,e.Otildeacute=7756,e.Otildedieresis=7758,e.Otildesmall=63477,e.P=80,e.Pacute=7764,e.Pcircle=9413,e.Pdotaccent=7766,e.Pecyrillic=1055,e.Peharmenian=1354,e.Pemiddlehookcyrillic=1190,e.Phi=934,e.Phook=420,e.Pi=928,e.Piwrarmenian=1363,e.Pmonospace=65328,e.Psi=936,e.Psicyrillic=1136,e.Psmall=63344,e.Q=81,e.Qcircle=9414,e.Qmonospace=65329,e.Qsmall=63345,e.R=82,e.Raarmenian=1356,e.Racute=340,e.Rcaron=344,e.Rcedilla=342,e.Rcircle=9415,e.Rcommaaccent=342,e.Rdblgrave=528,e.Rdotaccent=7768,e.Rdotbelow=7770,e.Rdotbelowmacron=7772,e.Reharmenian=1360,e.Rfraktur=8476,e.Rho=929,e.Ringsmall=63228,e.Rinvertedbreve=530,e.Rlinebelow=7774,e.Rmonospace=65330,e.Rsmall=63346,e.Rsmallinverted=641,e.Rsmallinvertedsuperior=694,e.S=83,e.SF010000=9484,e.SF020000=9492,e.SF030000=9488,e.SF040000=9496,e.SF050000=9532,e.SF060000=9516,e.SF070000=9524,e.SF080000=9500,e.SF090000=9508,e.SF100000=9472,e.SF110000=9474,e.SF190000=9569,e.SF200000=9570,e.SF210000=9558,e.SF220000=9557,e.SF230000=9571,e.SF240000=9553,e.SF250000=9559,e.SF260000=9565,e.SF270000=9564,e.SF280000=9563,e.SF360000=9566,e.SF370000=9567,e.SF380000=9562,e.SF390000=9556,e.SF400000=9577,e.SF410000=9574,e.SF420000=9568,e.SF430000=9552,e.SF440000=9580,e.SF450000=9575,e.SF460000=9576,e.SF470000=9572,e.SF480000=9573,e.SF490000=9561,e.SF500000=9560,e.SF510000=9554,e.SF520000=9555,e.SF530000=9579,e.SF540000=9578,e.Sacute=346,e.Sacutedotaccent=7780,e.Sampigreek=992,e.Scaron=352,e.Scarondotaccent=7782,e.Scaronsmall=63229,e.Scedilla=350,e.Schwa=399,e.Schwacyrillic=1240,e.Schwadieresiscyrillic=1242,e.Scircle=9416,e.Scircumflex=348,e.Scommaaccent=536,e.Sdotaccent=7776,e.Sdotbelow=7778,e.Sdotbelowdotaccent=7784,e.Seharmenian=1357,e.Sevenroman=8550,e.Shaarmenian=1351,e.Shacyrillic=1064,e.Shchacyrillic=1065,e.Sheicoptic=994,e.Shhacyrillic=1210,e.Shimacoptic=1004,e.Sigma=931,e.Sixroman=8549,e.Smonospace=65331,e.Softsigncyrillic=1068,e.Ssmall=63347,e.Stigmagreek=986,e.T=84,e.Tau=932,e.Tbar=358,e.Tcaron=356,e.Tcedilla=354,e.Tcircle=9417,e.Tcircumflexbelow=7792,e.Tcommaaccent=354,e.Tdotaccent=7786,e.Tdotbelow=7788,e.Tecyrillic=1058,e.Tedescendercyrillic=1196,e.Tenroman=8553,e.Tetsecyrillic=1204,e.Theta=920,e.Thook=428,e.Thorn=222,e.Thornsmall=63486,e.Threeroman=8546,e.Tildesmall=63230,e.Tiwnarmenian=1359,e.Tlinebelow=7790,e.Tmonospace=65332,e.Toarmenian=1337,e.Tonefive=444,e.Tonesix=388,e.Tonetwo=423,e.Tretroflexhook=430,e.Tsecyrillic=1062,e.Tshecyrillic=1035,e.Tsmall=63348,e.Twelveroman=8555,e.Tworoman=8545,e.U=85,e.Uacute=218,e.Uacutesmall=63482,e.Ubreve=364,e.Ucaron=467,e.Ucircle=9418,e.Ucircumflex=219,e.Ucircumflexbelow=7798,e.Ucircumflexsmall=63483,e.Ucyrillic=1059,e.Udblacute=368,e.Udblgrave=532,e.Udieresis=220,e.Udieresisacute=471,e.Udieresisbelow=7794,e.Udieresiscaron=473,e.Udieresiscyrillic=1264,e.Udieresisgrave=475,e.Udieresismacron=469,e.Udieresissmall=63484,e.Udotbelow=7908,e.Ugrave=217,e.Ugravesmall=63481,e.Uhookabove=7910,e.Uhorn=431,e.Uhornacute=7912,e.Uhorndotbelow=7920,e.Uhorngrave=7914,e.Uhornhookabove=7916,e.Uhorntilde=7918,e.Uhungarumlaut=368,e.Uhungarumlautcyrillic=1266,e.Uinvertedbreve=534,e.Ukcyrillic=1144,e.Umacron=362,e.Umacroncyrillic=1262,e.Umacrondieresis=7802,e.Umonospace=65333,e.Uogonek=370,e.Upsilon=933,e.Upsilon1=978,e.Upsilonacutehooksymbolgreek=979,e.Upsilonafrican=433,e.Upsilondieresis=939,e.Upsilondieresishooksymbolgreek=980,e.Upsilonhooksymbol=978,e.Upsilontonos=910,e.Uring=366,e.Ushortcyrillic=1038,e.Usmall=63349,e.Ustraightcyrillic=1198,e.Ustraightstrokecyrillic=1200,e.Utilde=360,e.Utildeacute=7800,e.Utildebelow=7796,e.V=86,e.Vcircle=9419,e.Vdotbelow=7806,e.Vecyrillic=1042,e.Vewarmenian=1358,e.Vhook=434,e.Vmonospace=65334,e.Voarmenian=1352,e.Vsmall=63350,e.Vtilde=7804,e.W=87,e.Wacute=7810,e.Wcircle=9420,e.Wcircumflex=372,e.Wdieresis=7812,e.Wdotaccent=7814,e.Wdotbelow=7816,e.Wgrave=7808,e.Wmonospace=65335,e.Wsmall=63351,e.X=88,e.Xcircle=9421,e.Xdieresis=7820,e.Xdotaccent=7818,e.Xeharmenian=1341,e.Xi=926,e.Xmonospace=65336,e.Xsmall=63352,e.Y=89,e.Yacute=221,e.Yacutesmall=63485,e.Yatcyrillic=1122,e.Ycircle=9422,e.Ycircumflex=374,e.Ydieresis=376,e.Ydieresissmall=63487,e.Ydotaccent=7822,e.Ydotbelow=7924,e.Yericyrillic=1067,e.Yerudieresiscyrillic=1272,e.Ygrave=7922,e.Yhook=435,e.Yhookabove=7926,e.Yiarmenian=1349,e.Yicyrillic=1031,e.Yiwnarmenian=1362,e.Ymonospace=65337,e.Ysmall=63353,e.Ytilde=7928,e.Yusbigcyrillic=1130,e.Yusbigiotifiedcyrillic=1132,e.Yuslittlecyrillic=1126,e.Yuslittleiotifiedcyrillic=1128,e.Z=90,e.Zaarmenian=1334,e.Zacute=377,e.Zcaron=381,e.Zcaronsmall=63231,e.Zcircle=9423,e.Zcircumflex=7824,e.Zdot=379,e.Zdotaccent=379,e.Zdotbelow=7826,e.Zecyrillic=1047,e.Zedescendercyrillic=1176,e.Zedieresiscyrillic=1246,e.Zeta=918,e.Zhearmenian=1338,e.Zhebrevecyrillic=1217,e.Zhecyrillic=1046,e.Zhedescendercyrillic=1174,e.Zhedieresiscyrillic=1244,e.Zlinebelow=7828,e.Zmonospace=65338,e.Zsmall=63354,e.Zstroke=437,e.a=97,e.aabengali=2438,e.aacute=225,e.aadeva=2310,e.aagujarati=2694,e.aagurmukhi=2566,e.aamatragurmukhi=2622,e.aarusquare=13059,e.aavowelsignbengali=2494,e.aavowelsigndeva=2366,e.aavowelsigngujarati=2750,e.abbreviationmarkarmenian=1375,e.abbreviationsigndeva=2416,e.abengali=2437,e.abopomofo=12570,e.abreve=259,e.abreveacute=7855,e.abrevecyrillic=1233,e.abrevedotbelow=7863,e.abrevegrave=7857,e.abrevehookabove=7859,e.abrevetilde=7861,e.acaron=462,e.acircle=9424,e.acircumflex=226,e.acircumflexacute=7845,e.acircumflexdotbelow=7853,e.acircumflexgrave=7847,e.acircumflexhookabove=7849,e.acircumflextilde=7851,e.acute=180,e.acutebelowcmb=791,e.acutecmb=769,e.acutecomb=769,e.acutedeva=2388,e.acutelowmod=719,e.acutetonecmb=833,e.acyrillic=1072,e.adblgrave=513,e.addakgurmukhi=2673,e.adeva=2309,e.adieresis=228,e.adieresiscyrillic=1235,e.adieresismacron=479,e.adotbelow=7841,e.adotmacron=481,e.ae=230,e.aeacute=509,e.aekorean=12624,e.aemacron=483,e.afii00208=8213,e.afii08941=8356,e.afii10017=1040,e.afii10018=1041,e.afii10019=1042,e.afii10020=1043,e.afii10021=1044,e.afii10022=1045,e.afii10023=1025,e.afii10024=1046,e.afii10025=1047,e.afii10026=1048,e.afii10027=1049,e.afii10028=1050,e.afii10029=1051,e.afii10030=1052;e.afii10031=1053,e.afii10032=1054,e.afii10033=1055,e.afii10034=1056,e.afii10035=1057,e.afii10036=1058,e.afii10037=1059,e.afii10038=1060,e.afii10039=1061,e.afii10040=1062,e.afii10041=1063,e.afii10042=1064,e.afii10043=1065,e.afii10044=1066,e.afii10045=1067,e.afii10046=1068,e.afii10047=1069,e.afii10048=1070,e.afii10049=1071,e.afii10050=1168,e.afii10051=1026,e.afii10052=1027,e.afii10053=1028,e.afii10054=1029,e.afii10055=1030,e.afii10056=1031,e.afii10057=1032,e.afii10058=1033,e.afii10059=1034,e.afii10060=1035,e.afii10061=1036,e.afii10062=1038,e.afii10063=63172,e.afii10064=63173,e.afii10065=1072,e.afii10066=1073,e.afii10067=1074,e.afii10068=1075,e.afii10069=1076,e.afii10070=1077,e.afii10071=1105,e.afii10072=1078,e.afii10073=1079,e.afii10074=1080,e.afii10075=1081,e.afii10076=1082,e.afii10077=1083,e.afii10078=1084,e.afii10079=1085,e.afii10080=1086,e.afii10081=1087,e.afii10082=1088,e.afii10083=1089,e.afii10084=1090,e.afii10085=1091,e.afii10086=1092,e.afii10087=1093,e.afii10088=1094,e.afii10089=1095,e.afii10090=1096,e.afii10091=1097,e.afii10092=1098,e.afii10093=1099,e.afii10094=1100,e.afii10095=1101,e.afii10096=1102,e.afii10097=1103,e.afii10098=1169,e.afii10099=1106,e.afii10100=1107,e.afii10101=1108,e.afii10102=1109,e.afii10103=1110,e.afii10104=1111,e.afii10105=1112,e.afii10106=1113,e.afii10107=1114,e.afii10108=1115,e.afii10109=1116,e.afii10110=1118,e.afii10145=1039,e.afii10146=1122,e.afii10147=1138,e.afii10148=1140,e.afii10192=63174,e.afii10193=1119,e.afii10194=1123,e.afii10195=1139,e.afii10196=1141,e.afii10831=63175,e.afii10832=63176,e.afii10846=1241,e.afii299=8206,e.afii300=8207,e.afii301=8205,e.afii57381=1642,e.afii57388=1548,e.afii57392=1632,e.afii57393=1633,e.afii57394=1634,e.afii57395=1635,e.afii57396=1636,e.afii57397=1637,e.afii57398=1638,e.afii57399=1639,e.afii57400=1640,e.afii57401=1641,e.afii57403=1563,e.afii57407=1567,e.afii57409=1569,e.afii57410=1570,e.afii57411=1571,e.afii57412=1572,e.afii57413=1573,e.afii57414=1574,e.afii57415=1575,e.afii57416=1576,e.afii57417=1577,e.afii57418=1578,e.afii57419=1579,e.afii57420=1580,e.afii57421=1581,e.afii57422=1582,e.afii57423=1583,e.afii57424=1584,e.afii57425=1585,e.afii57426=1586,e.afii57427=1587,e.afii57428=1588,e.afii57429=1589,e.afii57430=1590,e.afii57431=1591,e.afii57432=1592,e.afii57433=1593,e.afii57434=1594,e.afii57440=1600,e.afii57441=1601,e.afii57442=1602,e.afii57443=1603,e.afii57444=1604,e.afii57445=1605,e.afii57446=1606,e.afii57448=1608,e.afii57449=1609,e.afii57450=1610,e.afii57451=1611,e.afii57452=1612,e.afii57453=1613,e.afii57454=1614,e.afii57455=1615,e.afii57456=1616,e.afii57457=1617,e.afii57458=1618,e.afii57470=1607,e.afii57505=1700,e.afii57506=1662,e.afii57507=1670,e.afii57508=1688,e.afii57509=1711,e.afii57511=1657,e.afii57512=1672,e.afii57513=1681,e.afii57514=1722,e.afii57519=1746,e.afii57534=1749,e.afii57636=8362,e.afii57645=1470,e.afii57658=1475,e.afii57664=1488,e.afii57665=1489,e.afii57666=1490,e.afii57667=1491,e.afii57668=1492,e.afii57669=1493,e.afii57670=1494,e.afii57671=1495,e.afii57672=1496,e.afii57673=1497,e.afii57674=1498,e.afii57675=1499,e.afii57676=1500,e.afii57677=1501,e.afii57678=1502,e.afii57679=1503,e.afii57680=1504,e.afii57681=1505,e.afii57682=1506,e.afii57683=1507,e.afii57684=1508,e.afii57685=1509,e.afii57686=1510,e.afii57687=1511,e.afii57688=1512,e.afii57689=1513,e.afii57690=1514,e.afii57694=64298,e.afii57695=64299,e.afii57700=64331,e.afii57705=64287,e.afii57716=1520,e.afii57717=1521,e.afii57718=1522,e.afii57723=64309,e.afii57793=1460,e.afii57794=1461,e.afii57795=1462,e.afii57796=1467,e.afii57797=1464,e.afii57798=1463,e.afii57799=1456,e.afii57800=1458,e.afii57801=1457,e.afii57802=1459,e.afii57803=1474,e.afii57804=1473,e.afii57806=1465,e.afii57807=1468,e.afii57839=1469,e.afii57841=1471,e.afii57842=1472,e.afii57929=700,e.afii61248=8453,e.afii61289=8467,e.afii61352=8470,e.afii61573=8236,e.afii61574=8237,e.afii61575=8238,e.afii61664=8204,e.afii63167=1645,e.afii64937=701,e.agrave=224,e.agujarati=2693,e.agurmukhi=2565,e.ahiragana=12354,e.ahookabove=7843,e.aibengali=2448,e.aibopomofo=12574,e.aideva=2320,e.aiecyrillic=1237,e.aigujarati=2704,e.aigurmukhi=2576,e.aimatragurmukhi=2632,e.ainarabic=1593,e.ainfinalarabic=65226,e.aininitialarabic=65227,e.ainmedialarabic=65228,e.ainvertedbreve=515,e.aivowelsignbengali=2504,e.aivowelsigndeva=2376,e.aivowelsigngujarati=2760,e.akatakana=12450,e.akatakanahalfwidth=65393,e.akorean=12623,e.alef=1488,e.alefarabic=1575,e.alefdageshhebrew=64304,e.aleffinalarabic=65166,e.alefhamzaabovearabic=1571,e.alefhamzaabovefinalarabic=65156,e.alefhamzabelowarabic=1573,e.alefhamzabelowfinalarabic=65160,e.alefhebrew=1488,e.aleflamedhebrew=64335,e.alefmaddaabovearabic=1570,e.alefmaddaabovefinalarabic=65154,e.alefmaksuraarabic=1609,e.alefmaksurafinalarabic=65264,e.alefmaksurainitialarabic=65267,e.alefmaksuramedialarabic=65268,e.alefpatahhebrew=64302,e.alefqamatshebrew=64303,e.aleph=8501,e.allequal=8780,e.alpha=945,e.alphatonos=940,e.amacron=257,e.amonospace=65345,e.ampersand=38,e.ampersandmonospace=65286,e.ampersandsmall=63270,e.amsquare=13250,e.anbopomofo=12578,e.angbopomofo=12580,e.angbracketleft=12296,e.angbracketright=12297,e.angkhankhuthai=3674,e.angle=8736,e.anglebracketleft=12296,e.anglebracketleftvertical=65087,e.anglebracketright=12297,e.anglebracketrightvertical=65088,e.angleleft=9001,e.angleright=9002,e.angstrom=8491,e.anoteleia=903,e.anudattadeva=2386,e.anusvarabengali=2434,e.anusvaradeva=2306,e.anusvaragujarati=2690,e.aogonek=261,e.apaatosquare=13056,e.aparen=9372,e.apostrophearmenian=1370,e.apostrophemod=700,e.apple=63743,e.approaches=8784,e.approxequal=8776,e.approxequalorimage=8786,e.approximatelyequal=8773,e.araeaekorean=12686,e.araeakorean=12685,e.arc=8978,e.arighthalfring=7834,e.aring=229,e.aringacute=507,e.aringbelow=7681,e.arrowboth=8596,e.arrowdashdown=8675,e.arrowdashleft=8672,e.arrowdashright=8674,e.arrowdashup=8673,e.arrowdblboth=8660,e.arrowdbldown=8659,e.arrowdblleft=8656,e.arrowdblright=8658,e.arrowdblup=8657,e.arrowdown=8595,e.arrowdownleft=8601,e.arrowdownright=8600,e.arrowdownwhite=8681,e.arrowheaddownmod=709,e.arrowheadleftmod=706,e.arrowheadrightmod=707,e.arrowheadupmod=708,e.arrowhorizex=63719,e.arrowleft=8592,e.arrowleftdbl=8656,e.arrowleftdblstroke=8653,e.arrowleftoverright=8646,e.arrowleftwhite=8678,e.arrowright=8594,e.arrowrightdblstroke=8655,e.arrowrightheavy=10142,e.arrowrightoverleft=8644,e.arrowrightwhite=8680,e.arrowtableft=8676,e.arrowtabright=8677,e.arrowup=8593,e.arrowupdn=8597,e.arrowupdnbse=8616,e.arrowupdownbase=8616,e.arrowupleft=8598,e.arrowupleftofdown=8645,e.arrowupright=8599,e.arrowupwhite=8679,e.arrowvertex=63718,e.asciicircum=94,e.asciicircummonospace=65342,e.asciitilde=126,e.asciitildemonospace=65374,e.ascript=593,e.ascriptturned=594,e.asmallhiragana=12353,e.asmallkatakana=12449,e.asmallkatakanahalfwidth=65383,e.asterisk=42,e.asteriskaltonearabic=1645,e.asteriskarabic=1645,e.asteriskmath=8727,e.asteriskmonospace=65290,e.asterisksmall=65121,e.asterism=8258,e.asuperior=63209,e.asymptoticallyequal=8771,e.at=64,e.atilde=227,e.atmonospace=65312,e.atsmall=65131,e.aturned=592,e.aubengali=2452,e.aubopomofo=12576,e.audeva=2324,e.augujarati=2708,e.augurmukhi=2580,e.aulengthmarkbengali=2519,e.aumatragurmukhi=2636,e.auvowelsignbengali=2508,e.auvowelsigndeva=2380,e.auvowelsigngujarati=2764,e.avagrahadeva=2365,e.aybarmenian=1377,e.ayin=1506,e.ayinaltonehebrew=64288,e.ayinhebrew=1506,e.b=98,e.babengali=2476,e.backslash=92,e.backslashmonospace=65340,e.badeva=2348,e.bagujarati=2732,e.bagurmukhi=2604,e.bahiragana=12400,e.bahtthai=3647,e.bakatakana=12496,e.bar=124,e.barmonospace=65372,e.bbopomofo=12549,e.bcircle=9425,e.bdotaccent=7683,e.bdotbelow=7685,e.beamedsixteenthnotes=9836,e.because=8757,e.becyrillic=1073,e.beharabic=1576,e.behfinalarabic=65168,e.behinitialarabic=65169,e.behiragana=12409,e.behmedialarabic=65170,e.behmeeminitialarabic=64671,e.behmeemisolatedarabic=64520,e.behnoonfinalarabic=64621,e.bekatakana=12505,e.benarmenian=1378,e.bet=1489,e.beta=946,e.betasymbolgreek=976,e.betdagesh=64305,e.betdageshhebrew=64305,e.bethebrew=1489,e.betrafehebrew=64332,e.bhabengali=2477,e.bhadeva=2349,e.bhagujarati=2733,e.bhagurmukhi=2605,e.bhook=595,e.bihiragana=12403,e.bikatakana=12499,e.bilabialclick=664,e.bindigurmukhi=2562,e.birusquare=13105,e.blackcircle=9679,e.blackdiamond=9670,e.blackdownpointingtriangle=9660,e.blackleftpointingpointer=9668,e.blackleftpointingtriangle=9664,e.blacklenticularbracketleft=12304,e.blacklenticularbracketleftvertical=65083,e.blacklenticularbracketright=12305,e.blacklenticularbracketrightvertical=65084,e.blacklowerlefttriangle=9699,e.blacklowerrighttriangle=9698,e.blackrectangle=9644,e.blackrightpointingpointer=9658,e.blackrightpointingtriangle=9654,e.blacksmallsquare=9642,e.blacksmilingface=9787,e.blacksquare=9632,e.blackstar=9733,e.blackupperlefttriangle=9700,e.blackupperrighttriangle=9701,e.blackuppointingsmalltriangle=9652,e.blackuppointingtriangle=9650,e.blank=9251,e.blinebelow=7687,e.block=9608,e.bmonospace=65346,e.bobaimaithai=3610,e.bohiragana=12412,e.bokatakana=12508,e.bparen=9373,e.bqsquare=13251,e.braceex=63732,e.braceleft=123,e.braceleftbt=63731,e.braceleftmid=63730,e.braceleftmonospace=65371,e.braceleftsmall=65115,e.bracelefttp=63729,e.braceleftvertical=65079,e.braceright=125,e.bracerightbt=63742,e.bracerightmid=63741,e.bracerightmonospace=65373,e.bracerightsmall=65116,e.bracerighttp=63740,e.bracerightvertical=65080,e.bracketleft=91,e.bracketleftbt=63728,e.bracketleftex=63727,e.bracketleftmonospace=65339,e.bracketlefttp=63726,e.bracketright=93,e.bracketrightbt=63739,e.bracketrightex=63738,e.bracketrightmonospace=65341,e.bracketrighttp=63737,e.breve=728,e.brevebelowcmb=814,e.brevecmb=774,e.breveinvertedbelowcmb=815,e.breveinvertedcmb=785,e.breveinverteddoublecmb=865,e.bridgebelowcmb=810,e.bridgeinvertedbelowcmb=826,e.brokenbar=166,e.bstroke=384,e.bsuperior=63210,e.btopbar=387,e.buhiragana=12406,e.bukatakana=12502,e.bullet=8226,e.bulletinverse=9688,e.bulletoperator=8729,e.bullseye=9678,e.c=99,e.caarmenian=1390,e.cabengali=2458,e.cacute=263,e.cadeva=2330,e.cagujarati=2714,e.cagurmukhi=2586,e.calsquare=13192,e.candrabindubengali=2433,e.candrabinducmb=784,e.candrabindudeva=2305,e.candrabindugujarati=2689,e.capslock=8682,e.careof=8453,e.caron=711,e.caronbelowcmb=812,e.caroncmb=780,e.carriagereturn=8629,e.cbopomofo=12568,e.ccaron=269,e.ccedilla=231,e.ccedillaacute=7689,e.ccircle=9426,e.ccircumflex=265,e.ccurl=597,e.cdot=267,e.cdotaccent=267,e.cdsquare=13253,e.cedilla=184,e.cedillacmb=807,e.cent=162,e.centigrade=8451,e.centinferior=63199,e.centmonospace=65504,e.centoldstyle=63394,e.centsuperior=63200,e.chaarmenian=1401,e.chabengali=2459,e.chadeva=2331,e.chagujarati=2715,e.chagurmukhi=2587,e.chbopomofo=12564,e.cheabkhasiancyrillic=1213,e.checkmark=10003,e.checyrillic=1095,e.chedescenderabkhasiancyrillic=1215,e.chedescendercyrillic=1207,e.chedieresiscyrillic=1269,e.cheharmenian=1395,e.chekhakassiancyrillic=1228,e.cheverticalstrokecyrillic=1209,e.chi=967,e.chieuchacirclekorean=12919,e.chieuchaparenkorean=12823,e.chieuchcirclekorean=12905,e.chieuchkorean=12618,e.chieuchparenkorean=12809,e.chochangthai=3594,e.chochanthai=3592,e.chochingthai=3593,e.chochoethai=3596,e.chook=392,e.cieucacirclekorean=12918,e.cieucaparenkorean=12822,e.cieuccirclekorean=12904,e.cieuckorean=12616,e.cieucparenkorean=12808,e.cieucuparenkorean=12828,e.circle=9675,e.circlecopyrt=169,e.circlemultiply=8855,e.circleot=8857,e.circleplus=8853,e.circlepostalmark=12342,e.circlewithlefthalfblack=9680,e.circlewithrighthalfblack=9681,e.circumflex=710,e.circumflexbelowcmb=813,e.circumflexcmb=770,e.clear=8999,e.clickalveolar=450,e.clickdental=448,e.clicklateral=449,e.clickretroflex=451,e.club=9827,e.clubsuitblack=9827,e.clubsuitwhite=9831,e.cmcubedsquare=13220,e.cmonospace=65347,e.cmsquaredsquare=13216,e.coarmenian=1409,e.colon=58,e.colonmonetary=8353,e.colonmonospace=65306,e.colonsign=8353,e.colonsmall=65109,e.colontriangularhalfmod=721,e.colontriangularmod=720,e.comma=44,e.commaabovecmb=787,e.commaaboverightcmb=789,e.commaaccent=63171,e.commaarabic=1548,e.commaarmenian=1373,e.commainferior=63201,e.commamonospace=65292,e.commareversedabovecmb=788,e.commareversedmod=701,e.commasmall=65104,e.commasuperior=63202,e.commaturnedabovecmb=786,e.commaturnedmod=699,e.compass=9788,e.congruent=8773,e.contourintegral=8750,e.control=8963,e.controlACK=6,e.controlBEL=7,e.controlBS=8,e.controlCAN=24,e.controlCR=13,e.controlDC1=17,e.controlDC2=18,e.controlDC3=19,e.controlDC4=20,e.controlDEL=127,e.controlDLE=16,e.controlEM=25,e.controlENQ=5,e.controlEOT=4,e.controlESC=27,e.controlETB=23,e.controlETX=3,e.controlFF=12,e.controlFS=28,e.controlGS=29,e.controlHT=9,e.controlLF=10,e.controlNAK=21,e.controlNULL=0,e.controlRS=30,e.controlSI=15,e.controlSO=14,e.controlSOT=2,e.controlSTX=1,e.controlSUB=26,e.controlSYN=22,e.controlUS=31,e.controlVT=11,e.copyright=169,e.copyrightsans=63721,e.copyrightserif=63193,e.cornerbracketleft=12300,e.cornerbracketlefthalfwidth=65378,e.cornerbracketleftvertical=65089,e.cornerbracketright=12301,e.cornerbracketrighthalfwidth=65379,e.cornerbracketrightvertical=65090,e.corporationsquare=13183,e.cosquare=13255,e.coverkgsquare=13254,e.cparen=9374,e.cruzeiro=8354,e.cstretched=663,e.curlyand=8911,e.curlyor=8910,e.currency=164,e.cyrBreve=63185,e.cyrFlex=63186,e.cyrbreve=63188,e.cyrflex=63189,e.d=100,e.daarmenian=1380,e.dabengali=2470,e.dadarabic=1590,e.dadeva=2342,e.dadfinalarabic=65214,e.dadinitialarabic=65215,e.dadmedialarabic=65216,e.dagesh=1468,e.dageshhebrew=1468,e.dagger=8224,e.daggerdbl=8225,e.dagujarati=2726,e.dagurmukhi=2598,e.dahiragana=12384,e.dakatakana=12480,e.dalarabic=1583,e.dalet=1491,e.daletdagesh=64307,e.daletdageshhebrew=64307,e.dalethebrew=1491,e.dalfinalarabic=65194,e.dammaarabic=1615,e.dammalowarabic=1615,e.dammatanaltonearabic=1612,e.dammatanarabic=1612,e.danda=2404,e.dargahebrew=1447,e.dargalefthebrew=1447,e.dasiapneumatacyrilliccmb=1157,e.dblGrave=63187,e.dblanglebracketleft=12298,e.dblanglebracketleftvertical=65085,e.dblanglebracketright=12299,e.dblanglebracketrightvertical=65086,e.dblarchinvertedbelowcmb=811,e.dblarrowleft=8660,e.dblarrowright=8658,e.dbldanda=2405,e.dblgrave=63190,e.dblgravecmb=783,e.dblintegral=8748,e.dbllowline=8215,e.dbllowlinecmb=819,e.dbloverlinecmb=831,e.dblprimemod=698,e.dblverticalbar=8214,e.dblverticallineabovecmb=782,e.dbopomofo=12553,e.dbsquare=13256,e.dcaron=271,e.dcedilla=7697,e.dcircle=9427,e.dcircumflexbelow=7699,e.dcroat=273,e.ddabengali=2465,e.ddadeva=2337,e.ddagujarati=2721,e.ddagurmukhi=2593,e.ddalarabic=1672,e.ddalfinalarabic=64393,e.dddhadeva=2396,e.ddhabengali=2466,e.ddhadeva=2338,e.ddhagujarati=2722,e.ddhagurmukhi=2594,e.ddotaccent=7691,e.ddotbelow=7693,e.decimalseparatorarabic=1643,e.decimalseparatorpersian=1643,e.decyrillic=1076,e.degree=176,e.dehihebrew=1453,e.dehiragana=12391,e.deicoptic=1007,e.dekatakana=12487,e.deleteleft=9003,e.deleteright=8998,e.delta=948,e.deltaturned=397,e.denominatorminusonenumeratorbengali=2552,e.dezh=676,e.dhabengali=2471,e.dhadeva=2343,e.dhagujarati=2727,e.dhagurmukhi=2599,e.dhook=599,e.dialytikatonos=901,e.dialytikatonoscmb=836,e.diamond=9830,e.diamondsuitwhite=9826,e.dieresis=168,e.dieresisacute=63191,e.dieresisbelowcmb=804,e.dieresiscmb=776,e.dieresisgrave=63192,e.dieresistonos=901,e.dihiragana=12386,e.dikatakana=12482,e.dittomark=12291,e.divide=247,e.divides=8739,e.divisionslash=8725,e.djecyrillic=1106,e.dkshade=9619,e.dlinebelow=7695,e.dlsquare=13207,e.dmacron=273,e.dmonospace=65348,e.dnblock=9604,e.dochadathai=3598,e.dodekthai=3604,e.dohiragana=12393,e.dokatakana=12489,e.dollar=36;e.dollarinferior=63203,e.dollarmonospace=65284,e.dollaroldstyle=63268,e.dollarsmall=65129,e.dollarsuperior=63204,e.dong=8363,e.dorusquare=13094,e.dotaccent=729,e.dotaccentcmb=775,e.dotbelowcmb=803,e.dotbelowcomb=803,e.dotkatakana=12539,e.dotlessi=305,e.dotlessj=63166,e.dotlessjstrokehook=644,e.dotmath=8901,e.dottedcircle=9676,e.doubleyodpatah=64287,e.doubleyodpatahhebrew=64287,e.downtackbelowcmb=798,e.downtackmod=725,e.dparen=9375,e.dsuperior=63211,e.dtail=598,e.dtopbar=396,e.duhiragana=12389,e.dukatakana=12485,e.dz=499,e.dzaltone=675,e.dzcaron=454,e.dzcurl=677,e.dzeabkhasiancyrillic=1249,e.dzecyrillic=1109,e.dzhecyrillic=1119,e.e=101,e.eacute=233,e.earth=9793,e.ebengali=2447,e.ebopomofo=12572,e.ebreve=277,e.ecandradeva=2317,e.ecandragujarati=2701,e.ecandravowelsigndeva=2373,e.ecandravowelsigngujarati=2757,e.ecaron=283,e.ecedillabreve=7709,e.echarmenian=1381,e.echyiwnarmenian=1415,e.ecircle=9428,e.ecircumflex=234,e.ecircumflexacute=7871,e.ecircumflexbelow=7705,e.ecircumflexdotbelow=7879,e.ecircumflexgrave=7873,e.ecircumflexhookabove=7875,e.ecircumflextilde=7877,e.ecyrillic=1108,e.edblgrave=517,e.edeva=2319,e.edieresis=235,e.edot=279,e.edotaccent=279,e.edotbelow=7865,e.eegurmukhi=2575,e.eematragurmukhi=2631,e.efcyrillic=1092,e.egrave=232,e.egujarati=2703,e.eharmenian=1383,e.ehbopomofo=12573,e.ehiragana=12360,e.ehookabove=7867,e.eibopomofo=12575,e.eight=56,e.eightarabic=1640,e.eightbengali=2542,e.eightcircle=9319,e.eightcircleinversesansserif=10129,e.eightdeva=2414,e.eighteencircle=9329,e.eighteenparen=9349,e.eighteenperiod=9369,e.eightgujarati=2798,e.eightgurmukhi=2670,e.eighthackarabic=1640,e.eighthangzhou=12328,e.eighthnotebeamed=9835,e.eightideographicparen=12839,e.eightinferior=8328,e.eightmonospace=65304,e.eightoldstyle=63288,e.eightparen=9339,e.eightperiod=9359,e.eightpersian=1784,e.eightroman=8567,e.eightsuperior=8312,e.eightthai=3672,e.einvertedbreve=519,e.eiotifiedcyrillic=1125,e.ekatakana=12456,e.ekatakanahalfwidth=65396,e.ekonkargurmukhi=2676,e.ekorean=12628,e.elcyrillic=1083,e.element=8712,e.elevencircle=9322,e.elevenparen=9342,e.elevenperiod=9362,e.elevenroman=8570,e.ellipsis=8230,e.ellipsisvertical=8942,e.emacron=275,e.emacronacute=7703,e.emacrongrave=7701,e.emcyrillic=1084,e.emdash=8212,e.emdashvertical=65073,e.emonospace=65349,e.emphasismarkarmenian=1371,e.emptyset=8709,e.enbopomofo=12579,e.encyrillic=1085,e.endash=8211,e.endashvertical=65074,e.endescendercyrillic=1187,e.eng=331,e.engbopomofo=12581,e.enghecyrillic=1189,e.enhookcyrillic=1224,e.enspace=8194,e.eogonek=281,e.eokorean=12627,e.eopen=603,e.eopenclosed=666,e.eopenreversed=604,e.eopenreversedclosed=606,e.eopenreversedhook=605,e.eparen=9376,e.epsilon=949,e.epsilontonos=941,e.equal=61,e.equalmonospace=65309,e.equalsmall=65126,e.equalsuperior=8316,e.equivalence=8801,e.erbopomofo=12582,e.ercyrillic=1088,e.ereversed=600,e.ereversedcyrillic=1101,e.escyrillic=1089,e.esdescendercyrillic=1195,e.esh=643,e.eshcurl=646,e.eshortdeva=2318,e.eshortvowelsigndeva=2374,e.eshreversedloop=426,e.eshsquatreversed=645,e.esmallhiragana=12359,e.esmallkatakana=12455,e.esmallkatakanahalfwidth=65386,e.estimated=8494,e.esuperior=63212,e.eta=951,e.etarmenian=1384,e.etatonos=942,e.eth=240,e.etilde=7869,e.etildebelow=7707,e.etnahtafoukhhebrew=1425,e.etnahtafoukhlefthebrew=1425,e.etnahtahebrew=1425,e.etnahtalefthebrew=1425,e.eturned=477,e.eukorean=12641,e.euro=8364,e.evowelsignbengali=2503,e.evowelsigndeva=2375,e.evowelsigngujarati=2759,e.exclam=33,e.exclamarmenian=1372,e.exclamdbl=8252,e.exclamdown=161,e.exclamdownsmall=63393,e.exclammonospace=65281,e.exclamsmall=63265,e.existential=8707,e.ezh=658,e.ezhcaron=495,e.ezhcurl=659,e.ezhreversed=441,e.ezhtail=442,e.f=102,e.fadeva=2398,e.fagurmukhi=2654,e.fahrenheit=8457,e.fathaarabic=1614,e.fathalowarabic=1614,e.fathatanarabic=1611,e.fbopomofo=12552,e.fcircle=9429,e.fdotaccent=7711,e.feharabic=1601,e.feharmenian=1414,e.fehfinalarabic=65234,e.fehinitialarabic=65235,e.fehmedialarabic=65236,e.feicoptic=997,e.female=9792,e.ff=64256,e.f_f=64256,e.ffi=64259,e.f_f_i=64259,e.ffl=64260,e.f_f_l=64260,e.fi=64257,e.f_i=64257,e.fifteencircle=9326,e.fifteenparen=9346,e.fifteenperiod=9366,e.figuredash=8210,e.filledbox=9632,e.filledrect=9644,e.finalkaf=1498,e.finalkafdagesh=64314,e.finalkafdageshhebrew=64314,e.finalkafhebrew=1498,e.finalmem=1501,e.finalmemhebrew=1501,e.finalnun=1503,e.finalnunhebrew=1503,e.finalpe=1507,e.finalpehebrew=1507,e.finaltsadi=1509,e.finaltsadihebrew=1509,e.firsttonechinese=713,e.fisheye=9673,e.fitacyrillic=1139,e.five=53,e.fivearabic=1637,e.fivebengali=2539,e.fivecircle=9316,e.fivecircleinversesansserif=10126,e.fivedeva=2411,e.fiveeighths=8541,e.fivegujarati=2795,e.fivegurmukhi=2667,e.fivehackarabic=1637,e.fivehangzhou=12325,e.fiveideographicparen=12836,e.fiveinferior=8325,e.fivemonospace=65301,e.fiveoldstyle=63285,e.fiveparen=9336,e.fiveperiod=9356,e.fivepersian=1781,e.fiveroman=8564,e.fivesuperior=8309,e.fivethai=3669,e.fl=64258,e.f_l=64258,e.florin=402,e.fmonospace=65350,e.fmsquare=13209,e.fofanthai=3615,e.fofathai=3613,e.fongmanthai=3663,e.forall=8704,e.four=52,e.fourarabic=1636,e.fourbengali=2538,e.fourcircle=9315,e.fourcircleinversesansserif=10125,e.fourdeva=2410,e.fourgujarati=2794,e.fourgurmukhi=2666,e.fourhackarabic=1636,e.fourhangzhou=12324,e.fourideographicparen=12835,e.fourinferior=8324,e.fourmonospace=65300,e.fournumeratorbengali=2551,e.fouroldstyle=63284,e.fourparen=9335,e.fourperiod=9355,e.fourpersian=1780,e.fourroman=8563,e.foursuperior=8308,e.fourteencircle=9325,e.fourteenparen=9345,e.fourteenperiod=9365,e.fourthai=3668,e.fourthtonechinese=715,e.fparen=9377,e.fraction=8260,e.franc=8355,e.g=103,e.gabengali=2455,e.gacute=501,e.gadeva=2327,e.gafarabic=1711,e.gaffinalarabic=64403,e.gafinitialarabic=64404,e.gafmedialarabic=64405,e.gagujarati=2711,e.gagurmukhi=2583,e.gahiragana=12364,e.gakatakana=12460,e.gamma=947,e.gammalatinsmall=611,e.gammasuperior=736,e.gangiacoptic=1003,e.gbopomofo=12557,e.gbreve=287,e.gcaron=487,e.gcedilla=291,e.gcircle=9430,e.gcircumflex=285,e.gcommaaccent=291,e.gdot=289,e.gdotaccent=289,e.gecyrillic=1075,e.gehiragana=12370,e.gekatakana=12466,e.geometricallyequal=8785,e.gereshaccenthebrew=1436,e.gereshhebrew=1523,e.gereshmuqdamhebrew=1437,e.germandbls=223,e.gershayimaccenthebrew=1438,e.gershayimhebrew=1524,e.getamark=12307,e.ghabengali=2456,e.ghadarmenian=1394,e.ghadeva=2328,e.ghagujarati=2712,e.ghagurmukhi=2584,e.ghainarabic=1594,e.ghainfinalarabic=65230,e.ghaininitialarabic=65231,e.ghainmedialarabic=65232,e.ghemiddlehookcyrillic=1173,e.ghestrokecyrillic=1171,e.gheupturncyrillic=1169,e.ghhadeva=2394,e.ghhagurmukhi=2650,e.ghook=608,e.ghzsquare=13203,e.gihiragana=12366,e.gikatakana=12462,e.gimarmenian=1379,e.gimel=1490,e.gimeldagesh=64306,e.gimeldageshhebrew=64306,e.gimelhebrew=1490,e.gjecyrillic=1107,e.glottalinvertedstroke=446,e.glottalstop=660,e.glottalstopinverted=662,e.glottalstopmod=704,e.glottalstopreversed=661,e.glottalstopreversedmod=705,e.glottalstopreversedsuperior=740,e.glottalstopstroke=673,e.glottalstopstrokereversed=674,e.gmacron=7713,e.gmonospace=65351,e.gohiragana=12372,e.gokatakana=12468,e.gparen=9378,e.gpasquare=13228,e.gradient=8711,e.grave=96,e.gravebelowcmb=790,e.gravecmb=768,e.gravecomb=768,e.gravedeva=2387,e.gravelowmod=718,e.gravemonospace=65344,e.gravetonecmb=832,e.greater=62,e.greaterequal=8805,e.greaterequalorless=8923,e.greatermonospace=65310,e.greaterorequivalent=8819,e.greaterorless=8823,e.greateroverequal=8807,e.greatersmall=65125,e.gscript=609,e.gstroke=485,e.guhiragana=12368,e.guillemotleft=171,e.guillemotright=187,e.guilsinglleft=8249,e.guilsinglright=8250,e.gukatakana=12464,e.guramusquare=13080,e.gysquare=13257,e.h=104,e.haabkhasiancyrillic=1193,e.haaltonearabic=1729,e.habengali=2489,e.hadescendercyrillic=1203,e.hadeva=2361,e.hagujarati=2745,e.hagurmukhi=2617,e.haharabic=1581,e.hahfinalarabic=65186,e.hahinitialarabic=65187,e.hahiragana=12399,e.hahmedialarabic=65188,e.haitusquare=13098,e.hakatakana=12495,e.hakatakanahalfwidth=65418,e.halantgurmukhi=2637,e.hamzaarabic=1569,e.hamzalowarabic=1569,e.hangulfiller=12644,e.hardsigncyrillic=1098,e.harpoonleftbarbup=8636,e.harpoonrightbarbup=8640,e.hasquare=13258,e.hatafpatah=1458,e.hatafpatah16=1458,e.hatafpatah23=1458,e.hatafpatah2f=1458,e.hatafpatahhebrew=1458,e.hatafpatahnarrowhebrew=1458,e.hatafpatahquarterhebrew=1458,e.hatafpatahwidehebrew=1458,e.hatafqamats=1459,e.hatafqamats1b=1459,e.hatafqamats28=1459,e.hatafqamats34=1459,e.hatafqamatshebrew=1459,e.hatafqamatsnarrowhebrew=1459,e.hatafqamatsquarterhebrew=1459,e.hatafqamatswidehebrew=1459,e.hatafsegol=1457,e.hatafsegol17=1457,e.hatafsegol24=1457,e.hatafsegol30=1457,e.hatafsegolhebrew=1457,e.hatafsegolnarrowhebrew=1457,e.hatafsegolquarterhebrew=1457,e.hatafsegolwidehebrew=1457,e.hbar=295,e.hbopomofo=12559,e.hbrevebelow=7723,e.hcedilla=7721,e.hcircle=9431,e.hcircumflex=293,e.hdieresis=7719,e.hdotaccent=7715,e.hdotbelow=7717,e.he=1492,e.heart=9829,e.heartsuitblack=9829,e.heartsuitwhite=9825,e.hedagesh=64308,e.hedageshhebrew=64308,e.hehaltonearabic=1729,e.heharabic=1607,e.hehebrew=1492,e.hehfinalaltonearabic=64423,e.hehfinalalttwoarabic=65258,e.hehfinalarabic=65258,e.hehhamzaabovefinalarabic=64421,e.hehhamzaaboveisolatedarabic=64420,e.hehinitialaltonearabic=64424,e.hehinitialarabic=65259,e.hehiragana=12408,e.hehmedialaltonearabic=64425,e.hehmedialarabic=65260,e.heiseierasquare=13179,e.hekatakana=12504,e.hekatakanahalfwidth=65421,e.hekutaarusquare=13110,e.henghook=615,e.herutusquare=13113,e.het=1495,e.hethebrew=1495,e.hhook=614,e.hhooksuperior=689,e.hieuhacirclekorean=12923,e.hieuhaparenkorean=12827,e.hieuhcirclekorean=12909,e.hieuhkorean=12622,e.hieuhparenkorean=12813,e.hihiragana=12402,e.hikatakana=12498,e.hikatakanahalfwidth=65419,e.hiriq=1460,e.hiriq14=1460,e.hiriq21=1460,e.hiriq2d=1460,e.hiriqhebrew=1460,e.hiriqnarrowhebrew=1460,e.hiriqquarterhebrew=1460,e.hiriqwidehebrew=1460,e.hlinebelow=7830,e.hmonospace=65352,e.hoarmenian=1392,e.hohipthai=3627,e.hohiragana=12411,e.hokatakana=12507,e.hokatakanahalfwidth=65422,e.holam=1465,e.holam19=1465,e.holam26=1465,e.holam32=1465,e.holamhebrew=1465,e.holamnarrowhebrew=1465,e.holamquarterhebrew=1465,e.holamwidehebrew=1465,e.honokhukthai=3630,e.hookabovecomb=777,e.hookcmb=777,e.hookpalatalizedbelowcmb=801,e.hookretroflexbelowcmb=802,e.hoonsquare=13122,e.horicoptic=1001,e.horizontalbar=8213,e.horncmb=795,e.hotsprings=9832,e.house=8962,e.hparen=9379,e.hsuperior=688,e.hturned=613,e.huhiragana=12405,e.huiitosquare=13107,e.hukatakana=12501,e.hukatakanahalfwidth=65420,e.hungarumlaut=733,e.hungarumlautcmb=779,e.hv=405,e.hyphen=45,e.hypheninferior=63205,e.hyphenmonospace=65293,e.hyphensmall=65123,e.hyphensuperior=63206,e.hyphentwo=8208,e.i=105,e.iacute=237,e.iacyrillic=1103,e.ibengali=2439,e.ibopomofo=12583,e.ibreve=301,e.icaron=464,e.icircle=9432,e.icircumflex=238,e.icyrillic=1110,e.idblgrave=521,e.ideographearthcircle=12943,e.ideographfirecircle=12939,e.ideographicallianceparen=12863,e.ideographiccallparen=12858,e.ideographiccentrecircle=12965,e.ideographicclose=12294,e.ideographiccomma=12289,e.ideographiccommaleft=65380,e.ideographiccongratulationparen=12855,e.ideographiccorrectcircle=12963,e.ideographicearthparen=12847,e.ideographicenterpriseparen=12861,e.ideographicexcellentcircle=12957,e.ideographicfestivalparen=12864,e.ideographicfinancialcircle=12950,e.ideographicfinancialparen=12854,e.ideographicfireparen=12843,e.ideographichaveparen=12850,e.ideographichighcircle=12964,e.ideographiciterationmark=12293,e.ideographiclaborcircle=12952,e.ideographiclaborparen=12856,e.ideographicleftcircle=12967,e.ideographiclowcircle=12966,e.ideographicmedicinecircle=12969,e.ideographicmetalparen=12846,e.ideographicmoonparen=12842,e.ideographicnameparen=12852,e.ideographicperiod=12290,e.ideographicprintcircle=12958,e.ideographicreachparen=12867,e.ideographicrepresentparen=12857,e.ideographicresourceparen=12862,e.ideographicrightcircle=12968,e.ideographicsecretcircle=12953,e.ideographicselfparen=12866,e.ideographicsocietyparen=12851,e.ideographicspace=12288,e.ideographicspecialparen=12853,e.ideographicstockparen=12849,e.ideographicstudyparen=12859,e.ideographicsunparen=12848,e.ideographicsuperviseparen=12860,e.ideographicwaterparen=12844,e.ideographicwoodparen=12845,e.ideographiczero=12295,e.ideographmetalcircle=12942,e.ideographmooncircle=12938,e.ideographnamecircle=12948,e.ideographsuncircle=12944,e.ideographwatercircle=12940,e.ideographwoodcircle=12941,e.ideva=2311,e.idieresis=239,e.idieresisacute=7727,e.idieresiscyrillic=1253,e.idotbelow=7883,e.iebrevecyrillic=1239,e.iecyrillic=1077,e.ieungacirclekorean=12917,e.ieungaparenkorean=12821,e.ieungcirclekorean=12903,e.ieungkorean=12615,e.ieungparenkorean=12807,e.igrave=236,e.igujarati=2695,e.igurmukhi=2567,e.ihiragana=12356,e.ihookabove=7881,e.iibengali=2440,e.iicyrillic=1080,e.iideva=2312,e.iigujarati=2696,e.iigurmukhi=2568,e.iimatragurmukhi=2624,e.iinvertedbreve=523,e.iishortcyrillic=1081,e.iivowelsignbengali=2496,e.iivowelsigndeva=2368,e.iivowelsigngujarati=2752,e.ij=307,e.ikatakana=12452,e.ikatakanahalfwidth=65394,e.ikorean=12643,e.ilde=732,e.iluyhebrew=1452,e.imacron=299,e.imacroncyrillic=1251,e.imageorapproximatelyequal=8787,e.imatragurmukhi=2623,e.imonospace=65353,e.increment=8710,e.infinity=8734,e.iniarmenian=1387,e.integral=8747,e.integralbottom=8993,e.integralbt=8993,e.integralex=63733,e.integraltop=8992,e.integraltp=8992,e.intersection=8745,e.intisquare=13061,e.invbullet=9688,e.invcircle=9689,e.invsmileface=9787,e.iocyrillic=1105,e.iogonek=303,e.iota=953,e.iotadieresis=970,e.iotadieresistonos=912,e.iotalatin=617,e.iotatonos=943,e.iparen=9380,e.irigurmukhi=2674,e.ismallhiragana=12355,e.ismallkatakana=12451,e.ismallkatakanahalfwidth=65384,e.issharbengali=2554,e.istroke=616,e.isuperior=63213,e.iterationhiragana=12445,e.iterationkatakana=12541,e.itilde=297,e.itildebelow=7725,e.iubopomofo=12585,e.iucyrillic=1102,e.ivowelsignbengali=2495,e.ivowelsigndeva=2367,e.ivowelsigngujarati=2751,e.izhitsacyrillic=1141,e.izhitsadblgravecyrillic=1143,e.j=106,e.jaarmenian=1393,e.jabengali=2460,e.jadeva=2332,e.jagujarati=2716,e.jagurmukhi=2588,e.jbopomofo=12560,e.jcaron=496,e.jcircle=9433,e.jcircumflex=309,e.jcrossedtail=669,e.jdotlessstroke=607,e.jecyrillic=1112,e.jeemarabic=1580,e.jeemfinalarabic=65182,e.jeeminitialarabic=65183,e.jeemmedialarabic=65184,e.jeharabic=1688,e.jehfinalarabic=64395,e.jhabengali=2461,e.jhadeva=2333,e.jhagujarati=2717,e.jhagurmukhi=2589,e.jheharmenian=1403,e.jis=12292,e.jmonospace=65354,e.jparen=9381,e.jsuperior=690,e.k=107,e.kabashkircyrillic=1185,e.kabengali=2453,e.kacute=7729,e.kacyrillic=1082,e.kadescendercyrillic=1179,e.kadeva=2325,e.kaf=1499,e.kafarabic=1603,e.kafdagesh=64315,e.kafdageshhebrew=64315,e.kaffinalarabic=65242,e.kafhebrew=1499,e.kafinitialarabic=65243,e.kafmedialarabic=65244,e.kafrafehebrew=64333,e.kagujarati=2709,e.kagurmukhi=2581,e.kahiragana=12363,e.kahookcyrillic=1220,e.kakatakana=12459,e.kakatakanahalfwidth=65398,e.kappa=954,e.kappasymbolgreek=1008,e.kapyeounmieumkorean=12657,e.kapyeounphieuphkorean=12676,e.kapyeounpieupkorean=12664,e.kapyeounssangpieupkorean=12665,e.karoriisquare=13069,e.kashidaautoarabic=1600,e.kashidaautonosidebearingarabic=1600,e.kasmallkatakana=12533,e.kasquare=13188,e.kasraarabic=1616,e.kasratanarabic=1613,e.kastrokecyrillic=1183,e.katahiraprolongmarkhalfwidth=65392,e.kaverticalstrokecyrillic=1181,e.kbopomofo=12558,e.kcalsquare=13193,e.kcaron=489,e.kcedilla=311,e.kcircle=9434,e.kcommaaccent=311,e.kdotbelow=7731,e.keharmenian=1412,e.kehiragana=12369,e.kekatakana=12465,e.kekatakanahalfwidth=65401,e.kenarmenian=1391,e.kesmallkatakana=12534,e.kgreenlandic=312,e.khabengali=2454,e.khacyrillic=1093,e.khadeva=2326,e.khagujarati=2710,e.khagurmukhi=2582,e.khaharabic=1582,e.khahfinalarabic=65190,e.khahinitialarabic=65191,e.khahmedialarabic=65192,e.kheicoptic=999,e.khhadeva=2393,e.khhagurmukhi=2649,e.khieukhacirclekorean=12920,e.khieukhaparenkorean=12824,e.khieukhcirclekorean=12906,e.khieukhkorean=12619,e.khieukhparenkorean=12810,e.khokhaithai=3586,e.khokhonthai=3589,e.khokhuatthai=3587,e.khokhwaithai=3588,e.khomutthai=3675,e.khook=409,e.khorakhangthai=3590,e.khzsquare=13201,e.kihiragana=12365,e.kikatakana=12461,e.kikatakanahalfwidth=65399,e.kiroguramusquare=13077,e.kiromeetorusquare=13078,e.kirosquare=13076,e.kiyeokacirclekorean=12910,e.kiyeokaparenkorean=12814,e.kiyeokcirclekorean=12896,e.kiyeokkorean=12593,e.kiyeokparenkorean=12800,e.kiyeoksioskorean=12595;e.kjecyrillic=1116,e.klinebelow=7733,e.klsquare=13208,e.kmcubedsquare=13222,e.kmonospace=65355,e.kmsquaredsquare=13218,e.kohiragana=12371,e.kohmsquare=13248,e.kokaithai=3585,e.kokatakana=12467,e.kokatakanahalfwidth=65402,e.kooposquare=13086,e.koppacyrillic=1153,e.koreanstandardsymbol=12927,e.koroniscmb=835,e.kparen=9382,e.kpasquare=13226,e.ksicyrillic=1135,e.ktsquare=13263,e.kturned=670,e.kuhiragana=12367,e.kukatakana=12463,e.kukatakanahalfwidth=65400,e.kvsquare=13240,e.kwsquare=13246,e.l=108,e.labengali=2482,e.lacute=314,e.ladeva=2354,e.lagujarati=2738,e.lagurmukhi=2610,e.lakkhangyaothai=3653,e.lamaleffinalarabic=65276,e.lamalefhamzaabovefinalarabic=65272,e.lamalefhamzaaboveisolatedarabic=65271,e.lamalefhamzabelowfinalarabic=65274,e.lamalefhamzabelowisolatedarabic=65273,e.lamalefisolatedarabic=65275,e.lamalefmaddaabovefinalarabic=65270,e.lamalefmaddaaboveisolatedarabic=65269,e.lamarabic=1604,e.lambda=955,e.lambdastroke=411,e.lamed=1500,e.lameddagesh=64316,e.lameddageshhebrew=64316,e.lamedhebrew=1500,e.lamfinalarabic=65246,e.lamhahinitialarabic=64714,e.laminitialarabic=65247,e.lamjeeminitialarabic=64713,e.lamkhahinitialarabic=64715,e.lamlamhehisolatedarabic=65010,e.lammedialarabic=65248,e.lammeemhahinitialarabic=64904,e.lammeeminitialarabic=64716,e.largecircle=9711,e.lbar=410,e.lbelt=620,e.lbopomofo=12556,e.lcaron=318,e.lcedilla=316,e.lcircle=9435,e.lcircumflexbelow=7741,e.lcommaaccent=316,e.ldot=320,e.ldotaccent=320,e.ldotbelow=7735,e.ldotbelowmacron=7737,e.leftangleabovecmb=794,e.lefttackbelowcmb=792,e.less=60,e.lessequal=8804,e.lessequalorgreater=8922,e.lessmonospace=65308,e.lessorequivalent=8818,e.lessorgreater=8822,e.lessoverequal=8806,e.lesssmall=65124,e.lezh=622,e.lfblock=9612,e.lhookretroflex=621,e.lira=8356,e.liwnarmenian=1388,e.lj=457,e.ljecyrillic=1113,e.ll=63168,e.lladeva=2355,e.llagujarati=2739,e.llinebelow=7739,e.llladeva=2356,e.llvocalicbengali=2529,e.llvocalicdeva=2401,e.llvocalicvowelsignbengali=2531,e.llvocalicvowelsigndeva=2403,e.lmiddletilde=619,e.lmonospace=65356,e.lmsquare=13264,e.lochulathai=3628,e.logicaland=8743,e.logicalnot=172,e.logicalnotreversed=8976,e.logicalor=8744,e.lolingthai=3621,e.longs=383,e.lowlinecenterline=65102,e.lowlinecmb=818,e.lowlinedashed=65101,e.lozenge=9674,e.lparen=9383,e.lslash=322,e.lsquare=8467,e.lsuperior=63214,e.ltshade=9617,e.luthai=3622,e.lvocalicbengali=2444,e.lvocalicdeva=2316,e.lvocalicvowelsignbengali=2530,e.lvocalicvowelsigndeva=2402,e.lxsquare=13267,e.m=109,e.mabengali=2478,e.macron=175,e.macronbelowcmb=817,e.macroncmb=772,e.macronlowmod=717,e.macronmonospace=65507,e.macute=7743,e.madeva=2350,e.magujarati=2734,e.magurmukhi=2606,e.mahapakhhebrew=1444,e.mahapakhlefthebrew=1444,e.mahiragana=12414,e.maichattawalowleftthai=63637,e.maichattawalowrightthai=63636,e.maichattawathai=3659,e.maichattawaupperleftthai=63635,e.maieklowleftthai=63628,e.maieklowrightthai=63627,e.maiekthai=3656,e.maiekupperleftthai=63626,e.maihanakatleftthai=63620,e.maihanakatthai=3633,e.maitaikhuleftthai=63625,e.maitaikhuthai=3655,e.maitholowleftthai=63631,e.maitholowrightthai=63630,e.maithothai=3657,e.maithoupperleftthai=63629,e.maitrilowleftthai=63634,e.maitrilowrightthai=63633,e.maitrithai=3658,e.maitriupperleftthai=63632,e.maiyamokthai=3654,e.makatakana=12510,e.makatakanahalfwidth=65423,e.male=9794,e.mansyonsquare=13127,e.maqafhebrew=1470,e.mars=9794,e.masoracirclehebrew=1455,e.masquare=13187,e.mbopomofo=12551,e.mbsquare=13268,e.mcircle=9436,e.mcubedsquare=13221,e.mdotaccent=7745,e.mdotbelow=7747,e.meemarabic=1605,e.meemfinalarabic=65250,e.meeminitialarabic=65251,e.meemmedialarabic=65252,e.meemmeeminitialarabic=64721,e.meemmeemisolatedarabic=64584,e.meetorusquare=13133,e.mehiragana=12417,e.meizierasquare=13182,e.mekatakana=12513,e.mekatakanahalfwidth=65426,e.mem=1502,e.memdagesh=64318,e.memdageshhebrew=64318,e.memhebrew=1502,e.menarmenian=1396,e.merkhahebrew=1445,e.merkhakefulahebrew=1446,e.merkhakefulalefthebrew=1446,e.merkhalefthebrew=1445,e.mhook=625,e.mhzsquare=13202,e.middledotkatakanahalfwidth=65381,e.middot=183,e.mieumacirclekorean=12914,e.mieumaparenkorean=12818,e.mieumcirclekorean=12900,e.mieumkorean=12609,e.mieumpansioskorean=12656,e.mieumparenkorean=12804,e.mieumpieupkorean=12654,e.mieumsioskorean=12655,e.mihiragana=12415,e.mikatakana=12511,e.mikatakanahalfwidth=65424,e.minus=8722,e.minusbelowcmb=800,e.minuscircle=8854,e.minusmod=727,e.minusplus=8723,e.minute=8242,e.miribaarusquare=13130,e.mirisquare=13129,e.mlonglegturned=624,e.mlsquare=13206,e.mmcubedsquare=13219,e.mmonospace=65357,e.mmsquaredsquare=13215,e.mohiragana=12418,e.mohmsquare=13249,e.mokatakana=12514,e.mokatakanahalfwidth=65427,e.molsquare=13270,e.momathai=3617,e.moverssquare=13223,e.moverssquaredsquare=13224,e.mparen=9384,e.mpasquare=13227,e.mssquare=13235,e.msuperior=63215,e.mturned=623,e.mu=181,e.mu1=181,e.muasquare=13186,e.muchgreater=8811,e.muchless=8810,e.mufsquare=13196,e.mugreek=956,e.mugsquare=13197,e.muhiragana=12416,e.mukatakana=12512,e.mukatakanahalfwidth=65425,e.mulsquare=13205,e.multiply=215,e.mumsquare=13211,e.munahhebrew=1443,e.munahlefthebrew=1443,e.musicalnote=9834,e.musicalnotedbl=9835,e.musicflatsign=9837,e.musicsharpsign=9839,e.mussquare=13234,e.muvsquare=13238,e.muwsquare=13244,e.mvmegasquare=13241,e.mvsquare=13239,e.mwmegasquare=13247,e.mwsquare=13245,e.n=110,e.nabengali=2472,e.nabla=8711,e.nacute=324,e.nadeva=2344,e.nagujarati=2728,e.nagurmukhi=2600,e.nahiragana=12394,e.nakatakana=12490,e.nakatakanahalfwidth=65413,e.napostrophe=329,e.nasquare=13185,e.nbopomofo=12555,e.nbspace=160,e.ncaron=328,e.ncedilla=326,e.ncircle=9437,e.ncircumflexbelow=7755,e.ncommaaccent=326,e.ndotaccent=7749,e.ndotbelow=7751,e.nehiragana=12397,e.nekatakana=12493,e.nekatakanahalfwidth=65416,e.newsheqelsign=8362,e.nfsquare=13195,e.ngabengali=2457,e.ngadeva=2329,e.ngagujarati=2713,e.ngagurmukhi=2585,e.ngonguthai=3591,e.nhiragana=12435,e.nhookleft=626,e.nhookretroflex=627,e.nieunacirclekorean=12911,e.nieunaparenkorean=12815,e.nieuncieuckorean=12597,e.nieuncirclekorean=12897,e.nieunhieuhkorean=12598,e.nieunkorean=12596,e.nieunpansioskorean=12648,e.nieunparenkorean=12801,e.nieunsioskorean=12647,e.nieuntikeutkorean=12646,e.nihiragana=12395,e.nikatakana=12491,e.nikatakanahalfwidth=65414,e.nikhahitleftthai=63641,e.nikhahitthai=3661,e.nine=57,e.ninearabic=1641,e.ninebengali=2543,e.ninecircle=9320,e.ninecircleinversesansserif=10130,e.ninedeva=2415,e.ninegujarati=2799,e.ninegurmukhi=2671,e.ninehackarabic=1641,e.ninehangzhou=12329,e.nineideographicparen=12840,e.nineinferior=8329,e.ninemonospace=65305,e.nineoldstyle=63289,e.nineparen=9340,e.nineperiod=9360,e.ninepersian=1785,e.nineroman=8568,e.ninesuperior=8313,e.nineteencircle=9330,e.nineteenparen=9350,e.nineteenperiod=9370,e.ninethai=3673,e.nj=460,e.njecyrillic=1114,e.nkatakana=12531,e.nkatakanahalfwidth=65437,e.nlegrightlong=414,e.nlinebelow=7753,e.nmonospace=65358,e.nmsquare=13210,e.nnabengali=2467,e.nnadeva=2339,e.nnagujarati=2723,e.nnagurmukhi=2595,e.nnnadeva=2345,e.nohiragana=12398,e.nokatakana=12494,e.nokatakanahalfwidth=65417,e.nonbreakingspace=160,e.nonenthai=3603,e.nonuthai=3609,e.noonarabic=1606,e.noonfinalarabic=65254,e.noonghunnaarabic=1722,e.noonghunnafinalarabic=64415,e.nooninitialarabic=65255,e.noonjeeminitialarabic=64722,e.noonjeemisolatedarabic=64587,e.noonmedialarabic=65256,e.noonmeeminitialarabic=64725,e.noonmeemisolatedarabic=64590,e.noonnoonfinalarabic=64653,e.notcontains=8716,e.notelement=8713,e.notelementof=8713,e.notequal=8800,e.notgreater=8815,e.notgreaternorequal=8817,e.notgreaternorless=8825,e.notidentical=8802,e.notless=8814,e.notlessnorequal=8816,e.notparallel=8742,e.notprecedes=8832,e.notsubset=8836,e.notsucceeds=8833,e.notsuperset=8837,e.nowarmenian=1398,e.nparen=9385,e.nssquare=13233,e.nsuperior=8319,e.ntilde=241,e.nu=957,e.nuhiragana=12396,e.nukatakana=12492,e.nukatakanahalfwidth=65415,e.nuktabengali=2492,e.nuktadeva=2364,e.nuktagujarati=2748,e.nuktagurmukhi=2620,e.numbersign=35,e.numbersignmonospace=65283,e.numbersignsmall=65119,e.numeralsigngreek=884,e.numeralsignlowergreek=885,e.numero=8470,e.nun=1504,e.nundagesh=64320,e.nundageshhebrew=64320,e.nunhebrew=1504,e.nvsquare=13237,e.nwsquare=13243,e.nyabengali=2462,e.nyadeva=2334,e.nyagujarati=2718,e.nyagurmukhi=2590,e.o=111,e.oacute=243,e.oangthai=3629,e.obarred=629,e.obarredcyrillic=1257,e.obarreddieresiscyrillic=1259,e.obengali=2451,e.obopomofo=12571,e.obreve=335,e.ocandradeva=2321,e.ocandragujarati=2705,e.ocandravowelsigndeva=2377,e.ocandravowelsigngujarati=2761,e.ocaron=466,e.ocircle=9438,e.ocircumflex=244,e.ocircumflexacute=7889,e.ocircumflexdotbelow=7897,e.ocircumflexgrave=7891,e.ocircumflexhookabove=7893,e.ocircumflextilde=7895,e.ocyrillic=1086,e.odblacute=337,e.odblgrave=525,e.odeva=2323,e.odieresis=246,e.odieresiscyrillic=1255,e.odotbelow=7885,e.oe=339,e.oekorean=12634,e.ogonek=731,e.ogonekcmb=808,e.ograve=242,e.ogujarati=2707,e.oharmenian=1413,e.ohiragana=12362,e.ohookabove=7887,e.ohorn=417,e.ohornacute=7899,e.ohorndotbelow=7907,e.ohorngrave=7901,e.ohornhookabove=7903,e.ohorntilde=7905,e.ohungarumlaut=337,e.oi=419,e.oinvertedbreve=527,e.okatakana=12458,e.okatakanahalfwidth=65397,e.okorean=12631,e.olehebrew=1451,e.omacron=333,e.omacronacute=7763,e.omacrongrave=7761,e.omdeva=2384,e.omega=969,e.omega1=982,e.omegacyrillic=1121,e.omegalatinclosed=631,e.omegaroundcyrillic=1147,e.omegatitlocyrillic=1149,e.omegatonos=974,e.omgujarati=2768,e.omicron=959,e.omicrontonos=972,e.omonospace=65359,e.one=49,e.onearabic=1633,e.onebengali=2535,e.onecircle=9312,e.onecircleinversesansserif=10122,e.onedeva=2407,e.onedotenleader=8228,e.oneeighth=8539,e.onefitted=63196,e.onegujarati=2791,e.onegurmukhi=2663,e.onehackarabic=1633,e.onehalf=189,e.onehangzhou=12321,e.oneideographicparen=12832,e.oneinferior=8321,e.onemonospace=65297,e.onenumeratorbengali=2548,e.oneoldstyle=63281,e.oneparen=9332,e.oneperiod=9352,e.onepersian=1777,e.onequarter=188,e.oneroman=8560,e.onesuperior=185,e.onethai=3665,e.onethird=8531,e.oogonek=491,e.oogonekmacron=493,e.oogurmukhi=2579,e.oomatragurmukhi=2635,e.oopen=596,e.oparen=9386,e.openbullet=9702,e.option=8997,e.ordfeminine=170,e.ordmasculine=186,e.orthogonal=8735,e.oshortdeva=2322,e.oshortvowelsigndeva=2378,e.oslash=248,e.oslashacute=511,e.osmallhiragana=12361,e.osmallkatakana=12457,e.osmallkatakanahalfwidth=65387,e.ostrokeacute=511,e.osuperior=63216,e.otcyrillic=1151,e.otilde=245,e.otildeacute=7757,e.otildedieresis=7759,e.oubopomofo=12577,e.overline=8254,e.overlinecenterline=65098,e.overlinecmb=773,e.overlinedashed=65097,e.overlinedblwavy=65100,e.overlinewavy=65099,e.overscore=175,e.ovowelsignbengali=2507,e.ovowelsigndeva=2379,e.ovowelsigngujarati=2763,e.p=112,e.paampssquare=13184,e.paasentosquare=13099,e.pabengali=2474,e.pacute=7765,e.padeva=2346,e.pagedown=8671,e.pageup=8670,e.pagujarati=2730,e.pagurmukhi=2602,e.pahiragana=12401,e.paiyannoithai=3631,e.pakatakana=12497,e.palatalizationcyrilliccmb=1156,e.palochkacyrillic=1216,e.pansioskorean=12671,e.paragraph=182,e.parallel=8741,e.parenleft=40,e.parenleftaltonearabic=64830,e.parenleftbt=63725,e.parenleftex=63724,e.parenleftinferior=8333,e.parenleftmonospace=65288,e.parenleftsmall=65113,e.parenleftsuperior=8317,e.parenlefttp=63723,e.parenleftvertical=65077,e.parenright=41,e.parenrightaltonearabic=64831,e.parenrightbt=63736,e.parenrightex=63735,e.parenrightinferior=8334,e.parenrightmonospace=65289,e.parenrightsmall=65114,e.parenrightsuperior=8318,e.parenrighttp=63734,e.parenrightvertical=65078,e.partialdiff=8706,e.paseqhebrew=1472,e.pashtahebrew=1433,e.pasquare=13225,e.patah=1463,e.patah11=1463,e.patah1d=1463,e.patah2a=1463,e.patahhebrew=1463,e.patahnarrowhebrew=1463,e.patahquarterhebrew=1463,e.patahwidehebrew=1463,e.pazerhebrew=1441,e.pbopomofo=12550,e.pcircle=9439,e.pdotaccent=7767,e.pe=1508,e.pecyrillic=1087,e.pedagesh=64324,e.pedageshhebrew=64324,e.peezisquare=13115,e.pefinaldageshhebrew=64323,e.peharabic=1662,e.peharmenian=1402,e.pehebrew=1508,e.pehfinalarabic=64343,e.pehinitialarabic=64344,e.pehiragana=12410,e.pehmedialarabic=64345,e.pekatakana=12506,e.pemiddlehookcyrillic=1191,e.perafehebrew=64334,e.percent=37,e.percentarabic=1642,e.percentmonospace=65285,e.percentsmall=65130,e.period=46,e.periodarmenian=1417,e.periodcentered=183,e.periodhalfwidth=65377,e.periodinferior=63207,e.periodmonospace=65294,e.periodsmall=65106,e.periodsuperior=63208,e.perispomenigreekcmb=834,e.perpendicular=8869,e.perthousand=8240,e.peseta=8359,e.pfsquare=13194,e.phabengali=2475,e.phadeva=2347,e.phagujarati=2731,e.phagurmukhi=2603,e.phi=966,e.phi1=981,e.phieuphacirclekorean=12922,e.phieuphaparenkorean=12826,e.phieuphcirclekorean=12908,e.phieuphkorean=12621,e.phieuphparenkorean=12812,e.philatin=632,e.phinthuthai=3642,e.phisymbolgreek=981,e.phook=421,e.phophanthai=3614,e.phophungthai=3612,e.phosamphaothai=3616,e.pi=960,e.pieupacirclekorean=12915,e.pieupaparenkorean=12819,e.pieupcieuckorean=12662,e.pieupcirclekorean=12901,e.pieupkiyeokkorean=12658,e.pieupkorean=12610,e.pieupparenkorean=12805,e.pieupsioskiyeokkorean=12660,e.pieupsioskorean=12612,e.pieupsiostikeutkorean=12661,e.pieupthieuthkorean=12663,e.pieuptikeutkorean=12659,e.pihiragana=12404,e.pikatakana=12500,e.pisymbolgreek=982,e.piwrarmenian=1411,e.planckover2pi=8463,e.planckover2pi1=8463,e.plus=43,e.plusbelowcmb=799,e.pluscircle=8853,e.plusminus=177,e.plusmod=726,e.plusmonospace=65291,e.plussmall=65122,e.plussuperior=8314,e.pmonospace=65360,e.pmsquare=13272,e.pohiragana=12413,e.pointingindexdownwhite=9759,e.pointingindexleftwhite=9756,e.pointingindexrightwhite=9758,e.pointingindexupwhite=9757,e.pokatakana=12509,e.poplathai=3611,e.postalmark=12306,e.postalmarkface=12320,e.pparen=9387,e.precedes=8826,e.prescription=8478,e.primemod=697,e.primereversed=8245,e.product=8719,e.projective=8965,e.prolongedkana=12540,e.propellor=8984,e.propersubset=8834,e.propersuperset=8835,e.proportion=8759,e.proportional=8733,e.psi=968,e.psicyrillic=1137,e.psilipneumatacyrilliccmb=1158,e.pssquare=13232,e.puhiragana=12407,e.pukatakana=12503,e.pvsquare=13236,e.pwsquare=13242,e.q=113,e.qadeva=2392,e.qadmahebrew=1448,e.qafarabic=1602,e.qaffinalarabic=65238,e.qafinitialarabic=65239,e.qafmedialarabic=65240,e.qamats=1464,e.qamats10=1464,e.qamats1a=1464,e.qamats1c=1464,e.qamats27=1464,e.qamats29=1464,e.qamats33=1464,e.qamatsde=1464,e.qamatshebrew=1464,e.qamatsnarrowhebrew=1464,e.qamatsqatanhebrew=1464,e.qamatsqatannarrowhebrew=1464,e.qamatsqatanquarterhebrew=1464,e.qamatsqatanwidehebrew=1464,e.qamatsquarterhebrew=1464,e.qamatswidehebrew=1464,e.qarneyparahebrew=1439,e.qbopomofo=12561,e.qcircle=9440,e.qhook=672,e.qmonospace=65361,e.qof=1511,e.qofdagesh=64327,e.qofdageshhebrew=64327,e.qofhebrew=1511,e.qparen=9388,e.quarternote=9833,e.qubuts=1467,e.qubuts18=1467,e.qubuts25=1467,e.qubuts31=1467,e.qubutshebrew=1467,e.qubutsnarrowhebrew=1467,e.qubutsquarterhebrew=1467,e.qubutswidehebrew=1467,e.question=63,e.questionarabic=1567,e.questionarmenian=1374,e.questiondown=191,e.questiondownsmall=63423,e.questiongreek=894,e.questionmonospace=65311,e.questionsmall=63295,e.quotedbl=34,e.quotedblbase=8222,e.quotedblleft=8220,e.quotedblmonospace=65282,e.quotedblprime=12318,e.quotedblprimereversed=12317,e.quotedblright=8221,e.quoteleft=8216,e.quoteleftreversed=8219,e.quotereversed=8219,e.quoteright=8217,e.quoterightn=329,e.quotesinglbase=8218,e.quotesingle=39,e.quotesinglemonospace=65287,e.r=114,e.raarmenian=1404,e.rabengali=2480,e.racute=341,e.radeva=2352,e.radical=8730,e.radicalex=63717,e.radoverssquare=13230,e.radoverssquaredsquare=13231,e.radsquare=13229,e.rafe=1471,e.rafehebrew=1471,e.ragujarati=2736,e.ragurmukhi=2608,e.rahiragana=12425,e.rakatakana=12521,e.rakatakanahalfwidth=65431,e.ralowerdiagonalbengali=2545,e.ramiddlediagonalbengali=2544,e.ramshorn=612,e.ratio=8758,e.rbopomofo=12566,e.rcaron=345,e.rcedilla=343,e.rcircle=9441,e.rcommaaccent=343,e.rdblgrave=529,e.rdotaccent=7769,e.rdotbelow=7771,e.rdotbelowmacron=7773,e.referencemark=8251,e.reflexsubset=8838,e.reflexsuperset=8839,e.registered=174,e.registersans=63720,e.registerserif=63194,e.reharabic=1585,e.reharmenian=1408,e.rehfinalarabic=65198,e.rehiragana=12428,e.rekatakana=12524;e.rekatakanahalfwidth=65434,e.resh=1512,e.reshdageshhebrew=64328,e.reshhebrew=1512,e.reversedtilde=8765,e.reviahebrew=1431,e.reviamugrashhebrew=1431,e.revlogicalnot=8976,e.rfishhook=638,e.rfishhookreversed=639,e.rhabengali=2525,e.rhadeva=2397,e.rho=961,e.rhook=637,e.rhookturned=635,e.rhookturnedsuperior=693,e.rhosymbolgreek=1009,e.rhotichookmod=734,e.rieulacirclekorean=12913,e.rieulaparenkorean=12817,e.rieulcirclekorean=12899,e.rieulhieuhkorean=12608,e.rieulkiyeokkorean=12602,e.rieulkiyeoksioskorean=12649,e.rieulkorean=12601,e.rieulmieumkorean=12603,e.rieulpansioskorean=12652,e.rieulparenkorean=12803,e.rieulphieuphkorean=12607,e.rieulpieupkorean=12604,e.rieulpieupsioskorean=12651,e.rieulsioskorean=12605,e.rieulthieuthkorean=12606,e.rieultikeutkorean=12650,e.rieulyeorinhieuhkorean=12653,e.rightangle=8735,e.righttackbelowcmb=793,e.righttriangle=8895,e.rihiragana=12426,e.rikatakana=12522,e.rikatakanahalfwidth=65432,e.ring=730,e.ringbelowcmb=805,e.ringcmb=778,e.ringhalfleft=703,e.ringhalfleftarmenian=1369,e.ringhalfleftbelowcmb=796,e.ringhalfleftcentered=723,e.ringhalfright=702,e.ringhalfrightbelowcmb=825,e.ringhalfrightcentered=722,e.rinvertedbreve=531,e.rittorusquare=13137,e.rlinebelow=7775,e.rlongleg=636,e.rlonglegturned=634,e.rmonospace=65362,e.rohiragana=12429,e.rokatakana=12525,e.rokatakanahalfwidth=65435,e.roruathai=3619,e.rparen=9389,e.rrabengali=2524,e.rradeva=2353,e.rragurmukhi=2652,e.rreharabic=1681,e.rrehfinalarabic=64397,e.rrvocalicbengali=2528,e.rrvocalicdeva=2400,e.rrvocalicgujarati=2784,e.rrvocalicvowelsignbengali=2500,e.rrvocalicvowelsigndeva=2372,e.rrvocalicvowelsigngujarati=2756,e.rsuperior=63217,e.rtblock=9616,e.rturned=633,e.rturnedsuperior=692,e.ruhiragana=12427,e.rukatakana=12523,e.rukatakanahalfwidth=65433,e.rupeemarkbengali=2546,e.rupeesignbengali=2547,e.rupiah=63197,e.ruthai=3620,e.rvocalicbengali=2443,e.rvocalicdeva=2315,e.rvocalicgujarati=2699,e.rvocalicvowelsignbengali=2499,e.rvocalicvowelsigndeva=2371,e.rvocalicvowelsigngujarati=2755,e.s=115,e.sabengali=2488,e.sacute=347,e.sacutedotaccent=7781,e.sadarabic=1589,e.sadeva=2360,e.sadfinalarabic=65210,e.sadinitialarabic=65211,e.sadmedialarabic=65212,e.sagujarati=2744,e.sagurmukhi=2616,e.sahiragana=12373,e.sakatakana=12469,e.sakatakanahalfwidth=65403,e.sallallahoualayhewasallamarabic=65018,e.samekh=1505,e.samekhdagesh=64321,e.samekhdageshhebrew=64321,e.samekhhebrew=1505,e.saraaathai=3634,e.saraaethai=3649,e.saraaimaimalaithai=3652,e.saraaimaimuanthai=3651,e.saraamthai=3635,e.saraathai=3632,e.saraethai=3648,e.saraiileftthai=63622,e.saraiithai=3637,e.saraileftthai=63621,e.saraithai=3636,e.saraothai=3650,e.saraueeleftthai=63624,e.saraueethai=3639,e.saraueleftthai=63623,e.sarauethai=3638,e.sarauthai=3640,e.sarauuthai=3641,e.sbopomofo=12569,e.scaron=353,e.scarondotaccent=7783,e.scedilla=351,e.schwa=601,e.schwacyrillic=1241,e.schwadieresiscyrillic=1243,e.schwahook=602,e.scircle=9442,e.scircumflex=349,e.scommaaccent=537,e.sdotaccent=7777,e.sdotbelow=7779,e.sdotbelowdotaccent=7785,e.seagullbelowcmb=828,e.second=8243,e.secondtonechinese=714,e.section=167,e.seenarabic=1587,e.seenfinalarabic=65202,e.seeninitialarabic=65203,e.seenmedialarabic=65204,e.segol=1462,e.segol13=1462,e.segol1f=1462,e.segol2c=1462,e.segolhebrew=1462,e.segolnarrowhebrew=1462,e.segolquarterhebrew=1462,e.segoltahebrew=1426,e.segolwidehebrew=1462,e.seharmenian=1405,e.sehiragana=12379,e.sekatakana=12475,e.sekatakanahalfwidth=65406,e.semicolon=59,e.semicolonarabic=1563,e.semicolonmonospace=65307,e.semicolonsmall=65108,e.semivoicedmarkkana=12444,e.semivoicedmarkkanahalfwidth=65439,e.sentisquare=13090,e.sentosquare=13091,e.seven=55,e.sevenarabic=1639,e.sevenbengali=2541,e.sevencircle=9318,e.sevencircleinversesansserif=10128,e.sevendeva=2413,e.seveneighths=8542,e.sevengujarati=2797,e.sevengurmukhi=2669,e.sevenhackarabic=1639,e.sevenhangzhou=12327,e.sevenideographicparen=12838,e.seveninferior=8327,e.sevenmonospace=65303,e.sevenoldstyle=63287,e.sevenparen=9338,e.sevenperiod=9358,e.sevenpersian=1783,e.sevenroman=8566,e.sevensuperior=8311,e.seventeencircle=9328,e.seventeenparen=9348,e.seventeenperiod=9368,e.seventhai=3671,e.sfthyphen=173,e.shaarmenian=1399,e.shabengali=2486,e.shacyrillic=1096,e.shaddaarabic=1617,e.shaddadammaarabic=64609,e.shaddadammatanarabic=64606,e.shaddafathaarabic=64608,e.shaddakasraarabic=64610,e.shaddakasratanarabic=64607,e.shade=9618,e.shadedark=9619,e.shadelight=9617,e.shademedium=9618,e.shadeva=2358,e.shagujarati=2742,e.shagurmukhi=2614,e.shalshelethebrew=1427,e.shbopomofo=12565,e.shchacyrillic=1097,e.sheenarabic=1588,e.sheenfinalarabic=65206,e.sheeninitialarabic=65207,e.sheenmedialarabic=65208,e.sheicoptic=995,e.sheqel=8362,e.sheqelhebrew=8362,e.sheva=1456,e.sheva115=1456,e.sheva15=1456,e.sheva22=1456,e.sheva2e=1456,e.shevahebrew=1456,e.shevanarrowhebrew=1456,e.shevaquarterhebrew=1456,e.shevawidehebrew=1456,e.shhacyrillic=1211,e.shimacoptic=1005,e.shin=1513,e.shindagesh=64329,e.shindageshhebrew=64329,e.shindageshshindot=64300,e.shindageshshindothebrew=64300,e.shindageshsindot=64301,e.shindageshsindothebrew=64301,e.shindothebrew=1473,e.shinhebrew=1513,e.shinshindot=64298,e.shinshindothebrew=64298,e.shinsindot=64299,e.shinsindothebrew=64299,e.shook=642,e.sigma=963,e.sigma1=962,e.sigmafinal=962,e.sigmalunatesymbolgreek=1010,e.sihiragana=12375,e.sikatakana=12471,e.sikatakanahalfwidth=65404,e.siluqhebrew=1469,e.siluqlefthebrew=1469,e.similar=8764,e.sindothebrew=1474,e.siosacirclekorean=12916,e.siosaparenkorean=12820,e.sioscieuckorean=12670,e.sioscirclekorean=12902,e.sioskiyeokkorean=12666,e.sioskorean=12613,e.siosnieunkorean=12667,e.siosparenkorean=12806,e.siospieupkorean=12669,e.siostikeutkorean=12668,e.six=54,e.sixarabic=1638,e.sixbengali=2540,e.sixcircle=9317,e.sixcircleinversesansserif=10127,e.sixdeva=2412,e.sixgujarati=2796,e.sixgurmukhi=2668,e.sixhackarabic=1638,e.sixhangzhou=12326,e.sixideographicparen=12837,e.sixinferior=8326,e.sixmonospace=65302,e.sixoldstyle=63286,e.sixparen=9337,e.sixperiod=9357,e.sixpersian=1782,e.sixroman=8565,e.sixsuperior=8310,e.sixteencircle=9327,e.sixteencurrencydenominatorbengali=2553,e.sixteenparen=9347,e.sixteenperiod=9367,e.sixthai=3670,e.slash=47,e.slashmonospace=65295,e.slong=383,e.slongdotaccent=7835,e.smileface=9786,e.smonospace=65363,e.sofpasuqhebrew=1475,e.softhyphen=173,e.softsigncyrillic=1100,e.sohiragana=12381,e.sokatakana=12477,e.sokatakanahalfwidth=65407,e.soliduslongoverlaycmb=824,e.solidusshortoverlaycmb=823,e.sorusithai=3625,e.sosalathai=3624,e.sosothai=3595,e.sosuathai=3626,e.space=32,e.spacehackarabic=32,e.spade=9824,e.spadesuitblack=9824,e.spadesuitwhite=9828,e.sparen=9390,e.squarebelowcmb=827,e.squarecc=13252,e.squarecm=13213,e.squarediagonalcrosshatchfill=9641,e.squarehorizontalfill=9636,e.squarekg=13199,e.squarekm=13214,e.squarekmcapital=13262,e.squareln=13265,e.squarelog=13266,e.squaremg=13198,e.squaremil=13269,e.squaremm=13212,e.squaremsquared=13217,e.squareorthogonalcrosshatchfill=9638,e.squareupperlefttolowerrightfill=9639,e.squareupperrighttolowerleftfill=9640,e.squareverticalfill=9637,e.squarewhitewithsmallblack=9635,e.srsquare=13275,e.ssabengali=2487,e.ssadeva=2359,e.ssagujarati=2743,e.ssangcieuckorean=12617,e.ssanghieuhkorean=12677,e.ssangieungkorean=12672,e.ssangkiyeokkorean=12594,e.ssangnieunkorean=12645,e.ssangpieupkorean=12611,e.ssangsioskorean=12614,e.ssangtikeutkorean=12600,e.ssuperior=63218,e.sterling=163,e.sterlingmonospace=65505,e.strokelongoverlaycmb=822,e.strokeshortoverlaycmb=821,e.subset=8834,e.subsetnotequal=8842,e.subsetorequal=8838,e.succeeds=8827,e.suchthat=8715,e.suhiragana=12377,e.sukatakana=12473,e.sukatakanahalfwidth=65405,e.sukunarabic=1618,e.summation=8721,e.sun=9788,e.superset=8835,e.supersetnotequal=8843,e.supersetorequal=8839,e.svsquare=13276,e.syouwaerasquare=13180,e.t=116,e.tabengali=2468,e.tackdown=8868,e.tackleft=8867,e.tadeva=2340,e.tagujarati=2724,e.tagurmukhi=2596,e.taharabic=1591,e.tahfinalarabic=65218,e.tahinitialarabic=65219,e.tahiragana=12383,e.tahmedialarabic=65220,e.taisyouerasquare=13181,e.takatakana=12479,e.takatakanahalfwidth=65408,e.tatweelarabic=1600,e.tau=964,e.tav=1514,e.tavdages=64330,e.tavdagesh=64330,e.tavdageshhebrew=64330,e.tavhebrew=1514,e.tbar=359,e.tbopomofo=12554,e.tcaron=357,e.tccurl=680,e.tcedilla=355,e.tcheharabic=1670,e.tchehfinalarabic=64379,e.tchehinitialarabic=64380,e.tchehmedialarabic=64381,e.tcircle=9443,e.tcircumflexbelow=7793,e.tcommaaccent=355,e.tdieresis=7831,e.tdotaccent=7787,e.tdotbelow=7789,e.tecyrillic=1090,e.tedescendercyrillic=1197,e.teharabic=1578,e.tehfinalarabic=65174,e.tehhahinitialarabic=64674,e.tehhahisolatedarabic=64524,e.tehinitialarabic=65175,e.tehiragana=12390,e.tehjeeminitialarabic=64673,e.tehjeemisolatedarabic=64523,e.tehmarbutaarabic=1577,e.tehmarbutafinalarabic=65172,e.tehmedialarabic=65176,e.tehmeeminitialarabic=64676,e.tehmeemisolatedarabic=64526,e.tehnoonfinalarabic=64627,e.tekatakana=12486,e.tekatakanahalfwidth=65411,e.telephone=8481,e.telephoneblack=9742,e.telishagedolahebrew=1440,e.telishaqetanahebrew=1449,e.tencircle=9321,e.tenideographicparen=12841,e.tenparen=9341,e.tenperiod=9361,e.tenroman=8569,e.tesh=679,e.tet=1496,e.tetdagesh=64312,e.tetdageshhebrew=64312,e.tethebrew=1496,e.tetsecyrillic=1205,e.tevirhebrew=1435,e.tevirlefthebrew=1435,e.thabengali=2469,e.thadeva=2341,e.thagujarati=2725,e.thagurmukhi=2597,e.thalarabic=1584,e.thalfinalarabic=65196,e.thanthakhatlowleftthai=63640,e.thanthakhatlowrightthai=63639,e.thanthakhatthai=3660,e.thanthakhatupperleftthai=63638,e.theharabic=1579,e.thehfinalarabic=65178,e.thehinitialarabic=65179,e.thehmedialarabic=65180,e.thereexists=8707,e.therefore=8756,e.theta=952,e.theta1=977,e.thetasymbolgreek=977,e.thieuthacirclekorean=12921,e.thieuthaparenkorean=12825,e.thieuthcirclekorean=12907,e.thieuthkorean=12620,e.thieuthparenkorean=12811,e.thirteencircle=9324,e.thirteenparen=9344,e.thirteenperiod=9364,e.thonangmonthothai=3601,e.thook=429,e.thophuthaothai=3602,e.thorn=254,e.thothahanthai=3607,e.thothanthai=3600,e.thothongthai=3608,e.thothungthai=3606,e.thousandcyrillic=1154,e.thousandsseparatorarabic=1644,e.thousandsseparatorpersian=1644,e.three=51,e.threearabic=1635,e.threebengali=2537,e.threecircle=9314,e.threecircleinversesansserif=10124,e.threedeva=2409,e.threeeighths=8540,e.threegujarati=2793,e.threegurmukhi=2665,e.threehackarabic=1635,e.threehangzhou=12323,e.threeideographicparen=12834,e.threeinferior=8323,e.threemonospace=65299,e.threenumeratorbengali=2550,e.threeoldstyle=63283,e.threeparen=9334,e.threeperiod=9354,e.threepersian=1779,e.threequarters=190,e.threequartersemdash=63198,e.threeroman=8562,e.threesuperior=179,e.threethai=3667,e.thzsquare=13204,e.tihiragana=12385,e.tikatakana=12481,e.tikatakanahalfwidth=65409,e.tikeutacirclekorean=12912,e.tikeutaparenkorean=12816,e.tikeutcirclekorean=12898,e.tikeutkorean=12599,e.tikeutparenkorean=12802,e.tilde=732,e.tildebelowcmb=816,e.tildecmb=771,e.tildecomb=771,e.tildedoublecmb=864,e.tildeoperator=8764,e.tildeoverlaycmb=820,e.tildeverticalcmb=830,e.timescircle=8855,e.tipehahebrew=1430,e.tipehalefthebrew=1430,e.tippigurmukhi=2672,e.titlocyrilliccmb=1155,e.tiwnarmenian=1407,e.tlinebelow=7791,e.tmonospace=65364,e.toarmenian=1385,e.tohiragana=12392,e.tokatakana=12488,e.tokatakanahalfwidth=65412,e.tonebarextrahighmod=741,e.tonebarextralowmod=745,e.tonebarhighmod=742,e.tonebarlowmod=744,e.tonebarmidmod=743,e.tonefive=445,e.tonesix=389,e.tonetwo=424,e.tonos=900,e.tonsquare=13095,e.topatakthai=3599,e.tortoiseshellbracketleft=12308,e.tortoiseshellbracketleftsmall=65117,e.tortoiseshellbracketleftvertical=65081,e.tortoiseshellbracketright=12309,e.tortoiseshellbracketrightsmall=65118,e.tortoiseshellbracketrightvertical=65082,e.totaothai=3605,e.tpalatalhook=427,e.tparen=9391,e.trademark=8482,e.trademarksans=63722,e.trademarkserif=63195,e.tretroflexhook=648,e.triagdn=9660,e.triaglf=9668,e.triagrt=9658,e.triagup=9650,e.ts=678,e.tsadi=1510,e.tsadidagesh=64326,e.tsadidageshhebrew=64326,e.tsadihebrew=1510,e.tsecyrillic=1094,e.tsere=1461,e.tsere12=1461,e.tsere1e=1461,e.tsere2b=1461,e.tserehebrew=1461,e.tserenarrowhebrew=1461,e.tserequarterhebrew=1461,e.tserewidehebrew=1461,e.tshecyrillic=1115,e.tsuperior=63219,e.ttabengali=2463,e.ttadeva=2335,e.ttagujarati=2719,e.ttagurmukhi=2591,e.tteharabic=1657,e.ttehfinalarabic=64359,e.ttehinitialarabic=64360,e.ttehmedialarabic=64361,e.tthabengali=2464,e.tthadeva=2336,e.tthagujarati=2720,e.tthagurmukhi=2592,e.tturned=647,e.tuhiragana=12388,e.tukatakana=12484,e.tukatakanahalfwidth=65410,e.tusmallhiragana=12387,e.tusmallkatakana=12483,e.tusmallkatakanahalfwidth=65391,e.twelvecircle=9323,e.twelveparen=9343,e.twelveperiod=9363,e.twelveroman=8571,e.twentycircle=9331,e.twentyhangzhou=21316,e.twentyparen=9351,e.twentyperiod=9371,e.two=50,e.twoarabic=1634,e.twobengali=2536,e.twocircle=9313,e.twocircleinversesansserif=10123,e.twodeva=2408,e.twodotenleader=8229,e.twodotleader=8229,e.twodotleadervertical=65072,e.twogujarati=2792,e.twogurmukhi=2664,e.twohackarabic=1634,e.twohangzhou=12322,e.twoideographicparen=12833,e.twoinferior=8322,e.twomonospace=65298,e.twonumeratorbengali=2549,e.twooldstyle=63282,e.twoparen=9333,e.twoperiod=9353,e.twopersian=1778,e.tworoman=8561,e.twostroke=443,e.twosuperior=178,e.twothai=3666,e.twothirds=8532,e.u=117,e.uacute=250,e.ubar=649,e.ubengali=2441,e.ubopomofo=12584,e.ubreve=365,e.ucaron=468,e.ucircle=9444,e.ucircumflex=251,e.ucircumflexbelow=7799,e.ucyrillic=1091,e.udattadeva=2385,e.udblacute=369,e.udblgrave=533,e.udeva=2313,e.udieresis=252,e.udieresisacute=472,e.udieresisbelow=7795,e.udieresiscaron=474,e.udieresiscyrillic=1265,e.udieresisgrave=476,e.udieresismacron=470,e.udotbelow=7909,e.ugrave=249,e.ugujarati=2697,e.ugurmukhi=2569,e.uhiragana=12358,e.uhookabove=7911,e.uhorn=432,e.uhornacute=7913,e.uhorndotbelow=7921,e.uhorngrave=7915,e.uhornhookabove=7917,e.uhorntilde=7919,e.uhungarumlaut=369,e.uhungarumlautcyrillic=1267,e.uinvertedbreve=535,e.ukatakana=12454,e.ukatakanahalfwidth=65395,e.ukcyrillic=1145,e.ukorean=12636,e.umacron=363,e.umacroncyrillic=1263,e.umacrondieresis=7803,e.umatragurmukhi=2625,e.umonospace=65365,e.underscore=95,e.underscoredbl=8215,e.underscoremonospace=65343,e.underscorevertical=65075,e.underscorewavy=65103,e.union=8746,e.universal=8704,e.uogonek=371,e.uparen=9392,e.upblock=9600,e.upperdothebrew=1476,e.upsilon=965,e.upsilondieresis=971,e.upsilondieresistonos=944,e.upsilonlatin=650,e.upsilontonos=973,e.uptackbelowcmb=797,e.uptackmod=724,e.uragurmukhi=2675,e.uring=367,e.ushortcyrillic=1118,e.usmallhiragana=12357,e.usmallkatakana=12453,e.usmallkatakanahalfwidth=65385,e.ustraightcyrillic=1199,e.ustraightstrokecyrillic=1201,e.utilde=361,e.utildeacute=7801,e.utildebelow=7797,e.uubengali=2442,e.uudeva=2314,e.uugujarati=2698,e.uugurmukhi=2570,e.uumatragurmukhi=2626,e.uuvowelsignbengali=2498,e.uuvowelsigndeva=2370,e.uuvowelsigngujarati=2754,e.uvowelsignbengali=2497,e.uvowelsigndeva=2369,e.uvowelsigngujarati=2753,e.v=118,e.vadeva=2357,e.vagujarati=2741,e.vagurmukhi=2613,e.vakatakana=12535,e.vav=1493,e.vavdagesh=64309,e.vavdagesh65=64309,e.vavdageshhebrew=64309,e.vavhebrew=1493,e.vavholam=64331,e.vavholamhebrew=64331,e.vavvavhebrew=1520,e.vavyodhebrew=1521,e.vcircle=9445,e.vdotbelow=7807,e.vecyrillic=1074,e.veharabic=1700,e.vehfinalarabic=64363,e.vehinitialarabic=64364,e.vehmedialarabic=64365,e.vekatakana=12537,e.venus=9792,e.verticalbar=124,e.verticallineabovecmb=781,e.verticallinebelowcmb=809,e.verticallinelowmod=716,e.verticallinemod=712,e.vewarmenian=1406,e.vhook=651,e.vikatakana=12536,e.viramabengali=2509,e.viramadeva=2381,e.viramagujarati=2765,e.visargabengali=2435,e.visargadeva=2307,e.visargagujarati=2691,e.vmonospace=65366,e.voarmenian=1400,e.voicediterationhiragana=12446,e.voicediterationkatakana=12542,e.voicedmarkkana=12443,e.voicedmarkkanahalfwidth=65438,e.vokatakana=12538,e.vparen=9393,e.vtilde=7805,e.vturned=652,e.vuhiragana=12436,e.vukatakana=12532,e.w=119,e.wacute=7811,e.waekorean=12633,e.wahiragana=12431,e.wakatakana=12527,e.wakatakanahalfwidth=65436,e.wakorean=12632,e.wasmallhiragana=12430,e.wasmallkatakana=12526,e.wattosquare=13143,e.wavedash=12316,e.wavyunderscorevertical=65076,e.wawarabic=1608,e.wawfinalarabic=65262,e.wawhamzaabovearabic=1572,e.wawhamzaabovefinalarabic=65158,e.wbsquare=13277,e.wcircle=9446,e.wcircumflex=373,e.wdieresis=7813,e.wdotaccent=7815,e.wdotbelow=7817,e.wehiragana=12433,e.weierstrass=8472,e.wekatakana=12529,e.wekorean=12638,e.weokorean=12637,e.wgrave=7809,e.whitebullet=9702,e.whitecircle=9675,e.whitecircleinverse=9689,e.whitecornerbracketleft=12302,e.whitecornerbracketleftvertical=65091,e.whitecornerbracketright=12303,e.whitecornerbracketrightvertical=65092,e.whitediamond=9671,e.whitediamondcontainingblacksmalldiamond=9672,e.whitedownpointingsmalltriangle=9663;e.whitedownpointingtriangle=9661,e.whiteleftpointingsmalltriangle=9667,e.whiteleftpointingtriangle=9665,e.whitelenticularbracketleft=12310,e.whitelenticularbracketright=12311,e.whiterightpointingsmalltriangle=9657,e.whiterightpointingtriangle=9655,e.whitesmallsquare=9643,e.whitesmilingface=9786,e.whitesquare=9633,e.whitestar=9734,e.whitetelephone=9743,e.whitetortoiseshellbracketleft=12312,e.whitetortoiseshellbracketright=12313,e.whiteuppointingsmalltriangle=9653,e.whiteuppointingtriangle=9651,e.wihiragana=12432,e.wikatakana=12528,e.wikorean=12639,e.wmonospace=65367,e.wohiragana=12434,e.wokatakana=12530,e.wokatakanahalfwidth=65382,e.won=8361,e.wonmonospace=65510,e.wowaenthai=3623,e.wparen=9394,e.wring=7832,e.wsuperior=695,e.wturned=653,e.wynn=447,e.x=120,e.xabovecmb=829,e.xbopomofo=12562,e.xcircle=9447,e.xdieresis=7821,e.xdotaccent=7819,e.xeharmenian=1389,e.xi=958,e.xmonospace=65368,e.xparen=9395,e.xsuperior=739,e.y=121,e.yaadosquare=13134,e.yabengali=2479,e.yacute=253,e.yadeva=2351,e.yaekorean=12626,e.yagujarati=2735,e.yagurmukhi=2607,e.yahiragana=12420,e.yakatakana=12516,e.yakatakanahalfwidth=65428,e.yakorean=12625,e.yamakkanthai=3662,e.yasmallhiragana=12419,e.yasmallkatakana=12515,e.yasmallkatakanahalfwidth=65388,e.yatcyrillic=1123,e.ycircle=9448,e.ycircumflex=375,e.ydieresis=255,e.ydotaccent=7823,e.ydotbelow=7925,e.yeharabic=1610,e.yehbarreearabic=1746,e.yehbarreefinalarabic=64431,e.yehfinalarabic=65266,e.yehhamzaabovearabic=1574,e.yehhamzaabovefinalarabic=65162,e.yehhamzaaboveinitialarabic=65163,e.yehhamzaabovemedialarabic=65164,e.yehinitialarabic=65267,e.yehmedialarabic=65268,e.yehmeeminitialarabic=64733,e.yehmeemisolatedarabic=64600,e.yehnoonfinalarabic=64660,e.yehthreedotsbelowarabic=1745,e.yekorean=12630,e.yen=165,e.yenmonospace=65509,e.yeokorean=12629,e.yeorinhieuhkorean=12678,e.yerahbenyomohebrew=1450,e.yerahbenyomolefthebrew=1450,e.yericyrillic=1099,e.yerudieresiscyrillic=1273,e.yesieungkorean=12673,e.yesieungpansioskorean=12675,e.yesieungsioskorean=12674,e.yetivhebrew=1434,e.ygrave=7923,e.yhook=436,e.yhookabove=7927,e.yiarmenian=1397,e.yicyrillic=1111,e.yikorean=12642,e.yinyang=9775,e.yiwnarmenian=1410,e.ymonospace=65369,e.yod=1497,e.yoddagesh=64313,e.yoddageshhebrew=64313,e.yodhebrew=1497,e.yodyodhebrew=1522,e.yodyodpatahhebrew=64287,e.yohiragana=12424,e.yoikorean=12681,e.yokatakana=12520,e.yokatakanahalfwidth=65430,e.yokorean=12635,e.yosmallhiragana=12423,e.yosmallkatakana=12519,e.yosmallkatakanahalfwidth=65390,e.yotgreek=1011,e.yoyaekorean=12680,e.yoyakorean=12679,e.yoyakthai=3618,e.yoyingthai=3597,e.yparen=9396,e.ypogegrammeni=890,e.ypogegrammenigreekcmb=837,e.yr=422,e.yring=7833,e.ysuperior=696,e.ytilde=7929,e.yturned=654,e.yuhiragana=12422,e.yuikorean=12684,e.yukatakana=12518,e.yukatakanahalfwidth=65429,e.yukorean=12640,e.yusbigcyrillic=1131,e.yusbigiotifiedcyrillic=1133,e.yuslittlecyrillic=1127,e.yuslittleiotifiedcyrillic=1129,e.yusmallhiragana=12421,e.yusmallkatakana=12517,e.yusmallkatakanahalfwidth=65389,e.yuyekorean=12683,e.yuyeokorean=12682,e.yyabengali=2527,e.yyadeva=2399,e.z=122,e.zaarmenian=1382,e.zacute=378,e.zadeva=2395,e.zagurmukhi=2651,e.zaharabic=1592,e.zahfinalarabic=65222,e.zahinitialarabic=65223,e.zahiragana=12374,e.zahmedialarabic=65224,e.zainarabic=1586,e.zainfinalarabic=65200,e.zakatakana=12470,e.zaqefgadolhebrew=1429,e.zaqefqatanhebrew=1428,e.zarqahebrew=1432,e.zayin=1494,e.zayindagesh=64310,e.zayindageshhebrew=64310,e.zayinhebrew=1494,e.zbopomofo=12567,e.zcaron=382,e.zcircle=9449,e.zcircumflex=7825,e.zcurl=657,e.zdot=380,e.zdotaccent=380,e.zdotbelow=7827,e.zecyrillic=1079,e.zedescendercyrillic=1177,e.zedieresiscyrillic=1247,e.zehiragana=12380,e.zekatakana=12476,e.zero=48,e.zeroarabic=1632,e.zerobengali=2534,e.zerodeva=2406,e.zerogujarati=2790,e.zerogurmukhi=2662,e.zerohackarabic=1632,e.zeroinferior=8320,e.zeromonospace=65296,e.zerooldstyle=63280,e.zeropersian=1776,e.zerosuperior=8304,e.zerothai=3664,e.zerowidthjoiner=65279,e.zerowidthnonjoiner=8204,e.zerowidthspace=8203,e.zeta=950,e.zhbopomofo=12563,e.zhearmenian=1386,e.zhebrevecyrillic=1218,e.zhecyrillic=1078,e.zhedescendercyrillic=1175,e.zhedieresiscyrillic=1245,e.zihiragana=12376,e.zikatakana=12472,e.zinorhebrew=1454,e.zlinebelow=7829,e.zmonospace=65370,e.zohiragana=12382,e.zokatakana=12478,e.zparen=9397,e.zretroflexhook=656,e.zstroke=438,e.zuhiragana=12378,e.zukatakana=12474,e[".notdef"]=0,e.angbracketleftbig=9001,e.angbracketleftBig=9001,e.angbracketleftbigg=9001,e.angbracketleftBigg=9001,e.angbracketrightBig=9002,e.angbracketrightbig=9002,e.angbracketrightBigg=9002,e.angbracketrightbigg=9002,e.arrowhookleft=8618,e.arrowhookright=8617,e.arrowlefttophalf=8636,e.arrowleftbothalf=8637,e.arrownortheast=8599,e.arrownorthwest=8598,e.arrowrighttophalf=8640,e.arrowrightbothalf=8641,e.arrowsoutheast=8600,e.arrowsouthwest=8601,e.backslashbig=8726,e.backslashBig=8726,e.backslashBigg=8726,e.backslashbigg=8726,e.bardbl=8214,e.bracehtipdownleft=65079,e.bracehtipdownright=65079,e.bracehtipupleft=65080,e.bracehtipupright=65080,e.braceleftBig=123,e.braceleftbig=123,e.braceleftbigg=123,e.braceleftBigg=123,e.bracerightBig=125,e.bracerightbig=125,e.bracerightbigg=125,e.bracerightBigg=125,e.bracketleftbig=91,e.bracketleftBig=91,e.bracketleftbigg=91,e.bracketleftBigg=91,e.bracketrightBig=93,e.bracketrightbig=93,e.bracketrightbigg=93,e.bracketrightBigg=93,e.ceilingleftbig=8968,e.ceilingleftBig=8968,e.ceilingleftBigg=8968,e.ceilingleftbigg=8968,e.ceilingrightbig=8969,e.ceilingrightBig=8969,e.ceilingrightbigg=8969,e.ceilingrightBigg=8969,e.circledotdisplay=8857,e.circledottext=8857,e.circlemultiplydisplay=8855,e.circlemultiplytext=8855,e.circleplusdisplay=8853,e.circleplustext=8853,e.contintegraldisplay=8750,e.contintegraltext=8750,e.coproductdisplay=8720,e.coproducttext=8720,e.floorleftBig=8970,e.floorleftbig=8970,e.floorleftbigg=8970,e.floorleftBigg=8970,e.floorrightbig=8971,e.floorrightBig=8971,e.floorrightBigg=8971,e.floorrightbigg=8971,e.hatwide=770,e.hatwider=770,e.hatwidest=770,e.intercal=7488,e.integraldisplay=8747,e.integraltext=8747,e.intersectiondisplay=8898,e.intersectiontext=8898,e.logicalanddisplay=8743,e.logicalandtext=8743,e.logicalordisplay=8744,e.logicalortext=8744,e.parenleftBig=40,e.parenleftbig=40,e.parenleftBigg=40,e.parenleftbigg=40,e.parenrightBig=41,e.parenrightbig=41,e.parenrightBigg=41,e.parenrightbigg=41,e.prime=8242,e.productdisplay=8719,e.producttext=8719,e.radicalbig=8730,e.radicalBig=8730,e.radicalBigg=8730,e.radicalbigg=8730,e.radicalbt=8730,e.radicaltp=8730,e.radicalvertex=8730,e.slashbig=47,e.slashBig=47,e.slashBigg=47,e.slashbigg=47,e.summationdisplay=8721,e.summationtext=8721,e.tildewide=732,e.tildewider=732,e.tildewidest=732,e.uniondisplay=8899,e.unionmultidisplay=8846,e.unionmultitext=8846,e.unionsqdisplay=8852,e.unionsqtext=8852,e.uniontext=8899,e.vextenddouble=8741,e.vextendsingle=8739})),i=(0,n.getLookupTableFactory)((function(e){e.space=32,e.a1=9985,e.a2=9986,e.a202=9987,e.a3=9988,e.a4=9742,e.a5=9990,e.a119=9991,e.a118=9992,e.a117=9993,e.a11=9755,e.a12=9758,e.a13=9996,e.a14=9997,e.a15=9998,e.a16=9999,e.a105=1e4,e.a17=10001,e.a18=10002,e.a19=10003,e.a20=10004,e.a21=10005,e.a22=10006,e.a23=10007,e.a24=10008,e.a25=10009,e.a26=10010,e.a27=10011,e.a28=10012,e.a6=10013,e.a7=10014,e.a8=10015,e.a9=10016,e.a10=10017,e.a29=10018,e.a30=10019,e.a31=10020,e.a32=10021,e.a33=10022,e.a34=10023,e.a35=9733,e.a36=10025,e.a37=10026,e.a38=10027,e.a39=10028,e.a40=10029,e.a41=10030,e.a42=10031,e.a43=10032,e.a44=10033,e.a45=10034,e.a46=10035,e.a47=10036,e.a48=10037,e.a49=10038,e.a50=10039,e.a51=10040,e.a52=10041,e.a53=10042,e.a54=10043,e.a55=10044,e.a56=10045,e.a57=10046,e.a58=10047,e.a59=10048,e.a60=10049,e.a61=10050,e.a62=10051,e.a63=10052,e.a64=10053,e.a65=10054,e.a66=10055,e.a67=10056,e.a68=10057,e.a69=10058,e.a70=10059,e.a71=9679,e.a72=10061,e.a73=9632,e.a74=10063,e.a203=10064,e.a75=10065,e.a204=10066,e.a76=9650,e.a77=9660,e.a78=9670,e.a79=10070,e.a81=9687,e.a82=10072,e.a83=10073,e.a84=10074,e.a97=10075,e.a98=10076,e.a99=10077,e.a100=10078,e.a101=10081,e.a102=10082,e.a103=10083,e.a104=10084,e.a106=10085,e.a107=10086,e.a108=10087,e.a112=9827,e.a111=9830,e.a110=9829,e.a109=9824,e.a120=9312,e.a121=9313,e.a122=9314,e.a123=9315,e.a124=9316,e.a125=9317,e.a126=9318,e.a127=9319,e.a128=9320,e.a129=9321,e.a130=10102,e.a131=10103,e.a132=10104,e.a133=10105,e.a134=10106,e.a135=10107,e.a136=10108,e.a137=10109,e.a138=10110,e.a139=10111,e.a140=10112,e.a141=10113,e.a142=10114,e.a143=10115,e.a144=10116,e.a145=10117,e.a146=10118,e.a147=10119,e.a148=10120,e.a149=10121,e.a150=10122,e.a151=10123,e.a152=10124,e.a153=10125,e.a154=10126,e.a155=10127,e.a156=10128,e.a157=10129,e.a158=10130,e.a159=10131,e.a160=10132,e.a161=8594,e.a163=8596,e.a164=8597,e.a196=10136,e.a165=10137,e.a192=10138,e.a166=10139,e.a167=10140,e.a168=10141,e.a169=10142,e.a170=10143,e.a171=10144,e.a172=10145,e.a173=10146,e.a162=10147,e.a174=10148,e.a175=10149,e.a176=10150,e.a177=10151,e.a178=10152,e.a179=10153,e.a193=10154,e.a180=10155,e.a199=10156,e.a181=10157,e.a200=10158,e.a182=10159,e.a201=10161,e.a183=10162,e.a184=10163,e.a197=10164,e.a185=10165,e.a194=10166,e.a198=10167,e.a186=10168,e.a195=10169,e.a187=10170,e.a188=10171,e.a189=10172,e.a190=10173,e.a191=10174,e.a89=10088,e.a90=10089,e.a93=10090,e.a94=10091,e.a91=10092,e.a92=10093,e.a205=10094,e.a85=10095,e.a206=10096,e.a86=10097,e.a87=10098,e.a88=10099,e.a95=10100,e.a96=10101,e[".notdef"]=0}))},(e,t,r)=>{r.r(t),r.d(t,{clearUnicodeCaches:()=>u,getCharUnicodeCategory:()=>h,getUnicodeForGlyph:()=>i,getUnicodeRangeFor:()=>o,mapSpecialUnicodeValues:()=>a});const n=(0,r(149).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 a(e){return e>=65520&&e<=65535?0:e>=62976&&e<=63743?n()[e]||e:173===e?45:e}function i(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=[[0,127],[128,255],[256,383],[384,591],[592,687,7424,7551,7552,7615],[688,767,42752,42783],[768,879,7616,7679],[880,1023],[11392,11519],[1024,1279,1280,1327,11744,11775,42560,42655],[1328,1423],[1424,1535],[42240,42559],[1536,1791,1872,1919],[1984,2047],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3584,3711],[3712,3839],[4256,4351,11520,11567],[6912,7039],[4352,4607],[7680,7935,11360,11391,42784,43007],[7936,8191],[8192,8303,11776,11903],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703,10224,10239,10496,10623,11008,11263],[8704,8959,10752,11007,10176,10223,10624,10751],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[12288,12351],[12352,12447],[12448,12543,12784,12799],[12544,12591,12704,12735],[12592,12687],[43072,43135],[12800,13055],[13056,13311],[44032,55215],[55296,57343],[67840,67871],[19968,40959,11904,12031,12032,12255,12272,12287,13312,19903,131072,173791,12688,12703],[57344,63743],[12736,12783,63744,64255,194560,195103],[64256,64335],[64336,65023],[65056,65071],[65040,65055],[65104,65135],[65136,65279],[65280,65519],[65520,65535],[3840,4095],[1792,1871],[1920,1983],[3456,3583],[4096,4255],[4608,4991,4992,5023,11648,11743],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[10240,10495],[40960,42127],[5888,5919,5920,5951,5952,5983,5984,6015],[66304,66351],[66352,66383],[66560,66639],[118784,119039,119040,119295,119296,119375],[119808,120831],[1044480,1048573],[65024,65039,917760,917999],[917504,917631],[6400,6479],[6480,6527],[6528,6623],[6656,6687],[11264,11359],[11568,11647],[19904,19967],[43008,43055],[65536,65663,65664,65791,65792,65855],[65856,65935],[66432,66463],[66464,66527],[66640,66687],[66688,66735],[67584,67647],[68096,68191],[119552,119647],[73728,74751,74752,74879],[119648,119679],[7040,7103],[7168,7247],[7248,7295],[43136,43231],[43264,43311],[43312,43359],[43520,43615],[65936,65999],[66e3,66047],[66208,66271,66176,66207,67872,67903],[127024,127135,126976,127023]];function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;if(-1!==t){const r=s[t];for(let n=0,a=r.length;n=r[n]&&e<=r[n+1])return t}for(let t=0,r=s.length;t=r[n]&&e<=r[n+1])return t}return-1}const c=new RegExp("^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$","u"),l=new Map;function h(e){const t=l.get(e);if(t)return t;const r=e.match(c),n={isWhitespace:!(null==r||!r[1]),isZeroWidthDiacritic:!(null==r||!r[2]),isInvisibleFormatMark:!(null==r||!r[3])};return l.set(e,n),n}function u(){l.clear()}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSerifFonts=t.getNonStdFontMap=t.getGlyphMapForStandardFonts=t.getFontNameToFileMap=void 0,t.getStandardFontName=function(e){const t=(0,a.normalizeFontName)(e);return i()[t]},t.getSymbolsFonts=t.getSupplementalGlyphMapForCalibri=t.getSupplementalGlyphMapForArialBlack=t.getStdFontMap=void 0,t.isKnownFontName=function(e){const t=(0,a.normalizeFontName)(e);return!!(i()[t]||o()[t]||c()[t]||l()[t])};var n=r(149),a=r(188);const 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["Arial-BoldItalicMT-BoldItalic"]="Helvetica-BoldOblique",e["Arial-BoldMT-Bold"]="Helvetica-Bold",e["Arial-ItalicMT-Italic"]="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;const s=(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="LiberationSans-Regular.ttf",e["Helvetica-Bold"]="LiberationSans-Bold.ttf",e["Helvetica-BoldOblique"]="LiberationSans-BoldItalic.ttf",e["Helvetica-Oblique"]="LiberationSans-Italic.ttf",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=s;const o=(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.Impact="Helvetica",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"}));t.getNonStdFontMap=o;const 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;const l=(0,n.getLookupTableFactory)((function(e){e.Dingbats=!0,e.Symbol=!0,e.ZapfDingbats=!0,e.Wingdings=!0,e["Wingdings-Bold"]=!0,e["Wingdings-Regular"]=!0}));t.getSymbolsFonts=l;const h=(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[207]=211,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=h;const u=(0,n.getLookupTableFactory)((function(e){e[227]=322,e[264]=261,e[291]=346}));t.getSupplementalGlyphMapForArialBlack=u;const d=(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=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToUnicodeMap=t.IdentityToUnicodeMap=void 0;var n=r(144);t.ToUnicodeMap=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const r in t)if(t[r]===e)return 0|r;return-1}amend(e){for(const t in e)this._map[t]=e[t]}},t.IdentityToUnicodeMap=class{constructor(e,t){this.firstChar=e,this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,r=this.lastChar;t<=r;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){(0,n.unreachable)("Should not call amend()")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CFFFont=void 0;var n=r(185),a=r(188),i=r(144);t.CFFFont=class{constructor(e,t){this.properties=t;const r=new n.CFFParser(e,t,a.SEAC_ANALYSIS_ENABLED);this.cff=r.parse(),this.cff.duplicateFirstGlyph();const s=new n.CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=s.compile()}catch(r){(0,i.warn)("Failed to compile font "+t.loadedName),this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,{cidToGidMap:r,cMap:n}=t,i=e.charset.charset;let s,o;if(t.composite){let t,a;if((null==r?void 0:r.length)>0){t=Object.create(null);for(let e=0,n=r.length;e=0){const n=r[t];n&&(a[e]=n)}}a.length>0&&(this.properties.builtInEncoding=a)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontRendererFactory=void 0,r(139),r(157),r(159),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(185),i=r(189),s=r(187),o=r(154);function c(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function l(e,t){return e[t]<<8|e[t+1]}function h(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function u(e,t){return e[t]<<24>>24}function d(e,t){return h(e,t)/16384}function f(e){const t=e.length;let r=32768;return t<1240?r=107:t<33900&&(r=1131),r}function g(e,t,r){const a=1===l(e,t+2)?c(e,t+8):c(e,t+16),i=l(e,t+a);let s,o,h;if(4===i){l(e,t+a+2);const r=l(e,t+a+6)>>1;for(o=t+a+14,s=[],h=0;h>1;r0;)p.push({flags:c})}for(r=0;r>1,I=!0;break;case 4:u+=l.pop(),i(h,u),I=!0;break;case 5:for(;l.length>0;)h+=l.shift(),u+=l.shift(),o(h,u);break;case 6:for(;l.length>0&&(h+=l.shift(),o(h,u),0!==l.length);)u+=l.shift(),o(h,u);break;case 7:for(;l.length>0&&(u+=l.shift(),o(h,u),0!==l.length);)h+=l.shift(),o(h,u);break;case 8:for(;l.length>0;)w=h+l.shift(),x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+l.shift(),c(w,x,v,S,h,u);break;case 10:if(O=l.pop(),F=null,r.isCFFCIDFont){const e=r.fdSelect.getFDIndex(a);if(e>=0&&eMath.abs(u-t)?h+=l.shift():u+=l.shift(),c(w,x,v,S,h,u);break;default:throw new n.FormatError("unknown operator: 12 ".concat(T))}break;case 14:if(l.length>=4){const e=l.pop(),n=l.pop();u=l.pop(),h=l.pop(),t.push({cmd:"save"},{cmd:"translate",args:[h,u]});let a=m(r.cmap,String.fromCharCode(r.glyphNameMap[s.StandardEncoding[e]]));y(r.glyphs[a.glyphId],t,r,a.glyphId),t.push({cmd:"restore"}),a=m(r.cmap,String.fromCharCode(r.glyphNameMap[s.StandardEncoding[n]])),y(r.glyphs[a.glyphId],t,r,a.glyphId)}return;case 19:case 20:d+=l.length>>1,p+=d+7>>3,I=!0;break;case 21:u+=l.pop(),h+=l.pop(),i(h,u),I=!0;break;case 22:h+=l.pop(),i(h,u),I=!0;break;case 24:for(;l.length>2;)w=h+l.shift(),x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+l.shift(),c(w,x,v,S,h,u);h+=l.shift(),u+=l.shift(),o(h,u);break;case 25:for(;l.length>6;)h+=l.shift(),u+=l.shift(),o(h,u);w=h+l.shift(),x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+l.shift(),c(w,x,v,S,h,u);break;case 26:for(l.length%2&&(h+=l.shift());l.length>0;)w=h,x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v,u=S+l.shift(),c(w,x,v,S,h,u);break;case 27:for(l.length%2&&(u+=l.shift());l.length>0;)w=h+l.shift(),x=u,v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S,c(w,x,v,S,h,u);break;case 28:l.push((g[p]<<24|g[p+1]<<16)>>16),p+=2;break;case 29:O=l.pop()+r.gsubrsBias,F=r.gsubrs[O],F&&e(F);break;case 30:for(;l.length>0&&(w=h,x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+(1===l.length?l.shift():0),c(w,x,v,S,h,u),0!==l.length);)w=h+l.shift(),x=u,v=w+l.shift(),S=x+l.shift(),u=S+l.shift(),h=v+(1===l.length?l.shift():0),c(w,x,v,S,h,u);break;case 31:for(;l.length>0&&(w=h+l.shift(),x=u,v=w+l.shift(),S=x+l.shift(),u=S+l.shift(),h=v+(1===l.length?l.shift():0),c(w,x,v,S,h,u),0!==l.length);)w=h,x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+(1===l.length?l.shift():0),c(w,x,v,S,h,u);break;default:if(T<32)throw new n.FormatError("unknown operator: ".concat(T));T<247?l.push(T-139):T<251?l.push(256*(T-247)+g[p++]+108):T<255?l.push(256*-(T-251)-g[p++]-108):(l.push((g[p]<<24|g[p+1]<<16|g[p+2]<<8|g[p+3])/65536),p+=4)}I&&(l.length=0)}}(e)}const w=[];class v{constructor(e){this.constructor===v&&(0,n.unreachable)("Cannot initialize CompiledFont."),this.fontMatrix=e,this.compiledGlyphs=Object.create(null),this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:r}=m(this.cmap,e);let n=this.compiledGlyphs[r];if(!n)try{n=this.compileGlyph(this.glyphs[r],r),this.compiledGlyphs[r]=n}catch(e){throw this.compiledGlyphs[r]=w,void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=r),e}return void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=r),n}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return w;let r=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);e>=0&&e2*l(e,t));const i=[];let s=a(t,0);for(let r=n;r{Object.defineProperty(t,"__esModule",{value:!0}),t.getMetrics=t.getFontBasicMetrics=void 0;var n=r(149);const 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;const 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,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.GlyfTable=void 0,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(157),t.GlyfTable=class{constructor(e){let{glyfTable:t,isGlyphLocationsLong:r,locaTable:a,numGlyphs:i}=e;this.glyphs=[];const s=new DataView(a.buffer,a.byteOffset,a.byteLength),o=new DataView(t.buffer,t.byteOffset,t.byteLength),c=r?4:2;let l=r?s.getUint32(0):2*s.getUint16(0),h=0;for(let e=0;ee+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),r=e>131070,n=r?4:2,a=new DataView(new ArrayBuffer((this.glyphs.length+1)*n));r?a.setUint32(0,0):a.setUint16(0,0);let i=0,s=0;for(const e of this.glyphs)i+=e.write(i,t),i=i+3&-4,s+=n,r?a.setUint32(s,i):a.setUint16(s,i>>1);return{isLocationLong:r,loca:new Uint8Array(a.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,r=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const r=e;if(e+=this.header.write(e,t),this.simple)e+=this.simple.write(e,t);else for(const r of this.composites)e+=r.write(e,t);return e-r}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;if(this.header.scale(t,e),this.simple)this.simple.scale(t,e);else for(const r of this.composites)r.scale(t,e)}}class a{constructor(e){let{numberOfContours:t,xMin:r,yMin:n,xMax:a,yMax:i}=e;this.numberOfContours=t,this.xMin=r,this.yMin=n,this.xMax=a,this.yMax=i}static parse(e,t){return[10,new a({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){return t.setInt16(e,this.numberOfContours),t.setInt16(e+2,this.xMin),t.setInt16(e+4,this.yMin),t.setInt16(e+6,this.xMax),t.setInt16(e+8,this.yMax),10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t),this.xMax=Math.round(e+(this.xMax-e)*t)}}class i{constructor(e){let{flags:t,xCoordinates:r,yCoordinates:n}=e;this.xCoordinates=r,this.yCoordinates=n,this.flags=t}}class s{constructor(e){let{contours:t,instructions:r}=e;this.contours=t,this.instructions=r}static parse(e,t,r){const n=[];for(let a=0;a255?e+=2:o>0&&(e+=1),t=i,o=Math.abs(s-r),o>255?e+=2:o>0&&(e+=1),r=s}}return e}write(e,t){const r=e,n=[],a=[],i=[];let s=0,o=0;for(const r of this.contours){for(let e=0,t=r.xCoordinates.length;e=0?18:2,n.push(e)):n.push(l)}s=c;const h=r.yCoordinates[e];if(l=h-o,0===l)t|=32,a.push(0);else{const e=Math.abs(l);e<=255?(t|=l>=0?36:4,a.push(e)):a.push(l)}o=h,i.push(t)}t.setUint16(e,n.length-1),e+=2}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(const r of i)t.setUint8(e++,r);for(let r=0,a=n.length;r=-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}write(e,t){const 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}scale(e,t){}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OpenTypeFileBuilder=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var n=r(149),a=r(144);function i(e,t,r){e[t]=r>>8&255,e[t+1]=255&r}function s(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 o(e,t,r){if(r instanceof Uint8Array)e.set(r,t);else if("string"==typeof r)for(let n=0,a=r.length;nr;)r<<=1,n++;const a=r*t;return{range:a,entry:n,rangeShift:t*e-a}}toArray(){let e=this.sfnt;const t=this.tables,r=Object.keys(t);r.sort();const l=r.length;let h,u,d,f,g,p=12+16*l;const m=[p];for(h=0;h>>0,m.push(p);const b=new Uint8Array(p);for(h=0;h>>0;s(b,p+4,e),s(b,p+8,m[h]),s(b,p+12,t[g].length),p+=16}return b}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}t.OpenTypeFileBuilder=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Type1Font=void 0,r(139);var n=r(185),a=r(144),i=r(188),s=r(149),o=r(154),c=r(199);function l(e,t,r){const n=e.length,a=t.length,i=n-a;let o=r,c=!1;for(;o=a){for(o+=r;o=0&&(n[e]=a)}return(0,i.type1FontGlyphMapping)(e,n,r)}hasGlyphId(e){return!(e<0||e>=this.numGlyphs)&&(0===e||this.charstrings[e-1].charstring.length>0)}getSeacs(e){const t=[];for(let r=0,n=e.length;r0;e--)t[e]-=t[e-1];g.setByName(e,t)}s.topDict.privateDict=g;const m=new n.CFFIndex;for(u=0,d=a.length;u{Object.defineProperty(t,"__esModule",{value:!0}),t.Type1Parser=void 0,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(159);var n=r(187),a=r(149),i=r(154),s=r(144);const o=[4],c=[5],l=[6],h=[7],u=[8],d=[12,35],f=[14],g=[21],p=[22],m=[30],b=[31];class y{constructor(){this.width=0,this.lsb=0,this.flexing=!1,this.output=[],this.stack=[]}convert(e,t,r){const n=e.length;let a,i,y,w=!1;for(let v=0;vn)return!0;const a=n-e;for(let e=a;e>8&255,255&t):(t=65536*t|0,this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t))}return this.output.push(...t),r?this.stack.splice(a,e):this.stack.length=0,!1}}function w(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function v(e,t,r){if(r>=e.length)return new Uint8Array(0);let n,a,i=0|t;for(n=0;n>8,i=52845*(t+i)+22719&65535}return o}function x(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}t.Type1Parser=class{constructor(e,t,r){if(t){const t=e.getBytes(),r=!((w(t[0])||(0,a.isWhiteSpace)(t[0]))&&w(t[1])&&w(t[2])&&w(t[3])&&w(t[4])&&w(t[5])&&w(t[6])&&w(t[7]));e=new i.Stream(r?v(t,55665,4):function(e,t,r){let n=55665;const a=e.length,i=new Uint8Array(a>>>1);let s,o;for(s=0,o=0;s>8,n=52845*(e+n)+22719&65535}}return i.slice(4,o)}(t))}this.seacAnalysisEnabled=!!r,this.stream=e,this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){return this.stream.skip(-2),this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){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(x(t))return this.nextChar(),String.fromCharCode(t);let r="";do{r+=String.fromCharCode(t),t=this.nextChar()}while(t>=0&&!(0,a.isWhiteSpace)(t)&&!x(t));return r}readCharStrings(e,t){return-1===t?e:v(e,4330,t)}extractFontProgram(e){const t=this.stream,r=[],n=[],a=Object.create(null);a.lenIV=4;const i={subrs:[],charstrings:[],properties:{privateData:a}};let s,o,c,l;for(;null!==(s=this.getToken());)if("/"===s)switch(s=this.getToken(),s){case"CharStrings":for(this.getToken(),this.getToken(),this.getToken(),this.getToken();s=this.getToken(),null!==s&&"end"!==s;){if("/"!==s)continue;const e=this.getToken();o=this.readInt(),this.getToken(),c=o>0?t.getBytes(o):new Uint8Array(0),l=i.properties.privateData.lenIV;const r=this.readCharStrings(c,l);this.nextChar(),s=this.getToken(),"noaccess"===s?this.getToken():"/"===s&&this.prevChar(),n.push({glyph:e,encoded:r})}break;case"Subrs":for(this.readInt(),this.getToken();"dup"===this.getToken();){const e=this.readInt();o=this.readInt(),this.getToken(),c=o>0?t.getBytes(o):new Uint8Array(0),l=i.properties.privateData.lenIV;const n=this.readCharStrings(c,l);this.nextChar(),s=this.getToken(),"noaccess"===s&&this.getToken(),r[e]=n}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length;break;case"StemSnapH":case"StemSnapV":i.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":i.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":i.properties.privateData[s]=this.readNumber();break;case"ExpansionFactor":i.properties.privateData[s]=this.readNumber()||.06;break;case"ForceBold":i.properties.privateData[s]=this.readBoolean()}for(const{encoded:t,glyph:a}of n){const n=new y,s=n.convert(t,r,this.seacAnalysisEnabled);let o=n.output;s&&(o=[14]);const c={glyphName:a,charstring:o,width:n.width,lsb:n.lsb,seac:n.seac};if(".notdef"===a?i.charstrings.unshift(c):i.charstrings.push(c),e.builtInEncoding){const t=e.builtInEncoding.indexOf(a);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=n.width)}}return i}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t)switch(t=this.getToken(),t){case"FontMatrix":const r=this.readNumberArray();e.fontMatrix=r;break;case"Encoding":const a=this.getToken();let i;if(/^\\d+$/.test(a)){i=[];const e=0|parseInt(a,10);this.getToken();for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.Pattern=void 0,t.getTilingPatternIR=function(e,t,r){const a=t.getArray("Matrix"),i=n.Util.normalizeRect(t.getArray("BBox")),s=t.get("XStep"),o=t.get("YStep"),c=t.get("PaintType"),l=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,s,o,c,l]},r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(159);var n=r(144),a=r(151),s=r(162),o=r(149);t.Pattern=class{constructor(){(0,n.unreachable)("Cannot initialize Pattern.")}static parseShading(e,t,r,i,s){const c=e instanceof a.BaseStream?e.dict:e,h=c.get("ShadingType");try{switch(h){case 2:case 3:return new l(c,t,r,i,s);case 4:case 5:case 6:case 7:return new d(e,t,r,i,s);default:throw new n.FormatError("Unsupported ShadingType: "+h)}}catch(e){if(e instanceof o.MissingDataException)throw e;return(0,n.warn)(e),new f}}};class c{constructor(){this.constructor===c&&(0,n.unreachable)("Cannot initialize BaseShading.")}getIR(){(0,n.unreachable)("Abstract method \`getIR\` called.")}}i(c,"SMALL_NUMBER",1e-6);class l extends c{constructor(e,t,r,a,i){super(),this.coordsArr=e.getArray("Coords"),this.shadingType=e.get("ShadingType");const o=s.ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:r,pdfFunctionFactory:a,localColorSpaceCache:i}),l=e.getArray("BBox");this.bbox=Array.isArray(l)&&4===l.length?n.Util.normalizeRect(l):null;let h=0,u=1;if(e.has("Domain")){const t=e.getArray("Domain");h=t[0],u=t[1]}let d=!1,f=!1;if(e.has("Extend")){const t=e.getArray("Extend");d=t[0],f=t[1]}if(!(3!==this.shadingType||d&&f)){const[e,t,r,a,i,s]=this.coordsArr,o=Math.hypot(e-a,t-i);r<=s+o&&s<=r+o&&(0,n.warn)("Unsupported radial gradient.")}this.extendStart=d,this.extendEnd=f;const g=e.getRaw("Function"),p=a.createFromArray(g),m=(u-h)/840,b=this.colorStops=[];if(h>=u||m<=0)return void(0,n.info)("Bad shading domain.");const y=new Float32Array(o.numComps),w=new Float32Array(1);let v,x=0;w[0]=h,p(w,0,y,0);let S=o.getRgb(y,0);const A=n.Util.makeHexColor(S[0],S[1],S[2]);b.push([0,A]);let k=1;w[0]=h+m,p(w,0,y,0);let C=o.getRgb(y,0),O=C[0]-S[0]+1,F=C[1]-S[1]+1,I=C[2]-S[2]+1,T=C[0]-S[0]-1,M=C[1]-S[1]-1,E=C[2]-S[2]-1;for(let e=2;e<840;e++){w[0]=h+e*m,p(w,0,y,0),v=o.getRgb(y,0);const t=e-x;if(O=Math.min(O,(v[0]-S[0]+1)/t),F=Math.min(F,(v[1]-S[1]+1)/t),I=Math.min(I,(v[2]-S[2]+1)/t),T=Math.max(T,(v[0]-S[0]-1)/t),M=Math.max(M,(v[1]-S[1]-1)/t),E=Math.max(E,(v[2]-S[2]-1)/t),!(T<=O&&M<=F&&E<=I)){const e=n.Util.makeHexColor(C[0],C[1],C[2]);b.push([k/840,e]),O=v[0]-C[0]+1,F=v[1]-C[1]+1,I=v[2]-C[2]+1,T=v[0]-C[0]-1,M=v[1]-C[1]-1,E=v[2]-C[2]-1,x=k,S=C}k=e,C=v}const P=n.Util.makeHexColor(C[0],C[1],C[2]);b.push([1,P]);let R="transparent";e.has("Background")&&(v=o.getRgb(e.get("Background"),0),R=n.Util.makeHexColor(v[0],v[1],v[2])),d||(b.unshift([0,R]),b[1][0]+=c.SMALL_NUMBER),f||(b.at(-1)[0]-=c.SMALL_NUMBER,b.push([1,R])),this.colorStops=b}getIR(){const e=this.coordsArr,t=this.shadingType;let r,a,i,s,o;return 2===t?(a=[e[0],e[1]],i=[e[2],e[3]],s=null,o=null,r="axial"):3===t?(a=[e[0],e[1]],i=[e[3],e[4]],s=e[2],o=e[5],r="radial"):(0,n.unreachable)("getPattern type unknown: ".concat(t)),["RadialAxial",r,this.bbox,this.colorStops,a,i,s,o]}}class h{constructor(e,t){this.stream=e,this.context=t,this.buffer=0,this.bufferLength=0;const r=t.numComps;this.tmpCompsBuf=new Float32Array(r);const n=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(n):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();return!(e<0||(this.buffer=e,this.bufferLength=8,0))}readBits(e){let 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();const e=this.stream.getByte();return this.buffer=e&(1<>r)>>>0}if(8===e&&0===r)return this.stream.getByte();for(;r>r}align(){this.buffer=0,this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),r=this.readBits(e),n=this.context.decode,a=e<32?1/((1<i?i:e,t=t>s?s:t,r=r{Object.defineProperty(t,"__esModule",{value:!0}),t.getXfaFontDict=function(e){const t=function(e){const t=d(e);if(!t)return null;const{baseWidths:r,baseMapping:n,factors:a}=t,i=a?r.map(((e,t)=>e*a[t])):r;let s,o=-2;const c=[];for(const[e,t]of n.map(((e,t)=>[e,t])).sort(((e,t)=>{let[r]=e,[n]=t;return r-n})))-1!==e&&(e===o+1?(s.push(i[t]),o+=1):(o=e,s=[i[t]],c.push(e,s)));return c}(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);const n=new a.Dict(null);r.set("FontDescriptor",n);const 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=d,r(139);var n=r(202),a=r(150),i=r(203),s=r(204),o=r(205),c=r(206),l=r(149),h=r(188);const u=(0,l.getLookupTableFactory)((function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:o.MyriadProRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:o.MyriadProRegularMetrics},e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:o.MyriadProBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:o.MyriadProBoldMetrics},e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:o.MyriadProItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:o.MyriadProItalicMetrics},e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:o.MyriadProBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:o.MyriadProBoldItalicMetrics},e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping},e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping},e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping},e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping},e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:n.CalibriRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:n.CalibriRegularMetrics},e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:n.CalibriBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:n.CalibriBoldMetrics},e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:n.CalibriItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:n.CalibriItalicMetrics},e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:n.CalibriBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:n.CalibriBoldItalicMetrics},e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:c.SegoeuiRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:c.SegoeuiRegularMetrics},e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:c.SegoeuiBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:c.SegoeuiBoldMetrics},e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:c.SegoeuiItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:c.SegoeuiItalicMetrics},e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:c.SegoeuiBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:c.SegoeuiBoldItalicMetrics},e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:i.HelveticaRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:i.HelveticaRegularMetrics},e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:i.HelveticaBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:i.HelveticaBoldMetrics},e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:i.HelveticaItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:i.HelveticaItalicMetrics},e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:i.HelveticaBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:i.HelveticaBoldItalicMetrics}}));function d(e){const t=(0,h.normalizeFontName)(e);return u()[t]}},(e,t)=>{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){let t;if(e instanceof n.Dict)t=e;else{if(!(e instanceof o.BaseStream))return!1;t=e.dict}return t.has("FunctionType")},r(2),r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(159);var n=r(150),a=r(144),s=r(208),o=r(151),c=r(209);function l(e){if(!Array.isArray(e))return null;const t=e.length;for(let r=0;r>c)*h,l&=(1<r?e=r:e0&&(d=o[u-1]);let f=i[1];u>1,g=o.length>>1,p=new d(u),m=Object.create(null);let b=8192;const y=new Float32Array(g);return function(e,t,r,n){let a,i,s="";const o=y;for(a=0;ae&&(i=e)),h[a]=i}b>0&&(b--,m[s]=h),r.set(h,n)}}}class u{constructor(e){this.stack=e?Array.from(e):[]}push(e){if(this.stack.length>=u.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=u.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let r=t.length-e,n=e-1;n>=0;n--,r++)t.push(t[r])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const r=this.stack,n=r.length-e,a=r.length-1,i=n+(t-Math.floor(t/e)*e);for(let e=n,t=a;e0?t.push(o<>c);break;case"ceiling":o=t.pop(),t.push(Math.ceil(o));break;case"copy":o=t.pop(),t.copy(o);break;case"cos":o=t.pop(),t.push(Math.cos(o%360/180*Math.PI));break;case"cvi":o=0|t.pop(),t.push(o);break;case"cvr":break;case"div":c=t.pop(),o=t.pop(),t.push(o/c);break;case"dup":t.copy(1);break;case"eq":c=t.pop(),o=t.pop(),t.push(o===c);break;case"exch":t.roll(2,1);break;case"exp":c=t.pop(),o=t.pop(),t.push(o**c);break;case"false":t.push(!1);break;case"floor":o=t.pop(),t.push(Math.floor(o));break;case"ge":c=t.pop(),o=t.pop(),t.push(o>=c);break;case"gt":c=t.pop(),o=t.pop(),t.push(o>c);break;case"idiv":c=t.pop(),o=t.pop(),t.push(o/c|0);break;case"index":o=t.pop(),t.index(o);break;case"le":c=t.pop(),o=t.pop(),t.push(o<=c);break;case"ln":o=t.pop(),t.push(Math.log(o));break;case"log":o=t.pop(),t.push(Math.log10(o));break;case"lt":c=t.pop(),o=t.pop(),t.push(o=t?new p(t):e.max<=t?e:new b(e,t)}class C{compile(e,t,r){const n=[],a=[],i=t.length>>1,s=r.length>>1;let o,c,l,h,u,d,f,m,b=0;for(let e=0;et.min&&(o.unshift("Math.max(",i,", "),o.push(")")),s{Object.defineProperty(t,"__esModule",{value:!0}),t.PostScriptParser=t.PostScriptLexer=void 0,r(139);var n=r(144),a=r(150),i=r(149);t.PostScriptParser=class{constructor(e){this.lexer=e,this.operators=[],this.token=null,this.prev=null}nextToken(){this.prev=this.token,this.token=this.lexer.getToken()}accept(e){return this.token.type===e&&(this.nextToken(),!0)}expect(e){if(this.accept(e))return!0;throw new n.FormatError("Unexpected symbol: found ".concat(this.token.type," expected ").concat(e,"."))}parse(){return this.nextToken(),this.expect(s.LBRACE),this.parseBlock(),this.expect(s.RBRACE),this.operators}parseBlock(){for(;;)if(this.accept(s.NUMBER))this.operators.push(this.prev.value);else if(this.accept(s.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(s.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;if(this.operators.push(null,null),this.parseBlock(),this.expect(s.RBRACE),this.accept(s.IF))this.operators[e]=this.operators.length,this.operators[e+1]="jz";else{if(!this.accept(s.LBRACE))throw new n.FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const r=this.operators.length;this.parseBlock(),this.expect(s.RBRACE),this.expect(s.IFELSE),this.operators[t]=this.operators.length,this.operators[t+1]="j",this.operators[e]=r,this.operators[e+1]="jz"}}}};const s={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class o{static get opCache(){return(0,n.shadow)(this,"opCache",Object.create(null))}constructor(e,t){this.type=e,this.value=t}static getOperator(e){var t;return(t=o.opCache)[e]||(t[e]=new o(s.OPERATOR,e))}static get LBRACE(){return(0,n.shadow)(this,"LBRACE",new o(s.LBRACE,"{"))}static get RBRACE(){return(0,n.shadow)(this,"RBRACE",new o(s.RBRACE,"}"))}static get IF(){return(0,n.shadow)(this,"IF",new o(s.IF,"IF"))}static get IFELSE(){return(0,n.shadow)(this,"IFELSE",new o(s.IFELSE,"IFELSE"))}}t.PostScriptLexer=class{constructor(e){this.stream=e,this.nextChar(),this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return a.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,i.isWhiteSpace)(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 new o(s.NUMBER,this.getNumber());case 123:return this.nextChar(),o.LBRACE;case 125:return this.nextChar(),o.RBRACE}const r=this.strBuf;for(r.length=0,r[0]=String.fromCharCode(t);(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)r.push(String.fromCharCode(t));const n=r.join("");switch(n.toLowerCase()){case"if":return o.IF;case"ifelse":return o.IFELSE;default:return o.getOperator(n)}}getNumber(){let e=this.currentChar;const 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));const r=parseFloat(t.join(""));if(isNaN(r))throw new n.FormatError("Invalid floating point number: ".concat(r));return r}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RegionalImageCache=t.LocalTilingPatternCache=t.LocalImageCache=t.LocalGStateCache=t.LocalFunctionCache=t.LocalColorSpaceCache=t.GlobalImageCache=void 0,r(2),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(144),a=r(150);class s{constructor(e){this.constructor===s&&(0,n.unreachable)("Cannot initialize BaseLocalCache."),this._onlyRefs=!0===(null==e?void 0:e.onlyRefs),this._onlyRefs||(this._nameRefMap=new Map,this._imageMap=new Map),this._imageCache=new a.RefSetCache}getByName(e){this._onlyRefs&&(0,n.unreachable)("Should not call \`getByName\` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,r){(0,n.unreachable)("Abstract method \`set\` called.")}}t.LocalImageCache=class extends s{set(e){let 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('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t),this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}},t.LocalColorSpaceCache=class extends s{set(){let 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;null!==e&&this._nameRefMap.set(e,t),this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}},t.LocalFunctionCache=class extends s{constructor(e){super({onlyRefs:!0})}set(){let 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)}},t.LocalGStateCache=class extends s{set(e){let 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;this._nameRefMap.set(e,t),this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}},t.LocalTilingPatternCache=class extends s{constructor(e){super({onlyRefs:!0})}set(){let 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)}},t.RegionalImageCache=class extends s{constructor(e){super({onlyRefs:!0})}set(){let e=arguments.length>1?arguments[1]:void 0,t=arguments.length>2?arguments[2]:void 0;if(!e)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(e)||this._imageCache.put(e,t)}};class o{constructor(){this._refCache=new a.RefSetCache,this._imageCache=new a.RefSetCache}get _byteSize(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get _cacheLimitReached(){return!(this._imageCache.size0&&void 0!==arguments[0]&&arguments[0]||this._refCache.clear(),this._imageCache.clear()}}i(o,"NUM_PAGES_THRESHOLD",2),i(o,"MIN_IMAGES_TO_CACHE",10),i(o,"MAX_BYTE_SIZE",5*n.MAX_IMAGE_SIZE_TO_CACHE),t.GlobalImageCache=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.bidi=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],g=!0;const p=e.length;if(0===p||r)return u(e,g,r);d.length=p,f.length=p;let m,b,y=0;for(m=0;m4?(g=!0,t=0):(g=!1,t=1));const w=[];for(m=0;m=0&&"ET"===f[e];--e)f[e]="EN";for(let e=m+1;e0&&(t=f[m-1]);let r=S;e+1C&&s(C)&&(F=C);for(C=O;C>=F;--C){let e=-1;for(m=0,b=w.length;m=0&&(h(d,e,m),e=-1):e<0&&(e=m);e>=0&&h(d,e,w.length)}for(m=0,b=d.length;m"!==e||(d[m]="")}return u(d.join(""),g)};var n=r(144);const 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 s(e){return 0!=(1&e)}function o(e){return 0==(1&e)}function c(e,t,r){let n,a;for(n=t,a=e.length;n2&&void 0!==arguments[2]&&arguments[2]?r="ttb":t||(r="rtl"),{str:e,dir:r}}const d=[],f=[]},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFontSubstitution=function(e,t,r,d,f){const g=d=(0,n.normalizeFontName)(d);let p=e.get(g);if(p)return p;let m=l.get(d);if(!m)for(const[e,t]of h)if(d.startsWith(e)){d="".concat(t).concat(d.substring(e.length)),m=l.get(d);break}let b=!1;m||(m=l.get(f),b=!0);const y="".concat(t.getDocId(),"_s").concat(t.createFontId());if(!m){if(!(0,a.validateFontName)(d))return e.set(g,null),null;const t=/bold/gi.test(d),r=/oblique|italic/gi.test(d);return p={css:y,guessFallback:!0,loadedName:y,baseFontName:d,src:"local(".concat(d,")"),style:t&&r&&c||t&&s||r&&o||i},e.set(g,p),p}const w=[];b&&(0,a.validateFontName)(d)&&w.push("local(".concat(d,")"));const{style:v,ultimate:x}=u(m,w,r),S=null===x;return p={css:"".concat(y).concat(S?"":",".concat(x)),guessFallback:S,loadedName:y,baseFontName:d,src:w.join(","),style:v},e.set(g,p),p},r(139);var n=r(188),a=r(149);const i={style:"normal",weight:"normal"},s={style:"normal",weight:"bold"},o={style:"italic",weight:"normal"},c={style:"italic",weight:"bold"},l=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:i,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:s,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:o,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:c,ultimate:"serif"}],["Helvetica",{local:["Helvetica","Helvetica Neue","Arial","Arial Nova","Liberation Sans","Arimo","Nimbus Sans","Nimbus Sans L","A030","TeX Gyre Heros","FreeSans","DejaVu Sans","Albany","Bitstream Vera Sans","Arial Unicode MS","Microsoft Sans Serif","Apple Symbols","Cantarell"],path:"LiberationSans-Regular.ttf",style:i,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:s,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:o,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:c,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono"],style:i,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:s,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:o,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:c,ultimate:"monospace"}],["ArialBlack",{local:["Arial Black"],style:{style:"normal",weight:"900"},fallback:"Helvetica-Bold"}],["ArialBlack-Bold",{alias:"ArialBlack"}],["ArialBlack-Italic",{alias:"ArialBlack",style:{style:"italic",weight:"900"},fallback:"Helvetica-BoldOblique"}],["ArialBlack-BoldItalic",{alias:"ArialBlack-Italic"}],["ArialNarrow",{local:["Arial Narrow","Liberation Sans Narrow","Helvetica Condensed","Nimbus Sans Narrow","TeX Gyre Heros Cn"],style:i,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:s,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:o,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:c,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:i,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:s,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:o,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:c,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:i}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),h=new Map([["Arial-Black","ArialBlack"]]);function u(e,t,r){let{alias:n,local:a,path:i,fallback:h,style:d,ultimate:f}=e,g=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],p=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],m=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"";const b={style:null,ultimate:null};if(a){const e=m?" ".concat(m):"";for(const r of a)t.push("local(".concat(r).concat(e,")"))}if(n){const e=l.get(n),a=m||function(e){switch(e){case s:return"Bold";case o:return"Italic";case c:return"Bold Italic";default:if("bold"===(null==e?void 0:e.weight))return"Bold";if("italic"===(null==e?void 0:e.style))return"Italic"}return""}(d);Object.assign(b,u(e,t,r,g&&!h,p&&!i,a))}if(d&&(b.style=d),f&&(b.ultimate=f),g&&h){const e=l.get(h),{ultimate:n}=u(e,t,r,g,p&&!i,m);b.ultimate||(b.ultimate=n)}return p&&i&&r&&t.push("url(".concat(r).concat(i,")")),b}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ImageResizer=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144);class a{constructor(e,t){this._imgData=e,this._isMask=t}static needsToBeResized(e,t){if(e<=this._goodSquareLength&&t<=this._goodSquareLength)return!1;const{MAX_DIM:r}=this;if(e>r||t>r)return!0;const n=e*t;return this._hasMaxArea?n>this.MAX_AREA:!(n(this.MAX_AREA=this._goodSquareLength**2)))}static get MAX_DIM(){return(0,n.shadow)(this,"MAX_DIM",this._guessMax(2048,65537,0,1))}static get MAX_AREA(){return this._hasMaxArea=!0,(0,n.shadow)(this,"MAX_AREA",this._guessMax(a._goodSquareLength,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){e>=0&&(this._hasMaxArea=!0,(0,n.shadow)(this,"MAX_AREA",e))}static setMaxArea(e){this._hasMaxArea||(this.MAX_AREA=e>>2)}static _areGoodDims(e,t){try{const r=new OffscreenCanvas(e,t),n=r.getContext("2d");n.fillRect(0,0,1,1);const a=n.getImageData(0,0,1,1).data[3];return r.width=r.height=1,0!==a}catch(e){return!1}}static _guessMax(e,t,r,n){for(;e+r+11&&void 0!==arguments[1]&&arguments[1])._createImage()}async _createImage(){const e=this._encodeBMP(),t=new Blob([e.buffer],{type:"image/bmp"}),r=createImageBitmap(t),{MAX_AREA:n,MAX_DIM:i}=a,{_imgData:s}=this,{width:o,height:c}=s,l=Math.max(o/i,c/i,Math.sqrt(o*c/n)),h=Math.max(l,2),u=Math.round(10*(l+1.25))/10/h,d=Math.floor(Math.log2(u)),f=new Array(d+2).fill(2);f[0]=h,f.splice(-1,1,u/(1<>3,n=r+3&-4;if(r!==n){const e=new Uint8Array(n*t);let a=0;for(let s=0,o=t*r;s{Object.defineProperty(t,"__esModule",{value:!0}),t.MurmurHash3_64=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144);const a=3285377520,i=4294901760,s=65535;t.MurmurHash3_64=class{constructor(e){this.h1=e?4294967295&e:a,this.h2=e?4294967295&e:a}update(e){let t,r;if("string"==typeof e){t=new Uint8Array(2*e.length),r=0;for(let n=0,a=e.length;n>>8,t[r++]=255&a)}}else{if(!(0,n.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice(),r=t.byteLength}const a=r>>2,o=r-4*a,c=new Uint32Array(t.buffer,0,a);let l=0,h=0,u=this.h1,d=this.h2;const f=3432918353,g=461845907,p=11601,m=13715;for(let e=0;e>>17,l=l*g&i|l*m&s,u^=l,u=u<<13|u>>>19,u=5*u+3864292196):(h=c[e],h=h*f&i|h*p&s,h=h<<15|h>>>17,h=h*g&i|h*m&s,d^=h,d=d<<13|d>>>19,d=5*d+3864292196);switch(l=0,o){case 3:l^=t[4*a+2]<<16;case 2:l^=t[4*a+1]<<8;case 1:l^=t[4*a],l=l*f&i|l*p&s,l=l<<15|l>>>17,l=l*g&i|l*m&s,1&a?u^=l:d^=l}this.h1=u,this.h2=d}hexdigest(){let e=this.h1,t=this.h2;return e^=t>>>1,e=3981806797*e&i|36045*e&s,t=4283543511*t&i|(2950163797*(t<<16|e>>>16)&i)>>>16,e^=t>>>1,e=444984403*e&i|60499*e&s,t=3301882366*t&i|(3120437893*(t<<16|e>>>16)&i)>>>16,e^=t>>>1,(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}},(e,t,r)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.OperatorList=void 0,r(2),r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var a=r(144);function s(e,t,r,n,a){let i=e;for(let e=0,r=t.length-1;e1e3&&(h=Math.max(h,f),g+=d+2,f=0,d=0),u.push({transform:t,x:f,y:g,w:r.width,h:r.height}),f+=r.width+2,d=Math.max(d,r.height)}const p=Math.max(h,f)+1,m=g+d+1,b=new Uint8Array(p*m*4),y=p<<2;for(let e=0;e=0;)t[i-4]=t[i],t[i-3]=t[i+1],t[i-2]=t[i+2],t[i-1]=t[i+3],t[i+r]=t[i+r-4],t[i+r+1]=t[i+r-3],t[i+r+2]=t[i+r-2],t[i+r+3]=t[i+r-1],i-=y}const w={width:p,height:m};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(p,m);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(b.buffer),p,m),0,0),w.bitmap=e.transferToImageBitmap(),w.data=null}else w.kind=a.ImageKind.RGBA_32BPP,w.data=b;return r.splice(s,4*l,a.OPS.paintInlineImageXObjectGroup),n.splice(s,4*l,[w,u]),s+1})),s(o,[a.OPS.save,a.OPS.transform,a.OPS.paintImageMaskXObject,a.OPS.restore],null,(function(e,t){const r=e.fnArray,n=(t-(e.iCurr-3))%4;switch(n){case 0:return r[t]===a.OPS.save;case 1:return r[t]===a.OPS.transform;case 2:return r[t]===a.OPS.paintImageMaskXObject;case 3:return r[t]===a.OPS.restore}throw new Error("iterateImageMaskGroup - invalid pos: ".concat(n))}),(function(e,t){const r=e.fnArray,n=e.argsArray,i=e.iCurr,s=i-3,o=i-2,c=i-1;let l=Math.floor((t-s)/4);if(l<10)return t-(t-s)%4;let h,u,d=!1;const f=n[c][0],g=n[o][0],p=n[o][1],m=n[o][2],b=n[o][3];if(p===m){d=!0,h=o+4;let e=c+4;for(let t=1;t=4&&r[i-4]===r[s]&&r[i-3]===r[o]&&r[i-2]===r[c]&&r[i-1]===r[l]&&n[i-4][0]===h&&n[i-4][1]===u&&(d++,f-=5);let g=f+4;for(let e=1;e=r)break}n=(n||o)[e[t]],n&&!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}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e),this.match=null,this.state=null,this._optimize()}}reset(){this.state=null,this.match=null,this.lastProcessed=0}}class h{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;this._streamSink=t,this.fnArray=[],this.argsArray=[],this.optimizer=!t||e&a.RenderingIntentFlag.OPLIST?new c(this):new l(this),this.dependencies=new Set,this._totalLength=0,this.weight=0,this._resolved=t?null:Promise.resolve()}set isOffscreenCanvasSupported(e){this.optimizer.isOffscreenCanvasSupported=e}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t),this.weight++,this._streamSink&&(this.weight>=h.CHUNK_SIZE||this.weight>=h.CHUNK_SIZE_ABOUT&&(e===a.OPS.restore||e===a.OPS.endText))&&this.flush()}addImageOps(e,t,r){void 0!==r&&this.addOp(a.OPS.beginMarkedContentProps,["OC",r]),this.addOp(e,t),void 0!==r&&this.addOp(a.OPS.endMarkedContent,[])}addDependency(e){this.dependencies.has(e)||(this.dependencies.add(e),this.addOp(a.OPS.dependency,[e]))}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof h){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,r=e.length;t0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.optimizer.flush();const 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()}}n=h,i(h,"CHUNK_SIZE",1e3),i(h,"CHUNK_SIZE_ABOUT",n.CHUNK_SIZE-5),t.OperatorList=h},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFImage=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144),a=r(178),i=r(151),s=r(162),o=r(168),c=r(212),l=r(176),h=r(180),u=r(150);function d(e,t,r,n){return(e=t+e*r)<0?e=0:e>n&&(e=n),e}function f(e,t,r,n,a,i){const s=a*i;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=r/a,l=n/i;let h,u,d,f,g=0;const p=new Uint16Array(a),m=r;for(h=0;h0&&Number.isInteger(a.height)&&a.height>0&&(a.width!==w||a.height!==v)&&((0,n.warn)("PDFImage - using the Width/Height of the image data, rather than the image dictionary."),w=a.width,v=a.height),w<1||v<1)throw new n.FormatError("Invalid image width: ".concat(w," or height: ").concat(v));this.width=w,this.height=v,this.interpolate=m.get("I","Interpolate"),this.imageMask=m.get("IM","ImageMask")||!1,this.matte=m.get("Matte")||!1;let x=a.bitsPerComponent;if(!x&&(x=m.get("BPC","BitsPerComponent"),!x)){if(!this.imageMask)throw new n.FormatError("Bits per component missing in image: ".concat(this.imageMask));x=1}if(this.bpc=x,!this.imageMask){let e=m.getRaw("CS")||m.getRaw("ColorSpace");if(!e)switch((0,n.info)("JPX images (which do not require color spaces)"),a.numComps){case 1:e=u.Name.get("DeviceGray");break;case 3:e=u.Name.get("DeviceRGB");break;case 4:e=u.Name.get("DeviceCMYK");break;default:throw new Error("JPX images with ".concat(a.numComps," color components not supported."))}this.colorSpace=s.ColorSpace.parse({cs:e,xref:t,resources:o?r:null,pdfFunctionFactory:f,localColorSpaceCache:p}),this.numComps=this.colorSpace.numComps}if(this.decode=m.getArray("D","Decode"),this.needsDecode=!1,this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,x)||d&&!s.ColorSpace.isDefaultDecode(this.decode,1))){var S;this.needsDecode=!0;const e=(1<>3)*n,c=t.byteLength;let l,h;if(!a||i&&o!==c?i?(l=new Uint8Array(o),l.set(t),l.fill(255,c)):l=new Uint8Array(t):l=t,i)for(h=0;h>7&1,s[d+1]=u>>6&1,s[d+2]=u>>5&1,s[d+3]=u>>4&1,s[d+4]=u>>3&1,s[d+5]=u>>2&1,s[d+6]=u>>1&1,s[d+7]=1&u,d+=8;if(d>=1}}else{let r=0;for(u=0,d=0,h=i;d>n;a<0?a=0:a>l&&(a=l),s[d]=a,u&=(1<o[n+1]){t=255;break}}c[u]=t}}}if(c)for(u=0,p=3,d=t*a;u0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=this.drawWidth,a=this.drawHeight,i={width:r,height:a,interpolate:this.interpolate,kind:0,data:null},s=this.numComps,o=this.width,h=this.height,u=this.bpc,d=o*s*u+7>>3,f=t&&c.ImageResizer.needsToBeResized(r,a);if(!e){let e;if("DeviceGray"===this.colorSpace.name&&1===u?e=n.ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==u||this.needsDecode||(e=n.ImageKind.RGB_24BPP),e&&!this.smask&&!this.mask&&r===o&&a===h){const s=this.getImageBytes(h*d,{});if(t)return f?c.ImageResizer.createImage({data:s,kind:e,width:r,height:a,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,o,h,s);if(i.kind=e,i.data=s,this.needsDecode){(0,n.assert)(e===n.ImageKind.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const t=i.data;for(let e=0,r=t.length;e>3,o=this.getImageBytes(a*s,{internal:!0}),c=this.getComponents(o);let l,h;if(1===i){if(h=r*a,this.needsDecode)for(l=0;l{Object.defineProperty(t,"__esModule",{value:!0}),t.incrementalUpdate=async function(e){let{originalData:t,xrefInfo:r,newRefs:o,xref:u=null,hasXfa:d=!1,xfaDatasetsRef:p=null,hasXfaDatasetsEntry:m=!1,needAppearances:b,acroFormRef:y=null,acroForm:w=null,xfaData:v=null}=e;await async function(e){let{xref:t,acroForm:r,acroFormRef:i,hasXfa:s,hasXfaDatasetsEntry:o,xfaDatasetsRef:c,needAppearances:h,newRefs:u}=e;if(!s||o||c||(0,n.warn)("XFA - Cannot save it"),!h&&(!s||!c||o))return;const d=new a.Dict(t);for(const e of r.getKeys())d.set(e,r.getRaw(e));if(s&&!o){const e=r.get("XFA").slice();e.splice(2,0,"datasets"),e.splice(3,0,c),d.set("XFA",e)}h&&d.set("NeedAppearances",!0);const f=t.encrypt;let g=null;f&&(g=f.createCipherTransform(i.num,i.gen));const p=[];await l(i,d,p,g),u.push({ref:i,data:p.join("")})}({xref:u,acroForm:w,acroFormRef:y,hasXfa:d,hasXfaDatasetsEntry:m,xfaDatasetsRef:p,needAppearances:b,newRefs:o}),d&&function(e){let{xfaData:t,xfaDatasetsRef:r,newRefs:a,xref:o}=e;null===t&&(t=function(e,t){const r=new s.SimpleXMLParser({hasAttributes:!0}).parseFromString(e);for(const{xfa:e}of t){if(!e)continue;const{path:t,value:a}=e;if(!t)continue;const o=(0,i.parseXFAPath)(t);let c=r.documentElement.searchNode(o,0);!c&&o.length>1&&(c=r.documentElement.searchNode([o.at(-1)],0)),c?c.childNodes=Array.isArray(a)?a.map((e=>new s.SimpleDOMNode("value",e))):[new s.SimpleDOMNode("#text",a)]:(0,n.warn)("Node not found for path: ".concat(t))}const a=[];return r.documentElement.dump(a),a.join("")}(o.fetchIfRef(r).getString(),a));const c=o.encrypt;c&&(t=c.createCipherTransform(r.num,r.gen).encryptString(t));const l="".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:l})}({xfaData:v,xfaDatasetsRef:p,newRefs:o,xref:u});const x=new a.Dict(null),S=r.newRef;let A,k;const C=t.at(-1);10===C||13===C?(A=[],k=t.length):(A=["\\n"],k=t.length+1),x.set("Size",S.num+1),x.set("Prev",r.startXRef),x.set("Type",a.Name.get("XRef")),null!==r.rootRef&&x.set("Root",r.rootRef),null!==r.infoRef&&x.set("Info",r.infoRef),null!==r.encryptRef&&x.set("Encrypt",r.encryptRef),o.push({ref:S,data:""}),o=o.sort(((e,t)=>e.ref.num-t.ref.num));const O=[[0,1,65535]],F=[0,1];let I=0;for(const{ref:e,data:t}of o)I=Math.max(I,k),O.push([1,k,Math.min(e.gen,65535)]),k+=t.length,F.push(e.num,1),A.push(t);if(x.set("Index",F),Array.isArray(r.fileIds)&&r.fileIds.length>0){const e=function(e,t){const r=Math.floor(Date.now()/1e3),a=t.filename||"",i=[r.toString(),a,e.toString()];let s=i.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info))i.push(e),s+=e.length;const o=new Uint8Array(s);let l=0;for(const e of i)g(e,l,o),l+=e.length;return(0,n.bytesToString)((0,c.calculateMD5)(o))}(k,r);x.set("ID",[r.fileIds[0],e])}const T=[1,Math.ceil(Math.log2(I)/8),2],M=(T[0]+T[1]+T[2])*O.length;x.set("W",T),x.set("Length",M),A.push("".concat(S.num," ").concat(S.gen," obj\\n")),await h(x,A,null),A.push(" stream\\n");const E=A.reduce(((e,t)=>e+t.length),0),P="\\nendstream\\nendobj\\nstartxref\\n".concat(k,"\\n%%EOF\\n"),R=new Uint8Array(t.length+E+M+P.length);R.set(t);let N=t.length;for(const e of A)g(e,N,R),N+=e.length;for(const[e,t,r]of O)N=f(e,T[0],N,R),N=f(t,T[1],N,R),N=f(r,T[2],N,R);return g(P,N,R),R},t.writeDict=h,t.writeObject=l,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(150),i=r(149),s=r(217),o=r(151),c=r(218);async function l(e,t,r,n){r.push("".concat(e.num," ").concat(e.gen," obj\\n")),t instanceof a.Dict?await h(t,r,n):t instanceof o.BaseStream&&await u(t,r,n),r.push("\\nendobj\\n")}async function h(e,t,r){t.push("<<");for(const n of e.getKeys())t.push(" /".concat((0,i.escapePDFName)(n)," ")),await d(e.getRaw(n),t,r);t.push(">>")}async function u(e,t,r){let i=e.getString();null!==r&&(i=r.encryptString(i));const{dict:s}=e,[o,c]=await Promise.all([s.getAsync("Filter"),s.getAsync("DecodeParms")]),l=Array.isArray(o)?await s.xref.fetchIfRefAsync(o[0]):o,u=(0,a.isName)(l,"FlateDecode");if("undefined"!=typeof CompressionStream&&(i.length>=256||u))try{const e=(0,n.stringToBytes)(i),t=new CompressionStream("deflate"),r=t.writable.getWriter();r.write(e),r.close();const l=await new Response(t.readable).arrayBuffer();let h,d;i=(0,n.bytesToString)(new Uint8Array(l)),o?u||(h=Array.isArray(o)?[a.Name.get("FlateDecode"),...o]:[a.Name.get("FlateDecode"),o],c&&(d=Array.isArray(c)?[null,...c]:[null,c])):h=a.Name.get("FlateDecode"),h&&s.set("Filter",h),d&&s.set("DecodeParms",d)}catch(e){(0,n.info)('writeStream - cannot compress data: "'.concat(e,'".'))}s.set("Length",i.length),await h(s,t,r),t.push(" stream\\n",i,"\\nendstream")}async function d(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)?await async function(e,t,r){t.push("[");let n=!0;for(const a of e)n?n=!1:t.push(" "),await d(a,t,r);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?await h(e,t,r):e instanceof o.BaseStream?await u(e,t,r):null===e?t.push("null"):(0,n.warn)("Unhandled value in writer: ".concat(typeof e,", please file a bug."))}function f(e,t,r,n){for(let a=t+r-1;a>r-1;a--)n[a]=255&e,e>>=8;return r+t}function g(e,t,r){for(let n=0,a=e.length;n{Object.defineProperty(t,"__esModule",{value:!0}),t.XMLParserErrorCode=t.XMLParserBase=t.SimpleXMLParser=t.SimpleDOMNode=void 0,r(139);var n=r(149);const a={NoError:0,EndOfDocument:-1,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,OutOfMemory:-7,UnterminatedAttributeValue:-8,UnterminatedElement:-9,ElementNeverBegun:-10};function i(e,t){const r=e[t];return" "===r||"\\n"===r||"\\r"===r||"\\t"===r}t.XMLParserErrorCode=a;class s{_resolveEntities(e){return e.replaceAll(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const r=[];let n=t;function a(){for(;n"!==e[n]&&"/"!==e[n];)++n;const s=e.substring(t,n);for(a();n"!==e[n]&&"/"!==e[n]&&"?"!==e[n];){a();let t="",s="";for(;n"!==e[r]&&"?"!==e[r]&&"/"!==e[r];)++r;const n=e.substring(t,r);!function(){for(;r"!==e[r+1]);)++r;return{name:n,value:e.substring(a,r),parsed:r-t}}parseXml(e){let t=0;for(;t",r),t<0)return void this.onError(a.UnterminatedElement);this.onEndElement(e.substring(r,t)),r=t+1;break;case"?":++r;const n=this._parseProcessingInstruction(e,r);if("?>"!==e.substring(r+n.parsed,r+n.parsed+2))return void this.onError(a.UnterminatedXmlDeclaration);this.onPi(n.name,n.value),r+=n.parsed+2;break;case"!":if("--"===e.substring(r+1,r+3)){if(t=e.indexOf("--\\x3e",r+3),t<0)return void this.onError(a.UnterminatedComment);this.onComment(e.substring(r+3,t)),r=t+3}else if("[CDATA["===e.substring(r+1,r+8)){if(t=e.indexOf("]]>",r+8),t<0)return void this.onError(a.UnterminatedCdat);this.onCdata(e.substring(r+8,t)),r=t+3}else{if("DOCTYPE"!==e.substring(r+1,r+8))return void this.onError(a.MalformedElement);{const n=e.indexOf("[",r+8);let i=!1;if(t=e.indexOf(">",r+8),t<0)return void this.onError(a.UnterminatedDoctypeDeclaration);if(n>0&&t>n){if(t=e.indexOf("]>",r+8),t<0)return void this.onError(a.UnterminatedDoctypeDeclaration);i=!0}const s=e.substring(r+8,t+(i?1:0));this.onDoctype(s),r=t+(i?2:1)}}break;default:const i=this._parseContent(e,r);if(null===i)return void this.onError(a.MalformedElement);let s=!1;if("/>"===e.substring(r+i.parsed,r+i.parsed+2))s=!0;else if(">"!==e.substring(r+i.parsed,r+i.parsed+1))return void this.onError(a.UnterminatedElement);this.onBeginElement(i.name,i.attributes,s),r+=i.parsed+(s?2:1)}}else{for(;r0}searchNode(e,t){if(t>=e.length)return this;const r=e[t],n=[];let a=this;for(;;){var i;if(r.name===a.nodeName){if(0!==r.pos){if(0===n.length)return null;{const[i]=n.pop();let s=0;for(const n of i.childNodes)if(r.name===n.nodeName){if(s===r.pos)return n.searchNode(e,t+1);s++}return a.searchNode(e,t+1)}}{const r=a.searchNode(e,t+1);if(null!==r)return r}}if((null===(i=a.childNodes)||void 0===i?void 0:i.length)>0)n.push([a,0]),a=a.childNodes[0];else{if(0===n.length)return null;for(;0!==n.length;){const[e,t]=n.pop(),r=t+1;if(r");for(const t of this.childNodes)t.dump(e);e.push(""))}else this.nodeValue?e.push(">".concat((0,n.encodeToXmlString)(this.nodeValue),"")):e.push("/>")}else e.push((0,n.encodeToXmlString)(this.nodeValue))}}t.SimpleDOMNode=o,t.SimpleXMLParser=class extends s{constructor(e){let{hasAttributes:t=!1,lowerCaseName:r=!1}=e;super(),this._currentFragment=null,this._stack=null,this._errorCode=a.NoError,this._hasAttributes=t,this._lowerCaseName=r}parseFromString(e){if(this._currentFragment=[],this._stack=[],this._errorCode=a.NoError,this.parseXml(e),this._errorCode!==a.NoError)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function(e){for(let 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=u,t.calculateSHA512=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(144),a=r(150),i=r(219);class s{constructor(e){this.a=0,this.b=0;const t=new Uint8Array(256),r=e.length;for(let e=0;e<256;++e)t[e]=e;for(let n=0,a=0;n<256;++n){const i=t[n];a=a+i+e[n%r]&255,t[n]=t[a],t[a]=i}this.s=t}encryptBlock(e){let t=this.a,r=this.b;const n=this.s,a=e.length,i=new Uint8Array(a);for(let s=0;s>5&255,h[u++]=a>>13&255,h[u++]=a>>21&255,h[u++]=a>>>29&255,h[u++]=0,h[u++]=0,h[u++]=0;const g=new Int32Array(16);for(u=0;u>>32-o)|0,a=i}i=i+a|0,s=s+l|0,o=o+f|0,c=c+p|0}return new Uint8Array([255&i,i>>8&255,i>>16&255,i>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])}}();t.calculateMD5=o;class c{constructor(e,t){this.high=0|e,this.low=0|t}and(e){this.high&=e.high,this.low&=e.low}xor(e){this.high^=e.high,this.low^=e.low}or(e){this.high|=e.high,this.low|=e.low}shiftRight(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)}shiftLeft(e){e>=32?(this.high=this.low<>>32-e,this.low<<=e)}rotateRight(e){let 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}not(){this.high=~this.high,this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let r=(this.high>>>0)+(e.high>>>0);t>4294967295&&(r+=1),this.low=0|t,this.high=0|r}copyTo(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}assign(e){this.high=e.high,this.low=e.low}}const l=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}const s=[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(o,c,l){let h=1779033703,u=3144134277,d=1013904242,f=2773480762,g=1359893119,p=2600822924,m=528734635,b=1541459225;const y=64*Math.ceil((l+9)/64),w=new Uint8Array(y);let v,x;for(v=0;v>>29&255,w[v++]=l>>21&255,w[v++]=l>>13&255,w[v++]=l>>5&255,w[v++]=l<<3&255;const A=new Uint32Array(64);for(v=0;v>>10)+A[x-7]+i(A[x-15])+A[x-16]|0;let o,c,l=h,y=u,S=d,C=f,O=g,F=p,I=m,T=b;for(x=0;x<64;++x)o=T+a(O)+t(O,F,I)+s[x]+A[x],c=n(l)+r(l,y,S),T=I,I=F,F=O,O=C+o|0,C=S,S=y,y=l,l=o+c|0;h=h+l|0,u=u+y|0,d=d+S|0,f=f+C|0,g=g+O|0,p=p+F|0,m=m+I|0,b=b+T|0}var k;return new Uint8Array([h>>24&255,h>>16&255,h>>8&255,255&h,u>>24&255,u>>16&255,u>>8&255,255&u,d>>24&255,d>>16&255,d>>8&255,255&d,f>>24&255,f>>16&255,f>>8&255,255&f,g>>24&255,g>>16&255,g>>8&255,255&g,p>>24&255,p>>16&255,p>>8&255,255&p,m>>24&255,m>>16&255,m>>8&255,255&m,b>>24&255,b>>16&255,b>>8&255,255&b])}}();t.calculateSHA256=l;const h=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)}const s=[new c(1116352408,3609767458),new c(1899447441,602891725),new c(3049323471,3964484399),new c(3921009573,2173295548),new c(961987163,4081628472),new c(1508970993,3053834265),new c(2453635748,2937671579),new c(2870763221,3664609560),new c(3624381080,2734883394),new c(310598401,1164996542),new c(607225278,1323610764),new c(1426881987,3590304994),new c(1925078388,4068182383),new c(2162078206,991336113),new c(2614888103,633803317),new c(3248222580,3479774868),new c(3835390401,2666613458),new c(4022224774,944711139),new c(264347078,2341262773),new c(604807628,2007800933),new c(770255983,1495990901),new c(1249150122,1856431235),new c(1555081692,3175218132),new c(1996064986,2198950837),new c(2554220882,3999719339),new c(2821834349,766784016),new c(2952996808,2566594879),new c(3210313671,3203337956),new c(3336571891,1034457026),new c(3584528711,2466948901),new c(113926993,3758326383),new c(338241895,168717936),new c(666307205,1188179964),new c(773529912,1546045734),new c(1294757372,1522805485),new c(1396182291,2643833823),new c(1695183700,2343527390),new c(1986661051,1014477480),new c(2177026350,1206759142),new c(2456956037,344077627),new c(2730485921,1290863460),new c(2820302411,3158454273),new c(3259730800,3505952657),new c(3345764771,106217008),new c(3516065817,3606008344),new c(3600352804,1432725776),new c(4094571909,1467031594),new c(275423344,851169720),new c(430227734,3100823752),new c(506948616,1363258195),new c(659060556,3750685593),new c(883997877,3785050280),new c(958139571,3318307427),new c(1322822218,3812723403),new c(1537002063,2003034995),new c(1747873779,3602036899),new c(1955562222,1575990012),new c(2024104815,1125592928),new c(2227730452,2716904306),new c(2361852424,442776044),new c(2428436474,593698344),new c(2756734187,3733110249),new c(3204031479,2999351573),new c(3329325298,3815920427),new c(3391569614,3928383900),new c(3515267271,566280711),new c(3940187606,3454069534),new c(4118630271,4000239992),new c(116418474,1914138554),new c(174292421,2731055270),new c(289380356,3203993006),new c(460393269,320620315),new c(685471733,587496836),new c(852142971,1086792851),new c(1017036298,365543100),new c(1126000580,2618297676),new c(1288033470,3409855158),new c(1501505948,4234509866),new c(1607167915,987167468),new c(1816402316,1246189591)];return function(o,l,h){let u,d,f,g,p,m,b,y,w=arguments.length>3&&void 0!==arguments[3]&&arguments[3];w?(u=new c(3418070365,3238371032),d=new c(1654270250,914150663),f=new c(2438529370,812702999),g=new c(355462360,4144912697),p=new c(1731405415,4290775857),m=new c(2394180231,1750603025),b=new c(3675008525,1694076839),y=new c(1203062813,3204075428)):(u=new c(1779033703,4089235720),d=new c(3144134277,2227873595),f=new c(1013904242,4271175723),g=new c(2773480762,1595750129),p=new c(1359893119,2917565137),m=new c(2600822924,725511199),b=new c(528734635,4215389547),y=new c(1541459225,327033209));const v=128*Math.ceil((h+17)/128),x=new Uint8Array(v);let S,A;for(S=0;S>>29&255,x[S++]=h>>21&255,x[S++]=h>>13&255,x[S++]=h>>5&255,x[S++]=h<<3&255;const C=new Array(80);for(S=0;S<80;S++)C[S]=new c(0,0);let O=new c(0,0),F=new c(0,0),I=new c(0,0),T=new c(0,0),M=new c(0,0),E=new c(0,0),P=new c(0,0),R=new c(0,0);const N=new c(0,0),D=new c(0,0),B=new c(0,0),L=new c(0,0);let _,j;for(S=0;S=1;--e){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(let e=0;e<16;++e)i[e]=this._inv_s[i[e]];for(let r=0,n=16*e;r<16;++r,++n)i[r]^=t[n];for(let e=0;e<16;e+=4){const t=this._mix[i[e]],n=this._mix[i[e+1]],a=this._mix[i[e+2]],s=this._mix[i[e+3]];r=t^n>>>8^n<<24^a>>>16^a<<16^s>>>24^s<<8,i[e]=r>>>24&255,i[e+1]=r>>16&255,i[e+2]=r>>8&255,i[e+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(let e=0;e<16;++e)i[e]=this._inv_s[i[e]],i[e]^=t[e];return i}_encrypt(e,t){const r=this._s;let n,a,i;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=n;--r)if(e[r]!==t){t=0;break}o-=t,i[i.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,r=i.length;e2&&void 0!==arguments[2]?arguments[2]:null;const n=e.length,a=this.buffer;let i=this.bufferPosition;if(r)this.iv=r;else{for(let t=0;i<16&&t=256&&(o=255&(27^o)));for(let t=0;t<4;++t)r[e]=n^=r[e-32],e++,r[e]=a^=r[e-32],e++,r[e]=i^=r[e-32],e++,r[e]=s^=r[e-32],e++}return r}}t.AES256Cipher=p;class m{checkOwnerPassword(e,t,r,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(t,e.length),i.set(r,e.length+t.length);const s=l(i,0,i.length);return(0,n.isArrayEqual)(s,a)}checkUserPassword(e,t,r){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(t,e.length);const i=l(a,0,a.length);return(0,n.isArrayEqual)(i,r)}getOwnerKey(e,t,r,n){const a=new Uint8Array(e.length+56);a.set(e,0),a.set(t,e.length),a.set(r,e.length+t.length);const i=l(a,0,a.length);return new p(i).decryptBlock(n,!1,new Uint8Array(16))}getUserKey(e,t,r){const n=new Uint8Array(e.length+8);n.set(e,0),n.set(t,e.length);const a=l(n,0,n.length);return new p(a).decryptBlock(r,!1,new Uint8Array(16))}}t.PDF17=m;class b{_hash(e,t,r){let n=l(t,0,t.length).subarray(0,32),a=[0],i=0;for(;i<64||a.at(-1)>i-32;){const t=e.length+n.length+r.length,s=new Uint8Array(t);let o=0;s.set(e,o),o+=e.length,s.set(n,o),o+=n.length,s.set(r,o);const c=new Uint8Array(64*t);for(let e=0,r=0;e<64;e++,r+=t)c.set(s,r);a=new g(n.subarray(0,16)).encrypt(c,n.subarray(16,32));const d=a.slice(0,16).reduce(((e,t)=>e+t),0)%3;0===d?n=l(a,0,a.length):1===d?n=u(a,0,a.length):2===d&&(n=h(a,0,a.length)),i++}return n.subarray(0,32)}checkOwnerPassword(e,t,r,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(t,e.length),i.set(r,e.length+t.length);const s=this._hash(e,i,r);return(0,n.isArrayEqual)(s,a)}checkUserPassword(e,t,r){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(t,e.length);const i=this._hash(e,a,[]);return(0,n.isArrayEqual)(i,r)}getOwnerKey(e,t,r,n){const a=new Uint8Array(e.length+56);a.set(e,0),a.set(t,e.length),a.set(r,e.length+t.length);const i=this._hash(e,a,r);return new p(i).decryptBlock(n,!1,new Uint8Array(16))}getUserKey(e,t,r){const n=new Uint8Array(e.length+8);n.set(e,0),n.set(t,e.length);const a=this._hash(e,n,[]);return new p(a).decryptBlock(r,!1,new Uint8Array(16))}}t.PDF20=b;class y{constructor(e,t){this.StringCipherConstructor=e,this.StreamCipherConstructor=t}createStream(e,t){const r=new this.StreamCipherConstructor;return new i.DecryptStream(e,t,(function(e,t){return r.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let r=(0,n.stringToBytes)(e);return r=t.decryptBlock(r,!0),(0,n.bytesToString)(r)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof f){const r=16-e.length%16;e+=String.fromCharCode(r).repeat(r);const a=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(a);else for(let e=0;e<16;e++)a[e]=Math.floor(256*Math.random());let i=(0,n.stringToBytes)(e);i=t.encrypt(i,a);const s=new Uint8Array(16+i.length);return s.set(a),s.set(i,16),(0,n.bytesToString)(s)}let r=(0,n.stringToBytes)(e);return r=t.encrypt(r),(0,n.bytesToString)(r)}}const w=function(){const 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,c,l,h){const u=40+n.length+t.length,d=new Uint8Array(u);let f,g,p=0;if(r)for(g=Math.min(32,r.length);p>8&255,d[p++]=i>>16&255,d[p++]=i>>>24&255,f=0,g=t.length;f=4&&!h&&(d[p++]=255,d[p++]=255,d[p++]=255,d[p++]=255);let m=o(d,0,p);const b=l>>3;if(c>=3)for(f=0;f<50;++f)m=o(m,0,b);const y=m.subarray(0,b);let w,v;if(c>=3){for(p=0;p<32;++p)d[p]=e[p];for(f=0,g=t.length;f3&&void 0!==arguments[3]&&arguments[3];const a=new Uint8Array(r.length+9),i=r.length;let s;for(s=0;s>8&255,a[s++]=e>>16&255,a[s++]=255&t,a[s++]=t>>8&255,n&&(a[s++]=115,a[s++]=65,a[s++]=108,a[s++]=84),o(a,0,s).subarray(0,Math.min(r.length+5,16))}function c(e,t,r,o,c){if(!(t instanceof a.Name))throw new n.FormatError("Invalid crypt filter name.");const l=e.get(t.name);let h;if(null!=l&&(h=l.get("CFM")),!h||"None"===h.name)return function(){return new d};if("V2"===h.name)return function(){return new s(i(r,o,c,!1))};if("AESV2"===h.name)return function(){return new g(i(r,o,c,!0))};if("AESV3"===h.name)return function(){return new p(c)};throw new n.FormatError("Unknown crypto method")}return class{constructor(i,c,l){const h=i.get("Filter");if(!(0,a.isName)(h,"Standard"))throw new n.FormatError("unknown encryption method");this.filterName=h.name,this.dict=i;const u=i.get("V");if(!Number.isInteger(u)||1!==u&&2!==u&&4!==u&&5!==u)throw new n.FormatError("unsupported encryption algorithm");this.algorithm=u;let d=i.get("Length");if(!d)if(u<=3)d=40;else{const e=i.get("CF"),t=i.get("StmF");if(e instanceof a.Dict&&t instanceof a.Name){e.suppressEncryption=!0;const r=e.get(t.name);d=(null==r?void 0:r.get("Length"))||128,d<40&&(d<<=3)}}if(!Number.isInteger(d)||d<40||d%8!=0)throw new n.FormatError("invalid key length");const f=(0,n.stringToBytes)(i.get("O")),g=(0,n.stringToBytes)(i.get("U")),p=f.subarray(0,32),y=g.subarray(0,32),w=i.get("P"),v=i.get("R"),x=(4===u||5===u)&&!1!==i.get("EncryptMetadata");this.encryptMetadata=x;const S=(0,n.stringToBytes)(c);let A,k;if(l){if(6===v)try{l=(0,n.utf8StringToString)(l)}catch(e){(0,n.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password.")}A=(0,n.stringToBytes)(l)}if(5!==u)k=t(S,A,p,y,w,v,d,x);else{const e=f.subarray(32,40),t=f.subarray(40,48),r=g.subarray(0,48),a=g.subarray(32,40),s=g.subarray(40,48),o=(0,n.stringToBytes)(i.get("OE")),c=(0,n.stringToBytes)(i.get("UE"));(0,n.stringToBytes)(i.get("Perms")),k=function(e,t,r,n,a,i,s,o,c,l,h,u){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const d=6===e?new b:new m;return d.checkUserPassword(t,o,s)?d.getUserKey(t,c,h):t.length&&d.checkOwnerPassword(t,n,i,r)?d.getOwnerKey(t,a,i,l):null}(v,A,p,e,t,r,y,a,s,o,c)}if(!k&&!l)throw new n.PasswordException("No password given",n.PasswordResponses.NEED_PASSWORD);if(!k&&l){const r=function(t,r,n,a){const i=new Uint8Array(32);let c=0;const l=Math.min(32,t.length);for(;c>3;if(n>=3)for(h=0;h<50;++h)u=o(u,0,u.length);let f,g;if(n>=3){g=r;const e=new Uint8Array(d);for(h=19;h>=0;h--){for(let t=0;t=4){const e=i.get("CF");e instanceof a.Dict&&(e.suppressEncryption=!0),this.cf=e,this.stmf=i.get("StmF")||r,this.strf=i.get("StrF")||r,this.eff=i.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new y(c(this.cf,this.strf,e,t,this.encryptionKey),c(this.cf,this.stmf,e,t,this.encryptionKey));const r=i(e,t,this.encryptionKey,!1),n=function(){return new s(r)};return new y(n,n)}}}();t.CipherTransformFactory=w},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DecryptStream=void 0;var n=r(168);class a extends n.DecodeStream{constructor(e,t,r){super(t),this.str=e,this.dict=e.dict,this.decrypt=r,this.nextChunk=null,this.initialized=!1}readBlock(){var e;let t;if(this.initialized?t=this.nextChunk:(t=this.str.getBytes(512),this.initialized=!0),!t||0===t.length)return void(this.eof=!0);this.nextChunk=this.str.getBytes(512);const r=(null===(e=this.nextChunk)||void 0===e?void 0:e.length)>0;t=(0,this.decrypt)(t,!r);const n=this.bufferLength,a=n+t.length;this.ensureBuffer(a).set(t,n),this.bufferLength=a}}t.DecryptStream=a},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Catalog=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var n=r(149),a=r(144),i=r(150),s=r(221),o=r(151),c=r(222),l=r(162),h=r(223),u=r(209),d=r(224),f=r(225);function g(e){return e instanceof i.Dict&&(e=e.get("D")),Array.isArray(e)?e:null}class p{constructor(e,t){if(this.pdfManager=e,this.xref=t,this._catDict=t.getCatalogObj(),!(this._catDict instanceof i.Dict))throw new a.FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict,this._actualNumPages=null,this.fontCache=new i.RefSetCache,this.builtInCMapCache=new Map,this.standardFontDataCache=new Map,this.globalImageCache=new u.GlobalImageCache,this.pageKidsCountCache=new i.RefSetCache,this.pageIndexCache=new i.RefSetCache,this.nonBlendModesSet=new i.RefSet,this.systemFontCache=new Map}get version(){const e=this._catDict.get("Version");if(e instanceof i.Name){if(n.PDF_VERSION_REGEXP.test(e.name))return(0,a.shadow)(this,"version",e.name);(0,a.warn)("Invalid PDF catalog version: ".concat(e.name))}return(0,a.shadow)(this,"version",null)}get lang(){const e=this._catDict.get("Lang");return(0,a.shadow)(this,"lang","string"==typeof e?(0,a.stringToPDFString)(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return(0,a.shadow)(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof i.Dict&&t.size>0&&(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)}get acroForm(){let e=null;try{const 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)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return(0,a.shadow)(this,"acroFormRef",e instanceof i.Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof i.Ref))return(0,a.shadow)(this,"metadata",null);let t=null;try{var r;const n=this.xref.fetch(e,!(null!==(r=this.xref.encrypt)&&void 0!==r&&r.encryptMetadata));if(n instanceof o.BaseStream&&n.dict instanceof i.Dict){const e=n.dict.get("Type"),r=n.dict.get("Subtype");if((0,i.isName)(e,"Metadata")&&(0,i.isName)(r,"XML")){const e=(0,a.stringToUTF8String)(n.getString());e&&(t=new d.MetadataParser(e).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)}get markInfo(){let 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)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof i.Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const r in t){const n=e.get(r);"boolean"==typeof n&&(t[r]=n)}return t}get structTreeRoot(){let 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)}_readStructTreeRoot(){const e=this._catDict.get("StructTreeRoot");if(!(e instanceof i.Dict))return null;const t=new f.StructTreeRoot(e);return t.init(),t}get toplevelPagesDict(){const 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)}get documentOutline(){let 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)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof i.Dict))return null;if(e=e.getRaw("First"),!(e instanceof i.Ref))return null;const t={items:[]},r=[{obj:e,parent:t}],n=new i.RefSet;n.put(e);const s=this.xref,o=new Uint8ClampedArray(3);for(;r.length>0;){const t=r.shift(),c=s.fetchIfRef(t.obj);if(null===c)continue;if(!c.has("Title"))throw new a.FormatError("Invalid outline item encountered.");const h={url:null,dest:null,action:null};p.parseDestDictionary({destDict:c,resultObj:h,docBaseUrl:this.pdfManager.docBaseUrl,docAttachments:this.attachments});const u=c.get("Title"),d=c.get("F")||0,f=c.getArray("C"),g=c.get("Count");let m=o;!Array.isArray(f)||3!==f.length||0===f[0]&&0===f[1]&&0===f[2]||(m=l.ColorSpace.singletons.rgb.getRgb(f,0));const b={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)(u),color:m,count:Number.isInteger(g)?g:void 0,bold:!!(2&d),italic:!!(1&d),items:[]};t.parent.items.push(b),e=c.getRaw("First"),e instanceof i.Ref&&!n.has(e)&&(r.push({obj:e,parent:b}),n.put(e)),e=c.getRaw("Next"),e instanceof i.Ref&&!n.has(e)&&(r.push({obj:e,parent:t.parent}),n.put(e))}return t.items.length>0?t.items:null}get permissions(){let 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)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof i.Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const r=[];for(const e in a.PermissionFlag){const n=a.PermissionFlag[e];t&n&&r.push(n)}return r}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return(0,a.shadow)(this,"optionalContentConfig",null);const r=t.get("D");if(!r)return(0,a.shadow)(this,"optionalContentConfig",null);const n=t.get("OCGs");if(!Array.isArray(n))return(0,a.shadow)(this,"optionalContentConfig",null);const s=[],o=[];for(const e of n){if(!(e instanceof i.Ref))continue;o.push(e);const t=this.xref.fetchIfRef(e);s.push({id:e.toString(),name:"string"==typeof t.get("Name")?(0,a.stringToPDFString)(t.get("Name")):null,intent:"string"==typeof t.get("Intent")?(0,a.stringToPDFString)(t.get("Intent")):null})}e=this._readOptionalContentConfig(r,o),e.groups=s}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)}_readOptionalContentConfig(e,t){function r(e){const r=[];if(Array.isArray(e))for(const n of e)n instanceof i.Ref&&t.includes(n)&&r.push(n.toString());return r}function n(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!Array.isArray(e))return null;const n=[];for(const a of e){if(a instanceof i.Ref&&t.includes(a)){c.put(a),n.push(a.toString());continue}const e=s(a,r);e&&n.push(e)}if(r>0)return n;const a=[];for(const e of t)c.has(e)||a.push(e.toString());return a.length&&n.push({name:null,order:a}),n}function s(e,t){if(++t>l)return(0,a.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS."),null;const r=o.fetchIfRef(e);if(!Array.isArray(r))return null;const i=o.fetchIfRef(r[0]);if("string"!=typeof i)return null;const s=n(r.slice(1),t);return s&&s.length?{name:(0,a.stringToPDFString)(i),order:s}:null}const o=this.xref,c=new i.RefSet,l=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}}setActualNumPages(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const 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)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof s.NameTree)for(const[r,n]of e.getAll()){const e=g(n);e&&(t[(0,a.stringToPDFString)(r)]=e)}else e instanceof i.Dict&&e.forEach((function(e,r){const n=g(r);n&&(t[e]=n)}));return(0,a.shadow)(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof s.NameTree){const r=g(t.get(e));if(r)return r;const 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){const r=g(t.get(e));if(r)return r}return null}_readDests(){const e=this._catDict.get("Names");return null!=e&&e.has("Dests")?new s.NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let 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)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let r=null,o="";const c=new s.NumberTree(e,this.xref).getAll();let l="",h=1;for(let e=0,s=this.numPages;e=1))throw new a.FormatError("Invalid start in PageLabel dictionary.");h=e}else h=1}switch(r){case"D":l=h;break;case"R":case"r":l=(0,n.toRomanNumerals)(h,"r"===r);break;case"A":case"a":const e=26,t="a"===r?97:65,i=h-1;l=String.fromCharCode(t+i%e).repeat(Math.floor(i/e)+1);break;default:if(r)throw new a.FormatError('Invalid style "'.concat(r,'" in PageLabel dictionary.'));l=""}t[e]=o+l,h++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let 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)}get pageMode(){const e=this._catDict.get("PageMode");let 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)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof i.Dict))return(0,a.shadow)(this,"viewerPreferences",null);let t=null;for(const r of e.getKeys()){const n=e.get(r);let s;switch(r){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof n&&(s=n);break;case"NonFullScreenPageMode":if(n instanceof i.Name)switch(n.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":s=n.name;break;default:s="UseNone"}break;case"Direction":if(n instanceof i.Name)switch(n.name){case"L2R":case"R2L":s=n.name;break;default:s="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(n instanceof i.Name)switch(n.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":s=n.name;break;default:s="CropBox"}break;case"PrintScaling":if(n instanceof i.Name)switch(n.name){case"None":case"AppDefault":s=n.name;break;default:s="AppDefault"}break;case"Duplex":if(n instanceof i.Name)switch(n.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":s=n.name;break;default:s="None"}break;case"PrintPageRange":Array.isArray(n)&&n.length%2==0&&n.every(((e,t,r)=>Number.isInteger(e)&&e>0&&(0===t||e>=r[t-1])&&e<=this.numPages))&&(s=n);break;case"NumCopies":Number.isInteger(n)&&n>0&&(s=n);break;default:(0,a.warn)("Ignoring non-standard key in ViewerPreferences: ".concat(r,"."));continue}void 0!==s?(t||(t=Object.create(null)),t[r]=s):(0,a.warn)('Bad value, for key "'.concat(r,'", in ViewerPreferences: ').concat(n,"."))}return(0,a.shadow)(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof i.Dict){const r=new i.Dict(this.xref);r.set("A",e);const n={url:null,dest:null,action:null};p.parseDestDictionary({destDict:r,resultObj:n}),Array.isArray(n.dest)?t.dest=n.dest:n.action&&(t.action=n.action)}else Array.isArray(e)&&(t.dest=e);return(0,a.shadow)(this,"openAction",(0,a.objectSize)(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("EmbeddedFiles")){const r=new s.NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,n]of r.getAll()){const r=new h.FileSpec(n,this.xref);t||(t=Object.create(null)),t[(0,a.stringToPDFString)(e)]=r.serializable}}return(0,a.shadow)(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("XFAImages")){const r=new s.NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,n]of r.getAll())t||(t=new i.Dict(this.xref)),t.set((0,a.stringToPDFString)(e),n)}return(0,a.shadow)(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function r(e,r){if(!(r instanceof i.Dict))return;if(!(0,i.isName)(r.get("S"),"JavaScript"))return;let n=r.get("JS");if(n instanceof o.BaseStream)n=n.getString();else if("string"!=typeof n)return;n=(0,a.stringToPDFString)(n).replaceAll("\\0",""),(t||(t=new Map)).set(e,n)}if(e instanceof i.Dict&&e.has("JavaScript")){const t=new s.NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,n]of t.getAll())r((0,a.stringToPDFString)(e),n)}const n=this._catDict.get("OpenAction");return n&&r("OpenAction",n),t}get javaScript(){const e=this._collectJavaScript();return(0,a.shadow)(this,"javaScript",e?[...e.values()]:null)}get jsActions(){const e=this._collectJavaScript();let t=(0,n.collectActions)(this.xref,this._catDict,a.DocumentActionEventType);if(e){t||(t=Object.create(null));for(const[r,n]of e)r in t?t[r].push(n):t[r]=[n]}return(0,a.shadow)(this,"jsActions",t)}async fontFallback(e,t){const r=await Promise.all(this.fontCache);for(const n of r)if(n.loadedName===e)return void n.fallback(t)}async cleanup(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];(0,c.clearGlobalCaches)(),this.globalImageCache.clear(e),this.pageKidsCountCache.clear(),this.pageIndexCache.clear(),this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear(),this.builtInCMapCache.clear(),this.standardFontDataCache.clear(),this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],r=new i.RefSet,n=this._catDict.getRaw("Pages");n instanceof i.Ref&&r.put(n);const s=this.xref,o=this.pageKidsCountCache,c=this.pageIndexCache;let l=0;for(;t.length;){const n=t.pop();if(n instanceof i.Ref){const h=o.get(n);if(h>=0&&l+h<=e){l+=h;continue}if(r.has(n))throw new a.FormatError("Pages tree contains circular reference.");r.put(n);const u=await s.fetchAsync(n);if(u instanceof i.Dict){let t=u.getRaw("Type");if(t instanceof i.Ref&&(t=await s.fetchAsync(t)),(0,i.isName)(t,"Page")||!u.has("Kids")){if(o.has(n)||o.put(n,1),c.has(n)||c.put(n,l),l===e)return[u,n];l++;continue}}t.push(u);continue}if(!(n instanceof i.Dict))throw new a.FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:h}=n;let u=n.getRaw("Count");if(u instanceof i.Ref&&(u=await s.fetchAsync(u)),Number.isInteger(u)&&u>=0&&(h&&!o.has(h)&&o.put(h,u),l+u<=e)){l+=u;continue}let d=n.getRaw("Kids");if(d instanceof i.Ref&&(d=await s.fetchAsync(d)),!Array.isArray(d)){let t=n.getRaw("Type");if(t instanceof i.Ref&&(t=await s.fetchAsync(t)),(0,i.isName)(t,"Page")||!n.has("Kids")){if(l===e)return[n,null];l++;continue}throw new a.FormatError("Page dictionary kids object is not an array.")}for(let e=d.length-1;e>=0;e--)t.push(d[e])}throw new Error("Page index ".concat(e," not found."))}async getAllPageDicts(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,r=[{currentNode:this.toplevelPagesDict,posInKids:0}],s=new i.RefSet,o=this._catDict.getRaw("Pages");o instanceof i.Ref&&s.put(o);const c=new Map,l=this.xref,h=this.pageIndexCache;let u=0;function d(e,t){t&&!h.has(t)&&h.put(t,u),c.set(u++,[e,t])}function f(r){if(r instanceof n.XRefEntryException&&!e)throw r;e&&t&&0===u&&((0,a.warn)('getAllPageDicts - Skipping invalid first page: "'.concat(r,'".')),r=i.Dict.empty),c.set(u++,[r,null])}for(;r.length>0;){const t=r.at(-1),{currentNode:n,posInKids:o}=t;let c=n.getRaw("Kids");if(c instanceof i.Ref)try{c=await l.fetchAsync(c)}catch(e){f(e);break}if(!Array.isArray(c)){f(new a.FormatError("Page dictionary kids object is not an array."));break}if(o>=c.length){r.pop();continue}const h=c[o];let u;if(h instanceof i.Ref){if(s.has(h)){f(new a.FormatError("Pages tree contains circular reference."));break}s.put(h);try{u=await l.fetchAsync(h)}catch(e){f(e);break}}else u=h;if(!(u instanceof i.Dict)){f(new a.FormatError("Page dictionary kid reference points to wrong type of object."));break}let g=u.getRaw("Type");if(g instanceof i.Ref)try{g=await l.fetchAsync(g)}catch(e){f(e);break}(0,i.isName)(g,"Page")||!u.has("Kids")?d(u,h instanceof i.Ref?h:null):r.push({currentNode:u,posInKids:0}),t.posInKids++}return c}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const r=this.xref;let n=0;const s=t=>function(t){let n,s=0;return r.fetchAsync(t).then((function(r){if((0,i.isRefsEqual)(t,e)&&!(0,i.isDict)(r,"Page")&&!(r instanceof i.Dict&&!r.has("Type")&&r.has("Contents")))throw new a.FormatError("The reference does not point to a /Page dictionary.");if(!r)return null;if(!(r instanceof i.Dict))throw new a.FormatError("Node must be a dictionary.");return n=r.getRaw("Parent"),r.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;const o=[];let c=!1;for(const n of e){if(!(n instanceof i.Ref))throw new a.FormatError("Kid must be a reference.");if((0,i.isRefsEqual)(n,t)){c=!0;break}o.push(r.fetchAsync(n).then((function(e){if(!(e instanceof i.Dict))throw new a.FormatError("Kid node must be a dictionary.");e.has("Count")?s+=e.get("Count"):s++})))}if(!c)throw new a.FormatError("Kid reference not found in parent's kids.");return Promise.all(o).then((function(){return[s,n]}))}))}(t).then((t=>{if(!t)return this.pageIndexCache.put(e,n),n;const[r,a]=t;return n+=r,s(a)}));return s(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof i.Dict){const t=e.get("Base");if("string"==typeof t){const e=(0,a.createValidAbsoluteUrl)(t,null,{tryConvertEncoding:!0});if(e)return(0,a.shadow)(this,"baseUrl",e.href)}}return(0,a.shadow)(this,"baseUrl",null)}static parseDestDictionary(e){const t=e.destDict;if(!(t instanceof i.Dict))return void(0,a.warn)("parseDestDictionary: \`destDict\` must be a dictionary.");const r=e.resultObj;if("object"!=typeof r)return void(0,a.warn)("parseDestDictionary: \`resultObj\` must be an object.");const s=e.docBaseUrl||null,c=e.docAttachments||null;let l,h,u=t.get("A");if(u instanceof i.Dict||(t.has("Dest")?u=t.get("Dest"):(u=t.get("AA"),u instanceof i.Dict&&(u.has("D")?u=u.get("D"):u.has("U")&&(u=u.get("U"))))),u instanceof i.Dict){const e=u.get("S");if(!(e instanceof i.Name))return void(0,a.warn)("parseDestDictionary: Invalid type in Action dictionary.");const t=e.name;switch(t){case"ResetForm":const e=u.get("Flags"),s=0==(1&("number"==typeof e?e:0)),d=[],f=[];for(const e of u.get("Fields")||[])e instanceof i.Ref?f.push(e.toString()):"string"==typeof e&&d.push((0,a.stringToPDFString)(e));r.resetForm={fields:d,refs:f,include:s};break;case"URI":l=u.get("URI"),l instanceof i.Name&&(l="/"+l.name);break;case"GoTo":h=u.get("D");break;case"Launch":case"GoToR":const g=u.get("F");g instanceof i.Dict?l=g.get("F")||null:"string"==typeof g&&(l=g);let p=u.get("D");if(p&&(p instanceof i.Name&&(p=p.name),"string"==typeof l)){const e=l.split("#")[0];"string"==typeof p?l=e+"#"+p:Array.isArray(p)&&(l=e+"#"+JSON.stringify(p))}const m=u.get("NewWindow");"boolean"==typeof m&&(r.newWindow=m);break;case"GoToE":const b=u.get("T");let y;if(c&&b instanceof i.Dict){const e=b.get("R"),t=b.get("N");(0,i.isName)(e,"C")&&"string"==typeof t&&(y=c[(0,a.stringToPDFString)(t)])}y?r.attachment=y:(0,a.warn)('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const w=u.get("N");w instanceof i.Name&&(r.action=w.name);break;case"SetOCGState":const v=u.get("State"),x=u.get("PreserveRB");if(!Array.isArray(v)||0===v.length)break;const S=[];for(const e of v)if(e instanceof i.Name)switch(e.name){case"ON":case"OFF":case"Toggle":S.push(e.name)}else e instanceof i.Ref&&S.push(e.toString());if(S.length!==v.length)break;r.setOCGState={state:S,preserveRB:"boolean"!=typeof x||x};break;case"JavaScript":const A=u.get("JS");let k;A instanceof o.BaseStream?k=A.getString():"string"==typeof A&&(k=A);const C=k&&(0,n.recoverJsURL)((0,a.stringToPDFString)(k));if(C){l=C.url,r.newWindow=C.newWindow;break}default:if("JavaScript"===t||"SubmitForm"===t)break;(0,a.warn)('parseDestDictionary - unsupported action: "'.concat(t,'".'))}}else t.has("Dest")&&(h=t.get("Dest"));if("string"==typeof l){const e=(0,a.createValidAbsoluteUrl)(l,s,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(r.url=e.href),r.unsafeUrl=l}h&&(h instanceof i.Name&&(h=h.name),"string"==typeof h?r.dest=(0,a.stringToPDFString)(h):Array.isArray(h)&&(r.dest=h))}}t.Catalog=p},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NumberTree=t.NameTree=void 0,r(139);var n=r(150),a=r(144);class i{constructor(e,t,r){this.constructor===i&&(0,a.unreachable)("Cannot initialize NameOrNumberTree."),this.root=e,this.xref=t,this._type=r}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,r=new n.RefSet;r.put(this.root);const i=[this.root];for(;i.length>0;){const s=t.fetchIfRef(i.shift());if(!(s instanceof n.Dict))continue;if(s.has("Kids")){const e=s.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(r.has(t))throw new a.FormatError('Duplicate entry in "'.concat(this._type,'" tree.'));i.push(t),r.put(t)}continue}const o=s.get(this._type);if(Array.isArray(o))for(let r=0,n=o.length;r10)return(0,a.warn)('Search depth limit reached for "'.concat(this._type,'" tree.')),null;const i=r.get("Kids");if(!Array.isArray(i))return null;let s=0,o=i.length-1;for(;s<=o;){const n=s+o>>1,a=t.fetchIfRef(i[n]),c=a.get("Limits");if(et.fetchIfRef(c[1]))){r=a;break}s=n+1}}if(s>o)return null}const i=r.get(this._type);if(Array.isArray(i)){let r=0,n=i.length-2;for(;r<=n;){const a=r+n>>1,s=a+(1&a),o=t.fetchIfRef(i[s]);if(eo))return t.fetchIfRef(i[s+1]);r=s+2}}}return null}}t.NameTree=class extends i{constructor(e,t){super(e,t,"Names")}},t.NumberTree=class extends i{constructor(e,t){super(e,t,"Nums")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.clearGlobalCaches=function(){(0,n.clearPrimitiveCaches)(),(0,a.clearUnicodeCaches)()};var n=r(150),a=r(190)},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FileSpec=void 0;var n=r(144),a=r(151),i=r(150);function s(e){return e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null}t.FileSpec=class{constructor(e,t){e instanceof i.Dict&&(this.xref=t,this.root=e,e.has("FS")&&(this.fs=e.get("FS")),this.description=e.has("Desc")?(0,n.stringToPDFString)(e.get("Desc")):"",e.has("RF")&&(0,n.warn)("Related file specifications are not supported"),this.contentAvailable=!0,e.has("EF")||(this.contentAvailable=!1,(0,n.warn)("Non-embedded file specifications are not supported")))}get filename(){if(!this._filename&&this.root){const e=s(this.root)||"unnamed";this._filename=(0,n.stringToPDFString)(e).replaceAll("\\\\\\\\","\\\\").replaceAll("\\\\/","/").replaceAll("\\\\","/")}return this._filename}get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=s(this.root.get("EF")));let e=null;if(this.contentRef){const t=this.xref.fetchIfRef(this.contentRef);t instanceof a.BaseStream?e=t.getBytes():(0,n.warn)("Embedded file specification points to non-existing/invalid content")}else(0,n.warn)("Embedded file specification does not have a content");return e}get serializable(){return{filename:this.filename,content:this.content}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataParser=void 0,r(2),r(139);var n=r(217);t.MetadataParser=class{constructor(e){e=this._repair(e);const t=new n.SimpleXMLParser({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map,this._data=e,t&&this._parse(t)}_repair(e){return e.replace(/^[^<]+/,"").replaceAll(/>\\\\376\\\\377([^<]+)/g,(function(e,t){const r=t.replaceAll(/\\\\([0-3])([0-7])([0-7])/g,(function(e,t,r,n){return String.fromCharCode(64*t+8*r+1*n)})).replaceAll(/&(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=[">"];for(let e=0,t=r.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?n.push(String.fromCharCode(t)):n.push("&#x"+(65536+t).toString(16).substring(1)+";")}return n.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,r=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,r.map((e=>e.textContent.trim())))}_parse(e){let 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())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StructTreeRoot=t.StructTreePage=void 0,r(139);var n=r(150),a=r(144),i=r(221);const s="PAGE_CONTENT",o="STREAM_CONTENT",c="OBJECT",l="ELEMENT";t.StructTreeRoot=class{constructor(e){this.dict=e,this.roleMap=new Map}init(){this.readRoleMap()}readRoleMap(){const e=this.dict.get("RoleMap");e instanceof n.Dict&&e.forEach(((e,t)=>{t instanceof n.Name&&this.roleMap.set(e,t.name)}))}};class h{constructor(e,t){this.tree=e,this.dict=t,this.kids=[],this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof n.Name?e.name:"",{root:r}=this.tree;return r.roleMap.has(t)?r.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof n.Ref&&(e=t.toString());const r=this.dict.get("K");if(Array.isArray(r))for(const t of r){const r=this.parseKid(e,t);r&&this.kids.push(r)}else{const t=this.parseKid(e,r);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new u({type:s,mcid:t,pageObjId:e});let r=null;if(t instanceof n.Ref?r=this.dict.xref.fetch(t):t instanceof n.Dict&&(r=t),!r)return null;const a=r.getRaw("Pg");a instanceof n.Ref&&(e=a.toString());const i=r.get("Type")instanceof n.Name?r.get("Type").name:null;return"MCR"===i?this.tree.pageDict.objId!==e?null:new u({type:o,refObjId:r.getRaw("Stm")instanceof n.Ref?r.getRaw("Stm").toString():null,pageObjId:e,mcid:r.get("MCID")}):"OBJR"===i?this.tree.pageDict.objId!==e?null:new u({type:c,refObjId:r.getRaw("Obj")instanceof n.Ref?r.getRaw("Obj").toString():null,pageObjId:e}):new u({type:l,dict:r})}}class u{constructor(e){let{type:t,dict:r=null,mcid:n=null,pageObjId:a=null,refObjId:i=null}=e;this.type=t,this.dict=r,this.mcid=n,this.pageObjId=a,this.refObjId=i,this.parentNode=null}}t.StructTreePage=class{constructor(e,t){this.root=e,this.rootDict=e?e.dict:null,this.pageDict=t,this.nodes=[]}parse(){if(!this.root||!this.rootDict)return;const e=this.rootDict.get("ParentTree");if(!e)return;const t=this.pageDict.get("StructParents");if(!Number.isInteger(t))return;const r=new i.NumberTree(e,this.rootDict.xref).get(t);if(!Array.isArray(r))return;const a=new Map;for(const e of r)e instanceof n.Ref&&this.addNode(this.rootDict.xref.fetch(e),a)}addNode(e,t){let r=arguments.length>2&&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);const i=new h(this,e);t.set(e,i);const s=e.get("P");if(!s||(0,n.isName)(s.get("Type"),"StructTreeRoot"))return this.addTopLevelNode(e,i)||t.delete(e),i;const o=this.addNode(s,t,r+1);if(!o)return i;let c=!1;for(const t of o.kids)t.type===l&&t.dict===e&&(t.parentNode=i,c=!0);return c||t.delete(e),i}addTopLevelNode(e,t){const 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;let a=!1;for(let n=0;n2&&void 0!==arguments[2]?arguments[2]:0;if(n>40)return void(0,a.warn)("StructTree too deep to be fully serialized.");const i=Object.create(null);i.role=t.role,i.children=[],r.children.push(i);const h=t.dict.get("Alt");"string"==typeof h&&(i.alt=(0,a.stringToPDFString)(h));const u=t.dict.get("Lang");"string"==typeof u&&(i.lang=(0,a.stringToPDFString)(u));for(const r of t.kids){const t=r.type===l?r.parentNode:null;t?e(t,i,n+1):r.type===s||r.type===o?i.children.push({type:"content",id:"p".concat(r.pageObjId,"_mc").concat(r.mcid)}):r.type===c&&i.children.push({type:"object",id:r.refObjId})}}const t=Object.create(null);t.children=[],t.role="Root";for(const r of this.nodes)r&&e(r,t);return t}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectLoader=void 0,r(139);var n=r(150),a=r(151),i=r(149),s=r(144);function o(e,t){if(e instanceof n.Dict)e=e.getRawValues();else if(e instanceof a.BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const i of e)((r=i)instanceof n.Ref||r instanceof n.Dict||r instanceof a.BaseStream||Array.isArray(r))&&t.push(i);var r}t.ObjectLoader=class{constructor(e,t,r){this.dict=e,this.keys=t,this.xref=r,this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new n.RefSet;const r=[];for(const n of e){const e=t.getRaw(n);void 0!==e&&r.push(e)}return this._walk(r)}async _walk(e){const t=[],r=[];for(;e.length;){let c=e.pop();if(c instanceof n.Ref){if(this.refSet.has(c))continue;try{this.refSet.put(c),c=this.xref.fetch(c)}catch(e){if(!(e instanceof i.MissingDataException)){(0,s.warn)('ObjectLoader._walk - requesting all data: "'.concat(e,'".')),this.refSet=null;const{manager:t}=this.xref.stream;return t.requestAllChunks()}t.push(c),r.push({begin:e.begin,end:e.end})}}if(c instanceof a.BaseStream){const e=c.getBaseStreams();if(e){let n=!1;for(const t of e)t.isDataLoaded||(n=!0,r.push({begin:t.start,end:t.end}));n&&t.push(c)}}o(c,e)}if(r.length){await this.xref.stream.manager.requestRanges(r);for(const e of t)e instanceof n.Ref&&this.refSet.remove(e);return this._walk(t)}this.refSet=null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XFAFactory=void 0,r(139);var n=r(228),a=r(229),i=r(242),s=r(238),o=r(237),c=r(144),l=r(243),h=r(253);class u{constructor(e){try{this.root=(new l.XFAParser).parse(u._createDocument(e));const t=new a.Binder(this.root);this.form=t.bind(),this.dataHandler=new i.DataHandler(this.root,t.getData()),this.form[n.$globalData].template=this.form}catch(e){(0,c.warn)("XFA - an error occurred during parsing and binding: ".concat(e))}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[n.$toPages]();return new Promise(((t,r)=>{const n=()=>{try{const r=e.next();r.done?t(r.value):setTimeout(n,0)}catch(e){r(e)}};setTimeout(n,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper(),this.dims=this.pages.children.map((e=>{const{width:t,height:r}=e.attributes.style;return[0,0,parseInt(t),parseInt(r)]}))}catch(e){(0,c.warn)("XFA - an error occurred during layout: ".concat(e))}}getBoundingBox(e){return this.dims[e]}async getNumPages(){return this.pages||await this._createPages(),this.dims.length}setImages(e){this.form[n.$globalData].images=e}setFonts(e){this.form[n.$globalData].fontFinder=new s.FontFinder(e);const t=[];for(let e of this.form[n.$globalData].usedTypefaces)e=(0,o.stripQuotes)(e),this.form[n.$globalData].fontFinder.find(e)||t.push(e);return t.length>0?t:null}appendFonts(e,t){this.form[n.$globalData].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;return this.pages=null,e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new l.XFAParser(h.XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[n.$nodeName])){const e=h.XhtmlNamespace.body({});e[n.$appendChild](t),t=e}const r=t[n.$toHTML]();if(!r.success)return null;const{html:a}=r,{attributes:i}=a;return i&&(i.class&&(i.class=i.class.filter((e=>!e.startsWith("xfa")))),i.dir="auto"),{html:a,str:t[n.$text]()}}catch(e){(0,c.warn)("XFA - an error occurred during parsing of rich text: ".concat(e))}return null}}t.XFAFactory=u},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),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.$lastAttribute=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;const r=Symbol();t.$acceptWhitespace=r;const n=Symbol();t.$addHTML=n;const a=Symbol();t.$appendChild=a;const i=Symbol();t.$childrenToHTML=i;const s=Symbol();t.$clean=s;const o=Symbol();t.$cleanPage=o;const c=Symbol();t.$cleanup=c;const l=Symbol();t.$clone=l;const h=Symbol();t.$consumed=h;const u=Symbol("content");t.$content=u;const d=Symbol("data");t.$data=d;const f=Symbol();t.$dump=f;const g=Symbol("extra");t.$extra=g;const p=Symbol();t.$finalize=p;const m=Symbol();t.$flushHTML=m;const b=Symbol();t.$getAttributeIt=b;const y=Symbol();t.$getAttributes=y;const w=Symbol();t.$getAvailableSpace=w;const v=Symbol();t.$getChildrenByClass=v;const x=Symbol();t.$getChildrenByName=x;const S=Symbol();t.$getChildrenByNameIt=S;const A=Symbol();t.$getDataValue=A;const k=Symbol();t.$getExtra=k;const C=Symbol();t.$getRealChildrenByNameIt=C;const O=Symbol();t.$getChildren=O;const F=Symbol();t.$getContainedChildren=F;const I=Symbol();t.$getNextPage=I;const T=Symbol();t.$getSubformParent=T;const M=Symbol();t.$getParent=M;const E=Symbol();t.$getTemplateRoot=E;const P=Symbol();t.$globalData=P;const R=Symbol();t.$hasSettableValue=R;const N=Symbol();t.$ids=N;const D=Symbol();t.$indexOf=D;const B=Symbol();t.$insertAt=B;const L=Symbol();t.$isCDATAXml=L;const _=Symbol();t.$isBindable=_;const j=Symbol();t.$isDataValue=j;const U=Symbol();t.$isDescendent=U;const $=Symbol();t.$isNsAgnostic=$;const X=Symbol();t.$isSplittable=X;const H=Symbol();t.$isThereMoreWidth=H;const q=Symbol();t.$isTransparent=q;const z=Symbol();t.$isUsable=z;const G=Symbol();t.$lastAttribute=G;const W=Symbol("namespaceId");t.$namespaceId=W;const V=Symbol("nodeName");t.$nodeName=V;const K=Symbol();t.$nsAttributes=K;const Y=Symbol();t.$onChild=Y;const J=Symbol();t.$onChildCheck=J;const Z=Symbol();t.$onText=Z;const Q=Symbol();t.$pushGlyphs=Q;const ee=Symbol();t.$popPara=ee;const te=Symbol();t.$pushPara=te;const re=Symbol();t.$removeChild=re;const ne=Symbol("root");t.$root=ne;const ae=Symbol();t.$resolvePrototypes=ae;const ie=Symbol();t.$searchNode=ie;const se=Symbol();t.$setId=se;const oe=Symbol();t.$setSetAttributes=oe;const ce=Symbol();t.$setValue=ce;const le=Symbol();t.$tabIndex=le;const he=Symbol();t.$text=he;const ue=Symbol();t.$toPages=ue;const de=Symbol();t.$toHTML=de;const fe=Symbol();t.$toString=fe;const ge=Symbol();t.$toStyle=ge;const pe=Symbol("uid");t.$uid=pe},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Binder=void 0,r(139);var n=r(228),a=r(230),i=r(241),s=r(240),o=r(234),c=r(144);const l=o.NamespaceIds.datasets.id;function h(e){const t=new a.Text({});return t[n.$content]=e,t}t.Binder=class{constructor(e){var t;this.root=e,this.datasets=e.datasets,this.data=(null===(t=e.datasets)||void 0===t?void 0:t.data)||new s.XmlObject(o.NamespaceIds.datasets.id,"data"),this.emptyMerge=0===this.data[n.$getChildren]().length,this.root.form=this.form=e.template[n.$clone]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){return this._bindElement(this.form,this.data),this.form}getData(){return this.data}_bindValue(e,t,r){var i;if(e[n.$data]=t,e[n.$hasSettableValue]())if(t[n.$isDataValue]()){const r=t[n.$getDataValue]();e[n.$setValue](h(r))}else if(e instanceof a.Field&&"multiSelect"===(null===(i=e.ui)||void 0===i||null===(i=i.choiceList)||void 0===i?void 0:i.open)){const r=t[n.$getChildren]().map((e=>e[n.$content].trim())).join("\\n");e[n.$setValue](h(r))}else this._isConsumeData()&&(0,c.warn)("XFA - Nodes haven't the same type.");else!t[n.$isDataValue]()||this._isMatchTemplate()?this._bindElement(e,t):(0,c.warn)("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,r,a){var i;if(!e)return null;let s,c;for(let a=0;a<3;a++){for(s=r[n.$getRealChildrenByNameIt](e,!1,!0);c=s.next().value,c;)if(t===c[n.$isDataValue]())return c;if(r[n.$namespaceId]===o.NamespaceIds.datasets.id&&"data"===r[n.$nodeName])break;r=r[n.$getParent]()}return a?(s=this.data[n.$getRealChildrenByNameIt](e,!0,!1),c=s.next().value,c||(s=this.data[n.$getAttributeIt](e,!0),c=s.next().value,null!==(i=c)&&void 0!==i&&i[n.$isDataValue]()?c:null)):null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:r,target:o,connection:l}of e.setProperty.children){if(l)continue;if(!r)continue;const h=(0,i.searchNode)(this.root,t,r,!1,!1);if(!h){(0,c.warn)("XFA - Invalid reference: ".concat(r,"."));continue}const[u]=h;if(!u[n.$isDescendent](this.data)){(0,c.warn)("XFA - Invalid node: must be a data node.");continue}const d=(0,i.searchNode)(this.root,e,o,!1,!1);if(!d){(0,c.warn)("XFA - Invalid target: ".concat(o,"."));continue}const[f]=d;if(!f[n.$isDescendent](e)){(0,c.warn)("XFA - Invalid target: must be a property or subproperty.");continue}const g=f[n.$getParent]();if(f instanceof a.SetProperty||g instanceof a.SetProperty){(0,c.warn)("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(f instanceof a.BindItems||g instanceof a.BindItems){(0,c.warn)("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const p=u[n.$text](),m=f[n.$nodeName];if(f instanceof s.XFAAttribute){const e=Object.create(null);e[m]=p;const t=Reflect.construct(Object.getPrototypeOf(g).constructor,[e]);g[m]=t[m]}else f.hasOwnProperty(n.$content)?(f[n.$data]=u,f[n.$content]=p,f[n.$finalize]()):(0,c.warn)("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[n.$removeChild](t);e.items.clear();const r=new a.Items({}),s=new a.Items({});e[n.$appendChild](r),e.items.push(r),e[n.$appendChild](s),e.items.push(s);for(const{ref:a,labelRef:o,valueRef:l,connection:u}of e.bindItems.children){if(u)continue;if(!a)continue;const e=(0,i.searchNode)(this.root,t,a,!1,!1);if(e)for(const t of e){if(!t[n.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid ref (".concat(a,"): must be a datasets child."));continue}const e=(0,i.searchNode)(this.root,t,o,!0,!1);if(!e){(0,c.warn)("XFA - Invalid label: ".concat(o,"."));continue}const[u]=e;if(!u[n.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid label: must be a datasets child.");continue}const d=(0,i.searchNode)(this.root,t,l,!0,!1);if(!d){(0,c.warn)("XFA - Invalid value: ".concat(l,"."));continue}const[f]=d;if(!f[n.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid value: must be a datasets child.");continue}const g=h(u[n.$text]()),p=h(f[n.$text]());r[n.$appendChild](g),r.text.push(g),s[n.$appendChild](p),s.text.push(p)}else(0,c.warn)("XFA - Invalid reference: ".concat(a,"."))}}_bindOccurrences(e,t,r){let a;if(t.length>1&&(a=e[n.$clone](),a[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)return;const i=e[n.$getParent](),s=e[n.$nodeName],o=i[n.$indexOf](e);for(let e=1,c=t.length;et.name===e.name)).length:r[a].children.length;const o=r[n.$indexOf](e)+1,c=t.initial-i;if(c){const t=e[n.$clone]();t[n.$removeChild](t.occur),t.occur=null,r[a].push(t),r[n.$insertAt](o,t);for(let e=1;e0)this._bindOccurrences(a,[e[0]],null);else if(this.emptyMerge){const e=t[n.$namespaceId]===l?-1:t[n.$namespaceId],r=a[n.$data]=new s.XmlObject(e,a.name||"root");t[n.$appendChild](r),this._bindElement(a,r)}continue}if(!a[n.$isBindable]())continue;let e=!1,o=null,h=null,u=null;if(a.bind){switch(a.bind.match){case"none":this._setAndBind(a,t);continue;case"global":e=!0;break;case"dataRef":if(!a.bind.ref){(0,c.warn)("XFA - ref is empty in node ".concat(a[n.$nodeName],".")),this._setAndBind(a,t);continue}h=a.bind.ref}a.bind.picture&&(o=a.bind.picture[n.$content])}const[d,f]=this._getOccurInfo(a);if(h){if(u=(0,i.searchNode)(this.root,t,h,!0,!1),null===u){if(u=(0,i.createDataNode)(this.data,t,h),!u)continue;this._isConsumeData()&&(u[n.$consumed]=!0),this._setAndBind(a,u);continue}this._isConsumeData()&&(u=u.filter((e=>!e[n.$consumed]))),u.length>f?u=u.slice(0,f):0===u.length&&(u=null),u&&this._isConsumeData()&&u.forEach((e=>{e[n.$consumed]=!0}))}else{if(!a.name){this._setAndBind(a,t);continue}if(this._isConsumeData()){const r=[];for(;r.length0?r:null}else{if(u=t[n.$getRealChildrenByNameIt](a.name,!1,this.emptyMerge).next().value,!u){if(0===d){r.push(a);continue}const e=t[n.$namespaceId]===l?-1:t[n.$namespaceId];u=a[n.$data]=new s.XmlObject(e,a.name),this.emptyMerge&&(u[n.$consumed]=!0),t[n.$appendChild](u),this._setAndBind(a,u);continue}this.emptyMerge&&(u[n.$consumed]=!0),u=[u]}}u?this._bindOccurrences(a,u,o):d>0?this._setAndBind(a,t):r.push(a)}r.forEach((e=>e[n.$getParent]()[n.$removeChild](e)))}}},(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,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(231),r(145),r(147),r(148);var n=r(228),a=r(234),i=r(235),s=r(236),o=r(240),c=r(237),l=r(144),h=r(238),u=r(149),d=r(241);const f=a.NamespaceIds.template.id,g="http://www.w3.org/2000/svg",p=/^H(\\d+)$/,m=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),b=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function y(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[n.$getExtra]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function w(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function v(e,t){if(!e.value){const t=new Nt({});e[n.$appendChild](t),e.value=t}e.value[n.$setValue](t)}function*x(e){for(const t of e[n.$getChildren]())t instanceof vt?yield*t[n.$getContainedChildren]():yield t}function S(e){var t;return"error"===(null===(t=e.validate)||void 0===t?void 0:t.nullTest)}function A(e){for(;e;){if(!e.traversal)return void(e[n.$tabIndex]=e[n.$getParent]()[n.$tabIndex]);if(e[n.$tabIndex])return;let t=null;for(const r of e.traversal[n.$getChildren]())if("next"===r.operation){t=r;break}if(!t||!t.ref)return void(e[n.$tabIndex]=e[n.$getParent]()[n.$tabIndex]);const r=e[n.$getTemplateRoot]();e[n.$tabIndex]=++r[n.$tabIndex];const a=r[n.$searchNode](t.ref,e);if(!a)return;e=a[0]}}function k(e,t){const r=e.assist;if(r){const e=r[n.$toHTML]();e&&(t.title=e);const a=r.role.match(p);if(a){const e="heading",r=a[1];t.role=e,t["aria-level"]=r}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{var a;const r=e[n.$getParent]();"row"===r.layout&&(t.role="TH"===(null===(a=r.assist)||void 0===a?void 0:a.role)?"columnheader":"cell")}}function C(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[n.$content]?t.speak[n.$content]:t.toolTip?t.toolTip[n.$content]:null}function O(e){return c.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function F(e){const t=e[n.$getTemplateRoot]();null===t[n.$extra].firstUnsplittable&&(t[n.$extra].firstUnsplittable=e,t[n.$extra].noLayoutFailure=!0)}function I(e){const t=e[n.$getTemplateRoot]();t[n.$extra].firstUnsplittable===e&&(t[n.$extra].noLayoutFailure=!1)}function T(e){if(e[n.$extra])return!1;if(e[n.$extra]=Object.create(null),"auto"===e.targetType)return!1;const t=e[n.$getTemplateRoot]();let r=null;if(e.target){if(r=t[n.$searchNode](e.target,e[n.$getParent]()),!r)return!1;r=r[0]}const{currentPageArea:a,currentContentArea:i}=t[n.$extra];if("pageArea"===e.targetType)return r instanceof Qe||(r=null),e.startNew?(e[n.$extra].target=r||a,!0):!(!r||r===a||(e[n.$extra].target=r,0));r instanceof ee||(r=null);const s=r&&r[n.$getParent]();let o,c=s;if(e.startNew)if(r){const e=s.contentArea.children,t=e.indexOf(i),n=e.indexOf(r);-1!==t&&te,a[n.$extra].noLayoutFailure=!0;const o=t[n.$toHTML](r);e[n.$addHTML](o.html,o.bbox),a[n.$extra].noLayoutFailure=i,t[n.$getSubformParent]=s}class E extends o.StringObject{constructor(e){super(f,"appearanceFilter"),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class P extends o.XFAObject{constructor(e){super(f,"arc",!0),this.circular=(0,c.getInteger)({data:e.circular,defaultValue:0,validate:e=>1===e}),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.startAngle=(0,c.getFloat)({data:e.startAngle,defaultValue:0,validate:e=>!0}),this.sweepAngle=(0,c.getFloat)({data:e.sweepAngle,defaultValue:360,validate:e=>!0}),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null,this.fill=null}[n.$toHTML](){var e;const t=this.edge||new ue({}),r=t[n.$toStyle](),a=Object.create(null);let i;"visible"===(null===(e=this.fill)||void 0===e?void 0:e.presence)?Object.assign(a,this.fill[n.$toStyle]()):a.fill="transparent",a.strokeWidth=(0,s.measureToString)("visible"===t.presence?t.thickness:0),a.stroke=r.color;const o={xmlns:g,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)i={name:"ellipse",attributes:{xmlns:g,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:a}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,r=this.sweepAngle>180?1:0,[n,s,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];i={name:"path",attributes:{xmlns:g,d:"M ".concat(n," ").concat(s," A 50 50 0 ").concat(r," 0 ").concat(c," ").concat(l),vectorEffect:"non-scaling-stroke",style:a}},Object.assign(o,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const l={name:"svg",children:[i],attributes:o};return w(this[n.$getParent]()[n.$getParent]())?c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[l]}):(l.attributes.style.position="absolute",c.HTMLResult.success(l))}}class R extends o.XFAObject{constructor(e){super(f,"area",!0),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.id=e.id||"",this.name=e.name||"",this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.desc=null,this.extras=null,this.area=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray}*[n.$getContainedChildren](){yield*x(this)}[n.$isTransparent](){return!0}[n.$isBindable](){return!0}[n.$addHTML](e,t){const[r,a,i,s]=t;this[n.$extra].width=Math.max(this[n.$extra].width,r+i),this[n.$extra].height=Math.max(this[n.$extra].height,a+s),this[n.$extra].children.push(e)}[n.$getAvailableSpace](){return this[n.$extra].availableSpace}[n.$toHTML](e){const t=(0,s.toStyle)(this,"position"),r={style:t,id:this[n.$uid],class:["xfaArea"]};(0,s.isPrintOnly)(this)&&r.class.push("xfaPrintOnly"),this.name&&(r.xfaName=this.name);const a=[];this[n.$extra]={children:a,width:0,height:0,availableSpace:e};const 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],c.HTMLResult.FAILURE);t.width=(0,s.measureToString)(this[n.$extra].width),t.height=(0,s.measureToString)(this[n.$extra].height);const o={name:"div",attributes:r,children:a},l=[this.x,this.y,this[n.$extra].width,this[n.$extra].height];return delete this[n.$extra],c.HTMLResult.success(o,l)}}class N extends o.XFAObject{constructor(e){super(f,"assist",!0),this.id=e.id||"",this.role=e.role||"",this.use=e.use||"",this.usehref=e.usehref||"",this.speak=null,this.toolTip=null}[n.$toHTML](){var e;return(null===(e=this.toolTip)||void 0===e?void 0:e[n.$content])||null}}class D extends o.XFAObject{constructor(e){super(f,"barcode",!0),this.charEncoding=(0,c.getKeyword)({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["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}/)}),this.checksum=(0,c.getStringOption)(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]),this.dataColumnCount=(0,c.getInteger)({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0}),this.dataLength=(0,c.getInteger)({data:e.dataLength,defaultValue:-1,validate:e=>e>=0}),this.dataPrep=(0,c.getStringOption)(e.dataPrep,["none","flateCompress"]),this.dataRowCount=(0,c.getInteger)({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0}),this.endChar=e.endChar||"",this.errorCorrectionLevel=(0,c.getInteger)({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8}),this.id=e.id||"",this.moduleHeight=(0,c.getMeasurement)(e.moduleHeight,"5mm"),this.moduleWidth=(0,c.getMeasurement)(e.moduleWidth,"0.25mm"),this.printCheckDigit=(0,c.getInteger)({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e}),this.rowColumnRatio=(0,c.getRatio)(e.rowColumnRatio),this.startChar=e.startChar||"",this.textLocation=(0,c.getStringOption)(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]),this.truncate=(0,c.getInteger)({data:e.truncate,defaultValue:0,validate:e=>1===e}),this.type=(0,c.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"]),this.upsMode=(0,c.getStringOption)(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]),this.use=e.use||"",this.usehref=e.usehref||"",this.wideNarrowRatio=(0,c.getRatio)(e.wideNarrowRatio),this.encrypt=null,this.extras=null}}class B extends o.XFAObject{constructor(e){super(f,"bind",!0),this.match=(0,c.getStringOption)(e.match,["once","dataRef","global","none"]),this.ref=e.ref||"",this.picture=null}}class L extends o.XFAObject{constructor(e){super(f,"bindItems"),this.connection=e.connection||"",this.labelRef=e.labelRef||"",this.ref=e.ref||"",this.valueRef=e.valueRef||""}}t.BindItems=L;class _ extends o.XFAObject{constructor(e){super(f,"bookend"),this.id=e.id||"",this.leader=e.leader||"",this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||""}}class j extends o.Option01{constructor(e){super(f,"boolean"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$toHTML](e){return O(1===this[n.$content]?"1":"0")}}class U extends o.XFAObject{constructor(e){super(f,"border",!0),this.break=(0,c.getStringOption)(e.break,["close","open"]),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new o.XFAObjectArray(4),this.edge=new o.XFAObjectArray(4),this.extras=null,this.fill=null,this.margin=null}[n.$getExtra](){if(!this[n.$extra]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new ue({});for(let r=e.length;r<4;r++)e.push(t)}const t=e.map((e=>e.thickness)),r=[0,0,0,0];this.margin&&(r[0]=this.margin.topInset,r[1]=this.margin.rightInset,r[2]=this.margin.bottomInset,r[3]=this.margin.leftInset),this[n.$extra]={widths:t,insets:r,edges:e}}return this[n.$extra]}[n.$toStyle](){var e;const{edges:t}=this[n.$getExtra](),r=t.map((e=>{const t=e[n.$toStyle]();return t.color||(t.color="#000000"),t})),a=Object.create(null);if(this.margin&&Object.assign(a,this.margin[n.$toStyle]()),"visible"===(null===(e=this.fill)||void 0===e?void 0:e.presence)&&Object.assign(a,this.fill[n.$toStyle]()),this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[n.$toStyle]()));if(2===e.length||3===e.length){const t=e.at(-1);for(let r=e.length;r<4;r++)e.push(t)}a.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":a.borderStyle="";break;case"inactive":a.borderStyle="none";break;default:a.borderStyle=r.map((e=>e.style)).join(" ")}return a.borderWidth=r.map((e=>e.width)).join(" "),a.borderColor=r.map((e=>e.color)).join(" "),a}}class $ extends o.XFAObject{constructor(e){super(f,"break",!0),this.after=(0,c.getStringOption)(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]),this.afterTarget=e.afterTarget||"",this.before=(0,c.getStringOption)(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]),this.beforeTarget=e.beforeTarget||"",this.bookendLeader=e.bookendLeader||"",this.bookendTrailer=e.bookendTrailer||"",this.id=e.id||"",this.overflowLeader=e.overflowLeader||"",this.overflowTarget=e.overflowTarget||"",this.overflowTrailer=e.overflowTrailer||"",this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class X extends o.XFAObject{constructor(e){super(f,"breakAfter",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e}),this.target=e.target||"",this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}}class H extends o.XFAObject{constructor(e){super(f,"breakBefore",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e}),this.target=e.target||"",this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}[n.$toHTML](e){return this[n.$extra]={},c.HTMLResult.FAILURE}}class q extends o.XFAObject{constructor(e){super(f,"button",!0),this.highlight=(0,c.getStringOption)(e.highlight,["inverted","none","outline","push"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$toHTML](e){const t=this[n.$getParent]()[n.$getParent](),r={name:"button",attributes:{id:this[n.$uid],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=(0,u.recoverJsURL)(e.script[n.$content]);if(!t)continue;const a=(0,s.fixURL)(t.url);a&&r.children.push({name:"a",attributes:{id:"link"+this[n.$uid],href:a,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return c.HTMLResult.success(r)}}class z extends o.XFAObject{constructor(e){super(f,"calculate",!0),this.id=e.id||"",this.override=(0,c.getStringOption)(e.override,["disabled","error","ignore","warning"]),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.message=null,this.script=null}}class G extends o.XFAObject{constructor(e){super(f,"caption",!0),this.id=e.id||"",this.placement=(0,c.getStringOption)(e.placement,["left","bottom","inline","right","top"]),this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.reserve=Math.ceil((0,c.getMeasurement)(e.reserve)),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.font=null,this.margin=null,this.para=null,this.value=null}[n.$setValue](e){v(this,e)}[n.$getExtra](e){if(!this[n.$extra]){let{width:t,height:r}=e;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,s.layoutNode)(this,{width:t,height:r})}return this[n.$extra]}[n.$toHTML](e){if(!this.value)return c.HTMLResult.EMPTY;this[n.$pushPara]();const t=this.value[n.$toHTML](e).html;if(!t)return this[n.$popPara](),c.HTMLResult.EMPTY;const r=this.reserve;if(this.reserve<=0){const{w:t,h:r}=this[n.$getExtra](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=r}}const a=[];"string"==typeof t?a.push({name:"#text",value:t}):a.push(t);const i=(0,s.toStyle)(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=(0,s.measureToString)(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=(0,s.measureToString)(this.reserve))}return(0,s.setPara)(this,null,t),this[n.$popPara](),this.reserve=r,c.HTMLResult.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:a})}}class W extends o.StringObject{constructor(e){super(f,"certificate"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class V extends o.XFAObject{constructor(e){super(f,"certificates",!0),this.credentialServerPolicy=(0,c.getStringOption)(e.credentialServerPolicy,["optional","required"]),this.id=e.id||"",this.url=e.url||"",this.urlPolicy=e.urlPolicy||"",this.use=e.use||"",this.usehref=e.usehref||"",this.encryption=null,this.issuers=null,this.keyUsage=null,this.oids=null,this.signing=null,this.subjectDNs=null}}class K extends o.XFAObject{constructor(e){super(f,"checkButton",!0),this.id=e.id||"",this.mark=(0,c.getStringOption)(e.mark,["default","check","circle","cross","diamond","square","star"]),this.shape=(0,c.getStringOption)(e.shape,["square","round"]),this.size=(0,c.getMeasurement)(e.size,"10pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t;const r=(0,s.toStyle)("margin"),a=(0,s.measureToString)(this.size);let i,o,l;r.width=r.height=a;const h=this[n.$getParent]()[n.$getParent](),u=h.items.children.length&&h.items.children[0][n.$toHTML]().html||[],d={on:(void 0!==u[0]?u[0]:"on").toString(),off:(void 0!==u[1]?u[1]:"off").toString()},f=((null===(t=h.value)||void 0===t?void 0:t[n.$text]())||"off")===d.on||void 0,g=h[n.$getSubformParent](),p=h[n.$uid];let m;var b,y;g instanceof Se?(l=g[n.$uid],i="radio",o="xfaRadio",m=(null===(b=g[n.$data])||void 0===b?void 0:b[n.$uid])||g[n.$uid]):(i="checkbox",o="xfaCheckbox",m=(null===(y=h[n.$data])||void 0===y?void 0:y[n.$uid])||h[n.$uid]);const w={name:"input",attributes:{class:[o],style:r,fieldId:p,dataId:m,type:i,checked:f,xfaOn:d.on,xfaOff:d.off,"aria-label":C(h),"aria-required":!1}};return l&&(w.attributes.name=l),S(h)&&(w.attributes["aria-required"]=!0,w.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[w]})}}class Y extends o.XFAObject{constructor(e){super(f,"choiceList",!0),this.commitOn=(0,c.getStringOption)(e.commitOn,["select","exit"]),this.id=e.id||"",this.open=(0,c.getStringOption)(e.open,["userControl","always","multiSelect","onEntry"]),this.textEntry=(0,c.getInteger)({data:e.textEntry,defaultValue:0,validate:e=>1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t,r;const a=(0,s.toStyle)(this,"border","margin"),i=this[n.$getParent]()[n.$getParent](),o={fontSize:"calc(".concat((null===(t=i.font)||void 0===t?void 0:t.size)||10,"px * var(--scale-factor))")},l=[];if(i.items.children.length>0){var h;const e=i.items;let t=0,r=0;2===e.children.length&&(t=e.children[0].save,r=1-t);const a=e.children[t][n.$toHTML]().html,s=e.children[r][n.$toHTML]().html;let c=!1;const u=(null===(h=i.value)||void 0===h?void 0:h[n.$text]())||"";for(let e=0,t=a.length;ee>=0}),this.use=e.use||"",this.usehref=e.usehref||""}}class Q extends o.XFAObject{constructor(e){super(f,"connect",!0),this.connection=e.connection||"",this.id=e.id||"",this.ref=e.ref||"",this.usage=(0,c.getStringOption)(e.usage,["exportAndImport","exportOnly","importOnly"]),this.use=e.use||"",this.usehref=e.usehref||"",this.picture=null}}class ee extends o.XFAObject{constructor(e){super(f,"contentArea",!0),this.h=(0,c.getMeasurement)(e.h),this.id=e.id||"",this.name=e.name||"",this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=(0,c.getMeasurement)(e.w),this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.desc=null,this.extras=null}[n.$toHTML](e){const t={left:(0,s.measureToString)(this.x),top:(0,s.measureToString)(this.y),width:(0,s.measureToString)(this.w),height:(0,s.measureToString)(this.h)},r=["xfaContentarea"];return(0,s.isPrintOnly)(this)&&r.push("xfaPrintOnly"),c.HTMLResult.success({name:"div",children:[],attributes:{style:t,class:r,id:this[n.$uid]}})}}class te extends o.XFAObject{constructor(e){super(f,"corner",!0),this.id=e.id||"",this.inverted=(0,c.getInteger)({data:e.inverted,defaultValue:0,validate:e=>1===e}),this.join=(0,c.getStringOption)(e.join,["square","round"]),this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.radius=(0,c.getMeasurement)(e.radius),this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](){const e=(0,s.toStyle)(this,"visibility");return e.radius=(0,s.measureToString)("square"===this.join?0:this.radius),e}}class re extends o.ContentObject{constructor(e){super(f,"date"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}[n.$toHTML](e){return O(this[n.$content]?this[n.$content].toString():"")}}class ne extends o.ContentObject{constructor(e){super(f,"dateTime"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}[n.$toHTML](e){return O(this[n.$content]?this[n.$content].toString():"")}}class ae extends o.XFAObject{constructor(e){super(f,"dateTimeEdit",!0),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.picker=(0,c.getStringOption)(e.picker,["host","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.comb=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t;const r=(0,s.toStyle)(this,"border","font","margin"),a=this[n.$getParent]()[n.$getParent](),i={name:"input",attributes:{type:"text",fieldId:a[n.$uid],dataId:(null===(t=a[n.$data])||void 0===t?void 0:t[n.$uid])||a[n.$uid],class:["xfaTextfield"],style:r,"aria-label":C(a),"aria-required":!1}};return S(a)&&(i.attributes["aria-required"]=!0,i.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class ie extends o.ContentObject{constructor(e){super(f,"decimal"),this.fracDigits=(0,c.getInteger)({data:e.fracDigits,defaultValue:2,validate:e=>!0}),this.id=e.id||"",this.leadDigits=(0,c.getInteger)({data:e.leadDigits,defaultValue:-1,validate:e=>!0}),this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=parseFloat(this[n.$content].trim());this[n.$content]=isNaN(e)?null:e}[n.$toHTML](e){return O(null!==this[n.$content]?this[n.$content].toString():"")}}class se extends o.XFAObject{constructor(e){super(f,"defaultUi",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class oe extends o.XFAObject{constructor(e){super(f,"desc",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}}class ce extends o.OptionObject{constructor(e){super(f,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class le extends o.XFAObject{constructor(e){super(f,"digestMethods",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.digestMethod=new o.XFAObjectArray}}class he extends o.XFAObject{constructor(e){super(f,"draw",!0),this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.border=null,this.caption=null,this.desc=null,this.extras=null,this.font=null,this.keep=null,this.margin=null,this.para=null,this.traversal=null,this.ui=null,this.value=null,this.setProperty=new o.XFAObjectArray}[n.$setValue](e){v(this,e)}[n.$toHTML](e){if(A(this),"hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this),this[n.$pushPara]();const t=this.w,r=this.h,{w:a,h:o,isBroken:l}=(0,s.layoutNode)(this,e);if(a&&""===this.w){if(l&&this[n.$getSubformParent]()[n.$isThereMoreWidth]())return this[n.$popPara](),c.HTMLResult.FAILURE;this.w=a}if(o&&""===this.h&&(this.h=o),F(this),!(0,i.checkDimensions)(this,e))return this.w=t,this.h=r,this[n.$popPara](),c.HTMLResult.FAILURE;I(this);const h=(0,s.toStyle)(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");(0,s.setMinMaxDimensions)(this,h),h.margin&&(h.padding=h.margin,delete h.margin);const u=["xfaDraw"];this.font&&u.push("xfaFont"),(0,s.isPrintOnly)(this)&&u.push("xfaPrintOnly");const d={style:h,id:this[n.$uid],class:u};this.name&&(d.xfaName=this.name);const f={name:"div",attributes:d,children:[]};k(this,d);const g=(0,s.computeBbox)(this,f,e),p=this.value?this.value[n.$toHTML](e).html:null;return null===p?(this.w=t,this.h=r,this[n.$popPara](),c.HTMLResult.success((0,s.createWrapper)(this,f),g)):(f.children.push(p),(0,s.setPara)(this,h,p),this.w=t,this.h=r,this[n.$popPara](),c.HTMLResult.success((0,s.createWrapper)(this,f),g))}}class ue extends o.XFAObject{constructor(e){super(f,"edge",!0),this.cap=(0,c.getStringOption)(e.cap,["square","butt","round"]),this.id=e.id||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](){const e=(0,s.toStyle)(this,"visibility");if(Object.assign(e,{linecap:this.cap,width:(0,s.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}}class de extends o.OptionObject{constructor(e){super(f,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class fe extends o.XFAObject{constructor(e){super(f,"encodings",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encoding=new o.XFAObjectArray}}class ge extends o.XFAObject{constructor(e){super(f,"encrypt",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=null}}class pe extends o.XFAObject{constructor(e){super(f,"encryptData",!0),this.id=e.id||"",this.operation=(0,c.getStringOption)(e.operation,["encrypt","decrypt"]),this.target=e.target||"",this.use=e.use||"",this.usehref=e.usehref||"",this.filter=null,this.manifest=null}}class me extends o.XFAObject{constructor(e){super(f,"encryption",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new o.XFAObjectArray}}class be extends o.OptionObject{constructor(e){super(f,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class ye extends o.XFAObject{constructor(e){super(f,"encryptionMethods",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encryptionMethod=new o.XFAObjectArray}}class we extends o.XFAObject{constructor(e){super(f,"event",!0),this.activity=(0,c.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"]),this.id=e.id||"",this.listen=(0,c.getStringOption)(e.listen,["refOnly","refAndDescendents"]),this.name=e.name||"",this.ref=e.ref||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.encryptData=null,this.execute=null,this.script=null,this.signData=null,this.submit=null}}class ve extends o.ContentObject{constructor(e){super(f,"exData"),this.contentType=e.contentType||"",this.href=e.href||"",this.id=e.id||"",this.maxLength=(0,c.getInteger)({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1}),this.name=e.name||"",this.rid=e.rid||"",this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["none","base64","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[n.$isCDATAXml](){return"text/html"===this.contentType}[n.$onChild](e){return("text/html"===this.contentType&&e[n.$namespaceId]===a.NamespaceIds.xhtml.id||"text/xml"===this.contentType)&&(this[n.$content]=e,!0)}[n.$toHTML](e){return"text/html"===this.contentType&&this[n.$content]?this[n.$content][n.$toHTML](e):c.HTMLResult.EMPTY}}class xe extends o.XFAObject{constructor(e){super(f,"exObject",!0),this.archive=e.archive||"",this.classId=e.classId||"",this.codeBase=e.codeBase||"",this.codeType=e.codeType||"",this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}}class Se extends o.XFAObject{constructor(e){super(f,"exclGroup",!0),this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]),this.accessKey=e.accessKey||"",this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.bind=null,this.border=null,this.calculate=null,this.caption=null,this.desc=null,this.extras=null,this.margin=null,this.para=null,this.traversal=null,this.validate=null,this.connect=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray}[n.$isBindable](){return!0}[n.$hasSettableValue](){return!0}[n.$setValue](e){for(const t of this.field.children){if(!t.value){const e=new Nt({});t[n.$appendChild](e),t.value=e}t.value[n.$setValue](e)}}[n.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[n.$extra].attempt&&this[n.$extra].numberInLine>0||this[n.$getParent]()[n.$isThereMoreWidth]()}[n.$isSplittable](){var e;const t=this[n.$getSubformParent]();return!!t[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):!(null!==(e=t.layout)&&void 0!==e&&e.endsWith("-tb")&&0!==t[n.$extra].numberInLine||(this[n.$extra]._isSplittable=!0,0)))}[n.$flushHTML](){return(0,i.flushHTML)(this)}[n.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[n.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[n.$toHTML](e){if(A(this),"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],r={id:this[n.$uid],class:[]};(0,s.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});const a=this[n.$isSplittable]();if(a||F(this),!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const o=new Set(["field"]);if(this.layout.includes("row")){const e=this[n.$getSubformParent]().columnWidths;Array.isArray(e)&&e.length>0&&(this[n.$extra].columnWidths=e,this[n.$extra].currentColumn=0)}const l=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),h=["xfaExclgroup"],u=(0,s.layoutClass)(this);u&&h.push(u),(0,s.isPrintOnly)(this)&&h.push("xfaPrintOnly"),r.style=l,r.class=h,this.name&&(r.xfaName=this.name),this[n.$pushPara]();const d="lr-tb"===this.layout||"rl-tb"===this.layout,f=d?2:1;for(;this[n.$extra].attempte>=1||-1===e}),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.bind=null,this.border=null,this.calculate=null,this.caption=null,this.desc=null,this.extras=null,this.font=null,this.format=null,this.items=new o.XFAObjectArray(2),this.keep=null,this.margin=null,this.para=null,this.traversal=null,this.ui=null,this.validate=null,this.value=null,this.bindItems=new o.XFAObjectArray,this.connect=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray}[n.$isBindable](){return!0}[n.$setValue](e){v(this,e)}[n.$toHTML](e){var t,r;if(A(this),!this.ui){let e;switch(this.ui=new Pt({}),this.ui[n.$globalData]=this[n.$globalData],this[n.$appendChild](this.ui),this.items.children.length){case 0:e=new Ot({}),this.ui.textEdit=e;break;case 1:e=new K({}),this.ui.checkButton=e;break;case 2:e=new Y({}),this.ui.choiceList=e}this.ui[n.$appendChild](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;this.caption&&delete this.caption[n.$extra],this[n.$pushPara]();const a=this.caption?this.caption[n.$toHTML](e).html:null,o=this.w,l=this.h;let u=0,d=0;this.margin&&(u=this.margin.leftInset+this.margin.rightInset,d=this.margin.topInset+this.margin.bottomInset);let f=null;if(""===this.w||""===this.h){let t=null,r=null,a=0,i=0;if(this.ui.checkButton)a=i=this.ui.checkButton.size;else{const{w:t,h:r}=(0,s.layoutNode)(this,e);null!==t?(a=t,i=r):i=(0,h.getMetrics)(this.font,!0).lineNoGap}if(f=y(this.ui[n.$getExtra]()),a+=f.w,i+=f.h,this.caption){const{w:s,h:o,isBroken:l}=this.caption[n.$getExtra](e);if(l&&this[n.$getSubformParent]()[n.$isThereMoreWidth]())return this[n.$popPara](),c.HTMLResult.FAILURE;switch(t=s,r=o,this.caption.placement){case"left":case"right":case"inline":t+=a;break;case"top":case"bottom":r+=i}}else t=a,r=i;t&&""===this.w&&(t+=u,this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5}),this.appearanceFilter=null,this.certificates=null,this.digestMethods=null,this.encodings=null,this.encryptionMethods=null,this.handler=null,this.lockDocument=null,this.mdp=null,this.reasons=null,this.timeStamp=null}}class Ie extends o.ContentObject{constructor(e){super(f,"float"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=parseFloat(this[n.$content].trim());this[n.$content]=isNaN(e)?null:e}[n.$toHTML](e){return O(null!==this[n.$content]?this[n.$content].toString():"")}}class Te extends o.XFAObject{constructor(e){super(f,"font",!0),this.baselineShift=(0,c.getMeasurement)(e.baselineShift),this.fontHorizontalScale=(0,c.getFloat)({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0}),this.fontVerticalScale=(0,c.getFloat)({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0}),this.id=e.id||"",this.kerningMode=(0,c.getStringOption)(e.kerningMode,["none","pair"]),this.letterSpacing=(0,c.getMeasurement)(e.letterSpacing,"0"),this.lineThrough=(0,c.getInteger)({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e}),this.lineThroughPeriod=(0,c.getStringOption)(e.lineThroughPeriod,["all","word"]),this.overline=(0,c.getInteger)({data:e.overline,defaultValue:0,validate:e=>1===e||2===e}),this.overlinePeriod=(0,c.getStringOption)(e.overlinePeriod,["all","word"]),this.posture=(0,c.getStringOption)(e.posture,["normal","italic"]),this.size=(0,c.getMeasurement)(e.size,"10pt"),this.typeface=e.typeface||"Courier",this.underline=(0,c.getInteger)({data:e.underline,defaultValue:0,validate:e=>1===e||2===e}),this.underlinePeriod=(0,c.getStringOption)(e.underlinePeriod,["all","word"]),this.use=e.use||"",this.usehref=e.usehref||"",this.weight=(0,c.getStringOption)(e.weight,["normal","bold"]),this.extras=null,this.fill=null}[n.$clean](e){super[n.$clean](e),this[n.$globalData].usedTypefaces.add(this.typeface)}[n.$toStyle](){const e=(0,s.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,s.measureToString)(this.baselineShift)),e.fontKerning="none"===this.kerningMode?"none":"normal",e.letterSpacing=(0,s.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,s.measureToString)(.99*this.size),(0,s.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}}class Me extends o.XFAObject{constructor(e){super(f,"format",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.picture=null}}class Ee extends o.StringObject{constructor(e){super(f,"handler"),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Pe extends o.XFAObject{constructor(e){super(f,"hyphenation"),this.excludeAllCaps=(0,c.getInteger)({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e}),this.excludeInitialCap=(0,c.getInteger)({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e}),this.hyphenate=(0,c.getInteger)({data:e.hyphenate,defaultValue:0,validate:e=>1===e}),this.id=e.id||"",this.pushCharacterCount=(0,c.getInteger)({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0}),this.remainCharacterCount=(0,c.getInteger)({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0}),this.use=e.use||"",this.usehref=e.usehref||"",this.wordCharacterCount=(0,c.getInteger)({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Re extends o.StringObject{constructor(e){super(f,"image"),this.aspect=(0,c.getStringOption)(e.aspect,["fit","actual","height","none","width"]),this.contentType=e.contentType||"",this.href=e.href||"",this.id=e.id||"",this.name=e.name||"",this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["base64","none","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[n.$toHTML](){if(this.contentType&&!m.has(this.contentType.toLowerCase()))return c.HTMLResult.EMPTY;let e=this[n.$globalData].images&&this[n.$globalData].images.get(this.href);if(!e&&(this.href||!this[n.$content]))return c.HTMLResult.EMPTY;if(e||"base64"!==this.transferEncoding||(e=(0,l.stringToBytes)(atob(this[n.$content]))),!e)return c.HTMLResult.EMPTY;if(!this.contentType){for(const[t,r]of b)if(e.length>t.length&&t.every(((t,r)=>t===e[r]))){this.contentType=r;break}if(!this.contentType)return c.HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let r;switch(this.aspect){case"fit":case"actual":break;case"height":r={height:"100%",objectFit:"fill"};break;case"none":r={width:"100%",height:"100%",objectFit:"fill"};break;case"width":r={width:"100%",objectFit:"fill"}}const a=this[n.$getParent]();return c.HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:r,src:URL.createObjectURL(t),alt:a?C(a[n.$getParent]()):null}})}}class Ne extends o.XFAObject{constructor(e){super(f,"imageEdit",!0),this.data=(0,c.getStringOption)(e.data,["link","embed"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[n.$toHTML](e){return"embed"===this.data?c.HTMLResult.success({name:"div",children:[],attributes:{}}):c.HTMLResult.EMPTY}}class De extends o.ContentObject{constructor(e){super(f,"integer"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=parseInt(this[n.$content].trim(),10);this[n.$content]=isNaN(e)?null:e}[n.$toHTML](e){return O(null!==this[n.$content]?this[n.$content].toString():"")}}class Be extends o.XFAObject{constructor(e){super(f,"issuers",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new o.XFAObjectArray}}class Le extends o.XFAObject{constructor(e){super(f,"items",!0),this.id=e.id||"",this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.ref=e.ref||"",this.save=(0,c.getInteger)({data:e.save,defaultValue:0,validate:e=>1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}[n.$toHTML](){const e=[];for(const t of this[n.$getChildren]())e.push(t[n.$text]());return c.HTMLResult.success(e)}}t.Items=Le;class _e extends o.XFAObject{constructor(e){super(f,"keep",!0),this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=(0,c.getStringOption)(e.intact,t),this.next=(0,c.getStringOption)(e.next,t),this.previous=(0,c.getStringOption)(e.previous,t),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class je extends o.XFAObject{constructor(e){super(f,"keyUsage");const t=["","yes","no"];this.crlSign=(0,c.getStringOption)(e.crlSign,t),this.dataEncipherment=(0,c.getStringOption)(e.dataEncipherment,t),this.decipherOnly=(0,c.getStringOption)(e.decipherOnly,t),this.digitalSignature=(0,c.getStringOption)(e.digitalSignature,t),this.encipherOnly=(0,c.getStringOption)(e.encipherOnly,t),this.id=e.id||"",this.keyAgreement=(0,c.getStringOption)(e.keyAgreement,t),this.keyCertSign=(0,c.getStringOption)(e.keyCertSign,t),this.keyEncipherment=(0,c.getStringOption)(e.keyEncipherment,t),this.nonRepudiation=(0,c.getStringOption)(e.nonRepudiation,t),this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Ue extends o.XFAObject{constructor(e){super(f,"line",!0),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.slope=(0,c.getStringOption)(e.slope,["\\\\","/"]),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null}[n.$toHTML](){const e=this[n.$getParent]()[n.$getParent](),t=this.edge||new ue({}),r=t[n.$toStyle](),a=Object.create(null),i="visible"===t.presence?t.thickness:0;a.strokeWidth=(0,s.measureToString)(i),a.stroke=r.color;let o,l,h,u,d="100%",f="100%";e.w<=i?([o,l,h,u]=["50%",0,"50%","100%"],d=a.strokeWidth):e.h<=i?([o,l,h,u]=[0,"50%","100%","50%"],f=a.strokeWidth):"\\\\"===this.slope?[o,l,h,u]=[0,0,"100%","100%"]:[o,l,h,u]=[0,"100%","100%",0];const p={name:"svg",children:[{name:"line",attributes:{xmlns:g,x1:o,y1:l,x2:h,y2:u,style:a}}],attributes:{xmlns:g,width:d,height:f,style:{overflow:"visible"}}};return w(e)?c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[p]}):(p.attributes.style.position="absolute",c.HTMLResult.success(p))}}class $e extends o.XFAObject{constructor(e){super(f,"linear",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["toRight","toBottom","toLeft","toTop"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){return e=e?e[n.$toStyle]():"#FFFFFF","linear-gradient(".concat(this.type.replace(/([RBLT])/," $1").toLowerCase(),", ").concat(e,", ").concat(this.color?this.color[n.$toStyle]():"#000000",")")}}class Xe extends o.ContentObject{constructor(e){super(f,"lockDocument"),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){this[n.$content]=(0,c.getStringOption)(this[n.$content],["auto","0","1"])}}class He extends o.XFAObject{constructor(e){super(f,"manifest",!0),this.action=(0,c.getStringOption)(e.action,["include","all","exclude"]),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.ref=new o.XFAObjectArray}}class qe extends o.XFAObject{constructor(e){super(f,"margin",!0),this.bottomInset=(0,c.getMeasurement)(e.bottomInset,"0"),this.id=e.id||"",this.leftInset=(0,c.getMeasurement)(e.leftInset,"0"),this.rightInset=(0,c.getMeasurement)(e.rightInset,"0"),this.topInset=(0,c.getMeasurement)(e.topInset,"0"),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$toStyle](){return{margin:(0,s.measureToString)(this.topInset)+" "+(0,s.measureToString)(this.rightInset)+" "+(0,s.measureToString)(this.bottomInset)+" "+(0,s.measureToString)(this.leftInset)}}}class ze extends o.XFAObject{constructor(e){super(f,"mdp"),this.id=e.id||"",this.permissions=(0,c.getInteger)({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e}),this.signatureType=(0,c.getStringOption)(e.signatureType,["filler","author"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Ge extends o.XFAObject{constructor(e){super(f,"medium"),this.id=e.id||"",this.imagingBBox=(0,c.getBBox)(e.imagingBBox),this.long=(0,c.getMeasurement)(e.long),this.orientation=(0,c.getStringOption)(e.orientation,["portrait","landscape"]),this.short=(0,c.getMeasurement)(e.short),this.stock=e.stock||"",this.trayIn=(0,c.getStringOption)(e.trayIn,["auto","delegate","pageFront"]),this.trayOut=(0,c.getStringOption)(e.trayOut,["auto","delegate"]),this.use=e.use||"",this.usehref=e.usehref||""}}class We extends o.XFAObject{constructor(e){super(f,"message",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.text=new o.XFAObjectArray}}class Ve extends o.XFAObject{constructor(e){super(f,"numericEdit",!0),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.comb=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t;const r=(0,s.toStyle)(this,"border","font","margin"),a=this[n.$getParent]()[n.$getParent](),i={name:"input",attributes:{type:"text",fieldId:a[n.$uid],dataId:(null===(t=a[n.$data])||void 0===t?void 0:t[n.$uid])||a[n.$uid],class:["xfaTextfield"],style:r,"aria-label":C(a),"aria-required":!1}};return S(a)&&(i.attributes["aria-required"]=!0,i.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Ke extends o.XFAObject{constructor(e){super(f,"occur",!0),this.id=e.id||"",this.initial=""!==e.initial?(0,c.getInteger)({data:e.initial,defaultValue:"",validate:e=>!0}):"",this.max=""!==e.max?(0,c.getInteger)({data:e.max,defaultValue:1,validate:e=>!0}):"",this.min=""!==e.min?(0,c.getInteger)({data:e.min,defaultValue:1,validate:e=>!0}):"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$clean](){const e=this[n.$getParent](),t=this.min;""===this.min&&(this.min=e instanceof Qe||e instanceof et?0:1),""===this.max&&(this.max=""===t?e instanceof Qe||e instanceof et?-1:1:this.min),-1!==this.max&&this.max!0}),this.name=e.name||"",this.numbered=(0,c.getInteger)({data:e.numbered,defaultValue:1,validate:e=>!0}),this.oddOrEven=(0,c.getStringOption)(e.oddOrEven,["any","even","odd"]),this.pagePosition=(0,c.getStringOption)(e.pagePosition,["any","first","last","only","rest"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.desc=null,this.extras=null,this.medium=null,this.occur=null,this.area=new o.XFAObjectArray,this.contentArea=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.subform=new o.XFAObjectArray}[n.$isUsable](){return this[n.$extra]?!this.occur||-1===this.occur.max||this[n.$extra].numberOfUsee.oddOrEven===t&&e.pagePosition===r));return a||(a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===r)),a||(a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition)),a||this.pageArea.children[0]))}}class tt extends o.XFAObject{constructor(e){super(f,"para",!0),this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.lineHeight=e.lineHeight?(0,c.getMeasurement)(e.lineHeight,"0pt"):"",this.marginLeft=e.marginLeft?(0,c.getMeasurement)(e.marginLeft,"0pt"):"",this.marginRight=e.marginRight?(0,c.getMeasurement)(e.marginRight,"0pt"):"",this.orphans=(0,c.getInteger)({data:e.orphans,defaultValue:0,validate:e=>e>=0}),this.preserve=e.preserve||"",this.radixOffset=e.radixOffset?(0,c.getMeasurement)(e.radixOffset,"0pt"):"",this.spaceAbove=e.spaceAbove?(0,c.getMeasurement)(e.spaceAbove,"0pt"):"",this.spaceBelow=e.spaceBelow?(0,c.getMeasurement)(e.spaceBelow,"0pt"):"",this.tabDefault=e.tabDefault?(0,c.getMeasurement)(this.tabDefault):"",this.tabStops=(e.tabStops||"").trim().split(/\\s+/).map(((e,t)=>t%2==1?(0,c.getMeasurement)(e):e)),this.textIndent=e.textIndent?(0,c.getMeasurement)(e.textIndent,"0pt"):"",this.use=e.use||"",this.usehref=e.usehref||"",this.vAlign=(0,c.getStringOption)(e.vAlign,["top","bottom","middle"]),this.widows=(0,c.getInteger)({data:e.widows,defaultValue:0,validate:e=>e>=0}),this.hyphenation=null}[n.$toStyle](){const e=(0,s.toStyle)(this,"hAlign");return""!==this.marginLeft&&(e.paddingLeft=(0,s.measureToString)(this.marginLeft)),""!==this.marginRight&&(e.paddingight=(0,s.measureToString)(this.marginRight)),""!==this.spaceAbove&&(e.paddingTop=(0,s.measureToString)(this.spaceAbove)),""!==this.spaceBelow&&(e.paddingBottom=(0,s.measureToString)(this.spaceBelow)),""!==this.textIndent&&(e.textIndent=(0,s.measureToString)(this.textIndent),(0,s.fixTextIndent)(e)),this.lineHeight>0&&(e.lineHeight=(0,s.measureToString)(this.lineHeight)),""!==this.tabDefault&&(e.tabSize=(0,s.measureToString)(this.tabDefault)),this.tabStops.length,this.hyphenatation&&Object.assign(e,this.hyphenatation[n.$toStyle]()),e}}class rt extends o.XFAObject{constructor(e){super(f,"passwordEdit",!0),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.passwordChar=e.passwordChar||"*",this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}}class nt extends o.XFAObject{constructor(e){super(f,"pattern",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){e=e?e[n.$toStyle]():"#FFFFFF";const t=this.color?this.color[n.$toStyle]():"#000000",r="repeating-linear-gradient",a="".concat(e,",").concat(e," 5px,").concat(t," 5px,").concat(t," 10px");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""}}class at extends o.StringObject{constructor(e){super(f,"picture"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class it extends o.XFAObject{constructor(e){super(f,"proto",!0),this.appearanceFilter=new o.XFAObjectArray,this.arc=new o.XFAObjectArray,this.area=new o.XFAObjectArray,this.assist=new o.XFAObjectArray,this.barcode=new o.XFAObjectArray,this.bindItems=new o.XFAObjectArray,this.bookend=new o.XFAObjectArray,this.boolean=new o.XFAObjectArray,this.border=new o.XFAObjectArray,this.break=new o.XFAObjectArray,this.breakAfter=new o.XFAObjectArray,this.breakBefore=new o.XFAObjectArray,this.button=new o.XFAObjectArray,this.calculate=new o.XFAObjectArray,this.caption=new o.XFAObjectArray,this.certificate=new o.XFAObjectArray,this.certificates=new o.XFAObjectArray,this.checkButton=new o.XFAObjectArray,this.choiceList=new o.XFAObjectArray,this.color=new o.XFAObjectArray,this.comb=new o.XFAObjectArray,this.connect=new o.XFAObjectArray,this.contentArea=new o.XFAObjectArray,this.corner=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.dateTimeEdit=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.defaultUi=new o.XFAObjectArray,this.desc=new o.XFAObjectArray,this.digestMethod=new o.XFAObjectArray,this.digestMethods=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.edge=new o.XFAObjectArray,this.encoding=new o.XFAObjectArray,this.encodings=new o.XFAObjectArray,this.encrypt=new o.XFAObjectArray,this.encryptData=new o.XFAObjectArray,this.encryption=new o.XFAObjectArray,this.encryptionMethod=new o.XFAObjectArray,this.encryptionMethods=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.execute=new o.XFAObjectArray,this.extras=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.fill=new o.XFAObjectArray,this.filter=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.font=new o.XFAObjectArray,this.format=new o.XFAObjectArray,this.handler=new o.XFAObjectArray,this.hyphenation=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.imageEdit=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.issuers=new o.XFAObjectArray,this.items=new o.XFAObjectArray,this.keep=new o.XFAObjectArray,this.keyUsage=new o.XFAObjectArray,this.line=new o.XFAObjectArray,this.linear=new o.XFAObjectArray,this.lockDocument=new o.XFAObjectArray,this.manifest=new o.XFAObjectArray,this.margin=new o.XFAObjectArray,this.mdp=new o.XFAObjectArray,this.medium=new o.XFAObjectArray,this.message=new o.XFAObjectArray,this.numericEdit=new o.XFAObjectArray,this.occur=new o.XFAObjectArray,this.oid=new o.XFAObjectArray,this.oids=new o.XFAObjectArray,this.overflow=new o.XFAObjectArray,this.pageArea=new o.XFAObjectArray,this.pageSet=new o.XFAObjectArray,this.para=new o.XFAObjectArray,this.passwordEdit=new o.XFAObjectArray,this.pattern=new o.XFAObjectArray,this.picture=new o.XFAObjectArray,this.radial=new o.XFAObjectArray,this.reason=new o.XFAObjectArray,this.reasons=new o.XFAObjectArray,this.rectangle=new o.XFAObjectArray,this.ref=new o.XFAObjectArray,this.script=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray,this.signData=new o.XFAObjectArray,this.signature=new o.XFAObjectArray,this.signing=new o.XFAObjectArray,this.solid=new o.XFAObjectArray,this.speak=new o.XFAObjectArray,this.stipple=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray,this.subjectDN=new o.XFAObjectArray,this.subjectDNs=new o.XFAObjectArray,this.submit=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.textEdit=new o.XFAObjectArray,this.time=new o.XFAObjectArray,this.timeStamp=new o.XFAObjectArray,this.toolTip=new o.XFAObjectArray,this.traversal=new o.XFAObjectArray,this.traverse=new o.XFAObjectArray,this.ui=new o.XFAObjectArray,this.validate=new o.XFAObjectArray,this.value=new o.XFAObjectArray,this.variables=new o.XFAObjectArray}}class st extends o.XFAObject{constructor(e){super(f,"radial",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["toEdge","toCenter"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){e=e?e[n.$toStyle]():"#FFFFFF";const t=this.color?this.color[n.$toStyle]():"#000000";return"radial-gradient(circle at center, ".concat("toEdge"===this.type?"".concat(e,",").concat(t):"".concat(t,",").concat(e),")")}}class ot extends o.StringObject{constructor(e){super(f,"reason"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class ct extends o.XFAObject{constructor(e){super(f,"reasons",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.reason=new o.XFAObjectArray}}class lt extends o.XFAObject{constructor(e){super(f,"rectangle",!0),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new o.XFAObjectArray(4),this.edge=new o.XFAObjectArray(4),this.fill=null}[n.$toHTML](){var e;const t=this.edge.children.length?this.edge.children[0]:new ue({}),r=t[n.$toStyle](),a=Object.create(null);"visible"===(null===(e=this.fill)||void 0===e?void 0:e.presence)?Object.assign(a,this.fill[n.$toStyle]()):a.fill="transparent",a.strokeWidth=(0,s.measureToString)("visible"===t.presence?t.thickness:0),a.stroke=r.color;const i=(this.corner.children.length?this.corner.children[0]:new te({}))[n.$toStyle](),o={name:"svg",children:[{name:"rect",attributes:{xmlns:g,width:"100%",height:"100%",x:0,y:0,rx:i.radius,ry:i.radius,style:a}}],attributes:{xmlns:g,style:{overflow:"visible"},width:"100%",height:"100%"}};return w(this[n.$getParent]()[n.$getParent]())?c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[o]}):(o.attributes.style.position="absolute",c.HTMLResult.success(o))}}class ht extends o.StringObject{constructor(e){super(f,"ref"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class ut extends o.StringObject{constructor(e){super(f,"script"),this.binding=e.binding||"",this.contentType=e.contentType||"",this.id=e.id||"",this.name=e.name||"",this.runAt=(0,c.getStringOption)(e.runAt,["client","both","server"]),this.use=e.use||"",this.usehref=e.usehref||""}}class dt extends o.XFAObject{constructor(e){super(f,"setProperty"),this.connection=e.connection||"",this.ref=e.ref||"",this.target=e.target||""}}t.SetProperty=dt;class ft extends o.XFAObject{constructor(e){super(f,"signData",!0),this.id=e.id||"",this.operation=(0,c.getStringOption)(e.operation,["sign","clear","verify"]),this.ref=e.ref||"",this.target=e.target||"",this.use=e.use||"",this.usehref=e.usehref||"",this.filter=null,this.manifest=null}}class gt extends o.XFAObject{constructor(e){super(f,"signature",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["PDF1.3","PDF1.6"]),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.filter=null,this.manifest=null,this.margin=null}}class pt extends o.XFAObject{constructor(e){super(f,"signing",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new o.XFAObjectArray}}class mt extends o.XFAObject{constructor(e){super(f,"solid",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$toStyle](e){return e?e[n.$toStyle]():"#FFFFFF"}}class bt extends o.StringObject{constructor(e){super(f,"speak"),this.disable=(0,c.getInteger)({data:e.disable,defaultValue:0,validate:e=>1===e}),this.id=e.id||"",this.priority=(0,c.getStringOption)(e.priority,["custom","caption","name","toolTip"]),this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class yt extends o.XFAObject{constructor(e){super(f,"stipple",!0),this.id=e.id||"",this.rate=(0,c.getInteger)({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100}),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){const t=this.rate/100;return l.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))}}class wt extends o.XFAObject{constructor(e){super(f,"subform",!0),this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]),this.allowMacro=(0,c.getInteger)({data:e.allowMacro,defaultValue:0,validate:e=>1===e}),this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.columnWidths=(e.columnWidths||"").trim().split(/\\s+/).map((e=>"-1"===e?-1:(0,c.getMeasurement)(e))),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.locale=e.locale||"",this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.mergeMode=(0,c.getStringOption)(e.mergeMode,["consumeData","matchTemplate"]),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.restoreState=(0,c.getStringOption)(e.restoreState,["manual","auto"]),this.scope=(0,c.getStringOption)(e.scope,["name","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.bind=null,this.bookend=null,this.border=null,this.break=null,this.calculate=null,this.desc=null,this.extras=null,this.keep=null,this.margin=null,this.occur=null,this.overflow=null,this.pageSet=null,this.para=null,this.traversal=null,this.validate=null,this.variables=null,this.area=new o.XFAObjectArray,this.breakAfter=new o.XFAObjectArray,this.breakBefore=new o.XFAObjectArray,this.connect=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.proto=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray}[n.$getSubformParent](){const e=this[n.$getParent]();return e instanceof vt?e[n.$getSubformParent]():e}[n.$isBindable](){return!0}[n.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[n.$extra].attempt&&this[n.$extra].numberInLine>0||this[n.$getParent]()[n.$isThereMoreWidth]()}*[n.$getContainedChildren](){yield*x(this)}[n.$flushHTML](){return(0,i.flushHTML)(this)}[n.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[n.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[n.$isSplittable](){var e;const t=this[n.$getSubformParent]();return!!t[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):!(null!==(e=t.layout)&&void 0!==e&&e.endsWith("-tb")&&0!==t[n.$extra].numberInLine||(this[n.$extra]._isSplittable=!0,0)))}[n.$toHTML](e){var t;if(A(this),this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new X({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[n.$globalData]=this[n.$globalData],this[n.$appendChild](e),this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new H({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[n.$globalData]=this[n.$globalData],this[n.$appendChild](e),this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Ze({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[n.$globalData]=this[n.$globalData],this[n.$appendChild](e),this.overflow.push(e)}this[n.$removeChild](this.break),this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;if((this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&(0,l.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug."),this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(T(e))return c.HTMLResult.breakNode(e)}if(null!==(t=this[n.$extra])&&void 0!==t&&t.afterBreakAfter)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const r=[],a={id:this[n.$uid],class:[]};(0,s.setAccess)(this,a.class),this[n.$extra]||(this[n.$extra]=Object.create(null)),Object.assign(this[n.$extra],{children:r,line:null,attributes:a,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});const o=this[n.$getTemplateRoot](),h=o[n.$extra].noLayoutFailure,u=this[n.$isSplittable]();if(u||F(this),!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const d=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[n.$getSubformParent]().columnWidths;Array.isArray(e)&&e.length>0&&(this[n.$extra].columnWidths=e,this[n.$extra].currentColumn=0)}const f=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),g=["xfaSubform"],p=(0,s.layoutClass)(this);if(p&&g.push(p),a.style=f,a.class=g,this.name&&(a.xfaName=this.name),this.overflow){const t=this.overflow[n.$getExtra]();t.addLeader&&(t.addLeader=!1,M(this,t.leader,e))}this[n.$pushPara]();const m="lr-tb"===this.layout||"rl-tb"===this.layout,b=m?2:1;for(;this[n.$extra].attempt=1){const e=this.breakAfter.children[0];if(T(e))return this[n.$extra].afterBreakAfter=O,c.HTMLResult.breakNode(e)}return delete this[n.$extra],O}}class vt extends o.XFAObject{constructor(e){super(f,"subformSet",!0),this.id=e.id||"",this.name=e.name||"",this.relation=(0,c.getStringOption)(e.relation,["ordered","choice","unordered"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.bookend=null,this.break=null,this.desc=null,this.extras=null,this.occur=null,this.overflow=null,this.breakAfter=new o.XFAObjectArray,this.breakBefore=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray}*[n.$getContainedChildren](){yield*x(this)}[n.$getSubformParent](){let e=this[n.$getParent]();for(;!(e instanceof wt);)e=e[n.$getParent]();return e}[n.$isBindable](){return!0}}class xt extends o.ContentObject{constructor(e){super(f,"subjectDN"),this.delimiter=e.delimiter||",",this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){this[n.$content]=new Map(this[n.$content].split(this.delimiter).map((e=>((e=e.split("=",2))[0]=e[0].trim(),e))))}}class St extends o.XFAObject{constructor(e){super(f,"subjectDNs",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.subjectDN=new o.XFAObjectArray}}class At extends o.XFAObject{constructor(e){super(f,"submit",!0),this.embedPDF=(0,c.getInteger)({data:e.embedPDF,defaultValue:0,validate:e=>1===e}),this.format=(0,c.getStringOption)(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]),this.id=e.id||"",this.target=e.target||"",this.textEncoding=(0,c.getKeyword)({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["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}/)}),this.use=e.use||"",this.usehref=e.usehref||"",this.xdpContent=e.xdpContent||"",this.encrypt=null,this.encryptData=new o.XFAObjectArray,this.signData=new o.XFAObjectArray}}class kt extends o.XFAObject{constructor(e){super(f,"template",!0),this.baseProfile=(0,c.getStringOption)(e.baseProfile,["full","interactiveForms"]),this.extras=null,this.subform=new o.XFAObjectArray}[n.$finalize](){0===this.subform.children.length&&(0,l.warn)("XFA - No subforms in template node."),this.subform.children.length>=2&&(0,l.warn)("XFA - Several subforms in template node: please file a bug."),this[n.$tabIndex]=5e3}[n.$isSplittable](){return!0}[n.$searchNode](e,t){return e.startsWith("#")?[this[n.$ids].get(e.slice(1))]:(0,d.searchNode)(this,t,e,!0,!0)}*[n.$toPages](){var e,t;if(!this.subform.children.length)return c.HTMLResult.success({name:"div",children:[]});this[n.$extra]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const r=this.subform.children[0];r.pageSet[n.$cleanPage]();const a=r.pageSet.pageArea.children,i={name:"div",children:[]};let s=null,o=null,h=null;if(r.breakBefore.children.length>=1?(o=r.breakBefore.children[0],h=o.target):r.subform.children.length>=1&&r.subform.children[0].breakBefore.children.length>=1?(o=r.subform.children[0].breakBefore.children[0],h=o.target):null!==(e=r.break)&&void 0!==e&&e.beforeTarget?(o=r.break,h=o.beforeTarget):r.subform.children.length>=1&&null!==(t=r.subform.children[0].break)&&void 0!==t&&t.beforeTarget&&(o=r.subform.children[0].break,h=o.beforeTarget),o){const e=this[n.$searchNode](h,o[n.$getParent]());e instanceof Qe&&(s=e,o[n.$extra]={})}s||(s=a[0]),s[n.$extra]={numberOfUse:1};const u=s[n.$getParent]();u[n.$extra]={numberOfUse:1,pageIndex:u.pageArea.children.indexOf(s),pageSetIndex:0};let d,f=null,g=null,p=!0,m=0,b=0;for(;;){if(p)m=0;else if(i.children.pop(),3==++m)return(0,l.warn)("XFA - Something goes wrong: please file a bug."),i;d=null,this[n.$extra].currentPageArea=s;const e=s[n.$toHTML]().html;i.children.push(e),f&&(this[n.$extra].noLayoutFailure=!0,e.children.push(f[n.$toHTML](s[n.$extra].space).html),f=null),g&&(this[n.$extra].noLayoutFailure=!0,e.children.push(g[n.$toHTML](s[n.$extra].space).html),g=null);const t=s.contentArea.children,a=e.children.filter((e=>e.attributes.class.includes("xfaContentarea")));p=!1,this[n.$extra].firstUnsplittable=null,this[n.$extra].noLayoutFailure=!1;const o=e=>{const t=r[n.$flushHTML]();var i;t&&(p||(p=(null===(i=t.children)||void 0===i?void 0:i.length)>0),a[e].children.push(t))};for(let e=b,s=t.length;e0),a[e].children.push(l.html)):!p&&i.children.length>1&&i.children.pop(),i;if(l.isBreak()){const t=l.breakNode;if(o(e),"auto"===t.targetType)continue;t.leader&&(f=this[n.$searchNode](t.leader,t[n.$getParent]()),f=f?f[0]:null),t.trailer&&(g=this[n.$searchNode](t.trailer,t[n.$getParent]()),g=g?g[0]:null),"pageArea"===t.targetType?(d=t[n.$extra].target,e=1/0):t[n.$extra].target?(d=t[n.$extra].target,b=t[n.$extra].index+1,e=1/0):e=t[n.$extra].index}else if(this[n.$extra].overflowNode){const r=this[n.$extra].overflowNode;this[n.$extra].overflowNode=null;const a=r[n.$getExtra](),i=a.target;a.addLeader=null!==a.leader,a.addTrailer=null!==a.trailer,o(e);const s=e;if(e=1/0,i instanceof Qe)d=i;else if(i instanceof ee){const r=t.indexOf(i);-1!==r?r>s?e=r-1:b=r:(d=i[n.$getParent](),b=d.contentArea.children.indexOf(i))}}else o(e)}this[n.$extra].pageNumber+=1,d&&(d[n.$isUsable]()?d[n.$extra].numberOfUse+=1:d=null),s=d||s[n.$getNextPage](),yield null}}}t.Template=kt;class Ct extends o.ContentObject{constructor(e){super(f,"text"),this.id=e.id||"",this.maxChars=(0,c.getInteger)({data:e.maxChars,defaultValue:0,validate:e=>e>=0}),this.name=e.name||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$acceptWhitespace](){return!0}[n.$onChild](e){return e[n.$namespaceId]===a.NamespaceIds.xhtml.id?(this[n.$content]=e,!0):((0,l.warn)("XFA - Invalid content in Text: ".concat(e[n.$nodeName],".")),!1)}[n.$onText](e){this[n.$content]instanceof o.XFAObject||super[n.$onText](e)}[n.$finalize](){"string"==typeof this[n.$content]&&(this[n.$content]=this[n.$content].replaceAll("\\r\\n","\\n"))}[n.$getExtra](){return"string"==typeof this[n.$content]?this[n.$content].split(/[\\u2029\\u2028\\n]/).reduce(((e,t)=>(t&&e.push(t),e)),[]).join("\\n"):this[n.$content][n.$text]()}[n.$toHTML](e){if("string"==typeof this[n.$content]){const e=O(this[n.$content]).html;return this[n.$content].includes("\\u2029")?(e.name="div",e.children=[],this[n.$content].split("\\u2029").map((e=>e.split(/[\\u2028\\n]/).reduce(((e,t)=>(e.push({name:"span",value:t},{name:"br"}),e)),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))):/[\\u2028\\n]/.test(this[n.$content])&&(e.name="div",e.children=[],this[n.$content].split(/[\\u2028\\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))),c.HTMLResult.success(e)}return this[n.$content][n.$toHTML](e)}}t.Text=Ct;class Ot extends o.XFAObject{constructor(e){super(f,"textEdit",!0),this.allowRichText=(0,c.getInteger)({data:e.allowRichText,defaultValue:0,validate:e=>1===e}),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.multiLine=(0,c.getInteger)({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.vScrollPolicy=(0,c.getStringOption)(e.vScrollPolicy,["auto","off","on"]),this.border=null,this.comb=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t,r;const a=(0,s.toStyle)(this,"border","font","margin");let i;const o=this[n.$getParent]()[n.$getParent]();return""===this.multiLine&&(this.multiLine=o instanceof he?1:0),i=1===this.multiLine?{name:"textarea",attributes:{dataId:(null===(t=o[n.$data])||void 0===t?void 0:t[n.$uid])||o[n.$uid],fieldId:o[n.$uid],class:["xfaTextfield"],style:a,"aria-label":C(o),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:(null===(r=o[n.$data])||void 0===r?void 0:r[n.$uid])||o[n.$uid],fieldId:o[n.$uid],class:["xfaTextfield"],style:a,"aria-label":C(o),"aria-required":!1}},S(o)&&(i.attributes["aria-required"]=!0,i.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Ft extends o.StringObject{constructor(e){super(f,"time"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}[n.$toHTML](e){return O(this[n.$content]?this[n.$content].toString():"")}}class It extends o.XFAObject{constructor(e){super(f,"timeStamp"),this.id=e.id||"",this.server=e.server||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Tt extends o.StringObject{constructor(e){super(f,"toolTip"),this.id=e.id||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Mt extends o.XFAObject{constructor(e){super(f,"traversal",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.traverse=new o.XFAObjectArray}}class Et extends o.XFAObject{constructor(e){super(f,"traverse",!0),this.id=e.id||"",this.operation=(0,c.getStringOption)(e.operation,["next","back","down","first","left","right","up"]),this.ref=e.ref||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.script=null}get name(){return this.operation}[n.$isTransparent](){return!1}}class Pt extends o.XFAObject{constructor(e){super(f,"ui",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.picture=null,this.barcode=null,this.button=null,this.checkButton=null,this.choiceList=null,this.dateTimeEdit=null,this.defaultUi=null,this.imageEdit=null,this.numericEdit=null,this.passwordEdit=null,this.signature=null,this.textEdit=null}[n.$getExtra](){if(void 0===this[n.$extra]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof o.XFAObject)return this[n.$extra]=t,t}this[n.$extra]=null}return this[n.$extra]}[n.$toHTML](e){const t=this[n.$getExtra]();return t?t[n.$toHTML](e):c.HTMLResult.EMPTY}}class Rt extends o.XFAObject{constructor(e){super(f,"validate",!0),this.formatTest=(0,c.getStringOption)(e.formatTest,["warning","disabled","error"]),this.id=e.id||"",this.nullTest=(0,c.getStringOption)(e.nullTest,["disabled","error","warning"]),this.scriptTest=(0,c.getStringOption)(e.scriptTest,["error","disabled","warning"]),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.message=null,this.picture=null,this.script=null}}class Nt extends o.XFAObject{constructor(e){super(f,"value",!0),this.id=e.id||"",this.override=(0,c.getInteger)({data:e.override,defaultValue:0,validate:e=>1===e}),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.arc=null,this.boolean=null,this.date=null,this.dateTime=null,this.decimal=null,this.exData=null,this.float=null,this.image=null,this.integer=null,this.line=null,this.rectangle=null,this.text=null,this.time=null}[n.$setValue](e){var t;const r=this[n.$getParent]();if(r instanceof Ce&&null!==(t=r.ui)&&void 0!==t&&t.imageEdit)return this.image||(this.image=new Re({}),this[n.$appendChild](this.image)),void(this.image[n.$content]=e[n.$content]);const a=e[n.$nodeName];if(null===this[a]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];t instanceof o.XFAObject&&(this[e]=null,this[n.$removeChild](t))}this[e[n.$nodeName]]=e,this[n.$appendChild](e)}else this[a][n.$content]=e[n.$content]}[n.$text](){if(this.exData)return"string"==typeof this.exData[n.$content]?this.exData[n.$content].trim():this.exData[n.$content][n.$text]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof o.XFAObject)return(t[n.$content]||"").toString().trim()}return null}[n.$toHTML](e){for(const t of Object.getOwnPropertyNames(this)){const r=this[t];if(r instanceof o.XFAObject)return r[n.$toHTML](e)}return c.HTMLResult.EMPTY}}t.Value=Nt;class Dt extends o.XFAObject{constructor(e){super(f,"variables",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.manifest=new o.XFAObjectArray,this.script=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}[n.$isTransparent](){return!0}}class Bt{static[a.$buildXFAObject](e,t){if(Bt.hasOwnProperty(e)){const r=Bt[e](t);return r[n.$setSetAttributes](t),r}}static appearanceFilter(e){return new E(e)}static arc(e){return new P(e)}static area(e){return new R(e)}static assist(e){return new N(e)}static barcode(e){return new D(e)}static bind(e){return new B(e)}static bindItems(e){return new L(e)}static bookend(e){return new _(e)}static boolean(e){return new j(e)}static border(e){return new U(e)}static break(e){return new $(e)}static breakAfter(e){return new X(e)}static breakBefore(e){return new H(e)}static button(e){return new q(e)}static calculate(e){return new z(e)}static caption(e){return new G(e)}static certificate(e){return new W(e)}static certificates(e){return new V(e)}static checkButton(e){return new K(e)}static choiceList(e){return new Y(e)}static color(e){return new J(e)}static comb(e){return new Z(e)}static connect(e){return new Q(e)}static contentArea(e){return new ee(e)}static corner(e){return new te(e)}static date(e){return new re(e)}static dateTime(e){return new ne(e)}static dateTimeEdit(e){return new ae(e)}static decimal(e){return new ie(e)}static defaultUi(e){return new se(e)}static desc(e){return new oe(e)}static digestMethod(e){return new ce(e)}static digestMethods(e){return new le(e)}static draw(e){return new he(e)}static edge(e){return new ue(e)}static encoding(e){return new de(e)}static encodings(e){return new fe(e)}static encrypt(e){return new ge(e)}static encryptData(e){return new pe(e)}static encryption(e){return new me(e)}static encryptionMethod(e){return new be(e)}static encryptionMethods(e){return new ye(e)}static event(e){return new we(e)}static exData(e){return new ve(e)}static exObject(e){return new xe(e)}static exclGroup(e){return new Se(e)}static execute(e){return new Ae(e)}static extras(e){return new ke(e)}static field(e){return new Ce(e)}static fill(e){return new Oe(e)}static filter(e){return new Fe(e)}static float(e){return new Ie(e)}static font(e){return new Te(e)}static format(e){return new Me(e)}static handler(e){return new Ee(e)}static hyphenation(e){return new Pe(e)}static image(e){return new Re(e)}static imageEdit(e){return new Ne(e)}static integer(e){return new De(e)}static issuers(e){return new Be(e)}static items(e){return new Le(e)}static keep(e){return new _e(e)}static keyUsage(e){return new je(e)}static line(e){return new Ue(e)}static linear(e){return new $e(e)}static lockDocument(e){return new Xe(e)}static manifest(e){return new He(e)}static margin(e){return new qe(e)}static mdp(e){return new ze(e)}static medium(e){return new Ge(e)}static message(e){return new We(e)}static numericEdit(e){return new Ve(e)}static occur(e){return new Ke(e)}static oid(e){return new Ye(e)}static oids(e){return new Je(e)}static overflow(e){return new Ze(e)}static pageArea(e){return new Qe(e)}static pageSet(e){return new et(e)}static para(e){return new tt(e)}static passwordEdit(e){return new rt(e)}static pattern(e){return new nt(e)}static picture(e){return new at(e)}static proto(e){return new it(e)}static radial(e){return new st(e)}static reason(e){return new ot(e)}static reasons(e){return new ct(e)}static rectangle(e){return new lt(e)}static ref(e){return new ht(e)}static script(e){return new ut(e)}static setProperty(e){return new dt(e)}static signData(e){return new ft(e)}static signature(e){return new gt(e)}static signing(e){return new pt(e)}static solid(e){return new mt(e)}static speak(e){return new bt(e)}static stipple(e){return new yt(e)}static subform(e){return new wt(e)}static subformSet(e){return new vt(e)}static subjectDN(e){return new xt(e)}static subjectDNs(e){return new St(e)}static submit(e){return new At(e)}static template(e){return new kt(e)}static text(e){return new Ct(e)}static textEdit(e){return new Ot(e)}static time(e){return new Ft(e)}static timeStamp(e){return new It(e)}static toolTip(e){return new Tt(e)}static traversal(e){return new Mt(e)}static traverse(e){return new Et(e)}static ui(e){return new Pt(e)}static validate(e){return new Rt(e)}static value(e){return new Nt(e)}static variables(e){return new Dt(e)}}t.TemplateNamespace=Bt},(e,t,r)=>{var n=r(3),a=r(4),i=r(24),s=r(11),o=r(45).f,c=r(39),l=r(232),h=r(75),u=r(76),d=r(233),f=r(82),g=r(6),p=r(36),m="DOMException",b=i("Error"),y=i(m),w=function(){l(this,v);var e=arguments.length,t=u(e<1?void 0:arguments[0]),r=u(e<2?void 0:arguments[1],"Error"),n=new y(t,r),a=b(t);return a.name=m,o(n,"stack",s(1,f(a.stack,1))),h(n,this,w),n},v=w.prototype=y.prototype,x="stack"in b(m),S="stack"in new y(1,2),A=y&&g&&Object.getOwnPropertyDescriptor(a,m),k=!(!A||A.writable&&A.configurable),C=x&&!k&&!S;n({global:!0,constructor:!0,forced:p||C},{DOMException:C?w:y});var O=i(m),F=O.prototype;if(F.constructor!==O)for(var I in p||o(F,"constructor",s(1,O)),d)if(c(d,I)){var T=d[I],M=T.s;c(O,M)||o(O,M,s(6,T.c))}},(e,t,r)=>{var n=r(25),a=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw a("Incorrect invocation")}},e=>{e.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NamespaceIds=t.$buildXFAObject=void 0;const r=Symbol();t.$buildXFAObject=r,t.NamespaceIds={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addHTML=function(e,t,r){const s=e[n.$extra],o=s.availableSpace,[c,l,h,u]=r;switch(e.layout){case"position":s.width=Math.max(s.width,c+h),s.height=Math.max(s.height,l+u),s.children.push(t);break;case"lr-tb":case"rl-tb":s.line&&1!==s.attempt||(s.line=i(e,[]),s.children.push(s.line),s.numberInLine=0),s.numberInLine+=1,s.line.children.push(t),0===s.attempt?(s.currentWidth+=h,s.height=Math.max(s.height,s.prevHeight+u)):(s.currentWidth=h,s.prevHeight=s.height,s.height+=u,s.attempt=0),s.width=Math.max(s.width,s.currentWidth);break;case"rl-row":case"row":{s.children.push(t),s.width+=h,s.height=Math.max(s.height,u);const e=(0,a.measureToString)(s.height);for(const t of s.children)t.attributes.style.height=e;break}case"table":case"tb":s.width=Math.min(o.width,Math.max(s.width,h)),s.height+=u,s.children.push(t)}},t.checkDimensions=function(e,t){var r;if(null===e[n.$getTemplateRoot]()[n.$extra].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const a=e[n.$getSubformParent](),i=(null===(r=a[n.$extra])||void 0===r?void 0:r.attempt)||0,[,s,o,c]=function(e){let t,r,n=""===e.w?NaN:e.w,a=""===e.h?NaN:e.h,[i,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[i,s]=[n/2,a];break;case"bottomLeft":[i,s]=[0,a];break;case"bottomRight":[i,s]=[n,a];break;case"middleCenter":[i,s]=[n/2,a/2];break;case"middleLeft":[i,s]=[0,a/2];break;case"middleRight":[i,s]=[n,a/2];break;case"topCenter":[i,s]=[n/2,0];break;case"topRight":[i,s]=[n,0]}switch(e.rotate||0){case 0:[t,r]=[-i,-s];break;case 90:[t,r]=[-s,i],[n,a]=[a,-n];break;case 180:[t,r]=[i,s],[n,a]=[-n,-a];break;case 270:[t,r]=[s,-i],[n,a]=[-a,n]}return[e.x+t+Math.min(0,n),e.y+r+Math.min(0,a),Math.abs(n),Math.abs(a)]}(e);switch(a.layout){case"lr-tb":case"rl-tb":return 0===i?e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure?""!==e.w?Math.round(o-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(c-t.height)>2)&&(""!==e.w?Math.round(o-t.width)<=2||0===a[n.$extra].numberInLine&&t.height>2:t.width>2):!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||!(""!==e.h&&Math.round(c-t.height)>2)&&(""===e.w||Math.round(o-t.width)<=2||!a[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(o-t.width)<=2||!a[n.$isThereMoreWidth]())&&t.height>2:Math.round(c-t.height)<=2);case"position":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||""===e.h||Math.round(c+s-t.height)<=2||c+s>e[n.$getTemplateRoot]()[n.$extra].currentContentArea.h;case"rl-row":case"row":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||""===e.h||Math.round(c-t.height)<=2;default:return!0}},t.flushHTML=function(e){if(!e[n.$extra])return null;const t={name:"div",attributes:e[n.$extra].attributes,children:e[n.$extra].children};if(e[n.$extra].failingNode){const r=e[n.$extra].failingNode[n.$flushHTML]();r&&(e.layout.endsWith("-tb")?t.children.push(i(e,[r])):t.children.push(r))}return 0===t.children.length?null:t},t.getAvailableSpace=function(e){const 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(((e,t)=>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}},r(139);var n=r(228),a=r(236);function i(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.computeBbox=function(e,t,r){let a;if(""!==e.w&&""!==e.h)a=[e.x,e.y,e.w,e.h];else{if(!r)return null;let i=e.w;if(""===i){if(0===e.maxW){const t=e[n.$getSubformParent]();i="position"===t.layout&&""!==t.w?0:e.minW}else i=Math.min(e.maxW,r.width);t.attributes.style.width=l(i)}let s=e.h;if(""===s){if(0===e.maxH){const t=e[n.$getSubformParent]();s="position"===t.layout&&""!==t.h?0:e.minH}else s=Math.min(e.maxH,r.height);t.attributes.style.height=l(s)}a=[e.x,e.y,i,s]}return a},t.createWrapper=function(e,t){const{attributes:r}=t,{style:a}=r,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};if(r.class.push("xfaWrapped"),e.border){const{widths:r,insets:s}=e.border[n.$extra];let o,c,l=s[0],h=s[3];const u=s[0]+s[2],f=s[1]+s[3];switch(e.border.hand){case"even":l-=r[0]/2,h-=r[3]/2,o="calc(100% + ".concat((r[1]+r[3])/2-f,"px)"),c="calc(100% + ".concat((r[0]+r[2])/2-u,"px)");break;case"left":l-=r[0],h-=r[3],o="calc(100% + ".concat(r[1]+r[3]-f,"px)"),c="calc(100% + ".concat(r[0]+r[2]-u,"px)");break;case"right":o=f?"calc(100% - ".concat(f,"px)"):"100%",c=u?"calc(100% - ".concat(u,"px)"):"100%"}const g=["xfaBorder"];d(e.border)&&g.push("xfaPrintOnly");const p={name:"div",attributes:{class:g,style:{top:"".concat(l,"px"),left:"".concat(h,"px"),width:o,height:c}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])void 0!==a[e]&&(p.attributes.style[e]=a[e],delete a[e]);i.children.push(p,t)}else i.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])void 0!==a[e]&&(i.attributes.style[e]=a[e],delete a[e]);return i.attributes.style.position="absolute"===a.position?"absolute":"relative",delete a.position,a.alignSelf&&(i.attributes.style.alignSelf=a.alignSelf,delete a.alignSelf),i},t.fixDimensions=function(e){var t;const r=e[n.$getSubformParent]();if(null!==(t=r.layout)&&void 0!==t&&t.includes("row")){const t=r[n.$extra],a=e.colSpan;let i;i=-1===a?t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0):t.columnWidths.slice(t.currentColumn,t.currentColumn+a).reduce(((e,t)=>e+t),0),isNaN(i)||(e.w=i)}r.layout&&"position"!==r.layout&&(e.x=e.y=0),"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))},t.fixTextIndent=function(e){const t=(0,i.getMeasurement)(e.textIndent,"0px");if(t>=0)return;const r="padding"+("left"==("right"===e.textAlign?"right":"left")?"Left":"Right"),n=(0,i.getMeasurement)(e[r],"0px");e[r]=n-t+"px"},t.fixURL=function(e){const t=(0,a.createValidAbsoluteUrl)(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null},t.isPrintOnly=d,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){let r=null,a=null,i=!1;if((!e.w||!e.h)&&e.value){let s=0,o=0;e.margin&&(s=e.margin.leftInset+e.margin.rightInset,o=e.margin.topInset+e.margin.bottomInset);let c=null,l=null;e.para&&(l=Object.create(null),c=""===e.para.lineHeight?null:e.para.lineHeight,l.top=""===e.para.spaceAbove?0:e.para.spaceAbove,l.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow,l.left=""===e.para.marginLeft?0:e.para.marginLeft,l.right=""===e.para.marginRight?0:e.para.marginRight);let h=e.font;if(!h){const t=e[n.$getTemplateRoot]();let r=e[n.$getParent]();for(;r&&r!==t;){if(r.font){h=r.font;break}r=r[n.$getParent]()}}const d=(e.w||t.width)-s,f=e[n.$globalData].fontFinder;if(e.value.exData&&e.value.exData[n.$content]&&"text/html"===e.value.exData.contentType){const t=u(e.value.exData[n.$content],h,l,c,f,d);a=t.width,r=t.height,i=t.isBroken}else{const t=e.value[n.$text]();if(t){const e=u(t,h,l,c,f,d);a=e.width,r=e.height,i=e.isBroken}}null===a||e.w||(a+=s),null===r||e.h||(r+=o)}return{w:a,h:r,isBroken:i}},t.measureToString=l,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)return void delete n.fontFamily;const a=(0,i.stripQuotes)(e.typeface);n.fontFamily='"'.concat(a,'"');const o=r.find(a);if(o){const{fontFamily:r}=o.regular.cssFontInfo;r!==a&&(n.fontFamily='"'.concat(r,'"'));const i=f(t);if(i&&""!==i.lineHeight)return;if(n.lineHeight)return;const c=(0,s.selectFont)(e,o);c&&(n.lineHeight=Math.max(1.2,c.lineHeight))}},t.setMinMaxDimensions=function(e,t){"position"===e[n.$getSubformParent]().layout&&(e.minW>0&&(t.minWidth=l(e.minW)),e.maxW>0&&(t.maxWidth=l(e.maxW)),e.minH>0&&(t.minHeight=l(e.minH)),e.maxH>0&&(t.maxHeight=l(e.maxH)))},t.setPara=function(e,t,r){var a;if(null!==(a=r.attributes.class)&&void 0!==a&&a.includes("xfaRich")){t&&(""===e.h&&(t.height="auto"),""===e.w&&(t.width="auto"));const a=f(e);if(a){const e=r.attributes.style;switch(e.display="flex",e.flexDirection="column",a.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=a[n.$toStyle]();for(const[r,n]of Object.entries(t))r in e||(e[r]=n)}}},t.toStyle=function(e){const t=Object.create(null);for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;se+t),0),t.currentColumn=0):(s=t.columnWidths.slice(t.currentColumn,t.currentColumn+r).reduce(((e,t)=>e+t),0),t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length),isNaN(s)||(i=e.w=s)}t.width=""!==i?l(i):"auto",t.height=""!==s?l(s):"auto"},position(e,t){const r=e[n.$getSubformParent]();null!=r&&r.layout&&"position"!==r.layout||(t.position="absolute",t.left=l(e.x),t.top=l(e.y))},rotate(e,t){e.rotate&&("transform"in t||(t.transform=""),t.transform+="rotate(-".concat(e.rotate,"deg)"),t.transformOrigin="top left")},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[n.$nodeName])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[n.$toStyle]().margin)}};function u(e,t,r,a,i,s){const c=new o.TextMeasure(t,r,a,i);return"string"==typeof e?c.addString(e):e[n.$pushGlyphs](c),c.compute(s)}function d(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function f(e){const t=e[n.$getTemplateRoot]()[n.$extra].paraStack;return t.length?t.at(-1):null}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HTMLResult=void 0,t.getBBox=function(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const r=e.trim().split(/\\s*,\\s*/).map((e=>o(e,"-1")));if(r.length<4||r[2]<0||r[3]<0)return{x:t,y:t,width:t,height:t};const[n,a,i,s]=r;return{x:n,y:a,width:i,height:s}},t.getColor=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0,0],[r,n,a]=t;if(!e)return{r,g:n,b:a};const i=e.trim().split(/\\s*,\\s*/).map((e=>Math.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));return i.length<3||([r,n,a]=i),{r,g:n,b:a}},t.getFloat=function(e){let{data:t,defaultValue:r,validate:n}=e;if(!t)return r;t=t.trim();const a=parseFloat(t);return!isNaN(a)&&n(a)?a:r},t.getInteger=function(e){let{data:t,defaultValue:r,validate:n}=e;if(!t)return r;t=t.trim();const a=parseInt(t,10);return!isNaN(a)&&n(a)?a:r},t.getKeyword=s,t.getMeasurement=o,t.getRatio=function(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\\s*:\\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));if(1===t.length&&t.push(1),0===t.length)return{num:1,den:1};const[r,n]=t;return{num:r,den:n}},t.getRelevant=function(e){return e?e.trim().split(/\\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)}))):[]},t.getStringOption=function(e,t){return s({data:e,defaultValue:t[0],validate:e=>t.includes(e)})},t.stripQuotes=function(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,-1):e},r(139);var n=r(144);const a={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},i=/([+-]?\\d+\\.?\\d*)(.*)/;function s(e){let{data:t,defaultValue:r,validate:n}=e;return t?(t=t.trim(),n(t)?t:r):r}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0";if(t||(t="0"),!e)return o(t);const r=e.trim().match(i);if(!r)return o(t);const[,n,s]=r,c=parseFloat(n);if(isNaN(c))return o(t);if(0===c)return 0;const l=a[s];return l?l(c):c}class c{static get FAILURE(){return(0,n.shadow)(this,"FAILURE",new c(!1,null,null,null))}static get EMPTY(){return(0,n.shadow)(this,"EMPTY",new c(!0,null,null,null))}constructor(e,t,r,n){this.success=e,this.html=t,this.bbox=r,this.breakNode=n}isBreak(){return!!this.breakNode}static breakNode(e){return new c(!1,null,null,e)}static success(e){return new c(!0,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,null)}}t.HTMLResult=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontFinder=void 0,t.getMetrics=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=null;if(e){const t=(0,a.stripQuotes)(e.typeface),i=e[n.$globalData].fontFinder.find(t);r=s(e,i)}if(!r)return{lineHeight:12,lineGap:2,lineNoGap:10};const i=e.size||10,o=r.lineHeight?Math.max(t?0:1.2,r.lineHeight):1.2,c=void 0===r.lineGap?.2:r.lineGap;return{lineHeight:o*i,lineGap:c*i,lineNoGap:Math.max(1,o-c)*i}},t.selectFont=s,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139);var n=r(228),a=r(237),i=r(144);function s(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}t.FontFinder=class{constructor(e){this.fonts=new Map,this.cache=new Map,this.warned=new Set,this.defaultFont=null,this.add(e)}add(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const r=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,r)}addPdfFont(e){const t=e.cssFontInfo,r=t.fontFamily;let n=this.fonts.get(r);n||(n=Object.create(null),this.fonts.set(r,n),this.defaultFont||(this.defaultFont=n));let a="";const i=parseFloat(t.fontWeight);var s,o,c;0!==parseFloat(t.italicAngle)?a=i>=700?"bolditalic":"italic":i>=700&&(a="bold"),a||((e.name.includes("Bold")||(null===(s=e.psName)||void 0===s?void 0:s.includes("Bold")))&&(a="bold"),(e.name.includes("Italic")||e.name.endsWith("It")||(null===(o=e.psName)||void 0===o?void 0:o.includes("Italic"))||(null===(c=e.psName)||void 0===c?void 0:c.endsWith("It")))&&(a+="italic")),a||(a="regular"),n[a]=e}getDefault(){return this.defaultFont}find(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=this.fonts.get(e)||this.cache.get(e);if(r)return r;const n=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let a=e.replaceAll(n,"");if(r=this.fonts.get(a),r)return this.cache.set(e,r),r;a=a.toLowerCase();const s=[];for(const[e,t]of this.fonts.entries())e.replaceAll(n,"").toLowerCase().startsWith(a)&&s.push(t);if(0===s.length)for(const[,e]of this.fonts.entries()){var o;(null===(o=e.regular.name)||void 0===o?void 0:o.replaceAll(n,"").toLowerCase().startsWith(a))&&s.push(e)}if(0===s.length){a=a.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(n,"").toLowerCase().startsWith(a)&&s.push(t)}if(0===s.length)for(const e of this.fonts.values()){var c;(null===(c=e.regular.name)||void 0===c?void 0:c.replaceAll(n,"").toLowerCase().startsWith(a))&&s.push(e)}return s.length>=1?(1!==s.length&&t&&(0,i.warn)("XFA - Too many choices to guess the correct font: ".concat(e)),this.cache.set(e,s[0]),s[0]):(t&&!this.warned.has(e)&&(this.warned.add(e),(0,i.warn)("XFA - Cannot find the font: ".concat(e))),null)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextMeasure=void 0,r(139);var n=r(238);class a{constructor(e,t,r,a){if(this.lineHeight=r,this.paraMargin=t||{top:0,bottom:0,left:0,right:0},!e)return void([this.pdfFont,this.xfaFont]=this.defaultFont(a));this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=a.find(e.typeface);i?(this.pdfFont=(0,n.selectFont)(e,i),this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(a))):[this.pdfFont,this.xfaFont]=this.defaultFont(a)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(null!=t&&t.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class i{constructor(e,t,r,n){this.fontFinder=n,this.stack=[new a(e,t,r,n)]}pushData(e,t,r){const n=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=n.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=n.paraMargin[e]);const i=new a(e,t,r||n.lineHeight,this.fontFinder);i.pdfFont||(i.pdfFont=n.pdfFont),this.stack.push(i)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}t.TextMeasure=class{constructor(e,t,r,n){this.glyphs=[],this.fontSelector=new i(e,t,r,n),this.extraHeight=0}pushData(e,t,r){this.fontSelector.pushData(e,t,r)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),r=t.xfaFont.size;if(t.pdfFont){const n=t.xfaFont.letterSpacing,a=t.pdfFont,i=a.lineHeight||1.2,s=t.lineHeight||Math.max(1.2,i)*r,o=i-(void 0===a.lineGap?.2:a.lineGap),c=Math.max(1,o)*r,l=r/1e3,h=a.defaultWidth||a.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\\u2029\\n]/)){const e=a.encodeString(t).join(""),r=a.charsToGlyphs(e);for(const e of r){const t=e.width||h;this.glyphs.push([t*l+n,s,c,e.unicode,!1])}this.glyphs.push([0,0,0,"\\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\\u2029\\n]/)){for(const e of t.split(""))this.glyphs.push([r,1.2*r,r,e,!1]);this.glyphs.push([0,0,0,"\\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,r=0,n=0,a=0,i=0,s=0,o=!1,c=!0;for(let l=0,h=this.glyphs.length;le?(n=Math.max(n,i),i=0,a+=s,s=m,t=-1,r=0,o=!0,c=!1):(s=Math.max(m,s),r=i,i+=h,t=l):i+h>e?(a+=s,s=m,-1!==t?(l=t,n=Math.max(n,r),i=0,t=-1,r=0):(n=Math.max(n,i),i=h),o=!0,c=!1):(i+=h,s=Math.max(m,s))}return n=Math.max(n,i),a+=s+this.extraHeight,{width:1.02*n,height:a,isBroken:o}}}},(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=void 0,r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(228),a=r(237),i=r(144),s=r(149),o=r(234),c=r(241);const l=Symbol(),h=Symbol(),u=Symbol(),d=Symbol("_children"),f=Symbol(),g=Symbol(),p=Symbol(),m=Symbol(),b=Symbol(),y=Symbol(),w=Symbol(),v=Symbol(),x=Symbol(),S=Symbol("parent"),A=Symbol(),k=Symbol(),C=Symbol();let O=0;const F=o.NamespaceIds.datasets.id;class I{constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this[n.$namespaceId]=e,this[n.$nodeName]=t,this[w]=r,this[S]=null,this[d]=[],this[n.$uid]="".concat(t).concat(O++),this[n.$globalData]=null}get isXFAObject(){return!0}get isXFAObjectArray(){return!1}createNodes(e){let t=this,r=null;for(const{name:a,index:i}of e){for(let e=0,s=isFinite(i)?i:0;e<=s;e++){const e=t[n.$namespaceId]===F?-1:t[n.$namespaceId];r=new E(e,a),t[n.$appendChild](r)}t=r}return r}[n.$onChild](e){if(!this[w]||!this[n.$onChildCheck](e))return!1;const t=e[n.$nodeName],r=this[t];if(!(r instanceof T))return null!==r&&this[n.$removeChild](r),this[t]=e,this[n.$appendChild](e),!0;if(r.push(e))return this[n.$appendChild](e),!0;let a="";return this.id?a=" (id: ".concat(this.id,")"):this.name&&(a=" (name: ".concat(this.name," ").concat(this.h.value,")")),(0,i.warn)('XFA - node "'.concat(this[n.$nodeName],'"').concat(a,' has already enough "').concat(t,'"!')),!1}[n.$onChildCheck](e){return this.hasOwnProperty(e[n.$nodeName])&&e[n.$namespaceId]===this[n.$namespaceId]}[n.$isNsAgnostic](){return!1}[n.$acceptWhitespace](){return!1}[n.$isCDATAXml](){return!1}[n.$isBindable](){return!1}[n.$popPara](){this.para&&this[n.$getTemplateRoot]()[n.$extra].paraStack.pop()}[n.$pushPara](){this[n.$getTemplateRoot]()[n.$extra].paraStack.push(this.para)}[n.$setId](e){this.id&&this[n.$namespaceId]===o.NamespaceIds.template.id&&e.set(this.id,this)}[n.$getTemplateRoot](){return this[n.$globalData].template}[n.$isSplittable](){return!1}[n.$isThereMoreWidth](){return!1}[n.$appendChild](e){e[S]=this,this[d].push(e),!e[n.$globalData]&&this[n.$globalData]&&(e[n.$globalData]=this[n.$globalData])}[n.$removeChild](e){const t=this[d].indexOf(e);this[d].splice(t,1)}[n.$hasSettableValue](){return this.hasOwnProperty("value")}[n.$setValue](e){}[n.$onText](e){}[n.$finalize](){}[n.$clean](e){delete this[w],this[n.$cleanup]&&(e.clean(this[n.$cleanup]),delete this[n.$cleanup])}[n.$indexOf](e){return this[d].indexOf(e)}[n.$insertAt](e,t){t[S]=this,this[d].splice(e,0,t),!t[n.$globalData]&&this[n.$globalData]&&(t[n.$globalData]=this[n.$globalData])}[n.$isTransparent](){return!this.name}[n.$lastAttribute](){return""}[n.$text](){return 0===this[d].length?this[n.$content]:this[d].map((e=>e[n.$text]())).join("")}get[u](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof I||this[e]instanceof T)break;t.add(e)}}return(0,i.shadow)(this,u,e._attributes)}[n.$isDescendent](e){let t=this;for(;t;){if(t===e)return!0;t=t[n.$getParent]()}return!1}[n.$getParent](){return this[S]}[n.$getSubformParent](){return this[n.$getParent]()}[n.$getChildren](){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[e]:this[d]}[n.$dump](){const e=Object.create(null);this[n.$content]&&(e.$content=this[n.$content]);for(const t of Object.getOwnPropertyNames(this)){const r=this[t];null!==r&&(r instanceof I?e[t]=r[n.$dump]():r instanceof T?r.isEmpty()||(e[t]=r.dump()):e[t]=r)}return e}[n.$toStyle](){return null}[n.$toHTML](){return a.HTMLResult.EMPTY}*[n.$getContainedChildren](){for(const e of this[n.$getChildren]())yield e}*[m](e,t){for(const r of this[n.$getContainedChildren]())if(!e||t===e.has(r[n.$nodeName])){const e=this[n.$getAvailableSpace](),t=r[n.$toHTML](e);t.success||(this[n.$extra].failingNode=r),yield t}}[n.$flushHTML](){return null}[n.$addHTML](e,t){this[n.$extra].children.push(e)}[n.$getAvailableSpace](){}[n.$childrenToHTML](e){let{filter:t=null,include:r=!0}=e;if(this[n.$extra].generator){const e=this[n.$getAvailableSpace](),t=this[n.$extra].failingNode[n.$toHTML](e);if(!t.success)return t;t.html&&this[n.$addHTML](t.html,t.bbox),delete this[n.$extra].failingNode}else this[n.$extra].generator=this[m](t,r);for(;;){const e=this[n.$extra].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[n.$addHTML](t.html,t.bbox)}return this[n.$extra].generator=null,a.HTMLResult.EMPTY}[n.$setSetAttributes](e){this[k]=new Set(Object.keys(e))}[y](e){const t=this[u],r=this[k];return[...e].filter((e=>t.has(e)&&!r.has(e)))}[n.$resolvePrototypes](e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;for(const r of this[d])r[A](e,t)}[A](e,t){const r=this[b](e,t);r?this[l](r,e,t):this[n.$resolvePrototypes](e,t)}[b](e,t){const{use:r,usehref:a}=this;if(!r&&!a)return null;let s=null,o=null,h=null,u=r;if(a?(u=a,a.startsWith("#som(")&&a.endsWith(")")?o=a.slice(5,-1):a.startsWith(".#som(")&&a.endsWith(")")?o=a.slice(6,-1):a.startsWith("#")?h=a.slice(1):a.startsWith(".#")&&(h=a.slice(2))):r.startsWith("#")?h=r.slice(1):o=r,this.use=this.usehref="",h?s=e.get(h):(s=(0,c.searchNode)(e.get(n.$root),this,o,!0,!1),s&&(s=s[0])),!s)return(0,i.warn)("XFA - Invalid prototype reference: ".concat(u,".")),null;if(s[n.$nodeName]!==this[n.$nodeName])return(0,i.warn)("XFA - Incompatible prototype: ".concat(s[n.$nodeName]," !== ").concat(this[n.$nodeName],".")),null;if(t.has(s))return(0,i.warn)("XFA - Cycle detected in prototypes use."),null;t.add(s);const d=s[b](e,t);return d&&s[l](d,e,t),s[n.$resolvePrototypes](e,t),t.delete(s),s}[l](e,t,r){if(r.has(e))(0,i.warn)("XFA - Cycle detected in prototypes use.");else{!this[n.$content]&&e[n.$content]&&(this[n.$content]=e[n.$content]),new Set(r).add(e);for(const t of this[y](e[k]))this[t]=e[t],this[k]&&this[k].add(t);for(const a of Object.getOwnPropertyNames(this)){if(this[u].has(a))continue;const i=this[a],s=e[a];if(i instanceof T){for(const e of i[d])e[A](t,r);for(let a=i[d].length,o=s[d].length;aI[f](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[n.$clone](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch(r){(0,i.shadow)(e,t,this[t])}e[n.$uid]="".concat(e[n.$nodeName]).concat(O++),e[d]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[u].has(t)){e[t]=I[f](this[t]);continue}const r=this[t];e[t]=r instanceof T?new T(r[v]):null}for(const t of this[d]){const r=t[n.$nodeName],a=t[n.$clone]();e[d].push(a),a[S]=e,null===e[r]?e[r]=a:e[r][d].push(a)}return e}[n.$getChildren](){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[d].filter((t=>t[n.$nodeName]===e)):this[d]}[n.$getChildrenByClass](e){return this[e]}[n.$getChildrenByName](e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return Array.from(this[n.$getChildrenByNameIt](e,t,r))}[n.$getChildrenByNameIt](e,t){var r=this;let a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function*(){if("parent"!==e){for(const a of r[d])a[n.$nodeName]===e&&(yield a),a.name===e&&(yield a),(t||a[n.$isTransparent]())&&(yield*a[n.$getChildrenByNameIt](e,t,!1));a&&r[u].has(e)&&(yield new M(r,e,r[e]))}else yield r[S]}()}}t.XFAObject=I;class T{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0;this[v]=e,this[d]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){return this[d].length<=this[v]?(this[d].push(e),!0):((0,i.warn)('XFA - node "'.concat(e[n.$nodeName],'" accepts no more than ').concat(this[v]," children")),!1)}isEmpty(){return 0===this[d].length}dump(){return 1===this[d].length?this[d][0][n.$dump]():this[d].map((e=>e[n.$dump]()))}[n.$clone](){const e=new T(this[v]);return e[d]=this[d].map((e=>e[n.$clone]())),e}get children(){return this[d]}clear(){this[d].length=0}}t.XFAObjectArray=T;class M{constructor(e,t,r){this[S]=e,this[n.$nodeName]=t,this[n.$content]=r,this[n.$consumed]=!1,this[n.$uid]="attribute"+O++}[n.$getParent](){return this[S]}[n.$isDataValue](){return!0}[n.$getDataValue](){return this[n.$content].trim()}[n.$setValue](e){e=e.value||"",this[n.$content]=e.toString()}[n.$text](){return this[n.$content]}[n.$isDescendent](e){return this[S]===e||this[S][n.$isDescendent](e)}}t.XFAAttribute=M;class E extends I{constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(super(e,t),this[n.$content]="",this[g]=null,"#text"!==t){const e=new Map;this[h]=e;for(const[t,n]of Object.entries(r))e.set(t,new M(this,t,n));if(r.hasOwnProperty(n.$nsAttributes)){const e=r[n.$nsAttributes].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[g]=!1:"dataValue"===e&&(this[g]=!0))}}this[n.$consumed]=!1}[n.$toString](e){const t=this[n.$nodeName];if("#text"===t)return void e.push((0,s.encodeToXmlString)(this[n.$content]));const r=(0,i.utf8StringToString)(t),a=this[n.$namespaceId]===F?"xfa:":"";e.push("<".concat(a).concat(r));for(const[t,r]of this[h].entries()){const a=(0,i.utf8StringToString)(t);e.push(" ".concat(a,'="').concat((0,s.encodeToXmlString)(r[n.$content]),'"'))}if(null!==this[g]&&(this[g]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"')),this[n.$content]||0!==this[d].length){if(e.push(">"),this[n.$content])"string"==typeof this[n.$content]?e.push((0,s.encodeToXmlString)(this[n.$content])):this[n.$content][n.$toString](e);else for(const t of this[d])t[n.$toString](e);e.push(""))}else e.push("/>")}[n.$onChild](e){if(this[n.$content]){const e=new E(this[n.$namespaceId],"#text");this[n.$appendChild](e),e[n.$content]=this[n.$content],this[n.$content]=""}return this[n.$appendChild](e),!0}[n.$onText](e){this[n.$content]+=e}[n.$finalize](){if(this[n.$content]&&this[d].length>0){const e=new E(this[n.$namespaceId],"#text");this[n.$appendChild](e),e[n.$content]=this[n.$content],delete this[n.$content]}}[n.$toHTML](){return"#text"===this[n.$nodeName]?a.HTMLResult.success({name:"#text",value:this[n.$content]}):a.HTMLResult.EMPTY}[n.$getChildren](){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[d].filter((t=>t[n.$nodeName]===e)):this[d]}[n.$getAttributes](){return this[h]}[n.$getChildrenByClass](e){const t=this[h].get(e);return void 0!==t?t:this[n.$getChildren](e)}*[n.$getChildrenByNameIt](e,t){const r=this[h].get(e);r&&(yield r);for(const r of this[d])r[n.$nodeName]===e&&(yield r),t&&(yield*r[n.$getChildrenByNameIt](e,t))}*[n.$getAttributeIt](e,t){const r=this[h].get(e);!r||t&&r[n.$consumed]||(yield r);for(const r of this[d])yield*r[n.$getAttributeIt](e,t)}*[n.$getRealChildrenByNameIt](e,t,r){for(const a of this[d])a[n.$nodeName]!==e||r&&a[n.$consumed]||(yield a),t&&(yield*a[n.$getRealChildrenByNameIt](e,t,r))}[n.$isDataValue](){return null===this[g]?0===this[d].length||this[d][0][n.$namespaceId]===o.NamespaceIds.xhtml.id:this[g]}[n.$getDataValue](){return null===this[g]?0===this[d].length?this[n.$content].trim():this[d][0][n.$namespaceId]===o.NamespaceIds.xhtml.id?this[d][0][n.$text]().trim():null:this[n.$content].trim()}[n.$setValue](e){e=e.value||"",this[n.$content]=e.toString()}[n.$dump](){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=Object.create(null);e&&(t.$ns=this[n.$namespaceId]),this[n.$content]&&(t.$content=this[n.$content]),t.$name=this[n.$nodeName],t.children=[];for(const r of this[d])t.children.push(r[n.$dump](e));t.attributes=Object.create(null);for(const[e,r]of this[h])t.attributes[e]=r[n.$content];return t}}t.XmlObject=E;class P extends I{constructor(e,t){super(e,t),this[n.$content]=""}[n.$onText](e){this[n.$content]+=e}[n.$finalize](){}}t.ContentObject=P;class R extends P{constructor(e,t,r){super(e,t),this[x]=r}[n.$finalize](){this[n.$content]=(0,a.getKeyword)({data:this[n.$content],defaultValue:this[x][0],validate:e=>this[x].includes(e)})}[n.$clean](e){super[n.$clean](e),delete this[x]}}t.OptionObject=R;class N extends P{[n.$finalize](){this[n.$content]=this[n.$content].trim()}}t.StringObject=N;class D extends P{constructor(e,t,r,n){super(e,t),this[p]=r,this[C]=n}[n.$finalize](){this[n.$content]=(0,a.getInteger)({data:this[n.$content],defaultValue:this[p],validate:this[C]})}[n.$clean](e){super[n.$clean](e),delete this[p],delete this[C]}}t.IntegerObject=D,t.Option01=class extends D{constructor(e,t){super(e,t,0,(e=>1===e))}},t.Option10=class extends D{constructor(e,t){super(e,t,1,(e=>0===e))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDataNode=function(e,t,r){const i=h(r);if(!i)return null;if(i.some((e=>e.operator===o.dotDot)))return null;const s=c.get(i[0].name);let l=0;s?(e=s(e,t),l=1):e=t||e;for(let t=i.length;l4&&void 0!==arguments[4])||arguments[4];const i=h(r,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]);if(!i)return null;const s=c.get(i[0].name);let u,d=0;s?(u=!0,e=[s(e,t)],d=1):(u=null===t,e=[t||e]);for(let r=i.length;d0&&f.push(e)}if(0!==f.length||u||0!==d)e=isFinite(h)?f.filter((e=>he[h])):f.flat();else{const r=t[n.$getParent]();if(!(t=r))return null;d=-1,e=[t]}}return 0===e.length?null:e},r(139);var n=r(228),a=r(144);const i=/^[^.[]+/,s=/^[^\\]]+/,o={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},c=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[n.$getChildren]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),l=new WeakMap;function h(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.match(i);if(!n)return null;let[c]=n;const l=[{name:c,cacheName:"."+c,index:0,js:null,formCalc:null,operator:o.dot}];let h=c.length;for(;h{Object.defineProperty(t,"__esModule",{value:!0}),t.DataHandler=void 0,r(139);var n=r(228);t.DataHandler=class{constructor(e,t){this.data=t,this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[n.$getChildren]()]];for(;t.length>0;){const r=t.at(-1),[a,i]=r;if(a+1===i.length){t.pop();continue}const s=i[++r[0]],o=e.get(s[n.$uid]);if(o)s[n.$setValue](o);else{const t=s[n.$getAttributes]();for(const r of t.values()){const t=e.get(r[n.$uid]);if(t){r[n.$setValue](t);break}}}const c=s[n.$getChildren]();c.length>0&&t.push([-1,c])}const r=[''];if(this.dataset)for(const e of this.dataset[n.$getChildren]())"data"!==e[n.$nodeName]&&e[n.$toString](r);return this.data[n.$toString](r),r.push(""),r.join("")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XFAParser=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139);var n=r(228),a=r(217),i=r(244),s=r(144);class o extends a.XMLParserBase{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super(),this._builder=new i.Builder(e),this._stack=[],this._globalData={usedTypefaces:new Set},this._ids=new Map,this._current=this._builder.buildRoot(this._ids),this._errorCode=a.XMLParserErrorCode.NoError,this._whiteRegex=/^\\s+$/,this._nbsps=/\\xa0+/g,this._richText=t}parse(e){if(this.parseXml(e),this._errorCode===a.XMLParserErrorCode.NoError)return this._current[n.$finalize](),this._current.element}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" ")),this._richText||this._current[n.$acceptWhitespace]()?this._current[n.$onText](e,this._richText):this._whiteRegex.test(e)||this._current[n.$onText](e.trim())}onCdata(e){this._current[n.$onText](e)}_mkAttributes(e,t){let r=null,a=null;const i=Object.create({});for(const{name:c,value:l}of e)if("xmlns"===c)r?(0,s.warn)("XFA - multiple namespace definition in <".concat(t,">")):r=l;else if(c.startsWith("xmlns:")){const e=c.substring(6);a||(a=[]),a.push({prefix:e,value:l})}else{const e=c.indexOf(":");if(-1===e)i[c]=l;else{var o;let t=i[n.$nsAttributes];t||(t=i[n.$nsAttributes]=Object.create(null));const[r,a]=[c.slice(0,e),c.slice(e+1)];((o=t)[r]||(o[r]=Object.create(null)))[a]=l}}return[r,a,i]}_getNameAndPrefix(e,t){const r=e.indexOf(":");return-1===r?[e,null]:[e.substring(r+1),t?"":e.substring(0,r)]}onBeginElement(e,t,r){const[a,i,s]=this._mkAttributes(t,e),[o,c]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:c,name:o,attributes:s,namespace:a,prefixes:i});l[n.$globalData]=this._globalData,r?(l[n.$finalize](),this._current[n.$onChild](l)&&l[n.$setId](this._ids),l[n.$clean](this._builder)):(this._stack.push(this._current),this._current=l)}onEndElement(e){const t=this._current;if(t[n.$isCDATAXml]()&&"string"==typeof t[n.$content]){const e=new o;e._globalData=this._globalData;const r=e.parse(t[n.$content]);t[n.$content]=null,t[n.$onChild](r)}t[n.$finalize](),this._current=this._stack.pop(),this._current[n.$onChild](t)&&t[n.$setId](this._ids),t[n.$clean](this._builder)}onError(e){this._errorCode=e}}t.XFAParser=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Builder=void 0,r(139);var n=r(234),a=r(228),i=r(245),s=r(230),o=r(254),c=r(144),l=r(240);class h extends l.XFAObject{constructor(e){super(-1,"root",Object.create(null)),this.element=null,this[a.$ids]=e}[a.$onChild](e){return this.element=e,!0}[a.$finalize](){super[a.$finalize](),this.element.template instanceof s.Template&&(this[a.$ids].set(a.$root,this.element),this.element.template[a.$resolvePrototypes](this[a.$ids]),this.element.template[a.$ids]=this[a.$ids])}}class u extends l.XFAObject{constructor(){super(-1,"",Object.create(null))}[a.$onChild](e){return!1}}t.Builder=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._namespaceStack=[],this._nsAgnosticLevel=0,this._namespacePrefixes=new Map,this._namespaces=new Map,this._nextNsId=Math.max(...Object.values(n.NamespaceIds).map((e=>{let{id:t}=e;return t}))),this._currentNamespace=e||new o.UnknownNamespace(++this._nextNsId)}buildRoot(e){return new h(e)}build(e){let{nsPrefix:t,name:r,attributes:s,namespace:o,prefixes:c}=e;const l=null!==o;if(l&&(this._namespaceStack.push(this._currentNamespace),this._currentNamespace=this._searchNamespace(o)),c&&this._addNamespacePrefix(c),s.hasOwnProperty(a.$nsAttributes)){const e=i.NamespaceSetUp.datasets,t=s[a.$nsAttributes];let r=null;for(const[n,a]of Object.entries(t))if(this._getNamespaceToUse(n)===e){r={xfa:a};break}r?s[a.$nsAttributes]=r:delete s[a.$nsAttributes]}const h=this._getNamespaceToUse(t),d=(null==h?void 0:h[n.$buildXFAObject](r,s))||new u;return d[a.$isNsAgnostic]()&&this._nsAgnosticLevel++,(l||c||d[a.$isNsAgnostic]())&&(d[a.$cleanup]={hasNamespace:l,prefixes:c,nsAgnostic:d[a.$isNsAgnostic]()}),d}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[r,{check:a}]of Object.entries(n.NamespaceIds))if(a(e)){if(t=i.NamespaceSetUp[r],t)return this._namespaces.set(e,t),t;break}return t=new o.UnknownNamespace(++this._nextNsId),this._namespaces.set(e,t),t}_addNamespacePrefix(e){for(const{prefix:t,value:r}of e){const e=this._searchNamespace(r);let n=this._namespacePrefixes.get(t);n||(n=[],this._namespacePrefixes.set(t,n)),n.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);return(null==t?void 0:t.length)>0?t.at(-1):((0,c.warn)("Unknown namespace prefix: ".concat(e,".")),null)}clean(e){const{hasNamespace:t,prefixes:r,nsAgnostic:n}=e;t&&(this._currentNamespace=this._namespaceStack.pop()),r&&r.forEach((e=>{let{prefix:t}=e;this._namespacePrefixes.get(t).pop()})),n&&this._nsAgnosticLevel--}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NamespaceSetUp=void 0;var n=r(246),a=r(247),i=r(248),s=r(249),o=r(250),c=r(251),l=r(230),h=r(252),u=r(253);const d={config:n.ConfigNamespace,connection:a.ConnectionSetNamespace,datasets:i.DatasetsNamespace,localeSet:s.LocaleSetNamespace,signature:o.SignatureNamespace,stylesheet:c.StylesheetNamespace,template:l.TemplateNamespace,xdp:h.XdpNamespace,xhtml:u.XhtmlNamespace};t.NamespaceSetUp=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ConfigNamespace=void 0,r(139);var n=r(234),a=r(228),i=r(240),s=r(237),o=r(144);const c=n.NamespaceIds.config.id;class l extends i.XFAObject{constructor(e){super(c,"acrobat",!0),this.acrobat7=null,this.autoSave=null,this.common=null,this.validate=null,this.validateApprovalSignatures=null,this.submitUrl=new i.XFAObjectArray}}class h extends i.XFAObject{constructor(e){super(c,"acrobat7",!0),this.dynamicRender=null}}class u extends i.OptionObject{constructor(e){super(c,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class d extends i.OptionObject{constructor(e){super(c,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class f extends i.Option01{constructor(e){super(c,"addSilentPrint")}}class g extends i.Option01{constructor(e){super(c,"addViewerPreferences")}}class p extends i.Option10{constructor(e){super(c,"adjustData")}}class m extends i.IntegerObject{constructor(e){super(c,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class b extends i.XFAObject{constructor(e){super(c,"agent",!0),this.name=e.name?e.name.trim():"",this.common=new i.XFAObjectArray}}class y extends i.ContentObject{constructor(e){super(c,"alwaysEmbed")}}class w extends i.StringObject{constructor(e){super(c,"amd")}}class v extends i.XFAObject{constructor(e){super(c,"area"),this.level=(0,s.getInteger)({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3}),this.name=(0,s.getStringOption)(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class x extends i.OptionObject{constructor(e){super(c,"attributes",["preserve","delegate","ignore"])}}class S extends i.OptionObject{constructor(e){super(c,"autoSave",["disabled","enabled"])}}class A extends i.StringObject{constructor(e){super(c,"base")}}class k extends i.XFAObject{constructor(e){super(c,"batchOutput"),this.format=(0,s.getStringOption)(e.format,["none","concat","zip","zipCompress"])}}class C extends i.ContentObject{constructor(e){super(c,"behaviorOverride")}[a.$finalize](){this[a.$content]=new Map(this[a.$content].trim().split(/\\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class O extends i.XFAObject{constructor(e){super(c,"cache",!0),this.templateCache=null}}class F extends i.Option01{constructor(e){super(c,"change")}}class I extends i.XFAObject{constructor(e){super(c,"common",!0),this.data=null,this.locale=null,this.localeSet=null,this.messaging=null,this.suppressBanner=null,this.template=null,this.validationMessaging=null,this.versionControl=null,this.log=new i.XFAObjectArray}}class T extends i.XFAObject{constructor(e){super(c,"compress"),this.scope=(0,s.getStringOption)(e.scope,["imageOnly","document"])}}class M extends i.Option01{constructor(e){super(c,"compressLogicalStructure")}}class E extends i.Option10{constructor(e){super(c,"compressObjectStream")}}class P extends i.XFAObject{constructor(e){super(c,"compression",!0),this.compressLogicalStructure=null,this.compressObjectStream=null,this.level=null,this.type=null}}class R extends i.XFAObject{constructor(e){super(c,"config",!0),this.acrobat=null,this.present=null,this.trace=null,this.agent=new i.XFAObjectArray}}class N extends i.OptionObject{constructor(e){super(c,"conformance",["A","B"])}}class D extends i.Option01{constructor(e){super(c,"contentCopy")}}class B extends i.IntegerObject{constructor(e){super(c,"copies",1,(e=>e>=1))}}class L extends i.StringObject{constructor(e){super(c,"creator")}}class _ extends i.IntegerObject{constructor(e){super(c,"currentPage",0,(e=>e>=0))}}class j extends i.XFAObject{constructor(e){super(c,"data",!0),this.adjustData=null,this.attributes=null,this.incrementalLoad=null,this.outputXSL=null,this.range=null,this.record=null,this.startNode=null,this.uri=null,this.window=null,this.xsl=null,this.excludeNS=new i.XFAObjectArray,this.transform=new i.XFAObjectArray}}class U extends i.XFAObject{constructor(e){super(c,"debug",!0),this.uri=null}}class $ extends i.ContentObject{constructor(e){super(c,"defaultTypeface"),this.writingScript=(0,s.getStringOption)(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class X extends i.OptionObject{constructor(e){super(c,"destination",["pdf","pcl","ps","webClient","zpl"])}}class H extends i.Option01{constructor(e){super(c,"documentAssembly")}}class q extends i.XFAObject{constructor(e){super(c,"driver",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class z extends i.OptionObject{constructor(e){super(c,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class G extends i.OptionObject{constructor(e){super(c,"dynamicRender",["forbidden","required"])}}class W extends i.Option01{constructor(e){super(c,"embed")}}class V extends i.Option01{constructor(e){super(c,"encrypt")}}class K extends i.XFAObject{constructor(e){super(c,"encryption",!0),this.encrypt=null,this.encryptionLevel=null,this.permissions=null}}class Y extends i.OptionObject{constructor(e){super(c,"encryptionLevel",["40bit","128bit"])}}class J extends i.StringObject{constructor(e){super(c,"enforce")}}class Z extends i.XFAObject{constructor(e){super(c,"equate"),this.force=(0,s.getInteger)({data:e.force,defaultValue:1,validate:e=>0===e}),this.from=e.from||"",this.to=e.to||""}}class Q extends i.XFAObject{constructor(e){super(c,"equateRange"),this.from=e.from||"",this.to=e.to||"",this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\\+([0-9a-fA-F]+)/,r=this._unicodeRange;for(let n of r.split(",").map((e=>e.trim())).filter((e=>!!e)))n=n.split("-",2).map((e=>{const r=e.match(t);return r?parseInt(r[1],16):0})),1===n.length&&n.push(n[0]),e.push(n);return(0,o.shadow)(this,"unicodeRange",e)}}class ee extends i.ContentObject{constructor(e){super(c,"exclude")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class te extends i.StringObject{constructor(e){super(c,"excludeNS")}}class re extends i.OptionObject{constructor(e){super(c,"flipLabel",["usePrinterSetting","on","off"])}}class ne extends i.XFAObject{constructor(e){super(c,"fontInfo",!0),this.embed=null,this.map=null,this.subsetBelow=null,this.alwaysEmbed=new i.XFAObjectArray,this.defaultTypeface=new i.XFAObjectArray,this.neverEmbed=new i.XFAObjectArray}}class ae extends i.Option01{constructor(e){super(c,"formFieldFilling")}}class ie extends i.StringObject{constructor(e){super(c,"groupParent")}}class se extends i.OptionObject{constructor(e){super(c,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class oe extends i.StringObject{constructor(e){super(c,"includeXDPContent")}}class ce extends i.OptionObject{constructor(e){super(c,"incrementalLoad",["none","forwardOnly"])}}class le extends i.Option01{constructor(e){super(c,"incrementalMerge")}}class he extends i.Option01{constructor(e){super(c,"interactive")}}class ue extends i.OptionObject{constructor(e){super(c,"jog",["usePrinterSetting","none","pageSet"])}}class de extends i.XFAObject{constructor(e){super(c,"labelPrinter",!0),this.name=(0,s.getStringOption)(e.name,["zpl","dpl","ipl","tcpl"]),this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class fe extends i.OptionObject{constructor(e){super(c,"layout",["paginate","panel"])}}class ge extends i.IntegerObject{constructor(e){super(c,"level",0,(e=>e>0))}}class pe extends i.Option01{constructor(e){super(c,"linearized")}}class me extends i.StringObject{constructor(e){super(c,"locale")}}class be extends i.StringObject{constructor(e){super(c,"localeSet")}}class ye extends i.XFAObject{constructor(e){super(c,"log",!0),this.mode=null,this.threshold=null,this.to=null,this.uri=null}}class we extends i.XFAObject{constructor(e){super(c,"map",!0),this.equate=new i.XFAObjectArray,this.equateRange=new i.XFAObjectArray}}class ve extends i.XFAObject{constructor(e){super(c,"mediumInfo",!0),this.map=null}}class xe extends i.XFAObject{constructor(e){super(c,"message",!0),this.msgId=null,this.severity=null}}class Se extends i.XFAObject{constructor(e){super(c,"messaging",!0),this.message=new i.XFAObjectArray}}class Ae extends i.OptionObject{constructor(e){super(c,"mode",["append","overwrite"])}}class ke extends i.Option01{constructor(e){super(c,"modifyAnnots")}}class Ce extends i.IntegerObject{constructor(e){super(c,"msgId",1,(e=>e>=1))}}class Oe extends i.StringObject{constructor(e){super(c,"nameAttr")}}class Fe extends i.ContentObject{constructor(e){super(c,"neverEmbed")}}class Ie extends i.IntegerObject{constructor(e){super(c,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class Te extends i.XFAObject{constructor(e){super(c,"openAction",!0),this.destination=null}}class Me extends i.XFAObject{constructor(e){super(c,"output",!0),this.to=null,this.type=null,this.uri=null}}class Ee extends i.StringObject{constructor(e){super(c,"outputBin")}}class Pe extends i.XFAObject{constructor(e){super(c,"outputXSL",!0),this.uri=null}}class Re extends i.OptionObject{constructor(e){super(c,"overprint",["none","both","draw","field"])}}class Ne extends i.StringObject{constructor(e){super(c,"packets")}[a.$finalize](){"*"!==this[a.$content]&&(this[a.$content]=this[a.$content].trim().split(/\\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class De extends i.XFAObject{constructor(e){super(c,"pageOffset"),this.x=(0,s.getInteger)({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0}),this.y=(0,s.getInteger)({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class Be extends i.StringObject{constructor(e){super(c,"pageRange")}[a.$finalize](){const e=this[a.$content].trim().split(/\\s+/).map((e=>parseInt(e,10))),t=[];for(let r=0,n=e.length;r!1))}}class Ue extends i.XFAObject{constructor(e){super(c,"pcl",!0),this.name=e.name||"",this.batchOutput=null,this.fontInfo=null,this.jog=null,this.mediumInfo=null,this.outputBin=null,this.pageOffset=null,this.staple=null,this.xdc=null}}class $e extends i.XFAObject{constructor(e){super(c,"pdf",!0),this.name=e.name||"",this.adobeExtensionLevel=null,this.batchOutput=null,this.compression=null,this.creator=null,this.encryption=null,this.fontInfo=null,this.interactive=null,this.linearized=null,this.openAction=null,this.pdfa=null,this.producer=null,this.renderPolicy=null,this.scriptModel=null,this.silentPrint=null,this.submitFormat=null,this.tagged=null,this.version=null,this.viewerPreferences=null,this.xdc=null}}class Xe extends i.XFAObject{constructor(e){super(c,"pdfa",!0),this.amd=null,this.conformance=null,this.includeXDPContent=null,this.part=null}}class He extends i.XFAObject{constructor(e){super(c,"permissions",!0),this.accessibleContent=null,this.change=null,this.contentCopy=null,this.documentAssembly=null,this.formFieldFilling=null,this.modifyAnnots=null,this.plaintextMetadata=null,this.print=null,this.printHighQuality=null}}class qe extends i.Option01{constructor(e){super(c,"pickTrayByPDFSize")}}class ze extends i.StringObject{constructor(e){super(c,"picture")}}class Ge extends i.Option01{constructor(e){super(c,"plaintextMetadata")}}class We extends i.OptionObject{constructor(e){super(c,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Ve extends i.XFAObject{constructor(e){super(c,"present",!0),this.behaviorOverride=null,this.cache=null,this.common=null,this.copies=null,this.destination=null,this.incrementalMerge=null,this.layout=null,this.output=null,this.overprint=null,this.pagination=null,this.paginationOverride=null,this.script=null,this.validate=null,this.xdp=null,this.driver=new i.XFAObjectArray,this.labelPrinter=new i.XFAObjectArray,this.pcl=new i.XFAObjectArray,this.pdf=new i.XFAObjectArray,this.ps=new i.XFAObjectArray,this.submitUrl=new i.XFAObjectArray,this.webClient=new i.XFAObjectArray,this.zpl=new i.XFAObjectArray}}class Ke extends i.Option01{constructor(e){super(c,"print")}}class Ye extends i.Option01{constructor(e){super(c,"printHighQuality")}}class Je extends i.OptionObject{constructor(e){super(c,"printScaling",["appdefault","noScaling"])}}class Ze extends i.StringObject{constructor(e){super(c,"printerName")}}class Qe extends i.StringObject{constructor(e){super(c,"producer")}}class et extends i.XFAObject{constructor(e){super(c,"ps",!0),this.name=e.name||"",this.batchOutput=null,this.fontInfo=null,this.jog=null,this.mediumInfo=null,this.outputBin=null,this.staple=null,this.xdc=null}}class tt extends i.ContentObject{constructor(e){super(c,"range")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s*,\\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>(1===e.length&&e.push(e[0]),e)))}}class rt extends i.ContentObject{constructor(e){super(c,"record")}[a.$finalize](){this[a.$content]=this[a.$content].trim();const e=parseInt(this[a.$content],10);!isNaN(e)&&e>=0&&(this[a.$content]=e)}}class nt extends i.ContentObject{constructor(e){super(c,"relevant")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s+/)}}class at extends i.ContentObject{constructor(e){super(c,"rename")}[a.$finalize](){this[a.$content]=this[a.$content].trim(),(this[a.$content].toLowerCase().startsWith("xml")||new RegExp("[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*","u").test(this[a.$content]))&&(0,o.warn)("XFA - Rename: invalid XFA name")}}class it extends i.OptionObject{constructor(e){super(c,"renderPolicy",["server","client"])}}class st extends i.OptionObject{constructor(e){super(c,"runScripts",["both","client","none","server"])}}class ot extends i.XFAObject{constructor(e){super(c,"script",!0),this.currentPage=null,this.exclude=null,this.runScripts=null}}class ct extends i.OptionObject{constructor(e){super(c,"scriptModel",["XFA","none"])}}class lt extends i.OptionObject{constructor(e){super(c,"severity",["ignore","error","information","trace","warning"])}}class ht extends i.XFAObject{constructor(e){super(c,"silentPrint",!0),this.addSilentPrint=null,this.printerName=null}}class ut extends i.XFAObject{constructor(e){super(c,"staple"),this.mode=(0,s.getStringOption)(e.mode,["usePrinterSetting","on","off"])}}class dt extends i.StringObject{constructor(e){super(c,"startNode")}}class ft extends i.IntegerObject{constructor(e){super(c,"startPage",0,(e=>!0))}}class gt extends i.OptionObject{constructor(e){super(c,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class pt extends i.StringObject{constructor(e){super(c,"submitUrl")}}class mt extends i.IntegerObject{constructor(e){super(c,"subsetBelow",100,(e=>e>=0&&e<=100))}}class bt extends i.Option01{constructor(e){super(c,"suppressBanner")}}class yt extends i.Option01{constructor(e){super(c,"tagged")}}class wt extends i.XFAObject{constructor(e){super(c,"template",!0),this.base=null,this.relevant=null,this.startPage=null,this.uri=null,this.xsl=null}}class vt extends i.OptionObject{constructor(e){super(c,"threshold",["trace","error","information","warning"])}}class xt extends i.OptionObject{constructor(e){super(c,"to",["null","memory","stderr","stdout","system","uri"])}}class St extends i.XFAObject{constructor(e){super(c,"templateCache"),this.maxEntries=(0,s.getInteger)({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class At extends i.XFAObject{constructor(e){super(c,"trace",!0),this.area=new i.XFAObjectArray}}class kt extends i.XFAObject{constructor(e){super(c,"transform",!0),this.groupParent=null,this.ifEmpty=null,this.nameAttr=null,this.picture=null,this.presence=null,this.rename=null,this.whitespace=null}}class Ct extends i.OptionObject{constructor(e){super(c,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Ot extends i.StringObject{constructor(e){super(c,"uri")}}class Ft extends i.OptionObject{constructor(e){super(c,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class It extends i.ContentObject{constructor(e){super(c,"validateApprovalSignatures")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class Tt extends i.OptionObject{constructor(e){super(c,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Mt extends i.OptionObject{constructor(e){super(c,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class Et extends i.XFAObject{constructor(e){super(c,"VersionControl"),this.outputBelow=(0,s.getStringOption)(e.outputBelow,["warn","error","update"]),this.sourceAbove=(0,s.getStringOption)(e.sourceAbove,["warn","error"]),this.sourceBelow=(0,s.getStringOption)(e.sourceBelow,["update","maintain"])}}class Pt extends i.XFAObject{constructor(e){super(c,"viewerPreferences",!0),this.ADBE_JSConsole=null,this.ADBE_JSDebugger=null,this.addViewerPreferences=null,this.duplexOption=null,this.enforce=null,this.numberOfCopies=null,this.pageRange=null,this.pickTrayByPDFSize=null,this.printScaling=null}}class Rt extends i.XFAObject{constructor(e){super(c,"webClient",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class Nt extends i.OptionObject{constructor(e){super(c,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Dt extends i.ContentObject{constructor(e){super(c,"window")}[a.$finalize](){const e=this[a.$content].trim().split(/\\s*,\\s*/,2).map((e=>parseInt(e,10)));e.some((e=>isNaN(e)))?this[a.$content]=[0,0]:(1===e.length&&e.push(e[0]),this[a.$content]=e)}}class Bt extends i.XFAObject{constructor(e){super(c,"xdc",!0),this.uri=new i.XFAObjectArray,this.xsl=new i.XFAObjectArray}}class Lt extends i.XFAObject{constructor(e){super(c,"xdp",!0),this.packets=null}}class _t extends i.XFAObject{constructor(e){super(c,"xsl",!0),this.debug=null,this.uri=null}}class jt extends i.XFAObject{constructor(e){super(c,"zpl",!0),this.name=e.name?e.name.trim():"",this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class Ut{static[n.$buildXFAObject](e,t){if(Ut.hasOwnProperty(e))return Ut[e](t)}static acrobat(e){return new l(e)}static acrobat7(e){return new h(e)}static ADBE_JSConsole(e){return new u(e)}static ADBE_JSDebugger(e){return new d(e)}static addSilentPrint(e){return new f(e)}static addViewerPreferences(e){return new g(e)}static adjustData(e){return new p(e)}static adobeExtensionLevel(e){return new m(e)}static agent(e){return new b(e)}static alwaysEmbed(e){return new y(e)}static amd(e){return new w(e)}static area(e){return new v(e)}static attributes(e){return new x(e)}static autoSave(e){return new S(e)}static base(e){return new A(e)}static batchOutput(e){return new k(e)}static behaviorOverride(e){return new C(e)}static cache(e){return new O(e)}static change(e){return new F(e)}static common(e){return new I(e)}static compress(e){return new T(e)}static compressLogicalStructure(e){return new M(e)}static compressObjectStream(e){return new E(e)}static compression(e){return new P(e)}static config(e){return new R(e)}static conformance(e){return new N(e)}static contentCopy(e){return new D(e)}static copies(e){return new B(e)}static creator(e){return new L(e)}static currentPage(e){return new _(e)}static data(e){return new j(e)}static debug(e){return new U(e)}static defaultTypeface(e){return new $(e)}static destination(e){return new X(e)}static documentAssembly(e){return new H(e)}static driver(e){return new q(e)}static duplexOption(e){return new z(e)}static dynamicRender(e){return new G(e)}static embed(e){return new W(e)}static encrypt(e){return new V(e)}static encryption(e){return new K(e)}static encryptionLevel(e){return new Y(e)}static enforce(e){return new J(e)}static equate(e){return new Z(e)}static equateRange(e){return new Q(e)}static exclude(e){return new ee(e)}static excludeNS(e){return new te(e)}static flipLabel(e){return new re(e)}static fontInfo(e){return new ne(e)}static formFieldFilling(e){return new ae(e)}static groupParent(e){return new ie(e)}static ifEmpty(e){return new se(e)}static includeXDPContent(e){return new oe(e)}static incrementalLoad(e){return new ce(e)}static incrementalMerge(e){return new le(e)}static interactive(e){return new he(e)}static jog(e){return new ue(e)}static labelPrinter(e){return new de(e)}static layout(e){return new fe(e)}static level(e){return new ge(e)}static linearized(e){return new pe(e)}static locale(e){return new me(e)}static localeSet(e){return new be(e)}static log(e){return new ye(e)}static map(e){return new we(e)}static mediumInfo(e){return new ve(e)}static message(e){return new xe(e)}static messaging(e){return new Se(e)}static mode(e){return new Ae(e)}static modifyAnnots(e){return new ke(e)}static msgId(e){return new Ce(e)}static nameAttr(e){return new Oe(e)}static neverEmbed(e){return new Fe(e)}static numberOfCopies(e){return new Ie(e)}static openAction(e){return new Te(e)}static output(e){return new Me(e)}static outputBin(e){return new Ee(e)}static outputXSL(e){return new Pe(e)}static overprint(e){return new Re(e)}static packets(e){return new Ne(e)}static pageOffset(e){return new De(e)}static pageRange(e){return new Be(e)}static pagination(e){return new Le(e)}static paginationOverride(e){return new _e(e)}static part(e){return new je(e)}static pcl(e){return new Ue(e)}static pdf(e){return new $e(e)}static pdfa(e){return new Xe(e)}static permissions(e){return new He(e)}static pickTrayByPDFSize(e){return new qe(e)}static picture(e){return new ze(e)}static plaintextMetadata(e){return new Ge(e)}static presence(e){return new We(e)}static present(e){return new Ve(e)}static print(e){return new Ke(e)}static printHighQuality(e){return new Ye(e)}static printScaling(e){return new Je(e)}static printerName(e){return new Ze(e)}static producer(e){return new Qe(e)}static ps(e){return new et(e)}static range(e){return new tt(e)}static record(e){return new rt(e)}static relevant(e){return new nt(e)}static rename(e){return new at(e)}static renderPolicy(e){return new it(e)}static runScripts(e){return new st(e)}static script(e){return new ot(e)}static scriptModel(e){return new ct(e)}static severity(e){return new lt(e)}static silentPrint(e){return new ht(e)}static staple(e){return new ut(e)}static startNode(e){return new dt(e)}static startPage(e){return new ft(e)}static submitFormat(e){return new gt(e)}static submitUrl(e){return new pt(e)}static subsetBelow(e){return new mt(e)}static suppressBanner(e){return new bt(e)}static tagged(e){return new yt(e)}static template(e){return new wt(e)}static templateCache(e){return new St(e)}static threshold(e){return new vt(e)}static to(e){return new xt(e)}static trace(e){return new At(e)}static transform(e){return new kt(e)}static type(e){return new Ct(e)}static uri(e){return new Ot(e)}static validate(e){return new Ft(e)}static validateApprovalSignatures(e){return new It(e)}static validationMessaging(e){return new Tt(e)}static version(e){return new Mt(e)}static versionControl(e){return new Et(e)}static viewerPreferences(e){return new Pt(e)}static webClient(e){return new Rt(e)}static whitespace(e){return new Nt(e)}static window(e){return new Dt(e)}static xdc(e){return new Bt(e)}static xdp(e){return new Lt(e)}static xsl(e){return new _t(e)}static zpl(e){return new jt(e)}}t.ConfigNamespace=Ut},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectionSetNamespace=void 0;var n=r(234),a=r(240);const i=n.NamespaceIds.connectionSet.id;class s extends a.XFAObject{constructor(e){super(i,"connectionSet",!0),this.wsdlConnection=new a.XFAObjectArray,this.xmlConnection=new a.XFAObjectArray,this.xsdConnection=new a.XFAObjectArray}}class o extends a.XFAObject{constructor(e){super(i,"effectiveInputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class c extends a.XFAObject{constructor(e){super(i,"effectiveOutputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class l extends a.StringObject{constructor(e){super(i,"operation"),this.id=e.id||"",this.input=e.input||"",this.name=e.name||"",this.output=e.output||"",this.use=e.use||"",this.usehref=e.usehref||""}}class h extends a.StringObject{constructor(e){super(i,"rootElement"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class u extends a.StringObject{constructor(e){super(i,"soapAction"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class d extends a.StringObject{constructor(e){super(i,"soapAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class f extends a.StringObject{constructor(e){super(i,"uri"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class g extends a.StringObject{constructor(e){super(i,"wsdlAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class p extends a.XFAObject{constructor(e){super(i,"wsdlConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.effectiveInputPolicy=null,this.effectiveOutputPolicy=null,this.operation=null,this.soapAction=null,this.soapAddress=null,this.wsdlAddress=null}}class m extends a.XFAObject{constructor(e){super(i,"xmlConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.uri=null}}class b extends a.XFAObject{constructor(e){super(i,"xsdConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.rootElement=null,this.uri=null}}class y{static[n.$buildXFAObject](e,t){if(y.hasOwnProperty(e))return y[e](t)}static connectionSet(e){return new s(e)}static effectiveInputPolicy(e){return new o(e)}static effectiveOutputPolicy(e){return new c(e)}static operation(e){return new l(e)}static rootElement(e){return new h(e)}static soapAction(e){return new u(e)}static soapAddress(e){return new d(e)}static uri(e){return new f(e)}static wsdlAddress(e){return new g(e)}static wsdlConnection(e){return new p(e)}static xmlConnection(e){return new m(e)}static xsdConnection(e){return new b(e)}}t.ConnectionSetNamespace=y},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetsNamespace=void 0;var n=r(228),a=r(234),i=r(240);const s=a.NamespaceIds.datasets.id;class o extends i.XmlObject{constructor(e){super(s,"data",e)}[n.$isNsAgnostic](){return!0}}class c extends i.XFAObject{constructor(e){super(s,"datasets",!0),this.data=null,this.Signature=null}[n.$onChild](e){const t=e[n.$nodeName];("data"===t&&e[n.$namespaceId]===s||"Signature"===t&&e[n.$namespaceId]===a.NamespaceIds.signature.id)&&(this[t]=e),this[n.$appendChild](e)}}class l{static[a.$buildXFAObject](e,t){if(l.hasOwnProperty(e))return l[e](t)}static datasets(e){return new c(e)}static data(e){return new o(e)}}t.DatasetsNamespace=l},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LocaleSetNamespace=void 0;var n=r(234),a=r(240),i=r(237);const s=n.NamespaceIds.localeSet.id;class o extends a.XFAObject{constructor(e){super(s,"calendarSymbols",!0),this.name="gregorian",this.dayNames=new a.XFAObjectArray(2),this.eraNames=null,this.meridiemNames=null,this.monthNames=new a.XFAObjectArray(2)}}class c extends a.StringObject{constructor(e){super(s,"currencySymbol"),this.name=(0,i.getStringOption)(e.name,["symbol","isoname","decimal"])}}class l extends a.XFAObject{constructor(e){super(s,"currencySymbols",!0),this.currencySymbol=new a.XFAObjectArray(3)}}class h extends a.StringObject{constructor(e){super(s,"datePattern"),this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class u extends a.XFAObject{constructor(e){super(s,"datePatterns",!0),this.datePattern=new a.XFAObjectArray(4)}}class d extends a.ContentObject{constructor(e){super(s,"dateTimeSymbols")}}class f extends a.StringObject{constructor(e){super(s,"day")}}class g extends a.XFAObject{constructor(e){super(s,"dayNames",!0),this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e}),this.day=new a.XFAObjectArray(7)}}class p extends a.StringObject{constructor(e){super(s,"era")}}class m extends a.XFAObject{constructor(e){super(s,"eraNames",!0),this.era=new a.XFAObjectArray(2)}}class b extends a.XFAObject{constructor(e){super(s,"locale",!0),this.desc=e.desc||"",this.name="isoname",this.calendarSymbols=null,this.currencySymbols=null,this.datePatterns=null,this.dateTimeSymbols=null,this.numberPatterns=null,this.numberSymbols=null,this.timePatterns=null,this.typeFaces=null}}class y extends a.XFAObject{constructor(e){super(s,"localeSet",!0),this.locale=new a.XFAObjectArray}}class w extends a.StringObject{constructor(e){super(s,"meridiem")}}class v extends a.XFAObject{constructor(e){super(s,"meridiemNames",!0),this.meridiem=new a.XFAObjectArray(2)}}class x extends a.StringObject{constructor(e){super(s,"month")}}class S extends a.XFAObject{constructor(e){super(s,"monthNames",!0),this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e}),this.month=new a.XFAObjectArray(12)}}class A extends a.StringObject{constructor(e){super(s,"numberPattern"),this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class k extends a.XFAObject{constructor(e){super(s,"numberPatterns",!0),this.numberPattern=new a.XFAObjectArray(4)}}class C extends a.StringObject{constructor(e){super(s,"numberSymbol"),this.name=(0,i.getStringOption)(e.name,["decimal","grouping","percent","minus","zero"])}}class O extends a.XFAObject{constructor(e){super(s,"numberSymbols",!0),this.numberSymbol=new a.XFAObjectArray(5)}}class F extends a.StringObject{constructor(e){super(s,"timePattern"),this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class I extends a.XFAObject{constructor(e){super(s,"timePatterns",!0),this.timePattern=new a.XFAObjectArray(4)}}class T extends a.XFAObject{constructor(e){super(s,"typeFace",!0),this.name=""|e.name}}class M extends a.XFAObject{constructor(e){super(s,"typeFaces",!0),this.typeFace=new a.XFAObjectArray}}class E{static[n.$buildXFAObject](e,t){if(E.hasOwnProperty(e))return E[e](t)}static calendarSymbols(e){return new o(e)}static currencySymbol(e){return new c(e)}static currencySymbols(e){return new l(e)}static datePattern(e){return new h(e)}static datePatterns(e){return new u(e)}static dateTimeSymbols(e){return new d(e)}static day(e){return new f(e)}static dayNames(e){return new g(e)}static era(e){return new p(e)}static eraNames(e){return new m(e)}static locale(e){return new b(e)}static localeSet(e){return new y(e)}static meridiem(e){return new w(e)}static meridiemNames(e){return new v(e)}static month(e){return new x(e)}static monthNames(e){return new S(e)}static numberPattern(e){return new A(e)}static numberPatterns(e){return new k(e)}static numberSymbol(e){return new C(e)}static numberSymbols(e){return new O(e)}static timePattern(e){return new F(e)}static timePatterns(e){return new I(e)}static typeFace(e){return new T(e)}static typeFaces(e){return new M(e)}}t.LocaleSetNamespace=E},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SignatureNamespace=void 0;var n=r(234),a=r(240);const i=n.NamespaceIds.signature.id;class s extends a.XFAObject{constructor(e){super(i,"signature",!0)}}class o{static[n.$buildXFAObject](e,t){if(o.hasOwnProperty(e))return o[e](t)}static signature(e){return new s(e)}}t.SignatureNamespace=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StylesheetNamespace=void 0;var n=r(234),a=r(240);const i=n.NamespaceIds.stylesheet.id;class s extends a.XFAObject{constructor(e){super(i,"stylesheet",!0)}}class o{static[n.$buildXFAObject](e,t){if(o.hasOwnProperty(e))return o[e](t)}static stylesheet(e){return new s(e)}}t.StylesheetNamespace=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XdpNamespace=void 0;var n=r(234),a=r(228),i=r(240);const s=n.NamespaceIds.xdp.id;class o extends i.XFAObject{constructor(e){super(s,"xdp",!0),this.uuid=e.uuid||"",this.timeStamp=e.timeStamp||"",this.config=null,this.connectionSet=null,this.datasets=null,this.localeSet=null,this.stylesheet=new i.XFAObjectArray,this.template=null}[a.$onChildCheck](e){const t=n.NamespaceIds[e[a.$nodeName]];return t&&e[a.$namespaceId]===t.id}}class c{static[n.$buildXFAObject](e,t){if(c.hasOwnProperty(e))return c[e](t)}static xdp(e){return new o(e)}}t.XdpNamespace=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XhtmlNamespace=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(228),a=r(234),i=r(236),s=r(237),o=r(240);const c=a.NamespaceIds.xhtml.id,l=Symbol(),h=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),u=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>"scaleX(".concat(Math.max(0,Math.min(parseInt(e)/100)).toFixed(2),")")],["xfa-font-vertical-scale",e=>"scaleY(".concat(Math.max(0,Math.min(parseInt(e)/100)).toFixed(2),")")],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>(e=t.fontSize=(0,s.getMeasurement)(e),(0,i.measureToString)(.99*e))],["letter-spacing",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["line-height",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-bottom",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-left",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-right",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-top",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["text-indent",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["font-family",e=>e],["vertical-align",e=>(0,i.measureToString)((0,s.getMeasurement)(e))]]),d=/\\s+/g,f=/[\\r\\n]+/g,g=/\\r\\n?/g;function p(e,t,r){const a=Object.create(null);if(!e)return a;const o=Object.create(null);for(const[t,r]of e.split(";").map((e=>e.split(":",2)))){const e=u.get(t);if(""===e)continue;let n=r;e&&(n="string"==typeof e?e:e(r,o)),t.endsWith("scale")?a.transform=a.transform?"".concat(a[t]," ").concat(n):n:a[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=n}if(a.fontFamily&&(0,i.setFontFamily)({typeface:a.fontFamily,weight:a.fontWeight||"normal",posture:a.fontStyle||"normal",size:o.fontSize||0},t,t[n.$globalData].fontFinder,a),r&&a.verticalAlign&&"0px"!==a.verticalAlign&&a.fontSize){const e=.583,t=.333,r=(0,s.getMeasurement)(a.fontSize);a.fontSize=(0,i.measureToString)(r*e),a.verticalAlign=(0,i.measureToString)(Math.sign((0,s.getMeasurement)(a.verticalAlign))*r*t)}return r&&a.fontSize&&(a.fontSize="calc(".concat(a.fontSize," * var(--scale-factor))")),(0,i.fixTextIndent)(a),a}const m=new Set(["body","html"]);class b extends o.XmlObject{constructor(e,t){super(c,t),this[l]=!1,this.style=e.style||""}[n.$clean](e){super[n.$clean](e),this.style=function(e){return e.style?e.style.trim().split(/\\s*;\\s*/).filter((e=>!!e)).map((e=>e.split(/\\s*:\\s*/,2))).filter((t=>{let[r,a]=t;return"font-family"===r&&e[n.$globalData].usedTypefaces.add(a),h.has(r)})).map((e=>e.join(":"))).join(";"):""}(this)}[n.$acceptWhitespace](){return!m.has(this[n.$nodeName])}[n.$onText](e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?this[l]=!0:(e=e.replaceAll(f,""),this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(d," "))),e&&(this[n.$content]+=e)}[n.$pushGlyphs](e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const r=Object.create(null),a={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":r.typeface=(0,s.stripQuotes)(t);break;case"font-size":r.size=(0,s.getMeasurement)(t);break;case"font-weight":r.weight=t;break;case"font-style":r.posture=t;break;case"letter-spacing":r.letterSpacing=(0,s.getMeasurement)(t);break;case"margin":const e=t.split(/ \\t/).map((e=>(0,s.getMeasurement)(e)));switch(e.length){case 1:a.top=a.bottom=a.left=a.right=e[0];break;case 2:a.top=a.bottom=e[0],a.left=a.right=e[1];break;case 3:a.top=e[0],a.bottom=e[2],a.left=a.right=e[1];break;case 4:a.top=e[0],a.left=e[1],a.bottom=e[2],a.right=e[3]}break;case"margin-top":a.top=(0,s.getMeasurement)(t);break;case"margin-bottom":a.bottom=(0,s.getMeasurement)(t);break;case"margin-left":a.left=(0,s.getMeasurement)(t);break;case"margin-right":a.right=(0,s.getMeasurement)(t);break;case"line-height":i=(0,s.getMeasurement)(t)}if(e.pushData(r,a,i),this[n.$content])e.addString(this[n.$content]);else for(const t of this[n.$getChildren]())"#text"!==t[n.$nodeName]?t[n.$pushGlyphs](e):e.addString(t[n.$content]);t&&e.popFont()}[n.$toHTML](e){const t=[];if(this[n.$extra]={children:t},this[n.$childrenToHTML]({}),0===t.length&&!this[n.$content])return s.HTMLResult.EMPTY;let r;return r=this[l]?this[n.$content]?this[n.$content].replaceAll(g,"\\n"):void 0:this[n.$content]||void 0,s.HTMLResult.success({name:this[n.$nodeName],attributes:{href:this.href,style:p(this.style,this,this[l])},children:t,value:r})}}class y extends b{constructor(e){super(e,"a"),this.href=(0,i.fixURL)(e.href)||""}}class w extends b{constructor(e){super(e,"b")}[n.$pushGlyphs](e){e.pushFont({weight:"bold"}),super[n.$pushGlyphs](e),e.popFont()}}class v extends b{constructor(e){super(e,"body")}[n.$toHTML](e){const t=super[n.$toHTML](e),{html:r}=t;return r?(r.name="div",r.attributes.class=["xfaRich"],t):s.HTMLResult.EMPTY}}class x extends b{constructor(e){super(e,"br")}[n.$text](){return"\\n"}[n.$pushGlyphs](e){e.addString("\\n")}[n.$toHTML](e){return s.HTMLResult.success({name:"br"})}}class S extends b{constructor(e){super(e,"html")}[n.$toHTML](e){const t=[];if(this[n.$extra]={children:t},this[n.$childrenToHTML]({}),0===t.length)return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[n.$content]||""});if(1===t.length){var r;const e=t[0];if(null!==(r=e.attributes)&&void 0!==r&&r.class.includes("xfaRich"))return s.HTMLResult.success(e)}return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class A extends b{constructor(e){super(e,"i")}[n.$pushGlyphs](e){e.pushFont({posture:"italic"}),super[n.$pushGlyphs](e),e.popFont()}}class k extends b{constructor(e){super(e,"li")}}class C extends b{constructor(e){super(e,"ol")}}class O extends b{constructor(e){super(e,"p")}[n.$pushGlyphs](e){super[n.$pushGlyphs](e,!1),e.addString("\\n"),e.addPara(),e.popFont()}[n.$text](){return this[n.$getParent]()[n.$getChildren]().at(-1)===this?super[n.$text]():super[n.$text]()+"\\n"}}class F extends b{constructor(e){super(e,"span")}}class I extends b{constructor(e){super(e,"sub")}}class T extends b{constructor(e){super(e,"sup")}}class M extends b{constructor(e){super(e,"ul")}}class E{static[a.$buildXFAObject](e,t){if(E.hasOwnProperty(e))return E[e](t)}static a(e){return new y(e)}static b(e){return new w(e)}static body(e){return new v(e)}static br(e){return new x(e)}static html(e){return new S(e)}static i(e){return new A(e)}static li(e){return new k(e)}static ol(e){return new C(e)}static p(e){return new O(e)}static span(e){return new F(e)}static sub(e){return new I(e)}static sup(e){return new T(e)}static ul(e){return new M(e)}}t.XhtmlNamespace=E},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnknownNamespace=void 0;var n=r(234),a=r(240);class i{constructor(e){this.namespaceId=e}[n.$buildXFAObject](e,t){return new a.XmlObject(this.namespaceId,e,t)}}t.UnknownNamespace=i},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetReader=void 0,r(2);var n=r(144),a=r(149),i=r(217);function s(e){try{return(0,n.stringToUTF8String)(e)}catch(t){return(0,n.warn)('UTF-8 decoding failed: "'.concat(t,'".')),e}}class o extends i.SimpleXMLParser{constructor(e){super(e),this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e)throw this.node=t,new Error("Aborting DatasetXMLParser.")}}t.DatasetReader=class{constructor(e){if(e.datasets)this.node=new i.SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new o({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch(e){}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode((0,a.parseXFAPath)(e),0);if(!t)return"";const r=t.firstChild;return"value"===(null==r?void 0:r.nodeName)?t.children.map((e=>s(e.textContent))):s(t.textContent)}}},(e,t,r)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.XRef=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var a=r(144),i=r(150),s=r(166),o=r(149),l=r(151),d=r(218);t.XRef=(n=new WeakMap,class{constructor(e,t){c(this,n,{writable:!0,value:null}),this.stream=e,this.pdfManager=t,this.entries=[],this._xrefStms=new Set,this._cacheMap=new Map,this._pendingRefs=new i.RefSet,this._newPersistentRefNum=null,this._newTemporaryRefNum=null}getNewPersistentRef(e){null===this._newPersistentRefNum&&(this._newPersistentRefNum=this.entries.length||1);const t=this._newPersistentRefNum++;return this._cacheMap.set(t,e),i.Ref.get(t,0)}getNewTemporaryRef(){return null===this._newTemporaryRefNum&&(this._newTemporaryRefNum=this.entries.length||1),i.Ref.get(this._newTemporaryRefNum++,0)}resetNewTemporaryRef(){this._newTemporaryRefNum=null}setStartXRef(e){this.startXRefQueue=[e]}parse(){let e,t,r,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];n?((0,a.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 o.MissingDataException)throw e;(0,a.warn)('XRef.parse - Invalid "Encrypt" reference: "'.concat(e,'".'))}if(t instanceof i.Dict){const r=e.get("ID"),n=null!=r&&r.length?r[0]:"";t.suppressEncryption=!0,this.encrypt=new d.CipherTransformFactory(t,n,this.pdfManager.password)}try{r=e.get("Root")}catch(e){if(e instanceof o.MissingDataException)throw e;(0,a.warn)('XRef.parse - Invalid "Root" reference: "'.concat(e,'".'))}if(r instanceof i.Dict)try{if(r.get("Pages")instanceof i.Dict)return void(this.root=r)}catch(e){if(e instanceof o.MissingDataException)throw e;(0,a.warn)('XRef.parse - Invalid "Pages" reference: "'.concat(e,'".'))}if(!n)throw new o.XRefParseException;throw new a.InvalidPDFException("Invalid Root reference.")}processXRefTable(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});const t=this.readXRefTable(e);if(!(0,i.isCmd)(t,"trailer"))throw new a.FormatError("Invalid XRef table: could not find trailer dictionary");let r=e.getObj();if(r instanceof i.Dict||!r.dict||(r=r.dict),!(r instanceof i.Dict))throw new a.FormatError("Invalid XRef table: could not parse trailer dictionary");return delete this.tableState,r}readXRefTable(e){const t=e.lexer.stream,r=this.tableState;let n;for(t.pos=r.streamPos,e.buf1=r.parserBuf1,e.buf2=r.parserBuf2;;){if(!("firstEntryNum"in r)||!("entryCount"in r)){if((0,i.isCmd)(n=e.getObj(),"trailer"))break;r.firstEntryNum=n,r.entryCount=e.getObj()}let s=r.firstEntryNum;const o=r.entryCount;if(!Number.isInteger(s)||!Number.isInteger(o))throw new a.FormatError("Invalid XRef table: wrong types in subsection header");for(let n=r.entryNum;n0;){const[o,c]=s;if(!Number.isInteger(o)||!Number.isInteger(c))throw new a.FormatError("Invalid XRef range fields: ".concat(o,", ").concat(c));if(!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(i))throw new a.FormatError("Invalid XRef entry fields length: ".concat(o,", ").concat(c));for(let s=t.entryNum;s=e.length);)r+=String.fromCharCode(n),n=e[t];return r}function t(e,t,r){const n=r.length,a=e.length;let i=0;for(;t=n)break;t++,i++}return i}const r=/\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer\\s*<<)\\b/g,n=/\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g,c=/^(\\d+)\\s+(\\d+)\\s+obj\\b/,l=new Uint8Array([116,114,97,105,108,101,114]),h=new Uint8Array([115,116,97,114,116,120,114,101,102]),u=new Uint8Array([47,88,82,101,102]);this.entries.length=0,this._cacheMap.clear();const d=this.stream;d.pos=0;const f=d.getBytes(),g=(0,a.bytesToString)(f),p=f.length;let m=d.start;const b=[],y=[];for(;m=p)break;i=f[m]}while(10!==i&&13!==i);continue}const w=e(f,m);let v;if(w.startsWith("xref")&&(4===w.length||/\\s/.test(w[4])))m+=t(f,m,l),b.push(m),m+=t(f,m,h);else if(v=c.exec(w)){const e=0|v[1],n=0|v[2],i=m+w.length;let c,l=!1;if(this.entries[e]){if(this.entries[e].gen===n)try{new s.Parser({lexer:new s.Lexer(d.makeSubStream(i))}).getObj(),l=!0}catch(r){r instanceof o.ParserEOFException?(0,a.warn)("indexObjects -- checking object (".concat(w,'): "').concat(r,'".')):l=!0}}else l=!0;l&&(this.entries[e]={offset:m-d.start,gen:n,uncompressed:!0}),r.lastIndex=i;const h=r.exec(g);h?(c=r.lastIndex+1-m,"endobj"!==h[1]&&((0,a.warn)('indexObjects: Found "'.concat(h[1],'" inside of another "obj", caused by missing "endobj" -- trying to recover.')),c-=h[1].length+1)):c=p-m;const b=f.subarray(m,m+c),x=t(b,0,u);x0&&void 0!==arguments[0]&&arguments[0];const t=this.stream,r=new Set;for(;this.startXRefQueue.length;){try{const e=this.startXRefQueue[0];if(r.has(e)){(0,a.warn)("readXRef - skipping XRef table since it was already parsed."),this.startXRefQueue.shift();continue}r.add(e),t.pos=e+t.start;const o=new s.Parser({lexer:new s.Lexer(t),xref:this,allowStreams:!0});let d,f=o.getObj();if((0,i.isCmd)(f,"xref")){var c;d=this.processXRefTable(o),this.topDict||(this.topDict=d),f=d.get("XRefStm"),Number.isInteger(f)&&!this._xrefStms.has(f)&&(this._xrefStms.add(f),this.startXRefQueue.push(f),null!==(c=h(this,n))&&void 0!==c||u(this,n,f))}else{if(!Number.isInteger(f))throw new a.FormatError("Invalid XRef stream header");if(!(Number.isInteger(o.getObj())&&(0,i.isCmd)(o.getObj(),"obj")&&(f=o.getObj())instanceof l.BaseStream))throw new a.FormatError("Invalid XRef stream");if(d=this.processXRefStream(f),this.topDict||(this.topDict=d),!d)throw new a.FormatError("Failed to read XRef stream")}f=d.get("Prev"),Number.isInteger(f)?this.startXRefQueue.push(f):f instanceof i.Ref&&this.startXRefQueue.push(f.num)}catch(e){if(e instanceof o.MissingDataException)throw e;(0,a.info)("(while reading XRef): "+e)}this.startXRefQueue.shift()}if(this.topDict)return this.topDict;if(!e)throw new o.XRefParseException}get lastXRefStreamPos(){var e;return null!==(e=h(this,n))&&void 0!==e?e:this._xrefStms.size>0?Math.max(...this._xrefStms):null}getEntry(e){const t=this.entries[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e instanceof i.Ref?this.fetch(e,t):e}fetch(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!(e instanceof i.Ref))throw new Error("ref object is not a reference");const r=e.num,n=this._cacheMap.get(r);if(void 0!==n)return n instanceof i.Dict&&!n.objId&&(n.objId=e.toString()),n;let s=this.getEntry(r);if(null===s)return this._cacheMap.set(r,s),s;if(this._pendingRefs.has(e))return this._pendingRefs.remove(e),(0,a.warn)("Ignoring circular reference: ".concat(e,".")),i.CIRCULAR_REF;this._pendingRefs.put(e);try{s=s.uncompressed?this.fetchUncompressed(e,s,t):this.fetchCompressed(e,s,t),this._pendingRefs.remove(e)}catch(t){throw this._pendingRefs.remove(e),t}return s instanceof i.Dict?s.objId=e.toString():s instanceof l.BaseStream&&(s.dict.objId=e.toString()),s}fetchUncompressed(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=e.gen;let c=e.num;if(t.gen!==n){const s="Inconsistent generation in XRef: ".concat(e);if(this._generationFallback&&t.gen{var n,a,i;Object.defineProperty(t,"__esModule",{value:!0}),t.MessageHandler=void 0,r(2);var c=r(144);function l(e){switch(e instanceof Error||"object"==typeof e&&null!==e||(0,c.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),e.name){case"AbortException":return new c.AbortException(e.message);case"MissingPDFException":return new c.MissingPDFException(e.message);case"PasswordException":return new c.PasswordException(e.message,e.code);case"UnexpectedResponseException":return new c.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new c.UnknownErrorException(e.message,e.details);default:return new c.UnknownErrorException(e.message,e.toString())}}function h(e){const t=e.streamId,r=this.sourceName,n=e.sourceName,a=this.comObj,i=this,s=this.actionHandler[e.action],o={enqueue(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,s=arguments.length>2?arguments[2]:void 0;if(this.isCancelled)return;const o=this.desiredSize;this.desiredSize-=i,o>0&&this.desiredSize<=0&&(this.sinkCapability=new c.PromiseCapability,this.ready=this.sinkCapability.promise),a.postMessage({sourceName:r,targetName:n,stream:4,streamId:t,chunk:e},s)},close(){this.isCancelled||(this.isCancelled=!0,a.postMessage({sourceName:r,targetName:n,stream:3,streamId:t}),delete i.streamSinks[t])},error(e){(0,c.assert)(e instanceof Error,"error must have a valid reason"),this.isCancelled||(this.isCancelled=!0,a.postMessage({sourceName:r,targetName:n,stream:5,streamId:t,reason:l(e)}))},sinkCapability:new c.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};o.sinkCapability.resolve(),o.ready=o.sinkCapability.promise,this.streamSinks[t]=o,new Promise((function(t){t(s(e.data,o))})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:8,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:8,streamId:t,reason:l(e)})}))}function u(e){const t=e.streamId,r=this.sourceName,n=e.sourceName,a=this.comObj,s=this.streamControllers[t],h=this.streamSinks[t];switch(e.stream){case 8:e.success?s.startCall.resolve():s.startCall.reject(l(e.reason));break;case 7:e.success?s.pullCall.resolve():s.pullCall.reject(l(e.reason));break;case 6:if(!h){a.postMessage({sourceName:r,targetName:n,stream:7,streamId:t,success:!0});break}h.desiredSize<=0&&e.desiredSize>0&&h.sinkCapability.resolve(),h.desiredSize=e.desiredSize,new Promise((function(e){var t;e(null===(t=h.onPull)||void 0===t?void 0:t.call(h))})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:7,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:7,streamId:t,reason:l(e)})}));break;case 4:if((0,c.assert)(s,"enqueue should have stream controller"),s.isClosed)break;s.controller.enqueue(e.chunk);break;case 3:if((0,c.assert)(s,"close should have stream controller"),s.isClosed)break;s.isClosed=!0,s.controller.close(),o(this,i,d).call(this,s,t);break;case 5:(0,c.assert)(s,"error should have stream controller"),s.controller.error(l(e.reason)),o(this,i,d).call(this,s,t);break;case 2:e.success?s.cancelCall.resolve():s.cancelCall.reject(l(e.reason)),o(this,i,d).call(this,s,t);break;case 1:if(!h)break;new Promise((function(t){var r;t(null===(r=h.onCancel)||void 0===r?void 0:r.call(h,l(e.reason)))})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:2,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:2,streamId:t,reason:l(e)})})),h.sinkCapability.reject(l(e.reason)),h.isCancelled=!0,delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async function d(e,t){var r,n,a;await Promise.allSettled([null===(r=e.startCall)||void 0===r?void 0:r.promise,null===(n=e.pullCall)||void 0===n?void 0:n.promise,null===(a=e.cancelCall)||void 0===a?void 0:a.promise]),delete this.streamControllers[t]}t.MessageHandler=(n=new WeakSet,a=new WeakSet,i=new WeakSet,class{constructor(e,t,r){s(this,i),s(this,a),s(this,n),this.sourceName=e,this.targetName=t,this.comObj=r,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream)return void o(this,a,u).call(this,t);if(t.callback){const e=t.callbackId,r=this.callbackCapabilities[e];if(!r)throw new Error("Cannot resolve callback ".concat(e));if(delete this.callbackCapabilities[e],1===t.callback)r.resolve(t.data);else{if(2!==t.callback)throw new Error("Unexpected callback case");r.reject(l(t.reason))}return}const i=this.actionHandler[t.action];if(!i)throw new Error("Unknown action from worker: ".concat(t.action));if(t.callbackId){const e=this.sourceName,n=t.sourceName;new Promise((function(e){e(i(t.data))})).then((function(a){r.postMessage({sourceName:e,targetName:n,callback:1,callbackId:t.callbackId,data:a})}),(function(a){r.postMessage({sourceName:e,targetName:n,callback:2,callbackId:t.callbackId,reason:l(a)})}))}else t.streamId?o(this,n,h).call(this,t):i(t.data)},r.addEventListener("message",this._onComObjOnMessage)}on(e,t){const r=this.actionHandler;if(r[e])throw new Error('There is already an actionName called "'.concat(e,'"'));r[e]=t}send(e,t,r){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},r)}sendWithPromise(e,t,r){const n=this.callbackId++,a=new c.PromiseCapability;this.callbackCapabilities[n]=a;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},r)}catch(e){a.reject(e)}return a.promise}sendWithStream(e,t,r,n){const a=this.streamId++,i=this.sourceName,s=this.targetName,o=this.comObj;return new ReadableStream({start:r=>{const l=new c.PromiseCapability;return this.streamControllers[a]={controller:r,startCall:l,pullCall:null,cancelCall:null,isClosed:!1},o.postMessage({sourceName:i,targetName:s,action:e,streamId:a,data:t,desiredSize:r.desiredSize},n),l.promise},pull:e=>{const t=new c.PromiseCapability;return this.streamControllers[a].pullCall=t,o.postMessage({sourceName:i,targetName:s,stream:6,streamId:a,desiredSize:e.desiredSize}),t.promise},cancel:e=>{(0,c.assert)(e instanceof Error,"cancel must have a valid reason");const t=new c.PromiseCapability;return this.streamControllers[a].cancelCall=t,this.streamControllers[a].isClosed=!0,o.postMessage({sourceName:i,targetName:s,stream:1,streamId:a,reason:l(e)}),t.promise}},r)}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}})},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFWorkerStream=void 0,r(139);var n=r(144);t.PDFWorkerStream=class{constructor(e){this._msgHandler=e,this._contentLength=null,this._fullRequestReader=null,this._rangeRequestReaders=[]}getFullReader(){return(0,n.assert)(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once."),this._fullRequestReader=new a(this._msgHandler),this._fullRequestReader}getRangeReader(e,t){const r=new i(e,t,this._msgHandler);return this._rangeRequestReaders.push(r),r}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class a{constructor(e){this._msgHandler=e,this.onProgress=null,this._contentLength=null,this._isRangeSupported=!1,this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader(),this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported,this._isRangeSupported=e.isRangeSupported,this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class i{constructor(e,t,r){this._msgHandler=r,this.onProgress=null;const n=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=n.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}}],t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{var e=a;Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"WorkerMessageHandler",{enumerable:!0,get:function(){return t.WorkerMessageHandler}});var t=n(1)})(),a})(),"object"==typeof exports?e.exports=a():"function"==typeof define&&r.amdO?define("pdfjs-dist/build/pdf.worker",[],a):"object"==typeof exports?exports["pdfjs-dist/build/pdf.worker"]=a():n["pdfjs-dist/build/pdf.worker"]=n.pdfjsWorker=a()},9662:(e,t,r)=>{var n=r(614),a=r(6330),i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not a function")}},9483:(e,t,r)=>{var n=r(4411),a=r(6330),i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not a constructor")}},6077:(e,t,r)=>{var n=r(614),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")}},1223:(e,t,r)=>{var n=r(5112),a=r(30),i=r(3070).f,s=n("unscopables"),o=Array.prototype;null==o[s]&&i(o,s,{configurable:!0,value:a(null)}),e.exports=function(e){o[s][e]=!0}},1530:(e,t,r)=>{var n=r(8710).charAt;e.exports=function(e,t,r){return t+(r?n(e,t).length:1)}},5787:(e,t,r)=>{var n=r(7976),a=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw a("Incorrect invocation")}},9670:(e,t,r)=>{var n=r(111),a=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not an object")}},3013:e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},7556:(e,t,r)=>{var n=r(7293);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},260:(e,t,r)=>{var n,a,i,s=r(3013),o=r(9781),c=r(7854),l=r(614),h=r(111),u=r(2597),d=r(648),f=r(6330),g=r(8880),p=r(8052),m=r(7045),b=r(7976),y=r(9518),w=r(7674),v=r(5112),x=r(9711),S=r(9909),A=S.enforce,k=S.get,C=c.Int8Array,O=C&&C.prototype,F=c.Uint8ClampedArray,I=F&&F.prototype,T=C&&y(C),M=O&&y(O),E=Object.prototype,P=c.TypeError,R=v("toStringTag"),N=x("TYPED_ARRAY_TAG"),D="TypedArrayConstructor",B=s&&!!w&&"Opera"!==d(c.opera),L=!1,_={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},j={BigInt64Array:8,BigUint64Array:8},U=function(e){var t=y(e);if(h(t)){var r=k(t);return r&&u(r,D)?r[D]:U(t)}},$=function(e){if(!h(e))return!1;var t=d(e);return u(_,t)||u(j,t)};for(n in _)(i=(a=c[n])&&a.prototype)?A(i)[D]=a:B=!1;for(n in j)(i=(a=c[n])&&a.prototype)&&(A(i)[D]=a);if((!B||!l(T)||T===Function.prototype)&&(T=function(){throw P("Incorrect invocation")},B))for(n in _)c[n]&&w(c[n],T);if((!B||!M||M===E)&&(M=T.prototype,B))for(n in _)c[n]&&w(c[n].prototype,M);if(B&&y(I)!==M&&w(I,M),o&&!u(M,R))for(n in L=!0,m(M,R,{configurable:!0,get:function(){return h(this)?this[N]:void 0}}),_)c[n]&&g(c[n],N,n);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:B,TYPED_ARRAY_TAG:L&&N,aTypedArray:function(e){if($(e))return e;throw P("Target is not a typed array")},aTypedArrayConstructor:function(e){if(l(e)&&(!w||b(T,e)))return e;throw P(f(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,r,n){if(o){if(r)for(var a in _){var i=c[a];if(i&&u(i.prototype,e))try{delete i.prototype[e]}catch(r){try{i.prototype[e]=t}catch(e){}}}M[e]&&!r||p(M,e,r?t:B&&O[e]||t,n)}},exportTypedArrayStaticMethod:function(e,t,r){var n,a;if(o){if(w){if(r)for(n in _)if((a=c[n])&&u(a,e))try{delete a[e]}catch(e){}if(T[e]&&!r)return;try{return p(T,e,r?t:B&&T[e]||t)}catch(e){}}for(n in _)!(a=c[n])||a[e]&&!r||p(a,e,t)}},getTypedArrayConstructor:U,isView:function(e){if(!h(e))return!1;var t=d(e);return"DataView"===t||u(_,t)||u(j,t)},isTypedArray:$,TypedArray:T,TypedArrayPrototype:M}},3331:(e,t,r)=>{var n=r(7854),a=r(1702),i=r(9781),s=r(3013),o=r(6530),c=r(8880),l=r(7045),h=r(9190),u=r(7293),d=r(5787),f=r(9303),g=r(7466),p=r(7067),m=r(1179),b=r(9518),y=r(7674),w=r(8006).f,v=r(1285),x=r(1589),S=r(8003),A=r(9909),k=o.PROPER,C=o.CONFIGURABLE,O="ArrayBuffer",F="DataView",I="prototype",T="Wrong index",M=A.getterFor(O),E=A.getterFor(F),P=A.set,R=n[O],N=R,D=N&&N[I],B=n[F],L=B&&B[I],_=Object.prototype,j=n.Array,U=n.RangeError,$=a(v),X=a([].reverse),H=m.pack,q=m.unpack,z=function(e){return[255&e]},G=function(e){return[255&e,e>>8&255]},W=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},V=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},K=function(e){return H(e,23,4)},Y=function(e){return H(e,52,8)},J=function(e,t,r){l(e[I],t,{configurable:!0,get:function(){return r(this)[t]}})},Z=function(e,t,r,n){var a=E(e),i=p(r),s=!!n;if(i+t>a.byteLength)throw U(T);var o=a.bytes,c=i+a.byteOffset,l=x(o,c,c+t);return s?l:X(l)},Q=function(e,t,r,n,a,i){var s=E(e),o=p(r),c=n(+a),l=!!i;if(o+t>s.byteLength)throw U(T);for(var h=s.bytes,u=o+s.byteOffset,d=0;dne;)(te=re[ne++])in N||c(N,te,R[te]);D.constructor=N}y&&b(L)!==_&&y(L,_);var ae=new B(new N(2)),ie=a(L.setInt8);ae.setInt8(0,2147483648),ae.setInt8(1,2147483649),!ae.getInt8(0)&&ae.getInt8(1)||h(L,{setInt8:function(e,t){ie(this,e,t<<24>>24)},setUint8:function(e,t){ie(this,e,t<<24>>24)}},{unsafe:!0})}else D=(N=function(e){d(this,D);var t=p(e);P(this,{type:O,bytes:$(j(t),0),byteLength:t}),i||(this.byteLength=t,this.detached=!1)})[I],L=(B=function(e,t,r){d(this,L),d(e,D);var n=M(e),a=n.byteLength,s=f(t);if(s<0||s>a)throw U("Wrong offset");if(s+(r=void 0===r?a-s:g(r))>a)throw U("Wrong length");P(this,{type:F,buffer:e,byteLength:r,byteOffset:s,bytes:n.bytes}),i||(this.buffer=e,this.byteLength=r,this.byteOffset=s)})[I],i&&(J(N,"byteLength",M),J(B,"buffer",E),J(B,"byteLength",E),J(B,"byteOffset",E)),h(L,{getInt8:function(e){return Z(this,1,e)[0]<<24>>24},getUint8:function(e){return Z(this,1,e)[0]},getInt16:function(e){var t=Z(this,2,e,arguments.length>1&&arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=Z(this,2,e,arguments.length>1&&arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return V(Z(this,4,e,arguments.length>1&&arguments[1]))},getUint32:function(e){return V(Z(this,4,e,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(e){return q(Z(this,4,e,arguments.length>1&&arguments[1]),23)},getFloat64:function(e){return q(Z(this,8,e,arguments.length>1&&arguments[1]),52)},setInt8:function(e,t){Q(this,1,e,z,t)},setUint8:function(e,t){Q(this,1,e,z,t)},setInt16:function(e,t){Q(this,2,e,G,t,arguments.length>2&&arguments[2])},setUint16:function(e,t){Q(this,2,e,G,t,arguments.length>2&&arguments[2])},setInt32:function(e,t){Q(this,4,e,W,t,arguments.length>2&&arguments[2])},setUint32:function(e,t){Q(this,4,e,W,t,arguments.length>2&&arguments[2])},setFloat32:function(e,t){Q(this,4,e,K,t,arguments.length>2&&arguments[2])},setFloat64:function(e,t){Q(this,8,e,Y,t,arguments.length>2&&arguments[2])}});S(N,O),S(B,F),e.exports={ArrayBuffer:N,DataView:B}},1285:(e,t,r)=>{var n=r(7908),a=r(1400),i=r(6244);e.exports=function(e){for(var t=n(this),r=i(t),s=arguments.length,o=a(s>1?arguments[1]:void 0,r),c=s>2?arguments[2]:void 0,l=void 0===c?r:a(c,r);l>o;)t[o++]=e;return t}},7745:(e,t,r)=>{var n=r(6244);e.exports=function(e,t){for(var r=0,a=n(t),i=new e(a);a>r;)i[r]=t[r++];return i}},8457:(e,t,r)=>{var n=r(9974),a=r(6916),i=r(7908),s=r(3411),o=r(7659),c=r(4411),l=r(6244),h=r(6135),u=r(4121),d=r(1246),f=Array;e.exports=function(e){var t=i(e),r=c(this),g=arguments.length,p=g>1?arguments[1]:void 0,m=void 0!==p;m&&(p=n(p,g>2?arguments[2]:void 0));var b,y,w,v,x,S,A=d(t),k=0;if(!A||this===f&&o(A))for(b=l(t),y=r?new this(b):f(b);b>k;k++)S=m?p(t[k],k):t[k],h(y,k,S);else for(x=(v=u(t,A)).next,y=r?new this:[];!(w=a(x,v)).done;k++)S=m?s(v,p,[w.value,k],!0):w.value,h(y,k,S);return y.length=k,y}},1318:(e,t,r)=>{var n=r(5656),a=r(1400),i=r(6244),s=function(e){return function(t,r,s){var o,c=n(t),l=i(c),h=a(s,l);if(e&&r!=r){for(;l>h;)if((o=c[h++])!=o)return!0}else for(;l>h;h++)if((e||h in c)&&c[h]===r)return e||h||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},9671:(e,t,r)=>{var n=r(9974),a=r(8361),i=r(7908),s=r(6244),o=function(e){var t=1==e;return function(r,o,c){for(var l,h=i(r),u=a(h),d=n(o,c),f=s(u);f-- >0;)if(d(l=u[f],f,h))switch(e){case 0:return l;case 1:return f}return t?-1:void 0}};e.exports={findLast:o(0),findLastIndex:o(1)}},2092:(e,t,r)=>{var n=r(9974),a=r(1702),i=r(8361),s=r(7908),o=r(6244),c=r(5417),l=a([].push),h=function(e){var t=1==e,r=2==e,a=3==e,h=4==e,u=6==e,d=7==e,f=5==e||u;return function(g,p,m,b){for(var y,w,v=s(g),x=i(v),S=n(p,m),A=o(x),k=0,C=b||c,O=t?C(g,A):r||d?C(g,0):void 0;A>k;k++)if((f||k in x)&&(w=S(y=x[k],k,v),e))if(t)O[k]=w;else if(w)switch(e){case 3:return!0;case 5:return y;case 6:return k;case 2:l(O,y)}else switch(e){case 4:return!1;case 7:l(O,y)}return u?-1:a||h?h:O}};e.exports={forEach:h(0),map:h(1),filter:h(2),some:h(3),every:h(4),find:h(5),findIndex:h(6),filterReject:h(7)}},9341:(e,t,r)=>{var n=r(7293);e.exports=function(e,t){var r=[][e];return!!r&&n((function(){r.call(null,t||function(){return 1},1)}))}},3671:(e,t,r)=>{var n=r(9662),a=r(7908),i=r(8361),s=r(6244),o=TypeError,c=function(e){return function(t,r,c,l){n(r);var h=a(t),u=i(h),d=s(h),f=e?d-1:0,g=e?-1:1;if(c<2)for(;;){if(f in u){l=u[f],f+=g;break}if(f+=g,e?f<0:d<=f)throw o("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=g)f in u&&(l=r(l,u[f],f,h));return l}};e.exports={left:c(!1),right:c(!0)}},3658:(e,t,r)=>{var n=r(9781),a=r(3157),i=TypeError,s=Object.getOwnPropertyDescriptor,o=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=o?function(e,t){if(a(e)&&!s(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},1589:(e,t,r)=>{var n=r(1400),a=r(6244),i=r(6135),s=Array,o=Math.max;e.exports=function(e,t,r){for(var c=a(e),l=n(t,c),h=n(void 0===r?c:r,c),u=s(o(h-l,0)),d=0;l{var n=r(1702);e.exports=n([].slice)},4362:(e,t,r)=>{var n=r(1589),a=Math.floor,i=function(e,t){var r=e.length,c=a(r/2);return r<8?s(e,t):o(e,i(n(e,0,c),t),i(n(e,c),t),t)},s=function(e,t){for(var r,n,a=e.length,i=1;i0;)e[n]=e[--n];n!==i++&&(e[n]=r)}return e},o=function(e,t,r,n){for(var a=t.length,i=r.length,s=0,o=0;s{var n=r(3157),a=r(4411),i=r(111),s=r(5112)("species"),o=Array;e.exports=function(e){var t;return n(e)&&(t=e.constructor,(a(t)&&(t===o||n(t.prototype))||i(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?o:t}},5417:(e,t,r)=>{var n=r(7475);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},1843:(e,t,r)=>{var n=r(6244);e.exports=function(e,t){for(var r=n(e),a=new t(r),i=0;i{var n=r(6244),a=r(9303),i=RangeError;e.exports=function(e,t,r,s){var o=n(e),c=a(r),l=c<0?o+c:c;if(l>=o||l<0)throw i("Incorrect index");for(var h=new t(o),u=0;u{var n=r(9670),a=r(9212);e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){a(e,"throw",t)}}},7072:(e,t,r)=>{var n=r(5112)("iterator"),a=!1;try{var i=0,s={next:function(){return{done:!!i++}},return:function(){a=!0}};s[n]=function(){return this},Array.from(s,(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}},4326:(e,t,r)=>{var n=r(1702),a=n({}.toString),i=n("".slice);e.exports=function(e){return i(a(e),8,-1)}},648:(e,t,r)=>{var n=r(1694),a=r(614),i=r(4326),s=r(5112)("toStringTag"),o=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=o(e),s))?r:c?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},9320:(e,t,r)=>{var n=r(1702),a=r(9190),i=r(2423).getWeakData,s=r(5787),o=r(9670),c=r(8554),l=r(111),h=r(408),u=r(2092),d=r(2597),f=r(9909),g=f.set,p=f.getterFor,m=u.find,b=u.findIndex,y=n([].splice),w=0,v=function(e){return e.frozen||(e.frozen=new x)},x=function(){this.entries=[]},S=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};x.prototype={get:function(e){var t=S(this,e);if(t)return t[1]},has:function(e){return!!S(this,e)},set:function(e,t){var r=S(this,e);r?r[1]=t:this.entries.push([e,t])},delete:function(e){var t=b(this.entries,(function(t){return t[0]===e}));return~t&&y(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,r,n){var u=e((function(e,a){s(e,f),g(e,{type:t,id:w++,frozen:void 0}),c(a)||h(a,e[n],{that:e,AS_ENTRIES:r})})),f=u.prototype,m=p(t),b=function(e,t,r){var n=m(e),a=i(o(t),!0);return!0===a?v(n).set(t,r):a[n.id]=r,e};return a(f,{delete:function(e){var t=m(this);if(!l(e))return!1;var r=i(e);return!0===r?v(t).delete(e):r&&d(r,t.id)&&delete r[t.id]},has:function(e){var t=m(this);if(!l(e))return!1;var r=i(e);return!0===r?v(t).has(e):r&&d(r,t.id)}}),a(f,r?{get:function(e){var t=m(this);if(l(e)){var r=i(e);return!0===r?v(t).get(e):r?r[t.id]:void 0}},set:function(e,t){return b(this,e,t)}}:{add:function(e){return b(this,e,!0)}}),u}}},7710:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(1702),s=r(4705),o=r(8052),c=r(2423),l=r(408),h=r(5787),u=r(614),d=r(8554),f=r(111),g=r(7293),p=r(7072),m=r(8003),b=r(9587);e.exports=function(e,t,r){var y=-1!==e.indexOf("Map"),w=-1!==e.indexOf("Weak"),v=y?"set":"add",x=a[e],S=x&&x.prototype,A=x,k={},C=function(e){var t=i(S[e]);o(S,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(w&&!f(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return w&&!f(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(w&&!f(e))&&t(this,0===e?0:e)}:function(e,r){return t(this,0===e?0:e,r),this})};if(s(e,!u(x)||!(w||S.forEach&&!g((function(){(new x).entries().next()})))))A=r.getConstructor(t,e,y,v),c.enable();else if(s(e,!0)){var O=new A,F=O[v](w?{}:-0,1)!=O,I=g((function(){O.has(1)})),T=p((function(e){new x(e)})),M=!w&&g((function(){for(var e=new x,t=5;t--;)e[v](t,t);return!e.has(-0)}));T||((A=t((function(e,t){h(e,S);var r=b(new x,e,A);return d(t)||l(t,r[v],{that:r,AS_ENTRIES:y}),r}))).prototype=S,S.constructor=A),(I||M)&&(C("delete"),C("has"),y&&C("get")),(M||F)&&C(v),w&&S.clear&&delete S.clear}return k[e]=A,n({global:!0,constructor:!0,forced:A!=x},k),m(A,e),w||r.setStrong(A,e,y),A}},9920:(e,t,r)=>{var n=r(2597),a=r(3887),i=r(1236),s=r(3070);e.exports=function(e,t,r){for(var o=a(t),c=s.f,l=i.f,h=0;h{var n=r(5112)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[n]=!1,"/./"[e](t)}catch(e){}}return!1}},8544:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},6178:e=>{e.exports=function(e,t){return{value:e,done:t}}},8880:(e,t,r)=>{var n=r(9781),a=r(3070),i=r(9114);e.exports=n?function(e,t,r){return a.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},9114:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},6135:(e,t,r)=>{var n=r(4948),a=r(3070),i=r(9114);e.exports=function(e,t,r){var s=n(t);s in e?a.f(e,s,i(0,r)):e[s]=r}},7045:(e,t,r)=>{var n=r(6339),a=r(3070);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),a.f(e,t,r)}},8052:(e,t,r)=>{var n=r(614),a=r(3070),i=r(6339),s=r(3072);e.exports=function(e,t,r,o){o||(o={});var c=o.enumerable,l=void 0!==o.name?o.name:t;if(n(r)&&i(r,l,o),o.global)c?e[t]=r:s(t,r);else{try{o.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:a.f(e,t,{value:r,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}},9190:(e,t,r)=>{var n=r(8052);e.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},3072:(e,t,r)=>{var n=r(7854),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}},5117:(e,t,r)=>{var n=r(6330),a=TypeError;e.exports=function(e,t){if(!delete e[t])throw a("Cannot delete property "+n(t)+" of "+n(e))}},9781:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4154:e=>{var t="object"==typeof document&&document.all,r=void 0===t&&void 0!==t;e.exports={all:t,IS_HTMLDDA:r}},317:(e,t,r)=>{var n=r(7854),a=r(111),i=n.document,s=a(i)&&a(i.createElement);e.exports=function(e){return s?i.createElement(e):{}}},7207:e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},3678:e=>{e.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,t,r)=>{var n=r(317)("span").classList,a=n&&n.constructor&&n.constructor.prototype;e.exports=a===Object.prototype?void 0:a},8886:(e,t,r)=>{var n=r(8113).match(/firefox\\/(\\d+)/i);e.exports=!!n&&+n[1]},7871:(e,t,r)=>{var n=r(3823),a=r(5268);e.exports=!n&&!a&&"object"==typeof window&&"object"==typeof document},3823:e=>{e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},256:(e,t,r)=>{var n=r(8113);e.exports=/MSIE|Trident/.test(n)},1528:(e,t,r)=>{var n=r(8113);e.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},6833:(e,t,r)=>{var n=r(8113);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},5268:(e,t,r)=>{var n=r(4326);e.exports="undefined"!=typeof process&&"process"==n(process)},1036:(e,t,r)=>{var n=r(8113);e.exports=/web0s(?!.*chrome)/i.test(n)},8113:e=>{e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},7392:(e,t,r)=>{var n,a,i=r(7854),s=r(8113),o=i.process,c=i.Deno,l=o&&o.versions||c&&c.version,h=l&&l.v8;h&&(a=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!a&&s&&(!(n=s.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=s.match(/Chrome\\/(\\d+)/))&&(a=+n[1]),e.exports=a},8008:(e,t,r)=>{var n=r(8113).match(/AppleWebKit\\/(\\d+)\\./);e.exports=!!n&&+n[1]},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},1060:(e,t,r)=>{var n=r(1702),a=Error,i=n("".replace),s=String(a("zxcasd").stack),o=/\\n\\s*at [^:]*:[^\\n]*/,c=o.test(s);e.exports=function(e,t){if(c&&"string"==typeof e&&!a.prepareStackTrace)for(;t--;)e=i(e,o,"");return e}},5392:(e,t,r)=>{var n=r(8880),a=r(1060),i=r(2914),s=Error.captureStackTrace;e.exports=function(e,t,r,o){i&&(s?s(e,t):n(e,"stack",a(r,o)))}},2914:(e,t,r)=>{var n=r(7293),a=r(9114);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",a(1,7)),7!==e.stack)}))},7762:(e,t,r)=>{var n=r(9781),a=r(7293),i=r(9670),s=r(30),o=r(6277),c=Error.prototype.toString,l=a((function(){if(n){var e=s(Object.defineProperty({},"name",{get:function(){return this===e}}));if("true"!==c.call(e))return!0}return"2: 1"!==c.call({message:1,name:2})||"Error"!==c.call({})}));e.exports=l?function(){var e=i(this),t=o(e.name,"Error"),r=o(e.message);return t?r?t+": "+r:t:r}:c},2109:(e,t,r)=>{var n=r(7854),a=r(1236).f,i=r(8880),s=r(8052),o=r(3072),c=r(9920),l=r(4705);e.exports=function(e,t){var r,h,u,d,f,g=e.target,p=e.global,m=e.stat;if(r=p?n:m?n[g]||o(g,{}):(n[g]||{}).prototype)for(h in t){if(d=t[h],u=e.dontCallGetSet?(f=a(r,h))&&f.value:r[h],!l(p?h:g+(m?".":"#")+h,e.forced)&&void 0!==u){if(typeof d==typeof u)continue;c(d,u)}(e.sham||u&&u.sham)&&i(d,"sham",!0),s(r,h,d,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:(e,t,r)=>{r(4916);var n=r(1470),a=r(8052),i=r(2261),s=r(7293),o=r(5112),c=r(8880),l=o("species"),h=RegExp.prototype;e.exports=function(e,t,r,u){var d=o(e),f=!s((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),g=f&&!s((function(){var t=!1,r=/a/;return"split"===e&&((r={}).constructor={},r.constructor[l]=function(){return r},r.flags="",r[d]=/./[d]),r.exec=function(){return t=!0,null},r[d](""),!t}));if(!f||!g||r){var p=n(/./[d]),m=t(d,""[e],(function(e,t,r,a,s){var o=n(e),c=t.exec;return c===i||c===h.exec?f&&!s?{done:!0,value:p(t,r,a)}:{done:!0,value:o(r,t,a)}:{done:!1}}));a(String.prototype,e,m[0]),a(h,d,m[1])}u&&c(h[d],"sham",!0)}},6790:(e,t,r)=>{var n=r(3157),a=r(6244),i=r(7207),s=r(9974),o=function(e,t,r,c,l,h,u,d){for(var f,g,p=l,m=0,b=!!u&&s(u,d);m0&&n(f)?(g=a(f),p=o(e,t,f,g,p,h-1)-1):(i(p+1),e[p]=f),p++),m++;return p};e.exports=o},6677:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:(e,t,r)=>{var n=r(4374),a=Function.prototype,i=a.apply,s=a.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?s.bind(i):function(){return s.apply(i,arguments)})},9974:(e,t,r)=>{var n=r(1470),a=r(9662),i=r(4374),s=n(n.bind);e.exports=function(e,t){return a(e),void 0===t?e:i?s(e,t):function(){return e.apply(t,arguments)}}},4374:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},6916:(e,t,r)=>{var n=r(4374),a=Function.prototype.call;e.exports=n?a.bind(a):function(){return a.apply(a,arguments)}},6530:(e,t,r)=>{var n=r(9781),a=r(2597),i=Function.prototype,s=n&&Object.getOwnPropertyDescriptor,o=a(i,"name"),c=o&&"something"===function(){}.name,l=o&&(!n||n&&s(i,"name").configurable);e.exports={EXISTS:o,PROPER:c,CONFIGURABLE:l}},5668:(e,t,r)=>{var n=r(1702),a=r(9662);e.exports=function(e,t,r){try{return n(a(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},1470:(e,t,r)=>{var n=r(4326),a=r(1702);e.exports=function(e){if("Function"===n(e))return a(e)}},1702:(e,t,r)=>{var n=r(4374),a=Function.prototype,i=a.call,s=n&&a.bind.bind(i,i);e.exports=n?s:function(e){return function(){return i.apply(e,arguments)}}},5005:(e,t,r)=>{var n=r(7854),a=r(614);e.exports=function(e,t){return arguments.length<2?(r=n[e],a(r)?r:void 0):n[e]&&n[e][t];var r}},1246:(e,t,r)=>{var n=r(648),a=r(8173),i=r(8554),s=r(7497),o=r(5112)("iterator");e.exports=function(e){if(!i(e))return a(e,o)||a(e,"@@iterator")||s[n(e)]}},4121:(e,t,r)=>{var n=r(6916),a=r(9662),i=r(9670),s=r(6330),o=r(1246),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?o(e):t;if(a(r))return i(n(r,e));throw c(s(e)+" is not iterable")}},8044:(e,t,r)=>{var n=r(1702),a=r(3157),i=r(614),s=r(4326),o=r(1340),c=n([].push);e.exports=function(e){if(i(e))return e;if(a(e)){for(var t=e.length,r=[],n=0;n{var n=r(9662),a=r(8554);e.exports=function(e,t){var r=e[t];return a(r)?void 0:n(r)}},647:(e,t,r)=>{var n=r(1702),a=r(7908),i=Math.floor,s=n("".charAt),o=n("".replace),c=n("".slice),l=/\\$([$&'\`]|\\d{1,2}|<[^>]*>)/g,h=/\\$([$&'\`]|\\d{1,2})/g;e.exports=function(e,t,r,n,u,d){var f=r+e.length,g=n.length,p=h;return void 0!==u&&(u=a(u),p=l),o(d,p,(function(a,o){var l;switch(s(o,0)){case"$":return"$";case"&":return e;case"\`":return c(t,0,r);case"'":return c(t,f);case"<":l=u[c(o,1,-1)];break;default:var h=+o;if(0===h)return a;if(h>g){var d=i(h/10);return 0===d?a:d<=g?void 0===n[d-1]?s(o,1):n[d-1]+s(o,1):a}l=n[h-1]}return void 0===l?"":l}))}},7854:function(e,t,r){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||this||Function("return this")()},2597:(e,t,r)=>{var n=r(1702),a=r(7908),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(a(e),t)}},3501:e=>{e.exports={}},842:e=>{e.exports=function(e,t){try{1==arguments.length?console.error(e):console.error(e,t)}catch(e){}}},490:(e,t,r)=>{var n=r(5005);e.exports=n("document","documentElement")},4664:(e,t,r)=>{var n=r(9781),a=r(7293),i=r(317);e.exports=!n&&!a((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},1179:e=>{var t=Array,r=Math.abs,n=Math.pow,a=Math.floor,i=Math.log,s=Math.LN2;e.exports={pack:function(e,o,c){var l,h,u,d=t(c),f=8*c-o-1,g=(1<>1,m=23===o?n(2,-24)-n(2,-77):0,b=e<0||0===e&&1/e<0?1:0,y=0;for((e=r(e))!=e||e===1/0?(h=e!=e?1:0,l=g):(l=a(i(e)/s),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+p>=1?m/u:m*n(2,1-p))*u>=2&&(l++,u/=2),l+p>=g?(h=0,l=g):l+p>=1?(h=(e*u-1)*n(2,o),l+=p):(h=e*n(2,p-1)*n(2,o),l=0));o>=8;)d[y++]=255&h,h/=256,o-=8;for(l=l<0;)d[y++]=255&l,l/=256,f-=8;return d[--y]|=128*b,d},unpack:function(e,t){var r,a=e.length,i=8*a-t-1,s=(1<>1,c=i-7,l=a-1,h=e[l--],u=127&h;for(h>>=7;c>0;)u=256*u+e[l--],c-=8;for(r=u&(1<<-c)-1,u>>=-c,c+=t;c>0;)r=256*r+e[l--],c-=8;if(0===u)u=1-o;else{if(u===s)return r?NaN:h?-1/0:1/0;r+=n(2,t),u-=o}return(h?-1:1)*r*n(2,u-t)}}},8361:(e,t,r)=>{var n=r(1702),a=r(7293),i=r(4326),s=Object,o=n("".split);e.exports=a((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?o(e,""):s(e)}:s},9587:(e,t,r)=>{var n=r(614),a=r(111),i=r(7674);e.exports=function(e,t,r){var s,o;return i&&n(s=t.constructor)&&s!==r&&a(o=s.prototype)&&o!==r.prototype&&i(e,o),e}},2788:(e,t,r)=>{var n=r(1702),a=r(614),i=r(5465),s=n(Function.toString);a(i.inspectSource)||(i.inspectSource=function(e){return s(e)}),e.exports=i.inspectSource},8340:(e,t,r)=>{var n=r(111),a=r(8880);e.exports=function(e,t){n(t)&&"cause"in t&&a(e,"cause",t.cause)}},2423:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(3501),s=r(111),o=r(2597),c=r(3070).f,l=r(8006),h=r(1156),u=r(2050),d=r(9711),f=r(6677),g=!1,p=d("meta"),m=0,b=function(e){c(e,p,{value:{objectID:"O"+m++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},g=!0;var e=l.f,t=a([].splice),r={};r[p]=1,e(r).length&&(l.f=function(r){for(var n=e(r),a=0,i=n.length;a{var n,a,i,s=r(4811),o=r(7854),c=r(111),l=r(8880),h=r(2597),u=r(5465),d=r(6200),f=r(3501),g="Object already initialized",p=o.TypeError,m=o.WeakMap;if(s||u.state){var b=u.state||(u.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,n=function(e,t){if(b.has(e))throw p(g);return t.facade=e,b.set(e,t),t},a=function(e){return b.get(e)||{}},i=function(e){return b.has(e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(h(e,y))throw p(g);return t.facade=e,l(e,y,t),t},a=function(e){return h(e,y)?e[y]:{}},i=function(e){return h(e,y)}}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 p("Incompatible receiver, "+e+" required");return r}}}},7659:(e,t,r)=>{var n=r(5112),a=r(7497),i=n("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(a.Array===e||s[i]===e)}},3157:(e,t,r)=>{var n=r(4326);e.exports=Array.isArray||function(e){return"Array"==n(e)}},4067:(e,t,r)=>{var n=r(648);e.exports=function(e){var t=n(e);return"BigInt64Array"==t||"BigUint64Array"==t}},614:(e,t,r)=>{var n=r(4154),a=n.all;e.exports=n.IS_HTMLDDA?function(e){return"function"==typeof e||e===a}:function(e){return"function"==typeof e}},4411:(e,t,r)=>{var n=r(1702),a=r(7293),i=r(614),s=r(648),o=r(5005),c=r(2788),l=function(){},h=[],u=o("Reflect","construct"),d=/^\\s*(?:class|function)\\b/,f=n(d.exec),g=!d.exec(l),p=function(e){if(!i(e))return!1;try{return u(l,h,e),!0}catch(e){return!1}},m=function(e){if(!i(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return g||!!f(d,c(e))}catch(e){return!0}};m.sham=!0,e.exports=!u||a((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?m:p},4705:(e,t,r)=>{var n=r(7293),a=r(614),i=/#|\\.prototype\\./,s=function(e,t){var r=c[o(e)];return r==h||r!=l&&(a(t)?n(t):!!t)},o=s.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=s.data={},l=s.NATIVE="N",h=s.POLYFILL="P";e.exports=s},5988:(e,t,r)=>{var n=r(111),a=Math.floor;e.exports=Number.isInteger||function(e){return!n(e)&&isFinite(e)&&a(e)===e}},8554:e=>{e.exports=function(e){return null==e}},111:(e,t,r)=>{var n=r(614),a=r(4154),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)}},1913:e=>{e.exports=!1},7850:(e,t,r)=>{var n=r(111),a=r(4326),i=r(5112)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==a(e))}},2190:(e,t,r)=>{var n=r(5005),a=r(614),i=r(7976),s=r(3307),o=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return a(t)&&i(t.prototype,o(e))}},408:(e,t,r)=>{var n=r(9974),a=r(6916),i=r(9670),s=r(6330),o=r(7659),c=r(6244),l=r(7976),h=r(4121),u=r(1246),d=r(9212),f=TypeError,g=function(e,t){this.stopped=e,this.result=t},p=g.prototype;e.exports=function(e,t,r){var m,b,y,w,v,x,S,A=r&&r.that,k=!(!r||!r.AS_ENTRIES),C=!(!r||!r.IS_RECORD),O=!(!r||!r.IS_ITERATOR),F=!(!r||!r.INTERRUPTED),I=n(t,A),T=function(e){return m&&d(m,"normal",e),new g(!0,e)},M=function(e){return k?(i(e),F?I(e[0],e[1],T):I(e[0],e[1])):F?I(e,T):I(e)};if(C)m=e.iterator;else if(O)m=e;else{if(!(b=u(e)))throw f(s(e)+" is not iterable");if(o(b)){for(y=0,w=c(e);w>y;y++)if((v=M(e[y]))&&l(p,v))return v;return new g(!1)}m=h(e,b)}for(x=C?e.next:m.next;!(S=a(x,m)).done;){try{v=M(S.value)}catch(e){d(m,"throw",e)}if("object"==typeof v&&v&&l(p,v))return v}return new g(!1)}},9212:(e,t,r)=>{var n=r(6916),a=r(9670),i=r(8173);e.exports=function(e,t,r){var s,o;a(e);try{if(!(s=i(e,"return"))){if("throw"===t)throw r;return r}s=n(s,e)}catch(e){o=!0,s=e}if("throw"===t)throw r;if(o)throw s;return a(s),r}},3061:(e,t,r)=>{var n=r(3383).IteratorPrototype,a=r(30),i=r(9114),s=r(8003),o=r(7497),c=function(){return this};e.exports=function(e,t,r,l){var h=t+" Iterator";return e.prototype=a(n,{next:i(+!l,r)}),s(e,h,!1,!0),o[h]=c,e}},1656:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(1913),s=r(6530),o=r(614),c=r(3061),l=r(9518),h=r(7674),u=r(8003),d=r(8880),f=r(8052),g=r(5112),p=r(7497),m=r(3383),b=s.PROPER,y=s.CONFIGURABLE,w=m.IteratorPrototype,v=m.BUGGY_SAFARI_ITERATORS,x=g("iterator"),S="keys",A="values",k="entries",C=function(){return this};e.exports=function(e,t,r,s,g,m,O){c(r,t,s);var F,I,T,M=function(e){if(e===g&&D)return D;if(!v&&e in R)return R[e];switch(e){case S:case A:case k:return function(){return new r(this,e)}}return function(){return new r(this)}},E=t+" Iterator",P=!1,R=e.prototype,N=R[x]||R["@@iterator"]||g&&R[g],D=!v&&N||M(g),B="Array"==t&&R.entries||N;if(B&&(F=l(B.call(new e)))!==Object.prototype&&F.next&&(i||l(F)===w||(h?h(F,w):o(F[x])||f(F,x,C)),u(F,E,!0,!0),i&&(p[E]=C)),b&&g==A&&N&&N.name!==A&&(!i&&y?d(R,"name",A):(P=!0,D=function(){return a(N,this)})),g)if(I={values:M(A),keys:m?D:M(S),entries:M(k)},O)for(T in I)(v||P||!(T in R))&&f(R,T,I[T]);else n({target:t,proto:!0,forced:v||P},I);return i&&!O||R[x]===D||f(R,x,D,{name:g}),p[t]=D,I}},3383:(e,t,r)=>{var n,a,i,s=r(7293),o=r(614),c=r(111),l=r(30),h=r(9518),u=r(8052),d=r(5112),f=r(1913),g=d("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(a=h(h(i)))!==Object.prototype&&(n=a):p=!0),!c(n)||s((function(){var e={};return n[g].call(e)!==e}))?n={}:f&&(n=l(n)),o(n[g])||u(n,g,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:p}},7497:e=>{e.exports={}},6244:(e,t,r)=>{var n=r(7466);e.exports=function(e){return n(e.length)}},6339:(e,t,r)=>{var n=r(1702),a=r(7293),i=r(614),s=r(2597),o=r(9781),c=r(6530).CONFIGURABLE,l=r(2788),h=r(9909),u=h.enforce,d=h.get,f=String,g=Object.defineProperty,p=n("".slice),m=n("".replace),b=n([].join),y=o&&!a((function(){return 8!==g((function(){}),"length",{value:8}).length})),w=String(String).split("String"),v=e.exports=function(e,t,r){"Symbol("===p(f(t),0,7)&&(t="["+m(f(t),/^Symbol\\(([^)]*)\\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!s(e,"name")||c&&e.name!==t)&&(o?g(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&s(r,"arity")&&e.length!==r.arity&&g(e,"length",{value:r.arity});try{r&&s(r,"constructor")&&r.constructor?o&&g(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=u(e);return s(n,"source")||(n.source=b(w,"string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return i(this)&&d(this).source||l(this)}),"toString")},4758:e=>{var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},5948:(e,t,r)=>{var n,a,i,s,o,c=r(7854),l=r(9974),h=r(1236).f,u=r(261).set,d=r(8572),f=r(6833),g=r(1528),p=r(1036),m=r(5268),b=c.MutationObserver||c.WebKitMutationObserver,y=c.document,w=c.process,v=c.Promise,x=h(c,"queueMicrotask"),S=x&&x.value;if(!S){var A=new d,k=function(){var e,t;for(m&&(e=w.domain)&&e.exit();t=A.get();)try{t()}catch(e){throw A.head&&n(),e}e&&e.enter()};f||m||p||!b||!y?!g&&v&&v.resolve?((s=v.resolve(void 0)).constructor=v,o=l(s.then,s),n=function(){o(k)}):m?n=function(){w.nextTick(k)}:(u=l(u,c),n=function(){u(k)}):(a=!0,i=y.createTextNode(""),new b(k).observe(i,{characterData:!0}),n=function(){i.data=a=!a}),S=function(e){A.head||n(),A.add(e)}}e.exports=S},8523:(e,t,r)=>{var n=r(9662),a=TypeError,i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw a("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},6277:(e,t,r)=>{var n=r(1340);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},3929:(e,t,r)=>{var n=r(7850),a=TypeError;e.exports=function(e){if(n(e))throw a("The method doesn't accept regular expressions");return e}},2814:(e,t,r)=>{var n=r(7854),a=r(7293),i=r(1702),s=r(1340),o=r(3111).trim,c=r(1361),l=i("".charAt),h=n.parseFloat,u=n.Symbol,d=u&&u.iterator,f=1/h(c+"-0")!=-1/0||d&&!a((function(){h(Object(d))}));e.exports=f?function(e){var t=o(s(e)),r=h(t);return 0===r&&"-"==l(t,0)?-0:r}:h},3009:(e,t,r)=>{var n=r(7854),a=r(7293),i=r(1702),s=r(1340),o=r(3111).trim,c=r(1361),l=n.parseInt,h=n.Symbol,u=h&&h.iterator,d=/^[+-]?0x/i,f=i(d.exec),g=8!==l(c+"08")||22!==l(c+"0x16")||u&&!a((function(){l(Object(u))}));e.exports=g?function(e,t){var r=o(s(e));return l(r,t>>>0||(f(d,r)?16:10))}:l},1574:(e,t,r)=>{var n=r(9781),a=r(1702),i=r(6916),s=r(7293),o=r(1956),c=r(5181),l=r(5296),h=r(7908),u=r(8361),d=Object.assign,f=Object.defineProperty,g=a([].concat);e.exports=!d||s((function(){if(n&&1!==d({b:1},d(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),a="abcdefghijklmnopqrst";return e[r]=7,a.split("").forEach((function(e){t[e]=e})),7!=d({},e)[r]||o(d({},t)).join("")!=a}))?function(e,t){for(var r=h(e),a=arguments.length,s=1,d=c.f,f=l.f;a>s;)for(var p,m=u(arguments[s++]),b=d?g(o(m),d(m)):o(m),y=b.length,w=0;y>w;)p=b[w++],n&&!i(f,m,p)||(r[p]=m[p]);return r}:d},30:(e,t,r)=>{var n,a=r(9670),i=r(6048),s=r(748),o=r(3501),c=r(490),l=r(317),h=r(6200),u="prototype",d="script",f=h("IE_PROTO"),g=function(){},p=function(e){return"<"+d+">"+e+""},m=function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t},b=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;b="undefined"!=typeof document?document.domain&&n?m(n):(t=l("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F):m(n);for(var a=s.length;a--;)delete b[u][s[a]];return b()};o[f]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(g[u]=a(e),r=new g,g[u]=null,r[f]=e):r=b(),void 0===t?r:i.f(r,t)}},6048:(e,t,r)=>{var n=r(9781),a=r(3353),i=r(3070),s=r(9670),o=r(5656),c=r(1956);t.f=n&&!a?Object.defineProperties:function(e,t){s(e);for(var r,n=o(t),a=c(t),l=a.length,h=0;l>h;)i.f(e,r=a[h++],n[r]);return e}},3070:(e,t,r)=>{var n=r(9781),a=r(4664),i=r(3353),s=r(9670),o=r(4948),c=TypeError,l=Object.defineProperty,h=Object.getOwnPropertyDescriptor,u="enumerable",d="configurable",f="writable";t.f=n?i?function(e,t,r){if(s(e),t=o(t),s(r),"function"==typeof e&&"prototype"===t&&"value"in r&&f in r&&!r[f]){var n=h(e,t);n&&n[f]&&(e[t]=r.value,r={configurable:d in r?r[d]:n[d],enumerable:u in r?r[u]:n[u],writable:!1})}return l(e,t,r)}:l:function(e,t,r){if(s(e),t=o(t),s(r),a)try{return l(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}},1236:(e,t,r)=>{var n=r(9781),a=r(6916),i=r(5296),s=r(9114),o=r(5656),c=r(4948),l=r(2597),h=r(4664),u=Object.getOwnPropertyDescriptor;t.f=n?u:function(e,t){if(e=o(e),t=c(t),h)try{return u(e,t)}catch(e){}if(l(e,t))return s(!a(i.f,e,t),e[t])}},1156:(e,t,r)=>{var n=r(4326),a=r(5656),i=r(8006).f,s=r(1589),o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return o&&"Window"==n(e)?function(e){try{return i(e)}catch(e){return s(o)}}(e):i(a(e))}},8006:(e,t,r)=>{var n=r(6324),a=r(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,a)}},5181:(e,t)=>{t.f=Object.getOwnPropertySymbols},9518:(e,t,r)=>{var n=r(2597),a=r(614),i=r(7908),s=r(6200),o=r(8544),c=s("IE_PROTO"),l=Object,h=l.prototype;e.exports=o?l.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 l?h:null}},2050:(e,t,r)=>{var n=r(7293),a=r(111),i=r(4326),s=r(7556),o=Object.isExtensible,c=n((function(){o(1)}));e.exports=c||s?function(e){return!!a(e)&&(!s||"ArrayBuffer"!=i(e))&&(!o||o(e))}:o},7976:(e,t,r)=>{var n=r(1702);e.exports=n({}.isPrototypeOf)},6324:(e,t,r)=>{var n=r(1702),a=r(2597),i=r(5656),s=r(1318).indexOf,o=r(3501),c=n([].push);e.exports=function(e,t){var r,n=i(e),l=0,h=[];for(r in n)!a(o,r)&&a(n,r)&&c(h,r);for(;t.length>l;)a(n,r=t[l++])&&(~s(h,r)||c(h,r));return h}},1956:(e,t,r)=>{var n=r(6324),a=r(748);e.exports=Object.keys||function(e){return n(e,a)}},5296:(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},7674:(e,t,r)=>{var n=r(5668),a=r(9670),i=r(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(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)},2140:(e,t,r)=>{var n=r(6916),a=r(614),i=r(111),s=TypeError;e.exports=function(e,t){var r,o;if("string"===t&&a(r=e.toString)&&!i(o=n(r,e)))return o;if(a(r=e.valueOf)&&!i(o=n(r,e)))return o;if("string"!==t&&a(r=e.toString)&&!i(o=n(r,e)))return o;throw s("Can't convert object to primitive value")}},3887:(e,t,r)=>{var n=r(5005),a=r(1702),i=r(8006),s=r(5181),o=r(9670),c=a([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(o(e)),r=s.f;return r?c(t,r(e)):t}},2534:e=>{e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},3702:(e,t,r)=>{var n=r(7854),a=r(2492),i=r(614),s=r(4705),o=r(2788),c=r(5112),l=r(7871),h=r(3823),u=r(1913),d=r(7392),f=a&&a.prototype,g=c("species"),p=!1,m=i(n.PromiseRejectionEvent),b=s("Promise",(function(){var e=o(a),t=e!==String(a);if(!t&&66===d)return!0;if(u&&(!f.catch||!f.finally))return!0;if(!d||d<51||!/native code/.test(e)){var r=new a((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[g]=n,!(p=r.then((function(){}))instanceof n))return!0}return!t&&(l||h)&&!m}));e.exports={CONSTRUCTOR:b,REJECTION_EVENT:m,SUBCLASSING:p}},2492:(e,t,r)=>{var n=r(7854);e.exports=n.Promise},9478:(e,t,r)=>{var n=r(9670),a=r(111),i=r(8523);e.exports=function(e,t){if(n(e),a(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},612:(e,t,r)=>{var n=r(2492),a=r(7072),i=r(3702).CONSTRUCTOR;e.exports=i||!a((function(e){n.all(e).then(void 0,(function(){}))}))},2626:(e,t,r)=>{var n=r(3070).f;e.exports=function(e,t,r){r in e||n(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})}},8572:e=>{var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},e.exports=t},7651:(e,t,r)=>{var n=r(6916),a=r(9670),i=r(614),s=r(4326),o=r(2261),c=TypeError;e.exports=function(e,t){var r=e.exec;if(i(r)){var l=n(r,e,t);return null!==l&&a(l),l}if("RegExp"===s(e))return n(o,e,t);throw c("RegExp#exec called on incompatible receiver")}},2261:(e,t,r)=>{var n,a,i=r(6916),s=r(1702),o=r(1340),c=r(7066),l=r(2999),h=r(2309),u=r(30),d=r(9909).get,f=r(9441),g=r(7168),p=h("native-string-replace",String.prototype.replace),m=RegExp.prototype.exec,b=m,y=s("".charAt),w=s("".indexOf),v=s("".replace),x=s("".slice),S=(a=/b*/g,i(m,n=/a/,"a"),i(m,a,"a"),0!==n.lastIndex||0!==a.lastIndex),A=l.BROKEN_CARET,k=void 0!==/()??/.exec("")[1];(S||k||A||f||g)&&(b=function(e){var t,r,n,a,s,l,h,f=this,g=d(f),C=o(e),O=g.raw;if(O)return O.lastIndex=f.lastIndex,t=i(b,O,C),f.lastIndex=O.lastIndex,t;var F=g.groups,I=A&&f.sticky,T=i(c,f),M=f.source,E=0,P=C;if(I&&(T=v(T,"y",""),-1===w(T,"g")&&(T+="g"),P=x(C,f.lastIndex),f.lastIndex>0&&(!f.multiline||f.multiline&&"\\n"!==y(C,f.lastIndex-1))&&(M="(?: "+M+")",P=" "+P,E++),r=new RegExp("^(?:"+M+")",T)),k&&(r=new RegExp("^"+M+"$(?!\\\\s)",T)),S&&(n=f.lastIndex),a=i(m,I?r:f,P),I?a?(a.input=x(a.input,E),a[0]=x(a[0],E),a.index=f.lastIndex,f.lastIndex+=a[0].length):f.lastIndex=0:S&&a&&(f.lastIndex=f.global?a.index+a[0].length:n),k&&a&&a.length>1&&i(p,a[0],r,(function(){for(s=1;s{var n=r(9670);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}},4706:(e,t,r)=>{var n=r(6916),a=r(2597),i=r(7976),s=r(7066),o=RegExp.prototype;e.exports=function(e){var t=e.flags;return void 0!==t||"flags"in o||a(e,"flags")||!i(o,e)?t:n(s,e)}},2999:(e,t,r)=>{var n=r(7293),a=r(7854).RegExp,i=n((function(){var e=a("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),s=i||n((function(){return!a("a","y").sticky})),o=i||n((function(){var e=a("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));e.exports={BROKEN_CARET:o,MISSED_STICKY:s,UNSUPPORTED_Y:i}},9441:(e,t,r)=>{var n=r(7293),a=r(7854).RegExp;e.exports=n((function(){var e=a(".","s");return!(e.dotAll&&e.exec("\\n")&&"s"===e.flags)}))},7168:(e,t,r)=>{var n=r(7293),a=r(7854).RegExp;e.exports=n((function(){var e=a("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},4488:(e,t,r)=>{var n=r(8554),a=TypeError;e.exports=function(e){if(n(e))throw a("Can't call method on "+e);return e}},6340:(e,t,r)=>{var n=r(5005),a=r(7045),i=r(5112),s=r(9781),o=i("species");e.exports=function(e){var t=n(e);s&&t&&!t[o]&&a(t,o,{configurable:!0,get:function(){return this}})}},8003:(e,t,r)=>{var n=r(3070).f,a=r(2597),i=r(5112)("toStringTag");e.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!a(e,i)&&n(e,i,{configurable:!0,value:t})}},6200:(e,t,r)=>{var n=r(2309),a=r(9711),i=n("keys");e.exports=function(e){return i[e]||(i[e]=a(e))}},5465:(e,t,r)=>{var n=r(7854),a=r(3072),i="__core-js_shared__",s=n[i]||a(i,{});e.exports=s},2309:(e,t,r)=>{var n=r(1913),a=r(5465);(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.32.0",mode:n?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE",source:"https://github.com/zloirock/core-js"})},6707:(e,t,r)=>{var n=r(9670),a=r(9483),i=r(8554),s=r(5112)("species");e.exports=function(e,t){var r,o=n(e).constructor;return void 0===o||i(r=n(o)[s])?t:a(r)}},8710:(e,t,r)=>{var n=r(1702),a=r(9303),i=r(1340),s=r(4488),o=n("".charAt),c=n("".charCodeAt),l=n("".slice),h=function(e){return function(t,r){var n,h,u=i(s(t)),d=a(r),f=u.length;return d<0||d>=f?e?"":void 0:(n=c(u,d))<55296||n>56319||d+1===f||(h=c(u,d+1))<56320||h>57343?e?o(u,d):n:e?l(u,d,d+2):h-56320+(n-55296<<10)+65536}};e.exports={codeAt:h(!1),charAt:h(!0)}},3197:(e,t,r)=>{var n=r(1702),a=2147483647,i=/[^\\0-\\u007E]/,s=/[.\\u3002\\uFF0E\\uFF61]/g,o="Overflow: input needs wider integers to process",c=RangeError,l=n(s.exec),h=Math.floor,u=String.fromCharCode,d=n("".charCodeAt),f=n([].join),g=n([].push),p=n("".replace),m=n("".split),b=n("".toLowerCase),y=function(e){return e+22+75*(e<26)},w=function(e,t,r){var n=0;for(e=r?h(e/700):e>>1,e+=h(e/t);e>455;)e=h(e/35),n+=36;return h(n+36*e/(e+38))},v=function(e){var t=[];e=function(e){for(var t=[],r=0,n=e.length;r=55296&&a<=56319&&r=s&&nh((a-l)/x))throw c(o);for(l+=(v-s)*x,s=v,r=0;ra)throw c(o);if(n==s){for(var S=l,A=36;;){var k=A<=p?1:A>=p+26?26:A-p;if(S{var n=r(9303),a=r(1340),i=r(4488),s=RangeError;e.exports=function(e){var t=a(i(this)),r="",o=n(e);if(o<0||o==1/0)throw s("Wrong number of repetitions");for(;o>0;(o>>>=1)&&(t+=t))1&o&&(r+=t);return r}},6091:(e,t,r)=>{var n=r(6530).PROPER,a=r(7293),i=r(1361);e.exports=function(e){return a((function(){return!!i[e]()||"​…᠎"!=="​…᠎"[e]()||n&&i[e].name!==e}))}},3111:(e,t,r)=>{var n=r(1702),a=r(4488),i=r(1340),s=r(1361),o=n("".replace),c=RegExp("^["+s+"]+"),l=RegExp("(^|[^"+s+"])["+s+"]+$"),h=function(e){return function(t){var r=i(a(t));return 1&e&&(r=o(r,c,"")),2&e&&(r=o(r,l,"$1")),r}};e.exports={start:h(1),end:h(2),trim:h(3)}},6293:(e,t,r)=>{var n=r(7392),a=r(7293),i=r(7854).String;e.exports=!!Object.getOwnPropertySymbols&&!a((function(){var e=Symbol();return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},261:(e,t,r)=>{var n,a,i,s,o=r(7854),c=r(2104),l=r(9974),h=r(614),u=r(2597),d=r(7293),f=r(490),g=r(206),p=r(317),m=r(8053),b=r(6833),y=r(5268),w=o.setImmediate,v=o.clearImmediate,x=o.process,S=o.Dispatch,A=o.Function,k=o.MessageChannel,C=o.String,O=0,F={},I="onreadystatechange";d((function(){n=o.location}));var T=function(e){if(u(F,e)){var t=F[e];delete F[e],t()}},M=function(e){return function(){T(e)}},E=function(e){T(e.data)},P=function(e){o.postMessage(C(e),n.protocol+"//"+n.host)};w&&v||(w=function(e){m(arguments.length,1);var t=h(e)?e:A(e),r=g(arguments,1);return F[++O]=function(){c(t,void 0,r)},a(O),O},v=function(e){delete F[e]},y?a=function(e){x.nextTick(M(e))}:S&&S.now?a=function(e){S.now(M(e))}:k&&!b?(s=(i=new k).port2,i.port1.onmessage=E,a=l(s.postMessage,s)):o.addEventListener&&h(o.postMessage)&&!o.importScripts&&n&&"file:"!==n.protocol&&!d(P)?(a=P,o.addEventListener("message",E,!1)):a=I in p("script")?function(e){f.appendChild(p("script"))[I]=function(){f.removeChild(this),T(e)}}:function(e){setTimeout(M(e),0)}),e.exports={set:w,clear:v}},863:(e,t,r)=>{var n=r(1702);e.exports=n(1..valueOf)},1400:(e,t,r)=>{var n=r(9303),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)}},4599:(e,t,r)=>{var n=r(7593),a=TypeError;e.exports=function(e){var t=n(e,"number");if("number"==typeof t)throw a("Can't convert number to bigint");return BigInt(t)}},7067:(e,t,r)=>{var n=r(9303),a=r(7466),i=RangeError;e.exports=function(e){if(void 0===e)return 0;var t=n(e),r=a(t);if(t!==r)throw i("Wrong length or index");return r}},5656:(e,t,r)=>{var n=r(8361),a=r(4488);e.exports=function(e){return n(a(e))}},9303:(e,t,r)=>{var n=r(4758);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},7466:(e,t,r)=>{var n=r(9303),a=Math.min;e.exports=function(e){return e>0?a(n(e),9007199254740991):0}},7908:(e,t,r)=>{var n=r(4488),a=Object;e.exports=function(e){return a(n(e))}},4590:(e,t,r)=>{var n=r(3002),a=RangeError;e.exports=function(e,t){var r=n(e);if(r%t)throw a("Wrong offset");return r}},3002:(e,t,r)=>{var n=r(9303),a=RangeError;e.exports=function(e){var t=n(e);if(t<0)throw a("The argument can't be less than 0");return t}},7593:(e,t,r)=>{var n=r(6916),a=r(111),i=r(2190),s=r(8173),o=r(2140),c=r(5112),l=TypeError,h=c("toPrimitive");e.exports=function(e,t){if(!a(e)||i(e))return e;var r,c=s(e,h);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!a(r)||i(r))return r;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),o(e,t)}},4948:(e,t,r)=>{var n=r(7593),a=r(2190);e.exports=function(e){var t=n(e,"string");return a(t)?t:t+""}},1694:(e,t,r)=>{var n={};n[r(5112)("toStringTag")]="z",e.exports="[object z]"===String(n)},1340:(e,t,r)=>{var n=r(648),a=String;e.exports=function(e){if("Symbol"===n(e))throw TypeError("Cannot convert a Symbol value to a string");return a(e)}},7892:e=>{var t=Math.round;e.exports=function(e){var r=t(e);return r<0?0:r>255?255:255&r}},4038:(e,t,r)=>{var n=r(5268);e.exports=function(e){try{if(n)return Function('return require("'+e+'")')()}catch(e){}}},6330:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},9843:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(6916),s=r(9781),o=r(3832),c=r(260),l=r(3331),h=r(5787),u=r(9114),d=r(8880),f=r(5988),g=r(7466),p=r(7067),m=r(4590),b=r(7892),y=r(4948),w=r(2597),v=r(648),x=r(111),S=r(2190),A=r(30),k=r(7976),C=r(7674),O=r(8006).f,F=r(7321),I=r(2092).forEach,T=r(6340),M=r(7045),E=r(3070),P=r(1236),R=r(9909),N=r(9587),D=R.get,B=R.set,L=R.enforce,_=E.f,j=P.f,U=a.RangeError,$=l.ArrayBuffer,X=$.prototype,H=l.DataView,q=c.NATIVE_ARRAY_BUFFER_VIEWS,z=c.TYPED_ARRAY_TAG,G=c.TypedArray,W=c.TypedArrayPrototype,V=c.aTypedArrayConstructor,K=c.isTypedArray,Y="BYTES_PER_ELEMENT",J="Wrong length",Z=function(e,t){V(e);for(var r=0,n=t.length,a=new e(n);n>r;)a[r]=t[r++];return a},Q=function(e,t){M(e,t,{configurable:!0,get:function(){return D(this)[t]}})},ee=function(e){var t;return k(X,e)||"ArrayBuffer"==(t=v(e))||"SharedArrayBuffer"==t},te=function(e,t){return K(e)&&!S(t)&&t in e&&f(+t)&&t>=0},re=function(e,t){return t=y(t),te(e,t)?u(2,e[t]):j(e,t)},ne=function(e,t,r){return t=y(t),!(te(e,t)&&x(r)&&w(r,"value"))||w(r,"get")||w(r,"set")||r.configurable||w(r,"writable")&&!r.writable||w(r,"enumerable")&&!r.enumerable?_(e,t,r):(e[t]=r.value,e)};s?(q||(P.f=re,E.f=ne,Q(W,"buffer"),Q(W,"byteOffset"),Q(W,"byteLength"),Q(W,"length")),n({target:"Object",stat:!0,forced:!q},{getOwnPropertyDescriptor:re,defineProperty:ne}),e.exports=function(e,t,r){var s=e.match(/\\d+/)[0]/8,c=e+(r?"Clamped":"")+"Array",l="get"+e,u="set"+e,f=a[c],y=f,w=y&&y.prototype,v={},S=function(e,t){_(e,t,{get:function(){return function(e,t){var r=D(e);return r.view[l](t*s+r.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,n){var a=D(e);a.view[u](t*s+a.byteOffset,r?b(n):n,!0)}(this,t,e)},enumerable:!0})};q?o&&(y=t((function(e,t,r,n){return h(e,w),N(x(t)?ee(t)?void 0!==n?new f(t,m(r,s),n):void 0!==r?new f(t,m(r,s)):new f(t):K(t)?Z(y,t):i(F,y,t):new f(p(t)),e,y)})),C&&C(y,G),I(O(f),(function(e){e in y||d(y,e,f[e])})),y.prototype=w):(y=t((function(e,t,r,n){h(e,w);var a,o,c,l=0,u=0;if(x(t)){if(!ee(t))return K(t)?Z(y,t):i(F,y,t);a=t,u=m(r,s);var d=t.byteLength;if(void 0===n){if(d%s)throw U(J);if((o=d-u)<0)throw U(J)}else if((o=g(n)*s)+u>d)throw U(J);c=o/s}else c=p(t),a=new $(o=c*s);for(B(e,{buffer:a,byteOffset:u,byteLength:o,length:c,view:new H(a)});l{var n=r(7854),a=r(7293),i=r(7072),s=r(260).NATIVE_ARRAY_BUFFER_VIEWS,o=n.ArrayBuffer,c=n.Int8Array;e.exports=!s||!a((function(){c(1)}))||!a((function(){new c(-1)}))||!i((function(e){new c,new c(null),new c(1.5),new c(e)}),!0)||a((function(){return 1!==new c(new o(2),1,void 0).length}))},7321:(e,t,r)=>{var n=r(9974),a=r(6916),i=r(9483),s=r(7908),o=r(6244),c=r(4121),l=r(1246),h=r(7659),u=r(4067),d=r(260).aTypedArrayConstructor,f=r(4599);e.exports=function(e){var t,r,g,p,m,b,y,w,v=i(this),x=s(e),S=arguments.length,A=S>1?arguments[1]:void 0,k=void 0!==A,C=l(x);if(C&&!h(C))for(w=(y=c(x,C)).next,x=[];!(b=a(w,y)).done;)x.push(b.value);for(k&&S>2&&(A=n(A,arguments[2])),r=o(x),g=new(d(v))(r),p=u(g),t=0;r>t;t++)m=k?A(x[t],t):x[t],g[t]=p?f(m):+m;return g}},9711:(e,t,r)=>{var n=r(1702),a=0,i=Math.random(),s=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++a+i,36)}},5143:(e,t,r)=>{var n=r(7293),a=r(5112),i=r(9781),s=r(1913),o=a("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),r.delete("a",2),r.delete("b",void 0),s&&(!e.toJSON||!r.has("a",1)||r.has("a",2)||!r.has("a",void 0)||r.has("b"))||!t.size&&(s||!i)||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[o]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host}))},3307:(e,t,r)=>{var n=r(6293);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3353:(e,t,r)=>{var n=r(9781),a=r(7293);e.exports=n&&a((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},8053:e=>{var t=TypeError;e.exports=function(e,r){if(e{var n=r(7854),a=r(614),i=n.WeakMap;e.exports=a(i)&&/native code/.test(String(i))},5112:(e,t,r)=>{var n=r(7854),a=r(2309),i=r(2597),s=r(9711),o=r(6293),c=r(3307),l=n.Symbol,h=a("wks"),u=c?l.for||l:l&&l.withoutSetter||s;e.exports=function(e){return i(h,e)||(h[e]=o&&i(l,e)?l[e]:u("Symbol."+e)),h[e]}},1361:e=>{e.exports="\\t\\n\\v\\f\\r                 \\u2028\\u2029\\ufeff"},9191:(e,t,r)=>{var n=r(5005),a=r(2597),i=r(8880),s=r(7976),o=r(7674),c=r(9920),l=r(2626),h=r(9587),u=r(6277),d=r(8340),f=r(5392),g=r(9781),p=r(1913);e.exports=function(e,t,r,m){var b="stackTraceLimit",y=m?2:1,w=e.split("."),v=w[w.length-1],x=n.apply(null,w);if(x){var S=x.prototype;if(!p&&a(S,"cause")&&delete S.cause,!r)return x;var A=n("Error"),k=t((function(e,t){var r=u(m?t:e,void 0),n=m?new x(e):new x;return void 0!==r&&i(n,"message",r),f(n,k,n.stack,2),this&&s(S,this)&&h(n,this,k),arguments.length>y&&d(n,arguments[y]),n}));if(k.prototype=S,"Error"!==v?o?o(k,A):c(k,A,{name:!0}):g&&b in x&&(l(k,x,b),l(k,x,"prepareStackTrace")),c(k,x),!p)try{S.name!==v&&i(S,"name",v),S.constructor=k}catch(e){}return k}}},8264:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(3331),s=r(6340),o="ArrayBuffer",c=i[o];n({global:!0,constructor:!0,forced:a[o]!==c},{ArrayBuffer:c}),s(o)},9575:(e,t,r)=>{var n=r(2109),a=r(1470),i=r(7293),s=r(3331),o=r(9670),c=r(1400),l=r(7466),h=r(6707),u=s.ArrayBuffer,d=s.DataView,f=d.prototype,g=a(u.prototype.slice),p=a(f.getUint8),m=a(f.setUint8);n({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:i((function(){return!new u(2).slice(1,void 0).byteLength}))},{slice:function(e,t){if(g&&void 0===t)return g(o(this),e);for(var r=o(this).byteLength,n=c(e,r),a=c(void 0===t?r:t,r),i=new(h(this,u))(l(a-n)),s=new d(this),f=new d(i),b=0;n{var n=r(2109),a=r(7908),i=r(6244),s=r(9303),o=r(1223);n({target:"Array",proto:!0},{at:function(e){var t=a(this),r=i(t),n=s(e),o=n>=0?n:r+n;return o<0||o>=r?void 0:t[o]}}),o("at")},7287:(e,t,r)=>{var n=r(2109),a=r(9671).findLastIndex,i=r(1223);n({target:"Array",proto:!0},{findLastIndex:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLastIndex")},7635:(e,t,r)=>{var n=r(2109),a=r(9671).findLast,i=r(1223);n({target:"Array",proto:!0},{findLast:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLast")},4944:(e,t,r)=>{var n=r(2109),a=r(6790),i=r(7908),s=r(6244),o=r(9303),c=r(5417);n({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=i(this),r=s(t),n=c(t,0);return n.length=a(n,t,t,r,0,void 0===e?1:o(e)),n}})},6699:(e,t,r)=>{var n=r(2109),a=r(1318).includes,i=r(7293),s=r(1223);n({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),s("includes")},6992:(e,t,r)=>{var n=r(5656),a=r(1223),i=r(7497),s=r(9909),o=r(3070).f,c=r(1656),l=r(6178),h=r(1913),u=r(9781),d="Array Iterator",f=s.set,g=s.getterFor(d);e.exports=c(Array,"Array",(function(e,t){f(this,{type:d,target:n(e),index:0,kind:t})}),(function(){var e=g(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,l(void 0,!0)):l("keys"==r?n:"values"==r?t[n]:[n,t[n]],!1)}),"values");var p=i.Arguments=i.Array;if(a("keys"),a("values"),a("entries"),!h&&u&&"values"!==p.name)try{o(p,"name",{value:"values"})}catch(e){}},7658:(e,t,r)=>{var n=r(2109),a=r(7908),i=r(6244),s=r(3658),o=r(7207);n({target:"Array",proto:!0,arity:1,forced:r(7293)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var t=a(this),r=i(t),n=arguments.length;o(r+n);for(var c=0;c{var n=r(2109),a=r(3671).left,i=r(9341),s=r(7392);n({target:"Array",proto:!0,forced:!r(5268)&&s>79&&s<83||!i("reduce")},{reduce:function(e){var t=arguments.length;return a(this,e,t,t>1?arguments[1]:void 0)}})},2707:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(9662),s=r(7908),o=r(6244),c=r(5117),l=r(1340),h=r(7293),u=r(4362),d=r(9341),f=r(8886),g=r(256),p=r(7392),m=r(8008),b=[],y=a(b.sort),w=a(b.push),v=h((function(){b.sort(void 0)})),x=h((function(){b.sort(null)})),S=d("sort"),A=!h((function(){if(p)return p<70;if(!(f&&f>3)){if(g)return!0;if(m)return m<603;var e,t,r,n,a="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)b.push({k:t+n,v:r})}for(b.sort((function(e,t){return t.v-e.v})),n=0;nl(r)?1:-1}}(e)),r=o(a),n=0;n{r(1223)("flat")},541:(e,t,r)=>{var n=r(2109),a=r(7908),i=r(6244),s=r(3658),o=r(5117),c=r(7207);n({target:"Array",proto:!0,arity:1,forced:1!==[].unshift(0)||!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(e){return e instanceof TypeError}}()},{unshift:function(e){var t=a(this),r=i(t),n=arguments.length;if(n){c(r+n);for(var l=r;l--;){var h=l+n;l in t?t[h]=t[l]:o(t,h)}for(var u=0;u{var n=r(2109),a=r(1572),i=r(5656),s=Array;n({target:"Array",proto:!0},{with:function(e,t){return a(i(this),s,e,t)}})},1703:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(2104),s=r(9191),o="WebAssembly",c=a[o],l=7!==Error("e",{cause:7}).cause,h=function(e,t){var r={};r[e]=s(e,t,l),n({global:!0,constructor:!0,arity:1,forced:l},r)},u=function(e,t){if(c&&c[e]){var r={};r[e]=s(o+"."+e,t,l),n({target:o,stat:!0,constructor:!0,arity:1,forced:l},r)}};h("Error",(function(e){return function(t){return i(e,this,arguments)}})),h("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),h("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),h("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),h("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),h("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),h("URIError",(function(e){return function(t){return i(e,this,arguments)}})),u("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),u("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),u("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},5837:(e,t,r)=>{var n=r(2109),a=r(7854);n({global:!0,forced:a.globalThis!==a},{globalThis:a})},8862:(e,t,r)=>{var n=r(2109),a=r(5005),i=r(2104),s=r(6916),o=r(1702),c=r(7293),l=r(614),h=r(2190),u=r(206),d=r(8044),f=r(6293),g=String,p=a("JSON","stringify"),m=o(/./.exec),b=o("".charAt),y=o("".charCodeAt),w=o("".replace),v=o(1..toString),x=/[\\uD800-\\uDFFF]/g,S=/^[\\uD800-\\uDBFF]$/,A=/^[\\uDC00-\\uDFFF]$/,k=!f||c((function(){var e=a("Symbol")();return"[null]"!=p([e])||"{}"!=p({a:e})||"{}"!=p(Object(e))})),C=c((function(){return'"\\\\udf06\\\\ud834"'!==p("\\udf06\\ud834")||'"\\\\udead"'!==p("\\udead")})),O=function(e,t){var r=u(arguments),n=d(t);if(l(n)||void 0!==e&&!h(e))return r[1]=function(e,t){if(l(n)&&(t=s(n,this,g(e),t)),!h(t))return t},i(p,null,r)},F=function(e,t,r){var n=b(r,t-1),a=b(r,t+1);return m(S,e)&&!m(A,a)||m(A,e)&&!m(S,n)?"\\\\u"+v(y(e,0),16):e};p&&n({target:"JSON",stat:!0,arity:3,forced:k||C},{stringify:function(e,t,r){var n=u(arguments),a=i(k?O:p,null,n);return C&&"string"==typeof a?w(a,x,F):a}})},5438:(e,t,r)=>{var n=r(2109),a=Math.hypot,i=Math.abs,s=Math.sqrt;n({target:"Math",stat:!0,arity:2,forced:!!a&&a(1/0,NaN)!==1/0},{hypot:function(e,t){for(var r,n,a=0,o=0,c=arguments.length,l=0;o0?(n=r/l)*n:r;return l===1/0?1/0:l*s(a)}})},6977:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(9303),s=r(863),o=r(8415),c=r(7293),l=RangeError,h=String,u=Math.floor,d=a(o),f=a("".slice),g=a(1..toFixed),p=function(e,t,r){return 0===t?r:t%2==1?p(e,t-1,r*e):p(e*e,t/2,r)},m=function(e,t,r){for(var n=-1,a=r;++n<6;)a+=t*e[n],e[n]=a%1e7,a=u(a/1e7)},b=function(e,t){for(var r=6,n=0;--r>=0;)n+=e[r],e[r]=u(n/t),n=n%t*1e7},y=function(e){for(var t=6,r="";--t>=0;)if(""!==r||0===t||0!==e[t]){var n=h(e[t]);r=""===r?n:r+d("0",7-n.length)+n}return r};n({target:"Number",proto:!0,forced:c((function(){return"0.000"!==g(8e-5,3)||"1"!==g(.9,0)||"1.25"!==g(1.255,2)||"1000000000000000128"!==g(0xde0b6b3a7640080,0)}))||!c((function(){g({})}))},{toFixed:function(e){var t,r,n,a,o=s(this),c=i(e),u=[0,0,0,0,0,0],g="",w="0";if(c<0||c>20)throw l("Incorrect fraction digits");if(o!=o)return"NaN";if(o<=-1e21||o>=1e21)return h(o);if(o<0&&(g="-",o=-o),o>1e-21)if(r=(t=function(e){for(var t=0,r=e;r>=4096;)t+=12,r/=4096;for(;r>=2;)t+=1,r/=2;return t}(o*p(2,69,1))-69)<0?o*p(2,-t,1):o/p(2,t,1),r*=4503599627370496,(t=52-t)>0){for(m(u,0,r),n=c;n>=7;)m(u,1e7,0),n-=7;for(m(u,p(10,n,1),0),n=t-1;n>=23;)b(u,1<<23),n-=23;b(u,1<0?g+((a=w.length)<=c?"0."+d("0",c-a)+w:f(w,0,a-c)+"."+f(w,a-c)):g+w}})},9601:(e,t,r)=>{var n=r(2109),a=r(1574);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==a},{assign:a})},6314:(e,t,r)=>{r(2109)({target:"Object",stat:!0},{hasOwn:r(2597)})},4678:(e,t,r)=>{var n=r(2109),a=r(2814);n({global:!0,forced:parseFloat!=a},{parseFloat:a})},1058:(e,t,r)=>{var n=r(2109),a=r(3009);n({global:!0,forced:parseInt!=a},{parseInt:a})},7922:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(9662),s=r(8523),o=r(2534),c=r(408);n({target:"Promise",stat:!0,forced:r(612)},{allSettled:function(e){var t=this,r=s.f(t),n=r.resolve,l=r.reject,h=o((function(){var r=i(t.resolve),s=[],o=0,l=1;c(e,(function(e){var i=o++,c=!1;l++,a(r,t,e).then((function(e){c||(c=!0,s[i]={status:"fulfilled",value:e},--l||n(s))}),(function(e){c||(c=!0,s[i]={status:"rejected",reason:e},--l||n(s))}))})),--l||n(s)}));return h.error&&l(h.value),r.promise}})},821:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(9662),s=r(8523),o=r(2534),c=r(408);n({target:"Promise",stat:!0,forced:r(612)},{all:function(e){var t=this,r=s.f(t),n=r.resolve,l=r.reject,h=o((function(){var r=i(t.resolve),s=[],o=0,h=1;c(e,(function(e){var i=o++,c=!1;h++,a(r,t,e).then((function(e){c||(c=!0,s[i]=e,--h||n(s))}),l)})),--h||n(s)}));return h.error&&l(h.value),r.promise}})},4164:(e,t,r)=>{var n=r(2109),a=r(1913),i=r(3702).CONSTRUCTOR,s=r(2492),o=r(5005),c=r(614),l=r(8052),h=s&&s.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(e){return this.then(void 0,e)}}),!a&&c(s)){var u=o("Promise").prototype.catch;h.catch!==u&&l(h,"catch",u,{unsafe:!0})}},3401:(e,t,r)=>{var n,a,i,s=r(2109),o=r(1913),c=r(5268),l=r(7854),h=r(6916),u=r(8052),d=r(7674),f=r(8003),g=r(6340),p=r(9662),m=r(614),b=r(111),y=r(5787),w=r(6707),v=r(261).set,x=r(5948),S=r(842),A=r(2534),k=r(8572),C=r(9909),O=r(2492),F=r(3702),I=r(8523),T="Promise",M=F.CONSTRUCTOR,E=F.REJECTION_EVENT,P=F.SUBCLASSING,R=C.getterFor(T),N=C.set,D=O&&O.prototype,B=O,L=D,_=l.TypeError,j=l.document,U=l.process,$=I.f,X=$,H=!!(j&&j.createEvent&&l.dispatchEvent),q="unhandledrejection",z=function(e){var t;return!(!b(e)||!m(t=e.then))&&t},G=function(e,t){var r,n,a,i=t.value,s=1==t.state,o=s?e.ok:e.fail,c=e.resolve,l=e.reject,u=e.domain;try{o?(s||(2===t.rejection&&J(t),t.rejection=1),!0===o?r=i:(u&&u.enter(),r=o(i),u&&(u.exit(),a=!0)),r===e.promise?l(_("Promise-chain cycle")):(n=z(r))?h(n,r,c,l):c(r)):l(i)}catch(e){u&&!a&&u.exit(),l(e)}},W=function(e,t){e.notified||(e.notified=!0,x((function(){for(var r,n=e.reactions;r=n.get();)G(r,e);e.notified=!1,t&&!e.rejection&&K(e)})))},V=function(e,t,r){var n,a;H?((n=j.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),l.dispatchEvent(n)):n={promise:t,reason:r},!E&&(a=l["on"+e])?a(n):e===q&&S("Unhandled promise rejection",r)},K=function(e){h(v,l,(function(){var t,r=e.facade,n=e.value;if(Y(e)&&(t=A((function(){c?U.emit("unhandledRejection",n,r):V(q,r,n)})),e.rejection=c||Y(e)?2:1,t.error))throw t.value}))},Y=function(e){return 1!==e.rejection&&!e.parent},J=function(e){h(v,l,(function(){var t=e.facade;c?U.emit("rejectionHandled",t):V("rejectionhandled",t,e.value)}))},Z=function(e,t,r){return function(n){e(t,n,r)}},Q=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,W(e,!0))},ee=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw _("Promise can't be resolved itself");var n=z(t);n?x((function(){var r={done:!1};try{h(n,t,Z(ee,r,e),Z(Q,r,e))}catch(t){Q(r,t,e)}})):(e.value=t,e.state=1,W(e,!1))}catch(t){Q({done:!1},t,e)}}};if(M&&(L=(B=function(e){y(this,L),p(e),h(n,this);var t=R(this);try{e(Z(ee,t),Z(Q,t))}catch(e){Q(t,e)}}).prototype,(n=function(e){N(this,{type:T,done:!1,notified:!1,parent:!1,reactions:new k,rejection:!1,state:0,value:void 0})}).prototype=u(L,"then",(function(e,t){var r=R(this),n=$(w(this,B));return r.parent=!0,n.ok=!m(e)||e,n.fail=m(t)&&t,n.domain=c?U.domain:void 0,0==r.state?r.reactions.add(n):x((function(){G(n,r)})),n.promise})),a=function(){var e=new n,t=R(e);this.promise=e,this.resolve=Z(ee,t),this.reject=Z(Q,t)},I.f=$=function(e){return e===B||void 0===e?new a(e):X(e)},!o&&m(O)&&D!==Object.prototype)){i=D.then,P||u(D,"then",(function(e,t){var r=this;return new B((function(e,t){h(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete D.constructor}catch(e){}d&&d(D,L)}s({global:!0,constructor:!0,wrap:!0,forced:M},{Promise:B}),f(B,T,!1,!0),g(T)},7727:(e,t,r)=>{var n=r(2109),a=r(1913),i=r(2492),s=r(7293),o=r(5005),c=r(614),l=r(6707),h=r(9478),u=r(8052),d=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&s((function(){d.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=l(this,o("Promise")),r=c(e);return this.then(r?function(r){return h(t,e()).then((function(){return r}))}:e,r?function(r){return h(t,e()).then((function(){throw r}))}:e)}}),!a&&c(i)){var f=o("Promise").prototype.finally;d.finally!==f&&u(d,"finally",f,{unsafe:!0})}},8674:(e,t,r)=>{r(3401),r(821),r(4164),r(6027),r(683),r(6294)},6027:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(9662),s=r(8523),o=r(2534),c=r(408);n({target:"Promise",stat:!0,forced:r(612)},{race:function(e){var t=this,r=s.f(t),n=r.reject,l=o((function(){var s=i(t.resolve);c(e,(function(e){a(s,t,e).then(r.resolve,n)}))}));return l.error&&n(l.value),r.promise}})},683:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(8523);n({target:"Promise",stat:!0,forced:r(3702).CONSTRUCTOR},{reject:function(e){var t=i.f(this);return a(t.reject,void 0,e),t.promise}})},6294:(e,t,r)=>{var n=r(2109),a=r(5005),i=r(1913),s=r(2492),o=r(3702).CONSTRUCTOR,c=r(9478),l=a("Promise"),h=i&&!o;n({target:"Promise",stat:!0,forced:i||o},{resolve:function(e){return c(h&&this===l?s:this,e)}})},1299:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(8003);n({global:!0},{Reflect:{}}),i(a.Reflect,"Reflect",!0)},4603:(e,t,r)=>{var n=r(9781),a=r(7854),i=r(1702),s=r(4705),o=r(9587),c=r(8880),l=r(8006).f,h=r(7976),u=r(7850),d=r(1340),f=r(4706),g=r(2999),p=r(2626),m=r(8052),b=r(7293),y=r(2597),w=r(9909).enforce,v=r(6340),x=r(5112),S=r(9441),A=r(7168),k=x("match"),C=a.RegExp,O=C.prototype,F=a.SyntaxError,I=i(O.exec),T=i("".charAt),M=i("".replace),E=i("".indexOf),P=i("".slice),R=/^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/,N=/a/g,D=/a/g,B=new C(N)!==N,L=g.MISSED_STICKY,_=g.UNSUPPORTED_Y;if(s("RegExp",n&&(!B||L||S||A||b((function(){return D[k]=!1,C(N)!=N||C(D)==D||"/a/i"!=C(N,"i")}))))){for(var j=function(e,t){var r,n,a,i,s,l,g=h(O,this),p=u(e),m=void 0===t,b=[],v=e;if(!g&&p&&m&&e.constructor===j)return e;if((p||h(O,e))&&(e=e.source,m&&(t=f(v))),e=void 0===e?"":d(e),t=void 0===t?"":d(t),v=e,S&&"dotAll"in N&&(n=!!t&&E(t,"s")>-1)&&(t=M(t,/s/g,"")),r=t,L&&"sticky"in N&&(a=!!t&&E(t,"y")>-1)&&_&&(t=M(t,/y/g,"")),A&&(i=function(e){for(var t,r=e.length,n=0,a="",i=[],s={},o=!1,c=!1,l=0,h="";n<=r;n++){if("\\\\"===(t=T(e,n)))t+=T(e,++n);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:I(R,P(e,n+1))&&(n+=2,c=!0),a+=t,l++;continue;case">"===t&&c:if(""===h||y(s,h))throw new F("Invalid capture group name");s[h]=!0,i[i.length]=[h,l],c=!1,h="";continue}c?h+=t:a+=t}return[a,i]}(e),e=i[0],b=i[1]),s=o(C(e,t),g?this:O,j),(n||a||b.length)&&(l=w(s),n&&(l.dotAll=!0,l.raw=j(function(e){for(var t,r=e.length,n=0,a="",i=!1;n<=r;n++)"\\\\"!==(t=T(e,n))?i||"."!==t?("["===t?i=!0:"]"===t&&(i=!1),a+=t):a+="[\\\\s\\\\S]":a+=t+T(e,++n);return a}(e),r)),a&&(l.sticky=!0),b.length&&(l.groups=b)),e!==v)try{c(s,"source",""===v?"(?:)":v)}catch(e){}return s},U=l(C),$=0;U.length>$;)p(j,C,U[$++]);O.constructor=j,j.prototype=O,m(a,"RegExp",j,{constructor:!0})}v("RegExp")},8450:(e,t,r)=>{var n=r(9781),a=r(9441),i=r(4326),s=r(7045),o=r(9909).get,c=RegExp.prototype,l=TypeError;n&&a&&s(c,"dotAll",{configurable:!0,get:function(){if(this!==c){if("RegExp"===i(this))return!!o(this).dotAll;throw l("Incompatible receiver, RegExp required")}}})},4916:(e,t,r)=>{var n=r(2109),a=r(2261);n({target:"RegExp",proto:!0,forced:/./.exec!==a},{exec:a})},2087:(e,t,r)=>{var n=r(7854),a=r(9781),i=r(7045),s=r(7066),o=r(7293),c=n.RegExp,l=c.prototype;a&&o((function(){var e=!0;try{c(".","d")}catch(t){e=!1}var t={},r="",n=e?"dgimsy":"gimsy",a=function(e,n){Object.defineProperty(t,e,{get:function(){return r+=n,!0}})},i={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in e&&(i.hasIndices="d"),i)a(s,i[s]);return Object.getOwnPropertyDescriptor(l,"flags").get.call(t)!==n||r!==n}))&&i(l,"flags",{configurable:!0,get:s})},7601:(e,t,r)=>{r(4916);var n,a,i=r(2109),s=r(6916),o=r(614),c=r(9670),l=r(1340),h=(n=!1,(a=/[ac]/).exec=function(){return n=!0,/./.exec.apply(this,arguments)},!0===a.test("abc")&&n),u=/./.test;i({target:"RegExp",proto:!0,forced:!h},{test:function(e){var t=c(this),r=l(e),n=t.exec;if(!o(n))return s(u,t,r);var a=s(n,t,r);return null!==a&&(c(a),!0)}})},9714:(e,t,r)=>{var n=r(6530).PROPER,a=r(8052),i=r(9670),s=r(1340),o=r(7293),c=r(4706),l="toString",h=RegExp.prototype[l],u=o((function(){return"/a/b"!=h.call({source:"a",flags:"b"})})),d=n&&h.name!=l;(u||d)&&a(RegExp.prototype,l,(function(){var e=i(this);return"/"+s(e.source)+"/"+s(c(e))}),{unsafe:!0})},4506:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(4488),s=r(9303),o=r(1340),c=r(7293),l=a("".charAt);n({target:"String",proto:!0,forced:c((function(){return"\\ud842"!=="𠮷".at(-2)}))},{at:function(e){var t=o(i(this)),r=t.length,n=s(e),a=n>=0?n:r+n;return a<0||a>=r?void 0:l(t,a)}})},7852:(e,t,r)=>{var n,a=r(2109),i=r(1470),s=r(1236).f,o=r(7466),c=r(1340),l=r(3929),h=r(4488),u=r(4964),d=r(1913),f=i("".endsWith),g=i("".slice),p=Math.min,m=u("endsWith");a({target:"String",proto:!0,forced:!(!d&&!m&&(n=s(String.prototype,"endsWith"),n&&!n.writable)||m)},{endsWith:function(e){var t=c(h(this));l(e);var r=arguments.length>1?arguments[1]:void 0,n=t.length,a=void 0===r?n:p(o(r),n),i=c(e);return f?f(t,i,a):g(t,a-i.length,a)===i}})},2023:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(3929),s=r(4488),o=r(1340),c=r(4964),l=a("".indexOf);n({target:"String",proto:!0,forced:!c("includes")},{includes:function(e){return!!~l(o(s(this)),o(i(e)),arguments.length>1?arguments[1]:void 0)}})},8783:(e,t,r)=>{var n=r(8710).charAt,a=r(1340),i=r(9909),s=r(1656),o=r(6178),c="String Iterator",l=i.set,h=i.getterFor(c);s(String,"String",(function(e){l(this,{type:c,string:a(e),index:0})}),(function(){var e,t=h(this),r=t.string,a=t.index;return a>=r.length?o(void 0,!0):(e=n(r,a),t.index+=e.length,o(e,!1))}))},4723:(e,t,r)=>{var n=r(6916),a=r(7007),i=r(9670),s=r(8554),o=r(7466),c=r(1340),l=r(4488),h=r(8173),u=r(1530),d=r(7651);a("match",(function(e,t,r){return[function(t){var r=l(this),a=s(t)?void 0:h(t,e);return a?n(a,t,r):new RegExp(t)[e](c(r))},function(e){var n=i(this),a=c(e),s=r(t,n,a);if(s.done)return s.value;if(!n.global)return d(n,a);var l=n.unicode;n.lastIndex=0;for(var h,f=[],g=0;null!==(h=d(n,a));){var p=c(h[0]);f[g]=p,""===p&&(n.lastIndex=u(a,o(n.lastIndex),l)),g++}return 0===g?null:f}]}))},8757:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(1702),s=r(4488),o=r(614),c=r(8554),l=r(7850),h=r(1340),u=r(8173),d=r(4706),f=r(647),g=r(5112),p=r(1913),m=g("replace"),b=TypeError,y=i("".indexOf),w=i("".replace),v=i("".slice),x=Math.max,S=function(e,t,r){return r>e.length?-1:""===t?r:y(e,t,r)};n({target:"String",proto:!0},{replaceAll:function(e,t){var r,n,i,g,A,k,C,O,F,I=s(this),T=0,M=0,E="";if(!c(e)){if((r=l(e))&&(n=h(s(d(e))),!~y(n,"g")))throw b("\`.replaceAll\` does not allow non-global regexes");if(i=u(e,m))return a(i,e,I,t);if(p&&r)return w(h(I),e,t)}for(g=h(I),A=h(e),(k=o(t))||(t=h(t)),C=A.length,O=x(1,C),T=S(g,A,0);-1!==T;)F=k?h(t(A,T,g)):f(A,g,T,[],void 0,t),E+=v(g,M,T)+F,M=T+C,T=S(g,A,T+O);return M{var n=r(2104),a=r(6916),i=r(1702),s=r(7007),o=r(7293),c=r(9670),l=r(614),h=r(8554),u=r(9303),d=r(7466),f=r(1340),g=r(4488),p=r(1530),m=r(8173),b=r(647),y=r(7651),w=r(5112)("replace"),v=Math.max,x=Math.min,S=i([].concat),A=i([].push),k=i("".indexOf),C=i("".slice),O="$0"==="a".replace(/./,"$0"),F=!!/./[w]&&""===/./[w]("a","$0");s("replace",(function(e,t,r){var i=F?"$":"$0";return[function(e,r){var n=g(this),i=h(e)?void 0:m(e,w);return i?a(i,e,n,r):a(t,f(n),e,r)},function(e,a){var s=c(this),o=f(e);if("string"==typeof a&&-1===k(a,i)&&-1===k(a,"$<")){var h=r(t,s,o,a);if(h.done)return h.value}var g=l(a);g||(a=f(a));var m=s.global;if(m){var w=s.unicode;s.lastIndex=0}for(var O=[];;){var F=y(s,o);if(null===F)break;if(A(O,F),!m)break;""===f(F[0])&&(s.lastIndex=p(o,d(s.lastIndex),w))}for(var I,T="",M=0,E=0;E=M&&(T+=C(o,M,R)+_,M=R+P.length)}return T+C(o,M)}]}),!!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!O||F)},3123:(e,t,r)=>{var n=r(2104),a=r(6916),i=r(1702),s=r(7007),o=r(9670),c=r(8554),l=r(7850),h=r(4488),u=r(6707),d=r(1530),f=r(7466),g=r(1340),p=r(8173),m=r(1589),b=r(7651),y=r(2261),w=r(2999),v=r(7293),x=w.UNSUPPORTED_Y,S=4294967295,A=Math.min,k=[].push,C=i(/./.exec),O=i(k),F=i("".slice);s("split",(function(e,t,r){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,r){var i=g(h(this)),s=void 0===r?S:r>>>0;if(0===s)return[];if(void 0===e)return[i];if(!l(e))return a(t,i,e,s);for(var o,c,u,d=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),p=0,b=new RegExp(e.source,f+"g");(o=a(y,b,i))&&!((c=b.lastIndex)>p&&(O(d,F(i,p,o.index)),o.length>1&&o.index=s));)b.lastIndex===o.index&&b.lastIndex++;return p===i.length?!u&&C(b,"")||O(d,""):O(d,F(i,p)),d.length>s?m(d,0,s):d}:"0".split(void 0,0).length?function(e,r){return void 0===e&&0===r?[]:a(t,this,e,r)}:t,[function(t,r){var n=h(this),s=c(t)?void 0:p(t,e);return s?a(s,t,n,r):a(i,g(n),t,r)},function(e,n){var a=o(this),s=g(e),c=r(i,a,s,n,i!==t);if(c.done)return c.value;var l=u(a,RegExp),h=a.unicode,p=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(x?"g":"y"),m=new l(x?"^(?:"+a.source+")":a,p),y=void 0===n?S:n>>>0;if(0===y)return[];if(0===s.length)return null===b(m,s)?[s]:[];for(var w=0,v=0,k=[];v{var n,a=r(2109),i=r(1470),s=r(1236).f,o=r(7466),c=r(1340),l=r(3929),h=r(4488),u=r(4964),d=r(1913),f=i("".startsWith),g=i("".slice),p=Math.min,m=u("startsWith");a({target:"String",proto:!0,forced:!(!d&&!m&&(n=s(String.prototype,"startsWith"),n&&!n.writable)||m)},{startsWith:function(e){var t=c(h(this));l(e);var r=o(p(arguments.length>1?arguments[1]:void 0,t.length)),n=c(e);return f?f(t,n,r):g(t,r,r+n.length)===n}})},3210:(e,t,r)=>{var n=r(2109),a=r(3111).trim;n({target:"String",proto:!0,forced:r(6091)("trim")},{trim:function(){return a(this)}})},1817:(e,t,r)=>{var n=r(2109),a=r(9781),i=r(7854),s=r(1702),o=r(2597),c=r(614),l=r(7976),h=r(1340),u=r(7045),d=r(9920),f=i.Symbol,g=f&&f.prototype;if(a&&c(f)&&(!("description"in g)||void 0!==f().description)){var p={},m=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:h(arguments[0]),t=l(g,this)?new f(e):void 0===e?f():f(e);return""===e&&(p[t]=!0),t};d(m,f),m.prototype=g,g.constructor=m;var b="Symbol(test)"==String(f("test")),y=s(g.valueOf),w=s(g.toString),v=/^Symbol\\((.*)\\)[^)]+$/,x=s("".replace),S=s("".slice);u(g,"description",{configurable:!0,get:function(){var e=y(this);if(o(p,e))return"";var t=w(e),r=b?S(t,7,-1):x(t,v,"$1");return""===r?void 0:r}}),n({global:!0,constructor:!0,forced:!0},{Symbol:m})}},8675:(e,t,r)=>{var n=r(260),a=r(6244),i=r(9303),s=n.aTypedArray;(0,n.exportTypedArrayMethod)("at",(function(e){var t=s(this),r=a(t),n=i(e),o=n>=0?n:r+n;return o<0||o>=r?void 0:t[o]}))},3105:(e,t,r)=>{var n=r(260),a=r(1285),i=r(4599),s=r(648),o=r(6916),c=r(1702),l=r(7293),h=n.aTypedArray,u=n.exportTypedArrayMethod,d=c("".slice);u("fill",(function(e){var t=arguments.length;h(this);var r="Big"===d(s(this),0,3)?i(e):+e;return o(a,this,r,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}),l((function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e})))},2958:(e,t,r)=>{var n=r(260),a=r(9671).findLastIndex,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLastIndex",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},3408:(e,t,r)=>{var n=r(260),a=r(9671).findLast,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLast",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},4197:(e,t,r)=>{r(9843)("Float32",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},6495:(e,t,r)=>{r(9843)("Float64",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},5109:(e,t,r)=>{r(9843)("Int16",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},5125:(e,t,r)=>{r(9843)("Int32",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},7145:(e,t,r)=>{r(9843)("Int8",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},3462:(e,t,r)=>{var n=r(7854),a=r(6916),i=r(260),s=r(6244),o=r(4590),c=r(7908),l=r(7293),h=n.RangeError,u=n.Int8Array,d=u&&u.prototype,f=d&&d.set,g=i.aTypedArray,p=i.exportTypedArrayMethod,m=!l((function(){var e=new Uint8ClampedArray(2);return a(f,e,{length:1,0:3},1),3!==e[1]})),b=m&&i.NATIVE_ARRAY_BUFFER_VIEWS&&l((function(){var e=new u(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));p("set",(function(e){g(this);var t=o(arguments.length>1?arguments[1]:void 0,1),r=c(e);if(m)return a(f,this,r,t);var n=this.length,i=s(r),l=0;if(i+t>n)throw h("Wrong length");for(;l{var n=r(7854),a=r(1470),i=r(7293),s=r(9662),o=r(4362),c=r(260),l=r(8886),h=r(256),u=r(7392),d=r(8008),f=c.aTypedArray,g=c.exportTypedArrayMethod,p=n.Uint16Array,m=p&&a(p.prototype.sort),b=!(!m||i((function(){m(new p(2),null)}))&&i((function(){m(new p(2),{})}))),y=!!m&&!i((function(){if(u)return u<74;if(l)return l<67;if(h)return!0;if(d)return d<602;var e,t,r=new p(516),n=Array(516);for(e=0;e<516;e++)t=e%4,r[e]=515-e,n[e]=e-2*t+3;for(m(r,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(r[e]!==n[e])return!0}));g("sort",(function(e){return void 0!==e&&s(e),y?m(this,e):o(f(this),function(e){return function(t,r){return void 0!==e?+e(t,r)||0:r!=r?-1:t!=t?1:0===t&&0===r?1/t>0&&1/r<0?1:-1:t>r}}(e))}),!y||b)},2974:(e,t,r)=>{var n=r(7854),a=r(2104),i=r(260),s=r(7293),o=r(206),c=n.Int8Array,l=i.aTypedArray,h=i.exportTypedArrayMethod,u=[].toLocaleString,d=!!c&&s((function(){u.call(new c(1))}));h("toLocaleString",(function(){return a(u,d?o(l(this)):l(this),o(arguments))}),s((function(){return[1,2].toLocaleString()!=new c([1,2]).toLocaleString()}))||!s((function(){c.prototype.toLocaleString.call([1,2])})))},1439:(e,t,r)=>{var n=r(1843),a=r(260),i=a.aTypedArray,s=a.exportTypedArrayMethod,o=a.getTypedArrayConstructor;s("toReversed",(function(){return n(i(this),o(this))}))},7585:(e,t,r)=>{var n=r(260),a=r(1702),i=r(9662),s=r(7745),o=n.aTypedArray,c=n.getTypedArrayConstructor,l=n.exportTypedArrayMethod,h=a(n.TypedArrayPrototype.sort);l("toSorted",(function(e){void 0!==e&&i(e);var t=o(this),r=s(c(t),t);return h(r,e)}))},8255:(e,t,r)=>{r(9843)("Uint16",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},9135:(e,t,r)=>{r(9843)("Uint32",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},2472:(e,t,r)=>{r(9843)("Uint8",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},9743:(e,t,r)=>{r(9843)("Uint8",(function(e){return function(t,r,n){return e(this,t,r,n)}}),!0)},5315:(e,t,r)=>{var n=r(1572),a=r(260),i=r(4067),s=r(9303),o=r(4599),c=a.aTypedArray,l=a.getTypedArrayConstructor,h=a.exportTypedArrayMethod,u=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(e){return 8===e}}();h("with",{with:function(e,t){var r=c(this),a=s(e),h=i(r)?o(t):+t;return n(r,l(r),a,h)}}.with,!u)},1202:(e,t,r)=>{var n,a=r(6677),i=r(7854),s=r(1702),o=r(9190),c=r(2423),l=r(7710),h=r(9320),u=r(111),d=r(9909).enforce,f=r(7293),g=r(4811),p=Object,m=Array.isArray,b=p.isExtensible,y=p.isFrozen,w=p.isSealed,v=p.freeze,x=p.seal,S={},A={},k=!i.ActiveXObject&&"ActiveXObject"in i,C=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},O=l("WeakMap",C,h),F=O.prototype,I=s(F.set);if(g)if(k){n=h.getConstructor(C,"WeakMap",!0),c.enable();var T=s(F.delete),M=s(F.has),E=s(F.get);o(F,{delete:function(e){if(u(e)&&!b(e)){var t=d(this);return t.frozen||(t.frozen=new n),T(this,e)||t.frozen.delete(e)}return T(this,e)},has:function(e){if(u(e)&&!b(e)){var t=d(this);return t.frozen||(t.frozen=new n),M(this,e)||t.frozen.has(e)}return M(this,e)},get:function(e){if(u(e)&&!b(e)){var t=d(this);return t.frozen||(t.frozen=new n),M(this,e)?E(this,e):t.frozen.get(e)}return E(this,e)},set:function(e,t){if(u(e)&&!b(e)){var r=d(this);r.frozen||(r.frozen=new n),M(this,e)?I(this,e,t):r.frozen.set(e,t)}else I(this,e,t);return this}})}else a&&f((function(){var e=v([]);return I(new O,e,1),!y(e)}))&&o(F,{set:function(e,t){var r;return m(e)&&(y(e)?r=S:w(e)&&(r=A)),I(this,e,t),r==S&&v(e),r==A&&x(e),this}})},4129:(e,t,r)=>{r(1202)},3948:(e,t,r)=>{var n=r(7854),a=r(8324),i=r(8509),s=r(6992),o=r(8880),c=r(5112),l=c("iterator"),h=c("toStringTag"),u=s.values,d=function(e,t){if(e){if(e[l]!==u)try{o(e,l,u)}catch(t){e[l]=u}if(e[h]||o(e,h,t),a[t])for(var r in s)if(e[r]!==s[r])try{o(e,r,s[r])}catch(t){e[r]=s[r]}}};for(var f in a)d(n[f]&&n[f].prototype,f);d(i,"DOMTokenList")},7714:(e,t,r)=>{var n=r(2109),a=r(4038),i=r(5005),s=r(7293),o=r(30),c=r(9114),l=r(3070).f,h=r(8052),u=r(7045),d=r(2597),f=r(5787),g=r(9670),p=r(7762),m=r(6277),b=r(3678),y=r(1060),w=r(9909),v=r(9781),x=r(1913),S="DOMException",A="DATA_CLONE_ERR",k=i("Error"),C=i(S)||function(){try{(new(i("MessageChannel")||a("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(e){if(e.name==A&&25==e.code)return e.constructor}}(),O=C&&C.prototype,F=k.prototype,I=w.set,T=w.getterFor(S),M="stack"in k(S),E=function(e){return d(b,e)&&b[e].m?b[e].c:0},P=function(){f(this,R);var e=arguments.length,t=m(e<1?void 0:arguments[0]),r=m(e<2?void 0:arguments[1],"Error"),n=E(r);if(I(this,{type:S,name:r,message:t,code:n}),v||(this.name=r,this.message=t,this.code=n),M){var a=k(t);a.name=S,l(this,"stack",c(1,y(a.stack,1)))}},R=P.prototype=o(F),N=function(e){return{enumerable:!0,configurable:!0,get:e}},D=function(e){return N((function(){return T(this)[e]}))};v&&(u(R,"code",D("code")),u(R,"message",D("message")),u(R,"name",D("name"))),l(R,"constructor",c(1,P));var B=s((function(){return!(new C instanceof k)})),L=B||s((function(){return F.toString!==p||"2: 1"!==String(new C(1,2))})),_=B||s((function(){return 25!==new C(1,"DataCloneError").code})),j=B||25!==C[A]||25!==O[A],U=x?L||_||j:B;n({global:!0,constructor:!0,forced:U},{DOMException:U?P:C});var $=i(S),X=$.prototype;for(var H in L&&(x||C===$)&&h(X,"toString",p),_&&v&&C===$&&u(X,"code",N((function(){return E(g(this).name)}))),b)if(d(b,H)){var q=b[H],z=q.s,G=c(6,q.c);d($,z)||l($,z,G),d(X,z)||l(X,z,G)}},2801:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(5005),s=r(9114),o=r(3070).f,c=r(2597),l=r(5787),h=r(9587),u=r(6277),d=r(3678),f=r(1060),g=r(9781),p=r(1913),m="DOMException",b=i("Error"),y=i(m),w=function(){l(this,v);var e=arguments.length,t=u(e<1?void 0:arguments[0]),r=u(e<2?void 0:arguments[1],"Error"),n=new y(t,r),a=b(t);return a.name=m,o(n,"stack",s(1,f(a.stack,1))),h(n,this,w),n},v=w.prototype=y.prototype,x="stack"in b(m),S="stack"in new y(1,2),A=y&&g&&Object.getOwnPropertyDescriptor(a,m),k=!(!A||A.writable&&A.configurable),C=x&&!k&&!S;n({global:!0,constructor:!0,forced:p||C},{DOMException:C?w:y});var O=i(m),F=O.prototype;if(F.constructor!==O)for(var I in p||o(F,"constructor",s(1,O)),d)if(c(d,I)){var T=d[I],M=T.s;c(O,M)||o(O,M,s(6,T.c))}},1174:(e,t,r)=>{var n=r(5005),a="DOMException";r(8003)(n(a),a)},1550:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(7045),s=r(9781),o=TypeError,c=Object.defineProperty,l=a.self!==a;try{if(s){var h=Object.getOwnPropertyDescriptor(a,"self");!l&&h&&h.get&&h.enumerable||i(a,"self",{get:function(){return a},set:function(e){if(this!==a)throw o("Illegal invocation");c(a,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else n({global:!0,simple:!0,forced:l},{self:a})}catch(e){}},5556:(e,t,r)=>{r(6992);var n=r(2109),a=r(7854),i=r(6916),s=r(1702),o=r(9781),c=r(5143),l=r(8052),h=r(7045),u=r(9190),d=r(8003),f=r(3061),g=r(9909),p=r(5787),m=r(614),b=r(2597),y=r(9974),w=r(648),v=r(9670),x=r(111),S=r(1340),A=r(30),k=r(9114),C=r(4121),O=r(1246),F=r(8053),I=r(5112),T=r(4362),M=I("iterator"),E="URLSearchParams",P=E+"Iterator",R=g.set,N=g.getterFor(E),D=g.getterFor(P),B=Object.getOwnPropertyDescriptor,L=function(e){if(!o)return a[e];var t=B(a,e);return t&&t.value},_=L("fetch"),j=L("Request"),U=L("Headers"),$=j&&j.prototype,X=U&&U.prototype,H=a.RegExp,q=a.TypeError,z=a.decodeURIComponent,G=a.encodeURIComponent,W=s("".charAt),V=s([].join),K=s([].push),Y=s("".replace),J=s([].shift),Z=s([].splice),Q=s("".split),ee=s("".slice),te=/\\+/g,re=Array(4),ne=function(e){return re[e-1]||(re[e-1]=H("((?:%[\\\\da-f]{2}){"+e+"})","gi"))},ae=function(e){try{return z(e)}catch(t){return e}},ie=function(e){var t=Y(e,te," "),r=4;try{return z(t)}catch(e){for(;r;)t=Y(t,ne(r--),ae);return t}},se=/[!'()~]|%20/g,oe={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},ce=function(e){return oe[e]},le=function(e){return Y(G(e),se,ce)},he=f((function(e,t){R(this,{type:P,iterator:C(N(e).entries),kind:t})}),"Iterator",(function(){var e=D(this),t=e.kind,r=e.iterator.next(),n=r.value;return r.done||(r.value="keys"===t?n.key:"values"===t?n.value:[n.key,n.value]),r}),!0),ue=function(e){this.entries=[],this.url=null,void 0!==e&&(x(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===W(e,0)?ee(e,1):e:S(e)))};ue.prototype={type:E,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,r,n,a,s,o,c,l=O(e);if(l)for(r=(t=C(e,l)).next;!(n=i(r,t)).done;){if(s=(a=C(v(n.value))).next,(o=i(s,a)).done||(c=i(s,a)).done||!i(s,a).done)throw q("Expected sequence with length 2");K(this.entries,{key:S(o.value),value:S(c.value)})}else for(var h in e)b(e,h)&&K(this.entries,{key:h,value:S(e[h])})},parseQuery:function(e){if(e)for(var t,r,n=Q(e,"&"),a=0;a0?arguments[0]:void 0));o||(this.size=e.entries.length)},fe=de.prototype;if(u(fe,{append:function(e,t){var r=N(this);F(arguments.length,2),K(r.entries,{key:S(e),value:S(t)}),o||this.length++,r.updateURL()},delete:function(e){for(var t=N(this),r=F(arguments.length,1),n=t.entries,a=S(e),i=r<2?void 0:arguments[1],s=void 0===i?i:S(i),c=0;ct.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,r=N(this).entries,n=y(e,arguments.length>1?arguments[1]:void 0),a=0;a1?me(arguments[1]):{})}}),m(j)){var be=function(e){return p(this,$),new j(e,arguments.length>1?me(arguments[1]):{})};$.constructor=be,be.prototype=$,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:be})}}e.exports={URLSearchParams:de,getState:N}},6229:(e,t,r)=>{var n=r(8052),a=r(1702),i=r(1340),s=r(8053),o=URLSearchParams,c=o.prototype,l=a(c.append),h=a(c.delete),u=a(c.forEach),d=a([].push),f=new o("a=1&a=2&b=3");f.delete("a",1),f.delete("b",void 0),f+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=[];u(this,(function(e,t){d(n,{key:t,value:e})})),s(t,1);for(var a,o=i(e),c=i(r),f=0,g=0,p=!1,m=n.length;f{var n=r(8052),a=r(1702),i=r(1340),s=r(8053),o=URLSearchParams,c=o.prototype,l=a(c.getAll),h=a(c.has),u=new o("a=1");!u.has("a",2)&&u.has("a",void 0)||n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=l(this,e);s(t,1);for(var a=i(r),o=0;o{r(5556)},2062:(e,t,r)=>{var n=r(9781),a=r(1702),i=r(7045),s=URLSearchParams.prototype,o=a(s.forEach);n&&!("size"in s)&&i(s,"size",{get:function(){var e=0;return o(this,(function(){e++})),e},configurable:!0,enumerable:!0})},8789:(e,t,r)=>{r(8783);var n,a=r(2109),i=r(9781),s=r(5143),o=r(7854),c=r(9974),l=r(1702),h=r(8052),u=r(7045),d=r(5787),f=r(2597),g=r(1574),p=r(8457),m=r(1589),b=r(8710).codeAt,y=r(3197),w=r(1340),v=r(8003),x=r(8053),S=r(5556),A=r(9909),k=A.set,C=A.getterFor("URL"),O=S.URLSearchParams,F=S.getState,I=o.URL,T=o.TypeError,M=o.parseInt,E=Math.floor,P=Math.pow,R=l("".charAt),N=l(/./.exec),D=l([].join),B=l(1..toString),L=l([].pop),_=l([].push),j=l("".replace),U=l([].shift),$=l("".split),X=l("".slice),H=l("".toLowerCase),q=l([].unshift),z="Invalid scheme",G="Invalid host",W="Invalid port",V=/[a-z]/i,K=/[\\d+-.a-z]/i,Y=/\\d/,J=/^0x/i,Z=/^[0-7]+$/,Q=/^\\d+$/,ee=/^[\\da-f]+$/i,te=/[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/,re=/[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/,ne=/^[\\u0000-\\u0020]+/,ae=/(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/,ie=/[\\t\\n\\r]/g,se=function(e){var t,r,n,a;if("number"==typeof e){for(t=[],r=0;r<4;r++)q(t,e%256),e=E(e/256);return D(t,".")}if("object"==typeof e){for(t="",n=function(e){for(var t=null,r=1,n=null,a=0,i=0;i<8;i++)0!==e[i]?(a>r&&(t=n,r=a),n=null,a=0):(null===n&&(n=i),++a);return a>r&&(t=n,r=a),t}(e),r=0;r<8;r++)a&&0===e[r]||(a&&(a=!1),n===r?(t+=r?":":"::",a=!0):(t+=B(e[r],16),r<7&&(t+=":")));return"["+t+"]"}return e},oe={},ce=g({},oe,{" ":1,'"':1,"<":1,">":1,"\`":1}),le=g({},ce,{"#":1,"?":1,"{":1,"}":1}),he=g({},le,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\\\":1,"]":1,"^":1,"|":1}),ue=function(e,t){var r=b(e,0);return r>32&&r<127&&!f(t,e)?e:encodeURIComponent(e)},de={ftp:21,file:null,http:80,https:443,ws:80,wss:443},fe=function(e,t){var r;return 2==e.length&&N(V,R(e,0))&&(":"==(r=R(e,1))||!t&&"|"==r)},ge=function(e){var t;return e.length>1&&fe(X(e,0,2))&&(2==e.length||"/"===(t=R(e,2))||"\\\\"===t||"?"===t||"#"===t)},pe=function(e){return"."===e||"%2e"===H(e)},me={},be={},ye={},we={},ve={},xe={},Se={},Ae={},ke={},Ce={},Oe={},Fe={},Ie={},Te={},Me={},Ee={},Pe={},Re={},Ne={},De={},Be={},Le=function(e,t,r){var n,a,i,s=w(e);if(t){if(a=this.parse(s))throw T(a);this.searchParams=null}else{if(void 0!==r&&(n=new Le(r,!0)),a=this.parse(s,null,n))throw T(a);(i=F(new O)).bindURL(this),this.searchParams=i}};Le.prototype={type:"URL",parse:function(e,t,r){var a,i,s,o,c,l=this,h=t||me,u=0,d="",g=!1,b=!1,y=!1;for(e=w(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=j(e,ne,""),e=j(e,ae,"$1")),e=j(e,ie,""),a=p(e);u<=a.length;){switch(i=a[u],h){case me:if(!i||!N(V,i)){if(t)return z;h=ye;continue}d+=H(i),h=be;break;case be:if(i&&(N(K,i)||"+"==i||"-"==i||"."==i))d+=H(i);else{if(":"!=i){if(t)return z;d="",h=ye,u=0;continue}if(t&&(l.isSpecial()!=f(de,d)||"file"==d&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=d,t)return void(l.isSpecial()&&de[l.scheme]==l.port&&(l.port=null));d="","file"==l.scheme?h=Te:l.isSpecial()&&r&&r.scheme==l.scheme?h=we:l.isSpecial()?h=Ae:"/"==a[u+1]?(h=ve,u++):(l.cannotBeABaseURL=!0,_(l.path,""),h=Ne)}break;case ye:if(!r||r.cannotBeABaseURL&&"#"!=i)return z;if(r.cannotBeABaseURL&&"#"==i){l.scheme=r.scheme,l.path=m(r.path),l.query=r.query,l.fragment="",l.cannotBeABaseURL=!0,h=Be;break}h="file"==r.scheme?Te:xe;continue;case we:if("/"!=i||"/"!=a[u+1]){h=xe;continue}h=ke,u++;break;case ve:if("/"==i){h=Ce;break}h=Re;continue;case xe:if(l.scheme=r.scheme,i==n)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.query=r.query;else if("/"==i||"\\\\"==i&&l.isSpecial())h=Se;else if("?"==i)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.query="",h=De;else{if("#"!=i){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.path.length--,h=Re;continue}l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.query=r.query,l.fragment="",h=Be}break;case Se:if(!l.isSpecial()||"/"!=i&&"\\\\"!=i){if("/"!=i){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,h=Re;continue}h=Ce}else h=ke;break;case Ae:if(h=ke,"/"!=i||"/"!=R(d,u+1))continue;u++;break;case ke:if("/"!=i&&"\\\\"!=i){h=Ce;continue}break;case Ce:if("@"==i){g&&(d="%40"+d),g=!0,s=p(d);for(var v=0;v65535)return W;l.port=l.isSpecial()&&A===de[l.scheme]?null:A,d=""}if(t)return;h=Pe;continue}return W}d+=i;break;case Te:if(l.scheme="file","/"==i||"\\\\"==i)h=Me;else{if(!r||"file"!=r.scheme){h=Re;continue}if(i==n)l.host=r.host,l.path=m(r.path),l.query=r.query;else if("?"==i)l.host=r.host,l.path=m(r.path),l.query="",h=De;else{if("#"!=i){ge(D(m(a,u),""))||(l.host=r.host,l.path=m(r.path),l.shortenPath()),h=Re;continue}l.host=r.host,l.path=m(r.path),l.query=r.query,l.fragment="",h=Be}}break;case Me:if("/"==i||"\\\\"==i){h=Ee;break}r&&"file"==r.scheme&&!ge(D(m(a,u),""))&&(fe(r.path[0],!0)?_(l.path,r.path[0]):l.host=r.host),h=Re;continue;case Ee:if(i==n||"/"==i||"\\\\"==i||"?"==i||"#"==i){if(!t&&fe(d))h=Re;else if(""==d){if(l.host="",t)return;h=Pe}else{if(o=l.parseHost(d))return o;if("localhost"==l.host&&(l.host=""),t)return;d="",h=Pe}continue}d+=i;break;case Pe:if(l.isSpecial()){if(h=Re,"/"!=i&&"\\\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=n&&(h=Re,"/"!=i))continue}else l.fragment="",h=Be;else l.query="",h=De;break;case Re:if(i==n||"/"==i||"\\\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(c=H(c=d))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(l.shortenPath(),"/"==i||"\\\\"==i&&l.isSpecial()||_(l.path,"")):pe(d)?"/"==i||"\\\\"==i&&l.isSpecial()||_(l.path,""):("file"==l.scheme&&!l.path.length&&fe(d)&&(l.host&&(l.host=""),d=R(d,0)+":"),_(l.path,d)),d="","file"==l.scheme&&(i==n||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)U(l.path);"?"==i?(l.query="",h=De):"#"==i&&(l.fragment="",h=Be)}else d+=ue(i,le);break;case Ne:"?"==i?(l.query="",h=De):"#"==i?(l.fragment="",h=Be):i!=n&&(l.path[0]+=ue(i,oe));break;case De:t||"#"!=i?i!=n&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":ue(i,oe)):(l.fragment="",h=Be);break;case Be:i!=n&&(l.fragment+=ue(i,ce))}u++}},parseHost:function(e){var t,r,n;if("["==R(e,0)){if("]"!=R(e,e.length-1))return G;if(t=function(e){var t,r,n,a,i,s,o,c=[0,0,0,0,0,0,0,0],l=0,h=null,u=0,d=function(){return R(e,u)};if(":"==d()){if(":"!=R(e,1))return;u+=2,h=++l}for(;d();){if(8==l)return;if(":"!=d()){for(t=r=0;r<4&&N(ee,d());)t=16*t+M(d(),16),u++,r++;if("."==d()){if(0==r)return;if(u-=r,l>6)return;for(n=0;d();){if(a=null,n>0){if(!("."==d()&&n<4))return;u++}if(!N(Y,d()))return;for(;N(Y,d());){if(i=M(d(),10),null===a)a=i;else{if(0==a)return;a=10*a+i}if(a>255)return;u++}c[l]=256*c[l]+a,2!=++n&&4!=n||l++}if(4!=n)return;break}if(":"==d()){if(u++,!d())return}else if(d())return;c[l++]=t}else{if(null!==h)return;u++,h=++l}}if(null!==h)for(s=l-h,l=7;0!=l&&s>0;)o=c[l],c[l--]=c[h+s-1],c[h+--s]=o;else if(8!=l)return;return c}(X(e,1,-1)),!t)return G;this.host=t}else if(this.isSpecial()){if(e=y(e),N(te,e))return G;if(t=function(e){var t,r,n,a,i,s,o,c=$(e,".");if(c.length&&""==c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(r=[],n=0;n1&&"0"==R(a,0)&&(i=N(J,a)?16:8,a=X(a,8==i?1:2)),""===a)s=0;else{if(!N(10==i?Q:8==i?Z:ee,a))return e;s=M(a,i)}_(r,s)}for(n=0;n=P(256,5-t))return null}else if(s>255)return null;for(o=L(r),n=0;n1?arguments[1]:void 0,n=k(t,new Le(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},je=_e.prototype,Ue=function(e,t){return{get:function(){return C(this)[e]()},set:t&&function(e){return C(this)[t](e)},configurable:!0,enumerable:!0}};if(i&&(u(je,"href",Ue("serialize","setHref")),u(je,"origin",Ue("getOrigin")),u(je,"protocol",Ue("getProtocol","setProtocol")),u(je,"username",Ue("getUsername","setUsername")),u(je,"password",Ue("getPassword","setPassword")),u(je,"host",Ue("getHost","setHost")),u(je,"hostname",Ue("getHostname","setHostname")),u(je,"port",Ue("getPort","setPort")),u(je,"pathname",Ue("getPathname","setPathname")),u(je,"search",Ue("getSearch","setSearch")),u(je,"searchParams",Ue("getSearchParams")),u(je,"hash",Ue("getHash","setHash"))),h(je,"toJSON",(function(){return C(this).serialize()}),{enumerable:!0}),h(je,"toString",(function(){return C(this).serialize()}),{enumerable:!0}),I){var $e=I.createObjectURL,Xe=I.revokeObjectURL;$e&&h(_e,"createObjectURL",c($e,I)),Xe&&h(_e,"revokeObjectURL",c(Xe,I))}v(_e,"URL"),a({global:!0,constructor:!0,forced:!s,sham:!i},{URL:_e})},285:(e,t,r)=>{r(8789)}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.amdO={},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},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.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r(7757)})();`,H=`(()=>{"use strict";var __webpack_modules__=({"./pdf.js":((module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.global-this.js */ \\"./node_modules/core-js/modules/es.global-this.js\\");\\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ \\"./node_modules/core-js/modules/es.string.starts-with.js\\");\\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \\"./node_modules/core-js/modules/es.regexp.exec.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ \\"./node_modules/core-js/modules/es.string.match.js\\");\\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \\"./node_modules/core-js/modules/web.dom-collections.iterator.js\\");\\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.url.js */ \\"./node_modules/core-js/modules/web.url.js\\");\\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__);\\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.url-search-params.js */ \\"./node_modules/core-js/modules/web.url-search-params.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \\"./node_modules/core-js/modules/web.url-search-params.delete.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \\"./node_modules/core-js/modules/web.url-search-params.has.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__);\\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \\"./node_modules/core-js/modules/web.url-search-params.size.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__);\\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \\"./node_modules/core-js/modules/es.regexp.to-string.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__);\\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array-buffer.slice.js */ \\"./node_modules/core-js/modules/es.array-buffer.slice.js\\");\\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__);\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-array.js */ \\"./node_modules/core-js/modules/es.typed-array.uint8-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__);\\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.typed-array.at.js */ \\"./node_modules/core-js/modules/es.typed-array.at.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__);\\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.typed-array.fill.js */ \\"./node_modules/core-js/modules/es.typed-array.fill.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__);\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last.js */ \\"./node_modules/core-js/modules/es.typed-array.find-last.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__);\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last-index.js */ \\"./node_modules/core-js/modules/es.typed-array.find-last-index.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__);\\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.typed-array.set.js */ \\"./node_modules/core-js/modules/es.typed-array.set.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__);\\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.typed-array.sort.js */ \\"./node_modules/core-js/modules/es.typed-array.sort.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__);\\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-locale-string.js */ \\"./node_modules/core-js/modules/es.typed-array.to-locale-string.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__);\\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-reversed.js */ \\"./node_modules/core-js/modules/es.typed-array.to-reversed.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__);\\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-sorted.js */ \\"./node_modules/core-js/modules/es.typed-array.to-sorted.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__);\\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.typed-array.with.js */ \\"./node_modules/core-js/modules/es.typed-array.with.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__);\\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \\"./node_modules/core-js/modules/es.string.replace.js\\");\\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__);\\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.string.replace-all.js */ \\"./node_modules/core-js/modules/es.string.replace-all.js\\");\\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__);\\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \\"./node_modules/core-js/modules/es.array.push.js\\");\\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__);\\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! core-js/modules/es.error.cause.js */ \\"./node_modules/core-js/modules/es.error.cause.js\\");\\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__);\\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint32-array.js */ \\"./node_modules/core-js/modules/es.typed-array.uint32-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__);\\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \\"./node_modules/core-js/modules/es.array.includes.js\\");\\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__);\\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \\"./node_modules/core-js/modules/es.string.includes.js\\");\\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__);\\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! core-js/modules/es.weak-map.js */ \\"./node_modules/core-js/modules/es.weak-map.js\\");\\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__);\\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! core-js/modules/es.promise.js */ \\"./node_modules/core-js/modules/es.promise.js\\");\\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__);\\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! core-js/modules/web.self.js */ \\"./node_modules/core-js/modules/web.self.js\\");\\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__);\\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \\"./node_modules/core-js/modules/es.string.split.js\\");\\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__);\\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \\"./node_modules/core-js/modules/es.symbol.description.js\\");\\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__);\\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! core-js/modules/es.object.has-own.js */ \\"./node_modules/core-js/modules/es.object.has-own.js\\");\\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__);\\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! core-js/modules/es.regexp.test.js */ \\"./node_modules/core-js/modules/es.regexp.test.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__);\\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! core-js/modules/es.reflect.to-string-tag.js */ \\"./node_modules/core-js/modules/es.reflect.to-string-tag.js\\");\\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__);\\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! core-js/modules/es.array.find-last.js */ \\"./node_modules/core-js/modules/es.array.find-last.js\\");\\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__);\\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! core-js/modules/es.array-buffer.constructor.js */ \\"./node_modules/core-js/modules/es.array-buffer.constructor.js\\");\\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__);\\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! core-js/modules/es.array.find-last-index.js */ \\"./node_modules/core-js/modules/es.array.find-last-index.js\\");\\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__);\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-clamped-array.js */ \\"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__);\\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ \\"./node_modules/core-js/modules/es.array.sort.js\\");\\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__);\\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! core-js/modules/es.array.with.js */ \\"./node_modules/core-js/modules/es.array.with.js\\");\\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__);\\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! core-js/modules/es.typed-array.int8-array.js */ \\"./node_modules/core-js/modules/es.typed-array.int8-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__);\\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ \\"./node_modules/core-js/modules/es.object.assign.js\\");\\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__);\\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! core-js/modules/web.dom-exception.constructor.js */ \\"./node_modules/core-js/modules/web.dom-exception.constructor.js\\");\\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__);\\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! core-js/modules/web.dom-exception.stack.js */ \\"./node_modules/core-js/modules/web.dom-exception.stack.js\\");\\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__);\\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! core-js/modules/web.dom-exception.to-string-tag.js */ \\"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js\\");\\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__);\\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! core-js/modules/web.structured-clone.js */ \\"./node_modules/core-js/modules/web.structured-clone.js\\");\\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__);\\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! core-js/modules/es.promise.finally.js */ \\"./node_modules/core-js/modules/es.promise.finally.js\\");\\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__);\\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ \\"./node_modules/core-js/modules/es.regexp.constructor.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__);\\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! core-js/modules/es.regexp.dot-all.js */ \\"./node_modules/core-js/modules/es.regexp.dot-all.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__);\\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! core-js/modules/es.regexp.flags.js */ \\"./node_modules/core-js/modules/es.regexp.flags.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__);\\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \\"./node_modules/core-js/modules/es.json.stringify.js\\");\\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__);\\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ \\"./node_modules/core-js/modules/es.number.to-fixed.js\\");\\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__);\\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! core-js/modules/es.string.ends-with.js */ \\"./node_modules/core-js/modules/es.string.ends-with.js\\");\\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__);\\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! core-js/modules/es.parse-float.js */ \\"./node_modules/core-js/modules/es.parse-float.js\\");\\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__);\\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! core-js/modules/es.math.hypot.js */ \\"./node_modules/core-js/modules/es.math.hypot.js\\");\\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__);\\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! core-js/modules/es.array.at.js */ \\"./node_modules/core-js/modules/es.array.at.js\\");\\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__);\\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! core-js/modules/es.string.at-alternative.js */ \\"./node_modules/core-js/modules/es.string.at-alternative.js\\");\\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__);\\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ \\"./node_modules/core-js/modules/es.parse-int.js\\");\\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__);\\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \\"./node_modules/core-js/modules/es.string.trim.js\\");\\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__);\\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! core-js/modules/es.typed-array.int32-array.js */ \\"./node_modules/core-js/modules/es.typed-array.int32-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__);\\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! core-js/modules/es.promise.all-settled.js */ \\"./node_modules/core-js/modules/es.promise.all-settled.js\\");\\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__);\\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! core-js/modules/es.string.trim-end.js */ \\"./node_modules/core-js/modules/es.string.trim-end.js\\");\\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__);\\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ \\"./node_modules/core-js/modules/es.array.flat-map.js\\");\\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__);\\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ \\"./node_modules/core-js/modules/es.array.unscopables.flat-map.js\\");\\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__);\\n/* module decorator */ module = __webpack_require__.hmd(module);\\nfunction _classPrivateFieldDestructureSet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \\"set\\"); return _classApplyDescriptorDestructureSet(receiver, descriptor); }\\nfunction _classApplyDescriptorDestructureSet(receiver, descriptor) { if (descriptor.set) { if (!(\\"__destrObj\\" in descriptor)) { descriptor.__destrObj = { set value(v) { descriptor.set.call(receiver, v); } }; } return descriptor.__destrObj; } else { if (!descriptor.writable) { throw new TypeError(\\"attempted to set read only private field\\"); } return descriptor; } }\\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; }\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \\"string\\"); return typeof key === \\"symbol\\" ? key : String(key); }\\nfunction _toPrimitive(input, hint) { if (typeof input !== \\"object\\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \\"default\\"); if (typeof res !== \\"object\\") return res; throw new TypeError(\\"@@toPrimitive must return a primitive value.\\"); } return (hint === \\"string\\" ? String : Number)(input); }\\nfunction _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }\\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\\"attempted to get private field on non-instance\\"); } return fn; }\\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \\"set\\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \\"get\\"); return _classApplyDescriptorGet(receiver, descriptor); }\\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError(\\"attempted to \\" + action + \\" private static field before its declaration\\"); } }\\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError(\\"Private static access of wrong provenance\\"); } }\\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\\"Cannot initialize the same private elements twice on an object\\"); } }\\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \\"get\\"); return _classApplyDescriptorGet(receiver, descriptor); }\\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \\"set\\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\\"attempted to \\" + action + \\" private field on non-instance\\"); } return privateMap.get(receiver); }\\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\\"attempted to set read only private field\\"); } descriptor.value = value; } }\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n!function webpackUniversalModuleDefinition(t, e) {\\n \\"object\\" == typeof exports && \\"object\\" == \\"object\\" ? module.exports = e() : \\"function\\" == typeof define && __webpack_require__.amdO ? define(\\"pdfjs-dist/build/pdf\\", [], e) : \\"object\\" == typeof exports ? exports[\\"pdfjs-dist/build/pdf\\"] = e() : t[\\"pdfjs-dist/build/pdf\\"] = t.pdfjsLib = e();\\n}(globalThis, () => (() => {\\n var __webpack_modules__ = [, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _t;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.VerbosityLevel = e.Util = e.UnknownErrorException = e.UnexpectedResponseException = e.TextRenderingMode = e.RenderingIntentFlag = e.PromiseCapability = e.PermissionFlag = e.PasswordResponses = e.PasswordException = e.PageActionEventType = e.OPS = e.MissingPDFException = e.MAX_IMAGE_SIZE_TO_CACHE = e.LINE_FACTOR = e.LINE_DESCENT_FACTOR = e.InvalidPDFException = e.ImageKind = e.IDENTITY_MATRIX = e.FormatError = e.FeatureTest = e.FONT_IDENTITY_MATRIX = e.DocumentActionEventType = e.CMapCompressionType = e.BaseException = e.BASELINE_FACTOR = e.AnnotationType = e.AnnotationReplyType = e.AnnotationMode = e.AnnotationFlag = e.AnnotationFieldFlag = e.AnnotationEditorType = e.AnnotationEditorPrefix = e.AnnotationEditorParamsType = e.AnnotationBorderStyleType = e.AnnotationActionEventType = e.AbortException = void 0;\\n e.assert = function assert(t, e) {\\n t || unreachable(e);\\n };\\n e.bytesToString = bytesToString;\\n e.createValidAbsoluteUrl = function createValidAbsoluteUrl(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,\\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;\\n if (!t) return null;\\n try {\\n if (n && \\"string\\" == typeof t) {\\n if (n.addDefaultProtocol && t.startsWith(\\"www.\\")) {\\n const e = t.match(/\\\\./g);\\n (e === null || e === void 0 ? void 0 : e.length) >= 2 && (t = \\"http://\\".concat(t));\\n }\\n if (n.tryConvertEncoding) try {\\n t = stringToUTF8String(t);\\n } catch (_unused) {}\\n }\\n const i = e ? new URL(t, e) : new URL(t);\\n if (function _isValidProtocol(t) {\\n switch (t === null || t === void 0 ? void 0 : t.protocol) {\\n case \\"http:\\":\\n case \\"https:\\":\\n case \\"ftp:\\":\\n case \\"mailto:\\":\\n case \\"tel:\\":\\n return !0;\\n default:\\n return !1;\\n }\\n }(i)) return i;\\n } catch (_unused2) {}\\n return null;\\n };\\n e.getModificationDate = function getModificationDate() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date();\\n 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(\\"\\");\\n };\\n e.getUuid = function getUuid() {\\n var _crypto, _crypto2;\\n if (\\"undefined\\" != typeof crypto && \\"function\\" == typeof ((_crypto = crypto) === null || _crypto === void 0 ? void 0 : _crypto.randomUUID)) return crypto.randomUUID();\\n const t = new Uint8Array(32);\\n if (\\"undefined\\" != typeof crypto && \\"function\\" == typeof ((_crypto2 = crypto) === null || _crypto2 === void 0 ? void 0 : _crypto2.getRandomValues)) crypto.getRandomValues(t);else for (let e = 0; e < 32; e++) t[e] = Math.floor(255 * Math.random());\\n return bytesToString(t);\\n };\\n e.getVerbosityLevel = function getVerbosityLevel() {\\n return s;\\n };\\n e.info = function info(t) {\\n s >= r.INFOS && console.log(\\"Info: \\".concat(t));\\n };\\n e.isArrayBuffer = function isArrayBuffer(t) {\\n return \\"object\\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.byteLength);\\n };\\n e.isArrayEqual = function isArrayEqual(t, e) {\\n if (t.length !== e.length) return !1;\\n for (let n = 0, i = t.length; n < i; n++) if (t[n] !== e[n]) return !1;\\n return !0;\\n };\\n e.isNodeJS = void 0;\\n e.normalizeUnicode = function normalizeUnicode(t) {\\n if (!c) {\\n c = /([\\\\xA0\\\\xB5\\\\u037E\\\\u0EB3\\\\u2000-\\\\u200A\\\\u202F\\\\u2126\\\\uFB00-\\\\uFB04\\\\uFB06\\\\uFB20-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBA1\\\\uFBA4-\\\\uFBA9\\\\uFBAE-\\\\uFBB1\\\\uFBD3-\\\\uFBDC\\\\uFBDE-\\\\uFBE7\\\\uFBEA-\\\\uFBF8\\\\uFBFC\\\\uFBFD\\\\uFC00-\\\\uFC5D\\\\uFC64-\\\\uFCF1\\\\uFCF5-\\\\uFD3D\\\\uFD88\\\\uFDF4\\\\uFDFA\\\\uFDFB\\\\uFE71\\\\uFE77\\\\uFE79\\\\uFE7B\\\\uFE7D]+)|(\\\\uFB05+)/g;\\n h = new Map([[\\"ſt\\", \\"ſt\\"]]);\\n }\\n return t.replaceAll(c, (t, e, n) => e ? e.normalize(\\"NFKC\\") : h.get(n));\\n };\\n e.objectFromMap = function objectFromMap(t) {\\n const e = Object.create(null);\\n for (const [n, i] of t) e[n] = i;\\n return e;\\n };\\n e.objectSize = function objectSize(t) {\\n return Object.keys(t).length;\\n };\\n e.setVerbosityLevel = function setVerbosityLevel(t) {\\n Number.isInteger(t) && (s = t);\\n };\\n e.shadow = shadow;\\n e.string32 = function string32(t) {\\n return String.fromCharCode(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t);\\n };\\n e.stringToBytes = stringToBytes;\\n e.stringToPDFString = function stringToPDFString(t) {\\n if (t[0] >= \\"ï\\") {\\n let e;\\n \\"þ\\" === t[0] && \\"ÿ\\" === t[1] ? e = \\"utf-16be\\" : \\"ÿ\\" === t[0] && \\"þ\\" === t[1] ? e = \\"utf-16le\\" : \\"ï\\" === t[0] && \\"»\\" === t[1] && \\"¿\\" === t[2] && (e = \\"utf-8\\");\\n if (e) try {\\n const n = new TextDecoder(e, {\\n fatal: !0\\n }),\\n i = stringToBytes(t);\\n return n.decode(i);\\n } catch (t) {\\n warn(\\"stringToPDFString: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n }\\n }\\n const e = [];\\n for (let n = 0, i = t.length; n < i; n++) {\\n const i = l[t.charCodeAt(n)];\\n e.push(i ? String.fromCharCode(i) : t.charAt(n));\\n }\\n return e.join(\\"\\");\\n };\\n e.stringToUTF8String = stringToUTF8String;\\n e.unreachable = unreachable;\\n e.utf8StringToString = function utf8StringToString(t) {\\n return unescape(encodeURIComponent(t));\\n };\\n e.warn = warn;\\n n(2);\\n n(84);\\n n(86);\\n n(87);\\n n(89);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n const i = !(\\"object\\" != typeof process || process + \\"\\" != \\"[object process]\\" || process.versions.nw || process.versions.electron && process.type && \\"browser\\" !== process.type);\\n e.isNodeJS = i;\\n e.IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\\n e.FONT_IDENTITY_MATRIX = [.001, 0, 0, .001, 0, 0];\\n e.MAX_IMAGE_SIZE_TO_CACHE = 1e7;\\n e.LINE_FACTOR = 1.35;\\n e.LINE_DESCENT_FACTOR = .35;\\n e.BASELINE_FACTOR = .25925925925925924;\\n e.RenderingIntentFlag = {\\n ANY: 1,\\n DISPLAY: 2,\\n PRINT: 4,\\n SAVE: 8,\\n ANNOTATIONS_FORMS: 16,\\n ANNOTATIONS_STORAGE: 32,\\n ANNOTATIONS_DISABLE: 64,\\n OPLIST: 256\\n };\\n e.AnnotationMode = {\\n DISABLE: 0,\\n ENABLE: 1,\\n ENABLE_FORMS: 2,\\n ENABLE_STORAGE: 3\\n };\\n e.AnnotationEditorPrefix = \\"pdfjs_internal_editor_\\";\\n e.AnnotationEditorType = {\\n DISABLE: -1,\\n NONE: 0,\\n FREETEXT: 3,\\n STAMP: 13,\\n INK: 15\\n };\\n e.AnnotationEditorParamsType = {\\n RESIZE: 1,\\n FREETEXT_SIZE: 11,\\n FREETEXT_COLOR: 12,\\n FREETEXT_OPACITY: 13,\\n INK_COLOR: 21,\\n INK_THICKNESS: 22,\\n INK_OPACITY: 23\\n };\\n e.PermissionFlag = {\\n PRINT: 4,\\n MODIFY_CONTENTS: 8,\\n COPY: 16,\\n MODIFY_ANNOTATIONS: 32,\\n FILL_INTERACTIVE_FORMS: 256,\\n COPY_FOR_ACCESSIBILITY: 512,\\n ASSEMBLE: 1024,\\n PRINT_HIGH_QUALITY: 2048\\n };\\n e.TextRenderingMode = {\\n FILL: 0,\\n STROKE: 1,\\n FILL_STROKE: 2,\\n INVISIBLE: 3,\\n FILL_ADD_TO_PATH: 4,\\n STROKE_ADD_TO_PATH: 5,\\n FILL_STROKE_ADD_TO_PATH: 6,\\n ADD_TO_PATH: 7,\\n FILL_STROKE_MASK: 3,\\n ADD_TO_PATH_FLAG: 4\\n };\\n e.ImageKind = {\\n GRAYSCALE_1BPP: 1,\\n RGB_24BPP: 2,\\n RGBA_32BPP: 3\\n };\\n e.AnnotationType = {\\n TEXT: 1,\\n LINK: 2,\\n FREETEXT: 3,\\n LINE: 4,\\n SQUARE: 5,\\n CIRCLE: 6,\\n POLYGON: 7,\\n POLYLINE: 8,\\n HIGHLIGHT: 9,\\n UNDERLINE: 10,\\n SQUIGGLY: 11,\\n STRIKEOUT: 12,\\n STAMP: 13,\\n CARET: 14,\\n INK: 15,\\n POPUP: 16,\\n FILEATTACHMENT: 17,\\n SOUND: 18,\\n MOVIE: 19,\\n WIDGET: 20,\\n SCREEN: 21,\\n PRINTERMARK: 22,\\n TRAPNET: 23,\\n WATERMARK: 24,\\n THREED: 25,\\n REDACT: 26\\n };\\n e.AnnotationReplyType = {\\n GROUP: \\"Group\\",\\n REPLY: \\"R\\"\\n };\\n e.AnnotationFlag = {\\n INVISIBLE: 1,\\n HIDDEN: 2,\\n PRINT: 4,\\n NOZOOM: 8,\\n NOROTATE: 16,\\n NOVIEW: 32,\\n READONLY: 64,\\n LOCKED: 128,\\n TOGGLENOVIEW: 256,\\n LOCKEDCONTENTS: 512\\n };\\n e.AnnotationFieldFlag = {\\n READONLY: 1,\\n REQUIRED: 2,\\n NOEXPORT: 4,\\n MULTILINE: 4096,\\n PASSWORD: 8192,\\n NOTOGGLETOOFF: 16384,\\n RADIO: 32768,\\n PUSHBUTTON: 65536,\\n COMBO: 131072,\\n EDIT: 262144,\\n SORT: 524288,\\n FILESELECT: 1048576,\\n MULTISELECT: 2097152,\\n DONOTSPELLCHECK: 4194304,\\n DONOTSCROLL: 8388608,\\n COMB: 16777216,\\n RICHTEXT: 33554432,\\n RADIOSINUNISON: 33554432,\\n COMMITONSELCHANGE: 67108864\\n };\\n e.AnnotationBorderStyleType = {\\n SOLID: 1,\\n DASHED: 2,\\n BEVELED: 3,\\n INSET: 4,\\n UNDERLINE: 5\\n };\\n e.AnnotationActionEventType = {\\n E: \\"Mouse Enter\\",\\n X: \\"Mouse Exit\\",\\n D: \\"Mouse Down\\",\\n U: \\"Mouse Up\\",\\n Fo: \\"Focus\\",\\n Bl: \\"Blur\\",\\n PO: \\"PageOpen\\",\\n PC: \\"PageClose\\",\\n PV: \\"PageVisible\\",\\n PI: \\"PageInvisible\\",\\n K: \\"Keystroke\\",\\n F: \\"Format\\",\\n V: \\"Validate\\",\\n C: \\"Calculate\\"\\n };\\n e.DocumentActionEventType = {\\n WC: \\"WillClose\\",\\n WS: \\"WillSave\\",\\n DS: \\"DidSave\\",\\n WP: \\"WillPrint\\",\\n DP: \\"DidPrint\\"\\n };\\n e.PageActionEventType = {\\n O: \\"PageOpen\\",\\n C: \\"PageClose\\"\\n };\\n const r = {\\n ERRORS: 0,\\n WARNINGS: 1,\\n INFOS: 5\\n };\\n e.VerbosityLevel = r;\\n e.CMapCompressionType = {\\n NONE: 0,\\n BINARY: 1\\n };\\n e.OPS = {\\n dependency: 1,\\n setLineWidth: 2,\\n setLineCap: 3,\\n setLineJoin: 4,\\n setMiterLimit: 5,\\n setDash: 6,\\n setRenderingIntent: 7,\\n setFlatness: 8,\\n setGState: 9,\\n save: 10,\\n restore: 11,\\n transform: 12,\\n moveTo: 13,\\n lineTo: 14,\\n curveTo: 15,\\n curveTo2: 16,\\n curveTo3: 17,\\n closePath: 18,\\n rectangle: 19,\\n stroke: 20,\\n closeStroke: 21,\\n fill: 22,\\n eoFill: 23,\\n fillStroke: 24,\\n eoFillStroke: 25,\\n closeFillStroke: 26,\\n closeEOFillStroke: 27,\\n endPath: 28,\\n clip: 29,\\n eoClip: 30,\\n beginText: 31,\\n endText: 32,\\n setCharSpacing: 33,\\n setWordSpacing: 34,\\n setHScale: 35,\\n setLeading: 36,\\n setFont: 37,\\n setTextRenderingMode: 38,\\n setTextRise: 39,\\n moveText: 40,\\n setLeadingMoveText: 41,\\n setTextMatrix: 42,\\n nextLine: 43,\\n showText: 44,\\n showSpacedText: 45,\\n nextLineShowText: 46,\\n nextLineSetSpacingShowText: 47,\\n setCharWidth: 48,\\n setCharWidthAndBounds: 49,\\n setStrokeColorSpace: 50,\\n setFillColorSpace: 51,\\n setStrokeColor: 52,\\n setStrokeColorN: 53,\\n setFillColor: 54,\\n setFillColorN: 55,\\n setStrokeGray: 56,\\n setFillGray: 57,\\n setStrokeRGBColor: 58,\\n setFillRGBColor: 59,\\n setStrokeCMYKColor: 60,\\n setFillCMYKColor: 61,\\n shadingFill: 62,\\n beginInlineImage: 63,\\n beginImageData: 64,\\n endInlineImage: 65,\\n paintXObject: 66,\\n markPoint: 67,\\n markPointProps: 68,\\n beginMarkedContent: 69,\\n beginMarkedContentProps: 70,\\n endMarkedContent: 71,\\n beginCompat: 72,\\n endCompat: 73,\\n paintFormXObjectBegin: 74,\\n paintFormXObjectEnd: 75,\\n beginGroup: 76,\\n endGroup: 77,\\n beginAnnotation: 80,\\n endAnnotation: 81,\\n paintImageMaskXObject: 83,\\n paintImageMaskXObjectGroup: 84,\\n paintImageXObject: 85,\\n paintInlineImageXObject: 86,\\n paintInlineImageXObjectGroup: 87,\\n paintImageXObjectRepeat: 88,\\n paintImageMaskXObjectRepeat: 89,\\n paintSolidColorImageMask: 90,\\n constructPath: 91\\n };\\n e.PasswordResponses = {\\n NEED_PASSWORD: 1,\\n INCORRECT_PASSWORD: 2\\n };\\n let s = r.WARNINGS;\\n function warn(t) {\\n s >= r.WARNINGS && console.log(\\"Warning: \\".concat(t));\\n }\\n function unreachable(t) {\\n throw new Error(t);\\n }\\n function shadow(t, e, n) {\\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\\n Object.defineProperty(t, e, {\\n value: n,\\n enumerable: !i,\\n configurable: !0,\\n writable: !1\\n });\\n return n;\\n }\\n const a = function BaseExceptionClosure() {\\n function BaseException(t, e) {\\n this.constructor === BaseException && unreachable(\\"Cannot initialize BaseException.\\");\\n this.message = t;\\n this.name = e;\\n }\\n BaseException.prototype = new Error();\\n BaseException.constructor = BaseException;\\n return BaseException;\\n }();\\n e.BaseException = a;\\n e.PasswordException = class PasswordException extends a {\\n constructor(t, e) {\\n super(t, \\"PasswordException\\");\\n this.code = e;\\n }\\n };\\n e.UnknownErrorException = class UnknownErrorException extends a {\\n constructor(t, e) {\\n super(t, \\"UnknownErrorException\\");\\n this.details = e;\\n }\\n };\\n e.InvalidPDFException = class InvalidPDFException extends a {\\n constructor(t) {\\n super(t, \\"InvalidPDFException\\");\\n }\\n };\\n e.MissingPDFException = class MissingPDFException extends a {\\n constructor(t) {\\n super(t, \\"MissingPDFException\\");\\n }\\n };\\n e.UnexpectedResponseException = class UnexpectedResponseException extends a {\\n constructor(t, e) {\\n super(t, \\"UnexpectedResponseException\\");\\n this.status = e;\\n }\\n };\\n e.FormatError = class FormatError extends a {\\n constructor(t) {\\n super(t, \\"FormatError\\");\\n }\\n };\\n e.AbortException = class AbortException extends a {\\n constructor(t) {\\n super(t, \\"AbortException\\");\\n }\\n };\\n function bytesToString(t) {\\n \\"object\\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.length) || unreachable(\\"Invalid argument for bytesToString\\");\\n const e = t.length,\\n n = 8192;\\n if (e < n) return String.fromCharCode.apply(null, t);\\n const i = [];\\n for (let r = 0; r < e; r += n) {\\n const s = Math.min(r + n, e),\\n a = t.subarray(r, s);\\n i.push(String.fromCharCode.apply(null, a));\\n }\\n return i.join(\\"\\");\\n }\\n function stringToBytes(t) {\\n \\"string\\" != typeof t && unreachable(\\"Invalid argument for stringToBytes\\");\\n const e = t.length,\\n n = new Uint8Array(e);\\n for (let i = 0; i < e; ++i) n[i] = 255 & t.charCodeAt(i);\\n return n;\\n }\\n e.FeatureTest = class FeatureTest {\\n static get isLittleEndian() {\\n return shadow(this, \\"isLittleEndian\\", function isLittleEndian() {\\n const t = new Uint8Array(4);\\n t[0] = 1;\\n return 1 === new Uint32Array(t.buffer, 0, 1)[0];\\n }());\\n }\\n static get isEvalSupported() {\\n return shadow(this, \\"isEvalSupported\\", function isEvalSupported() {\\n try {\\n new Function(\\"\\");\\n return !0;\\n } catch (_unused3) {\\n return !1;\\n }\\n }());\\n }\\n static get isOffscreenCanvasSupported() {\\n return shadow(this, \\"isOffscreenCanvasSupported\\", \\"undefined\\" != typeof OffscreenCanvas);\\n }\\n static get platform() {\\n return \\"undefined\\" == typeof navigator ? shadow(this, \\"platform\\", {\\n isWin: !1,\\n isMac: !1\\n }) : shadow(this, \\"platform\\", {\\n isWin: navigator.platform.includes(\\"Win\\"),\\n isMac: navigator.platform.includes(\\"Mac\\")\\n });\\n }\\n };\\n const o = [...Array(256).keys()].map(t => t.toString(16).padStart(2, \\"0\\"));\\n e.Util = class Util {\\n static makeHexColor(t, e, n) {\\n return \\"#\\".concat(o[t]).concat(o[e]).concat(o[n]);\\n }\\n static scaleMinMax(t, e) {\\n let n;\\n if (t[0]) {\\n if (t[0] < 0) {\\n n = e[0];\\n e[0] = e[1];\\n e[1] = n;\\n }\\n e[0] *= t[0];\\n e[1] *= t[0];\\n if (t[3] < 0) {\\n n = e[2];\\n e[2] = e[3];\\n e[3] = n;\\n }\\n e[2] *= t[3];\\n e[3] *= t[3];\\n } else {\\n n = e[0];\\n e[0] = e[2];\\n e[2] = n;\\n n = e[1];\\n e[1] = e[3];\\n e[3] = n;\\n if (t[1] < 0) {\\n n = e[2];\\n e[2] = e[3];\\n e[3] = n;\\n }\\n e[2] *= t[1];\\n e[3] *= t[1];\\n if (t[2] < 0) {\\n n = e[0];\\n e[0] = e[1];\\n e[1] = n;\\n }\\n e[0] *= t[2];\\n e[1] *= t[2];\\n }\\n e[0] += t[4];\\n e[1] += t[4];\\n e[2] += t[5];\\n e[3] += t[5];\\n }\\n static transform(t, e) {\\n return [t[0] * e[0] + t[2] * e[1], t[1] * e[0] + t[3] * e[1], t[0] * e[2] + t[2] * e[3], t[1] * e[2] + t[3] * e[3], t[0] * e[4] + t[2] * e[5] + t[4], t[1] * e[4] + t[3] * e[5] + t[5]];\\n }\\n static applyTransform(t, e) {\\n return [t[0] * e[0] + t[1] * e[2] + e[4], t[0] * e[1] + t[1] * e[3] + e[5]];\\n }\\n static applyInverseTransform(t, e) {\\n const n = e[0] * e[3] - e[1] * e[2];\\n return [(t[0] * e[3] - t[1] * e[2] + e[2] * e[5] - e[4] * e[3]) / n, (-t[0] * e[1] + t[1] * e[0] + e[4] * e[1] - e[5] * e[0]) / n];\\n }\\n static getAxialAlignedBoundingBox(t, e) {\\n const n = this.applyTransform(t, e),\\n i = this.applyTransform(t.slice(2, 4), e),\\n r = this.applyTransform([t[0], t[3]], e),\\n s = this.applyTransform([t[2], t[1]], e);\\n return [Math.min(n[0], i[0], r[0], s[0]), Math.min(n[1], i[1], r[1], s[1]), Math.max(n[0], i[0], r[0], s[0]), Math.max(n[1], i[1], r[1], s[1])];\\n }\\n static inverseTransform(t) {\\n const e = t[0] * t[3] - t[1] * t[2];\\n return [t[3] / e, -t[1] / e, -t[2] / e, t[0] / e, (t[2] * t[5] - t[4] * t[3]) / e, (t[4] * t[1] - t[5] * t[0]) / e];\\n }\\n static singularValueDecompose2dScale(t) {\\n const e = [t[0], t[2], t[1], t[3]],\\n n = t[0] * e[0] + t[1] * e[2],\\n i = t[0] * e[1] + t[1] * e[3],\\n r = t[2] * e[0] + t[3] * e[2],\\n s = t[2] * e[1] + t[3] * e[3],\\n a = (n + s) / 2,\\n o = Math.sqrt((n + s) ** 2 - 4 * (n * s - r * i)) / 2,\\n l = a + o || 1,\\n c = a - o || 1;\\n return [Math.sqrt(l), Math.sqrt(c)];\\n }\\n static normalizeRect(t) {\\n const e = t.slice(0);\\n if (t[0] > t[2]) {\\n e[0] = t[2];\\n e[2] = t[0];\\n }\\n if (t[1] > t[3]) {\\n e[1] = t[3];\\n e[3] = t[1];\\n }\\n return e;\\n }\\n static intersect(t, e) {\\n const n = Math.max(Math.min(t[0], t[2]), Math.min(e[0], e[2])),\\n i = Math.min(Math.max(t[0], t[2]), Math.max(e[0], e[2]));\\n if (n > i) return null;\\n const r = Math.max(Math.min(t[1], t[3]), Math.min(e[1], e[3])),\\n s = Math.min(Math.max(t[1], t[3]), Math.max(e[1], e[3]));\\n return r > s ? null : [n, r, i, s];\\n }\\n static bezierBoundingBox(t, e, n, i, r, s, a, o) {\\n const l = [],\\n c = [[], []];\\n let h, d, u, p, f, g, m, b;\\n for (let c = 0; c < 2; ++c) {\\n if (0 === c) {\\n d = 6 * t - 12 * n + 6 * r;\\n h = -3 * t + 9 * n - 9 * r + 3 * a;\\n u = 3 * n - 3 * t;\\n } else {\\n d = 6 * e - 12 * i + 6 * s;\\n h = -3 * e + 9 * i - 9 * s + 3 * o;\\n u = 3 * i - 3 * e;\\n }\\n if (Math.abs(h) < 1e-12) {\\n if (Math.abs(d) < 1e-12) continue;\\n p = -u / d;\\n 0 < p && p < 1 && l.push(p);\\n } else {\\n m = d * d - 4 * u * h;\\n b = Math.sqrt(m);\\n if (!(m < 0)) {\\n f = (-d + b) / (2 * h);\\n 0 < f && f < 1 && l.push(f);\\n g = (-d - b) / (2 * h);\\n 0 < g && g < 1 && l.push(g);\\n }\\n }\\n }\\n let v,\\n y = l.length;\\n const A = y;\\n for (; y--;) {\\n p = l[y];\\n v = 1 - p;\\n c[0][y] = v * v * v * t + 3 * v * v * p * n + 3 * v * p * p * r + p * p * p * a;\\n c[1][y] = v * v * v * e + 3 * v * v * p * i + 3 * v * p * p * s + p * p * p * o;\\n }\\n c[0][A] = t;\\n c[1][A] = e;\\n c[0][A + 1] = a;\\n c[1][A + 1] = o;\\n c[0].length = c[1].length = A + 2;\\n return [Math.min(...c[0]), Math.min(...c[1]), Math.max(...c[0]), Math.max(...c[1])];\\n }\\n };\\n const l = [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];\\n function stringToUTF8String(t) {\\n return decodeURIComponent(escape(t));\\n }\\n e.PromiseCapability = (_t = /*#__PURE__*/new WeakMap(), class PromiseCapability {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _t, {\\n writable: true,\\n value: !1\\n });\\n this.promise = new Promise((t, e) => {\\n this.resolve = e => {\\n _classPrivateFieldSet(this, _t, !0);\\n t(e);\\n };\\n this.reject = t => {\\n _classPrivateFieldSet(this, _t, !0);\\n e(t);\\n };\\n });\\n }\\n get settled() {\\n return _classPrivateFieldGet(this, _t);\\n }\\n });\\n let c = null,\\n h = null;\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(4),\\n s = n(69),\\n a = n(70),\\n o = \\"WebAssembly\\",\\n l = r[o],\\n c = 7 !== Error(\\"e\\", {\\n cause: 7\\n }).cause,\\n exportGlobalErrorCauseWrapper = function exportGlobalErrorCauseWrapper(t, e) {\\n var n = {};\\n n[t] = a(t, e, c);\\n i({\\n global: !0,\\n constructor: !0,\\n arity: 1,\\n forced: c\\n }, n);\\n },\\n exportWebAssemblyErrorCauseWrapper = function exportWebAssemblyErrorCauseWrapper(t, e) {\\n if (l && l[t]) {\\n var n = {};\\n n[t] = a(o + \\".\\" + t, e, c);\\n i({\\n target: o,\\n stat: !0,\\n constructor: !0,\\n arity: 1,\\n forced: c\\n }, n);\\n }\\n };\\n exportGlobalErrorCauseWrapper(\\"Error\\", function (t) {\\n return function Error(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"EvalError\\", function (t) {\\n return function EvalError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"RangeError\\", function (t) {\\n return function RangeError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"ReferenceError\\", function (t) {\\n return function ReferenceError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"SyntaxError\\", function (t) {\\n return function SyntaxError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"TypeError\\", function (t) {\\n return function TypeError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"URIError\\", function (t) {\\n return function URIError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportWebAssemblyErrorCauseWrapper(\\"CompileError\\", function (t) {\\n return function CompileError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportWebAssemblyErrorCauseWrapper(\\"LinkError\\", function (t) {\\n return function LinkError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportWebAssemblyErrorCauseWrapper(\\"RuntimeError\\", function (t) {\\n return function RuntimeError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(5).f,\\n s = n(44),\\n a = n(48),\\n o = n(38),\\n l = n(56),\\n c = n(68);\\n t.exports = function (t, e) {\\n var n,\\n h,\\n d,\\n u,\\n p,\\n f = t.target,\\n g = t.global,\\n m = t.stat;\\n if (n = g ? i : m ? i[f] || o(f, {}) : (i[f] || {}).prototype) for (h in e) {\\n u = e[h];\\n d = t.dontCallGetSet ? (p = r(n, h)) && p.value : n[h];\\n if (!c(g ? h : f + (m ? \\".\\" : \\"#\\") + h, t.forced) && void 0 !== d) {\\n if (typeof u == typeof d) continue;\\n l(u, d);\\n }\\n (t.sham || d && d.sham) && s(u, \\"sham\\", !0);\\n a(n, h, u, t);\\n }\\n };\\n }, function (t) {\\n var check = function check(t) {\\n return t && t.Math == Math && t;\\n };\\n t.exports = check(\\"object\\" == typeof globalThis && globalThis) || check(\\"object\\" == typeof window && window) || check(\\"object\\" == typeof self && self) || check(\\"object\\" == typeof __webpack_require__.g && __webpack_require__.g) || function () {\\n return this;\\n }() || this || Function(\\"return this\\")();\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(8),\\n s = n(10),\\n a = n(11),\\n o = n(12),\\n l = n(18),\\n c = n(39),\\n h = n(42),\\n d = Object.getOwnPropertyDescriptor;\\n e.f = i ? d : function getOwnPropertyDescriptor(t, e) {\\n t = o(t);\\n e = l(e);\\n if (h) try {\\n return d(t, e);\\n } catch (t) {}\\n if (c(t, e)) return a(!r(s.f, t, e), t[e]);\\n };\\n }, (t, e, n) => {\\n var i = n(7);\\n t.exports = !i(function () {\\n return 7 != Object.defineProperty({}, 1, {\\n get: function get() {\\n return 7;\\n }\\n })[1];\\n });\\n }, t => {\\n t.exports = function (t) {\\n try {\\n return !!t();\\n } catch (t) {\\n return !0;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(9),\\n r = Function.prototype.call;\\n t.exports = i ? r.bind(r) : function () {\\n return r.apply(r, arguments);\\n };\\n }, (t, e, n) => {\\n var i = n(7);\\n t.exports = !i(function () {\\n var t = function () {}.bind();\\n return \\"function\\" != typeof t || t.hasOwnProperty(\\"prototype\\");\\n });\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n var n = {}.propertyIsEnumerable,\\n i = Object.getOwnPropertyDescriptor,\\n r = i && !n.call({\\n 1: 2\\n }, 1);\\n e.f = r ? function propertyIsEnumerable(t) {\\n var e = i(this, t);\\n return !!e && e.enumerable;\\n } : n;\\n }, t => {\\n t.exports = function (t, e) {\\n return {\\n enumerable: !(1 & t),\\n configurable: !(2 & t),\\n writable: !(4 & t),\\n value: e\\n };\\n };\\n }, (t, e, n) => {\\n var i = n(13),\\n r = n(16);\\n t.exports = function (t) {\\n return i(r(t));\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(7),\\n s = n(15),\\n a = Object,\\n o = i(\\"\\".split);\\n t.exports = r(function () {\\n return !a(\\"z\\").propertyIsEnumerable(0);\\n }) ? function (t) {\\n return \\"String\\" == s(t) ? o(t, \\"\\") : a(t);\\n } : a;\\n }, (t, e, n) => {\\n var i = n(9),\\n r = Function.prototype,\\n s = r.call,\\n a = i && r.bind.bind(s, s);\\n t.exports = i ? a : function (t) {\\n return function () {\\n return s.apply(t, arguments);\\n };\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = i({}.toString),\\n s = i(\\"\\".slice);\\n t.exports = function (t) {\\n return s(r(t), 8, -1);\\n };\\n }, (t, e, n) => {\\n var i = n(17),\\n r = TypeError;\\n t.exports = function (t) {\\n if (i(t)) throw r(\\"Can't call method on \\" + t);\\n return t;\\n };\\n }, t => {\\n t.exports = function (t) {\\n return null == t;\\n };\\n }, (t, e, n) => {\\n var i = n(19),\\n r = n(23);\\n t.exports = function (t) {\\n var e = i(t, \\"string\\");\\n return r(e) ? e : e + \\"\\";\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(20),\\n s = n(23),\\n a = n(30),\\n o = n(33),\\n l = n(34),\\n c = TypeError,\\n h = l(\\"toPrimitive\\");\\n t.exports = function (t, e) {\\n if (!r(t) || s(t)) return t;\\n var n,\\n l = a(t, h);\\n if (l) {\\n void 0 === e && (e = \\"default\\");\\n n = i(l, t, e);\\n if (!r(n) || s(n)) return n;\\n throw c(\\"Can't convert object to primitive value\\");\\n }\\n void 0 === e && (e = \\"number\\");\\n return o(t, e);\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(22),\\n s = r.all;\\n t.exports = r.IS_HTMLDDA ? function (t) {\\n return \\"object\\" == typeof t ? null !== t : i(t) || t === s;\\n } : function (t) {\\n return \\"object\\" == typeof t ? null !== t : i(t);\\n };\\n }, (t, e, n) => {\\n var i = n(22),\\n r = i.all;\\n t.exports = i.IS_HTMLDDA ? function (t) {\\n return \\"function\\" == typeof t || t === r;\\n } : function (t) {\\n return \\"function\\" == typeof t;\\n };\\n }, t => {\\n var e = \\"object\\" == typeof document && document.all,\\n n = void 0 === e && void 0 !== e;\\n t.exports = {\\n all: e,\\n IS_HTMLDDA: n\\n };\\n }, (t, e, n) => {\\n var i = n(24),\\n r = n(21),\\n s = n(25),\\n a = n(26),\\n o = Object;\\n t.exports = a ? function (t) {\\n return \\"symbol\\" == typeof t;\\n } : function (t) {\\n var e = i(\\"Symbol\\");\\n return r(e) && s(e.prototype, o(t));\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(21);\\n t.exports = function (t, e) {\\n return arguments.length < 2 ? (n = i[t], r(n) ? n : void 0) : i[t] && i[t][e];\\n var n;\\n };\\n }, (t, e, n) => {\\n var i = n(14);\\n t.exports = i({}.isPrototypeOf);\\n }, (t, e, n) => {\\n var i = n(27);\\n t.exports = i && !Symbol.sham && \\"symbol\\" == typeof Symbol.iterator;\\n }, (t, e, n) => {\\n var i = n(28),\\n r = n(7),\\n s = n(4).String;\\n t.exports = !!Object.getOwnPropertySymbols && !r(function () {\\n var t = Symbol();\\n return !s(t) || !(Object(t) instanceof Symbol) || !Symbol.sham && i && i < 41;\\n });\\n }, (t, e, n) => {\\n var i,\\n r,\\n s = n(4),\\n a = n(29),\\n o = s.process,\\n l = s.Deno,\\n c = o && o.versions || l && l.version,\\n h = c && c.v8;\\n h && (r = (i = h.split(\\".\\"))[0] > 0 && i[0] < 4 ? 1 : +(i[0] + i[1]));\\n !r && a && (!(i = a.match(/Edge\\\\/(\\\\d+)/)) || i[1] >= 74) && (i = a.match(/Chrome\\\\/(\\\\d+)/)) && (r = +i[1]);\\n t.exports = r;\\n }, t => {\\n t.exports = \\"undefined\\" != typeof navigator && String(navigator.userAgent) || \\"\\";\\n }, (t, e, n) => {\\n var i = n(31),\\n r = n(17);\\n t.exports = function (t, e) {\\n var n = t[e];\\n return r(n) ? void 0 : i(n);\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(32),\\n s = TypeError;\\n t.exports = function (t) {\\n if (i(t)) return t;\\n throw s(r(t) + \\" is not a function\\");\\n };\\n }, t => {\\n var e = String;\\n t.exports = function (t) {\\n try {\\n return e(t);\\n } catch (t) {\\n return \\"Object\\";\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(21),\\n s = n(20),\\n a = TypeError;\\n t.exports = function (t, e) {\\n var n, o;\\n if (\\"string\\" === e && r(n = t.toString) && !s(o = i(n, t))) return o;\\n if (r(n = t.valueOf) && !s(o = i(n, t))) return o;\\n if (\\"string\\" !== e && r(n = t.toString) && !s(o = i(n, t))) return o;\\n throw a(\\"Can't convert object to primitive value\\");\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(35),\\n s = n(39),\\n a = n(41),\\n o = n(27),\\n l = n(26),\\n c = i.Symbol,\\n h = r(\\"wks\\"),\\n d = l ? c.for || c : c && c.withoutSetter || a;\\n t.exports = function (t) {\\n s(h, t) || (h[t] = o && s(c, t) ? c[t] : d(\\"Symbol.\\" + t));\\n return h[t];\\n };\\n }, (t, e, n) => {\\n var i = n(36),\\n r = n(37);\\n (t.exports = function (t, e) {\\n return r[t] || (r[t] = void 0 !== e ? e : {});\\n })(\\"versions\\", []).push({\\n version: \\"3.31.1\\",\\n mode: i ? \\"pure\\" : \\"global\\",\\n copyright: \\"© 2014-2023 Denis Pushkarev (zloirock.ru)\\",\\n license: \\"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE\\",\\n source: \\"https://github.com/zloirock/core-js\\"\\n });\\n }, t => {\\n t.exports = !1;\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(38),\\n s = \\"__core-js_shared__\\",\\n a = i[s] || r(s, {});\\n t.exports = a;\\n }, (t, e, n) => {\\n var i = n(4),\\n r = Object.defineProperty;\\n t.exports = function (t, e) {\\n try {\\n r(i, t, {\\n value: e,\\n configurable: !0,\\n writable: !0\\n });\\n } catch (n) {\\n i[t] = e;\\n }\\n return e;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(40),\\n s = i({}.hasOwnProperty);\\n t.exports = Object.hasOwn || function hasOwn(t, e) {\\n return s(r(t), e);\\n };\\n }, (t, e, n) => {\\n var i = n(16),\\n r = Object;\\n t.exports = function (t) {\\n return r(i(t));\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = 0,\\n s = Math.random(),\\n a = i(1..toString);\\n t.exports = function (t) {\\n return \\"Symbol(\\" + (void 0 === t ? \\"\\" : t) + \\")_\\" + a(++r + s, 36);\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(7),\\n s = n(43);\\n t.exports = !i && !r(function () {\\n return 7 != Object.defineProperty(s(\\"div\\"), \\"a\\", {\\n get: function get() {\\n return 7;\\n }\\n }).a;\\n });\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(20),\\n s = i.document,\\n a = r(s) && r(s.createElement);\\n t.exports = function (t) {\\n return a ? s.createElement(t) : {};\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(45),\\n s = n(11);\\n t.exports = i ? function (t, e, n) {\\n return r.f(t, e, s(1, n));\\n } : function (t, e, n) {\\n t[e] = n;\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(42),\\n s = n(46),\\n a = n(47),\\n o = n(18),\\n l = TypeError,\\n c = Object.defineProperty,\\n h = Object.getOwnPropertyDescriptor,\\n d = \\"enumerable\\",\\n u = \\"configurable\\",\\n p = \\"writable\\";\\n e.f = i ? s ? function defineProperty(t, e, n) {\\n a(t);\\n e = o(e);\\n a(n);\\n if (\\"function\\" == typeof t && \\"prototype\\" === e && \\"value\\" in n && p in n && !n[p]) {\\n var i = h(t, e);\\n if (i && i[p]) {\\n t[e] = n.value;\\n n = {\\n configurable: u in n ? n[u] : i[u],\\n enumerable: d in n ? n[d] : i[d],\\n writable: !1\\n };\\n }\\n }\\n return c(t, e, n);\\n } : c : function defineProperty(t, e, n) {\\n a(t);\\n e = o(e);\\n a(n);\\n if (r) try {\\n return c(t, e, n);\\n } catch (t) {}\\n if (\\"get\\" in n || \\"set\\" in n) throw l(\\"Accessors not supported\\");\\n \\"value\\" in n && (t[e] = n.value);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(7);\\n t.exports = i && r(function () {\\n return 42 != Object.defineProperty(function () {}, \\"prototype\\", {\\n value: 42,\\n writable: !1\\n }).prototype;\\n });\\n }, (t, e, n) => {\\n var i = n(20),\\n r = String,\\n s = TypeError;\\n t.exports = function (t) {\\n if (i(t)) return t;\\n throw s(r(t) + \\" is not an object\\");\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(45),\\n s = n(49),\\n a = n(38);\\n t.exports = function (t, e, n, o) {\\n o || (o = {});\\n var l = o.enumerable,\\n c = void 0 !== o.name ? o.name : e;\\n i(n) && s(n, c, o);\\n if (o.global) l ? t[e] = n : a(e, n);else {\\n try {\\n o.unsafe ? t[e] && (l = !0) : delete t[e];\\n } catch (t) {}\\n l ? t[e] = n : r.f(t, e, {\\n value: n,\\n enumerable: !1,\\n configurable: !o.nonConfigurable,\\n writable: !o.nonWritable\\n });\\n }\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(7),\\n s = n(21),\\n a = n(39),\\n o = n(6),\\n l = n(50).CONFIGURABLE,\\n c = n(51),\\n h = n(52),\\n d = h.enforce,\\n u = h.get,\\n p = String,\\n f = Object.defineProperty,\\n g = i(\\"\\".slice),\\n m = i(\\"\\".replace),\\n b = i([].join),\\n v = o && !r(function () {\\n return 8 !== f(function () {}, \\"length\\", {\\n value: 8\\n }).length;\\n }),\\n y = String(String).split(\\"String\\"),\\n A = t.exports = function (t, e, n) {\\n \\"Symbol(\\" === g(p(e), 0, 7) && (e = \\"[\\" + m(p(e), /^Symbol\\\\(([^)]*)\\\\)/, \\"$1\\") + \\"]\\");\\n n && n.getter && (e = \\"get \\" + e);\\n n && n.setter && (e = \\"set \\" + e);\\n (!a(t, \\"name\\") || l && t.name !== e) && (o ? f(t, \\"name\\", {\\n value: e,\\n configurable: !0\\n }) : t.name = e);\\n v && n && a(n, \\"arity\\") && t.length !== n.arity && f(t, \\"length\\", {\\n value: n.arity\\n });\\n try {\\n n && a(n, \\"constructor\\") && n.constructor ? o && f(t, \\"prototype\\", {\\n writable: !1\\n }) : t.prototype && (t.prototype = void 0);\\n } catch (t) {}\\n var i = d(t);\\n a(i, \\"source\\") || (i.source = b(y, \\"string\\" == typeof e ? e : \\"\\"));\\n return t;\\n };\\n Function.prototype.toString = A(function toString() {\\n return s(this) && u(this).source || c(this);\\n }, \\"toString\\");\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(39),\\n s = Function.prototype,\\n a = i && Object.getOwnPropertyDescriptor,\\n o = r(s, \\"name\\"),\\n l = o && \\"something\\" === function something() {}.name,\\n c = o && (!i || i && a(s, \\"name\\").configurable);\\n t.exports = {\\n EXISTS: o,\\n PROPER: l,\\n CONFIGURABLE: c\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(21),\\n s = n(37),\\n a = i(Function.toString);\\n r(s.inspectSource) || (s.inspectSource = function (t) {\\n return a(t);\\n });\\n t.exports = s.inspectSource;\\n }, (t, e, n) => {\\n var i,\\n r,\\n s,\\n a = n(53),\\n o = n(4),\\n l = n(20),\\n c = n(44),\\n h = n(39),\\n d = n(37),\\n u = n(54),\\n p = n(55),\\n f = \\"Object already initialized\\",\\n g = o.TypeError,\\n m = o.WeakMap;\\n if (a || d.state) {\\n var b = d.state || (d.state = new m());\\n b.get = b.get;\\n b.has = b.has;\\n b.set = b.set;\\n i = function i(t, e) {\\n if (b.has(t)) throw g(f);\\n e.facade = t;\\n b.set(t, e);\\n return e;\\n };\\n r = function r(t) {\\n return b.get(t) || {};\\n };\\n s = function s(t) {\\n return b.has(t);\\n };\\n } else {\\n var v = u(\\"state\\");\\n p[v] = !0;\\n i = function i(t, e) {\\n if (h(t, v)) throw g(f);\\n e.facade = t;\\n c(t, v, e);\\n return e;\\n };\\n r = function r(t) {\\n return h(t, v) ? t[v] : {};\\n };\\n s = function s(t) {\\n return h(t, v);\\n };\\n }\\n t.exports = {\\n set: i,\\n get: r,\\n has: s,\\n enforce: function enforce(t) {\\n return s(t) ? r(t) : i(t, {});\\n },\\n getterFor: function getterFor(t) {\\n return function (e) {\\n var n;\\n if (!l(e) || (n = r(e)).type !== t) throw g(\\"Incompatible receiver, \\" + t + \\" required\\");\\n return n;\\n };\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(21),\\n s = i.WeakMap;\\n t.exports = r(s) && /native code/.test(String(s));\\n }, (t, e, n) => {\\n var i = n(35),\\n r = n(41),\\n s = i(\\"keys\\");\\n t.exports = function (t) {\\n return s[t] || (s[t] = r(t));\\n };\\n }, t => {\\n t.exports = {};\\n }, (t, e, n) => {\\n var i = n(39),\\n r = n(57),\\n s = n(5),\\n a = n(45);\\n t.exports = function (t, e, n) {\\n for (var o = r(e), l = a.f, c = s.f, h = 0; h < o.length; h++) {\\n var d = o[h];\\n i(t, d) || n && i(n, d) || l(t, d, c(e, d));\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(24),\\n r = n(14),\\n s = n(58),\\n a = n(67),\\n o = n(47),\\n l = r([].concat);\\n t.exports = i(\\"Reflect\\", \\"ownKeys\\") || function ownKeys(t) {\\n var e = s.f(o(t)),\\n n = a.f;\\n return n ? l(e, n(t)) : e;\\n };\\n }, (t, e, n) => {\\n var i = n(59),\\n r = n(66).concat(\\"length\\", \\"prototype\\");\\n e.f = Object.getOwnPropertyNames || function getOwnPropertyNames(t) {\\n return i(t, r);\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(39),\\n s = n(12),\\n a = n(60).indexOf,\\n o = n(55),\\n l = i([].push);\\n t.exports = function (t, e) {\\n var n,\\n i = s(t),\\n c = 0,\\n h = [];\\n for (n in i) !r(o, n) && r(i, n) && l(h, n);\\n for (; e.length > c;) r(i, n = e[c++]) && (~a(h, n) || l(h, n));\\n return h;\\n };\\n }, (t, e, n) => {\\n var i = n(12),\\n r = n(61),\\n s = n(64),\\n createMethod = function createMethod(t) {\\n return function (e, n, a) {\\n var o,\\n l = i(e),\\n c = s(l),\\n h = r(a, c);\\n if (t && n != n) {\\n for (; c > h;) if ((o = l[h++]) != o) return !0;\\n } else for (; c > h; h++) if ((t || h in l) && l[h] === n) return t || h || 0;\\n return !t && -1;\\n };\\n };\\n t.exports = {\\n includes: createMethod(!0),\\n indexOf: createMethod(!1)\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = Math.max,\\n s = Math.min;\\n t.exports = function (t, e) {\\n var n = i(t);\\n return n < 0 ? r(n + e, 0) : s(n, e);\\n };\\n }, (t, e, n) => {\\n var i = n(63);\\n t.exports = function (t) {\\n var e = +t;\\n return e != e || 0 === e ? 0 : i(e);\\n };\\n }, t => {\\n var e = Math.ceil,\\n n = Math.floor;\\n t.exports = Math.trunc || function trunc(t) {\\n var i = +t;\\n return (i > 0 ? n : e)(i);\\n };\\n }, (t, e, n) => {\\n var i = n(65);\\n t.exports = function (t) {\\n return i(t.length);\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = Math.min;\\n t.exports = function (t) {\\n return t > 0 ? r(i(t), 9007199254740991) : 0;\\n };\\n }, t => {\\n t.exports = [\\"constructor\\", \\"hasOwnProperty\\", \\"isPrototypeOf\\", \\"propertyIsEnumerable\\", \\"toLocaleString\\", \\"toString\\", \\"valueOf\\"];\\n }, (t, e) => {\\n e.f = Object.getOwnPropertySymbols;\\n }, (t, e, n) => {\\n var i = n(7),\\n r = n(21),\\n s = /#|\\\\.prototype\\\\./,\\n isForced = function isForced(t, e) {\\n var n = o[a(t)];\\n return n == c || n != l && (r(e) ? i(e) : !!e);\\n },\\n a = isForced.normalize = function (t) {\\n return String(t).replace(s, \\".\\").toLowerCase();\\n },\\n o = isForced.data = {},\\n l = isForced.NATIVE = \\"N\\",\\n c = isForced.POLYFILL = \\"P\\";\\n t.exports = isForced;\\n }, (t, e, n) => {\\n var i = n(9),\\n r = Function.prototype,\\n s = r.apply,\\n a = r.call;\\n t.exports = \\"object\\" == typeof Reflect && Reflect.apply || (i ? a.bind(s) : function () {\\n return a.apply(s, arguments);\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(24),\\n r = n(39),\\n s = n(44),\\n a = n(25),\\n o = n(71),\\n l = n(56),\\n c = n(74),\\n h = n(75),\\n d = n(76),\\n u = n(80),\\n p = n(81),\\n f = n(6),\\n g = n(36);\\n t.exports = function (t, e, n, m) {\\n var b = \\"stackTraceLimit\\",\\n v = m ? 2 : 1,\\n y = t.split(\\".\\"),\\n A = y[y.length - 1],\\n _ = i.apply(null, y);\\n if (_) {\\n var S = _.prototype;\\n !g && r(S, \\"cause\\") && delete S.cause;\\n if (!n) return _;\\n var E = i(\\"Error\\"),\\n x = e(function (t, e) {\\n var n = d(m ? e : t, void 0),\\n i = m ? new _(t) : new _();\\n void 0 !== n && s(i, \\"message\\", n);\\n p(i, x, i.stack, 2);\\n this && a(S, this) && h(i, this, x);\\n arguments.length > v && u(i, arguments[v]);\\n return i;\\n });\\n x.prototype = S;\\n if (\\"Error\\" !== A) o ? o(x, E) : l(x, E, {\\n name: !0\\n });else if (f && b in _) {\\n c(x, _, b);\\n c(x, _, \\"prepareStackTrace\\");\\n }\\n l(x, _);\\n if (!g) try {\\n S.name !== A && s(S, \\"name\\", A);\\n S.constructor = x;\\n } catch (t) {}\\n return x;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(72),\\n r = n(47),\\n s = n(73);\\n t.exports = Object.setPrototypeOf || (\\"__proto__\\" in {} ? function () {\\n var t,\\n e = !1,\\n n = {};\\n try {\\n (t = i(Object.prototype, \\"__proto__\\", \\"set\\"))(n, []);\\n e = n instanceof Array;\\n } catch (t) {}\\n return function setPrototypeOf(n, i) {\\n r(n);\\n s(i);\\n e ? t(n, i) : n.__proto__ = i;\\n return n;\\n };\\n }() : void 0);\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(31);\\n t.exports = function (t, e, n) {\\n try {\\n return i(r(Object.getOwnPropertyDescriptor(t, e)[n]));\\n } catch (t) {}\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = String,\\n s = TypeError;\\n t.exports = function (t) {\\n if (\\"object\\" == typeof t || i(t)) return t;\\n throw s(\\"Can't set \\" + r(t) + \\" as a prototype\\");\\n };\\n }, (t, e, n) => {\\n var i = n(45).f;\\n t.exports = function (t, e, n) {\\n n in t || i(t, n, {\\n configurable: !0,\\n get: function get() {\\n return e[n];\\n },\\n set: function set(t) {\\n e[n] = t;\\n }\\n });\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(20),\\n s = n(71);\\n t.exports = function (t, e, n) {\\n var a, o;\\n s && i(a = e.constructor) && a !== n && r(o = a.prototype) && o !== n.prototype && s(t, o);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(77);\\n t.exports = function (t, e) {\\n return void 0 === t ? arguments.length < 2 ? \\"\\" : e : i(t);\\n };\\n }, (t, e, n) => {\\n var i = n(78),\\n r = String;\\n t.exports = function (t) {\\n if (\\"Symbol\\" === i(t)) throw TypeError(\\"Cannot convert a Symbol value to a string\\");\\n return r(t);\\n };\\n }, (t, e, n) => {\\n var i = n(79),\\n r = n(21),\\n s = n(15),\\n a = n(34)(\\"toStringTag\\"),\\n o = Object,\\n l = \\"Arguments\\" == s(function () {\\n return arguments;\\n }());\\n t.exports = i ? s : function (t) {\\n var e, n, i;\\n return void 0 === t ? \\"Undefined\\" : null === t ? \\"Null\\" : \\"string\\" == typeof (n = function (t, e) {\\n try {\\n return t[e];\\n } catch (t) {}\\n }(e = o(t), a)) ? n : l ? s(e) : \\"Object\\" == (i = s(e)) && r(e.callee) ? \\"Arguments\\" : i;\\n };\\n }, (t, e, n) => {\\n var i = {};\\n i[n(34)(\\"toStringTag\\")] = \\"z\\";\\n t.exports = \\"[object z]\\" === String(i);\\n }, (t, e, n) => {\\n var i = n(20),\\n r = n(44);\\n t.exports = function (t, e) {\\n i(e) && \\"cause\\" in e && r(t, \\"cause\\", e.cause);\\n };\\n }, (t, e, n) => {\\n var i = n(44),\\n r = n(82),\\n s = n(83),\\n a = Error.captureStackTrace;\\n t.exports = function (t, e, n, o) {\\n s && (a ? a(t, e) : i(t, \\"stack\\", r(n, o)));\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = Error,\\n s = i(\\"\\".replace),\\n a = String(r(\\"zxcasd\\").stack),\\n o = /\\\\n\\\\s*at [^:]*:[^\\\\n]*/,\\n l = o.test(a);\\n t.exports = function (t, e) {\\n if (l && \\"string\\" == typeof t && !r.prepareStackTrace) for (; e--;) t = s(t, o, \\"\\");\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(7),\\n r = n(11);\\n t.exports = !i(function () {\\n var t = Error(\\"a\\");\\n if (!(\\"stack\\" in t)) return !0;\\n Object.defineProperty(t, \\"stack\\", r(1, 7));\\n return 7 !== t.stack;\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(48),\\n r = n(14),\\n s = n(77),\\n a = n(85),\\n o = URLSearchParams,\\n l = o.prototype,\\n c = r(l.append),\\n h = r(l.delete),\\n d = r(l.forEach),\\n u = r([].push),\\n p = new o(\\"a=1&a=2\\");\\n p.delete(\\"a\\", 1);\\n p + \\"\\" != \\"a=2\\" && i(l, \\"delete\\", function (t) {\\n var e = arguments.length,\\n n = e < 2 ? void 0 : arguments[1];\\n if (e && void 0 === n) return h(this, t);\\n var i = [];\\n d(this, function (t, e) {\\n u(i, {\\n key: e,\\n value: t\\n });\\n });\\n a(e, 1);\\n for (var r, o = s(t), l = s(n), p = 0, f = 0, g = !1, m = i.length; p < m;) {\\n r = i[p++];\\n if (g || r.key === o) {\\n g = !0;\\n h(this, r.key);\\n } else f++;\\n }\\n for (; f < m;) (r = i[f++]).key === o && r.value === l || c(this, r.key, r.value);\\n }, {\\n enumerable: !0,\\n unsafe: !0\\n });\\n }, t => {\\n var e = TypeError;\\n t.exports = function (t, n) {\\n if (t < n) throw e(\\"Not enough arguments\\");\\n return t;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(48),\\n r = n(14),\\n s = n(77),\\n a = n(85),\\n o = URLSearchParams,\\n l = o.prototype,\\n c = r(l.getAll),\\n h = r(l.has);\\n new o(\\"a=1\\").has(\\"a\\", 2) && i(l, \\"has\\", function has(t) {\\n var e = arguments.length,\\n n = e < 2 ? void 0 : arguments[1];\\n if (e && void 0 === n) return h(this, t);\\n var i = c(this, t);\\n a(e, 1);\\n for (var r = s(n), o = 0; o < i.length;) if (i[o++] === r) return !0;\\n return !1;\\n }, {\\n enumerable: !0,\\n unsafe: !0\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(6),\\n r = n(14),\\n s = n(88),\\n a = URLSearchParams.prototype,\\n o = r(a.forEach);\\n i && !(\\"size\\" in a) && s(a, \\"size\\", {\\n get: function size() {\\n var t = 0;\\n o(this, function () {\\n t++;\\n });\\n return t;\\n },\\n configurable: !0,\\n enumerable: !0\\n });\\n }, (t, e, n) => {\\n var i = n(49),\\n r = n(45);\\n t.exports = function (t, e, n) {\\n n.get && i(n.get, e, {\\n getter: !0\\n });\\n n.set && i(n.set, e, {\\n setter: !0\\n });\\n return r.f(t, e, n);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(40),\\n s = n(64),\\n a = n(90),\\n o = n(92);\\n i({\\n target: \\"Array\\",\\n proto: !0,\\n arity: 1,\\n forced: n(7)(function () {\\n return 4294967297 !== [].push.call({\\n length: 4294967296\\n }, 1);\\n }) || !function () {\\n try {\\n Object.defineProperty([], \\"length\\", {\\n writable: !1\\n }).push();\\n } catch (t) {\\n return t instanceof TypeError;\\n }\\n }()\\n }, {\\n push: function push(t) {\\n var e = r(this),\\n n = s(e),\\n i = arguments.length;\\n o(n + i);\\n for (var l = 0; l < i; l++) {\\n e[n] = arguments[l];\\n n++;\\n }\\n a(e, n);\\n return n;\\n }\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(6),\\n r = n(91),\\n s = TypeError,\\n a = Object.getOwnPropertyDescriptor,\\n o = i && !function () {\\n if (void 0 !== this) return !0;\\n try {\\n Object.defineProperty([], \\"length\\", {\\n writable: !1\\n }).length = 1;\\n } catch (t) {\\n return t instanceof TypeError;\\n }\\n }();\\n t.exports = o ? function (t, e) {\\n if (r(t) && !a(t, \\"length\\").writable) throw s(\\"Cannot set read only .length\\");\\n return t.length = e;\\n } : function (t, e) {\\n return t.length = e;\\n };\\n }, (t, e, n) => {\\n var i = n(15);\\n t.exports = Array.isArray || function isArray(t) {\\n return \\"Array\\" == i(t);\\n };\\n }, t => {\\n var e = TypeError;\\n t.exports = function (t) {\\n if (t > 9007199254740991) throw e(\\"Maximum allowed index exceeded\\");\\n return t;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(94),\\n r = n(98).findLast,\\n s = i.aTypedArray;\\n (0, i.exportTypedArrayMethod)(\\"findLast\\", function findLast(t) {\\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i,\\n r,\\n s,\\n a = n(95),\\n o = n(6),\\n l = n(4),\\n c = n(21),\\n h = n(20),\\n d = n(39),\\n u = n(78),\\n p = n(32),\\n f = n(44),\\n g = n(48),\\n m = n(88),\\n b = n(25),\\n v = n(96),\\n y = n(71),\\n A = n(34),\\n _ = n(41),\\n S = n(52),\\n E = S.enforce,\\n x = S.get,\\n w = l.Int8Array,\\n C = w && w.prototype,\\n T = l.Uint8ClampedArray,\\n P = T && T.prototype,\\n k = w && v(w),\\n M = C && v(C),\\n R = Object.prototype,\\n I = l.TypeError,\\n D = A(\\"toStringTag\\"),\\n O = _(\\"TYPED_ARRAY_TAG\\"),\\n L = \\"TypedArrayConstructor\\",\\n N = a && !!y && \\"Opera\\" !== u(l.opera),\\n B = !1,\\n j = {\\n Int8Array: 1,\\n Uint8Array: 1,\\n Uint8ClampedArray: 1,\\n Int16Array: 2,\\n Uint16Array: 2,\\n Int32Array: 4,\\n Uint32Array: 4,\\n Float32Array: 4,\\n Float64Array: 8\\n },\\n U = {\\n BigInt64Array: 8,\\n BigUint64Array: 8\\n },\\n getTypedArrayConstructor = function getTypedArrayConstructor(t) {\\n var e = v(t);\\n if (h(e)) {\\n var n = x(e);\\n return n && d(n, L) ? n[L] : getTypedArrayConstructor(e);\\n }\\n },\\n isTypedArray = function isTypedArray(t) {\\n if (!h(t)) return !1;\\n var e = u(t);\\n return d(j, e) || d(U, e);\\n };\\n for (i in j) (s = (r = l[i]) && r.prototype) ? E(s)[L] = r : N = !1;\\n for (i in U) (s = (r = l[i]) && r.prototype) && (E(s)[L] = r);\\n if (!N || !c(k) || k === Function.prototype) {\\n k = function TypedArray() {\\n throw I(\\"Incorrect invocation\\");\\n };\\n if (N) for (i in j) l[i] && y(l[i], k);\\n }\\n if (!N || !M || M === R) {\\n M = k.prototype;\\n if (N) for (i in j) l[i] && y(l[i].prototype, M);\\n }\\n N && v(P) !== M && y(P, M);\\n if (o && !d(M, D)) {\\n B = !0;\\n m(M, D, {\\n configurable: !0,\\n get: function get() {\\n return h(this) ? this[O] : void 0;\\n }\\n });\\n for (i in j) l[i] && f(l[i], O, i);\\n }\\n t.exports = {\\n NATIVE_ARRAY_BUFFER_VIEWS: N,\\n TYPED_ARRAY_TAG: B && O,\\n aTypedArray: function aTypedArray(t) {\\n if (isTypedArray(t)) return t;\\n throw I(\\"Target is not a typed array\\");\\n },\\n aTypedArrayConstructor: function aTypedArrayConstructor(t) {\\n if (c(t) && (!y || b(k, t))) return t;\\n throw I(p(t) + \\" is not a typed array constructor\\");\\n },\\n exportTypedArrayMethod: function exportTypedArrayMethod(t, e, n, i) {\\n if (o) {\\n if (n) for (var r in j) {\\n var s = l[r];\\n if (s && d(s.prototype, t)) try {\\n delete s.prototype[t];\\n } catch (n) {\\n try {\\n s.prototype[t] = e;\\n } catch (t) {}\\n }\\n }\\n M[t] && !n || g(M, t, n ? e : N && C[t] || e, i);\\n }\\n },\\n exportTypedArrayStaticMethod: function exportTypedArrayStaticMethod(t, e, n) {\\n var i, r;\\n if (o) {\\n if (y) {\\n if (n) for (i in j) if ((r = l[i]) && d(r, t)) try {\\n delete r[t];\\n } catch (t) {}\\n if (k[t] && !n) return;\\n try {\\n return g(k, t, n ? e : N && k[t] || e);\\n } catch (t) {}\\n }\\n for (i in j) !(r = l[i]) || r[t] && !n || g(r, t, e);\\n }\\n },\\n getTypedArrayConstructor: getTypedArrayConstructor,\\n isView: function isView(t) {\\n if (!h(t)) return !1;\\n var e = u(t);\\n return \\"DataView\\" === e || d(j, e) || d(U, e);\\n },\\n isTypedArray: isTypedArray,\\n TypedArray: k,\\n TypedArrayPrototype: M\\n };\\n }, t => {\\n t.exports = \\"undefined\\" != typeof ArrayBuffer && \\"undefined\\" != typeof DataView;\\n }, (t, e, n) => {\\n var i = n(39),\\n r = n(21),\\n s = n(40),\\n a = n(54),\\n o = n(97),\\n l = a(\\"IE_PROTO\\"),\\n c = Object,\\n h = c.prototype;\\n t.exports = o ? c.getPrototypeOf : function (t) {\\n var e = s(t);\\n if (i(e, l)) return e[l];\\n var n = e.constructor;\\n return r(n) && e instanceof n ? n.prototype : e instanceof c ? h : null;\\n };\\n }, (t, e, n) => {\\n var i = n(7);\\n t.exports = !i(function () {\\n function F() {}\\n F.prototype.constructor = null;\\n return Object.getPrototypeOf(new F()) !== F.prototype;\\n });\\n }, (t, e, n) => {\\n var i = n(99),\\n r = n(13),\\n s = n(40),\\n a = n(64),\\n createMethod = function createMethod(t) {\\n var e = 1 == t;\\n return function (n, o, l) {\\n for (var c, h = s(n), d = r(h), u = i(o, l), p = a(d); p-- > 0;) if (u(c = d[p], p, h)) switch (t) {\\n case 0:\\n return c;\\n case 1:\\n return p;\\n }\\n return e ? -1 : void 0;\\n };\\n };\\n t.exports = {\\n findLast: createMethod(0),\\n findLastIndex: createMethod(1)\\n };\\n }, (t, e, n) => {\\n var i = n(100),\\n r = n(31),\\n s = n(9),\\n a = i(i.bind);\\n t.exports = function (t, e) {\\n r(t);\\n return void 0 === e ? t : s ? a(t, e) : function () {\\n return t.apply(e, arguments);\\n };\\n };\\n }, (t, e, n) => {\\n var i = n(15),\\n r = n(14);\\n t.exports = function (t) {\\n if (\\"Function\\" === i(t)) return r(t);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(94),\\n r = n(98).findLastIndex,\\n s = i.aTypedArray;\\n (0, i.exportTypedArrayMethod)(\\"findLastIndex\\", function findLastIndex(t) {\\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(4),\\n r = n(8),\\n s = n(94),\\n a = n(64),\\n o = n(103),\\n l = n(40),\\n c = n(7),\\n h = i.RangeError,\\n d = i.Int8Array,\\n u = d && d.prototype,\\n p = u && u.set,\\n f = s.aTypedArray,\\n g = s.exportTypedArrayMethod,\\n m = !c(function () {\\n var t = new Uint8ClampedArray(2);\\n r(p, t, {\\n length: 1,\\n 0: 3\\n }, 1);\\n return 3 !== t[1];\\n }),\\n b = m && s.NATIVE_ARRAY_BUFFER_VIEWS && c(function () {\\n var t = new d(2);\\n t.set(1);\\n t.set(\\"2\\", 1);\\n return 0 !== t[0] || 2 !== t[1];\\n });\\n g(\\"set\\", function set(t) {\\n f(this);\\n var e = o(arguments.length > 1 ? arguments[1] : void 0, 1),\\n n = l(t);\\n if (m) return r(p, this, n, e);\\n var i = this.length,\\n s = a(n),\\n c = 0;\\n if (s + e > i) throw h(\\"Wrong length\\");\\n for (; c < s;) this[e + c] = n[c++];\\n }, !m || b);\\n }, (t, e, n) => {\\n var i = n(104),\\n r = RangeError;\\n t.exports = function (t, e) {\\n var n = i(t);\\n if (n % e) throw r(\\"Wrong offset\\");\\n return n;\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = RangeError;\\n t.exports = function (t) {\\n var e = i(t);\\n if (e < 0) throw r(\\"The argument can't be less than 0\\");\\n return e;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(106),\\n r = n(94),\\n s = r.aTypedArray,\\n a = r.exportTypedArrayMethod,\\n o = r.getTypedArrayConstructor;\\n a(\\"toReversed\\", function toReversed() {\\n return i(s(this), o(this));\\n });\\n }, (t, e, n) => {\\n var i = n(64);\\n t.exports = function (t, e) {\\n for (var n = i(t), r = new e(n), s = 0; s < n; s++) r[s] = t[n - s - 1];\\n return r;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(94),\\n r = n(14),\\n s = n(31),\\n a = n(108),\\n o = i.aTypedArray,\\n l = i.getTypedArrayConstructor,\\n c = i.exportTypedArrayMethod,\\n h = r(i.TypedArrayPrototype.sort);\\n c(\\"toSorted\\", function toSorted(t) {\\n void 0 !== t && s(t);\\n var e = o(this),\\n n = a(l(e), e);\\n return h(n, t);\\n });\\n }, (t, e, n) => {\\n var i = n(64);\\n t.exports = function (t, e) {\\n for (var n = 0, r = i(e), s = new t(r); r > n;) s[n] = e[n++];\\n return s;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(110),\\n r = n(94),\\n s = n(111),\\n a = n(62),\\n o = n(112),\\n l = r.aTypedArray,\\n c = r.getTypedArrayConstructor,\\n h = r.exportTypedArrayMethod,\\n d = !!function () {\\n try {\\n new Int8Array(1).with(2, {\\n valueOf: function valueOf() {\\n throw 8;\\n }\\n });\\n } catch (t) {\\n return 8 === t;\\n }\\n }();\\n h(\\"with\\", {\\n with: function _with(t, e) {\\n var n = l(this),\\n r = a(t),\\n h = s(n) ? o(e) : +e;\\n return i(n, c(n), r, h);\\n }\\n }.with, !d);\\n }, (t, e, n) => {\\n var i = n(64),\\n r = n(62),\\n s = RangeError;\\n t.exports = function (t, e, n, a) {\\n var o = i(t),\\n l = r(n),\\n c = l < 0 ? o + l : l;\\n if (c >= o || c < 0) throw s(\\"Incorrect index\\");\\n for (var h = new e(o), d = 0; d < o; d++) h[d] = d === c ? a : t[d];\\n return h;\\n };\\n }, (t, e, n) => {\\n var i = n(78);\\n t.exports = function (t) {\\n var e = i(t);\\n return \\"BigInt64Array\\" == e || \\"BigUint64Array\\" == e;\\n };\\n }, (t, e, n) => {\\n var i = n(19),\\n r = TypeError;\\n t.exports = function (t) {\\n var e = i(t, \\"number\\");\\n if (\\"number\\" == typeof e) throw r(\\"Can't convert number to bigint\\");\\n return BigInt(e);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(6),\\n r = n(88),\\n s = n(114),\\n a = ArrayBuffer.prototype;\\n i && !(\\"detached\\" in a) && r(a, \\"detached\\", {\\n configurable: !0,\\n get: function detached() {\\n return s(this);\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(115),\\n s = i(ArrayBuffer.prototype.slice);\\n t.exports = function (t) {\\n if (0 !== r(t)) return !1;\\n try {\\n s(t, 0, 0);\\n return !1;\\n } catch (t) {\\n return !0;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(72),\\n r = n(15),\\n s = TypeError;\\n t.exports = i(ArrayBuffer.prototype, \\"byteLength\\", \\"get\\") || function (t) {\\n if (\\"ArrayBuffer\\" != r(t)) throw s(\\"ArrayBuffer expected\\");\\n return t.byteLength;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(117);\\n r && i({\\n target: \\"ArrayBuffer\\",\\n proto: !0\\n }, {\\n transfer: function transfer() {\\n return r(this, arguments.length ? arguments[0] : void 0, !0);\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(14),\\n s = n(72),\\n a = n(118),\\n o = n(114),\\n l = n(115),\\n c = n(119),\\n h = i.TypeError,\\n d = i.structuredClone,\\n u = i.ArrayBuffer,\\n p = i.DataView,\\n f = Math.min,\\n g = u.prototype,\\n m = p.prototype,\\n b = r(g.slice),\\n v = s(g, \\"resizable\\", \\"get\\"),\\n y = s(g, \\"maxByteLength\\", \\"get\\"),\\n A = r(m.getInt8),\\n _ = r(m.setInt8);\\n t.exports = c && function (t, e, n) {\\n var i = l(t),\\n r = void 0 === e ? i : a(e),\\n s = !v || !v(t);\\n if (o(t)) throw h(\\"ArrayBuffer is detached\\");\\n var c = d(t, {\\n transfer: [t]\\n });\\n if (i == r && (n || s)) return c;\\n if (i >= r && (!n || s)) return b(c, 0, r);\\n for (var g = n && !s && y ? {\\n maxByteLength: y(c)\\n } : void 0, m = new u(r, g), S = new p(c), E = new p(m), x = f(r, i), w = 0; w < x; w++) _(E, w, A(S, w));\\n return m;\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = n(65),\\n s = RangeError;\\n t.exports = function (t) {\\n if (void 0 === t) return 0;\\n var e = i(t),\\n n = r(e);\\n if (e !== n) throw s(\\"Wrong length or index\\");\\n return n;\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(7),\\n s = n(28),\\n a = n(120),\\n o = n(121),\\n l = n(122),\\n c = i.structuredClone;\\n t.exports = !!c && !r(function () {\\n if (o && s > 92 || l && s > 94 || a && s > 97) return !1;\\n var t = new ArrayBuffer(8),\\n e = c(t, {\\n transfer: [t]\\n });\\n return 0 != t.byteLength || 8 != e.byteLength;\\n });\\n }, (t, e, n) => {\\n var i = n(121),\\n r = n(122);\\n t.exports = !i && !r && \\"object\\" == typeof window && \\"object\\" == typeof document;\\n }, t => {\\n t.exports = \\"object\\" == typeof Deno && Deno && \\"object\\" == typeof Deno.version;\\n }, (t, e, n) => {\\n var i = n(15);\\n t.exports = \\"undefined\\" != typeof process && \\"process\\" == i(process);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(117);\\n r && i({\\n target: \\"ArrayBuffer\\",\\n proto: !0\\n }, {\\n transferToFixedLength: function transferToFixedLength() {\\n return r(this, arguments.length ? arguments[0] : void 0, !1);\\n }\\n });\\n }, (__unused_webpack_module, exports, __w_pdfjs_require__) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(exports, \\"__esModule\\", {\\n value: !0\\n });\\n exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\\n Object.defineProperty(exports, \\"SVGGraphics\\", {\\n enumerable: !0,\\n get: function get() {\\n return _displaySvg.SVGGraphics;\\n }\\n });\\n exports.build = void 0;\\n exports.getDocument = getDocument;\\n exports.version = void 0;\\n __w_pdfjs_require__(84);\\n __w_pdfjs_require__(86);\\n __w_pdfjs_require__(87);\\n __w_pdfjs_require__(2);\\n __w_pdfjs_require__(93);\\n __w_pdfjs_require__(101);\\n __w_pdfjs_require__(102);\\n __w_pdfjs_require__(105);\\n __w_pdfjs_require__(107);\\n __w_pdfjs_require__(109);\\n __w_pdfjs_require__(113);\\n __w_pdfjs_require__(116);\\n __w_pdfjs_require__(123);\\n __w_pdfjs_require__(89);\\n __w_pdfjs_require__(125);\\n __w_pdfjs_require__(135);\\n __w_pdfjs_require__(137);\\n __w_pdfjs_require__(140);\\n __w_pdfjs_require__(142);\\n __w_pdfjs_require__(144);\\n __w_pdfjs_require__(146);\\n __w_pdfjs_require__(148);\\n __w_pdfjs_require__(151);\\n var _util = __w_pdfjs_require__(1),\\n _annotation_storage = __w_pdfjs_require__(162),\\n _display_utils = __w_pdfjs_require__(167),\\n _font_loader = __w_pdfjs_require__(170),\\n _displayNode_utils = __w_pdfjs_require__(171),\\n _canvas = __w_pdfjs_require__(172),\\n _worker_options = __w_pdfjs_require__(175),\\n _message_handler = __w_pdfjs_require__(176),\\n _metadata = __w_pdfjs_require__(177),\\n _optional_content_config = __w_pdfjs_require__(178),\\n _transport_stream = __w_pdfjs_require__(179),\\n _displayFetch_stream = __w_pdfjs_require__(180),\\n _displayNetwork = __w_pdfjs_require__(183),\\n _displayNode_stream = __w_pdfjs_require__(184),\\n _displaySvg = __w_pdfjs_require__(185),\\n _xfa_text = __w_pdfjs_require__(193);\\n const DEFAULT_RANGE_CHUNK_SIZE = 65536,\\n RENDERING_CANCELLED_TIMEOUT = 100,\\n DELAYED_CLEANUP_TIMEOUT = 5e3,\\n DefaultCanvasFactory = _util.isNodeJS ? _displayNode_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\\n exports.DefaultCanvasFactory = DefaultCanvasFactory;\\n const DefaultCMapReaderFactory = _util.isNodeJS ? _displayNode_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\\n exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\\n const DefaultFilterFactory = _util.isNodeJS ? _displayNode_utils.NodeFilterFactory : _display_utils.DOMFilterFactory;\\n exports.DefaultFilterFactory = DefaultFilterFactory;\\n const DefaultStandardFontDataFactory = _util.isNodeJS ? _displayNode_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;\\n exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\\n function getDocument(t) {\\n var _t$password, _t$length;\\n \\"string\\" == typeof t || t instanceof URL ? t = {\\n url: t\\n } : (0, _util.isArrayBuffer)(t) && (t = {\\n data: t\\n });\\n if (\\"object\\" != typeof t) throw new Error(\\"Invalid parameter in getDocument, need parameter object.\\");\\n if (!t.url && !t.data && !t.range) throw new Error(\\"Invalid parameter object: need either .data, .range or .url\\");\\n const e = new PDFDocumentLoadingTask(),\\n {\\n docId: n\\n } = e,\\n i = t.url ? getUrlProp(t.url) : null,\\n r = t.data ? getDataProp(t.data) : null,\\n s = t.httpHeaders || null,\\n a = !0 === t.withCredentials,\\n o = (_t$password = t.password) !== null && _t$password !== void 0 ? _t$password : null,\\n l = t.range instanceof PDFDataRangeTransport ? t.range : null,\\n c = Number.isInteger(t.rangeChunkSize) && t.rangeChunkSize > 0 ? t.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\\n let h = t.worker instanceof PDFWorker ? t.worker : null;\\n const d = t.verbosity,\\n u = \\"string\\" != typeof t.docBaseUrl || (0, _display_utils.isDataScheme)(t.docBaseUrl) ? null : t.docBaseUrl,\\n p = \\"string\\" == typeof t.cMapUrl ? t.cMapUrl : null,\\n f = !1 !== t.cMapPacked,\\n g = t.CMapReaderFactory || DefaultCMapReaderFactory,\\n m = \\"string\\" == typeof t.standardFontDataUrl ? t.standardFontDataUrl : null,\\n b = t.StandardFontDataFactory || DefaultStandardFontDataFactory,\\n v = !0 !== t.stopAtErrors,\\n y = Number.isInteger(t.maxImageSize) && t.maxImageSize > -1 ? t.maxImageSize : -1,\\n A = !1 !== t.isEvalSupported,\\n _ = \\"boolean\\" == typeof t.isOffscreenCanvasSupported ? t.isOffscreenCanvasSupported : !_util.isNodeJS,\\n S = Number.isInteger(t.canvasMaxAreaInBytes) ? t.canvasMaxAreaInBytes : -1,\\n E = \\"boolean\\" == typeof t.disableFontFace ? t.disableFontFace : _util.isNodeJS,\\n x = !0 === t.fontExtraProperties,\\n w = !0 === t.enableXfa,\\n C = t.ownerDocument || globalThis.document,\\n T = !0 === t.disableRange,\\n P = !0 === t.disableStream,\\n k = !0 === t.disableAutoFetch,\\n M = !0 === t.pdfBug,\\n R = l ? l.length : (_t$length = t.length) !== null && _t$length !== void 0 ? _t$length : NaN,\\n I = \\"boolean\\" == typeof t.useSystemFonts ? t.useSystemFonts : !_util.isNodeJS && !E,\\n D = \\"boolean\\" == typeof t.useWorkerFetch ? t.useWorkerFetch : g === _display_utils.DOMCMapReaderFactory && b === _display_utils.DOMStandardFontDataFactory && p && m && (0, _display_utils.isValidFetchUrl)(p, document.baseURI) && (0, _display_utils.isValidFetchUrl)(m, document.baseURI),\\n O = t.canvasFactory || new DefaultCanvasFactory({\\n ownerDocument: C\\n }),\\n L = t.filterFactory || new DefaultFilterFactory({\\n docId: n,\\n ownerDocument: C\\n });\\n (0, _util.setVerbosityLevel)(d);\\n const N = {\\n canvasFactory: O,\\n filterFactory: L\\n };\\n if (!D) {\\n N.cMapReaderFactory = new g({\\n baseUrl: p,\\n isCompressed: f\\n });\\n N.standardFontDataFactory = new b({\\n baseUrl: m\\n });\\n }\\n if (!h) {\\n const t = {\\n verbosity: d,\\n port: _worker_options.GlobalWorkerOptions.workerPort\\n };\\n h = t.port ? PDFWorker.fromPort(t) : new PDFWorker(t);\\n e._worker = h;\\n }\\n const B = {\\n docId: n,\\n apiVersion: \\"3.9.179\\",\\n data: r,\\n password: o,\\n disableAutoFetch: k,\\n rangeChunkSize: c,\\n length: R,\\n docBaseUrl: u,\\n enableXfa: w,\\n evaluatorOptions: {\\n maxImageSize: y,\\n disableFontFace: E,\\n ignoreErrors: v,\\n isEvalSupported: A,\\n isOffscreenCanvasSupported: _,\\n canvasMaxAreaInBytes: S,\\n fontExtraProperties: x,\\n useSystemFonts: I,\\n cMapUrl: D ? p : null,\\n standardFontDataUrl: D ? m : null\\n }\\n },\\n j = {\\n ignoreErrors: v,\\n isEvalSupported: A,\\n disableFontFace: E,\\n fontExtraProperties: x,\\n enableXfa: w,\\n ownerDocument: C,\\n disableAutoFetch: k,\\n pdfBug: M,\\n styleElement: null\\n };\\n h.promise.then(function () {\\n if (e.destroyed) throw new Error(\\"Loading aborted\\");\\n const t = _fetchDocument(h, B),\\n o = new Promise(function (t) {\\n let e;\\n if (l) e = new _transport_stream.PDFDataTransportStream({\\n length: R,\\n initialData: l.initialData,\\n progressiveDone: l.progressiveDone,\\n contentDispositionFilename: l.contentDispositionFilename,\\n disableRange: T,\\n disableStream: P\\n }, l);else if (!r) {\\n e = (t => _util.isNodeJS ? new _displayNode_stream.PDFNodeStream(t) : (0, _display_utils.isValidFetchUrl)(t.url) ? new _displayFetch_stream.PDFFetchStream(t) : new _displayNetwork.PDFNetworkStream(t))({\\n url: i,\\n length: R,\\n httpHeaders: s,\\n withCredentials: a,\\n rangeChunkSize: c,\\n disableRange: T,\\n disableStream: P\\n });\\n }\\n t(e);\\n });\\n return Promise.all([t, o]).then(function (t) {\\n let [i, r] = t;\\n if (e.destroyed) throw new Error(\\"Loading aborted\\");\\n const s = new _message_handler.MessageHandler(n, i, h.port),\\n a = new WorkerTransport(s, e, r, j, N);\\n e._transport = a;\\n s.send(\\"Ready\\", null);\\n });\\n }).catch(e._capability.reject);\\n return e;\\n }\\n async function _fetchDocument(t, e) {\\n if (t.destroyed) throw new Error(\\"Worker was destroyed\\");\\n const n = await t.messageHandler.sendWithPromise(\\"GetDocRequest\\", e, e.data ? [e.data.buffer] : null);\\n if (t.destroyed) throw new Error(\\"Worker was destroyed\\");\\n return n;\\n }\\n function getUrlProp(t) {\\n if (t instanceof URL) return t.href;\\n try {\\n return new URL(t, window.location).href;\\n } catch (_unused4) {\\n if (_util.isNodeJS && \\"string\\" == typeof t) return t;\\n }\\n throw new Error(\\"Invalid PDF url data: either string or URL-object is expected in the url property.\\");\\n }\\n function getDataProp(t) {\\n if (_util.isNodeJS && \\"undefined\\" != typeof Buffer && t instanceof Buffer) throw new Error(\\"Please provide binary data as \`Uint8Array\`, rather than \`Buffer\`.\\");\\n if (t instanceof Uint8Array && t.byteLength === t.buffer.byteLength) return t;\\n if (\\"string\\" == typeof t) return (0, _util.stringToBytes)(t);\\n if (\\"object\\" == typeof t && !isNaN(t === null || t === void 0 ? void 0 : t.length) || (0, _util.isArrayBuffer)(t)) return new Uint8Array(t);\\n throw new Error(\\"Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.\\");\\n }\\n class PDFDocumentLoadingTask {\\n constructor() {\\n var _PDFDocumentLoadingTa, _PDFDocumentLoadingTa2;\\n this._capability = new _util.PromiseCapability();\\n this._transport = null;\\n this._worker = null;\\n this.docId = \\"d\\" + (_classStaticPrivateFieldSpecSet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e, (_PDFDocumentLoadingTa = _classStaticPrivateFieldSpecGet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e), _PDFDocumentLoadingTa2 = _PDFDocumentLoadingTa++, _PDFDocumentLoadingTa)), _PDFDocumentLoadingTa2);\\n this.destroyed = !1;\\n this.onPassword = null;\\n this.onProgress = null;\\n }\\n get promise() {\\n return this._capability.promise;\\n }\\n async destroy() {\\n var _this$_transport;\\n this.destroyed = !0;\\n await ((_this$_transport = this._transport) === null || _this$_transport === void 0 ? void 0 : _this$_transport.destroy());\\n this._transport = null;\\n if (this._worker) {\\n this._worker.destroy();\\n this._worker = null;\\n }\\n }\\n }\\n var _e = {\\n writable: true,\\n value: 0\\n };\\n exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\\n class PDFDataRangeTransport {\\n constructor(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\\n this.length = t;\\n this.initialData = e;\\n this.progressiveDone = n;\\n this.contentDispositionFilename = i;\\n this._rangeListeners = [];\\n this._progressListeners = [];\\n this._progressiveReadListeners = [];\\n this._progressiveDoneListeners = [];\\n this._readyCapability = new _util.PromiseCapability();\\n }\\n addRangeListener(t) {\\n this._rangeListeners.push(t);\\n }\\n addProgressListener(t) {\\n this._progressListeners.push(t);\\n }\\n addProgressiveReadListener(t) {\\n this._progressiveReadListeners.push(t);\\n }\\n addProgressiveDoneListener(t) {\\n this._progressiveDoneListeners.push(t);\\n }\\n onDataRange(t, e) {\\n for (const n of this._rangeListeners) n(t, e);\\n }\\n onDataProgress(t, e) {\\n this._readyCapability.promise.then(() => {\\n for (const n of this._progressListeners) n(t, e);\\n });\\n }\\n onDataProgressiveRead(t) {\\n this._readyCapability.promise.then(() => {\\n for (const e of this._progressiveReadListeners) e(t);\\n });\\n }\\n onDataProgressiveDone() {\\n this._readyCapability.promise.then(() => {\\n for (const t of this._progressiveDoneListeners) t();\\n });\\n }\\n transportReady() {\\n this._readyCapability.resolve();\\n }\\n requestDataRange(t, e) {\\n (0, _util.unreachable)(\\"Abstract method PDFDataRangeTransport.requestDataRange\\");\\n }\\n abort() {}\\n }\\n exports.PDFDataRangeTransport = PDFDataRangeTransport;\\n class PDFDocumentProxy {\\n constructor(t, e) {\\n this._pdfInfo = t;\\n this._transport = e;\\n }\\n get annotationStorage() {\\n return this._transport.annotationStorage;\\n }\\n get filterFactory() {\\n return this._transport.filterFactory;\\n }\\n get numPages() {\\n return this._pdfInfo.numPages;\\n }\\n get fingerprints() {\\n return this._pdfInfo.fingerprints;\\n }\\n get isPureXfa() {\\n return (0, _util.shadow)(this, \\"isPureXfa\\", !!this._transport._htmlForXfa);\\n }\\n get allXfaHtml() {\\n return this._transport._htmlForXfa;\\n }\\n getPage(t) {\\n return this._transport.getPage(t);\\n }\\n getPageIndex(t) {\\n return this._transport.getPageIndex(t);\\n }\\n getDestinations() {\\n return this._transport.getDestinations();\\n }\\n getDestination(t) {\\n return this._transport.getDestination(t);\\n }\\n getPageLabels() {\\n return this._transport.getPageLabels();\\n }\\n getPageLayout() {\\n return this._transport.getPageLayout();\\n }\\n getPageMode() {\\n return this._transport.getPageMode();\\n }\\n getViewerPreferences() {\\n return this._transport.getViewerPreferences();\\n }\\n getOpenAction() {\\n return this._transport.getOpenAction();\\n }\\n getAttachments() {\\n return this._transport.getAttachments();\\n }\\n getJavaScript() {\\n return this._transport.getJavaScript();\\n }\\n getJSActions() {\\n return this._transport.getDocJSActions();\\n }\\n getOutline() {\\n return this._transport.getOutline();\\n }\\n getOptionalContentConfig() {\\n return this._transport.getOptionalContentConfig();\\n }\\n getPermissions() {\\n return this._transport.getPermissions();\\n }\\n getMetadata() {\\n return this._transport.getMetadata();\\n }\\n getMarkInfo() {\\n return this._transport.getMarkInfo();\\n }\\n getData() {\\n return this._transport.getData();\\n }\\n saveDocument() {\\n return this._transport.saveDocument();\\n }\\n getDownloadInfo() {\\n return this._transport.downloadInfoCapability.promise;\\n }\\n cleanup() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n return this._transport.startCleanup(t || this.isPureXfa);\\n }\\n destroy() {\\n return this.loadingTask.destroy();\\n }\\n get loadingParams() {\\n return this._transport.loadingParams;\\n }\\n get loadingTask() {\\n return this._transport.loadingTask;\\n }\\n getFieldObjects() {\\n return this._transport.getFieldObjects();\\n }\\n hasJSActions() {\\n return this._transport.hasJSActions();\\n }\\n getCalculationOrderIds() {\\n return this._transport.getCalculationOrderIds();\\n }\\n }\\n exports.PDFDocumentProxy = PDFDocumentProxy;\\n var _n = /*#__PURE__*/new WeakMap();\\n var _i = /*#__PURE__*/new WeakMap();\\n var _s = /*#__PURE__*/new WeakSet();\\n var _r = /*#__PURE__*/new WeakSet();\\n class PDFPageProxy {\\n constructor(_t2, _e2, n) {\\n _classPrivateMethodInitSpec(this, _r);\\n _classPrivateMethodInitSpec(this, _s);\\n _classPrivateFieldInitSpec(this, _n, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _i, {\\n writable: true,\\n value: !1\\n });\\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\\n this._pageIndex = _t2;\\n this._pageInfo = _e2;\\n this._transport = n;\\n this._stats = i ? new _display_utils.StatTimer() : null;\\n this._pdfBug = i;\\n this.commonObjs = n.commonObjs;\\n this.objs = new PDFObjects();\\n this._maybeCleanupAfterRender = !1;\\n this._intentStates = new Map();\\n this.destroyed = !1;\\n }\\n get pageNumber() {\\n return this._pageIndex + 1;\\n }\\n get rotate() {\\n return this._pageInfo.rotate;\\n }\\n get ref() {\\n return this._pageInfo.ref;\\n }\\n get userUnit() {\\n return this._pageInfo.userUnit;\\n }\\n get view() {\\n return this._pageInfo.view;\\n }\\n getViewport() {\\n let {\\n scale: t,\\n rotation: e = this.rotate,\\n offsetX: n = 0,\\n offsetY: i = 0,\\n dontFlip: r = !1\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n return new _display_utils.PageViewport({\\n viewBox: this.view,\\n scale: t,\\n rotation: e,\\n offsetX: n,\\n offsetY: i,\\n dontFlip: r\\n });\\n }\\n getAnnotations() {\\n let {\\n intent: t = \\"display\\"\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n const e = this._transport.getRenderingIntent(t);\\n return this._transport.getAnnotations(this._pageIndex, e.renderingIntent);\\n }\\n getJSActions() {\\n return this._transport.getPageJSActions(this._pageIndex);\\n }\\n get filterFactory() {\\n return this._transport.filterFactory;\\n }\\n get isPureXfa() {\\n return (0, _util.shadow)(this, \\"isPureXfa\\", !!this._transport._htmlForXfa);\\n }\\n async getXfa() {\\n var _this$_transport$_htm;\\n return ((_this$_transport$_htm = this._transport._htmlForXfa) === null || _this$_transport$_htm === void 0 ? void 0 : _this$_transport$_htm.children[this._pageIndex]) || null;\\n }\\n render(t) {\\n var _this$_stats, _u;\\n let {\\n canvasContext: e,\\n viewport: n,\\n intent: i = \\"display\\",\\n annotationMode: r = _util.AnnotationMode.ENABLE,\\n transform: s = null,\\n background: a = null,\\n optionalContentConfigPromise: o = null,\\n annotationCanvasMap: l = null,\\n pageColors: c = null,\\n printAnnotationStorage: h = null\\n } = t;\\n (_this$_stats = this._stats) === null || _this$_stats === void 0 ? void 0 : _this$_stats.time(\\"Overall\\");\\n const d = this._transport.getRenderingIntent(i, r, h);\\n _classPrivateFieldSet(this, _i, !1);\\n _classPrivateMethodGet(this, _r, _r2).call(this);\\n o || (o = this._transport.getOptionalContentConfig());\\n let u = this._intentStates.get(d.cacheKey);\\n if (!u) {\\n u = Object.create(null);\\n this._intentStates.set(d.cacheKey, u);\\n }\\n if (u.streamReaderCancelTimeout) {\\n clearTimeout(u.streamReaderCancelTimeout);\\n u.streamReaderCancelTimeout = null;\\n }\\n const p = !!(d.renderingIntent & _util.RenderingIntentFlag.PRINT);\\n if (!u.displayReadyCapability) {\\n var _this$_stats2;\\n u.displayReadyCapability = new _util.PromiseCapability();\\n u.operatorList = {\\n fnArray: [],\\n argsArray: [],\\n lastChunk: !1,\\n separateAnnots: null\\n };\\n (_this$_stats2 = this._stats) === null || _this$_stats2 === void 0 ? void 0 : _this$_stats2.time(\\"Page Request\\");\\n this._pumpOperatorList(d);\\n }\\n const complete = t => {\\n var _this$_stats3, _this$_stats4;\\n u.renderTasks.delete(f);\\n (this._maybeCleanupAfterRender || p) && _classPrivateFieldSet(this, _i, !0);\\n _classPrivateMethodGet(this, _s, _s2).call(this, !p);\\n if (t) {\\n f.capability.reject(t);\\n this._abortOperatorList({\\n intentState: u,\\n reason: t instanceof Error ? t : new Error(t)\\n });\\n } else f.capability.resolve();\\n (_this$_stats3 = this._stats) === null || _this$_stats3 === void 0 ? void 0 : _this$_stats3.timeEnd(\\"Rendering\\");\\n (_this$_stats4 = this._stats) === null || _this$_stats4 === void 0 ? void 0 : _this$_stats4.timeEnd(\\"Overall\\");\\n },\\n f = new InternalRenderTask({\\n callback: complete,\\n params: {\\n canvasContext: e,\\n viewport: n,\\n transform: s,\\n background: a\\n },\\n objs: this.objs,\\n commonObjs: this.commonObjs,\\n annotationCanvasMap: l,\\n operatorList: u.operatorList,\\n pageIndex: this._pageIndex,\\n canvasFactory: this._transport.canvasFactory,\\n filterFactory: this._transport.filterFactory,\\n useRequestAnimationFrame: !p,\\n pdfBug: this._pdfBug,\\n pageColors: c\\n });\\n ((_u = u).renderTasks || (_u.renderTasks = new Set())).add(f);\\n const g = f.task;\\n Promise.all([u.displayReadyCapability.promise, o]).then(t => {\\n let [e, n] = t;\\n if (this.destroyed) complete();else {\\n var _this$_stats5;\\n (_this$_stats5 = this._stats) === null || _this$_stats5 === void 0 ? void 0 : _this$_stats5.time(\\"Rendering\\");\\n f.initializeGraphics({\\n transparency: e,\\n optionalContentConfig: n\\n });\\n f.operatorListChanged();\\n }\\n }).catch(complete);\\n return g;\\n }\\n getOperatorList() {\\n let {\\n intent: t = \\"display\\",\\n annotationMode: e = _util.AnnotationMode.ENABLE,\\n printAnnotationStorage: n = null\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n const i = this._transport.getRenderingIntent(t, e, n, !0);\\n let r,\\n s = this._intentStates.get(i.cacheKey);\\n if (!s) {\\n s = Object.create(null);\\n this._intentStates.set(i.cacheKey, s);\\n }\\n if (!s.opListReadCapability) {\\n var _s3, _this$_stats6;\\n r = Object.create(null);\\n r.operatorListChanged = function operatorListChanged() {\\n if (s.operatorList.lastChunk) {\\n s.opListReadCapability.resolve(s.operatorList);\\n s.renderTasks.delete(r);\\n }\\n };\\n s.opListReadCapability = new _util.PromiseCapability();\\n ((_s3 = s).renderTasks || (_s3.renderTasks = new Set())).add(r);\\n s.operatorList = {\\n fnArray: [],\\n argsArray: [],\\n lastChunk: !1,\\n separateAnnots: null\\n };\\n (_this$_stats6 = this._stats) === null || _this$_stats6 === void 0 ? void 0 : _this$_stats6.time(\\"Page Request\\");\\n this._pumpOperatorList(i);\\n }\\n return s.opListReadCapability.promise;\\n }\\n streamTextContent() {\\n let {\\n includeMarkedContent: t = !1,\\n disableNormalization: e = !1\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n return this._transport.messageHandler.sendWithStream(\\"GetTextContent\\", {\\n pageIndex: this._pageIndex,\\n includeMarkedContent: !0 === t,\\n disableNormalization: !0 === e\\n }, {\\n highWaterMark: 100,\\n size: t => t.items.length\\n });\\n }\\n getTextContent() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n if (this._transport._htmlForXfa) return this.getXfa().then(t => _xfa_text.XfaText.textContent(t));\\n const e = this.streamTextContent(t);\\n return new Promise(function (t, n) {\\n const i = e.getReader(),\\n r = {\\n items: [],\\n styles: Object.create(null)\\n };\\n !function pump() {\\n i.read().then(function (e) {\\n let {\\n value: n,\\n done: i\\n } = e;\\n if (i) t(r);else {\\n Object.assign(r.styles, n.styles);\\n r.items.push(...n.items);\\n pump();\\n }\\n }, n);\\n }();\\n });\\n }\\n getStructTree() {\\n return this._transport.getStructTree(this._pageIndex);\\n }\\n _destroy() {\\n this.destroyed = !0;\\n const t = [];\\n for (const e of this._intentStates.values()) {\\n this._abortOperatorList({\\n intentState: e,\\n reason: new Error(\\"Page was destroyed.\\"),\\n force: !0\\n });\\n if (!e.opListReadCapability) for (const n of e.renderTasks) {\\n t.push(n.completed);\\n n.cancel();\\n }\\n }\\n this.objs.clear();\\n _classPrivateFieldSet(this, _i, !1);\\n _classPrivateMethodGet(this, _r, _r2).call(this);\\n return Promise.all(t);\\n }\\n cleanup() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n _classPrivateFieldSet(this, _i, !0);\\n const e = _classPrivateMethodGet(this, _s, _s2).call(this, !1);\\n t && e && this._stats && (this._stats = new _display_utils.StatTimer());\\n return e;\\n }\\n _startRenderPage(t, e) {\\n const n = this._intentStates.get(e);\\n if (n) {\\n var _this$_stats7, _n$displayReadyCapabi;\\n (_this$_stats7 = this._stats) === null || _this$_stats7 === void 0 ? void 0 : _this$_stats7.timeEnd(\\"Page Request\\");\\n (_n$displayReadyCapabi = n.displayReadyCapability) === null || _n$displayReadyCapabi === void 0 ? void 0 : _n$displayReadyCapabi.resolve(t);\\n }\\n }\\n _renderPageChunk(t, e) {\\n for (let n = 0, i = t.length; n < i; n++) {\\n e.operatorList.fnArray.push(t.fnArray[n]);\\n e.operatorList.argsArray.push(t.argsArray[n]);\\n }\\n e.operatorList.lastChunk = t.lastChunk;\\n e.operatorList.separateAnnots = t.separateAnnots;\\n for (const t of e.renderTasks) t.operatorListChanged();\\n t.lastChunk && _classPrivateMethodGet(this, _s, _s2).call(this, !0);\\n }\\n _pumpOperatorList(t) {\\n let {\\n renderingIntent: e,\\n cacheKey: n,\\n annotationStorageSerializable: i\\n } = t;\\n const {\\n map: r,\\n transfers: s\\n } = i,\\n a = this._transport.messageHandler.sendWithStream(\\"GetOperatorList\\", {\\n pageIndex: this._pageIndex,\\n intent: e,\\n cacheKey: n,\\n annotationStorage: r\\n }, s).getReader(),\\n o = this._intentStates.get(n);\\n o.streamReader = a;\\n const pump = () => {\\n a.read().then(t => {\\n let {\\n value: e,\\n done: n\\n } = t;\\n if (n) o.streamReader = null;else if (!this._transport.destroyed) {\\n this._renderPageChunk(e, o);\\n pump();\\n }\\n }, t => {\\n o.streamReader = null;\\n if (!this._transport.destroyed) {\\n if (o.operatorList) {\\n o.operatorList.lastChunk = !0;\\n for (const t of o.renderTasks) t.operatorListChanged();\\n _classPrivateMethodGet(this, _s, _s2).call(this, !0);\\n }\\n if (o.displayReadyCapability) o.displayReadyCapability.reject(t);else {\\n if (!o.opListReadCapability) throw t;\\n o.opListReadCapability.reject(t);\\n }\\n }\\n });\\n };\\n pump();\\n }\\n _abortOperatorList(t) {\\n let {\\n intentState: e,\\n reason: n,\\n force: i = !1\\n } = t;\\n if (e.streamReader) {\\n if (e.streamReaderCancelTimeout) {\\n clearTimeout(e.streamReaderCancelTimeout);\\n e.streamReaderCancelTimeout = null;\\n }\\n if (!i) {\\n if (e.renderTasks.size > 0) return;\\n if (n instanceof _display_utils.RenderingCancelledException) {\\n let t = RENDERING_CANCELLED_TIMEOUT;\\n n.extraDelay > 0 && n.extraDelay < 1e3 && (t += n.extraDelay);\\n e.streamReaderCancelTimeout = setTimeout(() => {\\n e.streamReaderCancelTimeout = null;\\n this._abortOperatorList({\\n intentState: e,\\n reason: n,\\n force: !0\\n });\\n }, t);\\n return;\\n }\\n }\\n e.streamReader.cancel(new _util.AbortException(n.message)).catch(() => {});\\n e.streamReader = null;\\n if (!this._transport.destroyed) {\\n for (const [t, n] of this._intentStates) if (n === e) {\\n this._intentStates.delete(t);\\n break;\\n }\\n this.cleanup();\\n }\\n }\\n }\\n get stats() {\\n return this._stats;\\n }\\n }\\n function _s2() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n _classPrivateMethodGet(this, _r, _r2).call(this);\\n if (!_classPrivateFieldGet(this, _i) || this.destroyed) return !1;\\n if (t) {\\n _classPrivateFieldSet(this, _n, setTimeout(() => {\\n _classPrivateFieldSet(this, _n, null);\\n _classPrivateMethodGet(this, _s, _s2).call(this, !1);\\n }, DELAYED_CLEANUP_TIMEOUT));\\n return !1;\\n }\\n for (const {\\n renderTasks: t,\\n operatorList: e\\n } of this._intentStates.values()) if (t.size > 0 || !e.lastChunk) return !1;\\n this._intentStates.clear();\\n this.objs.clear();\\n _classPrivateFieldSet(this, _i, !1);\\n return !0;\\n }\\n function _r2() {\\n if (_classPrivateFieldGet(this, _n)) {\\n clearTimeout(_classPrivateFieldGet(this, _n));\\n _classPrivateFieldSet(this, _n, null);\\n }\\n }\\n exports.PDFPageProxy = PDFPageProxy;\\n var _a = /*#__PURE__*/new WeakMap();\\n var _o = /*#__PURE__*/new WeakMap();\\n class LoopbackPort {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _a, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _o, {\\n writable: true,\\n value: Promise.resolve()\\n });\\n }\\n postMessage(t, e) {\\n const n = {\\n data: structuredClone(t, null)\\n };\\n _classPrivateFieldGet(this, _o).then(() => {\\n for (const t of _classPrivateFieldGet(this, _a)) t.call(this, n);\\n });\\n }\\n addEventListener(t, e) {\\n _classPrivateFieldGet(this, _a).add(e);\\n }\\n removeEventListener(t, e) {\\n _classPrivateFieldGet(this, _a).delete(e);\\n }\\n terminate() {\\n _classPrivateFieldGet(this, _a).clear();\\n }\\n }\\n exports.LoopbackPort = LoopbackPort;\\n const PDFWorkerUtil = {\\n isWorkerDisabled: !1,\\n fallbackWorkerSrc: null,\\n fakeWorkerId: 0\\n };\\n exports.PDFWorkerUtil = PDFWorkerUtil;\\n if (_util.isNodeJS && \\"function\\" == \\"function\\") {\\n PDFWorkerUtil.isWorkerDisabled = !0;\\n PDFWorkerUtil.fallbackWorkerSrc = \\"./pdf.worker.js\\";\\n } else if (\\"object\\" == typeof document) {\\n var _document;\\n const t = (_document = document) === null || _document === void 0 || (_document = _document.currentScript) === null || _document === void 0 ? void 0 : _document.src;\\n t && (PDFWorkerUtil.fallbackWorkerSrc = t.replace(/(\\\\.(?:min\\\\.)?js)(\\\\?.*)?$/i, \\".worker$1$2\\"));\\n }\\n PDFWorkerUtil.isSameOrigin = function (t, e) {\\n let n;\\n try {\\n n = new URL(t);\\n if (!n.origin || \\"null\\" === n.origin) return !1;\\n } catch (_unused5) {\\n return !1;\\n }\\n const i = new URL(e, n);\\n return n.origin === i.origin;\\n };\\n PDFWorkerUtil.createCDNWrapper = function (t) {\\n const e = \\"importScripts(\\\\\\"\\".concat(t, \\"\\\\\\");\\");\\n return URL.createObjectURL(new Blob([e]));\\n };\\n class PDFWorker {\\n constructor() {\\n let {\\n name: t = null,\\n port: e = null,\\n verbosity: n = (0, _util.getVerbosityLevel)()\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n if (e && _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).has(e)) throw new Error(\\"Cannot use more than one PDFWorker per port.\\");\\n this.name = t;\\n this.destroyed = !1;\\n this.verbosity = n;\\n this._readyCapability = new _util.PromiseCapability();\\n this._port = null;\\n this._webWorker = null;\\n this._messageHandler = null;\\n if (e) {\\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).set(e, this);\\n this._initializeFromPort(e);\\n } else this._initialize();\\n }\\n get promise() {\\n return this._readyCapability.promise;\\n }\\n get port() {\\n return this._port;\\n }\\n get messageHandler() {\\n return this._messageHandler;\\n }\\n _initializeFromPort(t) {\\n this._port = t;\\n this._messageHandler = new _message_handler.MessageHandler(\\"main\\", \\"worker\\", t);\\n this._messageHandler.on(\\"ready\\", function () {});\\n this._readyCapability.resolve();\\n this._messageHandler.send(\\"configure\\", {\\n verbosity: this.verbosity\\n });\\n }\\n _initialize() {\\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\\n let {\\n workerSrc: t\\n } = PDFWorker;\\n try {\\n PDFWorkerUtil.isSameOrigin(window.location.href, t) || (t = PDFWorkerUtil.createCDNWrapper(new URL(t, window.location).href));\\n const e = new Worker(t),\\n n = new _message_handler.MessageHandler(\\"main\\", \\"worker\\", e),\\n terminateEarly = () => {\\n e.removeEventListener(\\"error\\", onWorkerError);\\n n.destroy();\\n e.terminate();\\n this.destroyed ? this._readyCapability.reject(new Error(\\"Worker was destroyed\\")) : this._setupFakeWorker();\\n },\\n onWorkerError = () => {\\n this._webWorker || terminateEarly();\\n };\\n e.addEventListener(\\"error\\", onWorkerError);\\n n.on(\\"test\\", t => {\\n e.removeEventListener(\\"error\\", onWorkerError);\\n if (this.destroyed) terminateEarly();else if (t) {\\n this._messageHandler = n;\\n this._port = e;\\n this._webWorker = e;\\n this._readyCapability.resolve();\\n n.send(\\"configure\\", {\\n verbosity: this.verbosity\\n });\\n } else {\\n this._setupFakeWorker();\\n n.destroy();\\n e.terminate();\\n }\\n });\\n n.on(\\"ready\\", t => {\\n e.removeEventListener(\\"error\\", onWorkerError);\\n if (this.destroyed) terminateEarly();else try {\\n sendTest();\\n } catch (_unused6) {\\n this._setupFakeWorker();\\n }\\n });\\n const sendTest = () => {\\n const t = new Uint8Array();\\n n.send(\\"test\\", t, [t.buffer]);\\n };\\n sendTest();\\n return;\\n } catch (_unused7) {\\n (0, _util.info)(\\"The worker has been disabled.\\");\\n }\\n }\\n this._setupFakeWorker();\\n }\\n _setupFakeWorker() {\\n if (!PDFWorkerUtil.isWorkerDisabled) {\\n (0, _util.warn)(\\"Setting up fake worker.\\");\\n PDFWorkerUtil.isWorkerDisabled = !0;\\n }\\n PDFWorker._setupFakeWorkerGlobal.then(t => {\\n if (this.destroyed) {\\n this._readyCapability.reject(new Error(\\"Worker was destroyed\\"));\\n return;\\n }\\n const e = new LoopbackPort();\\n this._port = e;\\n const n = \\"fake\\" + PDFWorkerUtil.fakeWorkerId++,\\n i = new _message_handler.MessageHandler(n + \\"_worker\\", n, e);\\n t.setup(i, e);\\n const r = new _message_handler.MessageHandler(n, n + \\"_worker\\", e);\\n this._messageHandler = r;\\n this._readyCapability.resolve();\\n r.send(\\"configure\\", {\\n verbosity: this.verbosity\\n });\\n }).catch(t => {\\n this._readyCapability.reject(new Error(\\"Setting up fake worker failed: \\\\\\"\\".concat(t.message, \\"\\\\\\".\\")));\\n });\\n }\\n destroy() {\\n this.destroyed = !0;\\n if (this._webWorker) {\\n this._webWorker.terminate();\\n this._webWorker = null;\\n }\\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).delete(this._port);\\n this._port = null;\\n if (this._messageHandler) {\\n this._messageHandler.destroy();\\n this._messageHandler = null;\\n }\\n }\\n static fromPort(t) {\\n if (!(t !== null && t !== void 0 && t.port)) throw new Error(\\"PDFWorker.fromPort - invalid method signature.\\");\\n return _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).has(t.port) ? _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).get(t.port) : new PDFWorker(t);\\n }\\n static get workerSrc() {\\n if (_worker_options.GlobalWorkerOptions.workerSrc) return _worker_options.GlobalWorkerOptions.workerSrc;\\n if (null !== PDFWorkerUtil.fallbackWorkerSrc) {\\n _util.isNodeJS || (0, _display_utils.deprecated)('No \\"GlobalWorkerOptions.workerSrc\\" specified.');\\n return PDFWorkerUtil.fallbackWorkerSrc;\\n }\\n throw new Error('No \\"GlobalWorkerOptions.workerSrc\\" specified.');\\n }\\n static get _mainThreadWorkerMessageHandler() {\\n try {\\n var _globalThis$pdfjsWork;\\n return ((_globalThis$pdfjsWork = globalThis.pdfjsWorker) === null || _globalThis$pdfjsWork === void 0 ? void 0 : _globalThis$pdfjsWork.WorkerMessageHandler) || null;\\n } catch (_unused8) {\\n return null;\\n }\\n }\\n static get _setupFakeWorkerGlobal() {\\n const loader = async () => {\\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\\n if (mainWorkerMessageHandler) return mainWorkerMessageHandler;\\n if (_util.isNodeJS && \\"function\\" == \\"function\\") {\\n const worker = eval(\\"require\\")(this.workerSrc);\\n return worker.WorkerMessageHandler;\\n }\\n await (0, _display_utils.loadScript)(this.workerSrc);\\n return window.pdfjsWorker.WorkerMessageHandler;\\n };\\n return (0, _util.shadow)(this, \\"_setupFakeWorkerGlobal\\", loader());\\n }\\n }\\n var _l = {\\n writable: true,\\n value: new WeakMap()\\n };\\n exports.PDFWorker = PDFWorker;\\n var _c = /*#__PURE__*/new WeakMap();\\n var _h = /*#__PURE__*/new WeakMap();\\n var _d = /*#__PURE__*/new WeakMap();\\n var _u2 = /*#__PURE__*/new WeakMap();\\n var _p = /*#__PURE__*/new WeakSet();\\n class WorkerTransport {\\n constructor(_t3, _e3, _n2, _i2, r) {\\n _classPrivateMethodInitSpec(this, _p);\\n _classPrivateFieldInitSpec(this, _c, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _h, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _d, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _u2, {\\n writable: true,\\n value: null\\n });\\n this.messageHandler = _t3;\\n this.loadingTask = _e3;\\n this.commonObjs = new PDFObjects();\\n this.fontLoader = new _font_loader.FontLoader({\\n ownerDocument: _i2.ownerDocument,\\n styleElement: _i2.styleElement\\n });\\n this._params = _i2;\\n this.canvasFactory = r.canvasFactory;\\n this.filterFactory = r.filterFactory;\\n this.cMapReaderFactory = r.cMapReaderFactory;\\n this.standardFontDataFactory = r.standardFontDataFactory;\\n this.destroyed = !1;\\n this.destroyCapability = null;\\n this._networkStream = _n2;\\n this._fullReader = null;\\n this._lastProgress = null;\\n this.downloadInfoCapability = new _util.PromiseCapability();\\n this.setupMessageHandler();\\n }\\n get annotationStorage() {\\n return (0, _util.shadow)(this, \\"annotationStorage\\", new _annotation_storage.AnnotationStorage());\\n }\\n getRenderingIntent(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _util.AnnotationMode.ENABLE,\\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null,\\n i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],\\n r = _util.RenderingIntentFlag.DISPLAY,\\n s = _annotation_storage.SerializableEmpty;\\n switch (t) {\\n case \\"any\\":\\n r = _util.RenderingIntentFlag.ANY;\\n break;\\n case \\"display\\":\\n break;\\n case \\"print\\":\\n r = _util.RenderingIntentFlag.PRINT;\\n break;\\n default:\\n (0, _util.warn)(\\"getRenderingIntent - invalid intent: \\".concat(t));\\n }\\n switch (e) {\\n case _util.AnnotationMode.DISABLE:\\n r += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\\n break;\\n case _util.AnnotationMode.ENABLE:\\n break;\\n case _util.AnnotationMode.ENABLE_FORMS:\\n r += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\\n break;\\n case _util.AnnotationMode.ENABLE_STORAGE:\\n r += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\\n s = (r & _util.RenderingIntentFlag.PRINT && n instanceof _annotation_storage.PrintAnnotationStorage ? n : this.annotationStorage).serializable;\\n break;\\n default:\\n (0, _util.warn)(\\"getRenderingIntent - invalid annotationMode: \\".concat(e));\\n }\\n i && (r += _util.RenderingIntentFlag.OPLIST);\\n return {\\n renderingIntent: r,\\n cacheKey: \\"\\".concat(r, \\"_\\").concat(s.hash),\\n annotationStorageSerializable: s\\n };\\n }\\n destroy() {\\n var _classPrivateFieldGet2;\\n if (this.destroyCapability) return this.destroyCapability.promise;\\n this.destroyed = !0;\\n this.destroyCapability = new _util.PromiseCapability();\\n (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _u2)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.reject(new Error(\\"Worker was destroyed during onPassword callback\\"));\\n const t = [];\\n for (const e of _classPrivateFieldGet(this, _h).values()) t.push(e._destroy());\\n _classPrivateFieldGet(this, _h).clear();\\n _classPrivateFieldGet(this, _d).clear();\\n this.hasOwnProperty(\\"annotationStorage\\") && this.annotationStorage.resetModified();\\n const e = this.messageHandler.sendWithPromise(\\"Terminate\\", null);\\n t.push(e);\\n Promise.all(t).then(() => {\\n this.commonObjs.clear();\\n this.fontLoader.clear();\\n _classPrivateFieldGet(this, _c).clear();\\n this.filterFactory.destroy();\\n this._networkStream && this._networkStream.cancelAllRequests(new _util.AbortException(\\"Worker was terminated.\\"));\\n if (this.messageHandler) {\\n this.messageHandler.destroy();\\n this.messageHandler = null;\\n }\\n this.destroyCapability.resolve();\\n }, this.destroyCapability.reject);\\n return this.destroyCapability.promise;\\n }\\n setupMessageHandler() {\\n const {\\n messageHandler: t,\\n loadingTask: e\\n } = this;\\n t.on(\\"GetReader\\", (t, e) => {\\n (0, _util.assert)(this._networkStream, \\"GetReader - no \`IPDFStream\` instance available.\\");\\n this._fullReader = this._networkStream.getFullReader();\\n this._fullReader.onProgress = t => {\\n this._lastProgress = {\\n loaded: t.loaded,\\n total: t.total\\n };\\n };\\n e.onPull = () => {\\n this._fullReader.read().then(function (t) {\\n let {\\n value: n,\\n done: i\\n } = t;\\n if (i) e.close();else {\\n (0, _util.assert)(n instanceof ArrayBuffer, \\"GetReader - expected an ArrayBuffer.\\");\\n e.enqueue(new Uint8Array(n), 1, [n]);\\n }\\n }).catch(t => {\\n e.error(t);\\n });\\n };\\n e.onCancel = t => {\\n this._fullReader.cancel(t);\\n e.ready.catch(t => {\\n if (!this.destroyed) throw t;\\n });\\n };\\n });\\n t.on(\\"ReaderHeadersReady\\", t => {\\n const n = new _util.PromiseCapability(),\\n i = this._fullReader;\\n i.headersReady.then(() => {\\n if (!i.isStreamingSupported || !i.isRangeSupported) {\\n var _e$onProgress;\\n this._lastProgress && ((_e$onProgress = e.onProgress) === null || _e$onProgress === void 0 ? void 0 : _e$onProgress.call(e, this._lastProgress));\\n i.onProgress = t => {\\n var _e$onProgress2;\\n (_e$onProgress2 = e.onProgress) === null || _e$onProgress2 === void 0 ? void 0 : _e$onProgress2.call(e, {\\n loaded: t.loaded,\\n total: t.total\\n });\\n };\\n }\\n n.resolve({\\n isStreamingSupported: i.isStreamingSupported,\\n isRangeSupported: i.isRangeSupported,\\n contentLength: i.contentLength\\n });\\n }, n.reject);\\n return n.promise;\\n });\\n t.on(\\"GetRangeReader\\", (t, e) => {\\n (0, _util.assert)(this._networkStream, \\"GetRangeReader - no \`IPDFStream\` instance available.\\");\\n const n = this._networkStream.getRangeReader(t.begin, t.end);\\n if (n) {\\n e.onPull = () => {\\n n.read().then(function (t) {\\n let {\\n value: n,\\n done: i\\n } = t;\\n if (i) e.close();else {\\n (0, _util.assert)(n instanceof ArrayBuffer, \\"GetRangeReader - expected an ArrayBuffer.\\");\\n e.enqueue(new Uint8Array(n), 1, [n]);\\n }\\n }).catch(t => {\\n e.error(t);\\n });\\n };\\n e.onCancel = t => {\\n n.cancel(t);\\n e.ready.catch(t => {\\n if (!this.destroyed) throw t;\\n });\\n };\\n } else e.close();\\n });\\n t.on(\\"GetDoc\\", t => {\\n let {\\n pdfInfo: n\\n } = t;\\n this._numPages = n.numPages;\\n this._htmlForXfa = n.htmlForXfa;\\n delete n.htmlForXfa;\\n e._capability.resolve(new PDFDocumentProxy(n, this));\\n });\\n t.on(\\"DocException\\", function (t) {\\n let n;\\n switch (t.name) {\\n case \\"PasswordException\\":\\n n = new _util.PasswordException(t.message, t.code);\\n break;\\n case \\"InvalidPDFException\\":\\n n = new _util.InvalidPDFException(t.message);\\n break;\\n case \\"MissingPDFException\\":\\n n = new _util.MissingPDFException(t.message);\\n break;\\n case \\"UnexpectedResponseException\\":\\n n = new _util.UnexpectedResponseException(t.message, t.status);\\n break;\\n case \\"UnknownErrorException\\":\\n n = new _util.UnknownErrorException(t.message, t.details);\\n break;\\n default:\\n (0, _util.unreachable)(\\"DocException - expected a valid Error.\\");\\n }\\n e._capability.reject(n);\\n });\\n t.on(\\"PasswordRequest\\", t => {\\n _classPrivateFieldSet(this, _u2, new _util.PromiseCapability());\\n if (e.onPassword) {\\n const updatePassword = t => {\\n t instanceof Error ? _classPrivateFieldGet(this, _u2).reject(t) : _classPrivateFieldGet(this, _u2).resolve({\\n password: t\\n });\\n };\\n try {\\n e.onPassword(updatePassword, t.code);\\n } catch (t) {\\n _classPrivateFieldGet(this, _u2).reject(t);\\n }\\n } else _classPrivateFieldGet(this, _u2).reject(new _util.PasswordException(t.message, t.code));\\n return _classPrivateFieldGet(this, _u2).promise;\\n });\\n t.on(\\"DataLoaded\\", t => {\\n var _e$onProgress3;\\n (_e$onProgress3 = e.onProgress) === null || _e$onProgress3 === void 0 ? void 0 : _e$onProgress3.call(e, {\\n loaded: t.length,\\n total: t.length\\n });\\n this.downloadInfoCapability.resolve(t);\\n });\\n t.on(\\"StartRenderPage\\", t => {\\n if (this.destroyed) return;\\n _classPrivateFieldGet(this, _h).get(t.pageIndex)._startRenderPage(t.transparency, t.cacheKey);\\n });\\n t.on(\\"commonobj\\", e => {\\n var _globalThis$FontInspe;\\n let [n, i, r] = e;\\n if (!this.destroyed && !this.commonObjs.has(n)) switch (i) {\\n case \\"Font\\":\\n const e = this._params;\\n if (\\"error\\" in r) {\\n const t = r.error;\\n (0, _util.warn)(\\"Error during font loading: \\".concat(t));\\n this.commonObjs.resolve(n, t);\\n break;\\n }\\n const s = e.pdfBug && (_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled ? (t, e) => globalThis.FontInspector.fontAdded(t, e) : null,\\n a = new _font_loader.FontFaceObject(r, {\\n isEvalSupported: e.isEvalSupported,\\n disableFontFace: e.disableFontFace,\\n ignoreErrors: e.ignoreErrors,\\n inspectFont: s\\n });\\n this.fontLoader.bind(a).catch(e => t.sendWithPromise(\\"FontFallback\\", {\\n id: n\\n })).finally(() => {\\n !e.fontExtraProperties && a.data && (a.data = null);\\n this.commonObjs.resolve(n, a);\\n });\\n break;\\n case \\"FontPath\\":\\n case \\"Image\\":\\n case \\"Pattern\\":\\n this.commonObjs.resolve(n, r);\\n break;\\n default:\\n throw new Error(\\"Got unknown common object type \\".concat(i));\\n }\\n });\\n t.on(\\"obj\\", t => {\\n let [e, n, i, r] = t;\\n if (this.destroyed) return;\\n const s = _classPrivateFieldGet(this, _h).get(n);\\n if (!s.objs.has(e)) switch (i) {\\n case \\"Image\\":\\n s.objs.resolve(e, r);\\n if (r) {\\n var _r$data;\\n let t;\\n if (r.bitmap) {\\n const {\\n width: e,\\n height: n\\n } = r;\\n t = e * n * 4;\\n } else t = ((_r$data = r.data) === null || _r$data === void 0 ? void 0 : _r$data.length) || 0;\\n t > _util.MAX_IMAGE_SIZE_TO_CACHE && (s._maybeCleanupAfterRender = !0);\\n }\\n break;\\n case \\"Pattern\\":\\n s.objs.resolve(e, r);\\n break;\\n default:\\n throw new Error(\\"Got unknown object type \\".concat(i));\\n }\\n });\\n t.on(\\"DocProgress\\", t => {\\n var _e$onProgress4;\\n this.destroyed || ((_e$onProgress4 = e.onProgress) === null || _e$onProgress4 === void 0 ? void 0 : _e$onProgress4.call(e, {\\n loaded: t.loaded,\\n total: t.total\\n }));\\n });\\n t.on(\\"FetchBuiltInCMap\\", t => this.destroyed ? Promise.reject(new Error(\\"Worker was destroyed.\\")) : this.cMapReaderFactory ? this.cMapReaderFactory.fetch(t) : Promise.reject(new Error(\\"CMapReaderFactory not initialized, see the \`useWorkerFetch\` parameter.\\")));\\n t.on(\\"FetchStandardFontData\\", t => this.destroyed ? Promise.reject(new Error(\\"Worker was destroyed.\\")) : this.standardFontDataFactory ? this.standardFontDataFactory.fetch(t) : Promise.reject(new Error(\\"StandardFontDataFactory not initialized, see the \`useWorkerFetch\` parameter.\\")));\\n }\\n getData() {\\n return this.messageHandler.sendWithPromise(\\"GetData\\", null);\\n }\\n saveDocument() {\\n var _this$_fullReader$fil, _this$_fullReader;\\n this.annotationStorage.size <= 0 && (0, _util.warn)(\\"saveDocument called while \`annotationStorage\` is empty, please use the getData-method instead.\\");\\n const {\\n map: t,\\n transfers: e\\n } = this.annotationStorage.serializable;\\n return this.messageHandler.sendWithPromise(\\"SaveDocument\\", {\\n isPureXfa: !!this._htmlForXfa,\\n numPages: this._numPages,\\n annotationStorage: t,\\n filename: (_this$_fullReader$fil = (_this$_fullReader = this._fullReader) === null || _this$_fullReader === void 0 ? void 0 : _this$_fullReader.filename) !== null && _this$_fullReader$fil !== void 0 ? _this$_fullReader$fil : null\\n }, e).finally(() => {\\n this.annotationStorage.resetModified();\\n });\\n }\\n getPage(t) {\\n if (!Number.isInteger(t) || t <= 0 || t > this._numPages) return Promise.reject(new Error(\\"Invalid page request.\\"));\\n const e = t - 1,\\n n = _classPrivateFieldGet(this, _d).get(e);\\n if (n) return n;\\n const i = this.messageHandler.sendWithPromise(\\"GetPage\\", {\\n pageIndex: e\\n }).then(t => {\\n if (this.destroyed) throw new Error(\\"Transport destroyed\\");\\n const n = new PDFPageProxy(e, t, this, this._params.pdfBug);\\n _classPrivateFieldGet(this, _h).set(e, n);\\n return n;\\n });\\n _classPrivateFieldGet(this, _d).set(e, i);\\n return i;\\n }\\n getPageIndex(t) {\\n 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\\", {\\n num: t.num,\\n gen: t.gen\\n });\\n }\\n getAnnotations(t, e) {\\n return this.messageHandler.sendWithPromise(\\"GetAnnotations\\", {\\n pageIndex: t,\\n intent: e\\n });\\n }\\n getFieldObjects() {\\n return _classPrivateMethodGet(this, _p, _p2).call(this, \\"GetFieldObjects\\");\\n }\\n hasJSActions() {\\n return _classPrivateMethodGet(this, _p, _p2).call(this, \\"HasJSActions\\");\\n }\\n getCalculationOrderIds() {\\n return this.messageHandler.sendWithPromise(\\"GetCalculationOrderIds\\", null);\\n }\\n getDestinations() {\\n return this.messageHandler.sendWithPromise(\\"GetDestinations\\", null);\\n }\\n getDestination(t) {\\n return \\"string\\" != typeof t ? Promise.reject(new Error(\\"Invalid destination request.\\")) : this.messageHandler.sendWithPromise(\\"GetDestination\\", {\\n id: t\\n });\\n }\\n getPageLabels() {\\n return this.messageHandler.sendWithPromise(\\"GetPageLabels\\", null);\\n }\\n getPageLayout() {\\n return this.messageHandler.sendWithPromise(\\"GetPageLayout\\", null);\\n }\\n getPageMode() {\\n return this.messageHandler.sendWithPromise(\\"GetPageMode\\", null);\\n }\\n getViewerPreferences() {\\n return this.messageHandler.sendWithPromise(\\"GetViewerPreferences\\", null);\\n }\\n getOpenAction() {\\n return this.messageHandler.sendWithPromise(\\"GetOpenAction\\", null);\\n }\\n getAttachments() {\\n return this.messageHandler.sendWithPromise(\\"GetAttachments\\", null);\\n }\\n getJavaScript() {\\n return this.messageHandler.sendWithPromise(\\"GetJavaScript\\", null);\\n }\\n getDocJSActions() {\\n return this.messageHandler.sendWithPromise(\\"GetDocJSActions\\", null);\\n }\\n getPageJSActions(t) {\\n return this.messageHandler.sendWithPromise(\\"GetPageJSActions\\", {\\n pageIndex: t\\n });\\n }\\n getStructTree(t) {\\n return this.messageHandler.sendWithPromise(\\"GetStructTree\\", {\\n pageIndex: t\\n });\\n }\\n getOutline() {\\n return this.messageHandler.sendWithPromise(\\"GetOutline\\", null);\\n }\\n getOptionalContentConfig() {\\n return this.messageHandler.sendWithPromise(\\"GetOptionalContentConfig\\", null).then(t => new _optional_content_config.OptionalContentConfig(t));\\n }\\n getPermissions() {\\n return this.messageHandler.sendWithPromise(\\"GetPermissions\\", null);\\n }\\n getMetadata() {\\n const t = \\"GetMetadata\\",\\n e = _classPrivateFieldGet(this, _c).get(t);\\n if (e) return e;\\n const n = this.messageHandler.sendWithPromise(t, null).then(t => {\\n var _this$_fullReader$fil2, _this$_fullReader2, _this$_fullReader$con, _this$_fullReader3;\\n return {\\n info: t[0],\\n metadata: t[1] ? new _metadata.Metadata(t[1]) : null,\\n contentDispositionFilename: (_this$_fullReader$fil2 = (_this$_fullReader2 = this._fullReader) === null || _this$_fullReader2 === void 0 ? void 0 : _this$_fullReader2.filename) !== null && _this$_fullReader$fil2 !== void 0 ? _this$_fullReader$fil2 : null,\\n contentLength: (_this$_fullReader$con = (_this$_fullReader3 = this._fullReader) === null || _this$_fullReader3 === void 0 ? void 0 : _this$_fullReader3.contentLength) !== null && _this$_fullReader$con !== void 0 ? _this$_fullReader$con : null\\n };\\n });\\n _classPrivateFieldGet(this, _c).set(t, n);\\n return n;\\n }\\n getMarkInfo() {\\n return this.messageHandler.sendWithPromise(\\"GetMarkInfo\\", null);\\n }\\n async startCleanup() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (!this.destroyed) {\\n await this.messageHandler.sendWithPromise(\\"Cleanup\\", null);\\n for (const t of _classPrivateFieldGet(this, _h).values()) {\\n if (!t.cleanup()) throw new Error(\\"startCleanup: Page \\".concat(t.pageNumber, \\" is currently rendering.\\"));\\n }\\n this.commonObjs.clear();\\n t || this.fontLoader.clear();\\n _classPrivateFieldGet(this, _c).clear();\\n this.filterFactory.destroy(!0);\\n }\\n }\\n get loadingParams() {\\n const {\\n disableAutoFetch: t,\\n enableXfa: e\\n } = this._params;\\n return (0, _util.shadow)(this, \\"loadingParams\\", {\\n disableAutoFetch: t,\\n enableXfa: e\\n });\\n }\\n }\\n function _p2(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = _classPrivateFieldGet(this, _c).get(t);\\n if (n) return n;\\n const i = this.messageHandler.sendWithPromise(t, e);\\n _classPrivateFieldGet(this, _c).set(t, i);\\n return i;\\n }\\n var _f = /*#__PURE__*/new WeakMap();\\n var _g = /*#__PURE__*/new WeakSet();\\n class PDFObjects {\\n constructor() {\\n _classPrivateMethodInitSpec(this, _g);\\n _classPrivateFieldInitSpec(this, _f, {\\n writable: true,\\n value: Object.create(null)\\n });\\n }\\n get(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n if (e) {\\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\\n n.capability.promise.then(() => e(n.data));\\n return null;\\n }\\n const n = _classPrivateFieldGet(this, _f)[t];\\n if (!(n !== null && n !== void 0 && n.capability.settled)) throw new Error(\\"Requesting object that isn't resolved yet \\".concat(t, \\".\\"));\\n return n.data;\\n }\\n has(t) {\\n const e = _classPrivateFieldGet(this, _f)[t];\\n return (e === null || e === void 0 ? void 0 : e.capability.settled) || !1;\\n }\\n resolve(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\\n n.data = e;\\n n.capability.resolve();\\n }\\n clear() {\\n for (const t in _classPrivateFieldGet(this, _f)) {\\n var _e$bitmap;\\n const {\\n data: e\\n } = _classPrivateFieldGet(this, _f)[t];\\n e === null || e === void 0 || (_e$bitmap = e.bitmap) === null || _e$bitmap === void 0 ? void 0 : _e$bitmap.close();\\n }\\n _classPrivateFieldSet(this, _f, Object.create(null));\\n }\\n }\\n function _g2(t) {\\n const e = _classPrivateFieldGet(this, _f)[t];\\n return e || (_classPrivateFieldGet(this, _f)[t] = {\\n capability: new _util.PromiseCapability(),\\n data: null\\n });\\n }\\n var _m = /*#__PURE__*/new WeakMap();\\n class RenderTask {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _m, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldSet(this, _m, t);\\n this.onContinue = null;\\n }\\n get promise() {\\n return _classPrivateFieldGet(this, _m).capability.promise;\\n }\\n cancel() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\\n _classPrivateFieldGet(this, _m).cancel(null, t);\\n }\\n get separateAnnots() {\\n const {\\n separateAnnots: t\\n } = _classPrivateFieldGet(this, _m).operatorList;\\n if (!t) return !1;\\n const {\\n annotationCanvasMap: e\\n } = _classPrivateFieldGet(this, _m);\\n return t.form || t.canvas && (e === null || e === void 0 ? void 0 : e.size) > 0;\\n }\\n }\\n exports.RenderTask = RenderTask;\\n class InternalRenderTask {\\n constructor(t) {\\n let {\\n callback: e,\\n params: n,\\n objs: i,\\n commonObjs: r,\\n annotationCanvasMap: s,\\n operatorList: a,\\n pageIndex: o,\\n canvasFactory: l,\\n filterFactory: c,\\n useRequestAnimationFrame: h = !1,\\n pdfBug: d = !1,\\n pageColors: u = null\\n } = t;\\n this.callback = e;\\n this.params = n;\\n this.objs = i;\\n this.commonObjs = r;\\n this.annotationCanvasMap = s;\\n this.operatorListIdx = null;\\n this.operatorList = a;\\n this._pageIndex = o;\\n this.canvasFactory = l;\\n this.filterFactory = c;\\n this._pdfBug = d;\\n this.pageColors = u;\\n this.running = !1;\\n this.graphicsReadyCallback = null;\\n this.graphicsReady = !1;\\n this._useRequestAnimationFrame = !0 === h && \\"undefined\\" != typeof window;\\n this.cancelled = !1;\\n this.capability = new _util.PromiseCapability();\\n this.task = new RenderTask(this);\\n this._cancelBound = this.cancel.bind(this);\\n this._continueBound = this._continue.bind(this);\\n this._scheduleNextBound = this._scheduleNext.bind(this);\\n this._nextBound = this._next.bind(this);\\n this._canvas = n.canvasContext.canvas;\\n }\\n get completed() {\\n return this.capability.promise.catch(function () {});\\n }\\n initializeGraphics(t) {\\n var _globalThis$StepperMa, _this$graphicsReadyCa;\\n let {\\n transparency: e = !1,\\n optionalContentConfig: n\\n } = t;\\n if (this.cancelled) return;\\n if (this._canvas) {\\n if (_classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).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.\\");\\n _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).add(this._canvas);\\n }\\n if (this._pdfBug && (_globalThis$StepperMa = globalThis.StepperManager) !== null && _globalThis$StepperMa !== void 0 && _globalThis$StepperMa.enabled) {\\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\\n this.stepper.init(this.operatorList);\\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\\n }\\n const {\\n canvasContext: i,\\n viewport: r,\\n transform: s,\\n background: a\\n } = this.params;\\n this.gfx = new _canvas.CanvasGraphics(i, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\\n optionalContentConfig: n\\n }, this.annotationCanvasMap, this.pageColors);\\n this.gfx.beginDrawing({\\n transform: s,\\n viewport: r,\\n transparency: e,\\n background: a\\n });\\n this.operatorListIdx = 0;\\n this.graphicsReady = !0;\\n (_this$graphicsReadyCa = this.graphicsReadyCallback) === null || _this$graphicsReadyCa === void 0 ? void 0 : _this$graphicsReadyCa.call(this);\\n }\\n cancel() {\\n var _this$gfx;\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\\n this.running = !1;\\n this.cancelled = !0;\\n (_this$gfx = this.gfx) === null || _this$gfx === void 0 ? void 0 : _this$gfx.endDrawing();\\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\\n this.callback(t || new _display_utils.RenderingCancelledException(\\"Rendering cancelled, page \\".concat(this._pageIndex + 1), e));\\n }\\n operatorListChanged() {\\n if (this.graphicsReady) {\\n var _this$stepper;\\n (_this$stepper = this.stepper) === null || _this$stepper === void 0 ? void 0 : _this$stepper.updateOperatorList(this.operatorList);\\n this.running || this._continue();\\n } else this.graphicsReadyCallback || (this.graphicsReadyCallback = this._continueBound);\\n }\\n _continue() {\\n this.running = !0;\\n this.cancelled || (this.task.onContinue ? this.task.onContinue(this._scheduleNextBound) : this._scheduleNext());\\n }\\n _scheduleNext() {\\n this._useRequestAnimationFrame ? window.requestAnimationFrame(() => {\\n this._nextBound().catch(this._cancelBound);\\n }) : Promise.resolve().then(this._nextBound).catch(this._cancelBound);\\n }\\n async _next() {\\n if (!this.cancelled) {\\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\\n this.running = !1;\\n if (this.operatorList.lastChunk) {\\n this.gfx.endDrawing(this.pageColors);\\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\\n this.callback();\\n }\\n }\\n }\\n }\\n }\\n var _b = {\\n writable: true,\\n value: new WeakSet()\\n };\\n const version = \\"3.9.179\\";\\n exports.version = version;\\n const build = \\"1ef6fbc52\\";\\n exports.build = build;\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(126);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"difference\\")\\n }, {\\n difference: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128),\\n s = n(129),\\n a = n(132),\\n o = n(133),\\n l = n(130),\\n c = n(131),\\n h = r.has,\\n d = r.remove;\\n t.exports = function difference(t) {\\n var e = i(this),\\n n = o(t),\\n r = s(e);\\n a(e) <= n.size ? l(e, function (t) {\\n n.includes(t) && d(r, t);\\n }) : c(n.getIterator(), function (t) {\\n h(e, t) && d(r, t);\\n });\\n return r;\\n };\\n }, (t, e, n) => {\\n var i = n(128).has;\\n t.exports = function (t) {\\n i(t);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = Set.prototype;\\n t.exports = {\\n Set: Set,\\n add: i(r.add),\\n has: i(r.has),\\n remove: i(r.delete),\\n proto: r\\n };\\n }, (t, e, n) => {\\n var i = n(128),\\n r = n(130),\\n s = i.Set,\\n a = i.add;\\n t.exports = function (t) {\\n var e = new s();\\n r(t, function (t) {\\n a(e, t);\\n });\\n return e;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(131),\\n s = n(128),\\n a = s.Set,\\n o = s.proto,\\n l = i(o.forEach),\\n c = i(o.keys),\\n h = c(new a()).next;\\n t.exports = function (t, e, n) {\\n return n ? r(c(t), e, h) : l(t, e);\\n };\\n }, (t, e, n) => {\\n var i = n(8);\\n t.exports = function (t, e, n) {\\n for (var r, s, a = n || t.next; !(r = i(a, t)).done;) if (void 0 !== (s = e(r.value))) return s;\\n };\\n }, (t, e, n) => {\\n var i = n(72),\\n r = n(128);\\n t.exports = i(r.proto, \\"size\\", \\"get\\") || function (t) {\\n return t.size;\\n };\\n }, (t, e, n) => {\\n var i = n(31),\\n r = n(47),\\n s = n(8),\\n a = n(62),\\n o = TypeError,\\n l = Math.max,\\n SetRecord = function SetRecord(t, e, n, i) {\\n this.set = t;\\n this.size = e;\\n this.has = n;\\n this.keys = i;\\n };\\n SetRecord.prototype = {\\n getIterator: function getIterator() {\\n return r(s(this.keys, this.set));\\n },\\n includes: function includes(t) {\\n return s(this.has, this.set, t);\\n }\\n };\\n t.exports = function (t) {\\n r(t);\\n var e = +t.size;\\n if (e != e) throw o(\\"Invalid size\\");\\n return new SetRecord(t, l(a(e), 0), i(t.has), i(t.keys));\\n };\\n }, (t, e, n) => {\\n var i = n(24);\\n t.exports = function (t) {\\n try {\\n new (i(\\"Set\\"))()[t]({\\n size: 0,\\n has: function has() {\\n return !1;\\n },\\n keys: function keys() {\\n return {\\n next: function next() {\\n return {\\n done: !0\\n };\\n }\\n };\\n }\\n });\\n return !0;\\n } catch (t) {\\n return !1;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(7),\\n s = n(136);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"intersection\\") || r(function () {\\n return \\"3,2\\" != Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])));\\n })\\n }, {\\n intersection: s\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128),\\n s = n(132),\\n a = n(133),\\n o = n(130),\\n l = n(131),\\n c = r.Set,\\n h = r.add,\\n d = r.has;\\n t.exports = function intersection(t) {\\n var e = i(this),\\n n = a(t),\\n r = new c();\\n s(e) > n.size ? l(n.getIterator(), function (t) {\\n d(e, t) && h(r, t);\\n }) : o(e, function (t) {\\n n.includes(t) && h(r, t);\\n });\\n return r;\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(138);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"isDisjointFrom\\")\\n }, {\\n isDisjointFrom: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128).has,\\n s = n(132),\\n a = n(133),\\n o = n(130),\\n l = n(131),\\n c = n(139);\\n t.exports = function isDisjointFrom(t) {\\n var e = i(this),\\n n = a(t);\\n if (s(e) <= n.size) return !1 !== o(e, function (t) {\\n if (n.includes(t)) return !1;\\n }, !0);\\n var h = n.getIterator();\\n return !1 !== l(h, function (t) {\\n if (r(e, t)) return c(h, \\"normal\\", !1);\\n });\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(47),\\n s = n(30);\\n t.exports = function (t, e, n) {\\n var a, o;\\n r(t);\\n try {\\n if (!(a = s(t, \\"return\\"))) {\\n if (\\"throw\\" === e) throw n;\\n return n;\\n }\\n a = i(a, t);\\n } catch (t) {\\n o = !0;\\n a = t;\\n }\\n if (\\"throw\\" === e) throw n;\\n if (o) throw a;\\n r(a);\\n return n;\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(141);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"isSubsetOf\\")\\n }, {\\n isSubsetOf: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(132),\\n s = n(130),\\n a = n(133);\\n t.exports = function isSubsetOf(t) {\\n var e = i(this),\\n n = a(t);\\n return !(r(e) > n.size) && !1 !== s(e, function (t) {\\n if (!n.includes(t)) return !1;\\n }, !0);\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(143);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"isSupersetOf\\")\\n }, {\\n isSupersetOf: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128).has,\\n s = n(132),\\n a = n(133),\\n o = n(131),\\n l = n(139);\\n t.exports = function isSupersetOf(t) {\\n var e = i(this),\\n n = a(t);\\n if (s(e) < n.size) return !1;\\n var c = n.getIterator();\\n return !1 !== o(c, function (t) {\\n if (!r(e, t)) return l(c, \\"normal\\", !1);\\n });\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(145);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"symmetricDifference\\")\\n }, {\\n symmetricDifference: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128),\\n s = n(129),\\n a = n(133),\\n o = n(131),\\n l = r.add,\\n c = r.has,\\n h = r.remove;\\n t.exports = function symmetricDifference(t) {\\n var e = i(this),\\n n = a(t).getIterator(),\\n r = s(e);\\n o(n, function (t) {\\n c(e, t) ? h(r, t) : l(r, t);\\n });\\n return r;\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(147);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"union\\")\\n }, {\\n union: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128).add,\\n s = n(129),\\n a = n(133),\\n o = n(131);\\n t.exports = function union(t) {\\n var e = i(this),\\n n = a(t).getIterator(),\\n l = s(e);\\n o(n, function (t) {\\n r(l, t);\\n });\\n return l;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(4),\\n s = n(24),\\n a = n(11),\\n o = n(45).f,\\n l = n(39),\\n c = n(149),\\n h = n(75),\\n d = n(76),\\n u = n(150),\\n p = n(82),\\n f = n(6),\\n g = n(36),\\n m = \\"DOMException\\",\\n b = s(\\"Error\\"),\\n v = s(m),\\n y = function DOMException() {\\n c(this, A);\\n var t = arguments.length,\\n e = d(t < 1 ? void 0 : arguments[0]),\\n n = d(t < 2 ? void 0 : arguments[1], \\"Error\\"),\\n i = new v(e, n),\\n r = b(e);\\n r.name = m;\\n o(i, \\"stack\\", a(1, p(r.stack, 1)));\\n h(i, this, y);\\n return i;\\n },\\n A = y.prototype = v.prototype,\\n _ = (\\"stack\\" in b(m)),\\n S = (\\"stack\\" in new v(1, 2)),\\n E = v && f && Object.getOwnPropertyDescriptor(r, m),\\n x = !(!E || E.writable && E.configurable),\\n w = _ && !x && !S;\\n i({\\n global: !0,\\n constructor: !0,\\n forced: g || w\\n }, {\\n DOMException: w ? y : v\\n });\\n var C = s(m),\\n T = C.prototype;\\n if (T.constructor !== C) {\\n g || o(T, \\"constructor\\", a(1, C));\\n for (var P in u) if (l(u, P)) {\\n var k = u[P],\\n M = k.s;\\n l(C, M) || o(C, M, a(6, k.c));\\n }\\n }\\n }, (t, e, n) => {\\n var i = n(25),\\n r = TypeError;\\n t.exports = function (t, e) {\\n if (i(e, t)) return t;\\n throw r(\\"Incorrect invocation\\");\\n };\\n }, t => {\\n t.exports = {\\n IndexSizeError: {\\n s: \\"INDEX_SIZE_ERR\\",\\n c: 1,\\n m: 1\\n },\\n DOMStringSizeError: {\\n s: \\"DOMSTRING_SIZE_ERR\\",\\n c: 2,\\n m: 0\\n },\\n HierarchyRequestError: {\\n s: \\"HIERARCHY_REQUEST_ERR\\",\\n c: 3,\\n m: 1\\n },\\n WrongDocumentError: {\\n s: \\"WRONG_DOCUMENT_ERR\\",\\n c: 4,\\n m: 1\\n },\\n InvalidCharacterError: {\\n s: \\"INVALID_CHARACTER_ERR\\",\\n c: 5,\\n m: 1\\n },\\n NoDataAllowedError: {\\n s: \\"NO_DATA_ALLOWED_ERR\\",\\n c: 6,\\n m: 0\\n },\\n NoModificationAllowedError: {\\n s: \\"NO_MODIFICATION_ALLOWED_ERR\\",\\n c: 7,\\n m: 1\\n },\\n NotFoundError: {\\n s: \\"NOT_FOUND_ERR\\",\\n c: 8,\\n m: 1\\n },\\n NotSupportedError: {\\n s: \\"NOT_SUPPORTED_ERR\\",\\n c: 9,\\n m: 1\\n },\\n InUseAttributeError: {\\n s: \\"INUSE_ATTRIBUTE_ERR\\",\\n c: 10,\\n m: 1\\n },\\n InvalidStateError: {\\n s: \\"INVALID_STATE_ERR\\",\\n c: 11,\\n m: 1\\n },\\n SyntaxError: {\\n s: \\"SYNTAX_ERR\\",\\n c: 12,\\n m: 1\\n },\\n InvalidModificationError: {\\n s: \\"INVALID_MODIFICATION_ERR\\",\\n c: 13,\\n m: 1\\n },\\n NamespaceError: {\\n s: \\"NAMESPACE_ERR\\",\\n c: 14,\\n m: 1\\n },\\n InvalidAccessError: {\\n s: \\"INVALID_ACCESS_ERR\\",\\n c: 15,\\n m: 1\\n },\\n ValidationError: {\\n s: \\"VALIDATION_ERR\\",\\n c: 16,\\n m: 0\\n },\\n TypeMismatchError: {\\n s: \\"TYPE_MISMATCH_ERR\\",\\n c: 17,\\n m: 1\\n },\\n SecurityError: {\\n s: \\"SECURITY_ERR\\",\\n c: 18,\\n m: 1\\n },\\n NetworkError: {\\n s: \\"NETWORK_ERR\\",\\n c: 19,\\n m: 1\\n },\\n AbortError: {\\n s: \\"ABORT_ERR\\",\\n c: 20,\\n m: 1\\n },\\n URLMismatchError: {\\n s: \\"URL_MISMATCH_ERR\\",\\n c: 21,\\n m: 1\\n },\\n QuotaExceededError: {\\n s: \\"QUOTA_EXCEEDED_ERR\\",\\n c: 22,\\n m: 1\\n },\\n TimeoutError: {\\n s: \\"TIMEOUT_ERR\\",\\n c: 23,\\n m: 1\\n },\\n InvalidNodeTypeError: {\\n s: \\"INVALID_NODE_TYPE_ERR\\",\\n c: 24,\\n m: 1\\n },\\n DataCloneError: {\\n s: \\"DATA_CLONE_ERR\\",\\n c: 25,\\n m: 1\\n }\\n };\\n }, (t, e, n) => {\\n var i,\\n r = n(36),\\n s = n(3),\\n a = n(4),\\n o = n(24),\\n l = n(14),\\n c = n(7),\\n h = n(41),\\n d = n(21),\\n u = n(152),\\n p = n(17),\\n f = n(20),\\n g = n(23),\\n m = n(153),\\n b = n(47),\\n v = n(78),\\n y = n(39),\\n A = n(158),\\n _ = n(44),\\n S = n(64),\\n E = n(85),\\n x = n(159),\\n w = n(161),\\n C = n(128),\\n T = n(83),\\n P = n(119),\\n k = a.Object,\\n M = a.Array,\\n R = a.Date,\\n I = a.Error,\\n D = a.EvalError,\\n O = a.RangeError,\\n L = a.ReferenceError,\\n N = a.SyntaxError,\\n B = a.TypeError,\\n j = a.URIError,\\n U = a.PerformanceMark,\\n z = a.WebAssembly,\\n H = z && z.CompileError || I,\\n q = z && z.LinkError || I,\\n W = z && z.RuntimeError || I,\\n G = o(\\"DOMException\\"),\\n V = w.Map,\\n $ = w.has,\\n X = w.get,\\n K = w.set,\\n Y = C.Set,\\n J = C.add,\\n Q = o(\\"Object\\", \\"keys\\"),\\n Z = l([].push),\\n tt = l((!0).valueOf),\\n et = l(1..valueOf),\\n nt = l(\\"\\".valueOf),\\n it = l(R.prototype.getTime),\\n rt = h(\\"structuredClone\\"),\\n st = \\"DataCloneError\\",\\n at = \\"Transferring\\",\\n checkBasicSemantic = function checkBasicSemantic(t) {\\n return !c(function () {\\n var e = new a.Set([7]),\\n n = t(e),\\n i = t(k(7));\\n return n == e || !n.has(7) || \\"object\\" != typeof i || 7 != i;\\n }) && t;\\n },\\n checkErrorsCloning = function checkErrorsCloning(t, e) {\\n return !c(function () {\\n var n = new e(),\\n i = t({\\n a: n,\\n b: n\\n });\\n return !(i && i.a === i.b && i.a instanceof e && i.a.stack === n.stack);\\n });\\n },\\n ot = a.structuredClone,\\n lt = r || !checkErrorsCloning(ot, I) || !checkErrorsCloning(ot, G) || !(i = ot, !c(function () {\\n var t = i(new a.AggregateError([1], rt, {\\n cause: 3\\n }));\\n return \\"AggregateError\\" != t.name || 1 != t.errors[0] || t.message != rt || 3 != t.cause;\\n })),\\n ct = !ot && checkBasicSemantic(function (t) {\\n return new U(rt, {\\n detail: t\\n }).detail;\\n }),\\n ht = checkBasicSemantic(ot) || ct,\\n throwUncloneable = function throwUncloneable(t) {\\n throw new G(\\"Uncloneable type: \\" + t, st);\\n },\\n throwUnpolyfillable = function throwUnpolyfillable(t, e) {\\n throw new G((e || \\"Cloning\\") + \\" of \\" + t + \\" cannot be properly polyfilled in this engine\\", st);\\n },\\n tryNativeRestrictedStructuredClone = function tryNativeRestrictedStructuredClone(t, e) {\\n ht || throwUnpolyfillable(e);\\n return ht(t);\\n },\\n cloneBuffer = function cloneBuffer(t, e, n) {\\n if ($(e, t)) return X(e, t);\\n var i, r, s, o, l, c;\\n if (\\"SharedArrayBuffer\\" === (n || v(t))) i = ht ? ht(t) : t;else {\\n var h = a.DataView;\\n h || \\"function\\" == typeof t.slice || throwUnpolyfillable(\\"ArrayBuffer\\");\\n try {\\n if (\\"function\\" != typeof t.slice || t.resizable) {\\n r = t.byteLength;\\n s = \\"maxByteLength\\" in t ? {\\n maxByteLength: t.maxByteLength\\n } : void 0;\\n i = new ArrayBuffer(r, s);\\n o = new h(t);\\n l = new h(i);\\n for (c = 0; c < r; c++) l.setUint8(c, o.getUint8(c));\\n } else i = t.slice(0);\\n } catch (t) {\\n throw new G(\\"ArrayBuffer is detached\\", st);\\n }\\n }\\n K(e, t, i);\\n return i;\\n },\\n cloneView = function cloneView(t, e, n, i, r) {\\n var s = a[e];\\n f(s) || throwUnpolyfillable(e);\\n return new s(cloneBuffer(t.buffer, r), n, i);\\n },\\n Placeholder = function Placeholder(t, e, n) {\\n this.object = t;\\n this.type = e;\\n this.metadata = n;\\n },\\n structuredCloneInternal = function structuredCloneInternal(t, e, n) {\\n g(t) && throwUncloneable(\\"Symbol\\");\\n if (!f(t)) return t;\\n if (e) {\\n if ($(e, t)) return X(e, t);\\n } else e = new V();\\n var i,\\n r,\\n s,\\n l,\\n c,\\n h,\\n u,\\n p,\\n m = v(t);\\n switch (m) {\\n case \\"Array\\":\\n s = M(S(t));\\n break;\\n case \\"Object\\":\\n s = {};\\n break;\\n case \\"Map\\":\\n s = new V();\\n break;\\n case \\"Set\\":\\n s = new Y();\\n break;\\n case \\"RegExp\\":\\n s = new RegExp(t.source, x(t));\\n break;\\n case \\"Error\\":\\n switch (r = t.name) {\\n case \\"AggregateError\\":\\n s = o(\\"AggregateError\\")([]);\\n break;\\n case \\"EvalError\\":\\n s = D();\\n break;\\n case \\"RangeError\\":\\n s = O();\\n break;\\n case \\"ReferenceError\\":\\n s = L();\\n break;\\n case \\"SyntaxError\\":\\n s = N();\\n break;\\n case \\"TypeError\\":\\n s = B();\\n break;\\n case \\"URIError\\":\\n s = j();\\n break;\\n case \\"CompileError\\":\\n s = H();\\n break;\\n case \\"LinkError\\":\\n s = q();\\n break;\\n case \\"RuntimeError\\":\\n s = W();\\n break;\\n default:\\n s = I();\\n }\\n break;\\n case \\"DOMException\\":\\n s = new G(t.message, t.name);\\n break;\\n case \\"ArrayBuffer\\":\\n case \\"SharedArrayBuffer\\":\\n s = n ? new Placeholder(t, m) : cloneBuffer(t, e, m);\\n break;\\n case \\"DataView\\":\\n case \\"Int8Array\\":\\n case \\"Uint8Array\\":\\n case \\"Uint8ClampedArray\\":\\n case \\"Int16Array\\":\\n case \\"Uint16Array\\":\\n case \\"Int32Array\\":\\n case \\"Uint32Array\\":\\n case \\"Float16Array\\":\\n case \\"Float32Array\\":\\n case \\"Float64Array\\":\\n case \\"BigInt64Array\\":\\n case \\"BigUint64Array\\":\\n h = \\"DataView\\" === m ? t.byteLength : t.length;\\n s = n ? new Placeholder(t, m, {\\n offset: t.byteOffset,\\n length: h\\n }) : cloneView(t, m, t.byteOffset, h, e);\\n break;\\n case \\"DOMQuad\\":\\n try {\\n s = new DOMQuad(structuredCloneInternal(t.p1, e, n), structuredCloneInternal(t.p2, e, n), structuredCloneInternal(t.p3, e, n), structuredCloneInternal(t.p4, e, n));\\n } catch (e) {\\n s = tryNativeRestrictedStructuredClone(t, m);\\n }\\n break;\\n case \\"File\\":\\n if (ht) try {\\n s = ht(t);\\n v(s) !== m && (s = void 0);\\n } catch (t) {}\\n if (!s) try {\\n s = new File([t], t.name, t);\\n } catch (t) {}\\n s || throwUnpolyfillable(m);\\n break;\\n case \\"FileList\\":\\n if (l = function () {\\n var t;\\n try {\\n t = new a.DataTransfer();\\n } catch (e) {\\n try {\\n t = new a.ClipboardEvent(\\"\\").clipboardData;\\n } catch (t) {}\\n }\\n return t && t.items && t.files ? t : null;\\n }()) {\\n for (c = 0, h = S(t); c < h; c++) l.items.add(structuredCloneInternal(t[c], e, n));\\n s = l.files;\\n } else s = tryNativeRestrictedStructuredClone(t, m);\\n break;\\n case \\"ImageData\\":\\n try {\\n s = new ImageData(structuredCloneInternal(t.data, e, n), t.width, t.height, {\\n colorSpace: t.colorSpace\\n });\\n } catch (e) {\\n s = tryNativeRestrictedStructuredClone(t, m);\\n }\\n break;\\n default:\\n if (ht) s = ht(t);else switch (m) {\\n case \\"BigInt\\":\\n s = k(t.valueOf());\\n break;\\n case \\"Boolean\\":\\n s = k(tt(t));\\n break;\\n case \\"Number\\":\\n s = k(et(t));\\n break;\\n case \\"String\\":\\n s = k(nt(t));\\n break;\\n case \\"Date\\":\\n s = new R(it(t));\\n break;\\n case \\"Blob\\":\\n try {\\n s = t.slice(0, t.size, t.type);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"DOMPoint\\":\\n case \\"DOMPointReadOnly\\":\\n i = a[m];\\n try {\\n s = i.fromPoint ? i.fromPoint(t) : new i(t.x, t.y, t.z, t.w);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"DOMRect\\":\\n case \\"DOMRectReadOnly\\":\\n i = a[m];\\n try {\\n s = i.fromRect ? i.fromRect(t) : new i(t.x, t.y, t.width, t.height);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"DOMMatrix\\":\\n case \\"DOMMatrixReadOnly\\":\\n i = a[m];\\n try {\\n s = i.fromMatrix ? i.fromMatrix(t) : new i(t);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"AudioData\\":\\n case \\"VideoFrame\\":\\n d(t.clone) || throwUnpolyfillable(m);\\n try {\\n s = t.clone();\\n } catch (t) {\\n throwUncloneable(m);\\n }\\n break;\\n case \\"CropTarget\\":\\n case \\"CryptoKey\\":\\n case \\"FileSystemDirectoryHandle\\":\\n case \\"FileSystemFileHandle\\":\\n case \\"FileSystemHandle\\":\\n case \\"GPUCompilationInfo\\":\\n case \\"GPUCompilationMessage\\":\\n case \\"ImageBitmap\\":\\n case \\"RTCCertificate\\":\\n case \\"WebAssembly.Module\\":\\n throwUnpolyfillable(m);\\n default:\\n throwUncloneable(m);\\n }\\n }\\n K(e, t, s);\\n switch (m) {\\n case \\"Array\\":\\n case \\"Object\\":\\n u = Q(t);\\n for (c = 0, h = S(u); c < h; c++) {\\n p = u[c];\\n A(s, p, structuredCloneInternal(t[p], e, n));\\n }\\n break;\\n case \\"Map\\":\\n t.forEach(function (t, i) {\\n K(s, structuredCloneInternal(i, e, n), structuredCloneInternal(t, e, n));\\n });\\n break;\\n case \\"Set\\":\\n t.forEach(function (t) {\\n J(s, structuredCloneInternal(t, e, n));\\n });\\n break;\\n case \\"Error\\":\\n _(s, \\"message\\", structuredCloneInternal(t.message, e, n));\\n y(t, \\"cause\\") && _(s, \\"cause\\", structuredCloneInternal(t.cause, e, n));\\n \\"AggregateError\\" == r && (s.errors = structuredCloneInternal(t.errors, e, n));\\n case \\"DOMException\\":\\n T && _(s, \\"stack\\", structuredCloneInternal(t.stack, e, n));\\n }\\n return s;\\n },\\n replacePlaceholders = function replacePlaceholders(t, e) {\\n if (!f(t)) return t;\\n if ($(e, t)) return X(e, t);\\n var n, i, r, s, a, o, l, c;\\n if (t instanceof Placeholder) {\\n n = t.type;\\n i = t.object;\\n switch (n) {\\n case \\"ArrayBuffer\\":\\n case \\"SharedArrayBuffer\\":\\n c = cloneBuffer(i, e, n);\\n break;\\n case \\"DataView\\":\\n case \\"Int8Array\\":\\n case \\"Uint8Array\\":\\n case \\"Uint8ClampedArray\\":\\n case \\"Int16Array\\":\\n case \\"Uint16Array\\":\\n case \\"Int32Array\\":\\n case \\"Uint32Array\\":\\n case \\"Float16Array\\":\\n case \\"Float32Array\\":\\n case \\"Float64Array\\":\\n case \\"BigInt64Array\\":\\n case \\"BigUint64Array\\":\\n r = t.metadata;\\n c = cloneView(i, n, r.offset, r.length, e);\\n }\\n } else switch (v(t)) {\\n case \\"Array\\":\\n case \\"Object\\":\\n o = Q(t);\\n for (s = 0, a = S(o); s < a; s++) t[l = o[s]] = replacePlaceholders(t[l], e);\\n break;\\n case \\"Map\\":\\n c = new V();\\n t.forEach(function (t, n) {\\n K(c, replacePlaceholders(n, e), replacePlaceholders(t, e));\\n });\\n break;\\n case \\"Set\\":\\n c = new Y();\\n t.forEach(function (t) {\\n J(c, replacePlaceholders(t, e));\\n });\\n break;\\n case \\"Error\\":\\n t.message = replacePlaceholders(t.message, e);\\n y(t, \\"cause\\") && (t.cause = replacePlaceholders(t.cause, e));\\n \\"AggregateError\\" == t.name && (t.errors = replacePlaceholders(t.errors, e));\\n case \\"DOMException\\":\\n T && (t.stack = replacePlaceholders(t.stack, e));\\n }\\n K(e, t, c || t);\\n return c || t;\\n };\\n s({\\n global: !0,\\n enumerable: !0,\\n sham: !P,\\n forced: lt\\n }, {\\n structuredClone: function structuredClone(t) {\\n var e,\\n n,\\n i = E(arguments.length, 1) > 1 && !p(arguments[1]) ? b(arguments[1]) : void 0,\\n r = i ? i.transfer : void 0,\\n s = !1;\\n if (void 0 !== r) {\\n n = function (t, e) {\\n if (!f(t)) throw B(\\"Transfer option cannot be converted to a sequence\\");\\n var n = [];\\n m(t, function (t) {\\n Z(n, b(t));\\n });\\n for (var i, r, s, o, l, c = 0, h = S(n), p = []; c < h;) {\\n i = n[c++];\\n if (\\"ArrayBuffer\\" !== (r = v(i))) {\\n if ($(e, i)) throw new G(\\"Duplicate transferable\\", st);\\n if (P) o = ot(i, {\\n transfer: [i]\\n });else switch (r) {\\n case \\"ImageBitmap\\":\\n s = a.OffscreenCanvas;\\n u(s) || throwUnpolyfillable(r, at);\\n try {\\n (l = new s(i.width, i.height)).getContext(\\"bitmaprenderer\\").transferFromImageBitmap(i);\\n o = l.transferToImageBitmap();\\n } catch (t) {}\\n break;\\n case \\"AudioData\\":\\n case \\"VideoFrame\\":\\n d(i.clone) && d(i.close) || throwUnpolyfillable(r, at);\\n try {\\n o = i.clone();\\n i.close();\\n } catch (t) {}\\n break;\\n case \\"MediaSourceHandle\\":\\n case \\"MessagePort\\":\\n case \\"OffscreenCanvas\\":\\n case \\"ReadableStream\\":\\n case \\"TransformStream\\":\\n case \\"WritableStream\\":\\n throwUnpolyfillable(r, at);\\n }\\n if (void 0 === o) throw new G(\\"This object cannot be transferred: \\" + r, st);\\n K(e, i, o);\\n } else Z(p, i);\\n }\\n return p;\\n }(r, e = new V());\\n s = !!S(n);\\n }\\n var o = structuredCloneInternal(t, e, s);\\n if (s) {\\n !function (t, e) {\\n for (var n, i, r = 0, s = S(t); r < s;) {\\n n = t[r++];\\n if ($(e, n)) throw new G(\\"Duplicate transferable\\", st);\\n if (P) i = ot(n, {\\n transfer: [n]\\n });else {\\n d(n.transfer) || throwUnpolyfillable(\\"ArrayBuffer\\", at);\\n i = n.transfer();\\n }\\n K(e, n, i);\\n }\\n }(r, e = new V());\\n o = replacePlaceholders(o, e);\\n }\\n return o;\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(7),\\n s = n(21),\\n a = n(78),\\n o = n(24),\\n l = n(51),\\n noop = function noop() {},\\n c = [],\\n h = o(\\"Reflect\\", \\"construct\\"),\\n d = /^\\\\s*(?:class|function)\\\\b/,\\n u = i(d.exec),\\n p = !d.exec(noop),\\n f = function isConstructor(t) {\\n if (!s(t)) return !1;\\n try {\\n h(noop, c, t);\\n return !0;\\n } catch (t) {\\n return !1;\\n }\\n },\\n g = function isConstructor(t) {\\n if (!s(t)) return !1;\\n switch (a(t)) {\\n case \\"AsyncFunction\\":\\n case \\"GeneratorFunction\\":\\n case \\"AsyncGeneratorFunction\\":\\n return !1;\\n }\\n try {\\n return p || !!u(d, l(t));\\n } catch (t) {\\n return !0;\\n }\\n };\\n g.sham = !0;\\n t.exports = !h || r(function () {\\n var t;\\n return f(f.call) || !f(Object) || !f(function () {\\n t = !0;\\n }) || t;\\n }) ? g : f;\\n }, (t, e, n) => {\\n var i = n(99),\\n r = n(8),\\n s = n(47),\\n a = n(32),\\n o = n(154),\\n l = n(64),\\n c = n(25),\\n h = n(156),\\n d = n(157),\\n u = n(139),\\n p = TypeError,\\n Result = function Result(t, e) {\\n this.stopped = t;\\n this.result = e;\\n },\\n f = Result.prototype;\\n t.exports = function (t, e, n) {\\n var g,\\n m,\\n b,\\n v,\\n y,\\n A,\\n _,\\n S = n && n.that,\\n E = !(!n || !n.AS_ENTRIES),\\n x = !(!n || !n.IS_RECORD),\\n w = !(!n || !n.IS_ITERATOR),\\n C = !(!n || !n.INTERRUPTED),\\n T = i(e, S),\\n stop = function stop(t) {\\n g && u(g, \\"normal\\", t);\\n return new Result(!0, t);\\n },\\n callFn = function callFn(t) {\\n if (E) {\\n s(t);\\n return C ? T(t[0], t[1], stop) : T(t[0], t[1]);\\n }\\n return C ? T(t, stop) : T(t);\\n };\\n if (x) g = t.iterator;else if (w) g = t;else {\\n if (!(m = d(t))) throw p(a(t) + \\" is not iterable\\");\\n if (o(m)) {\\n for (b = 0, v = l(t); v > b; b++) if ((y = callFn(t[b])) && c(f, y)) return y;\\n return new Result(!1);\\n }\\n g = h(t, m);\\n }\\n A = x ? t.next : g.next;\\n for (; !(_ = r(A, g)).done;) {\\n try {\\n y = callFn(_.value);\\n } catch (t) {\\n u(g, \\"throw\\", t);\\n }\\n if (\\"object\\" == typeof y && y && c(f, y)) return y;\\n }\\n return new Result(!1);\\n };\\n }, (t, e, n) => {\\n var i = n(34),\\n r = n(155),\\n s = i(\\"iterator\\"),\\n a = Array.prototype;\\n t.exports = function (t) {\\n return void 0 !== t && (r.Array === t || a[s] === t);\\n };\\n }, t => {\\n t.exports = {};\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(31),\\n s = n(47),\\n a = n(32),\\n o = n(157),\\n l = TypeError;\\n t.exports = function (t, e) {\\n var n = arguments.length < 2 ? o(t) : e;\\n if (r(n)) return s(i(n, t));\\n throw l(a(t) + \\" is not iterable\\");\\n };\\n }, (t, e, n) => {\\n var i = n(78),\\n r = n(30),\\n s = n(17),\\n a = n(155),\\n o = n(34)(\\"iterator\\");\\n t.exports = function (t) {\\n if (!s(t)) return r(t, o) || r(t, \\"@@iterator\\") || a[i(t)];\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(18),\\n r = n(45),\\n s = n(11);\\n t.exports = function (t, e, n) {\\n var a = i(e);\\n a in t ? r.f(t, a, s(0, n)) : t[a] = n;\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(39),\\n s = n(25),\\n a = n(160),\\n o = RegExp.prototype;\\n t.exports = function (t) {\\n var e = t.flags;\\n return void 0 !== e || \\"flags\\" in o || r(t, \\"flags\\") || !s(o, t) ? e : i(a, t);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(47);\\n t.exports = function () {\\n var t = i(this),\\n e = \\"\\";\\n t.hasIndices && (e += \\"d\\");\\n t.global && (e += \\"g\\");\\n t.ignoreCase && (e += \\"i\\");\\n t.multiline && (e += \\"m\\");\\n t.dotAll && (e += \\"s\\");\\n t.unicode && (e += \\"u\\");\\n t.unicodeSets && (e += \\"v\\");\\n t.sticky && (e += \\"y\\");\\n return e;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = Map.prototype;\\n t.exports = {\\n Map: Map,\\n set: i(r.set),\\n get: i(r.get),\\n has: i(r.has),\\n remove: i(r.delete),\\n proto: r\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.SerializableEmpty = e.PrintAnnotationStorage = e.AnnotationStorage = void 0;\\n n(89);\\n n(148);\\n n(151);\\n var i = n(1),\\n r = n(163),\\n s = n(169);\\n const a = Object.freeze({\\n map: null,\\n hash: \\"\\",\\n transfers: void 0\\n });\\n e.SerializableEmpty = a;\\n var _v = /*#__PURE__*/new WeakMap();\\n var _y = /*#__PURE__*/new WeakMap();\\n var _A = /*#__PURE__*/new WeakSet();\\n class AnnotationStorage {\\n constructor() {\\n _classPrivateMethodInitSpec(this, _A);\\n _classPrivateFieldInitSpec(this, _v, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _y, {\\n writable: true,\\n value: new Map()\\n });\\n this.onSetModified = null;\\n this.onResetModified = null;\\n this.onAnnotationEditor = null;\\n }\\n getValue(t, e) {\\n const n = _classPrivateFieldGet(this, _y).get(t);\\n return void 0 === n ? e : Object.assign(e, n);\\n }\\n getRawValue(t) {\\n return _classPrivateFieldGet(this, _y).get(t);\\n }\\n remove(t) {\\n _classPrivateFieldGet(this, _y).delete(t);\\n 0 === _classPrivateFieldGet(this, _y).size && this.resetModified();\\n if (\\"function\\" == typeof this.onAnnotationEditor) {\\n for (const t of _classPrivateFieldGet(this, _y).values()) if (t instanceof r.AnnotationEditor) return;\\n this.onAnnotationEditor(null);\\n }\\n }\\n setValue(t, e) {\\n const n = _classPrivateFieldGet(this, _y).get(t);\\n let i = !1;\\n if (void 0 !== n) {\\n for (const [t, r] of Object.entries(e)) if (n[t] !== r) {\\n i = !0;\\n n[t] = r;\\n }\\n } else {\\n i = !0;\\n _classPrivateFieldGet(this, _y).set(t, e);\\n }\\n i && _classPrivateMethodGet(this, _A, _A2).call(this);\\n e instanceof r.AnnotationEditor && \\"function\\" == typeof this.onAnnotationEditor && this.onAnnotationEditor(e.constructor._type);\\n }\\n has(t) {\\n return _classPrivateFieldGet(this, _y).has(t);\\n }\\n getAll() {\\n return _classPrivateFieldGet(this, _y).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _y)) : null;\\n }\\n setAll(t) {\\n for (const [e, n] of Object.entries(t)) this.setValue(e, n);\\n }\\n get size() {\\n return _classPrivateFieldGet(this, _y).size;\\n }\\n resetModified() {\\n if (_classPrivateFieldGet(this, _v)) {\\n _classPrivateFieldSet(this, _v, !1);\\n \\"function\\" == typeof this.onResetModified && this.onResetModified();\\n }\\n }\\n get print() {\\n return new PrintAnnotationStorage(this);\\n }\\n get serializable() {\\n if (0 === _classPrivateFieldGet(this, _y).size) return a;\\n const t = new Map(),\\n e = new s.MurmurHash3_64(),\\n n = [],\\n i = Object.create(null);\\n let o = !1;\\n for (const [n, s] of _classPrivateFieldGet(this, _y)) {\\n const a = s instanceof r.AnnotationEditor ? s.serialize(!1, i) : s;\\n if (a) {\\n t.set(n, a);\\n e.update(\\"\\".concat(n, \\":\\").concat(JSON.stringify(a)));\\n o || (o = !!a.bitmap);\\n }\\n }\\n if (o) for (const e of t.values()) e.bitmap && n.push(e.bitmap);\\n return t.size > 0 ? {\\n map: t,\\n hash: e.hexdigest(),\\n transfers: n\\n } : a;\\n }\\n }\\n function _A2() {\\n if (!_classPrivateFieldGet(this, _v)) {\\n _classPrivateFieldSet(this, _v, !0);\\n \\"function\\" == typeof this.onSetModified && this.onSetModified();\\n }\\n }\\n e.AnnotationStorage = AnnotationStorage;\\n var _2 = /*#__PURE__*/new WeakMap();\\n class PrintAnnotationStorage extends AnnotationStorage {\\n constructor(t) {\\n super();\\n _classPrivateFieldInitSpec(this, _2, {\\n writable: true,\\n value: void 0\\n });\\n const {\\n map: e,\\n hash: n,\\n transfers: i\\n } = t.serializable,\\n r = structuredClone(e, null);\\n _classPrivateFieldSet(this, _2, {\\n map: r,\\n hash: n,\\n transfers: i\\n });\\n }\\n get print() {\\n (0, i.unreachable)(\\"Should not call PrintAnnotationStorage.print\\");\\n }\\n get serializable() {\\n return _classPrivateFieldGet(this, _2);\\n }\\n }\\n e.PrintAnnotationStorage = PrintAnnotationStorage;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class12;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.AnnotationEditor = void 0;\\n n(89);\\n n(2);\\n var i = n(1),\\n r = n(164);\\n var _S = /*#__PURE__*/new WeakMap();\\n var _E = /*#__PURE__*/new WeakMap();\\n var _x = /*#__PURE__*/new WeakMap();\\n var _w = /*#__PURE__*/new WeakMap();\\n var _C = /*#__PURE__*/new WeakMap();\\n var _T = /*#__PURE__*/new WeakMap();\\n var _P = /*#__PURE__*/new WeakMap();\\n var _k = /*#__PURE__*/new WeakMap();\\n var _M = /*#__PURE__*/new WeakMap();\\n var _R = /*#__PURE__*/new WeakSet();\\n var _F = /*#__PURE__*/new WeakSet();\\n var _I = /*#__PURE__*/new WeakSet();\\n var _D = /*#__PURE__*/new WeakSet();\\n class AnnotationEditor {\\n constructor(_t4) {\\n _classPrivateMethodInitSpec(this, _D);\\n _classPrivateMethodInitSpec(this, _I);\\n _classPrivateMethodInitSpec(this, _F);\\n _classPrivateMethodInitSpec(this, _R);\\n _classPrivateFieldInitSpec(this, _S, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _E, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _x, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _w, {\\n writable: true,\\n value: this.focusin.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _C, {\\n writable: true,\\n value: this.focusout.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _T, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _P, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _k, {\\n writable: true,\\n value: !1\\n });\\n _defineProperty(this, \\"_uiManager\\", null);\\n _classPrivateFieldInitSpec(this, _M, {\\n writable: true,\\n value: AnnotationEditor._zIndex++\\n });\\n this.constructor === AnnotationEditor && (0, i.unreachable)(\\"Cannot initialize AnnotationEditor.\\");\\n this.parent = _t4.parent;\\n this.id = _t4.id;\\n this.width = this.height = null;\\n this.pageIndex = _t4.parent.pageIndex;\\n this.name = _t4.name;\\n this.div = null;\\n this._uiManager = _t4.uiManager;\\n this.annotationElementId = null;\\n this._willKeepAspectRatio = !1;\\n const {\\n rotation: _e4,\\n rawDims: {\\n pageWidth: _n3,\\n pageHeight: _r3,\\n pageX: _s4,\\n pageY: _a2\\n }\\n } = this.parent.viewport;\\n this.rotation = _e4;\\n this.pageRotation = (360 + _e4 - this._uiManager.viewParameters.rotation) % 360;\\n this.pageDimensions = [_n3, _r3];\\n this.pageTranslation = [_s4, _a2];\\n const [_o2, _l2] = this.parentDimensions;\\n this.x = _t4.x / _o2;\\n this.y = _t4.y / _l2;\\n this.isAttachedToDOM = !1;\\n this.deleted = !1;\\n }\\n static get _defaultLineColor() {\\n return (0, i.shadow)(this, \\"_defaultLineColor\\", this._colorManager.getHexCode(\\"CanvasText\\"));\\n }\\n static deleteAnnotationElement(t) {\\n const e = new FakeEditor({\\n id: t.parent.getNextId(),\\n parent: t.parent,\\n uiManager: t._uiManager\\n });\\n e.annotationElementId = t.annotationElementId;\\n e.deleted = !0;\\n e._uiManager.addToAnnotationStorage(e);\\n }\\n static initialize(t) {}\\n static updateDefaultParams(t, e) {}\\n static get defaultPropertiesToUpdate() {\\n return [];\\n }\\n get propertiesToUpdate() {\\n return [];\\n }\\n addCommands(t) {\\n this._uiManager.addCommands(t);\\n }\\n get currentLayer() {\\n return this._uiManager.currentLayer;\\n }\\n setInBackground() {\\n this.div.style.zIndex = 0;\\n }\\n setInForeground() {\\n this.div.style.zIndex = _classPrivateFieldGet(this, _M);\\n }\\n setParent(t) {\\n if (null !== t) {\\n this.pageIndex = t.pageIndex;\\n this.pageDimensions = t.pageDimensions;\\n }\\n this.parent = t;\\n }\\n focusin(t) {\\n _classPrivateFieldGet(this, _T) ? _classPrivateFieldSet(this, _T, !1) : this.parent.setSelected(this);\\n }\\n focusout(t) {\\n if (!this.isAttachedToDOM) return;\\n const e = t.relatedTarget;\\n if (!(e !== null && e !== void 0 && e.closest(\\"#\\".concat(this.id)))) {\\n var _this$parent;\\n t.preventDefault();\\n ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.isMultipleSelection) || this.commitOrRemove();\\n }\\n }\\n commitOrRemove() {\\n this.isEmpty() ? this.remove() : this.commit();\\n }\\n commit() {\\n this.addToAnnotationStorage();\\n }\\n addToAnnotationStorage() {\\n this._uiManager.addToAnnotationStorage(this);\\n }\\n dragstart(t) {\\n const e = this.parent.div.getBoundingClientRect();\\n this.startX = t.clientX - e.x;\\n this.startY = t.clientY - e.y;\\n t.dataTransfer.setData(\\"text/plain\\", this.id);\\n t.dataTransfer.effectAllowed = \\"move\\";\\n }\\n setAt(t, e, n, i) {\\n const [r, s] = this.parentDimensions;\\n [n, i] = this.screenToPageTranslation(n, i);\\n this.x = (t + n) / r;\\n this.y = (e + i) / s;\\n this.fixAndSetPosition();\\n }\\n translate(t, e) {\\n _classPrivateMethodGet(this, _R, _R2).call(this, this.parentDimensions, t, e);\\n }\\n translateInPage(t, e) {\\n _classPrivateMethodGet(this, _R, _R2).call(this, this.pageDimensions, t, e);\\n this.div.scrollIntoView({\\n block: \\"nearest\\"\\n });\\n }\\n fixAndSetPosition() {\\n const [t, e] = this.pageDimensions;\\n let {\\n x: n,\\n y: i,\\n width: r,\\n height: s\\n } = this;\\n r *= t;\\n s *= e;\\n n *= t;\\n i *= e;\\n switch (this.rotation) {\\n case 0:\\n n = Math.max(0, Math.min(t - r, n));\\n i = Math.max(0, Math.min(e - s, i));\\n break;\\n case 90:\\n n = Math.max(0, Math.min(t - s, n));\\n i = Math.min(e, Math.max(r, i));\\n break;\\n case 180:\\n n = Math.min(t, Math.max(r, n));\\n i = Math.min(e, Math.max(s, i));\\n break;\\n case 270:\\n n = Math.min(t, Math.max(s, n));\\n i = Math.max(0, Math.min(e - r, i));\\n }\\n this.x = n / t;\\n this.y = i / e;\\n this.div.style.left = \\"\\".concat((100 * this.x).toFixed(2), \\"%\\");\\n this.div.style.top = \\"\\".concat((100 * this.y).toFixed(2), \\"%\\");\\n }\\n screenToPageTranslation(t, e) {\\n switch (this.parentRotation) {\\n case 90:\\n return [e, -t];\\n case 180:\\n return [-t, -e];\\n case 270:\\n return [-e, t];\\n default:\\n return [t, e];\\n }\\n }\\n pageTranslationToScreen(t, e) {\\n switch (this.parentRotation) {\\n case 90:\\n return [-e, t];\\n case 180:\\n return [-t, -e];\\n case 270:\\n return [e, -t];\\n default:\\n return [t, e];\\n }\\n }\\n get parentScale() {\\n return this._uiManager.viewParameters.realScale;\\n }\\n get parentRotation() {\\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\\n }\\n get parentDimensions() {\\n const {\\n realScale: t\\n } = this._uiManager.viewParameters,\\n [e, n] = this.pageDimensions;\\n return [e * t, n * t];\\n }\\n setDims(t, e) {\\n const [n, i] = this.parentDimensions;\\n this.div.style.width = \\"\\".concat((100 * t / n).toFixed(2), \\"%\\");\\n _classPrivateFieldGet(this, _S) || (this.div.style.height = \\"\\".concat((100 * e / i).toFixed(2), \\"%\\"));\\n }\\n fixDims() {\\n const {\\n style: t\\n } = this.div,\\n {\\n height: e,\\n width: n\\n } = t,\\n i = n.endsWith(\\"%\\"),\\n r = !_classPrivateFieldGet(this, _S) && e.endsWith(\\"%\\");\\n if (i && r) return;\\n const [s, a] = this.parentDimensions;\\n i || (t.width = \\"\\".concat((100 * parseFloat(n) / s).toFixed(2), \\"%\\"));\\n _classPrivateFieldGet(this, _S) || r || (t.height = \\"\\".concat((100 * parseFloat(e) / a).toFixed(2), \\"%\\"));\\n }\\n getInitialTranslation() {\\n return [0, 0];\\n }\\n render() {\\n this.div = document.createElement(\\"div\\");\\n this.div.setAttribute(\\"data-editor-rotation\\", (360 - this.rotation) % 360);\\n this.div.className = this.name;\\n this.div.setAttribute(\\"id\\", this.id);\\n this.div.setAttribute(\\"tabIndex\\", 0);\\n this.setInForeground();\\n this.div.addEventListener(\\"focusin\\", _classPrivateFieldGet(this, _w));\\n this.div.addEventListener(\\"focusout\\", _classPrivateFieldGet(this, _C));\\n const [t, e] = this.parentDimensions;\\n if (this.parentRotation % 180 != 0) {\\n this.div.style.maxWidth = \\"\\".concat((100 * e / t).toFixed(2), \\"%\\");\\n this.div.style.maxHeight = \\"\\".concat((100 * t / e).toFixed(2), \\"%\\");\\n }\\n const [n, i] = this.getInitialTranslation();\\n this.translate(n, i);\\n (0, r.bindEvents)(this, this.div, [\\"dragstart\\", \\"pointerdown\\"]);\\n return this.div;\\n }\\n pointerdown(t) {\\n const {\\n isMac: e\\n } = i.FeatureTest.platform;\\n if (0 !== t.button || t.ctrlKey && e) t.preventDefault();else {\\n t.ctrlKey && !e || t.shiftKey || t.metaKey && e ? this.parent.toggleSelected(this) : this.parent.setSelected(this);\\n _classPrivateFieldSet(this, _T, !0);\\n }\\n }\\n getRect(t, e) {\\n const n = this.parentScale,\\n [i, r] = this.pageDimensions,\\n [s, a] = this.pageTranslation,\\n o = t / n,\\n l = e / n,\\n c = this.x * i,\\n h = this.y * r,\\n d = this.width * i,\\n u = this.height * r;\\n switch (this.rotation) {\\n case 0:\\n return [c + o + s, r - h - l - u + a, c + o + d + s, r - h - l + a];\\n case 90:\\n return [c + l + s, r - h + o + a, c + l + u + s, r - h + o + d + a];\\n case 180:\\n return [c - o - d + s, r - h + l + a, c - o + s, r - h + l + u + a];\\n case 270:\\n return [c - l - u + s, r - h - o - d + a, c - l + s, r - h - o + a];\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n }\\n getRectInCurrentCoords(t, e) {\\n const [n, i, r, s] = t,\\n a = r - n,\\n o = s - i;\\n switch (this.rotation) {\\n case 0:\\n return [n, e - s, a, o];\\n case 90:\\n return [n, e - i, o, a];\\n case 180:\\n return [r, e - i, a, o];\\n case 270:\\n return [r, e - s, o, a];\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n }\\n onceAdded() {}\\n isEmpty() {\\n return !1;\\n }\\n enableEditMode() {\\n _classPrivateFieldSet(this, _k, !0);\\n }\\n disableEditMode() {\\n _classPrivateFieldSet(this, _k, !1);\\n }\\n isInEditMode() {\\n return _classPrivateFieldGet(this, _k);\\n }\\n shouldGetKeyboardEvents() {\\n return !1;\\n }\\n needsToBeRebuilt() {\\n return this.div && !this.isAttachedToDOM;\\n }\\n rebuild() {\\n var _this$div, _this$div2;\\n (_this$div = this.div) === null || _this$div === void 0 ? void 0 : _this$div.addEventListener(\\"focusin\\", _classPrivateFieldGet(this, _w));\\n (_this$div2 = this.div) === null || _this$div2 === void 0 ? void 0 : _this$div2.addEventListener(\\"focusout\\", _classPrivateFieldGet(this, _C));\\n }\\n serialize() {\\n (0, i.unreachable)(\\"An editor must be serializable\\");\\n }\\n static deserialize(t, e, n) {\\n const i = new this.prototype.constructor({\\n parent: e,\\n id: e.getNextId(),\\n uiManager: n\\n });\\n i.rotation = t.rotation;\\n const [r, s] = i.pageDimensions,\\n [a, o, l, c] = i.getRectInCurrentCoords(t.rect, s);\\n i.x = a / r;\\n i.y = o / s;\\n i.width = l / r;\\n i.height = c / s;\\n return i;\\n }\\n remove() {\\n this.div.removeEventListener(\\"focusin\\", _classPrivateFieldGet(this, _w));\\n this.div.removeEventListener(\\"focusout\\", _classPrivateFieldGet(this, _C));\\n this.isEmpty() || this.commit();\\n this.parent ? this.parent.remove(this) : this._uiManager.removeEditor(this);\\n }\\n get isResizable() {\\n return !1;\\n }\\n makeResizable() {\\n if (this.isResizable) {\\n _classPrivateMethodGet(this, _F, _F2).call(this);\\n _classPrivateFieldGet(this, _E).classList.remove(\\"hidden\\");\\n }\\n }\\n select() {\\n var _this$div3;\\n this.makeResizable();\\n (_this$div3 = this.div) === null || _this$div3 === void 0 ? void 0 : _this$div3.classList.add(\\"selectedEditor\\");\\n }\\n unselect() {\\n var _classPrivateFieldGet3, _this$div4, _this$div5;\\n (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _E)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.classList.add(\\"hidden\\");\\n (_this$div4 = this.div) === null || _this$div4 === void 0 ? void 0 : _this$div4.classList.remove(\\"selectedEditor\\");\\n ((_this$div5 = this.div) === null || _this$div5 === void 0 ? void 0 : _this$div5.contains(document.activeElement)) && this._uiManager.currentLayer.div.focus();\\n }\\n updateParams(t, e) {}\\n disableEditing() {}\\n enableEditing() {}\\n enterInEditMode() {}\\n get contentDiv() {\\n return this.div;\\n }\\n get isEditing() {\\n return _classPrivateFieldGet(this, _P);\\n }\\n set isEditing(t) {\\n _classPrivateFieldSet(this, _P, t);\\n if (this.parent) if (t) {\\n this.parent.setSelected(this);\\n this.parent.setActiveEditor(this);\\n } else this.parent.setActiveEditor(null);\\n }\\n setAspectRatio(t, e) {\\n _classPrivateFieldSet(this, _S, !0);\\n const n = t / e,\\n {\\n style: i\\n } = this.div;\\n i.aspectRatio = n;\\n i.height = \\"auto\\";\\n }\\n static get MIN_SIZE() {\\n return 16;\\n }\\n }\\n _class12 = AnnotationEditor;\\n function _R2(t, e, n) {\\n let [i, r] = t;\\n [e, n] = this.screenToPageTranslation(e, n);\\n this.x += e / i;\\n this.y += n / r;\\n this.fixAndSetPosition();\\n }\\n function _F2() {\\n if (_classPrivateFieldGet(this, _E)) return;\\n _classPrivateFieldSet(this, _E, document.createElement(\\"div\\"));\\n _classPrivateFieldGet(this, _E).classList.add(\\"resizers\\");\\n const t = [\\"topLeft\\", \\"topRight\\", \\"bottomRight\\", \\"bottomLeft\\"];\\n this._willKeepAspectRatio || t.push(\\"topMiddle\\", \\"middleRight\\", \\"bottomMiddle\\", \\"middleLeft\\");\\n for (const e of t) {\\n const t = document.createElement(\\"div\\");\\n _classPrivateFieldGet(this, _E).append(t);\\n t.classList.add(\\"resizer\\", e);\\n t.addEventListener(\\"pointerdown\\", _classPrivateMethodGet(this, _I, _I2).bind(this, e));\\n }\\n this.div.prepend(_classPrivateFieldGet(this, _E));\\n }\\n function _I2(t, e) {\\n e.preventDefault();\\n _classPrivateFieldSet(this, _x, [e.clientX, e.clientY]);\\n const n = _classPrivateMethodGet(this, _D, _D2).bind(this, t),\\n i = this.div.draggable;\\n this.div.draggable = !1;\\n const r = \\"resizing\\".concat(t.charAt(0).toUpperCase()).concat(t.slice(1));\\n this.parent.div.classList.add(r);\\n const s = {\\n passive: !0,\\n capture: !0\\n };\\n window.addEventListener(\\"pointermove\\", n, s);\\n window.addEventListener(\\"pointerup\\", () => {\\n this._uiManager.stopUndoAccumulation();\\n this.div.draggable = i;\\n this.parent.div.classList.remove(r);\\n window.removeEventListener(\\"pointermove\\", n, s);\\n }, {\\n once: !0\\n });\\n }\\n function _D2(t, e) {\\n const {\\n clientX: n,\\n clientY: r\\n } = e,\\n s = n - _classPrivateFieldGet(this, _x)[0],\\n a = r - _classPrivateFieldGet(this, _x)[1];\\n _classPrivateFieldGet(this, _x)[0] = n;\\n _classPrivateFieldGet(this, _x)[1] = r;\\n const [o, l] = this.parentDimensions,\\n c = this.x,\\n h = this.y,\\n d = this.width,\\n u = this.height,\\n p = _class12.MIN_SIZE / o,\\n f = _class12.MIN_SIZE / l;\\n let g;\\n const round = t => Math.round(1e4 * t) / 1e4,\\n updatePosition = (t, e) => {\\n const [n, i] = this.parentDimensions;\\n this.setDims(n * t, i * e);\\n this.fixAndSetPosition();\\n };\\n switch (t) {\\n case \\"topLeft\\":\\n {\\n if (Math.sign(s) * Math.sign(a) < 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(d * o, u * l),\\n n = round(c + d),\\n i = round(h + u),\\n r = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n m = round(d * r),\\n b = round(u * r),\\n v = n - m,\\n y = i - b;\\n g = () => {\\n this.width = m;\\n this.height = b;\\n this.x = v;\\n this.y = y;\\n updatePosition(m, b);\\n };\\n break;\\n }\\n case \\"topMiddle\\":\\n {\\n const t = round(this.y + u),\\n e = round(Math.max(f, Math.min(1, u - a / l))),\\n n = t - e;\\n g = () => {\\n this.height = e;\\n this.y = n;\\n updatePosition(d, e);\\n };\\n break;\\n }\\n case \\"topRight\\":\\n {\\n if (Math.sign(s) * Math.sign(a) > 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(this.width * o, this.height * l),\\n n = round(h + this.height),\\n i = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n r = round(d * i),\\n c = round(u * i),\\n m = n - c;\\n g = () => {\\n this.width = r;\\n this.height = c;\\n this.y = m;\\n updatePosition(r, c);\\n };\\n break;\\n }\\n case \\"middleRight\\":\\n {\\n const t = round(Math.max(p, Math.min(1, d + s / o)));\\n g = () => {\\n this.width = t;\\n updatePosition(t, u);\\n };\\n break;\\n }\\n case \\"bottomRight\\":\\n {\\n if (Math.sign(s) * Math.sign(a) < 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(this.width * o, this.height * l),\\n n = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n i = round(d * n),\\n r = round(u * n);\\n g = () => {\\n this.width = i;\\n this.height = r;\\n updatePosition(i, r);\\n };\\n break;\\n }\\n case \\"bottomMiddle\\":\\n {\\n const t = round(Math.max(f, Math.min(1, u + a / l)));\\n g = () => {\\n this.height = t;\\n updatePosition(d, t);\\n };\\n break;\\n }\\n case \\"bottomLeft\\":\\n {\\n if (Math.sign(s) * Math.sign(a) > 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(this.width * o, this.height * l),\\n n = round(c + this.width),\\n i = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n r = round(d * i),\\n h = round(u * i),\\n m = n - r;\\n g = () => {\\n this.width = r;\\n this.height = h;\\n this.x = m;\\n updatePosition(r, h);\\n };\\n break;\\n }\\n case \\"middleLeft\\":\\n {\\n const t = round(c + d),\\n e = round(Math.max(p, Math.min(1, d - s / o))),\\n n = t - e;\\n g = () => {\\n this.width = e;\\n this.x = n;\\n updatePosition(e, u);\\n };\\n break;\\n }\\n }\\n this.addCommands({\\n cmd: g,\\n undo: () => {\\n this.width = d;\\n this.height = u;\\n this.x = c;\\n this.y = h;\\n updatePosition(d, u);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.RESIZE,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n _defineProperty(AnnotationEditor, \\"_colorManager\\", new r.ColorManager());\\n _defineProperty(AnnotationEditor, \\"_zIndex\\", 1);\\n e.AnnotationEditor = AnnotationEditor;\\n class FakeEditor extends AnnotationEditor {\\n constructor(t) {\\n super(t);\\n this.annotationElementId = t.annotationElementId;\\n this.deleted = !0;\\n }\\n serialize() {\\n return {\\n id: this.annotationElementId,\\n deleted: !0,\\n pageIndex: this.pageIndex\\n };\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.KeyboardManager = e.CommandManager = e.ColorManager = e.AnnotationEditorUIManager = void 0;\\n e.bindEvents = function bindEvents(t, e, n) {\\n for (const i of n) e.addEventListener(i, t[i].bind(t));\\n };\\n e.opacityToHex = function opacityToHex(t) {\\n return Math.round(Math.min(255, Math.max(1, 255 * t))).toString(16).padStart(2, \\"0\\");\\n };\\n n(2);\\n n(89);\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n n(165);\\n var i = n(1),\\n r = n(167);\\n var _O = /*#__PURE__*/new WeakMap();\\n class IdManager {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _O, {\\n writable: true,\\n value: 0\\n });\\n }\\n getId() {\\n var _this$O, _this$O2;\\n return \\"\\".concat(i.AnnotationEditorPrefix).concat((_classPrivateFieldSet(this, _O, (_this$O = _classPrivateFieldGet(this, _O), _this$O2 = _this$O++, _this$O)), _this$O2));\\n }\\n }\\n var _L = /*#__PURE__*/new WeakMap();\\n var _O2 = /*#__PURE__*/new WeakMap();\\n var _N = /*#__PURE__*/new WeakMap();\\n var _B = /*#__PURE__*/new WeakSet();\\n class ImageManager {\\n constructor() {\\n _classPrivateMethodInitSpec(this, _B);\\n _classPrivateFieldInitSpec(this, _L, {\\n writable: true,\\n value: (0, i.getUuid)()\\n });\\n _classPrivateFieldInitSpec(this, _O2, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _N, {\\n writable: true,\\n value: null\\n });\\n }\\n async getFromFile(t) {\\n const {\\n lastModified: e,\\n name: n,\\n size: i,\\n type: r\\n } = t;\\n return _classPrivateMethodGet(this, _B, _B2).call(this, \\"\\".concat(e, \\"_\\").concat(n, \\"_\\").concat(i, \\"_\\").concat(r), t);\\n }\\n async getFromUrl(t) {\\n return _classPrivateMethodGet(this, _B, _B2).call(this, t, t);\\n }\\n async getFromId(t) {\\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\\n const e = _classPrivateFieldGet(this, _N).get(t);\\n if (!e) return null;\\n if (e.bitmap) {\\n e.refCounter += 1;\\n return e;\\n }\\n return e.file ? this.getFromFile(e.file) : this.getFromUrl(e.url);\\n }\\n getSvgUrl(t) {\\n const e = _classPrivateFieldGet(this, _N).get(t);\\n return e !== null && e !== void 0 && e.isSvg ? e.svgUrl : null;\\n }\\n deleteId(t) {\\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\\n const e = _classPrivateFieldGet(this, _N).get(t);\\n if (e) {\\n e.refCounter -= 1;\\n 0 === e.refCounter && (e.bitmap = null);\\n }\\n }\\n isValidId(t) {\\n return t.startsWith(\\"image_\\".concat(_classPrivateFieldGet(this, _L), \\"_\\"));\\n }\\n }\\n async function _B2(t, e) {\\n var _n5;\\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\\n let n = _classPrivateFieldGet(this, _N).get(t);\\n if (null === n) return null;\\n if ((_n5 = n) !== null && _n5 !== void 0 && _n5.bitmap) {\\n n.refCounter += 1;\\n return n;\\n }\\n try {\\n var _this$O3, _this$O4;\\n n || (n = {\\n bitmap: null,\\n id: \\"image_\\".concat(_classPrivateFieldGet(this, _L), \\"_\\").concat((_classPrivateFieldSet(this, _O2, (_this$O3 = _classPrivateFieldGet(this, _O2), _this$O4 = _this$O3++, _this$O3)), _this$O4)),\\n refCounter: 0,\\n isSvg: !1\\n });\\n let t;\\n if (\\"string\\" == typeof e) {\\n n.url = e;\\n const i = await fetch(e);\\n if (!i.ok) throw new Error(i.statusText);\\n t = await i.blob();\\n } else t = n.file = e;\\n if (\\"image/svg+xml\\" === t.type) {\\n const e = new FileReader(),\\n i = new Image(),\\n r = new Promise((t, r) => {\\n i.onload = () => {\\n n.bitmap = i;\\n n.isSvg = !0;\\n t();\\n };\\n e.onload = () => {\\n i.src = n.svgUrl = e.result;\\n };\\n i.onerror = e.onerror = r;\\n });\\n e.readAsDataURL(t);\\n await r;\\n } else n.bitmap = await createImageBitmap(t);\\n n.refCounter = 1;\\n } catch (t) {\\n console.error(t);\\n n = null;\\n }\\n _classPrivateFieldGet(this, _N).set(t, n);\\n n && _classPrivateFieldGet(this, _N).set(n.id, n);\\n return n;\\n }\\n var _j = /*#__PURE__*/new WeakMap();\\n var _U = /*#__PURE__*/new WeakMap();\\n var _z = /*#__PURE__*/new WeakMap();\\n var _H = /*#__PURE__*/new WeakMap();\\n class CommandManager {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _j, {\\n writable: true,\\n value: []\\n });\\n _classPrivateFieldInitSpec(this, _U, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _z, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _H, {\\n writable: true,\\n value: -1\\n });\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 128;\\n _classPrivateFieldSet(this, _z, t);\\n }\\n add(t) {\\n let {\\n cmd: e,\\n undo: n,\\n mustExec: i,\\n type: r = NaN,\\n overwriteIfSameType: s = !1,\\n keepUndo: a = !1\\n } = t;\\n i && e();\\n if (_classPrivateFieldGet(this, _U)) return;\\n const o = {\\n cmd: e,\\n undo: n,\\n type: r\\n };\\n if (-1 === _classPrivateFieldGet(this, _H)) {\\n _classPrivateFieldGet(this, _j).length > 0 && (_classPrivateFieldGet(this, _j).length = 0);\\n _classPrivateFieldSet(this, _H, 0);\\n _classPrivateFieldGet(this, _j).push(o);\\n return;\\n }\\n if (s && _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type === r) {\\n a && (o.undo = _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo);\\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)] = o;\\n return;\\n }\\n const l = _classPrivateFieldGet(this, _H) + 1;\\n if (l === _classPrivateFieldGet(this, _z)) _classPrivateFieldGet(this, _j).splice(0, 1);else {\\n _classPrivateFieldSet(this, _H, l);\\n l < _classPrivateFieldGet(this, _j).length && _classPrivateFieldGet(this, _j).splice(l);\\n }\\n _classPrivateFieldGet(this, _j).push(o);\\n }\\n stopUndoAccumulation() {\\n -1 !== _classPrivateFieldGet(this, _H) && (_classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type = NaN);\\n }\\n undo() {\\n if (-1 !== _classPrivateFieldGet(this, _H)) {\\n _classPrivateFieldSet(this, _U, !0);\\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo();\\n _classPrivateFieldSet(this, _U, !1);\\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) - 1);\\n }\\n }\\n redo() {\\n if (_classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1) {\\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) + 1);\\n _classPrivateFieldSet(this, _U, !0);\\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].cmd();\\n _classPrivateFieldSet(this, _U, !1);\\n }\\n }\\n hasSomethingToUndo() {\\n return -1 !== _classPrivateFieldGet(this, _H);\\n }\\n hasSomethingToRedo() {\\n return _classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1;\\n }\\n destroy() {\\n _classPrivateFieldSet(this, _j, null);\\n }\\n }\\n e.CommandManager = CommandManager;\\n var _q = /*#__PURE__*/new WeakSet();\\n class KeyboardManager {\\n constructor(_t5) {\\n _classPrivateMethodInitSpec(this, _q);\\n this.buffer = [];\\n this.callbacks = new Map();\\n this.allKeys = new Set();\\n const {\\n isMac: _e5\\n } = i.FeatureTest.platform;\\n for (const [n, i, r = {}] of _t5) for (const t of n) {\\n const n = t.startsWith(\\"mac+\\");\\n if (_e5 && n) {\\n this.callbacks.set(t.slice(4), {\\n callback: i,\\n options: r\\n });\\n this.allKeys.add(t.split(\\"+\\").at(-1));\\n } else if (!_e5 && !n) {\\n this.callbacks.set(t, {\\n callback: i,\\n options: r\\n });\\n this.allKeys.add(t.split(\\"+\\").at(-1));\\n }\\n }\\n }\\n exec(t, e) {\\n if (!this.allKeys.has(e.key)) return;\\n const n = this.callbacks.get(_classPrivateMethodGet(this, _q, _q2).call(this, e));\\n if (!n) return;\\n const {\\n callback: i,\\n options: {\\n bubbles: r = !1,\\n args: s = [],\\n checker: a = null\\n }\\n } = n;\\n if (!a || a(t, e)) {\\n i.bind(t, ...s)();\\n if (!r) {\\n e.stopPropagation();\\n e.preventDefault();\\n }\\n }\\n }\\n }\\n function _q2(t) {\\n t.altKey && this.buffer.push(\\"alt\\");\\n t.ctrlKey && this.buffer.push(\\"ctrl\\");\\n t.metaKey && this.buffer.push(\\"meta\\");\\n t.shiftKey && this.buffer.push(\\"shift\\");\\n this.buffer.push(t.key);\\n const e = this.buffer.join(\\"+\\");\\n this.buffer.length = 0;\\n return e;\\n }\\n e.KeyboardManager = KeyboardManager;\\n class ColorManager {\\n get _colors() {\\n const t = new Map([[\\"CanvasText\\", null], [\\"Canvas\\", null]]);\\n (0, r.getColorValues)(t);\\n return (0, i.shadow)(this, \\"_colors\\", t);\\n }\\n convert(t) {\\n const e = (0, r.getRGB)(t);\\n if (!window.matchMedia(\\"(forced-colors: active)\\").matches) return e;\\n for (const [t, n] of this._colors) if (n.every((t, n) => t === e[n])) return ColorManager._colorsMapping.get(t);\\n return e;\\n }\\n getHexCode(t) {\\n const e = this._colors.get(t);\\n return e ? i.Util.makeHexColor(...e) : t;\\n }\\n }\\n _defineProperty(ColorManager, \\"_colorsMapping\\", new Map([[\\"CanvasText\\", [0, 0, 0]], [\\"Canvas\\", [255, 255, 255]]]));\\n e.ColorManager = ColorManager;\\n var _W = /*#__PURE__*/new WeakMap();\\n var _G = /*#__PURE__*/new WeakMap();\\n var _V = /*#__PURE__*/new WeakMap();\\n var _$ = /*#__PURE__*/new WeakMap();\\n var _X = /*#__PURE__*/new WeakMap();\\n var _K = /*#__PURE__*/new WeakMap();\\n var _Y = /*#__PURE__*/new WeakMap();\\n var _J = /*#__PURE__*/new WeakMap();\\n var _Q = /*#__PURE__*/new WeakMap();\\n var _Z = /*#__PURE__*/new WeakMap();\\n var _tt = /*#__PURE__*/new WeakMap();\\n var _et = /*#__PURE__*/new WeakMap();\\n var _nt = /*#__PURE__*/new WeakMap();\\n var _it = /*#__PURE__*/new WeakMap();\\n var _rt = /*#__PURE__*/new WeakMap();\\n var _st = /*#__PURE__*/new WeakMap();\\n var _at = /*#__PURE__*/new WeakMap();\\n var _ot = /*#__PURE__*/new WeakMap();\\n var _lt = /*#__PURE__*/new WeakMap();\\n var _ct = /*#__PURE__*/new WeakMap();\\n var _ht = /*#__PURE__*/new WeakMap();\\n var _dt = /*#__PURE__*/new WeakMap();\\n var _ut = /*#__PURE__*/new WeakMap();\\n var _pt = /*#__PURE__*/new WeakMap();\\n var _ft = /*#__PURE__*/new WeakMap();\\n var _gt = /*#__PURE__*/new WeakMap();\\n var _mt = /*#__PURE__*/new WeakMap();\\n var _bt = /*#__PURE__*/new WeakMap();\\n var _yt = /*#__PURE__*/new WeakSet();\\n var _vt = /*#__PURE__*/new WeakSet();\\n var _At = /*#__PURE__*/new WeakSet();\\n var _t6 = /*#__PURE__*/new WeakSet();\\n var _xt = /*#__PURE__*/new WeakSet();\\n var _wt = /*#__PURE__*/new WeakSet();\\n var _Tt = /*#__PURE__*/new WeakSet();\\n var _Pt = /*#__PURE__*/new WeakSet();\\n var _St = /*#__PURE__*/new WeakSet();\\n var _Ct = /*#__PURE__*/new WeakSet();\\n var _Et = /*#__PURE__*/new WeakSet();\\n class AnnotationEditorUIManager {\\n static get _keyboardManager() {\\n const t = AnnotationEditorUIManager.prototype,\\n arrowChecker = t => {\\n const {\\n activeElement: e\\n } = document;\\n return e && _classPrivateFieldGet(t, _bt).contains(e) && t.hasSomethingToControl();\\n },\\n e = this.TRANSLATE_SMALL,\\n n = this.TRANSLATE_BIG;\\n return (0, i.shadow)(this, \\"_keyboardManager\\", new KeyboardManager([[[\\"ctrl+a\\", \\"mac+meta+a\\"], t.selectAll], [[\\"ctrl+z\\", \\"mac+meta+z\\"], t.undo], [[\\"ctrl+y\\", \\"ctrl+shift+z\\", \\"mac+meta+shift+z\\", \\"ctrl+shift+Z\\", \\"mac+meta+shift+Z\\"], t.redo], [[\\"Backspace\\", \\"alt+Backspace\\", \\"ctrl+Backspace\\", \\"shift+Backspace\\", \\"mac+Backspace\\", \\"mac+alt+Backspace\\", \\"mac+ctrl+Backspace\\", \\"Delete\\", \\"ctrl+Delete\\", \\"shift+Delete\\", \\"mac+Delete\\"], t.delete], [[\\"Escape\\", \\"mac+Escape\\"], t.unselectAll], [[\\"ArrowLeft\\", \\"mac+ArrowLeft\\"], t.translateSelectedEditors, {\\n args: [-e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowLeft\\", \\"mac+shift+ArrowLeft\\"], t.translateSelectedEditors, {\\n args: [-n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowRight\\", \\"mac+ArrowRight\\"], t.translateSelectedEditors, {\\n args: [e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowRight\\", \\"mac+shift+ArrowRight\\"], t.translateSelectedEditors, {\\n args: [n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowUp\\", \\"mac+ArrowUp\\"], t.translateSelectedEditors, {\\n args: [0, -e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowUp\\", \\"mac+shift+ArrowUp\\"], t.translateSelectedEditors, {\\n args: [0, -n],\\n checker: arrowChecker\\n }], [[\\"ArrowDown\\", \\"mac+ArrowDown\\"], t.translateSelectedEditors, {\\n args: [0, e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowDown\\", \\"mac+shift+ArrowDown\\"], t.translateSelectedEditors, {\\n args: [0, n],\\n checker: arrowChecker\\n }]]));\\n }\\n constructor(_t8, _e6, _n4, _i3) {\\n _classPrivateMethodInitSpec(this, _Et);\\n _classPrivateMethodInitSpec(this, _Ct);\\n _classPrivateMethodInitSpec(this, _St);\\n _classPrivateMethodInitSpec(this, _Pt);\\n _classPrivateMethodInitSpec(this, _Tt);\\n _classPrivateMethodInitSpec(this, _wt);\\n _classPrivateMethodInitSpec(this, _xt);\\n _classPrivateMethodInitSpec(this, _t6);\\n _classPrivateMethodInitSpec(this, _At);\\n _classPrivateMethodInitSpec(this, _vt);\\n _classPrivateMethodInitSpec(this, _yt);\\n _classPrivateFieldInitSpec(this, _W, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _G, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _V, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _$, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _X, {\\n writable: true,\\n value: new CommandManager()\\n });\\n _classPrivateFieldInitSpec(this, _K, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _Y, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _J, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Q, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _Z, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _tt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _et, {\\n writable: true,\\n value: new IdManager()\\n });\\n _classPrivateFieldInitSpec(this, _nt, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _it, {\\n writable: true,\\n value: i.AnnotationEditorType.NONE\\n });\\n _classPrivateFieldInitSpec(this, _rt, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _st, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _at, {\\n writable: true,\\n value: this.copy.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ot, {\\n writable: true,\\n value: this.cut.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _lt, {\\n writable: true,\\n value: this.paste.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ct, {\\n writable: true,\\n value: this.keydown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ht, {\\n writable: true,\\n value: this.onEditingAction.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _dt, {\\n writable: true,\\n value: this.onPageChanging.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ut, {\\n writable: true,\\n value: this.onScaleChanging.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _pt, {\\n writable: true,\\n value: this.onRotationChanging.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ft, {\\n writable: true,\\n value: {\\n isEditing: !1,\\n isEmpty: !0,\\n hasSomethingToUndo: !1,\\n hasSomethingToRedo: !1,\\n hasSelectedEditor: !1\\n }\\n });\\n _classPrivateFieldInitSpec(this, _gt, {\\n writable: true,\\n value: [0, 0]\\n });\\n _classPrivateFieldInitSpec(this, _mt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _bt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldSet(this, _bt, _t8);\\n _classPrivateFieldSet(this, _Z, _e6);\\n _classPrivateFieldGet(this, _Z)._on(\\"editingaction\\", _classPrivateFieldGet(this, _ht));\\n _classPrivateFieldGet(this, _Z)._on(\\"pagechanging\\", _classPrivateFieldGet(this, _dt));\\n _classPrivateFieldGet(this, _Z)._on(\\"scalechanging\\", _classPrivateFieldGet(this, _ut));\\n _classPrivateFieldGet(this, _Z)._on(\\"rotationchanging\\", _classPrivateFieldGet(this, _pt));\\n _classPrivateFieldSet(this, _$, _n4.annotationStorage);\\n _classPrivateFieldSet(this, _tt, _n4.filterFactory);\\n _classPrivateFieldSet(this, _st, _i3);\\n this.viewParameters = {\\n realScale: r.PixelsPerInch.PDF_TO_CSS_UNITS,\\n rotation: 0\\n };\\n }\\n destroy() {\\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\\n _classPrivateFieldGet(this, _Z)._off(\\"editingaction\\", _classPrivateFieldGet(this, _ht));\\n _classPrivateFieldGet(this, _Z)._off(\\"pagechanging\\", _classPrivateFieldGet(this, _dt));\\n _classPrivateFieldGet(this, _Z)._off(\\"scalechanging\\", _classPrivateFieldGet(this, _ut));\\n _classPrivateFieldGet(this, _Z)._off(\\"rotationchanging\\", _classPrivateFieldGet(this, _pt));\\n for (const t of _classPrivateFieldGet(this, _V).values()) t.destroy();\\n _classPrivateFieldGet(this, _V).clear();\\n _classPrivateFieldGet(this, _G).clear();\\n _classPrivateFieldGet(this, _Q).clear();\\n _classPrivateFieldSet(this, _W, null);\\n _classPrivateFieldGet(this, _rt).clear();\\n _classPrivateFieldGet(this, _X).destroy();\\n }\\n get hcmFilter() {\\n return (0, i.shadow)(this, \\"hcmFilter\\", _classPrivateFieldGet(this, _st) ? _classPrivateFieldGet(this, _tt).addHCMFilter(_classPrivateFieldGet(this, _st).foreground, _classPrivateFieldGet(this, _st).background) : \\"none\\");\\n }\\n onPageChanging(t) {\\n let {\\n pageNumber: e\\n } = t;\\n _classPrivateFieldSet(this, _K, e - 1);\\n }\\n focusMainContainer() {\\n _classPrivateFieldGet(this, _bt).focus();\\n }\\n addShouldRescale(t) {\\n _classPrivateFieldGet(this, _Q).add(t);\\n }\\n removeShouldRescale(t) {\\n _classPrivateFieldGet(this, _Q).delete(t);\\n }\\n onScaleChanging(t) {\\n let {\\n scale: e\\n } = t;\\n this.commitOrRemove();\\n this.viewParameters.realScale = e * r.PixelsPerInch.PDF_TO_CSS_UNITS;\\n for (const t of _classPrivateFieldGet(this, _Q)) t.onScaleChanging();\\n }\\n onRotationChanging(t) {\\n let {\\n pagesRotation: e\\n } = t;\\n this.commitOrRemove();\\n this.viewParameters.rotation = e;\\n }\\n addToAnnotationStorage(t) {\\n t.isEmpty() || !_classPrivateFieldGet(this, _$) || _classPrivateFieldGet(this, _$).has(t.id) || _classPrivateFieldGet(this, _$).setValue(t.id, t);\\n }\\n copy(t) {\\n t.preventDefault();\\n _classPrivateFieldGet(this, _W) && _classPrivateFieldGet(this, _W).commitOrRemove();\\n if (!this.hasSelection) return;\\n const e = [];\\n for (const t of _classPrivateFieldGet(this, _rt)) {\\n const n = t.serialize(!0);\\n n && e.push(n);\\n }\\n 0 !== e.length && t.clipboardData.setData(\\"application/pdfjs\\", JSON.stringify(e));\\n }\\n cut(t) {\\n this.copy(t);\\n this.delete();\\n }\\n paste(t) {\\n t.preventDefault();\\n let e = t.clipboardData.getData(\\"application/pdfjs\\");\\n if (!e) return;\\n try {\\n e = JSON.parse(e);\\n } catch (t) {\\n (0, i.warn)(\\"paste: \\\\\\"\\".concat(t.message, \\"\\\\\\".\\"));\\n return;\\n }\\n if (!Array.isArray(e)) return;\\n this.unselectAll();\\n const n = this.currentLayer;\\n try {\\n const t = [];\\n for (const i of e) {\\n const e = n.deserialize(i);\\n if (!e) return;\\n t.push(e);\\n }\\n const cmd = () => {\\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\\n _classPrivateMethodGet(this, _Et, _Et2).call(this, t);\\n },\\n undo = () => {\\n for (const e of t) e.remove();\\n };\\n this.addCommands({\\n cmd: cmd,\\n undo: undo,\\n mustExec: !0\\n });\\n } catch (t) {\\n (0, i.warn)(\\"paste: \\\\\\"\\".concat(t.message, \\"\\\\\\".\\"));\\n }\\n }\\n keydown(t) {\\n var _this$getActive;\\n ((_this$getActive = this.getActive()) === null || _this$getActive === void 0 ? void 0 : _this$getActive.shouldGetKeyboardEvents()) || AnnotationEditorUIManager._keyboardManager.exec(this, t);\\n }\\n onEditingAction(t) {\\n [\\"undo\\", \\"redo\\", \\"delete\\", \\"selectAll\\"].includes(t.name) && this[t.name]();\\n }\\n setEditingState(t) {\\n if (t) {\\n _classPrivateMethodGet(this, _yt, _yt2).call(this);\\n _classPrivateMethodGet(this, _At, _At2).call(this);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n isEditing: _classPrivateFieldGet(this, _it) !== i.AnnotationEditorType.NONE,\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this),\\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\\n hasSelectedEditor: !1\\n });\\n } else {\\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\\n _classPrivateMethodGet(this, _t6, _t7).call(this);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n isEditing: !1\\n });\\n }\\n }\\n registerEditorTypes(t) {\\n if (!_classPrivateFieldGet(this, _J)) {\\n _classPrivateFieldSet(this, _J, t);\\n for (const t of _classPrivateFieldGet(this, _J)) _classPrivateMethodGet(this, _wt, _wt2).call(this, t.defaultPropertiesToUpdate);\\n }\\n }\\n getId() {\\n return _classPrivateFieldGet(this, _et).getId();\\n }\\n get currentLayer() {\\n return _classPrivateFieldGet(this, _V).get(_classPrivateFieldGet(this, _K));\\n }\\n get currentPageIndex() {\\n return _classPrivateFieldGet(this, _K);\\n }\\n addLayer(t) {\\n _classPrivateFieldGet(this, _V).set(t.pageIndex, t);\\n _classPrivateFieldGet(this, _nt) ? t.enable() : t.disable();\\n }\\n removeLayer(t) {\\n _classPrivateFieldGet(this, _V).delete(t.pageIndex);\\n }\\n updateMode(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n _classPrivateFieldSet(this, _it, t);\\n if (t !== i.AnnotationEditorType.NONE) {\\n this.setEditingState(!0);\\n _classPrivateMethodGet(this, _Tt, _Tt2).call(this);\\n for (const e of _classPrivateFieldGet(this, _V).values()) e.updateMode(t);\\n if (e) for (const t of _classPrivateFieldGet(this, _G).values()) if (t.annotationElementId === e) {\\n this.setSelected(t);\\n t.enterInEditMode();\\n break;\\n }\\n } else {\\n this.setEditingState(!1);\\n _classPrivateMethodGet(this, _Pt, _Pt2).call(this);\\n }\\n }\\n updateToolbar(t) {\\n t !== _classPrivateFieldGet(this, _it) && _classPrivateFieldGet(this, _Z).dispatch(\\"switchannotationeditormode\\", {\\n source: this,\\n mode: t\\n });\\n }\\n updateParams(t, e) {\\n if (_classPrivateFieldGet(this, _J)) {\\n for (const n of _classPrivateFieldGet(this, _rt)) n.updateParams(t, e);\\n for (const n of _classPrivateFieldGet(this, _J)) n.updateDefaultParams(t, e);\\n }\\n }\\n getEditors(t) {\\n const e = [];\\n for (const n of _classPrivateFieldGet(this, _G).values()) n.pageIndex === t && e.push(n);\\n return e;\\n }\\n getEditor(t) {\\n return _classPrivateFieldGet(this, _G).get(t);\\n }\\n addEditor(t) {\\n _classPrivateFieldGet(this, _G).set(t.id, t);\\n }\\n removeEditor(t) {\\n var _classPrivateFieldGet4;\\n _classPrivateFieldGet(this, _G).delete(t.id);\\n this.unselect(t);\\n t.annotationElementId && _classPrivateFieldGet(this, _Y).has(t.annotationElementId) || ((_classPrivateFieldGet4 = _classPrivateFieldGet(this, _$)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.remove(t.id));\\n }\\n addDeletedAnnotationElement(t) {\\n _classPrivateFieldGet(this, _Y).add(t.annotationElementId);\\n t.deleted = !0;\\n }\\n isDeletedAnnotationElement(t) {\\n return _classPrivateFieldGet(this, _Y).has(t);\\n }\\n removeDeletedAnnotationElement(t) {\\n _classPrivateFieldGet(this, _Y).delete(t.annotationElementId);\\n t.deleted = !1;\\n }\\n setActiveEditor(t) {\\n if (_classPrivateFieldGet(this, _W) !== t) {\\n _classPrivateFieldSet(this, _W, t);\\n t && _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\\n }\\n }\\n toggleSelected(t) {\\n if (_classPrivateFieldGet(this, _rt).has(t)) {\\n _classPrivateFieldGet(this, _rt).delete(t);\\n t.unselect();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: this.hasSelection\\n });\\n } else {\\n _classPrivateFieldGet(this, _rt).add(t);\\n t.select();\\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !0\\n });\\n }\\n }\\n setSelected(t) {\\n for (const e of _classPrivateFieldGet(this, _rt)) e !== t && e.unselect();\\n _classPrivateFieldGet(this, _rt).clear();\\n _classPrivateFieldGet(this, _rt).add(t);\\n t.select();\\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !0\\n });\\n }\\n isSelected(t) {\\n return _classPrivateFieldGet(this, _rt).has(t);\\n }\\n unselect(t) {\\n t.unselect();\\n _classPrivateFieldGet(this, _rt).delete(t);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: this.hasSelection\\n });\\n }\\n get hasSelection() {\\n return 0 !== _classPrivateFieldGet(this, _rt).size;\\n }\\n stopUndoAccumulation() {\\n _classPrivateFieldGet(this, _X).stopUndoAccumulation();\\n }\\n undo() {\\n _classPrivateFieldGet(this, _X).undo();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\\n hasSomethingToRedo: !0,\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\\n });\\n }\\n redo() {\\n _classPrivateFieldGet(this, _X).redo();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSomethingToUndo: !0,\\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\\n });\\n }\\n addCommands(t) {\\n _classPrivateFieldGet(this, _X).add(t);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSomethingToUndo: !0,\\n hasSomethingToRedo: !1,\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\\n });\\n }\\n delete() {\\n this.commitOrRemove();\\n if (!this.hasSelection) return;\\n const t = [..._classPrivateFieldGet(this, _rt)];\\n this.addCommands({\\n cmd: () => {\\n for (const e of t) e.remove();\\n },\\n undo: () => {\\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\\n },\\n mustExec: !0\\n });\\n }\\n commitOrRemove() {\\n var _classPrivateFieldGet5;\\n (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _W)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.commitOrRemove();\\n }\\n hasSomethingToControl() {\\n return _classPrivateFieldGet(this, _W) || this.hasSelection;\\n }\\n selectAll() {\\n for (const t of _classPrivateFieldGet(this, _rt)) t.commit();\\n _classPrivateMethodGet(this, _Et, _Et2).call(this, _classPrivateFieldGet(this, _G).values());\\n }\\n unselectAll() {\\n if (_classPrivateFieldGet(this, _W)) _classPrivateFieldGet(this, _W).commitOrRemove();else if (this.hasSelection) {\\n for (const t of _classPrivateFieldGet(this, _rt)) t.unselect();\\n _classPrivateFieldGet(this, _rt).clear();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !1\\n });\\n }\\n }\\n translateSelectedEditors(t, e) {\\n arguments.length > 2 && void 0 !== arguments[2] && arguments[2] || this.commitOrRemove();\\n if (!this.hasSelection) return;\\n _classPrivateFieldGet(this, _gt)[0] += t;\\n _classPrivateFieldGet(this, _gt)[1] += e;\\n const [n, i] = _classPrivateFieldGet(this, _gt),\\n r = [..._classPrivateFieldGet(this, _rt)];\\n _classPrivateFieldGet(this, _mt) && clearTimeout(_classPrivateFieldGet(this, _mt));\\n _classPrivateFieldSet(this, _mt, setTimeout(() => {\\n _classPrivateFieldSet(this, _mt, null);\\n _classPrivateFieldGet(this, _gt)[0] = _classPrivateFieldGet(this, _gt)[1] = 0;\\n this.addCommands({\\n cmd: () => {\\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(n, i);\\n },\\n undo: () => {\\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(-n, -i);\\n },\\n mustExec: !1\\n });\\n }, 1e3));\\n for (const n of r) n.translateInPage(t, e);\\n }\\n isActive(t) {\\n return _classPrivateFieldGet(this, _W) === t;\\n }\\n getActive() {\\n return _classPrivateFieldGet(this, _W);\\n }\\n getMode() {\\n return _classPrivateFieldGet(this, _it);\\n }\\n get imageManager() {\\n return (0, i.shadow)(this, \\"imageManager\\", new ImageManager());\\n }\\n }\\n function _yt2() {\\n window.addEventListener(\\"keydown\\", _classPrivateFieldGet(this, _ct), {\\n capture: !0\\n });\\n }\\n function _vt2() {\\n window.removeEventListener(\\"keydown\\", _classPrivateFieldGet(this, _ct), {\\n capture: !0\\n });\\n }\\n function _At2() {\\n document.addEventListener(\\"copy\\", _classPrivateFieldGet(this, _at));\\n document.addEventListener(\\"cut\\", _classPrivateFieldGet(this, _ot));\\n document.addEventListener(\\"paste\\", _classPrivateFieldGet(this, _lt));\\n }\\n function _t7() {\\n document.removeEventListener(\\"copy\\", _classPrivateFieldGet(this, _at));\\n document.removeEventListener(\\"cut\\", _classPrivateFieldGet(this, _ot));\\n document.removeEventListener(\\"paste\\", _classPrivateFieldGet(this, _lt));\\n }\\n function _xt2(t) {\\n Object.entries(t).some(t => {\\n let [e, n] = t;\\n return _classPrivateFieldGet(this, _ft)[e] !== n;\\n }) && _classPrivateFieldGet(this, _Z).dispatch(\\"annotationeditorstateschanged\\", {\\n source: this,\\n details: Object.assign(_classPrivateFieldGet(this, _ft), t)\\n });\\n }\\n function _wt2(t) {\\n _classPrivateFieldGet(this, _Z).dispatch(\\"annotationeditorparamschanged\\", {\\n source: this,\\n details: t\\n });\\n }\\n function _Tt2() {\\n if (!_classPrivateFieldGet(this, _nt)) {\\n _classPrivateFieldSet(this, _nt, !0);\\n for (const t of _classPrivateFieldGet(this, _V).values()) t.enable();\\n }\\n }\\n function _Pt2() {\\n this.unselectAll();\\n if (_classPrivateFieldGet(this, _nt)) {\\n _classPrivateFieldSet(this, _nt, !1);\\n for (const t of _classPrivateFieldGet(this, _V).values()) t.disable();\\n }\\n }\\n function _St2(t) {\\n const e = _classPrivateFieldGet(this, _V).get(t.pageIndex);\\n e ? e.addOrRebuild(t) : this.addEditor(t);\\n }\\n function _Ct2() {\\n if (0 === _classPrivateFieldGet(this, _G).size) return !0;\\n if (1 === _classPrivateFieldGet(this, _G).size) for (const t of _classPrivateFieldGet(this, _G).values()) return t.isEmpty();\\n return !1;\\n }\\n function _Et2(t) {\\n _classPrivateFieldGet(this, _rt).clear();\\n for (const e of t) if (!e.isEmpty()) {\\n _classPrivateFieldGet(this, _rt).add(e);\\n e.select();\\n }\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !0\\n });\\n }\\n _defineProperty(AnnotationEditorUIManager, \\"TRANSLATE_SMALL\\", 1);\\n _defineProperty(AnnotationEditorUIManager, \\"TRANSLATE_BIG\\", 10);\\n e.AnnotationEditorUIManager = AnnotationEditorUIManager;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(6),\\n s = n(4),\\n a = n(24),\\n o = n(14),\\n l = n(8),\\n c = n(21),\\n h = n(20),\\n d = n(91),\\n u = n(39),\\n p = n(77),\\n f = n(64),\\n g = n(158),\\n m = n(7),\\n b = n(166),\\n v = n(27),\\n y = s.JSON,\\n A = s.Number,\\n _ = s.SyntaxError,\\n S = y && y.parse,\\n E = a(\\"Object\\", \\"keys\\"),\\n x = Object.getOwnPropertyDescriptor,\\n w = o(\\"\\".charAt),\\n C = o(\\"\\".slice),\\n T = o(/./.exec),\\n P = o([].push),\\n k = /^\\\\d$/,\\n M = /^[1-9]$/,\\n R = /^(-|\\\\d)$/,\\n I = /^[\\\\t\\\\n\\\\r ]$/,\\n internalize = function internalize(t, e, n, i) {\\n var r,\\n s,\\n a,\\n o,\\n c,\\n p = t[e],\\n g = i && p === i.value,\\n m = g && \\"string\\" == typeof i.source ? {\\n source: i.source\\n } : {};\\n if (h(p)) {\\n var b = d(p),\\n v = g ? i.nodes : b ? [] : {};\\n if (b) {\\n r = v.length;\\n a = f(p);\\n for (o = 0; o < a; o++) internalizeProperty(p, o, internalize(p, \\"\\" + o, n, o < r ? v[o] : void 0));\\n } else {\\n s = E(p);\\n a = f(s);\\n for (o = 0; o < a; o++) {\\n c = s[o];\\n internalizeProperty(p, c, internalize(p, c, n, u(v, c) ? v[c] : void 0));\\n }\\n }\\n }\\n return l(n, t, e, p, m);\\n },\\n internalizeProperty = function internalizeProperty(t, e, n) {\\n if (r) {\\n var i = x(t, e);\\n if (i && !i.configurable) return;\\n }\\n void 0 === n ? delete t[e] : g(t, e, n);\\n },\\n Node = function Node(t, e, n, i) {\\n this.value = t;\\n this.end = e;\\n this.source = n;\\n this.nodes = i;\\n },\\n Context = function Context(t, e) {\\n this.source = t;\\n this.index = e;\\n };\\n Context.prototype = {\\n fork: function fork(t) {\\n return new Context(this.source, t);\\n },\\n parse: function parse() {\\n var t = this.source,\\n e = this.skip(I, this.index),\\n n = this.fork(e),\\n i = w(t, e);\\n if (T(R, i)) return n.number();\\n switch (i) {\\n case \\"{\\":\\n return n.object();\\n case \\"[\\":\\n return n.array();\\n case '\\"':\\n return n.string();\\n case \\"t\\":\\n return n.keyword(!0);\\n case \\"f\\":\\n return n.keyword(!1);\\n case \\"n\\":\\n return n.keyword(null);\\n }\\n throw _('Unexpected character: \\"' + i + '\\" at: ' + e);\\n },\\n node: function node(t, e, n, i, r) {\\n return new Node(e, i, t ? null : C(this.source, n, i), r);\\n },\\n object: function object() {\\n for (var t = this.source, e = this.index + 1, n = !1, i = {}, r = {}; e < t.length;) {\\n e = this.until(['\\"', \\"}\\"], e);\\n if (\\"}\\" == w(t, e) && !n) {\\n e++;\\n break;\\n }\\n var s = this.fork(e).string(),\\n a = s.value;\\n e = s.end;\\n e = this.until([\\":\\"], e) + 1;\\n e = this.skip(I, e);\\n s = this.fork(e).parse();\\n g(r, a, s);\\n g(i, a, s.value);\\n e = this.until([\\",\\", \\"}\\"], s.end);\\n var o = w(t, e);\\n if (\\",\\" == o) {\\n n = !0;\\n e++;\\n } else if (\\"}\\" == o) {\\n e++;\\n break;\\n }\\n }\\n return this.node(1, i, this.index, e, r);\\n },\\n array: function array() {\\n for (var t = this.source, e = this.index + 1, n = !1, i = [], r = []; e < t.length;) {\\n e = this.skip(I, e);\\n if (\\"]\\" == w(t, e) && !n) {\\n e++;\\n break;\\n }\\n var s = this.fork(e).parse();\\n P(r, s);\\n P(i, s.value);\\n e = this.until([\\",\\", \\"]\\"], s.end);\\n if (\\",\\" == w(t, e)) {\\n n = !0;\\n e++;\\n } else if (\\"]\\" == w(t, e)) {\\n e++;\\n break;\\n }\\n }\\n return this.node(1, i, this.index, e, r);\\n },\\n string: function string() {\\n var t = this.index,\\n e = b(this.source, this.index + 1);\\n return this.node(0, e.value, t, e.end);\\n },\\n number: function number() {\\n var t = this.source,\\n e = this.index,\\n n = e;\\n \\"-\\" == w(t, n) && n++;\\n if (\\"0\\" == w(t, n)) n++;else {\\n if (!T(M, w(t, n))) throw _(\\"Failed to parse number at: \\" + n);\\n n = this.skip(k, ++n);\\n }\\n \\".\\" == w(t, n) && (n = this.skip(k, ++n));\\n if (\\"e\\" == w(t, n) || \\"E\\" == w(t, n)) {\\n n++;\\n \\"+\\" != w(t, n) && \\"-\\" != w(t, n) || n++;\\n if (n == (n = this.skip(k, n))) throw _(\\"Failed to parse number's exponent value at: \\" + n);\\n }\\n return this.node(0, A(C(t, e, n)), e, n);\\n },\\n keyword: function keyword(t) {\\n var e = \\"\\" + t,\\n n = this.index,\\n i = n + e.length;\\n if (C(this.source, n, i) != e) throw _(\\"Failed to parse value at: \\" + n);\\n return this.node(0, t, n, i);\\n },\\n skip: function skip(t, e) {\\n for (var n = this.source; e < n.length && T(t, w(n, e)); e++);\\n return e;\\n },\\n until: function until(t, e) {\\n e = this.skip(I, e);\\n for (var n = w(this.source, e), i = 0; i < t.length; i++) if (t[i] == n) return e;\\n throw _('Unexpected character: \\"' + n + '\\" at: ' + e);\\n }\\n };\\n var D = m(function () {\\n var t,\\n e = \\"9007199254740993\\";\\n S(e, function (e, n, i) {\\n t = i.source;\\n });\\n return t !== e;\\n }),\\n O = v && !m(function () {\\n return 1 / S(\\"-0 \\\\t\\") != -1 / 0;\\n });\\n i({\\n target: \\"JSON\\",\\n stat: !0,\\n forced: D\\n }, {\\n parse: function parse(t, e) {\\n return O && !c(e) ? S(t) : function (t, e) {\\n t = p(t);\\n var n = new Context(t, 0, \\"\\"),\\n i = n.parse(),\\n r = i.value,\\n s = n.skip(I, i.end);\\n if (s < t.length) throw _('Unexpected extra character: \\"' + w(t, s) + '\\" after the parsed data at: ' + s);\\n return c(e) ? internalize({\\n \\"\\": r\\n }, \\"\\", e, i) : r;\\n }(t, e);\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(39),\\n s = SyntaxError,\\n a = parseInt,\\n o = String.fromCharCode,\\n l = i(\\"\\".charAt),\\n c = i(\\"\\".slice),\\n h = i(/./.exec),\\n d = {\\n '\\\\\\\\\\"': '\\"',\\n \\"\\\\\\\\\\\\\\\\\\": \\"\\\\\\\\\\",\\n \\"\\\\\\\\/\\": \\"/\\",\\n \\"\\\\\\\\b\\": \\"\\\\b\\",\\n \\"\\\\\\\\f\\": \\"\\\\f\\",\\n \\"\\\\\\\\n\\": \\"\\\\n\\",\\n \\"\\\\\\\\r\\": \\"\\\\r\\",\\n \\"\\\\\\\\t\\": \\"\\\\t\\"\\n },\\n u = /^[\\\\da-f]{4}$/i,\\n p = /^[\\\\u0000-\\\\u001F]$/;\\n t.exports = function (t, e) {\\n for (var n = !0, i = \\"\\"; e < t.length;) {\\n var f = l(t, e);\\n if (\\"\\\\\\\\\\" == f) {\\n var g = c(t, e, e + 2);\\n if (r(d, g)) {\\n i += d[g];\\n e += 2;\\n } else {\\n if (\\"\\\\\\\\u\\" != g) throw s('Unknown escape sequence: \\"' + g + '\\"');\\n var m = c(t, e += 2, e + 4);\\n if (!h(u, m)) throw s(\\"Bad Unicode escape at: \\" + e);\\n i += o(a(m, 16));\\n e += 4;\\n }\\n } else {\\n if ('\\"' == f) {\\n n = !1;\\n e++;\\n break;\\n }\\n if (h(p, f)) throw s(\\"Bad control character in string literal at: \\" + e);\\n i += f;\\n e++;\\n }\\n }\\n if (n) throw s(\\"Unterminated string at: \\" + e);\\n return {\\n value: i,\\n end: e\\n };\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class19;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.StatTimer = e.RenderingCancelledException = e.PixelsPerInch = e.PageViewport = e.PDFDateString = e.DOMStandardFontDataFactory = e.DOMSVGFactory = e.DOMFilterFactory = e.DOMCanvasFactory = e.DOMCMapReaderFactory = e.AnnotationPrefix = void 0;\\n e.deprecated = function deprecated(t) {\\n console.log(\\"Deprecated API usage: \\" + t);\\n };\\n e.getColorValues = function getColorValues(t) {\\n const e = document.createElement(\\"span\\");\\n e.style.visibility = \\"hidden\\";\\n document.body.append(e);\\n for (const n of t.keys()) {\\n e.style.color = n;\\n const i = window.getComputedStyle(e).color;\\n t.set(n, getRGB(i));\\n }\\n e.remove();\\n };\\n e.getCurrentTransform = function getCurrentTransform(t) {\\n const {\\n a: e,\\n b: n,\\n c: i,\\n d: r,\\n e: s,\\n f: a\\n } = t.getTransform();\\n return [e, n, i, r, s, a];\\n };\\n e.getCurrentTransformInverse = function getCurrentTransformInverse(t) {\\n const {\\n a: e,\\n b: n,\\n c: i,\\n d: r,\\n e: s,\\n f: a\\n } = t.getTransform().invertSelf();\\n return [e, n, i, r, s, a];\\n };\\n e.getFilenameFromUrl = function getFilenameFromUrl(t) {\\n arguments.length > 1 && void 0 !== arguments[1] && arguments[1] || ([t] = t.split(/[#?]/, 1));\\n return t.substring(t.lastIndexOf(\\"/\\") + 1);\\n };\\n e.getPdfFilenameFromUrl = function getPdfFilenameFromUrl(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \\"document.pdf\\";\\n if (\\"string\\" != typeof t) return e;\\n if (isDataScheme(t)) {\\n (0, r.warn)('getPdfFilenameFromUrl: ignore \\"data:\\"-URL for performance reasons.');\\n return e;\\n }\\n const n = /[^/?#=]+\\\\.pdf\\\\b(?!.*\\\\.pdf\\\\b)/i,\\n i = /^(?:(?:[^:]+:)?\\\\/\\\\/[^/]+)?([^?#]*)(\\\\?[^#]*)?(#.*)?$/.exec(t);\\n let s = n.exec(i[1]) || n.exec(i[2]) || n.exec(i[3]);\\n if (s) {\\n s = s[0];\\n if (s.includes(\\"%\\")) try {\\n s = n.exec(decodeURIComponent(s))[0];\\n } catch (_unused9) {}\\n }\\n return s || e;\\n };\\n e.getRGB = getRGB;\\n e.getXfaPageViewport = function getXfaPageViewport(t, e) {\\n let {\\n scale: n = 1,\\n rotation: i = 0\\n } = e;\\n const {\\n width: r,\\n height: s\\n } = t.attributes.style,\\n a = [0, 0, parseInt(r), parseInt(s)];\\n return new PageViewport({\\n viewBox: a,\\n scale: n,\\n rotation: i\\n });\\n };\\n e.isDataScheme = isDataScheme;\\n e.isPdfFile = function isPdfFile(t) {\\n return \\"string\\" == typeof t && /\\\\.pdf$/i.test(t);\\n };\\n e.isValidFetchUrl = isValidFetchUrl;\\n e.loadScript = function loadScript(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\\n return new Promise((n, i) => {\\n const r = document.createElement(\\"script\\");\\n r.src = t;\\n r.onload = function (t) {\\n e && r.remove();\\n n(t);\\n };\\n r.onerror = function () {\\n i(new Error(\\"Cannot load script at: \\".concat(r.src)));\\n };\\n (document.head || document.documentElement).append(r);\\n });\\n };\\n e.setLayerDimensions = function setLayerDimensions(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\\n i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];\\n if (e instanceof PageViewport) {\\n const {\\n pageWidth: i,\\n pageHeight: r\\n } = e.rawDims,\\n {\\n style: s\\n } = t,\\n a = \\"calc(var(--scale-factor) * \\".concat(i, \\"px)\\"),\\n o = \\"calc(var(--scale-factor) * \\".concat(r, \\"px)\\");\\n if (n && e.rotation % 180 != 0) {\\n s.width = o;\\n s.height = a;\\n } else {\\n s.width = a;\\n s.height = o;\\n }\\n }\\n i && t.setAttribute(\\"data-main-rotation\\", e.rotation);\\n };\\n n(2);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n n(84);\\n n(86);\\n n(87);\\n var i = n(168),\\n r = n(1);\\n const s = \\"http://www.w3.org/2000/svg\\";\\n e.AnnotationPrefix = \\"pdfjs_internal_id_\\";\\n class PixelsPerInch {}\\n _class19 = PixelsPerInch;\\n _defineProperty(PixelsPerInch, \\"CSS\\", 96);\\n _defineProperty(PixelsPerInch, \\"PDF\\", 72);\\n _defineProperty(PixelsPerInch, \\"PDF_TO_CSS_UNITS\\", _class19.CSS / _class19.PDF);\\n e.PixelsPerInch = PixelsPerInch;\\n var _kt = /*#__PURE__*/new WeakMap();\\n var _Mt = /*#__PURE__*/new WeakMap();\\n var _e7 = /*#__PURE__*/new WeakMap();\\n var _Rt = /*#__PURE__*/new WeakMap();\\n var _Ft = /*#__PURE__*/new WeakMap();\\n var _It = /*#__PURE__*/new WeakMap();\\n var _Dt = /*#__PURE__*/new WeakMap();\\n var _Ot = /*#__PURE__*/new WeakMap();\\n var _Lt = /*#__PURE__*/new WeakMap();\\n var _Nt = /*#__PURE__*/new WeakMap();\\n var _O3 = /*#__PURE__*/new WeakMap();\\n var _N2 = /*#__PURE__*/new WeakMap();\\n var _Bt = /*#__PURE__*/new WeakMap();\\n var _Ht = /*#__PURE__*/new WeakSet();\\n var _jt = /*#__PURE__*/new WeakSet();\\n var _qt = /*#__PURE__*/new WeakSet();\\n var _Ut = /*#__PURE__*/new WeakSet();\\n var _zt = /*#__PURE__*/new WeakSet();\\n class DOMFilterFactory extends i.BaseFilterFactory {\\n constructor() {\\n let {\\n docId: _t9,\\n ownerDocument: _e8 = globalThis.document\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n super();\\n _classPrivateMethodInitSpec(this, _zt);\\n _classPrivateMethodInitSpec(this, _Ut);\\n _classPrivateMethodInitSpec(this, _qt);\\n _classPrivateMethodInitSpec(this, _jt);\\n _classPrivateMethodInitSpec(this, _Ht);\\n _classPrivateFieldInitSpec(this, _Bt, {\\n get: _get_Bt,\\n set: void 0\\n });\\n _classPrivateFieldInitSpec(this, _N2, {\\n get: _get_N,\\n set: void 0\\n });\\n _classPrivateFieldInitSpec(this, _kt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Mt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _e7, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Rt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ft, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _It, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Dt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ot, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Lt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Nt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _O3, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldSet(this, _e7, _t9);\\n _classPrivateFieldSet(this, _Rt, _e8);\\n }\\n addFilter(t) {\\n var _this$O5, _this$O6;\\n if (!t) return \\"none\\";\\n let e,\\n n,\\n i,\\n r,\\n s = _classPrivateFieldGet(this, _N2).get(t);\\n if (s) return s;\\n if (1 === t.length) {\\n const s = t[0],\\n a = new Array(256);\\n for (let t = 0; t < 256; t++) a[t] = s[t] / 255;\\n r = e = n = i = a.join(\\",\\");\\n } else {\\n const [s, a, o] = t,\\n l = new Array(256),\\n c = new Array(256),\\n h = new Array(256);\\n for (let t = 0; t < 256; t++) {\\n l[t] = s[t] / 255;\\n c[t] = a[t] / 255;\\n h[t] = o[t] / 255;\\n }\\n e = l.join(\\",\\");\\n n = c.join(\\",\\");\\n i = h.join(\\",\\");\\n r = \\"\\".concat(e).concat(n).concat(i);\\n }\\n s = _classPrivateFieldGet(this, _N2).get(r);\\n if (s) {\\n _classPrivateFieldGet(this, _N2).set(t, s);\\n return s;\\n }\\n const a = \\"g_\\".concat(_classPrivateFieldGet(this, _e7), \\"_transfer_map_\\").concat((_classPrivateFieldSet(this, _O3, (_this$O5 = _classPrivateFieldGet(this, _O3), _this$O6 = _this$O5++, _this$O5)), _this$O6)),\\n o = \\"url(#\\".concat(a, \\")\\");\\n _classPrivateFieldGet(this, _N2).set(t, o);\\n _classPrivateFieldGet(this, _N2).set(r, o);\\n const l = _classPrivateMethodGet(this, _jt, _jt2).call(this, a);\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, e, n, i, l);\\n return o;\\n }\\n addHCMFilter(t, e) {\\n var _classPrivateFieldGet6;\\n const n = \\"\\".concat(t, \\"-\\").concat(e);\\n if (_classPrivateFieldGet(this, _It) === n) return _classPrivateFieldGet(this, _Dt);\\n _classPrivateFieldSet(this, _It, n);\\n _classPrivateFieldSet(this, _Dt, \\"none\\");\\n (_classPrivateFieldGet6 = _classPrivateFieldGet(this, _Ft)) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.remove();\\n if (!t || !e) return _classPrivateFieldGet(this, _Dt);\\n const i = _classPrivateMethodGet(this, _zt, _zt2).call(this, t);\\n t = r.Util.makeHexColor(...i);\\n const s = _classPrivateMethodGet(this, _zt, _zt2).call(this, e);\\n e = r.Util.makeHexColor(...s);\\n _classPrivateFieldGet(this, _Bt).style.color = \\"\\";\\n if (\\"#000000\\" === t && \\"#ffffff\\" === e || t === e) return _classPrivateFieldGet(this, _Dt);\\n const a = new Array(256);\\n for (let t = 0; t <= 255; t++) {\\n const e = t / 255;\\n a[t] = e <= .03928 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;\\n }\\n const o = a.join(\\",\\"),\\n l = \\"g_\\".concat(_classPrivateFieldGet(this, _e7), \\"_hcm_filter\\"),\\n c = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, l));\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, o, o, o, c);\\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, c);\\n const getSteps = (t, e) => {\\n const n = i[t] / 255,\\n r = s[t] / 255,\\n a = new Array(e + 1);\\n for (let t = 0; t <= e; t++) a[t] = n + t / e * (r - n);\\n return a.join(\\",\\");\\n };\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), c);\\n _classPrivateFieldSet(this, _Dt, \\"url(#\\".concat(l, \\")\\"));\\n return _classPrivateFieldGet(this, _Dt);\\n }\\n addHighlightHCMFilter(t, e, n, i) {\\n var _classPrivateFieldGet7;\\n const r = \\"\\".concat(t, \\"-\\").concat(e, \\"-\\").concat(n, \\"-\\").concat(i);\\n if (_classPrivateFieldGet(this, _Lt) === r) return _classPrivateFieldGet(this, _Nt);\\n _classPrivateFieldSet(this, _Lt, r);\\n _classPrivateFieldSet(this, _Nt, \\"none\\");\\n (_classPrivateFieldGet7 = _classPrivateFieldGet(this, _Ot)) === null || _classPrivateFieldGet7 === void 0 ? void 0 : _classPrivateFieldGet7.remove();\\n if (!t || !e) return _classPrivateFieldGet(this, _Nt);\\n const [s, a] = [t, e].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\\n let o = Math.round(.2126 * s[0] + .7152 * s[1] + .0722 * s[2]),\\n l = Math.round(.2126 * a[0] + .7152 * a[1] + .0722 * a[2]),\\n [c, h] = [n, i].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\\n l < o && ([o, l, c, h] = [l, o, h, c]);\\n _classPrivateFieldGet(this, _Bt).style.color = \\"\\";\\n const getSteps = (t, e, n) => {\\n const i = new Array(256),\\n r = (l - o) / n,\\n s = t / 255,\\n a = (e - t) / (255 * n);\\n let c = 0;\\n for (let t = 0; t <= n; t++) {\\n const e = Math.round(o + t * r),\\n n = s + t * a;\\n for (let t = c; t <= e; t++) i[t] = n;\\n c = e + 1;\\n }\\n for (let t = c; t < 256; t++) i[t] = i[c - 1];\\n return i.join(\\",\\");\\n },\\n d = \\"g_\\".concat(_classPrivateFieldGet(this, _e7), \\"_hcm_highlight_filter\\"),\\n u = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, d));\\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, u);\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(c[0], h[0], 5), getSteps(c[1], h[1], 5), getSteps(c[2], h[2], 5), u);\\n _classPrivateFieldSet(this, _Nt, \\"url(#\\".concat(d, \\")\\"));\\n return _classPrivateFieldGet(this, _Nt);\\n }\\n destroy() {\\n if (!(arguments.length > 0 && void 0 !== arguments[0] && arguments[0]) || !_classPrivateFieldGet(this, _Dt) && !_classPrivateFieldGet(this, _Nt)) {\\n if (_classPrivateFieldGet(this, _Mt)) {\\n _classPrivateFieldGet(this, _Mt).parentNode.parentNode.remove();\\n _classPrivateFieldSet(this, _Mt, null);\\n }\\n if (_classPrivateFieldGet(this, _kt)) {\\n _classPrivateFieldGet(this, _kt).clear();\\n _classPrivateFieldSet(this, _kt, null);\\n }\\n _classPrivateFieldSet(this, _O3, 0);\\n }\\n }\\n }\\n function _get_N() {\\n return _classPrivateFieldGet(this, _kt) || _classPrivateFieldSet(this, _kt, new Map());\\n }\\n function _get_Bt() {\\n if (!_classPrivateFieldGet(this, _Mt)) {\\n const t = _classPrivateFieldGet(this, _Rt).createElement(\\"div\\"),\\n {\\n style: e\\n } = t;\\n e.visibility = \\"hidden\\";\\n e.contain = \\"strict\\";\\n e.width = e.height = 0;\\n e.position = \\"absolute\\";\\n e.top = e.left = 0;\\n e.zIndex = -1;\\n const n = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"svg\\");\\n n.setAttribute(\\"width\\", 0);\\n n.setAttribute(\\"height\\", 0);\\n _classPrivateFieldSet(this, _Mt, _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"defs\\"));\\n t.append(n);\\n n.append(_classPrivateFieldGet(this, _Mt));\\n _classPrivateFieldGet(this, _Rt).body.append(t);\\n }\\n return _classPrivateFieldGet(this, _Mt);\\n }\\n function _Ht2(t) {\\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"feColorMatrix\\");\\n e.setAttribute(\\"type\\", \\"matrix\\");\\n e.setAttribute(\\"values\\", \\"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\\");\\n t.append(e);\\n }\\n function _jt2(t) {\\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"filter\\");\\n e.setAttribute(\\"color-interpolation-filters\\", \\"sRGB\\");\\n e.setAttribute(\\"id\\", t);\\n _classPrivateFieldGet(this, _Bt).append(e);\\n return e;\\n }\\n function _qt2(t, e, n) {\\n const i = _classPrivateFieldGet(this, _Rt).createElementNS(s, e);\\n i.setAttribute(\\"type\\", \\"discrete\\");\\n i.setAttribute(\\"tableValues\\", n);\\n t.append(i);\\n }\\n function _Ut2(t, e, n, i) {\\n const r = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"feComponentTransfer\\");\\n i.append(r);\\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \\"feFuncR\\", t);\\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \\"feFuncG\\", e);\\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \\"feFuncB\\", n);\\n }\\n function _zt2(t) {\\n _classPrivateFieldGet(this, _Bt).style.color = t;\\n return getRGB(getComputedStyle(_classPrivateFieldGet(this, _Bt)).getPropertyValue(\\"color\\"));\\n }\\n e.DOMFilterFactory = DOMFilterFactory;\\n class DOMCanvasFactory extends i.BaseCanvasFactory {\\n constructor() {\\n let {\\n ownerDocument: t = globalThis.document\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n super();\\n this._document = t;\\n }\\n _createCanvas(t, e) {\\n const n = this._document.createElement(\\"canvas\\");\\n n.width = t;\\n n.height = e;\\n return n;\\n }\\n }\\n e.DOMCanvasFactory = DOMCanvasFactory;\\n async function fetchData(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\\n if (isValidFetchUrl(t, document.baseURI)) {\\n const n = await fetch(t);\\n if (!n.ok) throw new Error(n.statusText);\\n return e ? new Uint8Array(await n.arrayBuffer()) : (0, r.stringToBytes)(await n.text());\\n }\\n return new Promise((n, i) => {\\n const s = new XMLHttpRequest();\\n s.open(\\"GET\\", t, !0);\\n e && (s.responseType = \\"arraybuffer\\");\\n s.onreadystatechange = () => {\\n if (s.readyState === XMLHttpRequest.DONE) {\\n if (200 === s.status || 0 === s.status) {\\n let t;\\n e && s.response ? t = new Uint8Array(s.response) : !e && s.responseText && (t = (0, r.stringToBytes)(s.responseText));\\n if (t) {\\n n(t);\\n return;\\n }\\n }\\n i(new Error(s.statusText));\\n }\\n };\\n s.send(null);\\n });\\n }\\n class DOMCMapReaderFactory extends i.BaseCMapReaderFactory {\\n _fetchData(t, e) {\\n return fetchData(t, this.isCompressed).then(t => ({\\n cMapData: t,\\n compressionType: e\\n }));\\n }\\n }\\n e.DOMCMapReaderFactory = DOMCMapReaderFactory;\\n class DOMStandardFontDataFactory extends i.BaseStandardFontDataFactory {\\n _fetchData(t) {\\n return fetchData(t, !0);\\n }\\n }\\n e.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\\n class DOMSVGFactory extends i.BaseSVGFactory {\\n _createSVG(t) {\\n return document.createElementNS(s, t);\\n }\\n }\\n e.DOMSVGFactory = DOMSVGFactory;\\n class PageViewport {\\n constructor(t) {\\n let {\\n viewBox: e,\\n scale: n,\\n rotation: i,\\n offsetX: r = 0,\\n offsetY: s = 0,\\n dontFlip: a = !1\\n } = t;\\n this.viewBox = e;\\n this.scale = n;\\n this.rotation = i;\\n this.offsetX = r;\\n this.offsetY = s;\\n const o = (e[2] + e[0]) / 2,\\n l = (e[3] + e[1]) / 2;\\n let c, h, d, u, p, f, g, m;\\n i %= 360;\\n i < 0 && (i += 360);\\n switch (i) {\\n case 180:\\n c = -1;\\n h = 0;\\n d = 0;\\n u = 1;\\n break;\\n case 90:\\n c = 0;\\n h = 1;\\n d = 1;\\n u = 0;\\n break;\\n case 270:\\n c = 0;\\n h = -1;\\n d = -1;\\n u = 0;\\n break;\\n case 0:\\n c = 1;\\n h = 0;\\n d = 0;\\n u = -1;\\n break;\\n default:\\n throw new Error(\\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\\");\\n }\\n if (a) {\\n d = -d;\\n u = -u;\\n }\\n if (0 === c) {\\n p = Math.abs(l - e[1]) * n + r;\\n f = Math.abs(o - e[0]) * n + s;\\n g = (e[3] - e[1]) * n;\\n m = (e[2] - e[0]) * n;\\n } else {\\n p = Math.abs(o - e[0]) * n + r;\\n f = Math.abs(l - e[1]) * n + s;\\n g = (e[2] - e[0]) * n;\\n m = (e[3] - e[1]) * n;\\n }\\n this.transform = [c * n, h * n, d * n, u * n, p - c * n * o - d * n * l, f - h * n * o - u * n * l];\\n this.width = g;\\n this.height = m;\\n }\\n get rawDims() {\\n const {\\n viewBox: t\\n } = this;\\n return (0, r.shadow)(this, \\"rawDims\\", {\\n pageWidth: t[2] - t[0],\\n pageHeight: t[3] - t[1],\\n pageX: t[0],\\n pageY: t[1]\\n });\\n }\\n clone() {\\n let {\\n scale: t = this.scale,\\n rotation: e = this.rotation,\\n offsetX: n = this.offsetX,\\n offsetY: i = this.offsetY,\\n dontFlip: r = !1\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n return new PageViewport({\\n viewBox: this.viewBox.slice(),\\n scale: t,\\n rotation: e,\\n offsetX: n,\\n offsetY: i,\\n dontFlip: r\\n });\\n }\\n convertToViewportPoint(t, e) {\\n return r.Util.applyTransform([t, e], this.transform);\\n }\\n convertToViewportRectangle(t) {\\n const e = r.Util.applyTransform([t[0], t[1]], this.transform),\\n n = r.Util.applyTransform([t[2], t[3]], this.transform);\\n return [e[0], e[1], n[0], n[1]];\\n }\\n convertToPdfPoint(t, e) {\\n return r.Util.applyInverseTransform([t, e], this.transform);\\n }\\n }\\n e.PageViewport = PageViewport;\\n class RenderingCancelledException extends r.BaseException {\\n constructor(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\\n super(t, \\"RenderingCancelledException\\");\\n this.extraDelay = e;\\n }\\n }\\n e.RenderingCancelledException = RenderingCancelledException;\\n function isDataScheme(t) {\\n const e = t.length;\\n let n = 0;\\n for (; n < e && \\"\\" === t[n].trim();) n++;\\n return \\"data:\\" === t.substring(n, n + 5).toLowerCase();\\n }\\n e.StatTimer = class StatTimer {\\n constructor() {\\n _defineProperty(this, \\"started\\", Object.create(null));\\n _defineProperty(this, \\"times\\", []);\\n }\\n time(t) {\\n t in this.started && (0, r.warn)(\\"Timer is already running for \\".concat(t));\\n this.started[t] = Date.now();\\n }\\n timeEnd(t) {\\n t in this.started || (0, r.warn)(\\"Timer has not been started for \\".concat(t));\\n this.times.push({\\n name: t,\\n start: this.started[t],\\n end: Date.now()\\n });\\n delete this.started[t];\\n }\\n toString() {\\n const t = [];\\n let e = 0;\\n for (const {\\n name: t\\n } of this.times) e = Math.max(t.length, e);\\n for (const {\\n name: n,\\n start: i,\\n end: r\\n } of this.times) t.push(\\"\\".concat(n.padEnd(e), \\" \\").concat(r - i, \\"ms\\\\n\\"));\\n return t.join(\\"\\");\\n }\\n };\\n function isValidFetchUrl(t, e) {\\n try {\\n const {\\n protocol: n\\n } = e ? new URL(t, e) : new URL(t);\\n return \\"http:\\" === n || \\"https:\\" === n;\\n } catch (_unused10) {\\n return !1;\\n }\\n }\\n let a;\\n e.PDFDateString = class PDFDateString {\\n static toDateObject(t) {\\n if (!t || \\"string\\" != typeof t) return null;\\n a || (a = new RegExp(\\"^D:(\\\\\\\\d{4})(\\\\\\\\d{2})?(\\\\\\\\d{2})?(\\\\\\\\d{2})?(\\\\\\\\d{2})?(\\\\\\\\d{2})?([Z|+|-])?(\\\\\\\\d{2})?'?(\\\\\\\\d{2})?'?\\"));\\n const e = a.exec(t);\\n if (!e) return null;\\n const n = parseInt(e[1], 10);\\n let i = parseInt(e[2], 10);\\n i = i >= 1 && i <= 12 ? i - 1 : 0;\\n let r = parseInt(e[3], 10);\\n r = r >= 1 && r <= 31 ? r : 1;\\n let s = parseInt(e[4], 10);\\n s = s >= 0 && s <= 23 ? s : 0;\\n let o = parseInt(e[5], 10);\\n o = o >= 0 && o <= 59 ? o : 0;\\n let l = parseInt(e[6], 10);\\n l = l >= 0 && l <= 59 ? l : 0;\\n const c = e[7] || \\"Z\\";\\n let h = parseInt(e[8], 10);\\n h = h >= 0 && h <= 23 ? h : 0;\\n let d = parseInt(e[9], 10) || 0;\\n d = d >= 0 && d <= 59 ? d : 0;\\n if (\\"-\\" === c) {\\n s += h;\\n o += d;\\n } else if (\\"+\\" === c) {\\n s -= h;\\n o -= d;\\n }\\n return new Date(Date.UTC(n, i, r, s, o, l));\\n }\\n };\\n function getRGB(t) {\\n if (t.startsWith(\\"#\\")) {\\n const e = parseInt(t.slice(1), 16);\\n return [(16711680 & e) >> 16, (65280 & e) >> 8, 255 & e];\\n }\\n if (t.startsWith(\\"rgb(\\")) return t.slice(4, -1).split(\\",\\").map(t => parseInt(t));\\n if (t.startsWith(\\"rgba(\\")) return t.slice(5, -1).split(\\",\\").map(t => parseInt(t)).slice(0, 3);\\n (0, r.warn)(\\"Not a valid color format: \\\\\\"\\".concat(t, \\"\\\\\\"\\"));\\n return [0, 0, 0];\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.BaseStandardFontDataFactory = e.BaseSVGFactory = e.BaseFilterFactory = e.BaseCanvasFactory = e.BaseCMapReaderFactory = void 0;\\n n(2);\\n var i = n(1);\\n class BaseFilterFactory {\\n constructor() {\\n this.constructor === BaseFilterFactory && (0, i.unreachable)(\\"Cannot initialize BaseFilterFactory.\\");\\n }\\n addFilter(t) {\\n return \\"none\\";\\n }\\n addHCMFilter(t, e) {\\n return \\"none\\";\\n }\\n addHighlightHCMFilter(t, e, n, i) {\\n return \\"none\\";\\n }\\n destroy() {}\\n }\\n e.BaseFilterFactory = BaseFilterFactory;\\n class BaseCanvasFactory {\\n constructor() {\\n this.constructor === BaseCanvasFactory && (0, i.unreachable)(\\"Cannot initialize BaseCanvasFactory.\\");\\n }\\n create(t, e) {\\n if (t <= 0 || e <= 0) throw new Error(\\"Invalid canvas size\\");\\n const n = this._createCanvas(t, e);\\n return {\\n canvas: n,\\n context: n.getContext(\\"2d\\")\\n };\\n }\\n reset(t, e, n) {\\n if (!t.canvas) throw new Error(\\"Canvas is not specified\\");\\n if (e <= 0 || n <= 0) throw new Error(\\"Invalid canvas size\\");\\n t.canvas.width = e;\\n t.canvas.height = n;\\n }\\n destroy(t) {\\n if (!t.canvas) throw new Error(\\"Canvas is not specified\\");\\n t.canvas.width = 0;\\n t.canvas.height = 0;\\n t.canvas = null;\\n t.context = null;\\n }\\n _createCanvas(t, e) {\\n (0, i.unreachable)(\\"Abstract method \`_createCanvas\` called.\\");\\n }\\n }\\n e.BaseCanvasFactory = BaseCanvasFactory;\\n class BaseCMapReaderFactory {\\n constructor(t) {\\n let {\\n baseUrl: e = null,\\n isCompressed: n = !0\\n } = t;\\n this.constructor === BaseCMapReaderFactory && (0, i.unreachable)(\\"Cannot initialize BaseCMapReaderFactory.\\");\\n this.baseUrl = e;\\n this.isCompressed = n;\\n }\\n async fetch(t) {\\n let {\\n name: e\\n } = t;\\n if (!this.baseUrl) throw new Error('The CMap \\"baseUrl\\" parameter must be specified, ensure that the \\"cMapUrl\\" and \\"cMapPacked\\" API parameters are provided.');\\n if (!e) throw new Error(\\"CMap name must be specified.\\");\\n const n = this.baseUrl + e + (this.isCompressed ? \\".bcmap\\" : \\"\\"),\\n r = this.isCompressed ? i.CMapCompressionType.BINARY : i.CMapCompressionType.NONE;\\n return this._fetchData(n, r).catch(t => {\\n throw new Error(\\"Unable to load \\".concat(this.isCompressed ? \\"binary \\" : \\"\\", \\"CMap at: \\").concat(n));\\n });\\n }\\n _fetchData(t, e) {\\n (0, i.unreachable)(\\"Abstract method \`_fetchData\` called.\\");\\n }\\n }\\n e.BaseCMapReaderFactory = BaseCMapReaderFactory;\\n class BaseStandardFontDataFactory {\\n constructor(t) {\\n let {\\n baseUrl: e = null\\n } = t;\\n this.constructor === BaseStandardFontDataFactory && (0, i.unreachable)(\\"Cannot initialize BaseStandardFontDataFactory.\\");\\n this.baseUrl = e;\\n }\\n async fetch(t) {\\n let {\\n filename: e\\n } = t;\\n if (!this.baseUrl) throw new Error('The standard font \\"baseUrl\\" parameter must be specified, ensure that the \\"standardFontDataUrl\\" API parameter is provided.');\\n if (!e) throw new Error(\\"Font filename must be specified.\\");\\n const n = \\"\\".concat(this.baseUrl).concat(e);\\n return this._fetchData(n).catch(t => {\\n throw new Error(\\"Unable to load font data at: \\".concat(n));\\n });\\n }\\n _fetchData(t) {\\n (0, i.unreachable)(\\"Abstract method \`_fetchData\` called.\\");\\n }\\n }\\n e.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\\n class BaseSVGFactory {\\n constructor() {\\n this.constructor === BaseSVGFactory && (0, i.unreachable)(\\"Cannot initialize BaseSVGFactory.\\");\\n }\\n create(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\\n if (t <= 0 || e <= 0) throw new Error(\\"Invalid SVG dimensions\\");\\n const i = this._createSVG(\\"svg:svg\\");\\n i.setAttribute(\\"version\\", \\"1.1\\");\\n if (!n) {\\n i.setAttribute(\\"width\\", \\"\\".concat(t, \\"px\\"));\\n i.setAttribute(\\"height\\", \\"\\".concat(e, \\"px\\"));\\n }\\n i.setAttribute(\\"preserveAspectRatio\\", \\"none\\");\\n i.setAttribute(\\"viewBox\\", \\"0 0 \\".concat(t, \\" \\").concat(e));\\n return i;\\n }\\n createElement(t) {\\n if (\\"string\\" != typeof t) throw new Error(\\"Invalid SVG element type\\");\\n return this._createSVG(t);\\n }\\n _createSVG(t) {\\n (0, i.unreachable)(\\"Abstract method \`_createSVG\` called.\\");\\n }\\n }\\n e.BaseSVGFactory = BaseSVGFactory;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.MurmurHash3_64 = void 0;\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(2);\\n var i = n(1);\\n const r = 3285377520,\\n s = 4294901760,\\n a = 65535;\\n e.MurmurHash3_64 = class MurmurHash3_64 {\\n constructor(t) {\\n this.h1 = t ? 4294967295 & t : r;\\n this.h2 = t ? 4294967295 & t : r;\\n }\\n update(t) {\\n let e, n;\\n if (\\"string\\" == typeof t) {\\n e = new Uint8Array(2 * t.length);\\n n = 0;\\n for (let i = 0, r = t.length; i < r; i++) {\\n const r = t.charCodeAt(i);\\n if (r <= 255) e[n++] = r;else {\\n e[n++] = r >>> 8;\\n e[n++] = 255 & r;\\n }\\n }\\n } else {\\n if (!(0, i.isArrayBuffer)(t)) throw new Error(\\"Wrong data format in MurmurHash3_64_update. Input must be a string or array.\\");\\n e = t.slice();\\n n = e.byteLength;\\n }\\n const r = n >> 2,\\n o = n - 4 * r,\\n l = new Uint32Array(e.buffer, 0, r);\\n let c = 0,\\n h = 0,\\n d = this.h1,\\n u = this.h2;\\n const p = 3432918353,\\n f = 461845907,\\n g = 11601,\\n m = 13715;\\n for (let t = 0; t < r; t++) if (1 & t) {\\n c = l[t];\\n c = c * p & s | c * g & a;\\n c = c << 15 | c >>> 17;\\n c = c * f & s | c * m & a;\\n d ^= c;\\n d = d << 13 | d >>> 19;\\n d = 5 * d + 3864292196;\\n } else {\\n h = l[t];\\n h = h * p & s | h * g & a;\\n h = h << 15 | h >>> 17;\\n h = h * f & s | h * m & a;\\n u ^= h;\\n u = u << 13 | u >>> 19;\\n u = 5 * u + 3864292196;\\n }\\n c = 0;\\n switch (o) {\\n case 3:\\n c ^= e[4 * r + 2] << 16;\\n case 2:\\n c ^= e[4 * r + 1] << 8;\\n case 1:\\n c ^= e[4 * r];\\n c = c * p & s | c * g & a;\\n c = c << 15 | c >>> 17;\\n c = c * f & s | c * m & a;\\n 1 & r ? d ^= c : u ^= c;\\n }\\n this.h1 = d;\\n this.h2 = u;\\n }\\n hexdigest() {\\n let t = this.h1,\\n e = this.h2;\\n t ^= e >>> 1;\\n t = 3981806797 * t & s | 36045 * t & a;\\n e = 4283543511 * e & s | (2950163797 * (e << 16 | t >>> 16) & s) >>> 16;\\n t ^= e >>> 1;\\n t = 444984403 * t & s | 60499 * t & a;\\n e = 3301882366 * e & s | (3120437893 * (e << 16 | t >>> 16) & s) >>> 16;\\n t ^= e >>> 1;\\n return (t >>> 0).toString(16).padStart(8, \\"0\\") + (e >>> 0).toString(16).padStart(8, \\"0\\");\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Wt;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.FontLoader = e.FontFaceObject = void 0;\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n n(89);\\n n(148);\\n var i = n(1);\\n e.FontLoader = (_Wt = /*#__PURE__*/new WeakMap(), class FontLoader {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _Wt, {\\n writable: true,\\n value: new Set()\\n });\\n let {\\n ownerDocument: e = globalThis.document,\\n styleElement: n = null\\n } = t;\\n this._document = e;\\n this.nativeFontFaces = new Set();\\n this.styleElement = null;\\n this.loadingRequests = [];\\n this.loadTestFontId = 0;\\n }\\n addNativeFontFace(t) {\\n this.nativeFontFaces.add(t);\\n this._document.fonts.add(t);\\n }\\n removeNativeFontFace(t) {\\n this.nativeFontFaces.delete(t);\\n this._document.fonts.delete(t);\\n }\\n insertRule(t) {\\n if (!this.styleElement) {\\n this.styleElement = this._document.createElement(\\"style\\");\\n this._document.documentElement.getElementsByTagName(\\"head\\")[0].append(this.styleElement);\\n }\\n const e = this.styleElement.sheet;\\n e.insertRule(t, e.cssRules.length);\\n }\\n clear() {\\n for (const t of this.nativeFontFaces) this._document.fonts.delete(t);\\n this.nativeFontFaces.clear();\\n _classPrivateFieldGet(this, _Wt).clear();\\n if (this.styleElement) {\\n this.styleElement.remove();\\n this.styleElement = null;\\n }\\n }\\n async loadSystemFont(t) {\\n if (t && !_classPrivateFieldGet(this, _Wt).has(t.loadedName)) {\\n (0, i.assert)(!this.disableFontFace, \\"loadSystemFont shouldn't be called when \`disableFontFace\` is set.\\");\\n if (this.isFontLoadingAPISupported) {\\n const {\\n loadedName: e,\\n src: n,\\n style: r\\n } = t,\\n s = new FontFace(e, n, r);\\n this.addNativeFontFace(s);\\n try {\\n await s.load();\\n _classPrivateFieldGet(this, _Wt).add(e);\\n } catch (_unused11) {\\n (0, i.warn)(\\"Cannot load system font: \\".concat(t.baseFontName, \\", installing it could help to improve PDF rendering.\\"));\\n this.removeNativeFontFace(s);\\n }\\n } else (0, i.unreachable)(\\"Not implemented: loadSystemFont without the Font Loading API.\\");\\n }\\n }\\n async bind(t) {\\n if (t.attached || t.missingFile && !t.systemFontInfo) return;\\n t.attached = !0;\\n if (t.systemFontInfo) {\\n await this.loadSystemFont(t.systemFontInfo);\\n return;\\n }\\n if (this.isFontLoadingAPISupported) {\\n const e = t.createNativeFontFace();\\n if (e) {\\n this.addNativeFontFace(e);\\n try {\\n await e.loaded;\\n } catch (n) {\\n (0, i.warn)(\\"Failed to load font '\\".concat(e.family, \\"': '\\").concat(n, \\"'.\\"));\\n t.disableFontFace = !0;\\n throw n;\\n }\\n }\\n return;\\n }\\n const e = t.createFontFaceRule();\\n if (e) {\\n this.insertRule(e);\\n if (this.isSyncFontLoadingSupported) return;\\n await new Promise(e => {\\n const n = this._queueLoadingCallback(e);\\n this._prepareFontLoadEvent(t, n);\\n });\\n }\\n }\\n get isFontLoadingAPISupported() {\\n var _this$_document;\\n const t = !!((_this$_document = this._document) !== null && _this$_document !== void 0 && _this$_document.fonts);\\n return (0, i.shadow)(this, \\"isFontLoadingAPISupported\\", t);\\n }\\n get isSyncFontLoadingSupported() {\\n let t = !1;\\n (i.isNodeJS || \\"undefined\\" != typeof navigator && /Mozilla\\\\/5.0.*?rv:\\\\d+.*? Gecko/.test(navigator.userAgent)) && (t = !0);\\n return (0, i.shadow)(this, \\"isSyncFontLoadingSupported\\", t);\\n }\\n _queueLoadingCallback(t) {\\n const {\\n loadingRequests: e\\n } = this,\\n n = {\\n done: !1,\\n complete: function completeRequest() {\\n (0, i.assert)(!n.done, \\"completeRequest() cannot be called twice.\\");\\n n.done = !0;\\n for (; e.length > 0 && e[0].done;) {\\n const t = e.shift();\\n setTimeout(t.callback, 0);\\n }\\n },\\n callback: t\\n };\\n e.push(n);\\n return n;\\n }\\n get _loadTestFont() {\\n const t = atob(\\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\\");\\n return (0, i.shadow)(this, \\"_loadTestFont\\", t);\\n }\\n _prepareFontLoadEvent(t, e) {\\n function int32(t, e) {\\n return t.charCodeAt(e) << 24 | t.charCodeAt(e + 1) << 16 | t.charCodeAt(e + 2) << 8 | 255 & t.charCodeAt(e + 3);\\n }\\n function spliceString(t, e, n, i) {\\n return t.substring(0, e) + i + t.substring(e + n);\\n }\\n let n, r;\\n const s = this._document.createElement(\\"canvas\\");\\n s.width = 1;\\n s.height = 1;\\n const a = s.getContext(\\"2d\\");\\n let o = 0;\\n const l = \\"lt\\".concat(Date.now()).concat(this.loadTestFontId++);\\n let c = this._loadTestFont;\\n c = spliceString(c, 976, l.length, l);\\n const h = 1482184792;\\n let d = int32(c, 16);\\n for (n = 0, r = l.length - 3; n < r; n += 4) d = d - h + int32(l, n) | 0;\\n n < l.length && (d = d - h + int32(l + \\"XXX\\", n) | 0);\\n c = spliceString(c, 16, 4, (0, i.string32)(d));\\n const u = \\"@font-face {font-family:\\\\\\"\\".concat(l, \\"\\\\\\";src:\\", \\"url(data:font/opentype;base64,\\".concat(btoa(c), \\");\\"), \\"}\\");\\n this.insertRule(u);\\n const p = this._document.createElement(\\"div\\");\\n p.style.visibility = \\"hidden\\";\\n p.style.width = p.style.height = \\"10px\\";\\n p.style.position = \\"absolute\\";\\n p.style.top = p.style.left = \\"0px\\";\\n for (const e of [t.loadedName, l]) {\\n const t = this._document.createElement(\\"span\\");\\n t.textContent = \\"Hi\\";\\n t.style.fontFamily = e;\\n p.append(t);\\n }\\n this._document.body.append(p);\\n !function isFontReady(t, e) {\\n if (++o > 30) {\\n (0, i.warn)(\\"Load test font never loaded.\\");\\n e();\\n return;\\n }\\n a.font = \\"30px \\" + t;\\n a.fillText(\\".\\", 0, 20);\\n a.getImageData(0, 0, 1, 1).data[3] > 0 ? e() : setTimeout(isFontReady.bind(null, t, e));\\n }(l, () => {\\n p.remove();\\n e.complete();\\n });\\n }\\n });\\n e.FontFaceObject = class FontFaceObject {\\n constructor(t, e) {\\n let {\\n isEvalSupported: n = !0,\\n disableFontFace: i = !1,\\n ignoreErrors: r = !1,\\n inspectFont: s = null\\n } = e;\\n this.compiledGlyphs = Object.create(null);\\n for (const e in t) this[e] = t[e];\\n this.isEvalSupported = !1 !== n;\\n this.disableFontFace = !0 === i;\\n this.ignoreErrors = !0 === r;\\n this._inspectFont = s;\\n }\\n createNativeFontFace() {\\n var _this$_inspectFont;\\n if (!this.data || this.disableFontFace) return null;\\n let t;\\n if (this.cssFontInfo) {\\n const e = {\\n weight: this.cssFontInfo.fontWeight\\n };\\n this.cssFontInfo.italicAngle && (e.style = \\"oblique \\".concat(this.cssFontInfo.italicAngle, \\"deg\\"));\\n t = new FontFace(this.cssFontInfo.fontFamily, this.data, e);\\n } else t = new FontFace(this.loadedName, this.data, {});\\n (_this$_inspectFont = this._inspectFont) === null || _this$_inspectFont === void 0 ? void 0 : _this$_inspectFont.call(this, this);\\n return t;\\n }\\n createFontFaceRule() {\\n var _this$_inspectFont2;\\n if (!this.data || this.disableFontFace) return null;\\n const t = (0, i.bytesToString)(this.data),\\n e = \\"url(data:\\".concat(this.mimetype, \\";base64,\\").concat(btoa(t), \\");\\");\\n let n;\\n if (this.cssFontInfo) {\\n let t = \\"font-weight: \\".concat(this.cssFontInfo.fontWeight, \\";\\");\\n this.cssFontInfo.italicAngle && (t += \\"font-style: oblique \\".concat(this.cssFontInfo.italicAngle, \\"deg;\\"));\\n n = \\"@font-face {font-family:\\\\\\"\\".concat(this.cssFontInfo.fontFamily, \\"\\\\\\";\\").concat(t, \\"src:\\").concat(e, \\"}\\");\\n } else n = \\"@font-face {font-family:\\\\\\"\\".concat(this.loadedName, \\"\\\\\\";src:\\").concat(e, \\"}\\");\\n (_this$_inspectFont2 = this._inspectFont) === null || _this$_inspectFont2 === void 0 ? void 0 : _this$_inspectFont2.call(this, this, e);\\n return n;\\n }\\n getPathGenerator(t, e) {\\n if (void 0 !== this.compiledGlyphs[e]) return this.compiledGlyphs[e];\\n let n;\\n try {\\n n = t.get(this.loadedName + \\"_path_\\" + e);\\n } catch (t) {\\n if (!this.ignoreErrors) throw t;\\n (0, i.warn)(\\"getPathGenerator - ignoring character: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n return this.compiledGlyphs[e] = function (t, e) {};\\n }\\n if (this.isEvalSupported && i.FeatureTest.isEvalSupported) {\\n const t = [];\\n for (const e of n) {\\n const n = void 0 !== e.args ? e.args.join(\\",\\") : \\"\\";\\n t.push(\\"c.\\", e.cmd, \\"(\\", n, \\");\\\\n\\");\\n }\\n return this.compiledGlyphs[e] = new Function(\\"c\\", \\"size\\", t.join(\\"\\"));\\n }\\n return this.compiledGlyphs[e] = function (t, e) {\\n for (const i of n) {\\n \\"scale\\" === i.cmd && (i.args = [e, -e]);\\n t[i.cmd].apply(t, i.args);\\n }\\n };\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.NodeStandardFontDataFactory = e.NodeFilterFactory = e.NodeCanvasFactory = e.NodeCMapReaderFactory = void 0;\\n n(2);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n var i = n(168),\\n r = n(1);\\n !function checkDOMMatrix() {\\n if (!globalThis.DOMMatrix && r.isNodeJS) try {\\n globalThis.DOMMatrix = Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'canvas'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }());\\n } catch (t) {\\n (0, r.warn)(\\"Cannot polyfill \`DOMMatrix\`, rendering may be broken: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n }\\n }();\\n !function checkPath2D() {\\n if (!globalThis.Path2D && r.isNodeJS) try {\\n const {\\n CanvasRenderingContext2D: t\\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'canvas'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\\n {\\n polyfillPath2D: e\\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'path2d-polyfill'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n globalThis.CanvasRenderingContext2D = t;\\n e(globalThis);\\n } catch (t) {\\n (0, r.warn)(\\"Cannot polyfill \`Path2D\`, rendering may be broken: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n }\\n }();\\n const fetchData = function fetchData(t) {\\n return new Promise((e, n) => {\\n Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'fs'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, (t, i) => {\\n !t && i ? e(new Uint8Array(i)) : n(new Error(t));\\n });\\n });\\n };\\n class NodeFilterFactory extends i.BaseFilterFactory {}\\n e.NodeFilterFactory = NodeFilterFactory;\\n class NodeCanvasFactory extends i.BaseCanvasFactory {\\n _createCanvas(t, e) {\\n return Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'canvas'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, e);\\n }\\n }\\n e.NodeCanvasFactory = NodeCanvasFactory;\\n class NodeCMapReaderFactory extends i.BaseCMapReaderFactory {\\n _fetchData(t, e) {\\n return fetchData(t).then(t => ({\\n cMapData: t,\\n compressionType: e\\n }));\\n }\\n }\\n e.NodeCMapReaderFactory = NodeCMapReaderFactory;\\n class NodeStandardFontDataFactory extends i.BaseStandardFontDataFactory {\\n _fetchData(t) {\\n return fetchData(t);\\n }\\n }\\n e.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.CanvasGraphics = void 0;\\n n(2);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n var i = n(1),\\n r = n(167),\\n s = n(173),\\n a = n(174);\\n const o = 4096,\\n l = 16;\\n class CachedCanvases {\\n constructor(t) {\\n this.canvasFactory = t;\\n this.cache = Object.create(null);\\n }\\n getCanvas(t, e, n) {\\n let i;\\n if (void 0 !== this.cache[t]) {\\n i = this.cache[t];\\n this.canvasFactory.reset(i, e, n);\\n } else {\\n i = this.canvasFactory.create(e, n);\\n this.cache[t] = i;\\n }\\n return i;\\n }\\n delete(t) {\\n delete this.cache[t];\\n }\\n clear() {\\n for (const t in this.cache) {\\n const e = this.cache[t];\\n this.canvasFactory.destroy(e);\\n delete this.cache[t];\\n }\\n }\\n }\\n function drawImageAtIntegerCoords(t, e, n, i, s, a, o, l, c, h) {\\n const [d, u, p, f, g, m] = (0, r.getCurrentTransform)(t);\\n if (0 === u && 0 === p) {\\n const r = o * d + g,\\n b = Math.round(r),\\n v = l * f + m,\\n y = Math.round(v),\\n A = (o + c) * d + g,\\n _ = Math.abs(Math.round(A) - b) || 1,\\n S = (l + h) * f + m,\\n E = Math.abs(Math.round(S) - y) || 1;\\n t.setTransform(Math.sign(d), 0, 0, Math.sign(f), b, y);\\n t.drawImage(e, n, i, s, a, 0, 0, _, E);\\n t.setTransform(d, u, p, f, g, m);\\n return [_, E];\\n }\\n if (0 === d && 0 === f) {\\n const r = l * p + g,\\n b = Math.round(r),\\n v = o * u + m,\\n y = Math.round(v),\\n A = (l + h) * p + g,\\n _ = Math.abs(Math.round(A) - b) || 1,\\n S = (o + c) * u + m,\\n E = Math.abs(Math.round(S) - y) || 1;\\n t.setTransform(0, Math.sign(u), Math.sign(p), 0, b, y);\\n t.drawImage(e, n, i, s, a, 0, 0, E, _);\\n t.setTransform(d, u, p, f, g, m);\\n return [E, _];\\n }\\n t.drawImage(e, n, i, s, a, o, l, c, h);\\n return [Math.hypot(d, u) * c, Math.hypot(p, f) * h];\\n }\\n class CanvasExtraState {\\n constructor(t, e) {\\n this.alphaIsShape = !1;\\n this.fontSize = 0;\\n this.fontSizeScale = 1;\\n this.textMatrix = i.IDENTITY_MATRIX;\\n this.textMatrixScale = 1;\\n this.fontMatrix = i.FONT_IDENTITY_MATRIX;\\n this.leading = 0;\\n this.x = 0;\\n this.y = 0;\\n this.lineX = 0;\\n this.lineY = 0;\\n this.charSpacing = 0;\\n this.wordSpacing = 0;\\n this.textHScale = 1;\\n this.textRenderingMode = i.TextRenderingMode.FILL;\\n this.textRise = 0;\\n this.fillColor = \\"#000000\\";\\n this.strokeColor = \\"#000000\\";\\n this.patternFill = !1;\\n this.fillAlpha = 1;\\n this.strokeAlpha = 1;\\n this.lineWidth = 1;\\n this.activeSMask = null;\\n this.transferMaps = \\"none\\";\\n this.startNewPathAndClipBox([0, 0, t, e]);\\n }\\n clone() {\\n const t = Object.create(this);\\n t.clipBox = this.clipBox.slice();\\n return t;\\n }\\n setCurrentPoint(t, e) {\\n this.x = t;\\n this.y = e;\\n }\\n updatePathMinMax(t, e, n) {\\n [e, n] = i.Util.applyTransform([e, n], t);\\n this.minX = Math.min(this.minX, e);\\n this.minY = Math.min(this.minY, n);\\n this.maxX = Math.max(this.maxX, e);\\n this.maxY = Math.max(this.maxY, n);\\n }\\n updateRectMinMax(t, e) {\\n const n = i.Util.applyTransform(e, t),\\n r = i.Util.applyTransform(e.slice(2), t);\\n this.minX = Math.min(this.minX, n[0], r[0]);\\n this.minY = Math.min(this.minY, n[1], r[1]);\\n this.maxX = Math.max(this.maxX, n[0], r[0]);\\n this.maxY = Math.max(this.maxY, n[1], r[1]);\\n }\\n updateScalingPathMinMax(t, e) {\\n i.Util.scaleMinMax(t, e);\\n this.minX = Math.min(this.minX, e[0]);\\n this.maxX = Math.max(this.maxX, e[1]);\\n this.minY = Math.min(this.minY, e[2]);\\n this.maxY = Math.max(this.maxY, e[3]);\\n }\\n updateCurvePathMinMax(t, e, n, r, s, a, o, l, c, h) {\\n const d = i.Util.bezierBoundingBox(e, n, r, s, a, o, l, c);\\n if (h) {\\n h[0] = Math.min(h[0], d[0], d[2]);\\n h[1] = Math.max(h[1], d[0], d[2]);\\n h[2] = Math.min(h[2], d[1], d[3]);\\n h[3] = Math.max(h[3], d[1], d[3]);\\n } else this.updateRectMinMax(t, d);\\n }\\n getPathBoundingBox() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = [this.minX, this.minY, this.maxX, this.maxY];\\n if (t === s.PathType.STROKE) {\\n e || (0, i.unreachable)(\\"Stroke bounding box must include transform.\\");\\n const t = i.Util.singularValueDecompose2dScale(e),\\n r = t[0] * this.lineWidth / 2,\\n s = t[1] * this.lineWidth / 2;\\n n[0] -= r;\\n n[1] -= s;\\n n[2] += r;\\n n[3] += s;\\n }\\n return n;\\n }\\n updateClipFromPath() {\\n const t = i.Util.intersect(this.clipBox, this.getPathBoundingBox());\\n this.startNewPathAndClipBox(t || [0, 0, 0, 0]);\\n }\\n isEmptyClip() {\\n return this.minX === 1 / 0;\\n }\\n startNewPathAndClipBox(t) {\\n this.clipBox = t;\\n this.minX = 1 / 0;\\n this.minY = 1 / 0;\\n this.maxX = 0;\\n this.maxY = 0;\\n }\\n getClippedPathBoundingBox() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return i.Util.intersect(this.clipBox, this.getPathBoundingBox(t, e));\\n }\\n }\\n function putBinaryImageData(t, e) {\\n if (\\"undefined\\" != typeof ImageData && e instanceof ImageData) {\\n t.putImageData(e, 0, 0);\\n return;\\n }\\n const n = e.height,\\n r = e.width,\\n s = n % l,\\n a = (n - s) / l,\\n o = 0 === s ? a : a + 1,\\n c = t.createImageData(r, l);\\n let h,\\n d = 0;\\n const u = e.data,\\n p = c.data;\\n let f, g, m, b;\\n if (e.kind === i.ImageKind.GRAYSCALE_1BPP) {\\n const e = u.byteLength,\\n n = new Uint32Array(p.buffer, 0, p.byteLength >> 2),\\n b = n.length,\\n v = r + 7 >> 3,\\n y = 4294967295,\\n A = i.FeatureTest.isLittleEndian ? 4278190080 : 255;\\n for (f = 0; f < o; f++) {\\n m = f < a ? l : s;\\n h = 0;\\n for (g = 0; g < m; g++) {\\n const t = e - d;\\n let i = 0;\\n const s = t > v ? r : 8 * t - 7,\\n a = -8 & s;\\n let o = 0,\\n l = 0;\\n for (; i < a; i += 8) {\\n l = u[d++];\\n n[h++] = 128 & l ? y : A;\\n n[h++] = 64 & l ? y : A;\\n n[h++] = 32 & l ? y : A;\\n n[h++] = 16 & l ? y : A;\\n n[h++] = 8 & l ? y : A;\\n n[h++] = 4 & l ? y : A;\\n n[h++] = 2 & l ? y : A;\\n n[h++] = 1 & l ? y : A;\\n }\\n for (; i < s; i++) {\\n if (0 === o) {\\n l = u[d++];\\n o = 128;\\n }\\n n[h++] = l & o ? y : A;\\n o >>= 1;\\n }\\n }\\n for (; h < b;) n[h++] = 0;\\n t.putImageData(c, 0, f * l);\\n }\\n } else if (e.kind === i.ImageKind.RGBA_32BPP) {\\n g = 0;\\n b = r * l * 4;\\n for (f = 0; f < a; f++) {\\n p.set(u.subarray(d, d + b));\\n d += b;\\n t.putImageData(c, 0, g);\\n g += l;\\n }\\n if (f < o) {\\n b = r * s * 4;\\n p.set(u.subarray(d, d + b));\\n t.putImageData(c, 0, g);\\n }\\n } else {\\n if (e.kind !== i.ImageKind.RGB_24BPP) throw new Error(\\"bad image kind: \\".concat(e.kind));\\n m = l;\\n b = r * m;\\n for (f = 0; f < o; f++) {\\n if (f >= a) {\\n m = s;\\n b = r * m;\\n }\\n h = 0;\\n for (g = b; g--;) {\\n p[h++] = u[d++];\\n p[h++] = u[d++];\\n p[h++] = u[d++];\\n p[h++] = 255;\\n }\\n t.putImageData(c, 0, f * l);\\n }\\n }\\n }\\n function putBinaryImageMask(t, e) {\\n if (e.bitmap) {\\n t.drawImage(e.bitmap, 0, 0);\\n return;\\n }\\n const n = e.height,\\n i = e.width,\\n r = n % l,\\n s = (n - r) / l,\\n o = 0 === r ? s : s + 1,\\n c = t.createImageData(i, l);\\n let h = 0;\\n const d = e.data,\\n u = c.data;\\n for (let e = 0; e < o; e++) {\\n const n = e < s ? l : r;\\n ({\\n srcPos: h\\n } = (0, a.convertBlackAndWhiteToRGBA)({\\n src: d,\\n srcPos: h,\\n dest: u,\\n width: i,\\n height: n,\\n nonBlackColor: 0\\n }));\\n t.putImageData(c, 0, e * l);\\n }\\n }\\n function copyCtxState(t, e) {\\n const n = [\\"strokeStyle\\", \\"fillStyle\\", \\"fillRule\\", \\"globalAlpha\\", \\"lineWidth\\", \\"lineCap\\", \\"lineJoin\\", \\"miterLimit\\", \\"globalCompositeOperation\\", \\"font\\", \\"filter\\"];\\n for (const i of n) void 0 !== t[i] && (e[i] = t[i]);\\n if (void 0 !== t.setLineDash) {\\n e.setLineDash(t.getLineDash());\\n e.lineDashOffset = t.lineDashOffset;\\n }\\n }\\n function resetCtxToDefault(t) {\\n t.strokeStyle = t.fillStyle = \\"#000000\\";\\n t.fillRule = \\"nonzero\\";\\n t.globalAlpha = 1;\\n t.lineWidth = 1;\\n t.lineCap = \\"butt\\";\\n t.lineJoin = \\"miter\\";\\n t.miterLimit = 10;\\n t.globalCompositeOperation = \\"source-over\\";\\n t.font = \\"10px sans-serif\\";\\n if (void 0 !== t.setLineDash) {\\n t.setLineDash([]);\\n t.lineDashOffset = 0;\\n }\\n if (!i.isNodeJS) {\\n const {\\n filter: e\\n } = t;\\n \\"none\\" !== e && \\"\\" !== e && (t.filter = \\"none\\");\\n }\\n }\\n function composeSMaskBackdrop(t, e, n, i) {\\n const r = t.length;\\n for (let s = 3; s < r; s += 4) {\\n const r = t[s];\\n if (0 === r) {\\n t[s - 3] = e;\\n t[s - 2] = n;\\n t[s - 1] = i;\\n } else if (r < 255) {\\n const a = 255 - r;\\n t[s - 3] = t[s - 3] * r + e * a >> 8;\\n t[s - 2] = t[s - 2] * r + n * a >> 8;\\n t[s - 1] = t[s - 1] * r + i * a >> 8;\\n }\\n }\\n }\\n function composeSMaskAlpha(t, e, n) {\\n const i = t.length;\\n for (let r = 3; r < i; r += 4) {\\n const i = n ? n[t[r]] : t[r];\\n e[r] = e[r] * i * .00392156862745098 | 0;\\n }\\n }\\n function composeSMaskLuminosity(t, e, n) {\\n const i = t.length;\\n for (let r = 3; r < i; r += 4) {\\n const i = 77 * t[r - 3] + 152 * t[r - 2] + 28 * t[r - 1];\\n e[r] = n ? e[r] * n[i >> 8] >> 8 : e[r] * i >> 16;\\n }\\n }\\n function composeSMask(t, e, n, i) {\\n const r = i[0],\\n s = i[1],\\n a = i[2] - r,\\n o = i[3] - s;\\n if (0 !== a && 0 !== o) {\\n !function genericComposeSMask(t, e, n, i, r, s, a, o, l, c, h) {\\n const d = !!s,\\n u = d ? s[0] : 0,\\n p = d ? s[1] : 0,\\n f = d ? s[2] : 0,\\n g = \\"Luminosity\\" === r ? composeSMaskLuminosity : composeSMaskAlpha,\\n m = Math.min(i, Math.ceil(1048576 / n));\\n for (let r = 0; r < i; r += m) {\\n const s = Math.min(m, i - r),\\n b = t.getImageData(o - c, r + (l - h), n, s),\\n v = e.getImageData(o, r + l, n, s);\\n d && composeSMaskBackdrop(b.data, u, p, f);\\n g(b.data, v.data, a);\\n e.putImageData(v, o, r + l);\\n }\\n }(e.context, n, a, o, e.subtype, e.backdrop, e.transferMap, r, s, e.offsetX, e.offsetY);\\n t.save();\\n t.globalAlpha = 1;\\n t.globalCompositeOperation = \\"source-over\\";\\n t.setTransform(1, 0, 0, 1, 0, 0);\\n t.drawImage(n.canvas, 0, 0);\\n t.restore();\\n }\\n }\\n function getImageSmoothingEnabled(t, e) {\\n const n = i.Util.singularValueDecompose2dScale(t);\\n n[0] = Math.fround(n[0]);\\n n[1] = Math.fround(n[1]);\\n const s = Math.fround((globalThis.devicePixelRatio || 1) * r.PixelsPerInch.PDF_TO_CSS_UNITS);\\n return void 0 !== e ? e : n[0] <= s || n[1] <= s;\\n }\\n const c = [\\"butt\\", \\"round\\", \\"square\\"],\\n h = [\\"miter\\", \\"round\\", \\"bevel\\"],\\n d = {},\\n u = {};\\n var _Gt = /*#__PURE__*/new WeakSet();\\n var _Vt = /*#__PURE__*/new WeakSet();\\n class CanvasGraphics {\\n constructor(_t10, _e9, n, i, r, s, a, o) {\\n _classPrivateMethodInitSpec(this, _Vt);\\n _classPrivateMethodInitSpec(this, _Gt);\\n let {\\n optionalContentConfig: l,\\n markedContentStack: c = null\\n } = s;\\n this.ctx = _t10;\\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\\n this.stateStack = [];\\n this.pendingClip = null;\\n this.pendingEOFill = !1;\\n this.res = null;\\n this.xobjs = null;\\n this.commonObjs = _e9;\\n this.objs = n;\\n this.canvasFactory = i;\\n this.filterFactory = r;\\n this.groupStack = [];\\n this.processingType3 = null;\\n this.baseTransform = null;\\n this.baseTransformStack = [];\\n this.groupLevel = 0;\\n this.smaskStack = [];\\n this.smaskCounter = 0;\\n this.tempSMask = null;\\n this.suspendedCtx = null;\\n this.contentVisible = !0;\\n this.markedContentStack = c || [];\\n this.optionalContentConfig = l;\\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\\n this.cachedPatterns = new Map();\\n this.annotationCanvasMap = a;\\n this.viewportScale = 1;\\n this.outputScaleX = 1;\\n this.outputScaleY = 1;\\n this.pageColors = o;\\n this._cachedScaleForStroking = [-1, 0];\\n this._cachedGetSinglePixelWidth = null;\\n this._cachedBitmapsMap = new Map();\\n }\\n getObject(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return \\"string\\" == typeof t ? t.startsWith(\\"g_\\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\\n }\\n beginDrawing(t) {\\n let {\\n transform: e,\\n viewport: n,\\n transparency: i = !1,\\n background: s = null\\n } = t;\\n const a = this.ctx.canvas.width,\\n o = this.ctx.canvas.height,\\n l = this.ctx.fillStyle;\\n this.ctx.fillStyle = s || \\"#ffffff\\";\\n this.ctx.fillRect(0, 0, a, o);\\n this.ctx.fillStyle = l;\\n if (i) {\\n const t = this.cachedCanvases.getCanvas(\\"transparent\\", a, o);\\n this.compositeCtx = this.ctx;\\n this.transparentCanvas = t.canvas;\\n this.ctx = t.context;\\n this.ctx.save();\\n this.ctx.transform(...(0, r.getCurrentTransform)(this.compositeCtx));\\n }\\n this.ctx.save();\\n resetCtxToDefault(this.ctx);\\n if (e) {\\n this.ctx.transform(...e);\\n this.outputScaleX = e[0];\\n this.outputScaleY = e[0];\\n }\\n this.ctx.transform(...n.transform);\\n this.viewportScale = n.scale;\\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\\n }\\n executeOperatorList(t, e, n, r) {\\n const s = t.argsArray,\\n a = t.fnArray;\\n let o = e || 0;\\n const l = s.length;\\n if (l === o) return o;\\n const c = l - o > 10 && \\"function\\" == typeof n,\\n h = c ? Date.now() + 15 : 0;\\n let d = 0;\\n const u = this.commonObjs,\\n p = this.objs;\\n let f;\\n for (;;) {\\n if (void 0 !== r && o === r.nextBreakPoint) {\\n r.breakIt(o, n);\\n return o;\\n }\\n f = a[o];\\n if (f !== i.OPS.dependency) this[f].apply(this, s[o]);else for (const t of s[o]) {\\n const e = t.startsWith(\\"g_\\") ? u : p;\\n if (!e.has(t)) {\\n e.get(t, n);\\n return o;\\n }\\n }\\n o++;\\n if (o === l) return o;\\n if (c && ++d > 10) {\\n if (Date.now() > h) {\\n n();\\n return o;\\n }\\n d = 0;\\n }\\n }\\n }\\n endDrawing() {\\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\\n this.cachedCanvases.clear();\\n this.cachedPatterns.clear();\\n for (const t of this._cachedBitmapsMap.values()) {\\n for (const e of t.values()) \\"undefined\\" != typeof HTMLCanvasElement && e instanceof HTMLCanvasElement && (e.width = e.height = 0);\\n t.clear();\\n }\\n this._cachedBitmapsMap.clear();\\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\\n }\\n _scaleImage(t, e) {\\n const n = t.width,\\n i = t.height;\\n let r,\\n s,\\n a = Math.max(Math.hypot(e[0], e[1]), 1),\\n o = Math.max(Math.hypot(e[2], e[3]), 1),\\n l = n,\\n c = i,\\n h = \\"prescale1\\";\\n for (; a > 2 && l > 1 || o > 2 && c > 1;) {\\n let e = l,\\n n = c;\\n if (a > 2 && l > 1) {\\n e = l >= 16384 ? Math.floor(l / 2) - 1 || 1 : Math.ceil(l / 2);\\n a /= l / e;\\n }\\n if (o > 2 && c > 1) {\\n n = c >= 16384 ? Math.floor(c / 2) - 1 || 1 : Math.ceil(c) / 2;\\n o /= c / n;\\n }\\n r = this.cachedCanvases.getCanvas(h, e, n);\\n s = r.context;\\n s.clearRect(0, 0, e, n);\\n s.drawImage(t, 0, 0, l, c, 0, 0, e, n);\\n t = r.canvas;\\n l = e;\\n c = n;\\n h = \\"prescale1\\" === h ? \\"prescale2\\" : \\"prescale1\\";\\n }\\n return {\\n img: t,\\n paintWidth: l,\\n paintHeight: c\\n };\\n }\\n _createMaskCanvas(t) {\\n const e = this.ctx,\\n {\\n width: n,\\n height: a\\n } = t,\\n o = this.current.fillColor,\\n l = this.current.patternFill,\\n c = (0, r.getCurrentTransform)(e);\\n let h, d, u, p;\\n if ((t.bitmap || t.data) && t.count > 1) {\\n const e = t.bitmap || t.data.buffer;\\n d = JSON.stringify(l ? c : [c.slice(0, 4), o]);\\n h = this._cachedBitmapsMap.get(e);\\n if (!h) {\\n h = new Map();\\n this._cachedBitmapsMap.set(e, h);\\n }\\n const n = h.get(d);\\n if (n && !l) {\\n return {\\n canvas: n,\\n offsetX: Math.round(Math.min(c[0], c[2]) + c[4]),\\n offsetY: Math.round(Math.min(c[1], c[3]) + c[5])\\n };\\n }\\n u = n;\\n }\\n if (!u) {\\n p = this.cachedCanvases.getCanvas(\\"maskCanvas\\", n, a);\\n putBinaryImageMask(p.context, t);\\n }\\n let f = i.Util.transform(c, [1 / n, 0, 0, -1 / a, 0, 0]);\\n f = i.Util.transform(f, [1, 0, 0, 1, 0, -a]);\\n const g = i.Util.applyTransform([0, 0], f),\\n m = i.Util.applyTransform([n, a], f),\\n b = i.Util.normalizeRect([g[0], g[1], m[0], m[1]]),\\n v = Math.round(b[2] - b[0]) || 1,\\n y = Math.round(b[3] - b[1]) || 1,\\n A = this.cachedCanvases.getCanvas(\\"fillCanvas\\", v, y),\\n _ = A.context,\\n S = Math.min(g[0], m[0]),\\n E = Math.min(g[1], m[1]);\\n _.translate(-S, -E);\\n _.transform(...f);\\n if (!u) {\\n u = this._scaleImage(p.canvas, (0, r.getCurrentTransformInverse)(_));\\n u = u.img;\\n h && l && h.set(d, u);\\n }\\n _.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(_), t.interpolate);\\n drawImageAtIntegerCoords(_, u, 0, 0, u.width, u.height, 0, 0, n, a);\\n _.globalCompositeOperation = \\"source-in\\";\\n const x = i.Util.transform((0, r.getCurrentTransformInverse)(_), [1, 0, 0, 1, -S, -E]);\\n _.fillStyle = l ? o.getPattern(e, this, x, s.PathType.FILL) : o;\\n _.fillRect(0, 0, n, a);\\n if (h && !l) {\\n this.cachedCanvases.delete(\\"fillCanvas\\");\\n h.set(d, A.canvas);\\n }\\n return {\\n canvas: A.canvas,\\n offsetX: Math.round(S),\\n offsetY: Math.round(E)\\n };\\n }\\n setLineWidth(t) {\\n t !== this.current.lineWidth && (this._cachedScaleForStroking[0] = -1);\\n this.current.lineWidth = t;\\n this.ctx.lineWidth = t;\\n }\\n setLineCap(t) {\\n this.ctx.lineCap = c[t];\\n }\\n setLineJoin(t) {\\n this.ctx.lineJoin = h[t];\\n }\\n setMiterLimit(t) {\\n this.ctx.miterLimit = t;\\n }\\n setDash(t, e) {\\n const n = this.ctx;\\n if (void 0 !== n.setLineDash) {\\n n.setLineDash(t);\\n n.lineDashOffset = e;\\n }\\n }\\n setRenderingIntent(t) {}\\n setFlatness(t) {}\\n setGState(t) {\\n for (const [e, n] of t) switch (e) {\\n case \\"LW\\":\\n this.setLineWidth(n);\\n break;\\n case \\"LC\\":\\n this.setLineCap(n);\\n break;\\n case \\"LJ\\":\\n this.setLineJoin(n);\\n break;\\n case \\"ML\\":\\n this.setMiterLimit(n);\\n break;\\n case \\"D\\":\\n this.setDash(n[0], n[1]);\\n break;\\n case \\"RI\\":\\n this.setRenderingIntent(n);\\n break;\\n case \\"FL\\":\\n this.setFlatness(n);\\n break;\\n case \\"Font\\":\\n this.setFont(n[0], n[1]);\\n break;\\n case \\"CA\\":\\n this.current.strokeAlpha = n;\\n break;\\n case \\"ca\\":\\n this.current.fillAlpha = n;\\n this.ctx.globalAlpha = n;\\n break;\\n case \\"BM\\":\\n this.ctx.globalCompositeOperation = n;\\n break;\\n case \\"SMask\\":\\n this.current.activeSMask = n ? this.tempSMask : null;\\n this.tempSMask = null;\\n this.checkSMaskState();\\n break;\\n case \\"TR\\":\\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(n);\\n }\\n }\\n get inSMaskMode() {\\n return !!this.suspendedCtx;\\n }\\n checkSMaskState() {\\n const t = this.inSMaskMode;\\n this.current.activeSMask && !t ? this.beginSMaskMode() : !this.current.activeSMask && t && this.endSMaskMode();\\n }\\n beginSMaskMode() {\\n if (this.inSMaskMode) throw new Error(\\"beginSMaskMode called while already in smask mode\\");\\n const t = this.ctx.canvas.width,\\n e = this.ctx.canvas.height,\\n n = \\"smaskGroupAt\\" + this.groupLevel,\\n i = this.cachedCanvases.getCanvas(n, t, e);\\n this.suspendedCtx = this.ctx;\\n this.ctx = i.context;\\n const s = this.ctx;\\n s.setTransform(...(0, r.getCurrentTransform)(this.suspendedCtx));\\n copyCtxState(this.suspendedCtx, s);\\n !function mirrorContextOperations(t, e) {\\n if (t._removeMirroring) throw new Error(\\"Context is already forwarding operations.\\");\\n t.__originalSave = t.save;\\n t.__originalRestore = t.restore;\\n t.__originalRotate = t.rotate;\\n t.__originalScale = t.scale;\\n t.__originalTranslate = t.translate;\\n t.__originalTransform = t.transform;\\n t.__originalSetTransform = t.setTransform;\\n t.__originalResetTransform = t.resetTransform;\\n t.__originalClip = t.clip;\\n t.__originalMoveTo = t.moveTo;\\n t.__originalLineTo = t.lineTo;\\n t.__originalBezierCurveTo = t.bezierCurveTo;\\n t.__originalRect = t.rect;\\n t.__originalClosePath = t.closePath;\\n t.__originalBeginPath = t.beginPath;\\n t._removeMirroring = () => {\\n t.save = t.__originalSave;\\n t.restore = t.__originalRestore;\\n t.rotate = t.__originalRotate;\\n t.scale = t.__originalScale;\\n t.translate = t.__originalTranslate;\\n t.transform = t.__originalTransform;\\n t.setTransform = t.__originalSetTransform;\\n t.resetTransform = t.__originalResetTransform;\\n t.clip = t.__originalClip;\\n t.moveTo = t.__originalMoveTo;\\n t.lineTo = t.__originalLineTo;\\n t.bezierCurveTo = t.__originalBezierCurveTo;\\n t.rect = t.__originalRect;\\n t.closePath = t.__originalClosePath;\\n t.beginPath = t.__originalBeginPath;\\n delete t._removeMirroring;\\n };\\n t.save = function ctxSave() {\\n e.save();\\n this.__originalSave();\\n };\\n t.restore = function ctxRestore() {\\n e.restore();\\n this.__originalRestore();\\n };\\n t.translate = function ctxTranslate(t, n) {\\n e.translate(t, n);\\n this.__originalTranslate(t, n);\\n };\\n t.scale = function ctxScale(t, n) {\\n e.scale(t, n);\\n this.__originalScale(t, n);\\n };\\n t.transform = function ctxTransform(t, n, i, r, s, a) {\\n e.transform(t, n, i, r, s, a);\\n this.__originalTransform(t, n, i, r, s, a);\\n };\\n t.setTransform = function ctxSetTransform(t, n, i, r, s, a) {\\n e.setTransform(t, n, i, r, s, a);\\n this.__originalSetTransform(t, n, i, r, s, a);\\n };\\n t.resetTransform = function ctxResetTransform() {\\n e.resetTransform();\\n this.__originalResetTransform();\\n };\\n t.rotate = function ctxRotate(t) {\\n e.rotate(t);\\n this.__originalRotate(t);\\n };\\n t.clip = function ctxRotate(t) {\\n e.clip(t);\\n this.__originalClip(t);\\n };\\n t.moveTo = function (t, n) {\\n e.moveTo(t, n);\\n this.__originalMoveTo(t, n);\\n };\\n t.lineTo = function (t, n) {\\n e.lineTo(t, n);\\n this.__originalLineTo(t, n);\\n };\\n t.bezierCurveTo = function (t, n, i, r, s, a) {\\n e.bezierCurveTo(t, n, i, r, s, a);\\n this.__originalBezierCurveTo(t, n, i, r, s, a);\\n };\\n t.rect = function (t, n, i, r) {\\n e.rect(t, n, i, r);\\n this.__originalRect(t, n, i, r);\\n };\\n t.closePath = function () {\\n e.closePath();\\n this.__originalClosePath();\\n };\\n t.beginPath = function () {\\n e.beginPath();\\n this.__originalBeginPath();\\n };\\n }(s, this.suspendedCtx);\\n this.setGState([[\\"BM\\", \\"source-over\\"], [\\"ca\\", 1], [\\"CA\\", 1]]);\\n }\\n endSMaskMode() {\\n if (!this.inSMaskMode) throw new Error(\\"endSMaskMode called while not in smask mode\\");\\n this.ctx._removeMirroring();\\n copyCtxState(this.ctx, this.suspendedCtx);\\n this.ctx = this.suspendedCtx;\\n this.suspendedCtx = null;\\n }\\n compose(t) {\\n if (!this.current.activeSMask) return;\\n if (t) {\\n t[0] = Math.floor(t[0]);\\n t[1] = Math.floor(t[1]);\\n t[2] = Math.ceil(t[2]);\\n t[3] = Math.ceil(t[3]);\\n } else t = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\\n const e = this.current.activeSMask;\\n composeSMask(this.suspendedCtx, e, this.ctx, t);\\n this.ctx.save();\\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\\n this.ctx.restore();\\n }\\n save() {\\n if (this.inSMaskMode) {\\n copyCtxState(this.ctx, this.suspendedCtx);\\n this.suspendedCtx.save();\\n } else this.ctx.save();\\n const t = this.current;\\n this.stateStack.push(t);\\n this.current = t.clone();\\n }\\n restore() {\\n 0 === this.stateStack.length && this.inSMaskMode && this.endSMaskMode();\\n if (0 !== this.stateStack.length) {\\n this.current = this.stateStack.pop();\\n if (this.inSMaskMode) {\\n this.suspendedCtx.restore();\\n copyCtxState(this.suspendedCtx, this.ctx);\\n } else this.ctx.restore();\\n this.checkSMaskState();\\n this.pendingClip = null;\\n this._cachedScaleForStroking[0] = -1;\\n this._cachedGetSinglePixelWidth = null;\\n }\\n }\\n transform(t, e, n, i, r, s) {\\n this.ctx.transform(t, e, n, i, r, s);\\n this._cachedScaleForStroking[0] = -1;\\n this._cachedGetSinglePixelWidth = null;\\n }\\n constructPath(t, e, n) {\\n const s = this.ctx,\\n a = this.current;\\n let o,\\n l,\\n c = a.x,\\n h = a.y;\\n const d = (0, r.getCurrentTransform)(s),\\n u = 0 === d[0] && 0 === d[3] || 0 === d[1] && 0 === d[2],\\n p = u ? n.slice(0) : null;\\n for (let n = 0, r = 0, f = t.length; n < f; n++) switch (0 | t[n]) {\\n case i.OPS.rectangle:\\n c = e[r++];\\n h = e[r++];\\n const t = e[r++],\\n n = e[r++],\\n f = c + t,\\n g = h + n;\\n s.moveTo(c, h);\\n if (0 === t || 0 === n) s.lineTo(f, g);else {\\n s.lineTo(f, h);\\n s.lineTo(f, g);\\n s.lineTo(c, g);\\n }\\n u || a.updateRectMinMax(d, [c, h, f, g]);\\n s.closePath();\\n break;\\n case i.OPS.moveTo:\\n c = e[r++];\\n h = e[r++];\\n s.moveTo(c, h);\\n u || a.updatePathMinMax(d, c, h);\\n break;\\n case i.OPS.lineTo:\\n c = e[r++];\\n h = e[r++];\\n s.lineTo(c, h);\\n u || a.updatePathMinMax(d, c, h);\\n break;\\n case i.OPS.curveTo:\\n o = c;\\n l = h;\\n c = e[r + 4];\\n h = e[r + 5];\\n s.bezierCurveTo(e[r], e[r + 1], e[r + 2], e[r + 3], c, h);\\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], e[r + 2], e[r + 3], c, h, p);\\n r += 6;\\n break;\\n case i.OPS.curveTo2:\\n o = c;\\n l = h;\\n s.bezierCurveTo(c, h, e[r], e[r + 1], e[r + 2], e[r + 3]);\\n a.updateCurvePathMinMax(d, o, l, c, h, e[r], e[r + 1], e[r + 2], e[r + 3], p);\\n c = e[r + 2];\\n h = e[r + 3];\\n r += 4;\\n break;\\n case i.OPS.curveTo3:\\n o = c;\\n l = h;\\n c = e[r + 2];\\n h = e[r + 3];\\n s.bezierCurveTo(e[r], e[r + 1], c, h, c, h);\\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], c, h, c, h, p);\\n r += 4;\\n break;\\n case i.OPS.closePath:\\n s.closePath();\\n }\\n u && a.updateScalingPathMinMax(d, p);\\n a.setCurrentPoint(c, h);\\n }\\n closePath() {\\n this.ctx.closePath();\\n }\\n stroke() {\\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\\n const e = this.ctx,\\n n = this.current.strokeColor;\\n e.globalAlpha = this.current.strokeAlpha;\\n if (this.contentVisible) if (\\"object\\" == typeof n && n !== null && n !== void 0 && n.getPattern) {\\n e.save();\\n e.strokeStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.STROKE);\\n this.rescaleAndStroke(!1);\\n e.restore();\\n } else this.rescaleAndStroke(!0);\\n t && this.consumePath(this.current.getClippedPathBoundingBox());\\n e.globalAlpha = this.current.fillAlpha;\\n }\\n closeStroke() {\\n this.closePath();\\n this.stroke();\\n }\\n fill() {\\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\\n const e = this.ctx,\\n n = this.current.fillColor;\\n let i = !1;\\n if (this.current.patternFill) {\\n e.save();\\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL);\\n i = !0;\\n }\\n const a = this.current.getClippedPathBoundingBox();\\n if (this.contentVisible && null !== a) if (this.pendingEOFill) {\\n e.fill(\\"evenodd\\");\\n this.pendingEOFill = !1;\\n } else e.fill();\\n i && e.restore();\\n t && this.consumePath(a);\\n }\\n eoFill() {\\n this.pendingEOFill = !0;\\n this.fill();\\n }\\n fillStroke() {\\n this.fill(!1);\\n this.stroke(!1);\\n this.consumePath();\\n }\\n eoFillStroke() {\\n this.pendingEOFill = !0;\\n this.fillStroke();\\n }\\n closeFillStroke() {\\n this.closePath();\\n this.fillStroke();\\n }\\n closeEOFillStroke() {\\n this.pendingEOFill = !0;\\n this.closePath();\\n this.fillStroke();\\n }\\n endPath() {\\n this.consumePath();\\n }\\n clip() {\\n this.pendingClip = d;\\n }\\n eoClip() {\\n this.pendingClip = u;\\n }\\n beginText() {\\n this.current.textMatrix = i.IDENTITY_MATRIX;\\n this.current.textMatrixScale = 1;\\n this.current.x = this.current.lineX = 0;\\n this.current.y = this.current.lineY = 0;\\n }\\n endText() {\\n const t = this.pendingTextPaths,\\n e = this.ctx;\\n if (void 0 !== t) {\\n e.save();\\n e.beginPath();\\n for (const n of t) {\\n e.setTransform(...n.transform);\\n e.translate(n.x, n.y);\\n n.addToPath(e, n.fontSize);\\n }\\n e.restore();\\n e.clip();\\n e.beginPath();\\n delete this.pendingTextPaths;\\n } else e.beginPath();\\n }\\n setCharSpacing(t) {\\n this.current.charSpacing = t;\\n }\\n setWordSpacing(t) {\\n this.current.wordSpacing = t;\\n }\\n setHScale(t) {\\n this.current.textHScale = t / 100;\\n }\\n setLeading(t) {\\n this.current.leading = -t;\\n }\\n setFont(t, e) {\\n var _n$systemFontInfo;\\n const n = this.commonObjs.get(t),\\n r = this.current;\\n if (!n) throw new Error(\\"Can't find font for \\".concat(t));\\n r.fontMatrix = n.fontMatrix || i.FONT_IDENTITY_MATRIX;\\n 0 !== r.fontMatrix[0] && 0 !== r.fontMatrix[3] || (0, i.warn)(\\"Invalid font matrix for font \\" + t);\\n if (e < 0) {\\n e = -e;\\n r.fontDirection = -1;\\n } else r.fontDirection = 1;\\n this.current.font = n;\\n this.current.fontSize = e;\\n if (n.isType3Font) return;\\n const s = n.loadedName || \\"sans-serif\\",\\n a = ((_n$systemFontInfo = n.systemFontInfo) === null || _n$systemFontInfo === void 0 ? void 0 : _n$systemFontInfo.css) || \\"\\\\\\"\\".concat(s, \\"\\\\\\", \\").concat(n.fallbackName);\\n let o = \\"normal\\";\\n n.black ? o = \\"900\\" : n.bold && (o = \\"bold\\");\\n const l = n.italic ? \\"italic\\" : \\"normal\\";\\n let c = e;\\n e < 16 ? c = 16 : e > 100 && (c = 100);\\n this.current.fontSizeScale = e / c;\\n this.ctx.font = \\"\\".concat(l, \\" \\").concat(o, \\" \\").concat(c, \\"px \\").concat(a);\\n }\\n setTextRenderingMode(t) {\\n this.current.textRenderingMode = t;\\n }\\n setTextRise(t) {\\n this.current.textRise = t;\\n }\\n moveText(t, e) {\\n this.current.x = this.current.lineX += t;\\n this.current.y = this.current.lineY += e;\\n }\\n setLeadingMoveText(t, e) {\\n this.setLeading(-e);\\n this.moveText(t, e);\\n }\\n setTextMatrix(t, e, n, i, r, s) {\\n this.current.textMatrix = [t, e, n, i, r, s];\\n this.current.textMatrixScale = Math.hypot(t, e);\\n this.current.x = this.current.lineX = 0;\\n this.current.y = this.current.lineY = 0;\\n }\\n nextLine() {\\n this.moveText(0, this.current.leading);\\n }\\n paintChar(t, e, n, s) {\\n const a = this.ctx,\\n o = this.current,\\n l = o.font,\\n c = o.textRenderingMode,\\n h = o.fontSize / o.fontSizeScale,\\n d = c & i.TextRenderingMode.FILL_STROKE_MASK,\\n u = !!(c & i.TextRenderingMode.ADD_TO_PATH_FLAG),\\n p = o.patternFill && !l.missingFile;\\n let f;\\n (l.disableFontFace || u || p) && (f = l.getPathGenerator(this.commonObjs, t));\\n if (l.disableFontFace || p) {\\n a.save();\\n a.translate(e, n);\\n a.beginPath();\\n f(a, h);\\n s && a.setTransform(...s);\\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fill();\\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.stroke();\\n a.restore();\\n } else {\\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fillText(t, e, n);\\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.strokeText(t, e, n);\\n }\\n if (u) {\\n (this.pendingTextPaths || (this.pendingTextPaths = [])).push({\\n transform: (0, r.getCurrentTransform)(a),\\n x: e,\\n y: n,\\n fontSize: h,\\n addToPath: f\\n });\\n }\\n }\\n get isFontSubpixelAAEnabled() {\\n const {\\n context: t\\n } = this.cachedCanvases.getCanvas(\\"isFontSubpixelAAEnabled\\", 10, 10);\\n t.scale(1.5, 1);\\n t.fillText(\\"I\\", 0, 10);\\n const e = t.getImageData(0, 0, 10, 10).data;\\n let n = !1;\\n for (let t = 3; t < e.length; t += 4) if (e[t] > 0 && e[t] < 255) {\\n n = !0;\\n break;\\n }\\n return (0, i.shadow)(this, \\"isFontSubpixelAAEnabled\\", n);\\n }\\n showText(t) {\\n const e = this.current,\\n n = e.font;\\n if (n.isType3Font) return this.showType3Text(t);\\n const a = e.fontSize;\\n if (0 === a) return;\\n const o = this.ctx,\\n l = e.fontSizeScale,\\n c = e.charSpacing,\\n h = e.wordSpacing,\\n d = e.fontDirection,\\n u = e.textHScale * d,\\n p = t.length,\\n f = n.vertical,\\n g = f ? 1 : -1,\\n m = n.defaultVMetrics,\\n b = a * e.fontMatrix[0],\\n v = e.textRenderingMode === i.TextRenderingMode.FILL && !n.disableFontFace && !e.patternFill;\\n o.save();\\n o.transform(...e.textMatrix);\\n o.translate(e.x, e.y + e.textRise);\\n d > 0 ? o.scale(u, -1) : o.scale(u, 1);\\n let y;\\n if (e.patternFill) {\\n o.save();\\n const t = e.fillColor.getPattern(o, this, (0, r.getCurrentTransformInverse)(o), s.PathType.FILL);\\n y = (0, r.getCurrentTransform)(o);\\n o.restore();\\n o.fillStyle = t;\\n }\\n let A = e.lineWidth;\\n const _ = e.textMatrixScale;\\n if (0 === _ || 0 === A) {\\n const t = e.textRenderingMode & i.TextRenderingMode.FILL_STROKE_MASK;\\n t !== i.TextRenderingMode.STROKE && t !== i.TextRenderingMode.FILL_STROKE || (A = this.getSinglePixelWidth());\\n } else A /= _;\\n if (1 !== l) {\\n o.scale(l, l);\\n A /= l;\\n }\\n o.lineWidth = A;\\n if (n.isInvalidPDFjsFont) {\\n const n = [];\\n let i = 0;\\n for (const e of t) {\\n n.push(e.unicode);\\n i += e.width;\\n }\\n o.fillText(n.join(\\"\\"), 0, 0);\\n e.x += i * b * u;\\n o.restore();\\n this.compose();\\n return;\\n }\\n let S,\\n E = 0;\\n for (S = 0; S < p; ++S) {\\n const e = t[S];\\n if (\\"number\\" == typeof e) {\\n E += g * e * a / 1e3;\\n continue;\\n }\\n let i = !1;\\n const r = (e.isSpace ? h : 0) + c,\\n s = e.fontChar,\\n u = e.accent;\\n let p,\\n A,\\n _ = e.width;\\n if (f) {\\n const t = e.vmetric || m,\\n n = -(e.vmetric ? t[1] : .5 * _) * b,\\n i = t[2] * b;\\n _ = t ? -t[0] : _;\\n p = n / l;\\n A = (E + i) / l;\\n } else {\\n p = E / l;\\n A = 0;\\n }\\n if (n.remeasure && _ > 0) {\\n const t = 1e3 * o.measureText(s).width / a * l;\\n if (_ < t && this.isFontSubpixelAAEnabled) {\\n const e = _ / t;\\n i = !0;\\n o.save();\\n o.scale(e, 1);\\n p /= e;\\n } else _ !== t && (p += (_ - t) / 2e3 * a / l);\\n }\\n if (this.contentVisible && (e.isInFont || n.missingFile)) if (v && !u) o.fillText(s, p, A);else {\\n this.paintChar(s, p, A, y);\\n if (u) {\\n const t = p + a * u.offset.x / l,\\n e = A - a * u.offset.y / l;\\n this.paintChar(u.fontChar, t, e, y);\\n }\\n }\\n E += f ? _ * b - r * d : _ * b + r * d;\\n i && o.restore();\\n }\\n f ? e.y -= E : e.x += E * u;\\n o.restore();\\n this.compose();\\n }\\n showType3Text(t) {\\n const e = this.ctx,\\n n = this.current,\\n r = n.font,\\n s = n.fontSize,\\n a = n.fontDirection,\\n o = r.vertical ? 1 : -1,\\n l = n.charSpacing,\\n c = n.wordSpacing,\\n h = n.textHScale * a,\\n d = n.fontMatrix || i.FONT_IDENTITY_MATRIX,\\n u = t.length;\\n let p, f, g, m;\\n if (!(n.textRenderingMode === i.TextRenderingMode.INVISIBLE) && 0 !== s) {\\n this._cachedScaleForStroking[0] = -1;\\n this._cachedGetSinglePixelWidth = null;\\n e.save();\\n e.transform(...n.textMatrix);\\n e.translate(n.x, n.y);\\n e.scale(h, a);\\n for (p = 0; p < u; ++p) {\\n f = t[p];\\n if (\\"number\\" == typeof f) {\\n m = o * f * s / 1e3;\\n this.ctx.translate(m, 0);\\n n.x += m * h;\\n continue;\\n }\\n const a = (f.isSpace ? c : 0) + l,\\n u = r.charProcOperatorList[f.operatorListId];\\n if (!u) {\\n (0, i.warn)(\\"Type3 character \\\\\\"\\".concat(f.operatorListId, \\"\\\\\\" is not available.\\"));\\n continue;\\n }\\n if (this.contentVisible) {\\n this.processingType3 = f;\\n this.save();\\n e.scale(s, s);\\n e.transform(...d);\\n this.executeOperatorList(u);\\n this.restore();\\n }\\n g = i.Util.applyTransform([f.width, 0], d)[0] * s + a;\\n e.translate(g, 0);\\n n.x += g * h;\\n }\\n e.restore();\\n this.processingType3 = null;\\n }\\n }\\n setCharWidth(t, e) {}\\n setCharWidthAndBounds(t, e, n, i, r, s) {\\n this.ctx.rect(n, i, r - n, s - i);\\n this.ctx.clip();\\n this.endPath();\\n }\\n getColorN_Pattern(t) {\\n let e;\\n if (\\"TilingPattern\\" === t[0]) {\\n const n = t[1],\\n i = this.baseTransform || (0, r.getCurrentTransform)(this.ctx),\\n a = {\\n createCanvasGraphics: t => new CanvasGraphics(t, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\\n optionalContentConfig: this.optionalContentConfig,\\n markedContentStack: this.markedContentStack\\n })\\n };\\n e = new s.TilingPattern(t, n, this.ctx, a, i);\\n } else e = this._getPattern(t[1], t[2]);\\n return e;\\n }\\n setStrokeColorN() {\\n this.current.strokeColor = this.getColorN_Pattern(arguments);\\n }\\n setFillColorN() {\\n this.current.fillColor = this.getColorN_Pattern(arguments);\\n this.current.patternFill = !0;\\n }\\n setStrokeRGBColor(t, e, n) {\\n const r = i.Util.makeHexColor(t, e, n);\\n this.ctx.strokeStyle = r;\\n this.current.strokeColor = r;\\n }\\n setFillRGBColor(t, e, n) {\\n const r = i.Util.makeHexColor(t, e, n);\\n this.ctx.fillStyle = r;\\n this.current.fillColor = r;\\n this.current.patternFill = !1;\\n }\\n _getPattern(t) {\\n let e,\\n n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n if (this.cachedPatterns.has(t)) e = this.cachedPatterns.get(t);else {\\n e = (0, s.getShadingPattern)(this.getObject(t));\\n this.cachedPatterns.set(t, e);\\n }\\n n && (e.matrix = n);\\n return e;\\n }\\n shadingFill(t) {\\n if (!this.contentVisible) return;\\n const e = this.ctx;\\n this.save();\\n const n = this._getPattern(t);\\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.SHADING);\\n const a = (0, r.getCurrentTransformInverse)(e);\\n if (a) {\\n const {\\n width: t,\\n height: n\\n } = e.canvas,\\n [r, s, o, l] = i.Util.getAxialAlignedBoundingBox([0, 0, t, n], a);\\n this.ctx.fillRect(r, s, o - r, l - s);\\n } else this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\\n this.compose(this.current.getClippedPathBoundingBox());\\n this.restore();\\n }\\n beginInlineImage() {\\n (0, i.unreachable)(\\"Should not call beginInlineImage\\");\\n }\\n beginImageData() {\\n (0, i.unreachable)(\\"Should not call beginImageData\\");\\n }\\n paintFormXObjectBegin(t, e) {\\n if (this.contentVisible) {\\n this.save();\\n this.baseTransformStack.push(this.baseTransform);\\n Array.isArray(t) && 6 === t.length && this.transform(...t);\\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\\n if (e) {\\n const t = e[2] - e[0],\\n n = e[3] - e[1];\\n this.ctx.rect(e[0], e[1], t, n);\\n this.current.updateRectMinMax((0, r.getCurrentTransform)(this.ctx), e);\\n this.clip();\\n this.endPath();\\n }\\n }\\n }\\n paintFormXObjectEnd() {\\n if (this.contentVisible) {\\n this.restore();\\n this.baseTransform = this.baseTransformStack.pop();\\n }\\n }\\n beginGroup(t) {\\n if (!this.contentVisible) return;\\n this.save();\\n if (this.inSMaskMode) {\\n this.endSMaskMode();\\n this.current.activeSMask = null;\\n }\\n const e = this.ctx;\\n t.isolated || (0, i.info)(\\"TODO: Support non-isolated groups.\\");\\n t.knockout && (0, i.warn)(\\"Knockout groups not supported.\\");\\n const n = (0, r.getCurrentTransform)(e);\\n t.matrix && e.transform(...t.matrix);\\n if (!t.bbox) throw new Error(\\"Bounding box is required.\\");\\n let s = i.Util.getAxialAlignedBoundingBox(t.bbox, (0, r.getCurrentTransform)(e));\\n const a = [0, 0, e.canvas.width, e.canvas.height];\\n s = i.Util.intersect(s, a) || [0, 0, 0, 0];\\n const l = Math.floor(s[0]),\\n c = Math.floor(s[1]);\\n let h = Math.max(Math.ceil(s[2]) - l, 1),\\n d = Math.max(Math.ceil(s[3]) - c, 1),\\n u = 1,\\n p = 1;\\n if (h > o) {\\n u = h / o;\\n h = o;\\n }\\n if (d > o) {\\n p = d / o;\\n d = o;\\n }\\n this.current.startNewPathAndClipBox([0, 0, h, d]);\\n let f = \\"groupAt\\" + this.groupLevel;\\n t.smask && (f += \\"_smask_\\" + this.smaskCounter++ % 2);\\n const g = this.cachedCanvases.getCanvas(f, h, d),\\n m = g.context;\\n m.scale(1 / u, 1 / p);\\n m.translate(-l, -c);\\n m.transform(...n);\\n if (t.smask) this.smaskStack.push({\\n canvas: g.canvas,\\n context: m,\\n offsetX: l,\\n offsetY: c,\\n scaleX: u,\\n scaleY: p,\\n subtype: t.smask.subtype,\\n backdrop: t.smask.backdrop,\\n transferMap: t.smask.transferMap || null,\\n startTransformInverse: null\\n });else {\\n e.setTransform(1, 0, 0, 1, 0, 0);\\n e.translate(l, c);\\n e.scale(u, p);\\n e.save();\\n }\\n copyCtxState(e, m);\\n this.ctx = m;\\n this.setGState([[\\"BM\\", \\"source-over\\"], [\\"ca\\", 1], [\\"CA\\", 1]]);\\n this.groupStack.push(e);\\n this.groupLevel++;\\n }\\n endGroup(t) {\\n if (!this.contentVisible) return;\\n this.groupLevel--;\\n const e = this.ctx,\\n n = this.groupStack.pop();\\n this.ctx = n;\\n this.ctx.imageSmoothingEnabled = !1;\\n if (t.smask) {\\n this.tempSMask = this.smaskStack.pop();\\n this.restore();\\n } else {\\n this.ctx.restore();\\n const t = (0, r.getCurrentTransform)(this.ctx);\\n this.restore();\\n this.ctx.save();\\n this.ctx.setTransform(...t);\\n const n = i.Util.getAxialAlignedBoundingBox([0, 0, e.canvas.width, e.canvas.height], t);\\n this.ctx.drawImage(e.canvas, 0, 0);\\n this.ctx.restore();\\n this.compose(n);\\n }\\n }\\n beginAnnotation(t, e, n, s, a) {\\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\\n resetCtxToDefault(this.ctx);\\n this.ctx.save();\\n this.save();\\n this.baseTransform && this.ctx.setTransform(...this.baseTransform);\\n if (Array.isArray(e) && 4 === e.length) {\\n const s = e[2] - e[0],\\n o = e[3] - e[1];\\n if (a && this.annotationCanvasMap) {\\n (n = n.slice())[4] -= e[0];\\n n[5] -= e[1];\\n (e = e.slice())[0] = e[1] = 0;\\n e[2] = s;\\n e[3] = o;\\n const [a, l] = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(this.ctx)),\\n {\\n viewportScale: c\\n } = this,\\n h = Math.ceil(s * this.outputScaleX * c),\\n d = Math.ceil(o * this.outputScaleY * c);\\n this.annotationCanvas = this.canvasFactory.create(h, d);\\n const {\\n canvas: u,\\n context: p\\n } = this.annotationCanvas;\\n this.annotationCanvasMap.set(t, u);\\n this.annotationCanvas.savedCtx = this.ctx;\\n this.ctx = p;\\n this.ctx.save();\\n this.ctx.setTransform(a, 0, 0, -l, 0, o * l);\\n resetCtxToDefault(this.ctx);\\n } else {\\n resetCtxToDefault(this.ctx);\\n this.ctx.rect(e[0], e[1], s, o);\\n this.ctx.clip();\\n this.endPath();\\n }\\n }\\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\\n this.transform(...n);\\n this.transform(...s);\\n }\\n endAnnotation() {\\n if (this.annotationCanvas) {\\n this.ctx.restore();\\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\\n this.ctx = this.annotationCanvas.savedCtx;\\n delete this.annotationCanvas.savedCtx;\\n delete this.annotationCanvas;\\n }\\n }\\n paintImageMaskXObject(t) {\\n if (!this.contentVisible) return;\\n const e = t.count;\\n (t = this.getObject(t.data, t)).count = e;\\n const n = this.ctx,\\n i = this.processingType3;\\n if (i) {\\n void 0 === i.compiled && (i.compiled = function compileType3Glyph(t) {\\n const {\\n width: e,\\n height: n\\n } = t;\\n if (e > 1e3 || n > 1e3) return null;\\n const i = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]),\\n r = e + 1;\\n let s,\\n a,\\n o,\\n l = new Uint8Array(r * (n + 1));\\n const c = e + 7 & -8;\\n let h = new Uint8Array(c * n),\\n d = 0;\\n for (const e of t.data) {\\n let t = 128;\\n for (; t > 0;) {\\n h[d++] = e & t ? 0 : 255;\\n t >>= 1;\\n }\\n }\\n let u = 0;\\n d = 0;\\n if (0 !== h[d]) {\\n l[0] = 1;\\n ++u;\\n }\\n for (a = 1; a < e; a++) {\\n if (h[d] !== h[d + 1]) {\\n l[a] = h[d] ? 2 : 1;\\n ++u;\\n }\\n d++;\\n }\\n if (0 !== h[d]) {\\n l[a] = 2;\\n ++u;\\n }\\n for (s = 1; s < n; s++) {\\n d = s * c;\\n o = s * r;\\n if (h[d - c] !== h[d]) {\\n l[o] = h[d] ? 1 : 8;\\n ++u;\\n }\\n let t = (h[d] ? 4 : 0) + (h[d - c] ? 8 : 0);\\n for (a = 1; a < e; a++) {\\n t = (t >> 2) + (h[d + 1] ? 4 : 0) + (h[d - c + 1] ? 8 : 0);\\n if (i[t]) {\\n l[o + a] = i[t];\\n ++u;\\n }\\n d++;\\n }\\n if (h[d - c] !== h[d]) {\\n l[o + a] = h[d] ? 2 : 4;\\n ++u;\\n }\\n if (u > 1e3) return null;\\n }\\n d = c * (n - 1);\\n o = s * r;\\n if (0 !== h[d]) {\\n l[o] = 8;\\n ++u;\\n }\\n for (a = 1; a < e; a++) {\\n if (h[d] !== h[d + 1]) {\\n l[o + a] = h[d] ? 4 : 8;\\n ++u;\\n }\\n d++;\\n }\\n if (0 !== h[d]) {\\n l[o + a] = 4;\\n ++u;\\n }\\n if (u > 1e3) return null;\\n const p = new Int32Array([0, r, -1, 0, -r, 0, 0, 0, 1]),\\n f = new Path2D();\\n for (s = 0; u && s <= n; s++) {\\n let t = s * r;\\n const n = t + e;\\n for (; t < n && !l[t];) t++;\\n if (t === n) continue;\\n f.moveTo(t % r, s);\\n const i = t;\\n let a = l[t];\\n do {\\n const e = p[a];\\n do {\\n t += e;\\n } while (!l[t]);\\n const n = l[t];\\n if (5 !== n && 10 !== n) {\\n a = n;\\n l[t] = 0;\\n } else {\\n a = n & 51 * a >> 4;\\n l[t] &= a >> 2 | a << 2;\\n }\\n f.lineTo(t % r, t / r | 0);\\n l[t] || --u;\\n } while (i !== t);\\n --s;\\n }\\n h = null;\\n l = null;\\n return function (t) {\\n t.save();\\n t.scale(1 / e, -1 / n);\\n t.translate(0, -n);\\n t.fill(f);\\n t.beginPath();\\n t.restore();\\n };\\n }(t));\\n if (i.compiled) {\\n i.compiled(n);\\n return;\\n }\\n }\\n const r = this._createMaskCanvas(t),\\n s = r.canvas;\\n n.save();\\n n.setTransform(1, 0, 0, 1, 0, 0);\\n n.drawImage(s, r.offsetX, r.offsetY);\\n n.restore();\\n this.compose();\\n }\\n paintImageMaskXObjectRepeat(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,\\n s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,\\n a = arguments.length > 4 ? arguments[4] : void 0,\\n o = arguments.length > 5 ? arguments[5] : void 0;\\n if (!this.contentVisible) return;\\n t = this.getObject(t.data, t);\\n const l = this.ctx;\\n l.save();\\n const c = (0, r.getCurrentTransform)(l);\\n l.transform(e, n, s, a, 0, 0);\\n const h = this._createMaskCanvas(t);\\n l.setTransform(1, 0, 0, 1, h.offsetX - c[4], h.offsetY - c[5]);\\n for (let t = 0, r = o.length; t < r; t += 2) {\\n const r = i.Util.transform(c, [e, n, s, a, o[t], o[t + 1]]),\\n [d, u] = i.Util.applyTransform([0, 0], r);\\n l.drawImage(h.canvas, d, u);\\n }\\n l.restore();\\n this.compose();\\n }\\n paintImageMaskXObjectGroup(t) {\\n if (!this.contentVisible) return;\\n const e = this.ctx,\\n n = this.current.fillColor,\\n i = this.current.patternFill;\\n for (const a of t) {\\n const {\\n data: t,\\n width: o,\\n height: l,\\n transform: c\\n } = a,\\n h = this.cachedCanvases.getCanvas(\\"maskCanvas\\", o, l),\\n d = h.context;\\n d.save();\\n putBinaryImageMask(d, this.getObject(t, a));\\n d.globalCompositeOperation = \\"source-in\\";\\n d.fillStyle = i ? n.getPattern(d, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL) : n;\\n d.fillRect(0, 0, o, l);\\n d.restore();\\n e.save();\\n e.transform(...c);\\n e.scale(1, -1);\\n drawImageAtIntegerCoords(e, h.canvas, 0, 0, o, l, 0, -1, 1, 1);\\n e.restore();\\n }\\n this.compose();\\n }\\n paintImageXObject(t) {\\n if (!this.contentVisible) return;\\n const e = this.getObject(t);\\n e ? this.paintInlineImageXObject(e) : (0, i.warn)(\\"Dependent image isn't ready yet\\");\\n }\\n paintImageXObjectRepeat(t, e, n, r) {\\n if (!this.contentVisible) return;\\n const s = this.getObject(t);\\n if (!s) {\\n (0, i.warn)(\\"Dependent image isn't ready yet\\");\\n return;\\n }\\n const a = s.width,\\n o = s.height,\\n l = [];\\n for (let t = 0, i = r.length; t < i; t += 2) l.push({\\n transform: [e, 0, 0, n, r[t], r[t + 1]],\\n x: 0,\\n y: 0,\\n w: a,\\n h: o\\n });\\n this.paintInlineImageXObjectGroup(s, l);\\n }\\n applyTransferMapsToCanvas(t) {\\n if (\\"none\\" !== this.current.transferMaps) {\\n t.filter = this.current.transferMaps;\\n t.drawImage(t.canvas, 0, 0);\\n t.filter = \\"none\\";\\n }\\n return t.canvas;\\n }\\n applyTransferMapsToBitmap(t) {\\n if (\\"none\\" === this.current.transferMaps) return t.bitmap;\\n const {\\n bitmap: e,\\n width: n,\\n height: i\\n } = t,\\n r = this.cachedCanvases.getCanvas(\\"inlineImage\\", n, i),\\n s = r.context;\\n s.filter = this.current.transferMaps;\\n s.drawImage(e, 0, 0);\\n s.filter = \\"none\\";\\n return r.canvas;\\n }\\n paintInlineImageXObject(t) {\\n if (!this.contentVisible) return;\\n const e = t.width,\\n n = t.height,\\n s = this.ctx;\\n this.save();\\n if (!i.isNodeJS) {\\n const {\\n filter: t\\n } = s;\\n \\"none\\" !== t && \\"\\" !== t && (s.filter = \\"none\\");\\n }\\n s.scale(1 / e, -1 / n);\\n let a;\\n if (t.bitmap) a = this.applyTransferMapsToBitmap(t);else if (\\"function\\" == typeof HTMLElement && t instanceof HTMLElement || !t.data) a = t;else {\\n const i = this.cachedCanvases.getCanvas(\\"inlineImage\\", e, n).context;\\n putBinaryImageData(i, t);\\n a = this.applyTransferMapsToCanvas(i);\\n }\\n const o = this._scaleImage(a, (0, r.getCurrentTransformInverse)(s));\\n s.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(s), t.interpolate);\\n drawImageAtIntegerCoords(s, o.img, 0, 0, o.paintWidth, o.paintHeight, 0, -n, e, n);\\n this.compose();\\n this.restore();\\n }\\n paintInlineImageXObjectGroup(t, e) {\\n if (!this.contentVisible) return;\\n const n = this.ctx;\\n let i;\\n if (t.bitmap) i = t.bitmap;else {\\n const e = t.width,\\n n = t.height,\\n r = this.cachedCanvases.getCanvas(\\"inlineImage\\", e, n).context;\\n putBinaryImageData(r, t);\\n i = this.applyTransferMapsToCanvas(r);\\n }\\n for (const t of e) {\\n n.save();\\n n.transform(...t.transform);\\n n.scale(1, -1);\\n drawImageAtIntegerCoords(n, i, t.x, t.y, t.w, t.h, 0, -1, 1, 1);\\n n.restore();\\n }\\n this.compose();\\n }\\n paintSolidColorImageMask() {\\n if (this.contentVisible) {\\n this.ctx.fillRect(0, 0, 1, 1);\\n this.compose();\\n }\\n }\\n markPoint(t) {}\\n markPointProps(t, e) {}\\n beginMarkedContent(t) {\\n this.markedContentStack.push({\\n visible: !0\\n });\\n }\\n beginMarkedContentProps(t, e) {\\n \\"OC\\" === t ? this.markedContentStack.push({\\n visible: this.optionalContentConfig.isVisible(e)\\n }) : this.markedContentStack.push({\\n visible: !0\\n });\\n this.contentVisible = this.isContentVisible();\\n }\\n endMarkedContent() {\\n this.markedContentStack.pop();\\n this.contentVisible = this.isContentVisible();\\n }\\n beginCompat() {}\\n endCompat() {}\\n consumePath(t) {\\n const e = this.current.isEmptyClip();\\n this.pendingClip && this.current.updateClipFromPath();\\n this.pendingClip || this.compose(t);\\n const n = this.ctx;\\n if (this.pendingClip) {\\n e || (this.pendingClip === u ? n.clip(\\"evenodd\\") : n.clip());\\n this.pendingClip = null;\\n }\\n this.current.startNewPathAndClipBox(this.current.clipBox);\\n n.beginPath();\\n }\\n getSinglePixelWidth() {\\n if (!this._cachedGetSinglePixelWidth) {\\n const t = (0, r.getCurrentTransform)(this.ctx);\\n if (0 === t[1] && 0 === t[2]) this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(t[0]), Math.abs(t[3]));else {\\n const e = Math.abs(t[0] * t[3] - t[2] * t[1]),\\n n = Math.hypot(t[0], t[2]),\\n i = Math.hypot(t[1], t[3]);\\n this._cachedGetSinglePixelWidth = Math.max(n, i) / e;\\n }\\n }\\n return this._cachedGetSinglePixelWidth;\\n }\\n getScaleForStroking() {\\n if (-1 === this._cachedScaleForStroking[0]) {\\n const {\\n lineWidth: t\\n } = this.current,\\n {\\n a: e,\\n b: n,\\n c: i,\\n d: r\\n } = this.ctx.getTransform();\\n let s, a;\\n if (0 === n && 0 === i) {\\n const n = Math.abs(e),\\n i = Math.abs(r);\\n if (n === i) {\\n if (0 === t) s = a = 1 / n;else {\\n const e = n * t;\\n s = a = e < 1 ? 1 / e : 1;\\n }\\n } else if (0 === t) {\\n s = 1 / n;\\n a = 1 / i;\\n } else {\\n const e = n * t,\\n r = i * t;\\n s = e < 1 ? 1 / e : 1;\\n a = r < 1 ? 1 / r : 1;\\n }\\n } else {\\n const o = Math.abs(e * r - n * i),\\n l = Math.hypot(e, n),\\n c = Math.hypot(i, r);\\n if (0 === t) {\\n s = c / o;\\n a = l / o;\\n } else {\\n const e = t * o;\\n s = c > e ? c / e : 1;\\n a = l > e ? l / e : 1;\\n }\\n }\\n this._cachedScaleForStroking[0] = s;\\n this._cachedScaleForStroking[1] = a;\\n }\\n return this._cachedScaleForStroking;\\n }\\n rescaleAndStroke(t) {\\n const {\\n ctx: e\\n } = this,\\n {\\n lineWidth: n\\n } = this.current,\\n [i, r] = this.getScaleForStroking();\\n e.lineWidth = n || 1;\\n if (1 === i && 1 === r) {\\n e.stroke();\\n return;\\n }\\n const s = e.getLineDash();\\n t && e.save();\\n e.scale(i, r);\\n if (s.length > 0) {\\n const t = Math.max(i, r);\\n e.setLineDash(s.map(e => e / t));\\n e.lineDashOffset /= t;\\n }\\n e.stroke();\\n t && e.restore();\\n }\\n isContentVisible() {\\n for (let t = this.markedContentStack.length - 1; t >= 0; t--) if (!this.markedContentStack[t].visible) return !1;\\n return !0;\\n }\\n }\\n function _Gt2() {\\n for (; this.stateStack.length || this.inSMaskMode;) this.restore();\\n this.ctx.restore();\\n if (this.transparentCanvas) {\\n this.ctx = this.compositeCtx;\\n this.ctx.save();\\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\\n this.ctx.restore();\\n this.transparentCanvas = null;\\n }\\n }\\n function _Vt2() {\\n if (this.pageColors) {\\n const t = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\\n if (\\"none\\" !== t) {\\n const e = this.ctx.filter;\\n this.ctx.filter = t;\\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\\n this.ctx.filter = e;\\n }\\n }\\n }\\n e.CanvasGraphics = CanvasGraphics;\\n for (const t in i.OPS) void 0 !== CanvasGraphics.prototype[t] && (CanvasGraphics.prototype[i.OPS[t]] = CanvasGraphics.prototype[t]);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.TilingPattern = e.PathType = void 0;\\n e.getShadingPattern = function getShadingPattern(t) {\\n switch (t[0]) {\\n case \\"RadialAxial\\":\\n return new RadialAxialShadingPattern(t);\\n case \\"Mesh\\":\\n return new MeshShadingPattern(t);\\n case \\"Dummy\\":\\n return new DummyShadingPattern();\\n }\\n throw new Error(\\"Unknown IR type: \\".concat(t[0]));\\n };\\n n(2);\\n var i = n(1),\\n r = n(167);\\n const s = {\\n FILL: \\"Fill\\",\\n STROKE: \\"Stroke\\",\\n SHADING: \\"Shading\\"\\n };\\n e.PathType = s;\\n function applyBoundingBox(t, e) {\\n if (!e) return;\\n const n = e[2] - e[0],\\n i = e[3] - e[1],\\n r = new Path2D();\\n r.rect(e[0], e[1], n, i);\\n t.clip(r);\\n }\\n class BaseShadingPattern {\\n constructor() {\\n this.constructor === BaseShadingPattern && (0, i.unreachable)(\\"Cannot initialize BaseShadingPattern.\\");\\n }\\n getPattern() {\\n (0, i.unreachable)(\\"Abstract method \`getPattern\` called.\\");\\n }\\n }\\n class RadialAxialShadingPattern extends BaseShadingPattern {\\n constructor(t) {\\n super();\\n this._type = t[1];\\n this._bbox = t[2];\\n this._colorStops = t[3];\\n this._p0 = t[4];\\n this._p1 = t[5];\\n this._r0 = t[6];\\n this._r1 = t[7];\\n this.matrix = null;\\n }\\n _createGradient(t) {\\n let e;\\n \\"axial\\" === this._type ? e = t.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]) : \\"radial\\" === this._type && (e = t.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1));\\n for (const t of this._colorStops) e.addColorStop(t[0], t[1]);\\n return e;\\n }\\n getPattern(t, e, n, a) {\\n let o;\\n if (a === s.STROKE || a === s.FILL) {\\n const s = e.current.getClippedPathBoundingBox(a, (0, r.getCurrentTransform)(t)) || [0, 0, 0, 0],\\n l = Math.ceil(s[2] - s[0]) || 1,\\n c = Math.ceil(s[3] - s[1]) || 1,\\n h = e.cachedCanvases.getCanvas(\\"pattern\\", l, c, !0),\\n d = h.context;\\n d.clearRect(0, 0, d.canvas.width, d.canvas.height);\\n d.beginPath();\\n d.rect(0, 0, d.canvas.width, d.canvas.height);\\n d.translate(-s[0], -s[1]);\\n n = i.Util.transform(n, [1, 0, 0, 1, s[0], s[1]]);\\n d.transform(...e.baseTransform);\\n this.matrix && d.transform(...this.matrix);\\n applyBoundingBox(d, this._bbox);\\n d.fillStyle = this._createGradient(d);\\n d.fill();\\n o = t.createPattern(h.canvas, \\"no-repeat\\");\\n const u = new DOMMatrix(n);\\n o.setTransform(u);\\n } else {\\n applyBoundingBox(t, this._bbox);\\n o = this._createGradient(t);\\n }\\n return o;\\n }\\n }\\n function drawTriangle(t, e, n, i, r, s, a, o) {\\n const l = e.coords,\\n c = e.colors,\\n h = t.data,\\n d = 4 * t.width;\\n let u;\\n if (l[n + 1] > l[i + 1]) {\\n u = n;\\n n = i;\\n i = u;\\n u = s;\\n s = a;\\n a = u;\\n }\\n if (l[i + 1] > l[r + 1]) {\\n u = i;\\n i = r;\\n r = u;\\n u = a;\\n a = o;\\n o = u;\\n }\\n if (l[n + 1] > l[i + 1]) {\\n u = n;\\n n = i;\\n i = u;\\n u = s;\\n s = a;\\n a = u;\\n }\\n const p = (l[n] + e.offsetX) * e.scaleX,\\n f = (l[n + 1] + e.offsetY) * e.scaleY,\\n g = (l[i] + e.offsetX) * e.scaleX,\\n m = (l[i + 1] + e.offsetY) * e.scaleY,\\n b = (l[r] + e.offsetX) * e.scaleX,\\n v = (l[r + 1] + e.offsetY) * e.scaleY;\\n if (f >= v) return;\\n const y = c[s],\\n A = c[s + 1],\\n _ = c[s + 2],\\n S = c[a],\\n E = c[a + 1],\\n x = c[a + 2],\\n w = c[o],\\n C = c[o + 1],\\n T = c[o + 2],\\n P = Math.round(f),\\n k = Math.round(v);\\n let M, R, I, D, O, L, N, B;\\n for (let t = P; t <= k; t++) {\\n if (t < m) {\\n const e = t < f ? 0 : (f - t) / (f - m);\\n M = p - (p - g) * e;\\n R = y - (y - S) * e;\\n I = A - (A - E) * e;\\n D = _ - (_ - x) * e;\\n } else {\\n let e;\\n e = t > v ? 1 : m === v ? 0 : (m - t) / (m - v);\\n M = g - (g - b) * e;\\n R = S - (S - w) * e;\\n I = E - (E - C) * e;\\n D = x - (x - T) * e;\\n }\\n let e;\\n e = t < f ? 0 : t > v ? 1 : (f - t) / (f - v);\\n O = p - (p - b) * e;\\n L = y - (y - w) * e;\\n N = A - (A - C) * e;\\n B = _ - (_ - T) * e;\\n const n = Math.round(Math.min(M, O)),\\n i = Math.round(Math.max(M, O));\\n let r = d * t + 4 * n;\\n for (let t = n; t <= i; t++) {\\n e = (M - t) / (M - O);\\n e < 0 ? e = 0 : e > 1 && (e = 1);\\n h[r++] = R - (R - L) * e | 0;\\n h[r++] = I - (I - N) * e | 0;\\n h[r++] = D - (D - B) * e | 0;\\n h[r++] = 255;\\n }\\n }\\n }\\n function drawFigure(t, e, n) {\\n const i = e.coords,\\n r = e.colors;\\n let s, a;\\n switch (e.type) {\\n case \\"lattice\\":\\n const o = e.verticesPerRow,\\n l = Math.floor(i.length / o) - 1,\\n c = o - 1;\\n for (s = 0; s < l; s++) {\\n let e = s * o;\\n for (let s = 0; s < c; s++, e++) {\\n drawTriangle(t, n, i[e], i[e + 1], i[e + o], r[e], r[e + 1], r[e + o]);\\n drawTriangle(t, n, i[e + o + 1], i[e + 1], i[e + o], r[e + o + 1], r[e + 1], r[e + o]);\\n }\\n }\\n break;\\n case \\"triangles\\":\\n for (s = 0, a = i.length; s < a; s += 3) drawTriangle(t, n, i[s], i[s + 1], i[s + 2], r[s], r[s + 1], r[s + 2]);\\n break;\\n default:\\n throw new Error(\\"illegal figure\\");\\n }\\n }\\n class MeshShadingPattern extends BaseShadingPattern {\\n constructor(t) {\\n super();\\n this._coords = t[2];\\n this._colors = t[3];\\n this._figures = t[4];\\n this._bounds = t[5];\\n this._bbox = t[7];\\n this._background = t[8];\\n this.matrix = null;\\n }\\n _createMeshCanvas(t, e, n) {\\n const i = Math.floor(this._bounds[0]),\\n r = Math.floor(this._bounds[1]),\\n s = Math.ceil(this._bounds[2]) - i,\\n a = Math.ceil(this._bounds[3]) - r,\\n o = Math.min(Math.ceil(Math.abs(s * t[0] * 1.1)), 3e3),\\n l = Math.min(Math.ceil(Math.abs(a * t[1] * 1.1)), 3e3),\\n c = s / o,\\n h = a / l,\\n d = {\\n coords: this._coords,\\n colors: this._colors,\\n offsetX: -i,\\n offsetY: -r,\\n scaleX: 1 / c,\\n scaleY: 1 / h\\n },\\n u = o + 4,\\n p = l + 4,\\n f = n.getCanvas(\\"mesh\\", u, p, !1),\\n g = f.context,\\n m = g.createImageData(o, l);\\n if (e) {\\n const t = m.data;\\n for (let n = 0, i = t.length; n < i; n += 4) {\\n t[n] = e[0];\\n t[n + 1] = e[1];\\n t[n + 2] = e[2];\\n t[n + 3] = 255;\\n }\\n }\\n for (const t of this._figures) drawFigure(m, t, d);\\n g.putImageData(m, 2, 2);\\n return {\\n canvas: f.canvas,\\n offsetX: i - 2 * c,\\n offsetY: r - 2 * h,\\n scaleX: c,\\n scaleY: h\\n };\\n }\\n getPattern(t, e, n, a) {\\n applyBoundingBox(t, this._bbox);\\n let o;\\n if (a === s.SHADING) o = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(t));else {\\n o = i.Util.singularValueDecompose2dScale(e.baseTransform);\\n if (this.matrix) {\\n const t = i.Util.singularValueDecompose2dScale(this.matrix);\\n o = [o[0] * t[0], o[1] * t[1]];\\n }\\n }\\n const l = this._createMeshCanvas(o, a === s.SHADING ? null : this._background, e.cachedCanvases);\\n if (a !== s.SHADING) {\\n t.setTransform(...e.baseTransform);\\n this.matrix && t.transform(...this.matrix);\\n }\\n t.translate(l.offsetX, l.offsetY);\\n t.scale(l.scaleX, l.scaleY);\\n return t.createPattern(l.canvas, \\"no-repeat\\");\\n }\\n }\\n class DummyShadingPattern extends BaseShadingPattern {\\n getPattern() {\\n return \\"hotpink\\";\\n }\\n }\\n const a = 1,\\n o = 2;\\n class TilingPattern {\\n constructor(t, e, n, i, r) {\\n this.operatorList = t[2];\\n this.matrix = t[3] || [1, 0, 0, 1, 0, 0];\\n this.bbox = t[4];\\n this.xstep = t[5];\\n this.ystep = t[6];\\n this.paintType = t[7];\\n this.tilingType = t[8];\\n this.color = e;\\n this.ctx = n;\\n this.canvasGraphicsFactory = i;\\n this.baseTransform = r;\\n }\\n createPatternCanvas(t) {\\n const e = this.operatorList,\\n n = this.bbox,\\n s = this.xstep,\\n a = this.ystep,\\n o = this.paintType,\\n l = this.tilingType,\\n c = this.color,\\n h = this.canvasGraphicsFactory;\\n (0, i.info)(\\"TilingType: \\" + l);\\n const d = n[0],\\n u = n[1],\\n p = n[2],\\n f = n[3],\\n g = i.Util.singularValueDecompose2dScale(this.matrix),\\n m = i.Util.singularValueDecompose2dScale(this.baseTransform),\\n b = [g[0] * m[0], g[1] * m[1]],\\n v = this.getSizeAndScale(s, this.ctx.canvas.width, b[0]),\\n y = this.getSizeAndScale(a, this.ctx.canvas.height, b[1]),\\n A = t.cachedCanvases.getCanvas(\\"pattern\\", v.size, y.size, !0),\\n _ = A.context,\\n S = h.createCanvasGraphics(_);\\n S.groupLevel = t.groupLevel;\\n this.setFillAndStrokeStyleToContext(S, o, c);\\n let E = d,\\n x = u,\\n w = p,\\n C = f;\\n if (d < 0) {\\n E = 0;\\n w += Math.abs(d);\\n }\\n if (u < 0) {\\n x = 0;\\n C += Math.abs(u);\\n }\\n _.translate(-v.scale * E, -y.scale * x);\\n S.transform(v.scale, 0, 0, y.scale, 0, 0);\\n _.save();\\n this.clipBbox(S, E, x, w, C);\\n S.baseTransform = (0, r.getCurrentTransform)(S.ctx);\\n S.executeOperatorList(e);\\n S.endDrawing();\\n return {\\n canvas: A.canvas,\\n scaleX: v.scale,\\n scaleY: y.scale,\\n offsetX: E,\\n offsetY: x\\n };\\n }\\n getSizeAndScale(t, e, n) {\\n t = Math.abs(t);\\n const i = Math.max(TilingPattern.MAX_PATTERN_SIZE, e);\\n let r = Math.ceil(t * n);\\n r >= i ? r = i : n = r / t;\\n return {\\n scale: n,\\n size: r\\n };\\n }\\n clipBbox(t, e, n, i, s) {\\n const a = i - e,\\n o = s - n;\\n t.ctx.rect(e, n, a, o);\\n t.current.updateRectMinMax((0, r.getCurrentTransform)(t.ctx), [e, n, i, s]);\\n t.clip();\\n t.endPath();\\n }\\n setFillAndStrokeStyleToContext(t, e, n) {\\n const r = t.ctx,\\n s = t.current;\\n switch (e) {\\n case a:\\n const t = this.ctx;\\n r.fillStyle = t.fillStyle;\\n r.strokeStyle = t.strokeStyle;\\n s.fillColor = t.fillStyle;\\n s.strokeColor = t.strokeStyle;\\n break;\\n case o:\\n const l = i.Util.makeHexColor(n[0], n[1], n[2]);\\n r.fillStyle = l;\\n r.strokeStyle = l;\\n s.fillColor = l;\\n s.strokeColor = l;\\n break;\\n default:\\n throw new i.FormatError(\\"Unsupported paint type: \\".concat(e));\\n }\\n }\\n getPattern(t, e, n, r) {\\n let a = n;\\n if (r !== s.SHADING) {\\n a = i.Util.transform(a, e.baseTransform);\\n this.matrix && (a = i.Util.transform(a, this.matrix));\\n }\\n const o = this.createPatternCanvas(e);\\n let l = new DOMMatrix(a);\\n l = l.translate(o.offsetX, o.offsetY);\\n l = l.scale(1 / o.scaleX, 1 / o.scaleY);\\n const c = t.createPattern(o.canvas, \\"repeat\\");\\n c.setTransform(l);\\n return c;\\n }\\n }\\n _defineProperty(TilingPattern, \\"MAX_PATTERN_SIZE\\", 3e3);\\n e.TilingPattern = TilingPattern;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA;\\n e.convertToRGBA = function convertToRGBA(t) {\\n switch (t.kind) {\\n case i.ImageKind.GRAYSCALE_1BPP:\\n return convertBlackAndWhiteToRGBA(t);\\n case i.ImageKind.RGB_24BPP:\\n return function convertRGBToRGBA(t) {\\n let {\\n src: e,\\n srcPos: n = 0,\\n dest: r,\\n destPos: s = 0,\\n width: a,\\n height: o\\n } = t,\\n l = 0;\\n const c = e.length >> 2,\\n h = new Uint32Array(e.buffer, n, c);\\n if (i.FeatureTest.isLittleEndian) {\\n for (; l < c - 2; l += 3, s += 4) {\\n const t = h[l],\\n e = h[l + 1],\\n n = h[l + 2];\\n r[s] = 4278190080 | t;\\n r[s + 1] = t >>> 24 | e << 8 | 4278190080;\\n r[s + 2] = e >>> 16 | n << 16 | 4278190080;\\n r[s + 3] = n >>> 8 | 4278190080;\\n }\\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] | e[t + 1] << 8 | e[t + 2] << 16 | 4278190080;\\n } else {\\n for (; l < c - 2; l += 3, s += 4) {\\n const t = h[l],\\n e = h[l + 1],\\n n = h[l + 2];\\n r[s] = 255 | t;\\n r[s + 1] = t << 24 | e >>> 8 | 255;\\n r[s + 2] = e << 16 | n >>> 16 | 255;\\n r[s + 3] = n << 8 | 255;\\n }\\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | 255;\\n }\\n return {\\n srcPos: n,\\n destPos: s\\n };\\n }(t);\\n }\\n return null;\\n };\\n e.grayToRGBA = function grayToRGBA(t, e) {\\n if (i.FeatureTest.isLittleEndian) for (let n = 0, i = t.length; n < i; n++) e[n] = 65793 * t[n] | 4278190080;else for (let n = 0, i = t.length; n < i; n++) e[n] = 16843008 * t[n] | 255;\\n };\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n var i = n(1);\\n function convertBlackAndWhiteToRGBA(t) {\\n let {\\n src: e,\\n srcPos: n = 0,\\n dest: r,\\n width: s,\\n height: a,\\n nonBlackColor: o = 4294967295,\\n inverseDecode: l = !1\\n } = t;\\n const c = i.FeatureTest.isLittleEndian ? 4278190080 : 255,\\n [h, d] = l ? [o, c] : [c, o],\\n u = s >> 3,\\n p = 7 & s,\\n f = e.length;\\n r = new Uint32Array(r.buffer);\\n let g = 0;\\n for (let t = 0; t < a; t++) {\\n for (const t = n + u; n < t; n++) {\\n const t = n < f ? e[n] : 255;\\n r[g++] = 128 & t ? d : h;\\n r[g++] = 64 & t ? d : h;\\n r[g++] = 32 & t ? d : h;\\n r[g++] = 16 & t ? d : h;\\n r[g++] = 8 & t ? d : h;\\n r[g++] = 4 & t ? d : h;\\n r[g++] = 2 & t ? d : h;\\n r[g++] = 1 & t ? d : h;\\n }\\n if (0 === p) continue;\\n const t = n < f ? e[n++] : 255;\\n for (let e = 0; e < p; e++) r[g++] = t & 1 << 7 - e ? d : h;\\n }\\n return {\\n srcPos: n,\\n destPos: g\\n };\\n }\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.GlobalWorkerOptions = void 0;\\n const n = Object.create(null);\\n e.GlobalWorkerOptions = n;\\n n.workerPort = null;\\n n.workerSrc = \\"\\";\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Xt, _$t, _Kt;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.MessageHandler = void 0;\\n n(2);\\n var i = n(1);\\n const r = 1,\\n s = 2,\\n a = 1,\\n o = 2,\\n l = 3,\\n c = 4,\\n h = 5,\\n d = 6,\\n u = 7,\\n p = 8;\\n function wrapReason(t) {\\n t instanceof Error || \\"object\\" == typeof t && null !== t || (0, i.unreachable)('wrapReason: Expected \\"reason\\" to be a (possibly cloned) Error.');\\n switch (t.name) {\\n case \\"AbortException\\":\\n return new i.AbortException(t.message);\\n case \\"MissingPDFException\\":\\n return new i.MissingPDFException(t.message);\\n case \\"PasswordException\\":\\n return new i.PasswordException(t.message, t.code);\\n case \\"UnexpectedResponseException\\":\\n return new i.UnexpectedResponseException(t.message, t.status);\\n case \\"UnknownErrorException\\":\\n return new i.UnknownErrorException(t.message, t.details);\\n default:\\n return new i.UnknownErrorException(t.message, t.toString());\\n }\\n }\\n e.MessageHandler = (_Xt = /*#__PURE__*/new WeakSet(), _$t = /*#__PURE__*/new WeakSet(), _Kt = /*#__PURE__*/new WeakSet(), class MessageHandler {\\n constructor(_t11, _e10, _n6) {\\n _classPrivateMethodInitSpec(this, _Kt);\\n _classPrivateMethodInitSpec(this, _$t);\\n _classPrivateMethodInitSpec(this, _Xt);\\n this.sourceName = _t11;\\n this.targetName = _e10;\\n this.comObj = _n6;\\n this.callbackId = 1;\\n this.streamId = 1;\\n this.streamSinks = Object.create(null);\\n this.streamControllers = Object.create(null);\\n this.callbackCapabilities = Object.create(null);\\n this.actionHandler = Object.create(null);\\n this._onComObjOnMessage = t => {\\n const e = t.data;\\n if (e.targetName !== this.sourceName) return;\\n if (e.stream) {\\n _classPrivateMethodGet(this, _$t, _$t2).call(this, e);\\n return;\\n }\\n if (e.callback) {\\n const t = e.callbackId,\\n n = this.callbackCapabilities[t];\\n if (!n) throw new Error(\\"Cannot resolve callback \\".concat(t));\\n delete this.callbackCapabilities[t];\\n if (e.callback === r) n.resolve(e.data);else {\\n if (e.callback !== s) throw new Error(\\"Unexpected callback case\\");\\n n.reject(wrapReason(e.reason));\\n }\\n return;\\n }\\n const i = this.actionHandler[e.action];\\n if (!i) throw new Error(\\"Unknown action from worker: \\".concat(e.action));\\n if (e.callbackId) {\\n const t = this.sourceName,\\n a = e.sourceName;\\n new Promise(function (t) {\\n t(i(e.data));\\n }).then(function (i) {\\n _n6.postMessage({\\n sourceName: t,\\n targetName: a,\\n callback: r,\\n callbackId: e.callbackId,\\n data: i\\n });\\n }, function (i) {\\n _n6.postMessage({\\n sourceName: t,\\n targetName: a,\\n callback: s,\\n callbackId: e.callbackId,\\n reason: wrapReason(i)\\n });\\n });\\n } else e.streamId ? _classPrivateMethodGet(this, _Xt, _Xt2).call(this, e) : i(e.data);\\n };\\n _n6.addEventListener(\\"message\\", this._onComObjOnMessage);\\n }\\n on(t, e) {\\n const n = this.actionHandler;\\n if (n[t]) throw new Error(\\"There is already an actionName called \\\\\\"\\".concat(t, \\"\\\\\\"\\"));\\n n[t] = e;\\n }\\n send(t, e, n) {\\n this.comObj.postMessage({\\n sourceName: this.sourceName,\\n targetName: this.targetName,\\n action: t,\\n data: e\\n }, n);\\n }\\n sendWithPromise(t, e, n) {\\n const r = this.callbackId++,\\n s = new i.PromiseCapability();\\n this.callbackCapabilities[r] = s;\\n try {\\n this.comObj.postMessage({\\n sourceName: this.sourceName,\\n targetName: this.targetName,\\n action: t,\\n callbackId: r,\\n data: e\\n }, n);\\n } catch (t) {\\n s.reject(t);\\n }\\n return s.promise;\\n }\\n sendWithStream(t, e, n, r) {\\n const s = this.streamId++,\\n o = this.sourceName,\\n l = this.targetName,\\n c = this.comObj;\\n return new ReadableStream({\\n start: n => {\\n const a = new i.PromiseCapability();\\n this.streamControllers[s] = {\\n controller: n,\\n startCall: a,\\n pullCall: null,\\n cancelCall: null,\\n isClosed: !1\\n };\\n c.postMessage({\\n sourceName: o,\\n targetName: l,\\n action: t,\\n streamId: s,\\n data: e,\\n desiredSize: n.desiredSize\\n }, r);\\n return a.promise;\\n },\\n pull: t => {\\n const e = new i.PromiseCapability();\\n this.streamControllers[s].pullCall = e;\\n c.postMessage({\\n sourceName: o,\\n targetName: l,\\n stream: d,\\n streamId: s,\\n desiredSize: t.desiredSize\\n });\\n return e.promise;\\n },\\n cancel: t => {\\n (0, i.assert)(t instanceof Error, \\"cancel must have a valid reason\\");\\n const e = new i.PromiseCapability();\\n this.streamControllers[s].cancelCall = e;\\n this.streamControllers[s].isClosed = !0;\\n c.postMessage({\\n sourceName: o,\\n targetName: l,\\n stream: a,\\n streamId: s,\\n reason: wrapReason(t)\\n });\\n return e.promise;\\n }\\n }, n);\\n }\\n destroy() {\\n this.comObj.removeEventListener(\\"message\\", this._onComObjOnMessage);\\n }\\n });\\n function _Xt2(t) {\\n const e = t.streamId,\\n n = this.sourceName,\\n r = t.sourceName,\\n s = this.comObj,\\n a = this,\\n o = this.actionHandler[t.action],\\n d = {\\n enqueue(t) {\\n let a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,\\n o = arguments.length > 2 ? arguments[2] : void 0;\\n if (this.isCancelled) return;\\n const l = this.desiredSize;\\n this.desiredSize -= a;\\n if (l > 0 && this.desiredSize <= 0) {\\n this.sinkCapability = new i.PromiseCapability();\\n this.ready = this.sinkCapability.promise;\\n }\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: c,\\n streamId: e,\\n chunk: t\\n }, o);\\n },\\n close() {\\n if (!this.isCancelled) {\\n this.isCancelled = !0;\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: l,\\n streamId: e\\n });\\n delete a.streamSinks[e];\\n }\\n },\\n error(t) {\\n (0, i.assert)(t instanceof Error, \\"error must have a valid reason\\");\\n if (!this.isCancelled) {\\n this.isCancelled = !0;\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: h,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n }\\n },\\n sinkCapability: new i.PromiseCapability(),\\n onPull: null,\\n onCancel: null,\\n isCancelled: !1,\\n desiredSize: t.desiredSize,\\n ready: null\\n };\\n d.sinkCapability.resolve();\\n d.ready = d.sinkCapability.promise;\\n this.streamSinks[e] = d;\\n new Promise(function (e) {\\n e(o(t.data, d));\\n }).then(function () {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: p,\\n streamId: e,\\n success: !0\\n });\\n }, function (t) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: p,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n });\\n }\\n function _$t2(t) {\\n const e = t.streamId,\\n n = this.sourceName,\\n r = t.sourceName,\\n s = this.comObj,\\n f = this.streamControllers[e],\\n g = this.streamSinks[e];\\n switch (t.stream) {\\n case p:\\n t.success ? f.startCall.resolve() : f.startCall.reject(wrapReason(t.reason));\\n break;\\n case u:\\n t.success ? f.pullCall.resolve() : f.pullCall.reject(wrapReason(t.reason));\\n break;\\n case d:\\n if (!g) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: u,\\n streamId: e,\\n success: !0\\n });\\n break;\\n }\\n g.desiredSize <= 0 && t.desiredSize > 0 && g.sinkCapability.resolve();\\n g.desiredSize = t.desiredSize;\\n new Promise(function (t) {\\n var _g$onPull;\\n t((_g$onPull = g.onPull) === null || _g$onPull === void 0 ? void 0 : _g$onPull.call(g));\\n }).then(function () {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: u,\\n streamId: e,\\n success: !0\\n });\\n }, function (t) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: u,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n });\\n break;\\n case c:\\n (0, i.assert)(f, \\"enqueue should have stream controller\\");\\n if (f.isClosed) break;\\n f.controller.enqueue(t.chunk);\\n break;\\n case l:\\n (0, i.assert)(f, \\"close should have stream controller\\");\\n if (f.isClosed) break;\\n f.isClosed = !0;\\n f.controller.close();\\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\\n break;\\n case h:\\n (0, i.assert)(f, \\"error should have stream controller\\");\\n f.controller.error(wrapReason(t.reason));\\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\\n break;\\n case o:\\n t.success ? f.cancelCall.resolve() : f.cancelCall.reject(wrapReason(t.reason));\\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\\n break;\\n case a:\\n if (!g) break;\\n new Promise(function (e) {\\n var _g$onCancel;\\n e((_g$onCancel = g.onCancel) === null || _g$onCancel === void 0 ? void 0 : _g$onCancel.call(g, wrapReason(t.reason)));\\n }).then(function () {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: o,\\n streamId: e,\\n success: !0\\n });\\n }, function (t) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: o,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n });\\n g.sinkCapability.reject(wrapReason(t.reason));\\n g.isCancelled = !0;\\n delete this.streamSinks[e];\\n break;\\n default:\\n throw new Error(\\"Unexpected stream case\\");\\n }\\n }\\n async function _Kt2(t, e) {\\n var _t$startCall, _t$pullCall, _t$cancelCall;\\n await Promise.allSettled([(_t$startCall = t.startCall) === null || _t$startCall === void 0 ? void 0 : _t$startCall.promise, (_t$pullCall = t.pullCall) === null || _t$pullCall === void 0 ? void 0 : _t$pullCall.promise, (_t$cancelCall = t.cancelCall) === null || _t$cancelCall === void 0 ? void 0 : _t$cancelCall.promise]);\\n delete this.streamControllers[e];\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Yt, _Jt;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.Metadata = void 0;\\n var i = n(1);\\n e.Metadata = (_Yt = /*#__PURE__*/new WeakMap(), _Jt = /*#__PURE__*/new WeakMap(), class Metadata {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _Yt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Jt, {\\n writable: true,\\n value: void 0\\n });\\n let {\\n parsedData: e,\\n rawData: n\\n } = t;\\n _classPrivateFieldSet(this, _Yt, e);\\n _classPrivateFieldSet(this, _Jt, n);\\n }\\n getRaw() {\\n return _classPrivateFieldGet(this, _Jt);\\n }\\n get(t) {\\n var _classPrivateFieldGet8;\\n return (_classPrivateFieldGet8 = _classPrivateFieldGet(this, _Yt).get(t)) !== null && _classPrivateFieldGet8 !== void 0 ? _classPrivateFieldGet8 : null;\\n }\\n getAll() {\\n return (0, i.objectFromMap)(_classPrivateFieldGet(this, _Yt));\\n }\\n has(t) {\\n return _classPrivateFieldGet(this, _Yt).has(t);\\n }\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Zt, _te, _ee, _ne, _ie;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.OptionalContentConfig = void 0;\\n var i = n(1),\\n r = n(169);\\n const s = Symbol(\\"INTERNAL\\");\\n var _Qt = /*#__PURE__*/new WeakMap();\\n class OptionalContentGroup {\\n constructor(t, e) {\\n _classPrivateFieldInitSpec(this, _Qt, {\\n writable: true,\\n value: !0\\n });\\n this.name = t;\\n this.intent = e;\\n }\\n get visible() {\\n return _classPrivateFieldGet(this, _Qt);\\n }\\n _setVisible(t, e) {\\n t !== s && (0, i.unreachable)(\\"Internal method \`_setVisible\` called.\\");\\n _classPrivateFieldSet(this, _Qt, e);\\n }\\n }\\n e.OptionalContentConfig = (_Zt = /*#__PURE__*/new WeakMap(), _te = /*#__PURE__*/new WeakMap(), _ee = /*#__PURE__*/new WeakMap(), _ne = /*#__PURE__*/new WeakMap(), _ie = /*#__PURE__*/new WeakSet(), class OptionalContentConfig {\\n constructor(_t12) {\\n _classPrivateMethodInitSpec(this, _ie);\\n _classPrivateFieldInitSpec(this, _Zt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _te, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _ee, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ne, {\\n writable: true,\\n value: null\\n });\\n this.name = null;\\n this.creator = null;\\n if (null !== _t12) {\\n this.name = _t12.name;\\n this.creator = _t12.creator;\\n _classPrivateFieldSet(this, _ne, _t12.order);\\n for (const e of _t12.groups) _classPrivateFieldGet(this, _te).set(e.id, new OptionalContentGroup(e.name, e.intent));\\n if (\\"OFF\\" === _t12.baseState) for (const t of _classPrivateFieldGet(this, _te).values()) t._setVisible(s, !1);\\n for (const e of _t12.on) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !0);\\n for (const e of _t12.off) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !1);\\n _classPrivateFieldSet(this, _ee, this.getHash());\\n }\\n }\\n isVisible(t) {\\n if (0 === _classPrivateFieldGet(this, _te).size) return !0;\\n if (!t) {\\n (0, i.warn)(\\"Optional content group not defined.\\");\\n return !0;\\n }\\n if (\\"OCG\\" === t.type) {\\n if (!_classPrivateFieldGet(this, _te).has(t.id)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(t.id));\\n return !0;\\n }\\n return _classPrivateFieldGet(this, _te).get(t.id).visible;\\n }\\n if (\\"OCMD\\" === t.type) {\\n if (t.expression) return _classPrivateMethodGet(this, _ie, _ie2).call(this, t.expression);\\n if (!t.policy || \\"AnyOn\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !0;\\n }\\n return !1;\\n }\\n if (\\"AllOn\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !1;\\n }\\n return !0;\\n }\\n if (\\"AnyOff\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !0;\\n }\\n return !1;\\n }\\n if (\\"AllOff\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !1;\\n }\\n return !0;\\n }\\n (0, i.warn)(\\"Unknown optional content policy \\".concat(t.policy, \\".\\"));\\n return !0;\\n }\\n (0, i.warn)(\\"Unknown group type \\".concat(t.type, \\".\\"));\\n return !0;\\n }\\n setVisibility(t) {\\n let e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\\n if (_classPrivateFieldGet(this, _te).has(t)) {\\n _classPrivateFieldGet(this, _te).get(t)._setVisible(s, !!e);\\n _classPrivateFieldSet(this, _Zt, null);\\n } else (0, i.warn)(\\"Optional content group not found: \\".concat(t));\\n }\\n get hasInitialVisibility() {\\n return this.getHash() === _classPrivateFieldGet(this, _ee);\\n }\\n getOrder() {\\n return _classPrivateFieldGet(this, _te).size ? _classPrivateFieldGet(this, _ne) ? _classPrivateFieldGet(this, _ne).slice() : [..._classPrivateFieldGet(this, _te).keys()] : null;\\n }\\n getGroups() {\\n return _classPrivateFieldGet(this, _te).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _te)) : null;\\n }\\n getGroup(t) {\\n return _classPrivateFieldGet(this, _te).get(t) || null;\\n }\\n getHash() {\\n if (null !== _classPrivateFieldGet(this, _Zt)) return _classPrivateFieldGet(this, _Zt);\\n const t = new r.MurmurHash3_64();\\n for (const [e, n] of _classPrivateFieldGet(this, _te)) t.update(\\"\\".concat(e, \\":\\").concat(n.visible));\\n return _classPrivateFieldSet(this, _Zt, t.hexdigest());\\n }\\n });\\n function _ie2(t) {\\n const e = t.length;\\n if (e < 2) return !0;\\n const n = t[0];\\n for (let r = 1; r < e; r++) {\\n const e = t[r];\\n let s;\\n if (Array.isArray(e)) s = _classPrivateMethodGet(this, _ie, _ie2).call(this, e);else {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n s = _classPrivateFieldGet(this, _te).get(e).visible;\\n }\\n switch (n) {\\n case \\"And\\":\\n if (!s) return !1;\\n break;\\n case \\"Or\\":\\n if (s) return !0;\\n break;\\n case \\"Not\\":\\n return !s;\\n default:\\n return !0;\\n }\\n }\\n return \\"And\\" === n;\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFDataTransportStream = void 0;\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n var i = n(1),\\n r = n(167);\\n e.PDFDataTransportStream = class PDFDataTransportStream {\\n constructor(t, e) {\\n let {\\n length: n,\\n initialData: r,\\n progressiveDone: s = !1,\\n contentDispositionFilename: a = null,\\n disableRange: o = !1,\\n disableStream: l = !1\\n } = t;\\n (0, i.assert)(e, 'PDFDataTransportStream - missing required \\"pdfDataRangeTransport\\" argument.');\\n this._queuedChunks = [];\\n this._progressiveDone = s;\\n this._contentDispositionFilename = a;\\n if ((r === null || r === void 0 ? void 0 : r.length) > 0) {\\n const t = r instanceof Uint8Array && r.byteLength === r.buffer.byteLength ? r.buffer : new Uint8Array(r).buffer;\\n this._queuedChunks.push(t);\\n }\\n this._pdfDataRangeTransport = e;\\n this._isStreamingSupported = !l;\\n this._isRangeSupported = !o;\\n this._contentLength = n;\\n this._fullRequestReader = null;\\n this._rangeReaders = [];\\n this._pdfDataRangeTransport.addRangeListener((t, e) => {\\n this._onReceiveData({\\n begin: t,\\n chunk: e\\n });\\n });\\n this._pdfDataRangeTransport.addProgressListener((t, e) => {\\n this._onProgress({\\n loaded: t,\\n total: e\\n });\\n });\\n this._pdfDataRangeTransport.addProgressiveReadListener(t => {\\n this._onReceiveData({\\n chunk: t\\n });\\n });\\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\\n this._onProgressiveDone();\\n });\\n this._pdfDataRangeTransport.transportReady();\\n }\\n _onReceiveData(t) {\\n let {\\n begin: e,\\n chunk: n\\n } = t;\\n const r = n instanceof Uint8Array && n.byteLength === n.buffer.byteLength ? n.buffer : new Uint8Array(n).buffer;\\n if (void 0 === e) this._fullRequestReader ? this._fullRequestReader._enqueue(r) : this._queuedChunks.push(r);else {\\n const t = this._rangeReaders.some(function (t) {\\n if (t._begin !== e) return !1;\\n t._enqueue(r);\\n return !0;\\n });\\n (0, i.assert)(t, \\"_onReceiveData - no \`PDFDataTransportStreamRangeReader\` instance found.\\");\\n }\\n }\\n get _progressiveDataLength() {\\n var _this$_fullRequestRea, _this$_fullRequestRea2;\\n return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0;\\n }\\n _onProgress(t) {\\n var _this$_rangeReaders$, _this$_rangeReaders$$, _this$_fullRequestRea3, _this$_fullRequestRea4;\\n void 0 === t.total ? (_this$_rangeReaders$ = this._rangeReaders[0]) === null || _this$_rangeReaders$ === void 0 || (_this$_rangeReaders$$ = _this$_rangeReaders$.onProgress) === null || _this$_rangeReaders$$ === void 0 ? void 0 : _this$_rangeReaders$$.call(_this$_rangeReaders$, {\\n loaded: t.loaded\\n }) : (_this$_fullRequestRea3 = this._fullRequestReader) === null || _this$_fullRequestRea3 === void 0 || (_this$_fullRequestRea4 = _this$_fullRequestRea3.onProgress) === null || _this$_fullRequestRea4 === void 0 ? void 0 : _this$_fullRequestRea4.call(_this$_fullRequestRea3, {\\n loaded: t.loaded,\\n total: t.total\\n });\\n }\\n _onProgressiveDone() {\\n var _this$_fullRequestRea5;\\n (_this$_fullRequestRea5 = this._fullRequestReader) === null || _this$_fullRequestRea5 === void 0 ? void 0 : _this$_fullRequestRea5.progressiveDone();\\n this._progressiveDone = !0;\\n }\\n _removeRangeReader(t) {\\n const e = this._rangeReaders.indexOf(t);\\n e >= 0 && this._rangeReaders.splice(e, 1);\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFDataTransportStream.getFullReader can only be called once.\\");\\n const t = this._queuedChunks;\\n this._queuedChunks = null;\\n return new PDFDataTransportStreamReader(this, t, this._progressiveDone, this._contentDispositionFilename);\\n }\\n getRangeReader(t, e) {\\n if (e <= this._progressiveDataLength) return null;\\n const n = new PDFDataTransportStreamRangeReader(this, t, e);\\n this._pdfDataRangeTransport.requestDataRange(t, e);\\n this._rangeReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea6;\\n (_this$_fullRequestRea6 = this._fullRequestReader) === null || _this$_fullRequestRea6 === void 0 ? void 0 : _this$_fullRequestRea6.cancel(t);\\n for (const e of this._rangeReaders.slice(0)) e.cancel(t);\\n this._pdfDataRangeTransport.abort();\\n }\\n };\\n class PDFDataTransportStreamReader {\\n constructor(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\\n this._stream = t;\\n this._done = n || !1;\\n this._filename = (0, r.isPdfFile)(i) ? i : null;\\n this._queuedChunks = e || [];\\n this._loaded = 0;\\n for (const t of this._queuedChunks) this._loaded += t.byteLength;\\n this._requests = [];\\n this._headersReady = Promise.resolve();\\n t._fullRequestReader = this;\\n this.onProgress = null;\\n }\\n _enqueue(t) {\\n if (!this._done) {\\n if (this._requests.length > 0) {\\n this._requests.shift().resolve({\\n value: t,\\n done: !1\\n });\\n } else this._queuedChunks.push(t);\\n this._loaded += t.byteLength;\\n }\\n }\\n get headersReady() {\\n return this._headersReady;\\n }\\n get filename() {\\n return this._filename;\\n }\\n get isRangeSupported() {\\n return this._stream._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._stream._isStreamingSupported;\\n }\\n get contentLength() {\\n return this._stream._contentLength;\\n }\\n async read() {\\n if (this._queuedChunks.length > 0) {\\n return {\\n value: this._queuedChunks.shift(),\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n }\\n progressiveDone() {\\n this._done || (this._done = !0);\\n }\\n }\\n class PDFDataTransportStreamRangeReader {\\n constructor(t, e, n) {\\n this._stream = t;\\n this._begin = e;\\n this._end = n;\\n this._queuedChunk = null;\\n this._requests = [];\\n this._done = !1;\\n this.onProgress = null;\\n }\\n _enqueue(t) {\\n if (!this._done) {\\n if (0 === this._requests.length) this._queuedChunk = t;else {\\n this._requests.shift().resolve({\\n value: t,\\n done: !1\\n });\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n }\\n this._done = !0;\\n this._stream._removeRangeReader(this);\\n }\\n }\\n get isStreamingSupported() {\\n return !1;\\n }\\n async read() {\\n if (this._queuedChunk) {\\n const t = this._queuedChunk;\\n this._queuedChunk = null;\\n return {\\n value: t,\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._stream._removeRangeReader(this);\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFFetchStream = void 0;\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n var i = n(1),\\n r = n(181);\\n function createFetchOptions(t, e, n) {\\n return {\\n method: \\"GET\\",\\n headers: t,\\n signal: n.signal,\\n mode: \\"cors\\",\\n credentials: e ? \\"include\\" : \\"same-origin\\",\\n redirect: \\"follow\\"\\n };\\n }\\n function createHeaders(t) {\\n const e = new Headers();\\n for (const n in t) {\\n const i = t[n];\\n void 0 !== i && e.append(n, i);\\n }\\n return e;\\n }\\n function getArrayBuffer(t) {\\n if (t instanceof Uint8Array) return t.buffer;\\n if (t instanceof ArrayBuffer) return t;\\n (0, i.warn)(\\"getArrayBuffer - unexpected data format: \\".concat(t));\\n return new Uint8Array(t).buffer;\\n }\\n e.PDFFetchStream = class PDFFetchStream {\\n constructor(t) {\\n this.source = t;\\n this.isHttp = /^https?:/i.test(t.url);\\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\\n this._fullRequestReader = null;\\n this._rangeRequestReaders = [];\\n }\\n get _progressiveDataLength() {\\n var _this$_fullRequestRea7, _this$_fullRequestRea8;\\n return (_this$_fullRequestRea7 = (_this$_fullRequestRea8 = this._fullRequestReader) === null || _this$_fullRequestRea8 === void 0 ? void 0 : _this$_fullRequestRea8._loaded) !== null && _this$_fullRequestRea7 !== void 0 ? _this$_fullRequestRea7 : 0;\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFFetchStream.getFullReader can only be called once.\\");\\n this._fullRequestReader = new PDFFetchStreamReader(this);\\n return this._fullRequestReader;\\n }\\n getRangeReader(t, e) {\\n if (e <= this._progressiveDataLength) return null;\\n const n = new PDFFetchStreamRangeReader(this, t, e);\\n this._rangeRequestReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea9;\\n (_this$_fullRequestRea9 = this._fullRequestReader) === null || _this$_fullRequestRea9 === void 0 ? void 0 : _this$_fullRequestRea9.cancel(t);\\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\\n }\\n };\\n class PDFFetchStreamReader {\\n constructor(t) {\\n this._stream = t;\\n this._reader = null;\\n this._loaded = 0;\\n this._filename = null;\\n const e = t.source;\\n this._withCredentials = e.withCredentials || !1;\\n this._contentLength = e.length;\\n this._headersCapability = new i.PromiseCapability();\\n this._disableRange = e.disableRange || !1;\\n this._rangeChunkSize = e.rangeChunkSize;\\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\\n this._abortController = new AbortController();\\n this._isStreamingSupported = !e.disableStream;\\n this._isRangeSupported = !e.disableRange;\\n this._headers = createHeaders(this._stream.httpHeaders);\\n const n = e.url;\\n fetch(n, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, n);\\n this._reader = t.body.getReader();\\n this._headersCapability.resolve();\\n const getResponseHeader = e => t.headers.get(e),\\n {\\n allowRangeRequests: e,\\n suggestedLength: s\\n } = (0, r.validateRangeRequestCapabilities)({\\n getResponseHeader: getResponseHeader,\\n isHttp: this._stream.isHttp,\\n rangeChunkSize: this._rangeChunkSize,\\n disableRange: this._disableRange\\n });\\n this._isRangeSupported = e;\\n this._contentLength = s || this._contentLength;\\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\\n !this._isStreamingSupported && this._isRangeSupported && this.cancel(new i.AbortException(\\"Streaming is disabled.\\"));\\n }).catch(this._headersCapability.reject);\\n this.onProgress = null;\\n }\\n get headersReady() {\\n return this._headersCapability.promise;\\n }\\n get filename() {\\n return this._filename;\\n }\\n get contentLength() {\\n return this._contentLength;\\n }\\n get isRangeSupported() {\\n return this._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress;\\n await this._headersCapability.promise;\\n const {\\n value: t,\\n done: e\\n } = await this._reader.read();\\n if (e) return {\\n value: t,\\n done: e\\n };\\n this._loaded += t.byteLength;\\n (_this$onProgress = this.onProgress) === null || _this$onProgress === void 0 ? void 0 : _this$onProgress.call(this, {\\n loaded: this._loaded,\\n total: this._contentLength\\n });\\n return {\\n value: getArrayBuffer(t),\\n done: !1\\n };\\n }\\n cancel(t) {\\n var _this$_reader;\\n (_this$_reader = this._reader) === null || _this$_reader === void 0 ? void 0 : _this$_reader.cancel(t);\\n this._abortController.abort();\\n }\\n }\\n class PDFFetchStreamRangeReader {\\n constructor(t, e, n) {\\n this._stream = t;\\n this._reader = null;\\n this._loaded = 0;\\n const s = t.source;\\n this._withCredentials = s.withCredentials || !1;\\n this._readCapability = new i.PromiseCapability();\\n this._isStreamingSupported = !s.disableStream;\\n this._abortController = new AbortController();\\n this._headers = createHeaders(this._stream.httpHeaders);\\n this._headers.append(\\"Range\\", \\"bytes=\\".concat(e, \\"-\\").concat(n - 1));\\n const a = s.url;\\n fetch(a, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, a);\\n this._readCapability.resolve();\\n this._reader = t.body.getReader();\\n }).catch(this._readCapability.reject);\\n this.onProgress = null;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress2;\\n await this._readCapability.promise;\\n const {\\n value: t,\\n done: e\\n } = await this._reader.read();\\n if (e) return {\\n value: t,\\n done: e\\n };\\n this._loaded += t.byteLength;\\n (_this$onProgress2 = this.onProgress) === null || _this$onProgress2 === void 0 ? void 0 : _this$onProgress2.call(this, {\\n loaded: this._loaded\\n });\\n return {\\n value: getArrayBuffer(t),\\n done: !1\\n };\\n }\\n cancel(t) {\\n var _this$_reader2;\\n (_this$_reader2 = this._reader) === null || _this$_reader2 === void 0 ? void 0 : _this$_reader2.cancel(t);\\n this._abortController.abort();\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.createResponseStatusError = function createResponseStatusError(t, e) {\\n if (404 === t || 0 === t && e.startsWith(\\"file:\\")) return new i.MissingPDFException('Missing PDF \\"' + e + '\\".');\\n return new i.UnexpectedResponseException(\\"Unexpected server response (\\".concat(t, \\") while retrieving PDF \\\\\\"\\").concat(e, \\"\\\\\\".\\"), t);\\n };\\n e.extractFilenameFromHeader = function extractFilenameFromHeader(t) {\\n const e = t(\\"Content-Disposition\\");\\n if (e) {\\n let t = (0, r.getFilenameFromContentDispositionHeader)(e);\\n if (t.includes(\\"%\\")) try {\\n t = decodeURIComponent(t);\\n } catch (_unused12) {}\\n if ((0, s.isPdfFile)(t)) return t;\\n }\\n return null;\\n };\\n e.validateRangeRequestCapabilities = function validateRangeRequestCapabilities(t) {\\n let {\\n getResponseHeader: e,\\n isHttp: n,\\n rangeChunkSize: i,\\n disableRange: r\\n } = t;\\n const s = {\\n allowRangeRequests: !1,\\n suggestedLength: void 0\\n },\\n a = parseInt(e(\\"Content-Length\\"), 10);\\n if (!Number.isInteger(a)) return s;\\n s.suggestedLength = a;\\n if (a <= 2 * i) return s;\\n if (r || !n) return s;\\n if (\\"bytes\\" !== e(\\"Accept-Ranges\\")) return s;\\n if (\\"identity\\" !== (e(\\"Content-Encoding\\") || \\"identity\\")) return s;\\n s.allowRangeRequests = !0;\\n return s;\\n };\\n e.validateResponseStatus = function validateResponseStatus(t) {\\n return 200 === t || 206 === t;\\n };\\n var i = n(1),\\n r = n(182),\\n s = n(167);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.getFilenameFromContentDispositionHeader = function getFilenameFromContentDispositionHeader(t) {\\n let e = !0,\\n n = toParamRegExp(\\"filename\\\\\\\\*\\", \\"i\\").exec(t);\\n if (n) {\\n n = n[1];\\n let t = rfc2616unquote(n);\\n t = unescape(t);\\n t = rfc5987decode(t);\\n t = rfc2047decode(t);\\n return fixupEncoding(t);\\n }\\n n = function rfc2231getparam(t) {\\n const e = [];\\n let n;\\n const i = toParamRegExp(\\"filename\\\\\\\\*((?!0\\\\\\\\d)\\\\\\\\d+)(\\\\\\\\*?)\\", \\"ig\\");\\n for (; null !== (n = i.exec(t));) {\\n let [, t, i, r] = n;\\n t = parseInt(t, 10);\\n if (t in e) {\\n if (0 === t) break;\\n } else e[t] = [i, r];\\n }\\n const r = [];\\n for (let t = 0; t < e.length && t in e; ++t) {\\n let [n, i] = e[t];\\n i = rfc2616unquote(i);\\n if (n) {\\n i = unescape(i);\\n 0 === t && (i = rfc5987decode(i));\\n }\\n r.push(i);\\n }\\n return r.join(\\"\\");\\n }(t);\\n if (n) {\\n return fixupEncoding(rfc2047decode(n));\\n }\\n n = toParamRegExp(\\"filename\\", \\"i\\").exec(t);\\n if (n) {\\n n = n[1];\\n let t = rfc2616unquote(n);\\n t = rfc2047decode(t);\\n return fixupEncoding(t);\\n }\\n function toParamRegExp(t, e) {\\n return new RegExp(\\"(?:^|;)\\\\\\\\s*\\" + t + '\\\\\\\\s*=\\\\\\\\s*([^\\";\\\\\\\\s][^;\\\\\\\\s]*|\\"(?:[^\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\\"?)+\\"?)', e);\\n }\\n function textdecode(t, n) {\\n if (t) {\\n if (!/^[\\\\x00-\\\\xFF]+$/.test(n)) return n;\\n try {\\n const r = new TextDecoder(t, {\\n fatal: !0\\n }),\\n s = (0, i.stringToBytes)(n);\\n n = r.decode(s);\\n e = !1;\\n } catch (_unused13) {}\\n }\\n return n;\\n }\\n function fixupEncoding(t) {\\n if (e && /[\\\\x80-\\\\xff]/.test(t)) {\\n t = textdecode(\\"utf-8\\", t);\\n e && (t = textdecode(\\"iso-8859-1\\", t));\\n }\\n return t;\\n }\\n function rfc2616unquote(t) {\\n if (t.startsWith('\\"')) {\\n const e = t.slice(1).split('\\\\\\\\\\"');\\n for (let t = 0; t < e.length; ++t) {\\n const n = e[t].indexOf('\\"');\\n if (-1 !== n) {\\n e[t] = e[t].slice(0, n);\\n e.length = t + 1;\\n }\\n e[t] = e[t].replaceAll(/\\\\\\\\(.)/g, \\"$1\\");\\n }\\n t = e.join('\\"');\\n }\\n return t;\\n }\\n function rfc5987decode(t) {\\n const e = t.indexOf(\\"'\\");\\n if (-1 === e) return t;\\n return textdecode(t.slice(0, e), t.slice(e + 1).replace(/^[^']*'/, \\"\\"));\\n }\\n function rfc2047decode(t) {\\n return !t.startsWith(\\"=?\\") || /[\\\\x00-\\\\x19\\\\x80-\\\\xff]/.test(t) ? t : t.replaceAll(/=\\\\?([\\\\w-]*)\\\\?([QqBb])\\\\?((?:[^?]|\\\\?(?!=))*)\\\\?=/g, function (t, e, n, i) {\\n if (\\"q\\" === n || \\"Q\\" === n) return textdecode(e, i = (i = i.replaceAll(\\"_\\", \\" \\")).replaceAll(/=([0-9a-fA-F]{2})/g, function (t, e) {\\n return String.fromCharCode(parseInt(e, 16));\\n }));\\n try {\\n i = atob(i);\\n } catch (_unused14) {}\\n return textdecode(e, i);\\n });\\n }\\n return \\"\\";\\n };\\n n(89);\\n n(148);\\n var i = n(1);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFNetworkStream = void 0;\\n n(89);\\n var i = n(1),\\n r = n(181);\\n class NetworkManager {\\n constructor(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\\n this.url = t;\\n this.isHttp = /^https?:/i.test(t);\\n this.httpHeaders = this.isHttp && e.httpHeaders || Object.create(null);\\n this.withCredentials = e.withCredentials || !1;\\n this.currXhrId = 0;\\n this.pendingRequests = Object.create(null);\\n }\\n requestRange(t, e, n) {\\n const i = {\\n begin: t,\\n end: e\\n };\\n for (const t in n) i[t] = n[t];\\n return this.request(i);\\n }\\n requestFull(t) {\\n return this.request(t);\\n }\\n request(t) {\\n const e = new XMLHttpRequest(),\\n n = this.currXhrId++,\\n i = this.pendingRequests[n] = {\\n xhr: e\\n };\\n e.open(\\"GET\\", this.url);\\n e.withCredentials = this.withCredentials;\\n for (const t in this.httpHeaders) {\\n const n = this.httpHeaders[t];\\n void 0 !== n && e.setRequestHeader(t, n);\\n }\\n if (this.isHttp && \\"begin\\" in t && \\"end\\" in t) {\\n e.setRequestHeader(\\"Range\\", \\"bytes=\\".concat(t.begin, \\"-\\").concat(t.end - 1));\\n i.expectedStatus = 206;\\n } else i.expectedStatus = 200;\\n e.responseType = \\"arraybuffer\\";\\n t.onError && (e.onerror = function (n) {\\n t.onError(e.status);\\n });\\n e.onreadystatechange = this.onStateChange.bind(this, n);\\n e.onprogress = this.onProgress.bind(this, n);\\n i.onHeadersReceived = t.onHeadersReceived;\\n i.onDone = t.onDone;\\n i.onError = t.onError;\\n i.onProgress = t.onProgress;\\n e.send(null);\\n return n;\\n }\\n onProgress(t, e) {\\n var _n$onProgress;\\n const n = this.pendingRequests[t];\\n n && ((_n$onProgress = n.onProgress) === null || _n$onProgress === void 0 ? void 0 : _n$onProgress.call(n, e));\\n }\\n onStateChange(t, e) {\\n var _n$onError3;\\n const n = this.pendingRequests[t];\\n if (!n) return;\\n const r = n.xhr;\\n if (r.readyState >= 2 && n.onHeadersReceived) {\\n n.onHeadersReceived();\\n delete n.onHeadersReceived;\\n }\\n if (4 !== r.readyState) return;\\n if (!(t in this.pendingRequests)) return;\\n delete this.pendingRequests[t];\\n if (0 === r.status && this.isHttp) {\\n var _n$onError;\\n (_n$onError = n.onError) === null || _n$onError === void 0 ? void 0 : _n$onError.call(n, r.status);\\n return;\\n }\\n const s = r.status || 200;\\n if (!(200 === s && 206 === n.expectedStatus) && s !== n.expectedStatus) {\\n var _n$onError2;\\n (_n$onError2 = n.onError) === null || _n$onError2 === void 0 ? void 0 : _n$onError2.call(n, r.status);\\n return;\\n }\\n const a = function getArrayBuffer(t) {\\n const e = t.response;\\n return \\"string\\" != typeof e ? e : (0, i.stringToBytes)(e).buffer;\\n }(r);\\n if (206 === s) {\\n const t = r.getResponseHeader(\\"Content-Range\\"),\\n e = /bytes (\\\\d+)-(\\\\d+)\\\\/(\\\\d+)/.exec(t);\\n n.onDone({\\n begin: parseInt(e[1], 10),\\n chunk: a\\n });\\n } else a ? n.onDone({\\n begin: 0,\\n chunk: a\\n }) : (_n$onError3 = n.onError) === null || _n$onError3 === void 0 ? void 0 : _n$onError3.call(n, r.status);\\n }\\n getRequestXhr(t) {\\n return this.pendingRequests[t].xhr;\\n }\\n isPendingRequest(t) {\\n return t in this.pendingRequests;\\n }\\n abortRequest(t) {\\n const e = this.pendingRequests[t].xhr;\\n delete this.pendingRequests[t];\\n e.abort();\\n }\\n }\\n e.PDFNetworkStream = class PDFNetworkStream {\\n constructor(t) {\\n this._source = t;\\n this._manager = new NetworkManager(t.url, {\\n httpHeaders: t.httpHeaders,\\n withCredentials: t.withCredentials\\n });\\n this._rangeChunkSize = t.rangeChunkSize;\\n this._fullRequestReader = null;\\n this._rangeRequestReaders = [];\\n }\\n _onRangeRequestReaderClosed(t) {\\n const e = this._rangeRequestReaders.indexOf(t);\\n e >= 0 && this._rangeRequestReaders.splice(e, 1);\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFNetworkStream.getFullReader can only be called once.\\");\\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\\n return this._fullRequestReader;\\n }\\n getRangeReader(t, e) {\\n const n = new PDFNetworkStreamRangeRequestReader(this._manager, t, e);\\n n.onClosed = this._onRangeRequestReaderClosed.bind(this);\\n this._rangeRequestReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea10;\\n (_this$_fullRequestRea10 = this._fullRequestReader) === null || _this$_fullRequestRea10 === void 0 ? void 0 : _this$_fullRequestRea10.cancel(t);\\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\\n }\\n };\\n class PDFNetworkStreamFullRequestReader {\\n constructor(t, e) {\\n this._manager = t;\\n const n = {\\n onHeadersReceived: this._onHeadersReceived.bind(this),\\n onDone: this._onDone.bind(this),\\n onError: this._onError.bind(this),\\n onProgress: this._onProgress.bind(this)\\n };\\n this._url = e.url;\\n this._fullRequestId = t.requestFull(n);\\n this._headersReceivedCapability = new i.PromiseCapability();\\n this._disableRange = e.disableRange || !1;\\n this._contentLength = e.length;\\n this._rangeChunkSize = e.rangeChunkSize;\\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\\n this._isStreamingSupported = !1;\\n this._isRangeSupported = !1;\\n this._cachedChunks = [];\\n this._requests = [];\\n this._done = !1;\\n this._storedError = void 0;\\n this._filename = null;\\n this.onProgress = null;\\n }\\n _onHeadersReceived() {\\n const t = this._fullRequestId,\\n e = this._manager.getRequestXhr(t),\\n getResponseHeader = t => e.getResponseHeader(t),\\n {\\n allowRangeRequests: n,\\n suggestedLength: i\\n } = (0, r.validateRangeRequestCapabilities)({\\n getResponseHeader: getResponseHeader,\\n isHttp: this._manager.isHttp,\\n rangeChunkSize: this._rangeChunkSize,\\n disableRange: this._disableRange\\n });\\n n && (this._isRangeSupported = !0);\\n this._contentLength = i || this._contentLength;\\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\\n this._isRangeSupported && this._manager.abortRequest(t);\\n this._headersReceivedCapability.resolve();\\n }\\n _onDone(t) {\\n if (t) if (this._requests.length > 0) {\\n this._requests.shift().resolve({\\n value: t.chunk,\\n done: !1\\n });\\n } else this._cachedChunks.push(t.chunk);\\n this._done = !0;\\n if (!(this._cachedChunks.length > 0)) {\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n }\\n }\\n _onError(t) {\\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\\n this._headersReceivedCapability.reject(this._storedError);\\n for (const t of this._requests) t.reject(this._storedError);\\n this._requests.length = 0;\\n this._cachedChunks.length = 0;\\n }\\n _onProgress(t) {\\n var _this$onProgress3;\\n (_this$onProgress3 = this.onProgress) === null || _this$onProgress3 === void 0 ? void 0 : _this$onProgress3.call(this, {\\n loaded: t.loaded,\\n total: t.lengthComputable ? t.total : this._contentLength\\n });\\n }\\n get filename() {\\n return this._filename;\\n }\\n get isRangeSupported() {\\n return this._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n get contentLength() {\\n return this._contentLength;\\n }\\n get headersReady() {\\n return this._headersReceivedCapability.promise;\\n }\\n async read() {\\n if (this._storedError) throw this._storedError;\\n if (this._cachedChunks.length > 0) {\\n return {\\n value: this._cachedChunks.shift(),\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n this._headersReceivedCapability.reject(t);\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._manager.isPendingRequest(this._fullRequestId) && this._manager.abortRequest(this._fullRequestId);\\n this._fullRequestReader = null;\\n }\\n }\\n class PDFNetworkStreamRangeRequestReader {\\n constructor(t, e, n) {\\n this._manager = t;\\n const i = {\\n onDone: this._onDone.bind(this),\\n onError: this._onError.bind(this),\\n onProgress: this._onProgress.bind(this)\\n };\\n this._url = t.url;\\n this._requestId = t.requestRange(e, n, i);\\n this._requests = [];\\n this._queuedChunk = null;\\n this._done = !1;\\n this._storedError = void 0;\\n this.onProgress = null;\\n this.onClosed = null;\\n }\\n _close() {\\n var _this$onClosed;\\n (_this$onClosed = this.onClosed) === null || _this$onClosed === void 0 ? void 0 : _this$onClosed.call(this, this);\\n }\\n _onDone(t) {\\n const e = t.chunk;\\n if (this._requests.length > 0) {\\n this._requests.shift().resolve({\\n value: e,\\n done: !1\\n });\\n } else this._queuedChunk = e;\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._close();\\n }\\n _onError(t) {\\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\\n for (const t of this._requests) t.reject(this._storedError);\\n this._requests.length = 0;\\n this._queuedChunk = null;\\n }\\n _onProgress(t) {\\n var _this$onProgress4;\\n this.isStreamingSupported || ((_this$onProgress4 = this.onProgress) === null || _this$onProgress4 === void 0 ? void 0 : _this$onProgress4.call(this, {\\n loaded: t.loaded\\n }));\\n }\\n get isStreamingSupported() {\\n return !1;\\n }\\n async read() {\\n if (this._storedError) throw this._storedError;\\n if (null !== this._queuedChunk) {\\n const t = this._queuedChunk;\\n this._queuedChunk = null;\\n return {\\n value: t,\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._manager.isPendingRequest(this._requestId) && this._manager.abortRequest(this._requestId);\\n this._close();\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFNodeStream = void 0;\\n n(89);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n var i = n(1),\\n r = n(181);\\n const s = /^file:\\\\/\\\\/\\\\/[a-zA-Z]:\\\\//;\\n e.PDFNodeStream = class PDFNodeStream {\\n constructor(t) {\\n this.source = t;\\n this.url = function parseUrl(t) {\\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'url'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\\n n = e.parse(t);\\n if (\\"file:\\" === n.protocol || n.host) return n;\\n if (/^[a-z]:[/\\\\\\\\]/i.test(t)) return e.parse(\\"file:///\\".concat(t));\\n n.host || (n.protocol = \\"file:\\");\\n return n;\\n }(t.url);\\n this.isHttp = \\"http:\\" === this.url.protocol || \\"https:\\" === this.url.protocol;\\n this.isFsUrl = \\"file:\\" === this.url.protocol;\\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\\n this._fullRequestReader = null;\\n this._rangeRequestReaders = [];\\n }\\n get _progressiveDataLength() {\\n var _this$_fullRequestRea11, _this$_fullRequestRea12;\\n return (_this$_fullRequestRea11 = (_this$_fullRequestRea12 = this._fullRequestReader) === null || _this$_fullRequestRea12 === void 0 ? void 0 : _this$_fullRequestRea12._loaded) !== null && _this$_fullRequestRea11 !== void 0 ? _this$_fullRequestRea11 : 0;\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFNodeStream.getFullReader can only be called once.\\");\\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\\n return this._fullRequestReader;\\n }\\n getRangeReader(t, e) {\\n if (e <= this._progressiveDataLength) return null;\\n const n = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, t, e) : new PDFNodeStreamRangeReader(this, t, e);\\n this._rangeRequestReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea13;\\n (_this$_fullRequestRea13 = this._fullRequestReader) === null || _this$_fullRequestRea13 === void 0 ? void 0 : _this$_fullRequestRea13.cancel(t);\\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\\n }\\n };\\n class BaseFullReader {\\n constructor(t) {\\n this._url = t.url;\\n this._done = !1;\\n this._storedError = null;\\n this.onProgress = null;\\n const e = t.source;\\n this._contentLength = e.length;\\n this._loaded = 0;\\n this._filename = null;\\n this._disableRange = e.disableRange || !1;\\n this._rangeChunkSize = e.rangeChunkSize;\\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\\n this._isStreamingSupported = !e.disableStream;\\n this._isRangeSupported = !e.disableRange;\\n this._readableStream = null;\\n this._readCapability = new i.PromiseCapability();\\n this._headersCapability = new i.PromiseCapability();\\n }\\n get headersReady() {\\n return this._headersCapability.promise;\\n }\\n get filename() {\\n return this._filename;\\n }\\n get contentLength() {\\n return this._contentLength;\\n }\\n get isRangeSupported() {\\n return this._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress5;\\n await this._readCapability.promise;\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n if (this._storedError) throw this._storedError;\\n const t = this._readableStream.read();\\n if (null === t) {\\n this._readCapability = new i.PromiseCapability();\\n return this.read();\\n }\\n this._loaded += t.length;\\n (_this$onProgress5 = this.onProgress) === null || _this$onProgress5 === void 0 ? void 0 : _this$onProgress5.call(this, {\\n loaded: this._loaded,\\n total: this._contentLength\\n });\\n return {\\n value: new Uint8Array(t).buffer,\\n done: !1\\n };\\n }\\n cancel(t) {\\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\\n }\\n _error(t) {\\n this._storedError = t;\\n this._readCapability.resolve();\\n }\\n _setReadableStream(t) {\\n this._readableStream = t;\\n t.on(\\"readable\\", () => {\\n this._readCapability.resolve();\\n });\\n t.on(\\"end\\", () => {\\n t.destroy();\\n this._done = !0;\\n this._readCapability.resolve();\\n });\\n t.on(\\"error\\", t => {\\n this._error(t);\\n });\\n !this._isStreamingSupported && this._isRangeSupported && this._error(new i.AbortException(\\"streaming is disabled\\"));\\n this._storedError && this._readableStream.destroy(this._storedError);\\n }\\n }\\n class BaseRangeReader {\\n constructor(t) {\\n this._url = t.url;\\n this._done = !1;\\n this._storedError = null;\\n this.onProgress = null;\\n this._loaded = 0;\\n this._readableStream = null;\\n this._readCapability = new i.PromiseCapability();\\n const e = t.source;\\n this._isStreamingSupported = !e.disableStream;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress6;\\n await this._readCapability.promise;\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n if (this._storedError) throw this._storedError;\\n const t = this._readableStream.read();\\n if (null === t) {\\n this._readCapability = new i.PromiseCapability();\\n return this.read();\\n }\\n this._loaded += t.length;\\n (_this$onProgress6 = this.onProgress) === null || _this$onProgress6 === void 0 ? void 0 : _this$onProgress6.call(this, {\\n loaded: this._loaded\\n });\\n return {\\n value: new Uint8Array(t).buffer,\\n done: !1\\n };\\n }\\n cancel(t) {\\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\\n }\\n _error(t) {\\n this._storedError = t;\\n this._readCapability.resolve();\\n }\\n _setReadableStream(t) {\\n this._readableStream = t;\\n t.on(\\"readable\\", () => {\\n this._readCapability.resolve();\\n });\\n t.on(\\"end\\", () => {\\n t.destroy();\\n this._done = !0;\\n this._readCapability.resolve();\\n });\\n t.on(\\"error\\", t => {\\n this._error(t);\\n });\\n this._storedError && this._readableStream.destroy(this._storedError);\\n }\\n }\\n function createRequestOptions(t, e) {\\n return {\\n protocol: t.protocol,\\n auth: t.auth,\\n host: t.hostname,\\n port: t.port,\\n path: t.path,\\n method: \\"GET\\",\\n headers: e\\n };\\n }\\n class PDFNodeStreamFullReader extends BaseFullReader {\\n constructor(t) {\\n super(t);\\n const handleResponse = e => {\\n if (404 === e.statusCode) {\\n const t = new i.MissingPDFException(\\"Missing PDF \\\\\\"\\".concat(this._url, \\"\\\\\\".\\"));\\n this._storedError = t;\\n this._headersCapability.reject(t);\\n return;\\n }\\n this._headersCapability.resolve();\\n this._setReadableStream(e);\\n const getResponseHeader = t => this._readableStream.headers[t.toLowerCase()],\\n {\\n allowRangeRequests: n,\\n suggestedLength: s\\n } = (0, r.validateRangeRequestCapabilities)({\\n getResponseHeader: getResponseHeader,\\n isHttp: t.isHttp,\\n rangeChunkSize: this._rangeChunkSize,\\n disableRange: this._disableRange\\n });\\n this._isRangeSupported = n;\\n this._contentLength = s || this._contentLength;\\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\\n };\\n this._request = null;\\n if (\\"http:\\" === this._url.protocol) {\\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'http'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\\n } else {\\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'https'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\\n }\\n this._request.on(\\"error\\", t => {\\n this._storedError = t;\\n this._headersCapability.reject(t);\\n });\\n this._request.end();\\n }\\n }\\n class PDFNodeStreamRangeReader extends BaseRangeReader {\\n constructor(t, e, n) {\\n super(t);\\n this._httpHeaders = {};\\n for (const e in t.httpHeaders) {\\n const n = t.httpHeaders[e];\\n void 0 !== n && (this._httpHeaders[e] = n);\\n }\\n this._httpHeaders.Range = \\"bytes=\\".concat(e, \\"-\\").concat(n - 1);\\n const handleResponse = t => {\\n if (404 !== t.statusCode) this._setReadableStream(t);else {\\n const t = new i.MissingPDFException(\\"Missing PDF \\\\\\"\\".concat(this._url, \\"\\\\\\".\\"));\\n this._storedError = t;\\n }\\n };\\n this._request = null;\\n if (\\"http:\\" === this._url.protocol) {\\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'http'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\\n } else {\\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'https'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\\n }\\n this._request.on(\\"error\\", t => {\\n this._storedError = t;\\n });\\n this._request.end();\\n }\\n }\\n class PDFNodeStreamFsFullReader extends BaseFullReader {\\n constructor(t) {\\n super(t);\\n let e = decodeURIComponent(this._url.path);\\n s.test(this._url.href) && (e = e.replace(/^\\\\//, \\"\\"));\\n const n = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'fs'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n n.lstat(e, (t, r) => {\\n if (t) {\\n \\"ENOENT\\" === t.code && (t = new i.MissingPDFException(\\"Missing PDF \\\\\\"\\".concat(e, \\"\\\\\\".\\")));\\n this._storedError = t;\\n this._headersCapability.reject(t);\\n } else {\\n this._contentLength = r.size;\\n this._setReadableStream(n.createReadStream(e));\\n this._headersCapability.resolve();\\n }\\n });\\n }\\n }\\n class PDFNodeStreamFsRangeReader extends BaseRangeReader {\\n constructor(t, e, n) {\\n super(t);\\n let i = decodeURIComponent(this._url.path);\\n s.test(this._url.href) && (i = i.replace(/^\\\\//, \\"\\"));\\n const r = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'fs'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._setReadableStream(r.createReadStream(i, {\\n start: e,\\n end: n - 1\\n }));\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.SVGGraphics = void 0;\\n n(84);\\n n(86);\\n n(87);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(2);\\n n(89);\\n n(186);\\n var i = n(167),\\n r = n(1);\\n const s = \\"normal\\",\\n a = \\"normal\\",\\n o = \\"#000000\\",\\n l = [\\"butt\\", \\"round\\", \\"square\\"],\\n c = [\\"miter\\", \\"round\\", \\"bevel\\"],\\n createObjectURL = function createObjectURL(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \\"\\",\\n n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\\n if (URL.createObjectURL && \\"undefined\\" != typeof Blob && !n) return URL.createObjectURL(new Blob([t], {\\n type: e\\n }));\\n const i = \\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\";\\n let r = \\"data:\\".concat(e, \\";base64,\\");\\n for (let e = 0, n = t.length; e < n; e += 3) {\\n const s = 255 & t[e],\\n a = 255 & t[e + 1],\\n o = 255 & t[e + 2];\\n r += i[s >> 2] + i[(3 & s) << 4 | a >> 4] + i[e + 1 < n ? (15 & a) << 2 | o >> 6 : 64] + i[e + 2 < n ? 63 & o : 64];\\n }\\n return r;\\n },\\n h = function () {\\n const t = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]),\\n e = new Int32Array(256);\\n for (let t = 0; t < 256; t++) {\\n let n = t;\\n for (let t = 0; t < 8; t++) n = 1 & n ? 3988292384 ^ n >> 1 & 2147483647 : n >> 1 & 2147483647;\\n e[t] = n;\\n }\\n function writePngChunk(t, n, i, r) {\\n let s = r;\\n const a = n.length;\\n i[s] = a >> 24 & 255;\\n i[s + 1] = a >> 16 & 255;\\n i[s + 2] = a >> 8 & 255;\\n i[s + 3] = 255 & a;\\n s += 4;\\n i[s] = 255 & t.charCodeAt(0);\\n i[s + 1] = 255 & t.charCodeAt(1);\\n i[s + 2] = 255 & t.charCodeAt(2);\\n i[s + 3] = 255 & t.charCodeAt(3);\\n s += 4;\\n i.set(n, s);\\n s += n.length;\\n const o = function crc32(t, n, i) {\\n let r = -1;\\n for (let s = n; s < i; s++) {\\n const n = 255 & (r ^ t[s]);\\n r = r >>> 8 ^ e[n];\\n }\\n return -1 ^ r;\\n }(i, r + 4, s);\\n i[s] = o >> 24 & 255;\\n i[s + 1] = o >> 16 & 255;\\n i[s + 2] = o >> 8 & 255;\\n i[s + 3] = 255 & o;\\n }\\n function deflateSyncUncompressed(t) {\\n let e = t.length;\\n const n = 65535,\\n i = Math.ceil(e / n),\\n r = new Uint8Array(2 + e + 5 * i + 4);\\n let s = 0;\\n r[s++] = 120;\\n r[s++] = 156;\\n let a = 0;\\n for (; e > n;) {\\n r[s++] = 0;\\n r[s++] = 255;\\n r[s++] = 255;\\n r[s++] = 0;\\n r[s++] = 0;\\n r.set(t.subarray(a, a + n), s);\\n s += n;\\n a += n;\\n e -= n;\\n }\\n r[s++] = 1;\\n r[s++] = 255 & e;\\n r[s++] = e >> 8 & 255;\\n r[s++] = 255 & ~e;\\n r[s++] = (65535 & ~e) >> 8 & 255;\\n r.set(t.subarray(a), s);\\n s += t.length - a;\\n const o = function adler32(t, e, n) {\\n let i = 1,\\n r = 0;\\n for (let s = e; s < n; ++s) {\\n i = (i + (255 & t[s])) % 65521;\\n r = (r + i) % 65521;\\n }\\n return r << 16 | i;\\n }(t, 0, t.length);\\n r[s++] = o >> 24 & 255;\\n r[s++] = o >> 16 & 255;\\n r[s++] = o >> 8 & 255;\\n r[s++] = 255 & o;\\n return r;\\n }\\n function encode(e, n, i, s) {\\n const a = e.width,\\n o = e.height;\\n let l, c, h;\\n const d = e.data;\\n switch (n) {\\n case r.ImageKind.GRAYSCALE_1BPP:\\n c = 0;\\n l = 1;\\n h = a + 7 >> 3;\\n break;\\n case r.ImageKind.RGB_24BPP:\\n c = 2;\\n l = 8;\\n h = 3 * a;\\n break;\\n case r.ImageKind.RGBA_32BPP:\\n c = 6;\\n l = 8;\\n h = 4 * a;\\n break;\\n default:\\n throw new Error(\\"invalid format\\");\\n }\\n const u = new Uint8Array((1 + h) * o);\\n let p = 0,\\n f = 0;\\n for (let t = 0; t < o; ++t) {\\n u[p++] = 0;\\n u.set(d.subarray(f, f + h), p);\\n f += h;\\n p += h;\\n }\\n if (n === r.ImageKind.GRAYSCALE_1BPP && s) {\\n p = 0;\\n for (let t = 0; t < o; t++) {\\n p++;\\n for (let t = 0; t < h; t++) u[p++] ^= 255;\\n }\\n }\\n const g = new Uint8Array([a >> 24 & 255, a >> 16 & 255, a >> 8 & 255, 255 & a, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, l, c, 0, 0, 0]),\\n m = function deflateSync(t) {\\n if (!r.isNodeJS) return deflateSyncUncompressed(t);\\n try {\\n const e = parseInt(process.versions.node) >= 8 ? t : Buffer.from(t),\\n n = Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'zlib'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(e, {\\n level: 9\\n });\\n return n instanceof Uint8Array ? n : new Uint8Array(n);\\n } catch (t) {\\n (0, r.warn)(\\"Not compressing PNG because zlib.deflateSync is unavailable: \\" + t);\\n }\\n return deflateSyncUncompressed(t);\\n }(u),\\n b = t.length + 36 + g.length + m.length,\\n v = new Uint8Array(b);\\n let y = 0;\\n v.set(t, y);\\n y += t.length;\\n writePngChunk(\\"IHDR\\", g, v, y);\\n y += 12 + g.length;\\n writePngChunk(\\"IDATA\\", m, v, y);\\n y += 12 + m.length;\\n writePngChunk(\\"IEND\\", new Uint8Array(0), v, y);\\n return createObjectURL(v, \\"image/png\\", i);\\n }\\n return function convertImgDataToPng(t, e, n) {\\n return encode(t, void 0 === t.kind ? r.ImageKind.GRAYSCALE_1BPP : t.kind, e, n);\\n };\\n }();\\n class SVGExtraState {\\n constructor() {\\n this.fontSizeScale = 1;\\n this.fontWeight = a;\\n this.fontSize = 0;\\n this.textMatrix = r.IDENTITY_MATRIX;\\n this.fontMatrix = r.FONT_IDENTITY_MATRIX;\\n this.leading = 0;\\n this.textRenderingMode = r.TextRenderingMode.FILL;\\n this.textMatrixScale = 1;\\n this.x = 0;\\n this.y = 0;\\n this.lineX = 0;\\n this.lineY = 0;\\n this.charSpacing = 0;\\n this.wordSpacing = 0;\\n this.textHScale = 1;\\n this.textRise = 0;\\n this.fillColor = o;\\n this.strokeColor = \\"#000000\\";\\n this.fillAlpha = 1;\\n this.strokeAlpha = 1;\\n this.lineWidth = 1;\\n this.lineJoin = \\"\\";\\n this.lineCap = \\"\\";\\n this.miterLimit = 0;\\n this.dashArray = [];\\n this.dashPhase = 0;\\n this.dependencies = [];\\n this.activeClipUrl = null;\\n this.clipGroup = null;\\n this.maskId = \\"\\";\\n }\\n clone() {\\n return Object.create(this);\\n }\\n setCurrentPoint(t, e) {\\n this.x = t;\\n this.y = e;\\n }\\n }\\n function pf(t) {\\n if (Number.isInteger(t)) return t.toString();\\n const e = t.toFixed(10);\\n let n = e.length - 1;\\n if (\\"0\\" !== e[n]) return e;\\n do {\\n n--;\\n } while (\\"0\\" === e[n]);\\n return e.substring(0, \\".\\" === e[n] ? n : n + 1);\\n }\\n function pm(t) {\\n if (0 === t[4] && 0 === t[5]) {\\n if (0 === t[1] && 0 === t[2]) return 1 === t[0] && 1 === t[3] ? \\"\\" : \\"scale(\\".concat(pf(t[0]), \\" \\").concat(pf(t[3]), \\")\\");\\n if (t[0] === t[3] && t[1] === -t[2]) {\\n return \\"rotate(\\".concat(pf(180 * Math.acos(t[0]) / Math.PI), \\")\\");\\n }\\n } else if (1 === t[0] && 0 === t[1] && 0 === t[2] && 1 === t[3]) return \\"translate(\\".concat(pf(t[4]), \\" \\").concat(pf(t[5]), \\")\\");\\n return \\"matrix(\\".concat(pf(t[0]), \\" \\").concat(pf(t[1]), \\" \\").concat(pf(t[2]), \\" \\").concat(pf(t[3]), \\" \\").concat(pf(t[4]), \\" \\").concat(pf(t[5]), \\")\\");\\n }\\n let d = 0,\\n u = 0,\\n p = 0;\\n e.SVGGraphics = class SVGGraphics {\\n constructor(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\\n (0, i.deprecated)(\\"The SVG back-end is no longer maintained and *may* be removed in the future.\\");\\n this.svgFactory = new i.DOMSVGFactory();\\n this.current = new SVGExtraState();\\n this.transformMatrix = r.IDENTITY_MATRIX;\\n this.transformStack = [];\\n this.extraStack = [];\\n this.commonObjs = t;\\n this.objs = e;\\n this.pendingClip = null;\\n this.pendingEOFill = !1;\\n this.embedFonts = !1;\\n this.embeddedFonts = Object.create(null);\\n this.cssStyle = null;\\n this.forceDataSchema = !!n;\\n this._operatorIdMapping = [];\\n for (const t in r.OPS) this._operatorIdMapping[r.OPS[t]] = t;\\n }\\n getObject(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return \\"string\\" == typeof t ? t.startsWith(\\"g_\\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\\n }\\n save() {\\n this.transformStack.push(this.transformMatrix);\\n const t = this.current;\\n this.extraStack.push(t);\\n this.current = t.clone();\\n }\\n restore() {\\n this.transformMatrix = this.transformStack.pop();\\n this.current = this.extraStack.pop();\\n this.pendingClip = null;\\n this.tgrp = null;\\n }\\n group(t) {\\n this.save();\\n this.executeOpTree(t);\\n this.restore();\\n }\\n loadDependencies(t) {\\n const e = t.fnArray,\\n n = t.argsArray;\\n for (let t = 0, i = e.length; t < i; t++) if (e[t] === r.OPS.dependency) for (const e of n[t]) {\\n const t = e.startsWith(\\"g_\\") ? this.commonObjs : this.objs,\\n n = new Promise(n => {\\n t.get(e, n);\\n });\\n this.current.dependencies.push(n);\\n }\\n return Promise.all(this.current.dependencies);\\n }\\n transform(t, e, n, i, s, a) {\\n const o = [t, e, n, i, s, a];\\n this.transformMatrix = r.Util.transform(this.transformMatrix, o);\\n this.tgrp = null;\\n }\\n getSVG(t, e) {\\n this.viewport = e;\\n const n = this._initialize(e);\\n return this.loadDependencies(t).then(() => {\\n this.transformMatrix = r.IDENTITY_MATRIX;\\n this.executeOpTree(this.convertOpList(t));\\n return n;\\n });\\n }\\n convertOpList(t) {\\n const e = this._operatorIdMapping,\\n n = t.argsArray,\\n i = t.fnArray,\\n r = [];\\n for (let t = 0, s = i.length; t < s; t++) {\\n const s = i[t];\\n r.push({\\n fnId: s,\\n fn: e[s],\\n args: n[t]\\n });\\n }\\n return function opListToTree(t) {\\n let e = [];\\n const n = [];\\n for (const i of t) if (\\"save\\" !== i.fn) \\"restore\\" === i.fn ? e = n.pop() : e.push(i);else {\\n e.push({\\n fnId: 92,\\n fn: \\"group\\",\\n items: []\\n });\\n n.push(e);\\n e = e.at(-1).items;\\n }\\n return e;\\n }(r);\\n }\\n executeOpTree(t) {\\n for (const e of t) {\\n const t = e.fn,\\n n = e.fnId,\\n i = e.args;\\n switch (0 | n) {\\n case r.OPS.beginText:\\n this.beginText();\\n break;\\n case r.OPS.dependency:\\n break;\\n case r.OPS.setLeading:\\n this.setLeading(i);\\n break;\\n case r.OPS.setLeadingMoveText:\\n this.setLeadingMoveText(i[0], i[1]);\\n break;\\n case r.OPS.setFont:\\n this.setFont(i);\\n break;\\n case r.OPS.showText:\\n case r.OPS.showSpacedText:\\n this.showText(i[0]);\\n break;\\n case r.OPS.endText:\\n this.endText();\\n break;\\n case r.OPS.moveText:\\n this.moveText(i[0], i[1]);\\n break;\\n case r.OPS.setCharSpacing:\\n this.setCharSpacing(i[0]);\\n break;\\n case r.OPS.setWordSpacing:\\n this.setWordSpacing(i[0]);\\n break;\\n case r.OPS.setHScale:\\n this.setHScale(i[0]);\\n break;\\n case r.OPS.setTextMatrix:\\n this.setTextMatrix(i[0], i[1], i[2], i[3], i[4], i[5]);\\n break;\\n case r.OPS.setTextRise:\\n this.setTextRise(i[0]);\\n break;\\n case r.OPS.setTextRenderingMode:\\n this.setTextRenderingMode(i[0]);\\n break;\\n case r.OPS.setLineWidth:\\n this.setLineWidth(i[0]);\\n break;\\n case r.OPS.setLineJoin:\\n this.setLineJoin(i[0]);\\n break;\\n case r.OPS.setLineCap:\\n this.setLineCap(i[0]);\\n break;\\n case r.OPS.setMiterLimit:\\n this.setMiterLimit(i[0]);\\n break;\\n case r.OPS.setFillRGBColor:\\n this.setFillRGBColor(i[0], i[1], i[2]);\\n break;\\n case r.OPS.setStrokeRGBColor:\\n this.setStrokeRGBColor(i[0], i[1], i[2]);\\n break;\\n case r.OPS.setStrokeColorN:\\n this.setStrokeColorN(i);\\n break;\\n case r.OPS.setFillColorN:\\n this.setFillColorN(i);\\n break;\\n case r.OPS.shadingFill:\\n this.shadingFill(i[0]);\\n break;\\n case r.OPS.setDash:\\n this.setDash(i[0], i[1]);\\n break;\\n case r.OPS.setRenderingIntent:\\n this.setRenderingIntent(i[0]);\\n break;\\n case r.OPS.setFlatness:\\n this.setFlatness(i[0]);\\n break;\\n case r.OPS.setGState:\\n this.setGState(i[0]);\\n break;\\n case r.OPS.fill:\\n this.fill();\\n break;\\n case r.OPS.eoFill:\\n this.eoFill();\\n break;\\n case r.OPS.stroke:\\n this.stroke();\\n break;\\n case r.OPS.fillStroke:\\n this.fillStroke();\\n break;\\n case r.OPS.eoFillStroke:\\n this.eoFillStroke();\\n break;\\n case r.OPS.clip:\\n this.clip(\\"nonzero\\");\\n break;\\n case r.OPS.eoClip:\\n this.clip(\\"evenodd\\");\\n break;\\n case r.OPS.paintSolidColorImageMask:\\n this.paintSolidColorImageMask();\\n break;\\n case r.OPS.paintImageXObject:\\n this.paintImageXObject(i[0]);\\n break;\\n case r.OPS.paintInlineImageXObject:\\n this.paintInlineImageXObject(i[0]);\\n break;\\n case r.OPS.paintImageMaskXObject:\\n this.paintImageMaskXObject(i[0]);\\n break;\\n case r.OPS.paintFormXObjectBegin:\\n this.paintFormXObjectBegin(i[0], i[1]);\\n break;\\n case r.OPS.paintFormXObjectEnd:\\n this.paintFormXObjectEnd();\\n break;\\n case r.OPS.closePath:\\n this.closePath();\\n break;\\n case r.OPS.closeStroke:\\n this.closeStroke();\\n break;\\n case r.OPS.closeFillStroke:\\n this.closeFillStroke();\\n break;\\n case r.OPS.closeEOFillStroke:\\n this.closeEOFillStroke();\\n break;\\n case r.OPS.nextLine:\\n this.nextLine();\\n break;\\n case r.OPS.transform:\\n this.transform(i[0], i[1], i[2], i[3], i[4], i[5]);\\n break;\\n case r.OPS.constructPath:\\n this.constructPath(i[0], i[1]);\\n break;\\n case r.OPS.endPath:\\n this.endPath();\\n break;\\n case 92:\\n this.group(e.items);\\n break;\\n default:\\n (0, r.warn)(\\"Unimplemented operator \\".concat(t));\\n }\\n }\\n }\\n setWordSpacing(t) {\\n this.current.wordSpacing = t;\\n }\\n setCharSpacing(t) {\\n this.current.charSpacing = t;\\n }\\n nextLine() {\\n this.moveText(0, this.current.leading);\\n }\\n setTextMatrix(t, e, n, i, r, s) {\\n const a = this.current;\\n a.textMatrix = a.lineMatrix = [t, e, n, i, r, s];\\n a.textMatrixScale = Math.hypot(t, e);\\n a.x = a.lineX = 0;\\n a.y = a.lineY = 0;\\n a.xcoords = [];\\n a.ycoords = [];\\n a.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n a.tspan.setAttributeNS(null, \\"font-family\\", a.fontFamily);\\n a.tspan.setAttributeNS(null, \\"font-size\\", \\"\\".concat(pf(a.fontSize), \\"px\\"));\\n a.tspan.setAttributeNS(null, \\"y\\", pf(-a.y));\\n a.txtElement = this.svgFactory.createElement(\\"svg:text\\");\\n a.txtElement.append(a.tspan);\\n }\\n beginText() {\\n const t = this.current;\\n t.x = t.lineX = 0;\\n t.y = t.lineY = 0;\\n t.textMatrix = r.IDENTITY_MATRIX;\\n t.lineMatrix = r.IDENTITY_MATRIX;\\n t.textMatrixScale = 1;\\n t.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n t.txtElement = this.svgFactory.createElement(\\"svg:text\\");\\n t.txtgrp = this.svgFactory.createElement(\\"svg:g\\");\\n t.xcoords = [];\\n t.ycoords = [];\\n }\\n moveText(t, e) {\\n const n = this.current;\\n n.x = n.lineX += t;\\n n.y = n.lineY += e;\\n n.xcoords = [];\\n n.ycoords = [];\\n n.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n n.tspan.setAttributeNS(null, \\"font-family\\", n.fontFamily);\\n n.tspan.setAttributeNS(null, \\"font-size\\", \\"\\".concat(pf(n.fontSize), \\"px\\"));\\n n.tspan.setAttributeNS(null, \\"y\\", pf(-n.y));\\n }\\n showText(t) {\\n const e = this.current,\\n n = e.font,\\n i = e.fontSize;\\n if (0 === i) return;\\n const l = e.fontSizeScale,\\n c = e.charSpacing,\\n h = e.wordSpacing,\\n d = e.fontDirection,\\n u = e.textHScale * d,\\n p = n.vertical,\\n f = p ? 1 : -1,\\n g = n.defaultVMetrics,\\n m = i * e.fontMatrix[0];\\n let b = 0;\\n for (const r of t) {\\n if (null === r) {\\n b += d * h;\\n continue;\\n }\\n if (\\"number\\" == typeof r) {\\n b += f * r * i / 1e3;\\n continue;\\n }\\n const t = (r.isSpace ? h : 0) + c,\\n s = r.fontChar;\\n let a,\\n o,\\n u = r.width;\\n if (p) {\\n let t;\\n const e = r.vmetric || g;\\n t = r.vmetric ? e[1] : .5 * u;\\n t = -t * m;\\n const n = e[2] * m;\\n u = e ? -e[0] : u;\\n a = t / l;\\n o = (b + n) / l;\\n } else {\\n a = b / l;\\n o = 0;\\n }\\n if (r.isInFont || n.missingFile) {\\n e.xcoords.push(e.x + a);\\n p && e.ycoords.push(-e.y + o);\\n e.tspan.textContent += s;\\n }\\n b += p ? u * m - t * d : u * m + t * d;\\n }\\n e.tspan.setAttributeNS(null, \\"x\\", e.xcoords.map(pf).join(\\" \\"));\\n p ? e.tspan.setAttributeNS(null, \\"y\\", e.ycoords.map(pf).join(\\" \\")) : e.tspan.setAttributeNS(null, \\"y\\", pf(-e.y));\\n p ? e.y -= b : e.x += b * u;\\n e.tspan.setAttributeNS(null, \\"font-family\\", e.fontFamily);\\n e.tspan.setAttributeNS(null, \\"font-size\\", \\"\\".concat(pf(e.fontSize), \\"px\\"));\\n e.fontStyle !== s && e.tspan.setAttributeNS(null, \\"font-style\\", e.fontStyle);\\n e.fontWeight !== a && e.tspan.setAttributeNS(null, \\"font-weight\\", e.fontWeight);\\n const v = e.textRenderingMode & r.TextRenderingMode.FILL_STROKE_MASK;\\n if (v === r.TextRenderingMode.FILL || v === r.TextRenderingMode.FILL_STROKE) {\\n e.fillColor !== o && e.tspan.setAttributeNS(null, \\"fill\\", e.fillColor);\\n e.fillAlpha < 1 && e.tspan.setAttributeNS(null, \\"fill-opacity\\", e.fillAlpha);\\n } else e.textRenderingMode === r.TextRenderingMode.ADD_TO_PATH ? e.tspan.setAttributeNS(null, \\"fill\\", \\"transparent\\") : e.tspan.setAttributeNS(null, \\"fill\\", \\"none\\");\\n if (v === r.TextRenderingMode.STROKE || v === r.TextRenderingMode.FILL_STROKE) {\\n const t = 1 / (e.textMatrixScale || 1);\\n this._setStrokeAttributes(e.tspan, t);\\n }\\n let y = e.textMatrix;\\n if (0 !== e.textRise) {\\n y = y.slice();\\n y[5] += e.textRise;\\n }\\n e.txtElement.setAttributeNS(null, \\"transform\\", \\"\\".concat(pm(y), \\" scale(\\").concat(pf(u), \\", -1)\\"));\\n e.txtElement.setAttributeNS(\\"http://www.w3.org/XML/1998/namespace\\", \\"xml:space\\", \\"preserve\\");\\n e.txtElement.append(e.tspan);\\n e.txtgrp.append(e.txtElement);\\n this._ensureTransformGroup().append(e.txtElement);\\n }\\n setLeadingMoveText(t, e) {\\n this.setLeading(-e);\\n this.moveText(t, e);\\n }\\n addFontStyle(t) {\\n if (!t.data) throw new Error('addFontStyle: No font data available, ensure that the \\"fontExtraProperties\\" API parameter is set.');\\n if (!this.cssStyle) {\\n this.cssStyle = this.svgFactory.createElement(\\"svg:style\\");\\n this.cssStyle.setAttributeNS(null, \\"type\\", \\"text/css\\");\\n this.defs.append(this.cssStyle);\\n }\\n const e = createObjectURL(t.data, t.mimetype, this.forceDataSchema);\\n this.cssStyle.textContent += \\"@font-face { font-family: \\\\\\"\\".concat(t.loadedName, \\"\\\\\\"; src: url(\\").concat(e, \\"); }\\\\n\\");\\n }\\n setFont(t) {\\n const e = this.current,\\n n = this.commonObjs.get(t[0]);\\n let i = t[1];\\n e.font = n;\\n if (this.embedFonts && !n.missingFile && !this.embeddedFonts[n.loadedName]) {\\n this.addFontStyle(n);\\n this.embeddedFonts[n.loadedName] = n;\\n }\\n e.fontMatrix = n.fontMatrix || r.FONT_IDENTITY_MATRIX;\\n let s = \\"normal\\";\\n n.black ? s = \\"900\\" : n.bold && (s = \\"bold\\");\\n const a = n.italic ? \\"italic\\" : \\"normal\\";\\n if (i < 0) {\\n i = -i;\\n e.fontDirection = -1;\\n } else e.fontDirection = 1;\\n e.fontSize = i;\\n e.fontFamily = n.loadedName;\\n e.fontWeight = s;\\n e.fontStyle = a;\\n e.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n e.tspan.setAttributeNS(null, \\"y\\", pf(-e.y));\\n e.xcoords = [];\\n e.ycoords = [];\\n }\\n endText() {\\n var _t$txtElement;\\n const t = this.current;\\n if (t.textRenderingMode & r.TextRenderingMode.ADD_TO_PATH_FLAG && (_t$txtElement = t.txtElement) !== null && _t$txtElement !== void 0 && _t$txtElement.hasChildNodes()) {\\n t.element = t.txtElement;\\n this.clip(\\"nonzero\\");\\n this.endPath();\\n }\\n }\\n setLineWidth(t) {\\n t > 0 && (this.current.lineWidth = t);\\n }\\n setLineCap(t) {\\n this.current.lineCap = l[t];\\n }\\n setLineJoin(t) {\\n this.current.lineJoin = c[t];\\n }\\n setMiterLimit(t) {\\n this.current.miterLimit = t;\\n }\\n setStrokeAlpha(t) {\\n this.current.strokeAlpha = t;\\n }\\n setStrokeRGBColor(t, e, n) {\\n this.current.strokeColor = r.Util.makeHexColor(t, e, n);\\n }\\n setFillAlpha(t) {\\n this.current.fillAlpha = t;\\n }\\n setFillRGBColor(t, e, n) {\\n this.current.fillColor = r.Util.makeHexColor(t, e, n);\\n this.current.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n this.current.xcoords = [];\\n this.current.ycoords = [];\\n }\\n setStrokeColorN(t) {\\n this.current.strokeColor = this._makeColorN_Pattern(t);\\n }\\n setFillColorN(t) {\\n this.current.fillColor = this._makeColorN_Pattern(t);\\n }\\n shadingFill(t) {\\n const {\\n width: e,\\n height: n\\n } = this.viewport,\\n i = r.Util.inverseTransform(this.transformMatrix),\\n [s, a, o, l] = r.Util.getAxialAlignedBoundingBox([0, 0, e, n], i),\\n c = this.svgFactory.createElement(\\"svg:rect\\");\\n c.setAttributeNS(null, \\"x\\", s);\\n c.setAttributeNS(null, \\"y\\", a);\\n c.setAttributeNS(null, \\"width\\", o - s);\\n c.setAttributeNS(null, \\"height\\", l - a);\\n c.setAttributeNS(null, \\"fill\\", this._makeShadingPattern(t));\\n this.current.fillAlpha < 1 && c.setAttributeNS(null, \\"fill-opacity\\", this.current.fillAlpha);\\n this._ensureTransformGroup().append(c);\\n }\\n _makeColorN_Pattern(t) {\\n return \\"TilingPattern\\" === t[0] ? this._makeTilingPattern(t) : this._makeShadingPattern(t);\\n }\\n _makeTilingPattern(t) {\\n const e = t[1],\\n n = t[2],\\n i = t[3] || r.IDENTITY_MATRIX,\\n [s, a, o, l] = t[4],\\n c = t[5],\\n h = t[6],\\n d = t[7],\\n u = \\"shading\\" + p++,\\n [f, g, m, b] = r.Util.normalizeRect([...r.Util.applyTransform([s, a], i), ...r.Util.applyTransform([o, l], i)]),\\n [v, y] = r.Util.singularValueDecompose2dScale(i),\\n A = c * v,\\n _ = h * y,\\n S = this.svgFactory.createElement(\\"svg:pattern\\");\\n S.setAttributeNS(null, \\"id\\", u);\\n S.setAttributeNS(null, \\"patternUnits\\", \\"userSpaceOnUse\\");\\n S.setAttributeNS(null, \\"width\\", A);\\n S.setAttributeNS(null, \\"height\\", _);\\n S.setAttributeNS(null, \\"x\\", \\"\\".concat(f));\\n S.setAttributeNS(null, \\"y\\", \\"\\".concat(g));\\n const E = this.svg,\\n x = this.transformMatrix,\\n w = this.current.fillColor,\\n C = this.current.strokeColor,\\n T = this.svgFactory.create(m - f, b - g);\\n this.svg = T;\\n this.transformMatrix = i;\\n if (2 === d) {\\n const t = r.Util.makeHexColor(...e);\\n this.current.fillColor = t;\\n this.current.strokeColor = t;\\n }\\n this.executeOpTree(this.convertOpList(n));\\n this.svg = E;\\n this.transformMatrix = x;\\n this.current.fillColor = w;\\n this.current.strokeColor = C;\\n S.append(T.childNodes[0]);\\n this.defs.append(S);\\n return \\"url(#\\".concat(u, \\")\\");\\n }\\n _makeShadingPattern(t) {\\n \\"string\\" == typeof t && (t = this.objs.get(t));\\n switch (t[0]) {\\n case \\"RadialAxial\\":\\n const e = \\"shading\\" + p++,\\n n = t[3];\\n let i;\\n switch (t[1]) {\\n case \\"axial\\":\\n const n = t[4],\\n r = t[5];\\n i = this.svgFactory.createElement(\\"svg:linearGradient\\");\\n i.setAttributeNS(null, \\"id\\", e);\\n i.setAttributeNS(null, \\"gradientUnits\\", \\"userSpaceOnUse\\");\\n i.setAttributeNS(null, \\"x1\\", n[0]);\\n i.setAttributeNS(null, \\"y1\\", n[1]);\\n i.setAttributeNS(null, \\"x2\\", r[0]);\\n i.setAttributeNS(null, \\"y2\\", r[1]);\\n break;\\n case \\"radial\\":\\n const s = t[4],\\n a = t[5],\\n o = t[6],\\n l = t[7];\\n i = this.svgFactory.createElement(\\"svg:radialGradient\\");\\n i.setAttributeNS(null, \\"id\\", e);\\n i.setAttributeNS(null, \\"gradientUnits\\", \\"userSpaceOnUse\\");\\n i.setAttributeNS(null, \\"cx\\", a[0]);\\n i.setAttributeNS(null, \\"cy\\", a[1]);\\n i.setAttributeNS(null, \\"r\\", l);\\n i.setAttributeNS(null, \\"fx\\", s[0]);\\n i.setAttributeNS(null, \\"fy\\", s[1]);\\n i.setAttributeNS(null, \\"fr\\", o);\\n break;\\n default:\\n throw new Error(\\"Unknown RadialAxial type: \\".concat(t[1]));\\n }\\n for (const t of n) {\\n const e = this.svgFactory.createElement(\\"svg:stop\\");\\n e.setAttributeNS(null, \\"offset\\", t[0]);\\n e.setAttributeNS(null, \\"stop-color\\", t[1]);\\n i.append(e);\\n }\\n this.defs.append(i);\\n return \\"url(#\\".concat(e, \\")\\");\\n case \\"Mesh\\":\\n (0, r.warn)(\\"Unimplemented pattern Mesh\\");\\n return null;\\n case \\"Dummy\\":\\n return \\"hotpink\\";\\n default:\\n throw new Error(\\"Unknown IR type: \\".concat(t[0]));\\n }\\n }\\n setDash(t, e) {\\n this.current.dashArray = t;\\n this.current.dashPhase = e;\\n }\\n constructPath(t, e) {\\n const n = this.current;\\n let i = n.x,\\n s = n.y,\\n a = [],\\n o = 0;\\n for (const n of t) switch (0 | n) {\\n case r.OPS.rectangle:\\n i = e[o++];\\n s = e[o++];\\n const t = i + e[o++],\\n n = s + e[o++];\\n a.push(\\"M\\", pf(i), pf(s), \\"L\\", pf(t), pf(s), \\"L\\", pf(t), pf(n), \\"L\\", pf(i), pf(n), \\"Z\\");\\n break;\\n case r.OPS.moveTo:\\n i = e[o++];\\n s = e[o++];\\n a.push(\\"M\\", pf(i), pf(s));\\n break;\\n case r.OPS.lineTo:\\n i = e[o++];\\n s = e[o++];\\n a.push(\\"L\\", pf(i), pf(s));\\n break;\\n case r.OPS.curveTo:\\n i = e[o + 4];\\n s = e[o + 5];\\n a.push(\\"C\\", pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]), pf(i), pf(s));\\n o += 6;\\n break;\\n case r.OPS.curveTo2:\\n a.push(\\"C\\", pf(i), pf(s), pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]));\\n i = e[o + 2];\\n s = e[o + 3];\\n o += 4;\\n break;\\n case r.OPS.curveTo3:\\n i = e[o + 2];\\n s = e[o + 3];\\n a.push(\\"C\\", pf(e[o]), pf(e[o + 1]), pf(i), pf(s), pf(i), pf(s));\\n o += 4;\\n break;\\n case r.OPS.closePath:\\n a.push(\\"Z\\");\\n }\\n a = a.join(\\" \\");\\n if (n.path && t.length > 0 && t[0] !== r.OPS.rectangle && t[0] !== r.OPS.moveTo) a = n.path.getAttributeNS(null, \\"d\\") + a;else {\\n n.path = this.svgFactory.createElement(\\"svg:path\\");\\n this._ensureTransformGroup().append(n.path);\\n }\\n n.path.setAttributeNS(null, \\"d\\", a);\\n n.path.setAttributeNS(null, \\"fill\\", \\"none\\");\\n n.element = n.path;\\n n.setCurrentPoint(i, s);\\n }\\n endPath() {\\n const t = this.current;\\n t.path = null;\\n if (!this.pendingClip) return;\\n if (!t.element) {\\n this.pendingClip = null;\\n return;\\n }\\n const e = \\"clippath\\" + d++,\\n n = this.svgFactory.createElement(\\"svg:clipPath\\");\\n n.setAttributeNS(null, \\"id\\", e);\\n n.setAttributeNS(null, \\"transform\\", pm(this.transformMatrix));\\n const i = t.element.cloneNode(!0);\\n \\"evenodd\\" === this.pendingClip ? i.setAttributeNS(null, \\"clip-rule\\", \\"evenodd\\") : i.setAttributeNS(null, \\"clip-rule\\", \\"nonzero\\");\\n this.pendingClip = null;\\n n.append(i);\\n this.defs.append(n);\\n if (t.activeClipUrl) {\\n t.clipGroup = null;\\n for (const t of this.extraStack) t.clipGroup = null;\\n n.setAttributeNS(null, \\"clip-path\\", t.activeClipUrl);\\n }\\n t.activeClipUrl = \\"url(#\\".concat(e, \\")\\");\\n this.tgrp = null;\\n }\\n clip(t) {\\n this.pendingClip = t;\\n }\\n closePath() {\\n const t = this.current;\\n if (t.path) {\\n const e = \\"\\".concat(t.path.getAttributeNS(null, \\"d\\"), \\"Z\\");\\n t.path.setAttributeNS(null, \\"d\\", e);\\n }\\n }\\n setLeading(t) {\\n this.current.leading = -t;\\n }\\n setTextRise(t) {\\n this.current.textRise = t;\\n }\\n setTextRenderingMode(t) {\\n this.current.textRenderingMode = t;\\n }\\n setHScale(t) {\\n this.current.textHScale = t / 100;\\n }\\n setRenderingIntent(t) {}\\n setFlatness(t) {}\\n setGState(t) {\\n for (const [e, n] of t) switch (e) {\\n case \\"LW\\":\\n this.setLineWidth(n);\\n break;\\n case \\"LC\\":\\n this.setLineCap(n);\\n break;\\n case \\"LJ\\":\\n this.setLineJoin(n);\\n break;\\n case \\"ML\\":\\n this.setMiterLimit(n);\\n break;\\n case \\"D\\":\\n this.setDash(n[0], n[1]);\\n break;\\n case \\"RI\\":\\n this.setRenderingIntent(n);\\n break;\\n case \\"FL\\":\\n this.setFlatness(n);\\n break;\\n case \\"Font\\":\\n this.setFont(n);\\n break;\\n case \\"CA\\":\\n this.setStrokeAlpha(n);\\n break;\\n case \\"ca\\":\\n this.setFillAlpha(n);\\n break;\\n default:\\n (0, r.warn)(\\"Unimplemented graphic state operator \\".concat(e));\\n }\\n }\\n fill() {\\n const t = this.current;\\n if (t.element) {\\n t.element.setAttributeNS(null, \\"fill\\", t.fillColor);\\n t.element.setAttributeNS(null, \\"fill-opacity\\", t.fillAlpha);\\n this.endPath();\\n }\\n }\\n stroke() {\\n const t = this.current;\\n if (t.element) {\\n this._setStrokeAttributes(t.element);\\n t.element.setAttributeNS(null, \\"fill\\", \\"none\\");\\n this.endPath();\\n }\\n }\\n _setStrokeAttributes(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\\n const n = this.current;\\n let i = n.dashArray;\\n 1 !== e && i.length > 0 && (i = i.map(function (t) {\\n return e * t;\\n }));\\n t.setAttributeNS(null, \\"stroke\\", n.strokeColor);\\n t.setAttributeNS(null, \\"stroke-opacity\\", n.strokeAlpha);\\n t.setAttributeNS(null, \\"stroke-miterlimit\\", pf(n.miterLimit));\\n t.setAttributeNS(null, \\"stroke-linecap\\", n.lineCap);\\n t.setAttributeNS(null, \\"stroke-linejoin\\", n.lineJoin);\\n t.setAttributeNS(null, \\"stroke-width\\", pf(e * n.lineWidth) + \\"px\\");\\n t.setAttributeNS(null, \\"stroke-dasharray\\", i.map(pf).join(\\" \\"));\\n t.setAttributeNS(null, \\"stroke-dashoffset\\", pf(e * n.dashPhase) + \\"px\\");\\n }\\n eoFill() {\\n var _this$current$element;\\n (_this$current$element = this.current.element) === null || _this$current$element === void 0 ? void 0 : _this$current$element.setAttributeNS(null, \\"fill-rule\\", \\"evenodd\\");\\n this.fill();\\n }\\n fillStroke() {\\n this.stroke();\\n this.fill();\\n }\\n eoFillStroke() {\\n var _this$current$element2;\\n (_this$current$element2 = this.current.element) === null || _this$current$element2 === void 0 ? void 0 : _this$current$element2.setAttributeNS(null, \\"fill-rule\\", \\"evenodd\\");\\n this.fillStroke();\\n }\\n closeStroke() {\\n this.closePath();\\n this.stroke();\\n }\\n closeFillStroke() {\\n this.closePath();\\n this.fillStroke();\\n }\\n closeEOFillStroke() {\\n this.closePath();\\n this.eoFillStroke();\\n }\\n paintSolidColorImageMask() {\\n const t = this.svgFactory.createElement(\\"svg:rect\\");\\n t.setAttributeNS(null, \\"x\\", \\"0\\");\\n t.setAttributeNS(null, \\"y\\", \\"0\\");\\n t.setAttributeNS(null, \\"width\\", \\"1px\\");\\n t.setAttributeNS(null, \\"height\\", \\"1px\\");\\n t.setAttributeNS(null, \\"fill\\", this.current.fillColor);\\n this._ensureTransformGroup().append(t);\\n }\\n paintImageXObject(t) {\\n const e = this.getObject(t);\\n e ? this.paintInlineImageXObject(e) : (0, r.warn)(\\"Dependent image with object ID \\".concat(t, \\" is not ready yet\\"));\\n }\\n paintInlineImageXObject(t, e) {\\n const n = t.width,\\n i = t.height,\\n r = h(t, this.forceDataSchema, !!e),\\n s = this.svgFactory.createElement(\\"svg:rect\\");\\n s.setAttributeNS(null, \\"x\\", \\"0\\");\\n s.setAttributeNS(null, \\"y\\", \\"0\\");\\n s.setAttributeNS(null, \\"width\\", pf(n));\\n s.setAttributeNS(null, \\"height\\", pf(i));\\n this.current.element = s;\\n this.clip(\\"nonzero\\");\\n const a = this.svgFactory.createElement(\\"svg:image\\");\\n a.setAttributeNS(\\"http://www.w3.org/1999/xlink\\", \\"xlink:href\\", r);\\n a.setAttributeNS(null, \\"x\\", \\"0\\");\\n a.setAttributeNS(null, \\"y\\", pf(-i));\\n a.setAttributeNS(null, \\"width\\", pf(n) + \\"px\\");\\n a.setAttributeNS(null, \\"height\\", pf(i) + \\"px\\");\\n a.setAttributeNS(null, \\"transform\\", \\"scale(\\".concat(pf(1 / n), \\" \\").concat(pf(-1 / i), \\")\\"));\\n e ? e.append(a) : this._ensureTransformGroup().append(a);\\n }\\n paintImageMaskXObject(t) {\\n const e = this.getObject(t.data, t);\\n if (e.bitmap) {\\n (0, r.warn)(\\"paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the \`isOffscreenCanvasSupported\` API parameter is disabled.\\");\\n return;\\n }\\n const n = this.current,\\n i = e.width,\\n s = e.height,\\n a = n.fillColor;\\n n.maskId = \\"mask\\" + u++;\\n const o = this.svgFactory.createElement(\\"svg:mask\\");\\n o.setAttributeNS(null, \\"id\\", n.maskId);\\n const l = this.svgFactory.createElement(\\"svg:rect\\");\\n l.setAttributeNS(null, \\"x\\", \\"0\\");\\n l.setAttributeNS(null, \\"y\\", \\"0\\");\\n l.setAttributeNS(null, \\"width\\", pf(i));\\n l.setAttributeNS(null, \\"height\\", pf(s));\\n l.setAttributeNS(null, \\"fill\\", a);\\n l.setAttributeNS(null, \\"mask\\", \\"url(#\\".concat(n.maskId, \\")\\"));\\n this.defs.append(o);\\n this._ensureTransformGroup().append(l);\\n this.paintInlineImageXObject(e, o);\\n }\\n paintFormXObjectBegin(t, e) {\\n Array.isArray(t) && 6 === t.length && this.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\\n if (e) {\\n const t = e[2] - e[0],\\n n = e[3] - e[1],\\n i = this.svgFactory.createElement(\\"svg:rect\\");\\n i.setAttributeNS(null, \\"x\\", e[0]);\\n i.setAttributeNS(null, \\"y\\", e[1]);\\n i.setAttributeNS(null, \\"width\\", pf(t));\\n i.setAttributeNS(null, \\"height\\", pf(n));\\n this.current.element = i;\\n this.clip(\\"nonzero\\");\\n this.endPath();\\n }\\n }\\n paintFormXObjectEnd() {}\\n _initialize(t) {\\n const e = this.svgFactory.create(t.width, t.height),\\n n = this.svgFactory.createElement(\\"svg:defs\\");\\n e.append(n);\\n this.defs = n;\\n const i = this.svgFactory.createElement(\\"svg:g\\");\\n i.setAttributeNS(null, \\"transform\\", pm(t.transform));\\n e.append(i);\\n this.svg = i;\\n return e;\\n }\\n _ensureClipGroup() {\\n if (!this.current.clipGroup) {\\n const t = this.svgFactory.createElement(\\"svg:g\\");\\n t.setAttributeNS(null, \\"clip-path\\", this.current.activeClipUrl);\\n this.svg.append(t);\\n this.current.clipGroup = t;\\n }\\n return this.current.clipGroup;\\n }\\n _ensureTransformGroup() {\\n if (!this.tgrp) {\\n this.tgrp = this.svgFactory.createElement(\\"svg:g\\");\\n this.tgrp.setAttributeNS(null, \\"transform\\", pm(this.transformMatrix));\\n this.current.activeClipUrl ? this._ensureClipGroup().append(this.tgrp) : this.svg.append(this.tgrp);\\n }\\n return this.tgrp;\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(187),\\n s = n(192);\\n i({\\n target: \\"Array\\",\\n proto: !0\\n }, {\\n group: function group(t) {\\n return r(this, t, arguments.length > 1 ? arguments[1] : void 0);\\n }\\n });\\n s(\\"group\\");\\n }, (t, e, n) => {\\n var i = n(99),\\n r = n(14),\\n s = n(13),\\n a = n(40),\\n o = n(18),\\n l = n(64),\\n c = n(188),\\n h = n(108),\\n d = Array,\\n u = r([].push);\\n t.exports = function (t, e, n, r) {\\n for (var p, f, g, m = a(t), b = s(m), v = i(e, n), y = c(null), A = l(b), _ = 0; A > _; _++) {\\n g = b[_];\\n (f = o(v(g, _, m))) in y ? u(y[f], g) : y[f] = [g];\\n }\\n if (r && (p = r(m)) !== d) for (f in y) y[f] = h(p, y[f]);\\n return y;\\n };\\n }, (t, e, n) => {\\n var i,\\n r = n(47),\\n s = n(189),\\n a = n(66),\\n o = n(55),\\n l = n(191),\\n c = n(43),\\n h = n(54),\\n d = \\"prototype\\",\\n u = \\"script\\",\\n p = h(\\"IE_PROTO\\"),\\n EmptyConstructor = function EmptyConstructor() {},\\n scriptTag = function scriptTag(t) {\\n return \\"<\\" + u + \\">\\" + t + \\"\\";\\n },\\n NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(t) {\\n t.write(scriptTag(\\"\\"));\\n t.close();\\n var e = t.parentWindow.Object;\\n t = null;\\n return e;\\n },\\n _NullProtoObject = function NullProtoObject() {\\n try {\\n i = new ActiveXObject(\\"htmlfile\\");\\n } catch (t) {}\\n _NullProtoObject = \\"undefined\\" != typeof document ? document.domain && i ? NullProtoObjectViaActiveX(i) : function () {\\n var t,\\n e = c(\\"iframe\\"),\\n n = \\"java\\" + u + \\":\\";\\n e.style.display = \\"none\\";\\n l.appendChild(e);\\n e.src = String(n);\\n (t = e.contentWindow.document).open();\\n t.write(scriptTag(\\"document.F=Object\\"));\\n t.close();\\n return t.F;\\n }() : NullProtoObjectViaActiveX(i);\\n for (var t = a.length; t--;) delete _NullProtoObject[d][a[t]];\\n return _NullProtoObject();\\n };\\n o[p] = !0;\\n t.exports = Object.create || function create(t, e) {\\n var n;\\n if (null !== t) {\\n EmptyConstructor[d] = r(t);\\n n = new EmptyConstructor();\\n EmptyConstructor[d] = null;\\n n[p] = t;\\n } else n = _NullProtoObject();\\n return void 0 === e ? n : s.f(n, e);\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(46),\\n s = n(45),\\n a = n(47),\\n o = n(12),\\n l = n(190);\\n e.f = i && !r ? Object.defineProperties : function defineProperties(t, e) {\\n a(t);\\n for (var n, i = o(e), r = l(e), c = r.length, h = 0; c > h;) s.f(t, n = r[h++], i[n]);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(59),\\n r = n(66);\\n t.exports = Object.keys || function keys(t) {\\n return i(t, r);\\n };\\n }, (t, e, n) => {\\n var i = n(24);\\n t.exports = i(\\"document\\", \\"documentElement\\");\\n }, (t, e, n) => {\\n var i = n(34),\\n r = n(188),\\n s = n(45).f,\\n a = i(\\"unscopables\\"),\\n o = Array.prototype;\\n null == o[a] && s(o, a, {\\n configurable: !0,\\n value: r(null)\\n });\\n t.exports = function (t) {\\n o[a][t] = !0;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.XfaText = void 0;\\n n(89);\\n class XfaText {\\n static textContent(t) {\\n const e = [],\\n n = {\\n items: e,\\n styles: Object.create(null)\\n };\\n !function walk(t) {\\n if (!t) return;\\n let n = null;\\n const i = t.name;\\n if (\\"#text\\" === i) n = t.value;else {\\n var _t$attributes;\\n if (!XfaText.shouldBuildText(i)) return;\\n t !== null && t !== void 0 && (_t$attributes = t.attributes) !== null && _t$attributes !== void 0 && _t$attributes.textContent ? n = t.attributes.textContent : t.value && (n = t.value);\\n }\\n null !== n && e.push({\\n str: n\\n });\\n if (t.children) for (const e of t.children) walk(e);\\n }(t);\\n return n;\\n }\\n static shouldBuildText(t) {\\n return !(\\"textarea\\" === t || \\"input\\" === t || \\"option\\" === t || \\"select\\" === t);\\n }\\n }\\n e.XfaText = XfaText;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.TextLayerRenderTask = void 0;\\n e.renderTextLayer = function renderTextLayer(t) {\\n if (!t.textContentSource && (t.textContent || t.textContentStream)) {\\n (0, r.deprecated)(\\"The TextLayerRender \`textContent\`/\`textContentStream\` parameters will be removed in the future, please use \`textContentSource\` instead.\\");\\n t.textContentSource = t.textContent || t.textContentStream;\\n }\\n const {\\n container: e,\\n viewport: n\\n } = t,\\n i = getComputedStyle(e),\\n s = i.getPropertyValue(\\"visibility\\"),\\n a = parseFloat(i.getPropertyValue(\\"--scale-factor\\"));\\n \\"visible\\" === s && (!a || Math.abs(a - n.scale) > 1e-5) && console.error(\\"The \`--scale-factor\` CSS-variable must be set, to the same value as \`viewport.scale\`, either on the \`container\`-element itself or higher up in the DOM.\\");\\n const o = new TextLayerRenderTask(t);\\n o._render();\\n return o;\\n };\\n e.updateTextLayer = function updateTextLayer(t) {\\n let {\\n container: e,\\n viewport: n,\\n textDivs: i,\\n textDivProperties: s,\\n isOffscreenCanvasSupported: a,\\n mustRotate: o = !0,\\n mustRescale: l = !0\\n } = t;\\n o && (0, r.setLayerDimensions)(e, {\\n rotation: n.rotation\\n });\\n if (l) {\\n const t = getCtx(0, a),\\n e = {\\n prevFontSize: null,\\n prevFontFamily: null,\\n div: null,\\n scale: n.scale * (globalThis.devicePixelRatio || 1),\\n properties: null,\\n ctx: t\\n };\\n for (const t of i) {\\n e.properties = s.get(t);\\n e.div = t;\\n layout(e);\\n }\\n }\\n };\\n n(89);\\n n(2);\\n var i = n(1),\\n r = n(167);\\n const s = 30,\\n a = .8,\\n o = new Map();\\n function getCtx(t, e) {\\n let n;\\n if (e && i.FeatureTest.isOffscreenCanvasSupported) n = new OffscreenCanvas(t, t).getContext(\\"2d\\", {\\n alpha: !1\\n });else {\\n const e = document.createElement(\\"canvas\\");\\n e.width = e.height = t;\\n n = e.getContext(\\"2d\\", {\\n alpha: !1\\n });\\n }\\n return n;\\n }\\n function appendText(t, e, n) {\\n const r = document.createElement(\\"span\\"),\\n l = {\\n angle: 0,\\n canvasWidth: 0,\\n hasText: \\"\\" !== e.str,\\n hasEOL: e.hasEOL,\\n fontSize: 0\\n };\\n t._textDivs.push(r);\\n const c = i.Util.transform(t._transform, e.transform);\\n let h = Math.atan2(c[1], c[0]);\\n const d = n[e.fontName];\\n d.vertical && (h += Math.PI / 2);\\n const u = Math.hypot(c[2], c[3]),\\n p = u * function getAscent(t, e) {\\n const n = o.get(t);\\n if (n) return n;\\n const i = getCtx(s, e);\\n i.font = \\"\\".concat(s, \\"px \\").concat(t);\\n const r = i.measureText(\\"\\");\\n let l = r.fontBoundingBoxAscent,\\n c = Math.abs(r.fontBoundingBoxDescent);\\n if (l) {\\n const e = l / (l + c);\\n o.set(t, e);\\n i.canvas.width = i.canvas.height = 0;\\n return e;\\n }\\n i.strokeStyle = \\"red\\";\\n i.clearRect(0, 0, s, s);\\n i.strokeText(\\"g\\", 0, 0);\\n let h = i.getImageData(0, 0, s, s).data;\\n c = 0;\\n for (let t = h.length - 1 - 3; t >= 0; t -= 4) if (h[t] > 0) {\\n c = Math.ceil(t / 4 / s);\\n break;\\n }\\n i.clearRect(0, 0, s, s);\\n i.strokeText(\\"A\\", 0, s);\\n h = i.getImageData(0, 0, s, s).data;\\n l = 0;\\n for (let t = 0, e = h.length; t < e; t += 4) if (h[t] > 0) {\\n l = s - Math.floor(t / 4 / s);\\n break;\\n }\\n i.canvas.width = i.canvas.height = 0;\\n if (l) {\\n const e = l / (l + c);\\n o.set(t, e);\\n return e;\\n }\\n o.set(t, a);\\n return a;\\n }(d.fontFamily, t._isOffscreenCanvasSupported);\\n let f, g;\\n if (0 === h) {\\n f = c[4];\\n g = c[5] - p;\\n } else {\\n f = c[4] + p * Math.sin(h);\\n g = c[5] - p * Math.cos(h);\\n }\\n const m = \\"calc(var(--scale-factor)*\\",\\n b = r.style;\\n if (t._container === t._rootContainer) {\\n b.left = \\"\\".concat((100 * f / t._pageWidth).toFixed(2), \\"%\\");\\n b.top = \\"\\".concat((100 * g / t._pageHeight).toFixed(2), \\"%\\");\\n } else {\\n b.left = \\"\\".concat(m).concat(f.toFixed(2), \\"px)\\");\\n b.top = \\"\\".concat(m).concat(g.toFixed(2), \\"px)\\");\\n }\\n b.fontSize = \\"\\".concat(m).concat(u.toFixed(2), \\"px)\\");\\n b.fontFamily = d.fontFamily;\\n l.fontSize = u;\\n r.setAttribute(\\"role\\", \\"presentation\\");\\n r.textContent = e.str;\\n r.dir = e.dir;\\n t._fontInspectorEnabled && (r.dataset.fontName = e.fontName);\\n 0 !== h && (l.angle = h * (180 / Math.PI));\\n let v = !1;\\n if (e.str.length > 1) v = !0;else if (\\" \\" !== e.str && e.transform[0] !== e.transform[3]) {\\n const t = Math.abs(e.transform[0]),\\n n = Math.abs(e.transform[3]);\\n t !== n && Math.max(t, n) / Math.min(t, n) > 1.5 && (v = !0);\\n }\\n v && (l.canvasWidth = d.vertical ? e.height : e.width);\\n t._textDivProperties.set(r, l);\\n t._isReadableStream && t._layoutText(r);\\n }\\n function layout(t) {\\n const {\\n div: e,\\n scale: n,\\n properties: i,\\n ctx: r,\\n prevFontSize: s,\\n prevFontFamily: a\\n } = t,\\n {\\n style: o\\n } = e;\\n let l = \\"\\";\\n if (0 !== i.canvasWidth && i.hasText) {\\n const {\\n fontFamily: c\\n } = o,\\n {\\n canvasWidth: h,\\n fontSize: d\\n } = i;\\n if (s !== d || a !== c) {\\n r.font = \\"\\".concat(d * n, \\"px \\").concat(c);\\n t.prevFontSize = d;\\n t.prevFontFamily = c;\\n }\\n const {\\n width: u\\n } = r.measureText(e.textContent);\\n u > 0 && (l = \\"scaleX(\\".concat(h * n / u, \\")\\"));\\n }\\n 0 !== i.angle && (l = \\"rotate(\\".concat(i.angle, \\"deg) \\").concat(l));\\n l.length > 0 && (o.transform = l);\\n }\\n class TextLayerRenderTask {\\n constructor(t) {\\n var _globalThis$FontInspe2;\\n let {\\n textContentSource: e,\\n container: n,\\n viewport: s,\\n textDivs: a,\\n textDivProperties: o,\\n textContentItemsStr: l,\\n isOffscreenCanvasSupported: c\\n } = t;\\n this._textContentSource = e;\\n this._isReadableStream = e instanceof ReadableStream;\\n this._container = this._rootContainer = n;\\n this._textDivs = a || [];\\n this._textContentItemsStr = l || [];\\n this._isOffscreenCanvasSupported = c;\\n this._fontInspectorEnabled = !!((_globalThis$FontInspe2 = globalThis.FontInspector) !== null && _globalThis$FontInspe2 !== void 0 && _globalThis$FontInspe2.enabled);\\n this._reader = null;\\n this._textDivProperties = o || new WeakMap();\\n this._canceled = !1;\\n this._capability = new i.PromiseCapability();\\n this._layoutTextParams = {\\n prevFontSize: null,\\n prevFontFamily: null,\\n div: null,\\n scale: s.scale * (globalThis.devicePixelRatio || 1),\\n properties: null,\\n ctx: getCtx(0, c)\\n };\\n const {\\n pageWidth: h,\\n pageHeight: d,\\n pageX: u,\\n pageY: p\\n } = s.rawDims;\\n this._transform = [1, 0, 0, -1, -u, p + d];\\n this._pageWidth = h;\\n this._pageHeight = d;\\n (0, r.setLayerDimensions)(n, s);\\n this._capability.promise.finally(() => {\\n this._layoutTextParams = null;\\n }).catch(() => {});\\n }\\n get promise() {\\n return this._capability.promise;\\n }\\n cancel() {\\n this._canceled = !0;\\n if (this._reader) {\\n this._reader.cancel(new i.AbortException(\\"TextLayer task cancelled.\\")).catch(() => {});\\n this._reader = null;\\n }\\n this._capability.reject(new i.AbortException(\\"TextLayer task cancelled.\\"));\\n }\\n _processItems(t, e) {\\n for (const n of t) if (void 0 !== n.str) {\\n this._textContentItemsStr.push(n.str);\\n appendText(this, n, e);\\n } else if (\\"beginMarkedContentProps\\" === n.type || \\"beginMarkedContent\\" === n.type) {\\n const t = this._container;\\n this._container = document.createElement(\\"span\\");\\n this._container.classList.add(\\"markedContent\\");\\n null !== n.id && this._container.setAttribute(\\"id\\", \\"\\".concat(n.id));\\n t.append(this._container);\\n } else \\"endMarkedContent\\" === n.type && (this._container = this._container.parentNode);\\n }\\n _layoutText(t) {\\n const e = this._layoutTextParams.properties = this._textDivProperties.get(t);\\n this._layoutTextParams.div = t;\\n layout(this._layoutTextParams);\\n e.hasText && this._container.append(t);\\n if (e.hasEOL) {\\n const t = document.createElement(\\"br\\");\\n t.setAttribute(\\"role\\", \\"presentation\\");\\n this._container.append(t);\\n }\\n }\\n _render() {\\n const t = new i.PromiseCapability();\\n let e = Object.create(null);\\n if (this._isReadableStream) {\\n const pump = () => {\\n this._reader.read().then(n => {\\n let {\\n value: i,\\n done: r\\n } = n;\\n if (r) t.resolve();else {\\n Object.assign(e, i.styles);\\n this._processItems(i.items, e);\\n pump();\\n }\\n }, t.reject);\\n };\\n this._reader = this._textContentSource.getReader();\\n pump();\\n } else {\\n if (!this._textContentSource) throw new Error('No \\"textContentSource\\" parameter specified.');\\n {\\n const {\\n items: e,\\n styles: n\\n } = this._textContentSource;\\n this._processItems(e, n);\\n t.resolve();\\n }\\n }\\n t.promise.then(() => {\\n e = null;\\n !function render(t) {\\n if (t._canceled) return;\\n const e = t._textDivs,\\n n = t._capability;\\n if (e.length > 1e5) n.resolve();else {\\n if (!t._isReadableStream) for (const n of e) t._layoutText(n);\\n n.resolve();\\n }\\n }(this);\\n }, this._capability.reject);\\n }\\n }\\n e.TextLayerRenderTask = TextLayerRenderTask;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.AnnotationEditorLayer = void 0;\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n var i = n(1),\\n r = n(163),\\n s = n(164),\\n a = n(196),\\n o = n(201),\\n l = n(167),\\n c = n(202);\\n var _re = /*#__PURE__*/new WeakMap();\\n var _se = /*#__PURE__*/new WeakMap();\\n var _ae = /*#__PURE__*/new WeakMap();\\n var _oe = /*#__PURE__*/new WeakMap();\\n var _le = /*#__PURE__*/new WeakMap();\\n var _ce = /*#__PURE__*/new WeakMap();\\n var _he = /*#__PURE__*/new WeakMap();\\n var _de = /*#__PURE__*/new WeakMap();\\n var _ue = /*#__PURE__*/new WeakMap();\\n var _pe = /*#__PURE__*/new WeakMap();\\n var _me = /*#__PURE__*/new WeakSet();\\n var _be = /*#__PURE__*/new WeakSet();\\n var _ge = /*#__PURE__*/new WeakSet();\\n var _fe = /*#__PURE__*/new WeakSet();\\n class AnnotationEditorLayer {\\n constructor(_t13) {\\n _classPrivateMethodInitSpec(this, _fe);\\n _classPrivateMethodInitSpec(this, _ge);\\n _classPrivateMethodInitSpec(this, _be);\\n _classPrivateMethodInitSpec(this, _me);\\n _classPrivateFieldInitSpec(this, _re, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _se, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _ae, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _oe, {\\n writable: true,\\n value: this.pointerup.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _le, {\\n writable: true,\\n value: this.pointerdown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ce, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _he, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _de, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _ue, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _pe, {\\n writable: true,\\n value: void 0\\n });\\n let {\\n uiManager: _e11,\\n pageIndex: _n7,\\n div: _i4,\\n accessibilityManager: _r4,\\n annotationLayer: s,\\n viewport: l,\\n l10n: h\\n } = _t13;\\n const d = [a.FreeTextEditor, o.InkEditor, c.StampEditor];\\n if (!AnnotationEditorLayer._initialized) {\\n AnnotationEditorLayer._initialized = !0;\\n for (const t of d) t.initialize(h);\\n }\\n _e11.registerEditorTypes(d);\\n _classPrivateFieldSet(this, _pe, _e11);\\n this.pageIndex = _n7;\\n this.div = _i4;\\n _classPrivateFieldSet(this, _re, _r4);\\n _classPrivateFieldSet(this, _ae, s);\\n this.viewport = l;\\n _classPrivateFieldGet(this, _pe).addLayer(this);\\n }\\n get isEmpty() {\\n return 0 === _classPrivateFieldGet(this, _ce).size;\\n }\\n updateToolbar(t) {\\n _classPrivateFieldGet(this, _pe).updateToolbar(t);\\n }\\n updateMode() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : _classPrivateFieldGet(this, _pe).getMode();\\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\\n if (t === i.AnnotationEditorType.INK) {\\n this.addInkEditorIfNeeded(!1);\\n this.disableClick();\\n } else this.enableClick();\\n _classPrivateFieldGet(this, _pe).unselectAll();\\n if (t !== i.AnnotationEditorType.NONE) {\\n this.div.classList.toggle(\\"freeTextEditing\\", t === i.AnnotationEditorType.FREETEXT);\\n this.div.classList.toggle(\\"inkEditing\\", t === i.AnnotationEditorType.INK);\\n this.div.classList.toggle(\\"stampEditing\\", t === i.AnnotationEditorType.STAMP);\\n this.div.hidden = !1;\\n }\\n }\\n addInkEditorIfNeeded(t) {\\n if (!t && _classPrivateFieldGet(this, _pe).getMode() !== i.AnnotationEditorType.INK) return;\\n if (!t) for (const t of _classPrivateFieldGet(this, _ce).values()) if (t.isEmpty()) {\\n t.setInBackground();\\n return;\\n }\\n _classPrivateMethodGet(this, _ge, _ge2).call(this, {\\n offsetX: 0,\\n offsetY: 0\\n }).setInBackground();\\n }\\n setEditingState(t) {\\n _classPrivateFieldGet(this, _pe).setEditingState(t);\\n }\\n addCommands(t) {\\n _classPrivateFieldGet(this, _pe).addCommands(t);\\n }\\n enable() {\\n this.div.style.pointerEvents = \\"auto\\";\\n const t = new Set();\\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\\n e.enableEditing();\\n e.annotationElementId && t.add(e.annotationElementId);\\n }\\n if (!_classPrivateFieldGet(this, _ae)) return;\\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\\n for (const n of e) {\\n n.hide();\\n if (_classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(n.data.id)) continue;\\n if (t.has(n.data.id)) continue;\\n const e = this.deserialize(n);\\n if (e) {\\n this.addOrRebuild(e);\\n e.enableEditing();\\n }\\n }\\n }\\n disable() {\\n _classPrivateFieldSet(this, _ue, !0);\\n this.div.style.pointerEvents = \\"none\\";\\n const t = new Set();\\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\\n e.disableEditing();\\n if (e.annotationElementId && null === e.serialize()) {\\n var _this$getEditableAnno;\\n (_this$getEditableAnno = this.getEditableAnnotation(e.annotationElementId)) === null || _this$getEditableAnno === void 0 ? void 0 : _this$getEditableAnno.show();\\n e.remove();\\n } else t.add(e.annotationElementId);\\n }\\n if (_classPrivateFieldGet(this, _ae)) {\\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\\n for (const n of e) {\\n const {\\n id: e\\n } = n.data;\\n t.has(e) || _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) || n.show();\\n }\\n }\\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\\n this.isEmpty && (this.div.hidden = !0);\\n _classPrivateFieldSet(this, _ue, !1);\\n }\\n getEditableAnnotation(t) {\\n var _classPrivateFieldGet9;\\n return ((_classPrivateFieldGet9 = _classPrivateFieldGet(this, _ae)) === null || _classPrivateFieldGet9 === void 0 ? void 0 : _classPrivateFieldGet9.getEditableAnnotation(t)) || null;\\n }\\n setActiveEditor(t) {\\n _classPrivateFieldGet(this, _pe).getActive() !== t && _classPrivateFieldGet(this, _pe).setActiveEditor(t);\\n }\\n enableClick() {\\n this.div.addEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _le));\\n this.div.addEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _oe));\\n }\\n disableClick() {\\n this.div.removeEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _le));\\n this.div.removeEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _oe));\\n }\\n attach(t) {\\n _classPrivateFieldGet(this, _ce).set(t.id, t);\\n const {\\n annotationElementId: e\\n } = t;\\n e && _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) && _classPrivateFieldGet(this, _pe).removeDeletedAnnotationElement(t);\\n }\\n detach(t) {\\n var _classPrivateFieldGet10;\\n _classPrivateFieldGet(this, _ce).delete(t.id);\\n (_classPrivateFieldGet10 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet10 === void 0 ? void 0 : _classPrivateFieldGet10.removePointerInTextLayer(t.contentDiv);\\n !_classPrivateFieldGet(this, _ue) && t.annotationElementId && _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t);\\n }\\n remove(t) {\\n this.detach(t);\\n _classPrivateFieldGet(this, _pe).removeEditor(t);\\n t.div.style.display = \\"none\\";\\n setTimeout(() => {\\n t.div.style.display = \\"\\";\\n t.div.remove();\\n t.isAttachedToDOM = !1;\\n document.activeElement === document.body && _classPrivateFieldGet(this, _pe).focusMainContainer();\\n }, 0);\\n _classPrivateFieldGet(this, _de) || this.addInkEditorIfNeeded(!1);\\n }\\n add(t) {\\n _classPrivateMethodGet(this, _me, _me2).call(this, t);\\n _classPrivateFieldGet(this, _pe).addEditor(t);\\n this.attach(t);\\n if (!t.isAttachedToDOM) {\\n const e = t.render();\\n this.div.append(e);\\n t.isAttachedToDOM = !0;\\n }\\n this.moveEditorInDOM(t);\\n t.onceAdded();\\n _classPrivateFieldGet(this, _pe).addToAnnotationStorage(t);\\n }\\n moveEditorInDOM(t) {\\n var _classPrivateFieldGet11;\\n (_classPrivateFieldGet11 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet11 === void 0 ? void 0 : _classPrivateFieldGet11.moveElementInDOM(this.div, t.div, t.contentDiv, !0);\\n }\\n addOrRebuild(t) {\\n t.needsToBeRebuilt() ? t.rebuild() : this.add(t);\\n }\\n addUndoableEditor(t) {\\n this.addCommands({\\n cmd: () => {\\n this.addOrRebuild(t);\\n },\\n undo: () => {\\n t.remove();\\n },\\n mustExec: !1\\n });\\n }\\n getNextId() {\\n return _classPrivateFieldGet(this, _pe).getId();\\n }\\n deserialize(t) {\\n var _t$annotationType;\\n switch ((_t$annotationType = t.annotationType) !== null && _t$annotationType !== void 0 ? _t$annotationType : t.annotationEditorType) {\\n case i.AnnotationEditorType.FREETEXT:\\n return a.FreeTextEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\\n case i.AnnotationEditorType.INK:\\n return o.InkEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\\n case i.AnnotationEditorType.STAMP:\\n return c.StampEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\\n }\\n return null;\\n }\\n setSelected(t) {\\n _classPrivateFieldGet(this, _pe).setSelected(t);\\n }\\n toggleSelected(t) {\\n _classPrivateFieldGet(this, _pe).toggleSelected(t);\\n }\\n isSelected(t) {\\n return _classPrivateFieldGet(this, _pe).isSelected(t);\\n }\\n unselect(t) {\\n _classPrivateFieldGet(this, _pe).unselect(t);\\n }\\n pointerup(t) {\\n const {\\n isMac: e\\n } = i.FeatureTest.platform;\\n if (!(0 !== t.button || t.ctrlKey && e) && t.target === this.div && _classPrivateFieldGet(this, _he)) {\\n _classPrivateFieldSet(this, _he, !1);\\n _classPrivateFieldGet(this, _se) ? _classPrivateMethodGet(this, _ge, _ge2).call(this, t) : _classPrivateFieldSet(this, _se, !0);\\n }\\n }\\n pointerdown(t) {\\n if (_classPrivateFieldGet(this, _he)) {\\n _classPrivateFieldSet(this, _he, !1);\\n return;\\n }\\n const {\\n isMac: e\\n } = i.FeatureTest.platform;\\n if (0 !== t.button || t.ctrlKey && e) return;\\n if (t.target !== this.div) return;\\n _classPrivateFieldSet(this, _he, !0);\\n const n = _classPrivateFieldGet(this, _pe).getActive();\\n _classPrivateFieldSet(this, _se, !n || n.isEmpty());\\n }\\n drop(t) {\\n const e = t.dataTransfer.getData(\\"text/plain\\"),\\n n = _classPrivateFieldGet(this, _pe).getEditor(e);\\n if (!n) return;\\n t.preventDefault();\\n t.dataTransfer.dropEffect = \\"move\\";\\n _classPrivateMethodGet(this, _me, _me2).call(this, n);\\n const i = this.div.getBoundingClientRect(),\\n r = t.clientX - i.x,\\n s = t.clientY - i.y;\\n n.translate(r - n.startX, s - n.startY);\\n this.moveEditorInDOM(n);\\n n.div.focus();\\n }\\n dragover(t) {\\n t.preventDefault();\\n }\\n destroy() {\\n var _classPrivateFieldGet12;\\n ((_classPrivateFieldGet12 = _classPrivateFieldGet(this, _pe).getActive()) === null || _classPrivateFieldGet12 === void 0 ? void 0 : _classPrivateFieldGet12.parent) === this && _classPrivateFieldGet(this, _pe).setActiveEditor(null);\\n for (const t of _classPrivateFieldGet(this, _ce).values()) {\\n var _classPrivateFieldGet13;\\n (_classPrivateFieldGet13 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet13 === void 0 ? void 0 : _classPrivateFieldGet13.removePointerInTextLayer(t.contentDiv);\\n t.setParent(null);\\n t.isAttachedToDOM = !1;\\n t.div.remove();\\n }\\n this.div = null;\\n _classPrivateFieldGet(this, _ce).clear();\\n _classPrivateFieldGet(this, _pe).removeLayer(this);\\n }\\n render(t) {\\n let {\\n viewport: e\\n } = t;\\n this.viewport = e;\\n (0, l.setLayerDimensions)(this.div, e);\\n (0, s.bindEvents)(this, this.div, [\\"dragover\\", \\"drop\\"]);\\n for (const t of _classPrivateFieldGet(this, _pe).getEditors(this.pageIndex)) this.add(t);\\n this.updateMode();\\n }\\n update(t) {\\n let {\\n viewport: e\\n } = t;\\n _classPrivateFieldGet(this, _pe).commitOrRemove();\\n this.viewport = e;\\n (0, l.setLayerDimensions)(this.div, {\\n rotation: e.rotation\\n });\\n this.updateMode();\\n }\\n get pageDimensions() {\\n const {\\n pageWidth: t,\\n pageHeight: e\\n } = this.viewport.rawDims;\\n return [t, e];\\n }\\n }\\n function _me2(t) {\\n if (t.parent !== this) {\\n var _t$parent;\\n if (t.annotationElementId) {\\n _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t.annotationElementId);\\n r.AnnotationEditor.deleteAnnotationElement(t);\\n t.annotationElementId = null;\\n }\\n this.attach(t);\\n (_t$parent = t.parent) === null || _t$parent === void 0 ? void 0 : _t$parent.detach(t);\\n t.setParent(this);\\n if (t.div && t.isAttachedToDOM) {\\n t.div.remove();\\n this.div.append(t.div);\\n }\\n }\\n }\\n function _be2(t) {\\n switch (_classPrivateFieldGet(this, _pe).getMode()) {\\n case i.AnnotationEditorType.FREETEXT:\\n return new a.FreeTextEditor(t);\\n case i.AnnotationEditorType.INK:\\n return new o.InkEditor(t);\\n case i.AnnotationEditorType.STAMP:\\n return new c.StampEditor(t);\\n }\\n return null;\\n }\\n function _ge2(t) {\\n const e = this.getNextId(),\\n n = _classPrivateMethodGet(this, _be, _be2).call(this, {\\n parent: this,\\n id: e,\\n x: t.offsetX,\\n y: t.offsetY,\\n uiManager: _classPrivateFieldGet(this, _pe)\\n });\\n n && this.add(n);\\n return n;\\n }\\n function _fe2() {\\n _classPrivateFieldSet(this, _de, !0);\\n for (const t of _classPrivateFieldGet(this, _ce).values()) t.isEmpty() && t.remove();\\n _classPrivateFieldSet(this, _de, !1);\\n }\\n _defineProperty(AnnotationEditorLayer, \\"_initialized\\", !1);\\n e.AnnotationEditorLayer = AnnotationEditorLayer;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class30;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.FreeTextEditor = void 0;\\n n(89);\\n var i = n(1),\\n r = n(164),\\n s = n(163),\\n a = n(197);\\n var _ve = /*#__PURE__*/new WeakMap();\\n var _ye = /*#__PURE__*/new WeakMap();\\n var _Ae = /*#__PURE__*/new WeakMap();\\n var _e12 = /*#__PURE__*/new WeakMap();\\n var _Se = /*#__PURE__*/new WeakMap();\\n var _Ee = /*#__PURE__*/new WeakMap();\\n var _xe = /*#__PURE__*/new WeakMap();\\n var _we = /*#__PURE__*/new WeakMap();\\n var _Ce = /*#__PURE__*/new WeakMap();\\n var _Te = /*#__PURE__*/new WeakSet();\\n var _Pe = /*#__PURE__*/new WeakSet();\\n var _Re = /*#__PURE__*/new WeakSet();\\n var _ke = /*#__PURE__*/new WeakSet();\\n var _Fe = /*#__PURE__*/new WeakSet();\\n var _Ie = /*#__PURE__*/new WeakSet();\\n var _Me = /*#__PURE__*/new WeakSet();\\n class FreeTextEditor extends s.AnnotationEditor {\\n static get _keyboardManager() {\\n const t = FreeTextEditor.prototype,\\n arrowChecker = t => t.isEmpty(),\\n e = r.AnnotationEditorUIManager.TRANSLATE_SMALL,\\n n = r.AnnotationEditorUIManager.TRANSLATE_BIG;\\n return (0, i.shadow)(this, \\"_keyboardManager\\", new r.KeyboardManager([[[\\"ctrl+s\\", \\"mac+meta+s\\", \\"ctrl+p\\", \\"mac+meta+p\\"], t.commitOrRemove, {\\n bubbles: !0\\n }], [[\\"ctrl+Enter\\", \\"mac+meta+Enter\\", \\"Escape\\", \\"mac+Escape\\"], t.commitOrRemove], [[\\"ArrowLeft\\", \\"mac+ArrowLeft\\"], t._translateEmpty, {\\n args: [-e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowLeft\\", \\"mac+shift+ArrowLeft\\"], t._translateEmpty, {\\n args: [-n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowRight\\", \\"mac+ArrowRight\\"], t._translateEmpty, {\\n args: [e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowRight\\", \\"mac+shift+ArrowRight\\"], t._translateEmpty, {\\n args: [n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowUp\\", \\"mac+ArrowUp\\"], t._translateEmpty, {\\n args: [0, -e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowUp\\", \\"mac+shift+ArrowUp\\"], t._translateEmpty, {\\n args: [0, -n],\\n checker: arrowChecker\\n }], [[\\"ArrowDown\\", \\"mac+ArrowDown\\"], t._translateEmpty, {\\n args: [0, e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowDown\\", \\"mac+shift+ArrowDown\\"], t._translateEmpty, {\\n args: [0, n],\\n checker: arrowChecker\\n }]]));\\n }\\n constructor(_t14) {\\n super(_objectSpread(_objectSpread({}, _t14), {}, {\\n name: \\"freeTextEditor\\"\\n }));\\n _classPrivateMethodInitSpec(this, _Me);\\n _classPrivateMethodInitSpec(this, _Ie);\\n _classPrivateMethodInitSpec(this, _Fe);\\n _classPrivateMethodInitSpec(this, _ke);\\n _classPrivateMethodInitSpec(this, _Re);\\n _classPrivateMethodInitSpec(this, _Pe);\\n _classPrivateMethodInitSpec(this, _Te);\\n _classPrivateFieldInitSpec(this, _ve, {\\n writable: true,\\n value: this.editorDivBlur.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ye, {\\n writable: true,\\n value: this.editorDivFocus.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Ae, {\\n writable: true,\\n value: this.editorDivInput.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _e12, {\\n writable: true,\\n value: this.editorDivKeydown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Se, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ee, {\\n writable: true,\\n value: \\"\\"\\n });\\n _classPrivateFieldInitSpec(this, _xe, {\\n writable: true,\\n value: \\"\\".concat(this.id, \\"-editor\\")\\n });\\n _classPrivateFieldInitSpec(this, _we, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ce, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldSet(this, _Se, _t14.color || FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor);\\n _classPrivateFieldSet(this, _we, _t14.fontSize || FreeTextEditor._defaultFontSize);\\n }\\n static initialize(t) {\\n this._l10nPromise = new Map([\\"free_text2_default_content\\", \\"editor_free_text2_aria_label\\"].map(e => [e, t.get(e)]));\\n const e = getComputedStyle(document.documentElement);\\n this._internalPadding = parseFloat(e.getPropertyValue(\\"--freetext-padding\\"));\\n }\\n static updateDefaultParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\\n FreeTextEditor._defaultFontSize = e;\\n break;\\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\\n FreeTextEditor._defaultColor = e;\\n }\\n }\\n updateParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\\n _classPrivateMethodGet(this, _Te, _Te2).call(this, e);\\n break;\\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\\n _classPrivateMethodGet(this, _Pe, _Pe2).call(this, e);\\n }\\n }\\n static get defaultPropertiesToUpdate() {\\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [i.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor]];\\n }\\n get propertiesToUpdate() {\\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, _classPrivateFieldGet(this, _we)], [i.AnnotationEditorParamsType.FREETEXT_COLOR, _classPrivateFieldGet(this, _Se)]];\\n }\\n _translateEmpty(t, e) {\\n this._uiManager.translateSelectedEditors(t, e, !0);\\n }\\n getInitialTranslation() {\\n const t = this.parentScale;\\n return [-FreeTextEditor._internalPadding * t, -(FreeTextEditor._internalPadding + _classPrivateFieldGet(this, _we)) * t];\\n }\\n rebuild() {\\n super.rebuild();\\n null !== this.div && (this.isAttachedToDOM || this.parent.add(this));\\n }\\n enableEditMode() {\\n if (!this.isInEditMode()) {\\n this.parent.setEditingState(!1);\\n this.parent.updateToolbar(i.AnnotationEditorType.FREETEXT);\\n super.enableEditMode();\\n this.overlayDiv.classList.remove(\\"enabled\\");\\n this.editorDiv.contentEditable = !0;\\n this.div.draggable = !1;\\n this.div.removeAttribute(\\"aria-activedescendant\\");\\n this.editorDiv.addEventListener(\\"keydown\\", _classPrivateFieldGet(this, _e12));\\n this.editorDiv.addEventListener(\\"focus\\", _classPrivateFieldGet(this, _ye));\\n this.editorDiv.addEventListener(\\"blur\\", _classPrivateFieldGet(this, _ve));\\n this.editorDiv.addEventListener(\\"input\\", _classPrivateFieldGet(this, _Ae));\\n }\\n }\\n disableEditMode() {\\n if (this.isInEditMode()) {\\n this.parent.setEditingState(!0);\\n super.disableEditMode();\\n this.overlayDiv.classList.add(\\"enabled\\");\\n this.editorDiv.contentEditable = !1;\\n this.div.setAttribute(\\"aria-activedescendant\\", _classPrivateFieldGet(this, _xe));\\n this.div.draggable = !0;\\n this.editorDiv.removeEventListener(\\"keydown\\", _classPrivateFieldGet(this, _e12));\\n this.editorDiv.removeEventListener(\\"focus\\", _classPrivateFieldGet(this, _ye));\\n this.editorDiv.removeEventListener(\\"blur\\", _classPrivateFieldGet(this, _ve));\\n this.editorDiv.removeEventListener(\\"input\\", _classPrivateFieldGet(this, _Ae));\\n this.div.focus({\\n preventScroll: !0\\n });\\n this.isEditing = !1;\\n this.parent.div.classList.add(\\"freeTextEditing\\");\\n }\\n }\\n focusin(t) {\\n super.focusin(t);\\n t.target !== this.editorDiv && this.editorDiv.focus();\\n }\\n onceAdded() {\\n if (this.width) _classPrivateMethodGet(this, _Me, _Me2).call(this);else {\\n this.enableEditMode();\\n this.editorDiv.focus();\\n }\\n }\\n isEmpty() {\\n return !this.editorDiv || \\"\\" === this.editorDiv.innerText.trim();\\n }\\n remove() {\\n this.isEditing = !1;\\n if (this.parent) {\\n this.parent.setEditingState(!0);\\n this.parent.div.classList.add(\\"freeTextEditing\\");\\n }\\n super.remove();\\n }\\n commit() {\\n if (!this.isInEditMode()) return;\\n super.commit();\\n this.disableEditMode();\\n const t = _classPrivateFieldGet(this, _Ee),\\n e = _classPrivateFieldSet(this, _Ee, _classPrivateMethodGet(this, _Re, _Re2).call(this).trimEnd());\\n if (t === e) return;\\n const setText = t => {\\n _classPrivateFieldSet(this, _Ee, t);\\n if (t) {\\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\\n this.rebuild();\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n } else this.remove();\\n };\\n this.addCommands({\\n cmd: () => {\\n setText(e);\\n },\\n undo: () => {\\n setText(t);\\n },\\n mustExec: !1\\n });\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n }\\n shouldGetKeyboardEvents() {\\n return this.isInEditMode();\\n }\\n enterInEditMode() {\\n this.enableEditMode();\\n this.editorDiv.focus();\\n }\\n dblclick(t) {\\n this.enterInEditMode();\\n }\\n keydown(t) {\\n t.target === this.div && \\"Enter\\" === t.key && this.enterInEditMode();\\n }\\n editorDivKeydown(t) {\\n FreeTextEditor._keyboardManager.exec(this, t);\\n }\\n editorDivFocus(t) {\\n this.isEditing = !0;\\n }\\n editorDivBlur(t) {\\n this.isEditing = !1;\\n }\\n editorDivInput(t) {\\n this.parent.div.classList.toggle(\\"freeTextEditing\\", this.isEmpty());\\n }\\n disableEditing() {\\n this.editorDiv.setAttribute(\\"role\\", \\"comment\\");\\n this.editorDiv.removeAttribute(\\"aria-multiline\\");\\n }\\n enableEditing() {\\n this.editorDiv.setAttribute(\\"role\\", \\"textbox\\");\\n this.editorDiv.setAttribute(\\"aria-multiline\\", !0);\\n }\\n render() {\\n if (this.div) return this.div;\\n let t, e;\\n if (this.width) {\\n t = this.x;\\n e = this.y;\\n }\\n super.render();\\n this.editorDiv = document.createElement(\\"div\\");\\n this.editorDiv.className = \\"internal\\";\\n this.editorDiv.setAttribute(\\"id\\", _classPrivateFieldGet(this, _xe));\\n this.enableEditing();\\n FreeTextEditor._l10nPromise.get(\\"editor_free_text2_aria_label\\").then(t => {\\n var _this$editorDiv;\\n return (_this$editorDiv = this.editorDiv) === null || _this$editorDiv === void 0 ? void 0 : _this$editorDiv.setAttribute(\\"aria-label\\", t);\\n });\\n FreeTextEditor._l10nPromise.get(\\"free_text2_default_content\\").then(t => {\\n var _this$editorDiv2;\\n return (_this$editorDiv2 = this.editorDiv) === null || _this$editorDiv2 === void 0 ? void 0 : _this$editorDiv2.setAttribute(\\"default-content\\", t);\\n });\\n this.editorDiv.contentEditable = !0;\\n const {\\n style: n\\n } = this.editorDiv;\\n n.fontSize = \\"calc(\\".concat(_classPrivateFieldGet(this, _we), \\"px * var(--scale-factor))\\");\\n n.color = _classPrivateFieldGet(this, _Se);\\n this.div.append(this.editorDiv);\\n this.overlayDiv = document.createElement(\\"div\\");\\n this.overlayDiv.classList.add(\\"overlay\\", \\"enabled\\");\\n this.div.append(this.overlayDiv);\\n (0, r.bindEvents)(this, this.div, [\\"dblclick\\", \\"keydown\\"]);\\n if (this.width) {\\n const [n, i] = this.parentDimensions;\\n if (this.annotationElementId) {\\n const {\\n position: r\\n } = _classPrivateFieldGet(this, _Ce);\\n let [s, a] = this.getInitialTranslation();\\n [s, a] = this.pageTranslationToScreen(s, a);\\n const [o, l] = this.pageDimensions,\\n [c, h] = this.pageTranslation;\\n let d, u;\\n switch (this.rotation) {\\n case 0:\\n d = t + (r[0] - c) / o;\\n u = e + this.height - (r[1] - h) / l;\\n break;\\n case 90:\\n d = t + (r[0] - c) / o;\\n u = e - (r[1] - h) / l;\\n [s, a] = [a, -s];\\n break;\\n case 180:\\n d = t - this.width + (r[0] - c) / o;\\n u = e - (r[1] - h) / l;\\n [s, a] = [-s, -a];\\n break;\\n case 270:\\n d = t + (r[0] - c - this.height * l) / o;\\n u = e + (r[1] - h - this.width * o) / l;\\n [s, a] = [-a, s];\\n }\\n this.setAt(d * n, u * i, s, a);\\n } else this.setAt(t * n, e * i, this.width * n, this.height * i);\\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\\n this.div.draggable = !0;\\n this.editorDiv.contentEditable = !1;\\n } else {\\n this.div.draggable = !1;\\n this.editorDiv.contentEditable = !0;\\n }\\n return this.div;\\n }\\n get contentDiv() {\\n return this.editorDiv;\\n }\\n static deserialize(t, e, n) {\\n let r = null;\\n if (t instanceof a.FreeTextAnnotationElement) {\\n const {\\n data: {\\n defaultAppearanceData: {\\n fontSize: e,\\n fontColor: n\\n },\\n rect: s,\\n rotation: a,\\n id: o\\n },\\n textContent: l,\\n textPosition: c,\\n parent: {\\n page: {\\n pageNumber: h\\n }\\n }\\n } = t;\\n if (!l || 0 === l.length) return null;\\n r = t = {\\n annotationType: i.AnnotationEditorType.FREETEXT,\\n color: Array.from(n),\\n fontSize: e,\\n value: l.join(\\"\\\\n\\"),\\n position: c,\\n pageIndex: h - 1,\\n rect: s,\\n rotation: a,\\n id: o,\\n deleted: !1\\n };\\n }\\n const s = super.deserialize(t, e, n);\\n _classPrivateFieldSet(s, _we, t.fontSize);\\n _classPrivateFieldSet(s, _Se, i.Util.makeHexColor(...t.color));\\n _classPrivateFieldSet(s, _Ee, t.value);\\n s.annotationElementId = t.id || null;\\n _classPrivateFieldSet(s, _Ce, r);\\n return s;\\n }\\n serialize() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (this.isEmpty()) return null;\\n if (this.deleted) return {\\n pageIndex: this.pageIndex,\\n id: this.annotationElementId,\\n deleted: !0\\n };\\n const e = FreeTextEditor._internalPadding * this.parentScale,\\n n = this.getRect(e, e),\\n r = s.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : _classPrivateFieldGet(this, _Se)),\\n a = {\\n annotationType: i.AnnotationEditorType.FREETEXT,\\n color: r,\\n fontSize: _classPrivateFieldGet(this, _we),\\n value: _classPrivateFieldGet(this, _Ee),\\n pageIndex: this.pageIndex,\\n rect: n,\\n rotation: this.rotation\\n };\\n if (t) return a;\\n if (this.annotationElementId && !_classPrivateMethodGet(this, _Ie, _Ie2).call(this, a)) return null;\\n a.id = this.annotationElementId;\\n return a;\\n }\\n }\\n _class30 = FreeTextEditor;\\n function _Te2(t) {\\n const setFontsize = t => {\\n this.editorDiv.style.fontSize = \\"calc(\\".concat(t, \\"px * var(--scale-factor))\\");\\n this.translate(0, -(t - _classPrivateFieldGet(this, _we)) * this.parentScale);\\n _classPrivateFieldSet(this, _we, t);\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n },\\n e = _classPrivateFieldGet(this, _we);\\n this.addCommands({\\n cmd: () => {\\n setFontsize(t);\\n },\\n undo: () => {\\n setFontsize(e);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.FREETEXT_SIZE,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Pe2(t) {\\n const e = _classPrivateFieldGet(this, _Se);\\n this.addCommands({\\n cmd: () => {\\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = t);\\n },\\n undo: () => {\\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = e);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.FREETEXT_COLOR,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Re2() {\\n const t = this.editorDiv.getElementsByTagName(\\"div\\");\\n if (0 === t.length) return this.editorDiv.innerText;\\n const e = [];\\n for (const n of t) e.push(n.innerText.replace(/\\\\r\\\\n?|\\\\n/, \\"\\"));\\n return e.join(\\"\\\\n\\");\\n }\\n function _ke2() {\\n const [t, e] = this.parentDimensions;\\n let n;\\n if (this.isAttachedToDOM) n = this.div.getBoundingClientRect();else {\\n const {\\n currentLayer: t,\\n div: e\\n } = this,\\n i = e.style.display;\\n e.style.display = \\"hidden\\";\\n t.div.append(this.div);\\n n = e.getBoundingClientRect();\\n e.remove();\\n e.style.display = i;\\n }\\n if (this.rotation % 180 == this.parentRotation % 180) {\\n this.width = n.width / t;\\n this.height = n.height / e;\\n } else {\\n this.width = n.height / t;\\n this.height = n.width / e;\\n }\\n this.fixAndSetPosition();\\n }\\n function _Fe2() {\\n this.editorDiv.replaceChildren();\\n if (_classPrivateFieldGet(this, _Ee)) for (const t of _classPrivateFieldGet(this, _Ee).split(\\"\\\\n\\")) {\\n const e = document.createElement(\\"div\\");\\n e.append(t ? document.createTextNode(t) : document.createElement(\\"br\\"));\\n this.editorDiv.append(e);\\n }\\n }\\n function _Ie2(t) {\\n const {\\n value: e,\\n fontSize: n,\\n color: i,\\n rect: r,\\n pageIndex: s\\n } = _classPrivateFieldGet(this, _Ce);\\n return t.value !== e || t.fontSize !== n || t.rect.some((t, e) => Math.abs(t - r[e]) >= 1) || t.color.some((t, e) => t !== i[e]) || t.pageIndex !== s;\\n }\\n function _Me2() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (!this.annotationElementId) return;\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n if (!t && (0 === this.width || 0 === this.height)) {\\n setTimeout(() => _classPrivateMethodGet(this, _Me, _Me2).call(this, !0), 0);\\n return;\\n }\\n const e = _class30._internalPadding * this.parentScale;\\n _classPrivateFieldGet(this, _Ce).rect = this.getRect(e, e);\\n }\\n _defineProperty(FreeTextEditor, \\"_freeTextDefaultContent\\", \\"\\");\\n _defineProperty(FreeTextEditor, \\"_l10nPromise\\", void 0);\\n _defineProperty(FreeTextEditor, \\"_internalPadding\\", 0);\\n _defineProperty(FreeTextEditor, \\"_defaultColor\\", null);\\n _defineProperty(FreeTextEditor, \\"_defaultFontSize\\", 10);\\n _defineProperty(FreeTextEditor, \\"_type\\", \\"freetext\\");\\n e.FreeTextEditor = FreeTextEditor;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _re2, _an, _on, _ln, _cn;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.StampAnnotationElement = e.InkAnnotationElement = e.FreeTextAnnotationElement = e.AnnotationLayer = void 0;\\n n(89);\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n var i = n(1),\\n r = n(167),\\n s = n(162),\\n a = n(198),\\n o = n(199),\\n l = n(200);\\n const c = 1e3,\\n h = new WeakSet();\\n function getRectDims(t) {\\n return {\\n width: t[2] - t[0],\\n height: t[3] - t[1]\\n };\\n }\\n class AnnotationElementFactory {\\n static create(t) {\\n switch (t.data.annotationType) {\\n case i.AnnotationType.LINK:\\n return new LinkAnnotationElement(t);\\n case i.AnnotationType.TEXT:\\n return new TextAnnotationElement(t);\\n case i.AnnotationType.WIDGET:\\n switch (t.data.fieldType) {\\n case \\"Tx\\":\\n return new TextWidgetAnnotationElement(t);\\n case \\"Btn\\":\\n return t.data.radioButton ? new RadioButtonWidgetAnnotationElement(t) : t.data.checkBox ? new CheckboxWidgetAnnotationElement(t) : new PushButtonWidgetAnnotationElement(t);\\n case \\"Ch\\":\\n return new ChoiceWidgetAnnotationElement(t);\\n case \\"Sig\\":\\n return new SignatureWidgetAnnotationElement(t);\\n }\\n return new WidgetAnnotationElement(t);\\n case i.AnnotationType.POPUP:\\n return new PopupAnnotationElement(t);\\n case i.AnnotationType.FREETEXT:\\n return new FreeTextAnnotationElement(t);\\n case i.AnnotationType.LINE:\\n return new LineAnnotationElement(t);\\n case i.AnnotationType.SQUARE:\\n return new SquareAnnotationElement(t);\\n case i.AnnotationType.CIRCLE:\\n return new CircleAnnotationElement(t);\\n case i.AnnotationType.POLYLINE:\\n return new PolylineAnnotationElement(t);\\n case i.AnnotationType.CARET:\\n return new CaretAnnotationElement(t);\\n case i.AnnotationType.INK:\\n return new InkAnnotationElement(t);\\n case i.AnnotationType.POLYGON:\\n return new PolygonAnnotationElement(t);\\n case i.AnnotationType.HIGHLIGHT:\\n return new HighlightAnnotationElement(t);\\n case i.AnnotationType.UNDERLINE:\\n return new UnderlineAnnotationElement(t);\\n case i.AnnotationType.SQUIGGLY:\\n return new SquigglyAnnotationElement(t);\\n case i.AnnotationType.STRIKEOUT:\\n return new StrikeOutAnnotationElement(t);\\n case i.AnnotationType.STAMP:\\n return new StampAnnotationElement(t);\\n case i.AnnotationType.FILEATTACHMENT:\\n return new FileAttachmentAnnotationElement(t);\\n default:\\n return new AnnotationElement(t);\\n }\\n }\\n }\\n var _De = /*#__PURE__*/new WeakMap();\\n class AnnotationElement {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _De, {\\n writable: true,\\n value: !1\\n });\\n let {\\n isRenderable: e = !1,\\n ignoreBorder: n = !1,\\n createQuadrilaterals: i = !1\\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\\n this.isRenderable = e;\\n this.data = t.data;\\n this.layer = t.layer;\\n this.linkService = t.linkService;\\n this.downloadManager = t.downloadManager;\\n this.imageResourcesPath = t.imageResourcesPath;\\n this.renderForms = t.renderForms;\\n this.svgFactory = t.svgFactory;\\n this.annotationStorage = t.annotationStorage;\\n this.enableScripting = t.enableScripting;\\n this.hasJSActions = t.hasJSActions;\\n this._fieldObjects = t.fieldObjects;\\n this.parent = t.parent;\\n e && (this.container = this._createContainer(n));\\n i && this._createQuadrilaterals();\\n }\\n _createContainer(t) {\\n const {\\n data: e,\\n parent: {\\n page: n,\\n viewport: r\\n }\\n } = this,\\n s = document.createElement(\\"section\\");\\n s.setAttribute(\\"data-annotation-id\\", e.id);\\n s.style.zIndex = this.parent.zIndex++;\\n this.data.popupRef && s.setAttribute(\\"aria-haspopup\\", \\"dialog\\");\\n e.noRotate && s.classList.add(\\"norotate\\");\\n const {\\n pageWidth: a,\\n pageHeight: o,\\n pageX: l,\\n pageY: c\\n } = r.rawDims;\\n if (!e.rect || this instanceof PopupAnnotationElement) {\\n const {\\n rotation: t\\n } = e;\\n e.hasOwnCanvas || 0 === t || this.setRotation(t, s);\\n return s;\\n }\\n const {\\n width: h,\\n height: d\\n } = getRectDims(e.rect),\\n u = i.Util.normalizeRect([e.rect[0], n.view[3] - e.rect[1] + n.view[1], e.rect[2], n.view[3] - e.rect[3] + n.view[1]]);\\n if (!t && e.borderStyle.width > 0) {\\n s.style.borderWidth = \\"\\".concat(e.borderStyle.width, \\"px\\");\\n const t = e.borderStyle.horizontalCornerRadius,\\n n = e.borderStyle.verticalCornerRadius;\\n if (t > 0 || n > 0) {\\n const e = \\"calc(\\".concat(t, \\"px * var(--scale-factor)) / calc(\\").concat(n, \\"px * var(--scale-factor))\\");\\n s.style.borderRadius = e;\\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\\n const t = \\"calc(\\".concat(h, \\"px * var(--scale-factor)) / calc(\\").concat(d, \\"px * var(--scale-factor))\\");\\n s.style.borderRadius = t;\\n }\\n switch (e.borderStyle.style) {\\n case i.AnnotationBorderStyleType.SOLID:\\n s.style.borderStyle = \\"solid\\";\\n break;\\n case i.AnnotationBorderStyleType.DASHED:\\n s.style.borderStyle = \\"dashed\\";\\n break;\\n case i.AnnotationBorderStyleType.BEVELED:\\n (0, i.warn)(\\"Unimplemented border style: beveled\\");\\n break;\\n case i.AnnotationBorderStyleType.INSET:\\n (0, i.warn)(\\"Unimplemented border style: inset\\");\\n break;\\n case i.AnnotationBorderStyleType.UNDERLINE:\\n s.style.borderBottomStyle = \\"solid\\";\\n }\\n const r = e.borderColor || null;\\n if (r) {\\n _classPrivateFieldSet(this, _De, !0);\\n s.style.borderColor = i.Util.makeHexColor(0 | r[0], 0 | r[1], 0 | r[2]);\\n } else s.style.borderWidth = 0;\\n }\\n s.style.left = 100 * (u[0] - l) / a + \\"%\\";\\n s.style.top = 100 * (u[1] - c) / o + \\"%\\";\\n const {\\n rotation: p\\n } = e;\\n if (e.hasOwnCanvas || 0 === p) {\\n s.style.width = 100 * h / a + \\"%\\";\\n s.style.height = 100 * d / o + \\"%\\";\\n } else this.setRotation(p, s);\\n return s;\\n }\\n setRotation(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.container;\\n if (!this.data.rect) return;\\n const {\\n pageWidth: n,\\n pageHeight: i\\n } = this.parent.viewport.rawDims,\\n {\\n width: r,\\n height: s\\n } = getRectDims(this.data.rect);\\n let a, o;\\n if (t % 180 == 0) {\\n a = 100 * r / n;\\n o = 100 * s / i;\\n } else {\\n a = 100 * s / n;\\n o = 100 * r / i;\\n }\\n e.style.width = \\"\\".concat(a, \\"%\\");\\n e.style.height = \\"\\".concat(o, \\"%\\");\\n e.setAttribute(\\"data-main-rotation\\", (360 - t) % 360);\\n }\\n get _commonActions() {\\n const setColor = (t, e, n) => {\\n const i = n.detail[t];\\n n.target.style[e] = a.ColorConverters[\\"\\".concat(i[0], \\"_HTML\\")](i.slice(1));\\n };\\n return (0, i.shadow)(this, \\"_commonActions\\", {\\n display: t => {\\n const e = t.detail.display % 2 == 1;\\n this.container.style.visibility = e ? \\"hidden\\" : \\"visible\\";\\n this.annotationStorage.setValue(this.data.id, {\\n hidden: e,\\n print: 0 === t.detail.display || 3 === t.detail.display\\n });\\n },\\n print: t => {\\n this.annotationStorage.setValue(this.data.id, {\\n print: t.detail.print\\n });\\n },\\n hidden: t => {\\n this.container.style.visibility = t.detail.hidden ? \\"hidden\\" : \\"visible\\";\\n this.annotationStorage.setValue(this.data.id, {\\n hidden: t.detail.hidden\\n });\\n },\\n focus: t => {\\n setTimeout(() => t.target.focus({\\n preventScroll: !1\\n }), 0);\\n },\\n userName: t => {\\n t.target.title = t.detail.userName;\\n },\\n readonly: t => {\\n t.detail.readonly ? t.target.setAttribute(\\"readonly\\", \\"\\") : t.target.removeAttribute(\\"readonly\\");\\n },\\n required: t => {\\n this._setRequired(t.target, t.detail.required);\\n },\\n bgColor: t => {\\n setColor(\\"bgColor\\", \\"backgroundColor\\", t);\\n },\\n fillColor: t => {\\n setColor(\\"fillColor\\", \\"backgroundColor\\", t);\\n },\\n fgColor: t => {\\n setColor(\\"fgColor\\", \\"color\\", t);\\n },\\n textColor: t => {\\n setColor(\\"textColor\\", \\"color\\", t);\\n },\\n borderColor: t => {\\n setColor(\\"borderColor\\", \\"borderColor\\", t);\\n },\\n strokeColor: t => {\\n setColor(\\"strokeColor\\", \\"borderColor\\", t);\\n },\\n rotation: t => {\\n const e = t.detail.rotation;\\n this.setRotation(e);\\n this.annotationStorage.setValue(this.data.id, {\\n rotation: e\\n });\\n }\\n });\\n }\\n _dispatchEventFromSandbox(t, e) {\\n const n = this._commonActions;\\n for (const i of Object.keys(e.detail)) {\\n const r = t[i] || n[i];\\n r === null || r === void 0 ? void 0 : r(e);\\n }\\n }\\n _setDefaultPropertiesFromJS(t) {\\n if (!this.enableScripting) return;\\n const e = this.annotationStorage.getRawValue(this.data.id);\\n if (!e) return;\\n const n = this._commonActions;\\n for (const [i, r] of Object.entries(e)) {\\n const s = n[i];\\n if (s) {\\n s({\\n detail: {\\n [i]: r\\n },\\n target: t\\n });\\n delete e[i];\\n }\\n }\\n }\\n _createQuadrilaterals() {\\n if (!this.container) return;\\n const {\\n quadPoints: t\\n } = this.data;\\n if (!t) return;\\n const [e, n, i, r] = this.data.rect;\\n if (1 === t.length) {\\n const [, {\\n x: s,\\n y: a\\n }, {\\n x: o,\\n y: l\\n }] = t[0];\\n if (i === s && r === a && e === o && n === l) return;\\n }\\n const {\\n style: s\\n } = this.container;\\n let a;\\n if (_classPrivateFieldGet(this, _De)) {\\n const {\\n borderColor: t,\\n borderWidth: e\\n } = s;\\n s.borderWidth = 0;\\n a = [\\"url('data:image/svg+xml;utf8,\\", '', \\"\\")];\\n this.container.classList.add(\\"hasBorder\\");\\n }\\n const o = i - e,\\n l = r - n,\\n {\\n svgFactory: c\\n } = this,\\n h = c.createElement(\\"svg\\");\\n h.classList.add(\\"quadrilateralsContainer\\");\\n h.setAttribute(\\"width\\", 0);\\n h.setAttribute(\\"height\\", 0);\\n const d = c.createElement(\\"defs\\");\\n h.append(d);\\n const u = c.createElement(\\"clipPath\\"),\\n p = \\"clippath_\\".concat(this.data.id);\\n u.setAttribute(\\"id\\", p);\\n u.setAttribute(\\"clipPathUnits\\", \\"objectBoundingBox\\");\\n d.append(u);\\n for (const [, {\\n x: n,\\n y: i\\n }, {\\n x: s,\\n y: h\\n }] of t) {\\n var _a3;\\n const t = c.createElement(\\"rect\\"),\\n d = (s - e) / o,\\n p = (r - i) / l,\\n f = (n - s) / o,\\n g = (i - h) / l;\\n t.setAttribute(\\"x\\", d);\\n t.setAttribute(\\"y\\", p);\\n t.setAttribute(\\"width\\", f);\\n t.setAttribute(\\"height\\", g);\\n u.append(t);\\n (_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.push(\\"\\"));\\n }\\n if (_classPrivateFieldGet(this, _De)) {\\n a.push(\\"')\\");\\n s.backgroundImage = a.join(\\"\\");\\n }\\n this.container.append(h);\\n this.container.style.clipPath = \\"url(#\\".concat(p, \\")\\");\\n }\\n _createPopup() {\\n const {\\n container: t,\\n data: e\\n } = this;\\n t.setAttribute(\\"aria-haspopup\\", \\"dialog\\");\\n const n = new PopupAnnotationElement({\\n data: {\\n color: e.color,\\n titleObj: e.titleObj,\\n modificationDate: e.modificationDate,\\n contentsObj: e.contentsObj,\\n richText: e.richText,\\n parentRect: e.rect,\\n borderStyle: 0,\\n id: \\"popup_\\".concat(e.id),\\n rotation: e.rotation\\n },\\n parent: this.parent,\\n elements: [this]\\n });\\n this.parent.div.append(n.render());\\n }\\n render() {\\n (0, i.unreachable)(\\"Abstract method \`AnnotationElement.render\` called\\");\\n }\\n _getElementsByName(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = [];\\n if (this._fieldObjects) {\\n const r = this._fieldObjects[t];\\n if (r) for (const {\\n page: t,\\n id: s,\\n exportValues: a\\n } of r) {\\n if (-1 === t) continue;\\n if (s === e) continue;\\n const r = \\"string\\" == typeof a ? a : null,\\n o = document.querySelector(\\"[data-element-id=\\\\\\"\\".concat(s, \\"\\\\\\"]\\"));\\n !o || h.has(o) ? n.push({\\n id: s,\\n exportValue: r,\\n domElement: o\\n }) : (0, i.warn)(\\"_getElementsByName - element not allowed: \\".concat(s));\\n }\\n return n;\\n }\\n for (const i of document.getElementsByName(t)) {\\n const {\\n exportValue: t\\n } = i,\\n r = i.getAttribute(\\"data-element-id\\");\\n r !== e && h.has(i) && n.push({\\n id: r,\\n exportValue: t,\\n domElement: i\\n });\\n }\\n return n;\\n }\\n show() {\\n var _this$popup;\\n this.container && (this.container.hidden = !1);\\n (_this$popup = this.popup) === null || _this$popup === void 0 ? void 0 : _this$popup.maybeShow();\\n }\\n hide() {\\n var _this$popup2;\\n this.container && (this.container.hidden = !0);\\n (_this$popup2 = this.popup) === null || _this$popup2 === void 0 ? void 0 : _this$popup2.forceHide();\\n }\\n getElementsToTriggerPopup() {\\n return this.container;\\n }\\n addHighlightArea() {\\n const t = this.getElementsToTriggerPopup();\\n if (Array.isArray(t)) for (const e of t) e.classList.add(\\"highlightArea\\");else t.classList.add(\\"highlightArea\\");\\n }\\n _editOnDoubleClick() {\\n const {\\n annotationEditorType: t,\\n data: {\\n id: e\\n }\\n } = this;\\n this.container.addEventListener(\\"dblclick\\", () => {\\n var _this$linkService$eve;\\n (_this$linkService$eve = this.linkService.eventBus) === null || _this$linkService$eve === void 0 ? void 0 : _this$linkService$eve.dispatch(\\"switchannotationeditormode\\", {\\n source: this,\\n mode: t,\\n editId: e\\n });\\n });\\n }\\n }\\n var _Le = /*#__PURE__*/new WeakSet();\\n var _Oe = /*#__PURE__*/new WeakSet();\\n class LinkAnnotationElement extends AnnotationElement {\\n constructor(_t15) {\\n let _e13 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n super(_t15, {\\n isRenderable: !0,\\n ignoreBorder: !!(_e13 !== null && _e13 !== void 0 && _e13.ignoreBorder),\\n createQuadrilaterals: !0\\n });\\n _classPrivateMethodInitSpec(this, _Oe);\\n _classPrivateMethodInitSpec(this, _Le);\\n this.isTooltipOnly = _t15.data.isTooltipOnly;\\n }\\n render() {\\n const {\\n data: t,\\n linkService: e\\n } = this,\\n n = document.createElement(\\"a\\");\\n n.setAttribute(\\"data-element-id\\", t.id);\\n let i = !1;\\n if (t.url) {\\n e.addLinkAttributes(n, t.url, t.newWindow);\\n i = !0;\\n } else if (t.action) {\\n this._bindNamedAction(n, t.action);\\n i = !0;\\n } else if (t.attachment) {\\n this._bindAttachment(n, t.attachment);\\n i = !0;\\n } else if (t.setOCGState) {\\n _classPrivateMethodGet(this, _Oe, _Oe2).call(this, n, t.setOCGState);\\n i = !0;\\n } else if (t.dest) {\\n this._bindLink(n, t.dest);\\n i = !0;\\n } else {\\n if (t.actions && (t.actions.Action || t.actions[\\"Mouse Up\\"] || t.actions[\\"Mouse Down\\"]) && this.enableScripting && this.hasJSActions) {\\n this._bindJSAction(n, t);\\n i = !0;\\n }\\n if (t.resetForm) {\\n this._bindResetFormAction(n, t.resetForm);\\n i = !0;\\n } else if (this.isTooltipOnly && !i) {\\n this._bindLink(n, \\"\\");\\n i = !0;\\n }\\n }\\n this.container.classList.add(\\"linkAnnotation\\");\\n i && this.container.append(n);\\n return this.container;\\n }\\n _bindLink(t, e) {\\n t.href = this.linkService.getDestinationHash(e);\\n t.onclick = () => {\\n e && this.linkService.goToDestination(e);\\n return !1;\\n };\\n (e || \\"\\" === e) && _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindNamedAction(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n t.onclick = () => {\\n this.linkService.executeNamedAction(e);\\n return !1;\\n };\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindAttachment(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n t.onclick = () => {\\n var _this$downloadManager;\\n (_this$downloadManager = this.downloadManager) === null || _this$downloadManager === void 0 ? void 0 : _this$downloadManager.openOrDownloadData(this.container, e.content, e.filename);\\n return !1;\\n };\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindJSAction(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n const n = new Map([[\\"Action\\", \\"onclick\\"], [\\"Mouse Up\\", \\"onmouseup\\"], [\\"Mouse Down\\", \\"onmousedown\\"]]);\\n for (const i of Object.keys(e.actions)) {\\n const r = n.get(i);\\n r && (t[r] = () => {\\n var _this$linkService$eve2;\\n (_this$linkService$eve2 = this.linkService.eventBus) === null || _this$linkService$eve2 === void 0 ? void 0 : _this$linkService$eve2.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e.id,\\n name: i\\n }\\n });\\n return !1;\\n });\\n }\\n t.onclick || (t.onclick = () => !1);\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindResetFormAction(t, e) {\\n const n = t.onclick;\\n n || (t.href = this.linkService.getAnchorUrl(\\"\\"));\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n if (this._fieldObjects) t.onclick = () => {\\n var _this$linkService$eve3;\\n n === null || n === void 0 ? void 0 : n();\\n const {\\n fields: t,\\n refs: r,\\n include: s\\n } = e,\\n a = [];\\n if (0 !== t.length || 0 !== r.length) {\\n const e = new Set(r);\\n for (const n of t) {\\n const t = this._fieldObjects[n] || [];\\n for (const {\\n id: n\\n } of t) e.add(n);\\n }\\n for (const t of Object.values(this._fieldObjects)) for (const n of t) e.has(n.id) === s && a.push(n);\\n } else for (const t of Object.values(this._fieldObjects)) a.push(...t);\\n const o = this.annotationStorage,\\n l = [];\\n for (const t of a) {\\n const {\\n id: e\\n } = t;\\n l.push(e);\\n switch (t.type) {\\n case \\"text\\":\\n {\\n const n = t.defaultValue || \\"\\";\\n o.setValue(e, {\\n value: n\\n });\\n break;\\n }\\n case \\"checkbox\\":\\n case \\"radiobutton\\":\\n {\\n const n = t.defaultValue === t.exportValues;\\n o.setValue(e, {\\n value: n\\n });\\n break;\\n }\\n case \\"combobox\\":\\n case \\"listbox\\":\\n {\\n const n = t.defaultValue || \\"\\";\\n o.setValue(e, {\\n value: n\\n });\\n break;\\n }\\n default:\\n continue;\\n }\\n const n = document.querySelector(\\"[data-element-id=\\\\\\"\\".concat(e, \\"\\\\\\"]\\"));\\n n && (h.has(n) ? n.dispatchEvent(new Event(\\"resetform\\")) : (0, i.warn)(\\"_bindResetFormAction - element not allowed: \\".concat(e)));\\n }\\n this.enableScripting && ((_this$linkService$eve3 = this.linkService.eventBus) === null || _this$linkService$eve3 === void 0 ? void 0 : _this$linkService$eve3.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: \\"app\\",\\n ids: l,\\n name: \\"ResetForm\\"\\n }\\n }));\\n return !1;\\n };else {\\n (0, i.warn)('_bindResetFormAction - \\"resetForm\\" action not supported, ensure that the \`fieldObjects\` parameter is provided.');\\n n || (t.onclick = () => !1);\\n }\\n }\\n }\\n function _Le2() {\\n this.container.setAttribute(\\"data-internal-link\\", \\"\\");\\n }\\n function _Oe2(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n t.onclick = () => {\\n this.linkService.executeSetOCGState(e);\\n return !1;\\n };\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n class TextAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj, _t$data$contentsObj, _t$data$richText;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj = t.data.titleObj) !== null && _t$data$titleObj !== void 0 && _t$data$titleObj.str || (_t$data$contentsObj = t.data.contentsObj) !== null && _t$data$contentsObj !== void 0 && _t$data$contentsObj.str || (_t$data$richText = t.data.richText) !== null && _t$data$richText !== void 0 && _t$data$richText.str)\\n });\\n }\\n render() {\\n this.container.classList.add(\\"textAnnotation\\");\\n const t = document.createElement(\\"img\\");\\n t.src = this.imageResourcesPath + \\"annotation-\\" + this.data.name.toLowerCase() + \\".svg\\";\\n t.alt = \\"[{{type}} Annotation]\\";\\n t.dataset.l10nId = \\"text_annotation_type\\";\\n t.dataset.l10nArgs = JSON.stringify({\\n type: this.data.name\\n });\\n this.data.popupRef || this._createPopup();\\n this.container.append(t);\\n return this.container;\\n }\\n }\\n class WidgetAnnotationElement extends AnnotationElement {\\n render() {\\n this.data.alternativeText && (this.container.title = this.data.alternativeText);\\n return this.container;\\n }\\n showElementAndHideCanvas(t) {\\n if (this.data.hasOwnCanvas) {\\n var _t$previousSibling;\\n \\"CANVAS\\" === ((_t$previousSibling = t.previousSibling) === null || _t$previousSibling === void 0 ? void 0 : _t$previousSibling.nodeName) && (t.previousSibling.hidden = !0);\\n t.hidden = !1;\\n }\\n }\\n _getKeyModifier(t) {\\n const {\\n isWin: e,\\n isMac: n\\n } = i.FeatureTest.platform;\\n return e && t.ctrlKey || n && t.metaKey;\\n }\\n _setEventListener(t, e, n, i) {\\n e.includes(\\"mouse\\") ? t.addEventListener(e, t => {\\n var _this$linkService$eve4;\\n (_this$linkService$eve4 = this.linkService.eventBus) === null || _this$linkService$eve4 === void 0 ? void 0 : _this$linkService$eve4.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: this.data.id,\\n name: n,\\n value: i(t),\\n shift: t.shiftKey,\\n modifier: this._getKeyModifier(t)\\n }\\n });\\n }) : t.addEventListener(e, t => {\\n var _this$linkService$eve5;\\n (_this$linkService$eve5 = this.linkService.eventBus) === null || _this$linkService$eve5 === void 0 ? void 0 : _this$linkService$eve5.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: this.data.id,\\n name: n,\\n value: i(t)\\n }\\n });\\n });\\n }\\n _setEventListeners(t, e, n) {\\n for (const [i, r] of e) {\\n var _this$data$actions;\\n (\\"Action\\" === r || ((_this$data$actions = this.data.actions) === null || _this$data$actions === void 0 ? void 0 : _this$data$actions[r])) && this._setEventListener(t, i, r, n);\\n }\\n }\\n _setBackgroundColor(t) {\\n const e = this.data.backgroundColor || null;\\n t.style.backgroundColor = null === e ? \\"transparent\\" : i.Util.makeHexColor(e[0], e[1], e[2]);\\n }\\n _setTextStyle(t) {\\n const e = [\\"left\\", \\"center\\", \\"right\\"],\\n {\\n fontColor: n\\n } = this.data.defaultAppearanceData,\\n r = this.data.defaultAppearanceData.fontSize || 9,\\n s = t.style;\\n let a;\\n const roundToOneDecimal = t => Math.round(10 * t) / 10;\\n if (this.data.multiLine) {\\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2),\\n e = t / (Math.round(t / (i.LINE_FACTOR * r)) || 1);\\n a = Math.min(r, roundToOneDecimal(e / i.LINE_FACTOR));\\n } else {\\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2);\\n a = Math.min(r, roundToOneDecimal(t / i.LINE_FACTOR));\\n }\\n s.fontSize = \\"calc(\\".concat(a, \\"px * var(--scale-factor))\\");\\n s.color = i.Util.makeHexColor(n[0], n[1], n[2]);\\n null !== this.data.textAlignment && (s.textAlign = e[this.data.textAlignment]);\\n }\\n _setRequired(t, e) {\\n e ? t.setAttribute(\\"required\\", !0) : t.removeAttribute(\\"required\\");\\n t.setAttribute(\\"aria-required\\", e);\\n }\\n }\\n class TextWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms || !t.data.hasAppearance && !!t.data.fieldValue\\n });\\n }\\n setPropertyOnSiblings(t, e, n, i) {\\n const r = this.annotationStorage;\\n for (const s of this._getElementsByName(t.name, t.id)) {\\n s.domElement && (s.domElement[e] = n);\\n r.setValue(s.id, {\\n [i]: n\\n });\\n }\\n }\\n render() {\\n const t = this.annotationStorage,\\n e = this.data.id;\\n this.container.classList.add(\\"textWidgetAnnotation\\");\\n let n = null;\\n if (this.renderForms) {\\n var _this$data$textConten;\\n const i = t.getValue(e, {\\n value: this.data.fieldValue\\n });\\n let r = i.value || \\"\\";\\n const s = t.getValue(e, {\\n charLimit: this.data.maxLen\\n }).charLimit;\\n s && r.length > s && (r = r.slice(0, s));\\n let a = i.formattedValue || ((_this$data$textConten = this.data.textContent) === null || _this$data$textConten === void 0 ? void 0 : _this$data$textConten.join(\\"\\\\n\\")) || null;\\n a && this.data.comb && (a = a.replaceAll(/\\\\s+/g, \\"\\"));\\n const o = {\\n userValue: r,\\n formattedValue: a,\\n lastCommittedValue: null,\\n commitKey: 1\\n };\\n if (this.data.multiLine) {\\n var _a4;\\n n = document.createElement(\\"textarea\\");\\n n.textContent = (_a4 = a) !== null && _a4 !== void 0 ? _a4 : r;\\n this.data.doNotScroll && (n.style.overflowY = \\"hidden\\");\\n } else {\\n var _a5;\\n n = document.createElement(\\"input\\");\\n n.type = \\"text\\";\\n n.setAttribute(\\"value\\", (_a5 = a) !== null && _a5 !== void 0 ? _a5 : r);\\n this.data.doNotScroll && (n.style.overflowX = \\"hidden\\");\\n }\\n this.data.hasOwnCanvas && (n.hidden = !0);\\n h.add(n);\\n n.setAttribute(\\"data-element-id\\", e);\\n n.disabled = this.data.readOnly;\\n n.name = this.data.baseFieldName || this.data.fieldName;\\n n.tabIndex = c;\\n this._setRequired(n, this.data.required);\\n s && (n.maxLength = s);\\n n.addEventListener(\\"input\\", i => {\\n t.setValue(e, {\\n value: i.target.value\\n });\\n this.setPropertyOnSiblings(n, \\"value\\", i.target.value, \\"value\\");\\n o.formattedValue = null;\\n });\\n n.addEventListener(\\"resetform\\", t => {\\n var _this$data$defaultFie;\\n const e = (_this$data$defaultFie = this.data.defaultFieldValue) !== null && _this$data$defaultFie !== void 0 ? _this$data$defaultFie : \\"\\";\\n n.value = o.userValue = e;\\n o.formattedValue = null;\\n });\\n let blurListener = t => {\\n const {\\n formattedValue: e\\n } = o;\\n null != e && (t.target.value = e);\\n t.target.scrollLeft = 0;\\n };\\n if (this.enableScripting && this.hasJSActions) {\\n var _this$data$actions2;\\n n.addEventListener(\\"focus\\", t => {\\n const {\\n target: e\\n } = t;\\n o.userValue && (e.value = o.userValue);\\n o.lastCommittedValue = e.value;\\n o.commitKey = 1;\\n });\\n n.addEventListener(\\"updatefromsandbox\\", n => {\\n this.showElementAndHideCanvas(n.target);\\n const i = {\\n value(n) {\\n var _n$detail$value;\\n o.userValue = (_n$detail$value = n.detail.value) !== null && _n$detail$value !== void 0 ? _n$detail$value : \\"\\";\\n t.setValue(e, {\\n value: o.userValue.toString()\\n });\\n n.target.value = o.userValue;\\n },\\n formattedValue(n) {\\n const {\\n formattedValue: i\\n } = n.detail;\\n o.formattedValue = i;\\n null != i && n.target !== document.activeElement && (n.target.value = i);\\n t.setValue(e, {\\n formattedValue: i\\n });\\n },\\n selRange(t) {\\n t.target.setSelectionRange(...t.detail.selRange);\\n },\\n charLimit: n => {\\n const {\\n charLimit: i\\n } = n.detail,\\n {\\n target: r\\n } = n;\\n if (0 === i) {\\n r.removeAttribute(\\"maxLength\\");\\n return;\\n }\\n r.setAttribute(\\"maxLength\\", i);\\n let s = o.userValue;\\n if (s && !(s.length <= i)) {\\n var _this$linkService$eve6;\\n s = s.slice(0, i);\\n r.value = o.userValue = s;\\n t.setValue(e, {\\n value: s\\n });\\n (_this$linkService$eve6 = this.linkService.eventBus) === null || _this$linkService$eve6 === void 0 ? void 0 : _this$linkService$eve6.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: s,\\n willCommit: !0,\\n commitKey: 1,\\n selStart: r.selectionStart,\\n selEnd: r.selectionEnd\\n }\\n });\\n }\\n }\\n };\\n this._dispatchEventFromSandbox(i, n);\\n });\\n n.addEventListener(\\"keydown\\", t => {\\n o.commitKey = 1;\\n let n = -1;\\n \\"Escape\\" === t.key ? n = 0 : \\"Enter\\" !== t.key || this.data.multiLine ? \\"Tab\\" === t.key && (o.commitKey = 3) : n = 2;\\n if (-1 === n) return;\\n const {\\n value: i\\n } = t.target;\\n if (o.lastCommittedValue !== i) {\\n var _this$linkService$eve7;\\n o.lastCommittedValue = i;\\n o.userValue = i;\\n (_this$linkService$eve7 = this.linkService.eventBus) === null || _this$linkService$eve7 === void 0 ? void 0 : _this$linkService$eve7.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: i,\\n willCommit: !0,\\n commitKey: n,\\n selStart: t.target.selectionStart,\\n selEnd: t.target.selectionEnd\\n }\\n });\\n }\\n });\\n const i = blurListener;\\n blurListener = null;\\n n.addEventListener(\\"blur\\", t => {\\n var _this$linkService$eve8;\\n if (!t.relatedTarget) return;\\n const {\\n value: n\\n } = t.target;\\n o.userValue = n;\\n o.lastCommittedValue !== n && ((_this$linkService$eve8 = this.linkService.eventBus) === null || _this$linkService$eve8 === void 0 ? void 0 : _this$linkService$eve8.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: n,\\n willCommit: !0,\\n commitKey: o.commitKey,\\n selStart: t.target.selectionStart,\\n selEnd: t.target.selectionEnd\\n }\\n }));\\n i(t);\\n });\\n ((_this$data$actions2 = this.data.actions) === null || _this$data$actions2 === void 0 ? void 0 : _this$data$actions2.Keystroke) && n.addEventListener(\\"beforeinput\\", t => {\\n var _this$linkService$eve9;\\n o.lastCommittedValue = null;\\n const {\\n data: n,\\n target: i\\n } = t,\\n {\\n value: r,\\n selectionStart: s,\\n selectionEnd: a\\n } = i;\\n let l = s,\\n c = a;\\n switch (t.inputType) {\\n case \\"deleteWordBackward\\":\\n {\\n const t = r.substring(0, s).match(/\\\\w*[^\\\\w]*$/);\\n t && (l -= t[0].length);\\n break;\\n }\\n case \\"deleteWordForward\\":\\n {\\n const t = r.substring(s).match(/^[^\\\\w]*\\\\w*/);\\n t && (c += t[0].length);\\n break;\\n }\\n case \\"deleteContentBackward\\":\\n s === a && (l -= 1);\\n break;\\n case \\"deleteContentForward\\":\\n s === a && (c += 1);\\n }\\n t.preventDefault();\\n (_this$linkService$eve9 = this.linkService.eventBus) === null || _this$linkService$eve9 === void 0 ? void 0 : _this$linkService$eve9.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: r,\\n change: n || \\"\\",\\n willCommit: !1,\\n selStart: l,\\n selEnd: c\\n }\\n });\\n });\\n this._setEventListeners(n, [[\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"]], t => t.target.value);\\n }\\n blurListener && n.addEventListener(\\"blur\\", blurListener);\\n if (this.data.comb) {\\n const t = (this.data.rect[2] - this.data.rect[0]) / s;\\n n.classList.add(\\"comb\\");\\n n.style.letterSpacing = \\"calc(\\".concat(t, \\"px * var(--scale-factor) - 1ch)\\");\\n }\\n } else {\\n n = document.createElement(\\"div\\");\\n n.textContent = this.data.fieldValue;\\n n.style.verticalAlign = \\"middle\\";\\n n.style.display = \\"table-cell\\";\\n }\\n this._setTextStyle(n);\\n this._setBackgroundColor(n);\\n this._setDefaultPropertiesFromJS(n);\\n this.container.append(n);\\n return this.container;\\n }\\n }\\n class SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: !!t.data.hasOwnCanvas\\n });\\n }\\n }\\n class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms\\n });\\n }\\n render() {\\n const t = this.annotationStorage,\\n e = this.data,\\n n = e.id;\\n let i = t.getValue(n, {\\n value: e.exportValue === e.fieldValue\\n }).value;\\n if (\\"string\\" == typeof i) {\\n i = \\"Off\\" !== i;\\n t.setValue(n, {\\n value: i\\n });\\n }\\n this.container.classList.add(\\"buttonWidgetAnnotation\\", \\"checkBox\\");\\n const r = document.createElement(\\"input\\");\\n h.add(r);\\n r.setAttribute(\\"data-element-id\\", n);\\n r.disabled = e.readOnly;\\n this._setRequired(r, this.data.required);\\n r.type = \\"checkbox\\";\\n r.name = e.baseFieldName || e.fieldName;\\n i && r.setAttribute(\\"checked\\", !0);\\n r.setAttribute(\\"exportValue\\", e.exportValue);\\n r.tabIndex = c;\\n r.addEventListener(\\"change\\", i => {\\n const {\\n name: r,\\n checked: s\\n } = i.target;\\n for (const i of this._getElementsByName(r, n)) {\\n const n = s && i.exportValue === e.exportValue;\\n i.domElement && (i.domElement.checked = n);\\n t.setValue(i.id, {\\n value: n\\n });\\n }\\n t.setValue(n, {\\n value: s\\n });\\n });\\n r.addEventListener(\\"resetform\\", t => {\\n const n = e.defaultFieldValue || \\"Off\\";\\n t.target.checked = n === e.exportValue;\\n });\\n if (this.enableScripting && this.hasJSActions) {\\n r.addEventListener(\\"updatefromsandbox\\", e => {\\n const i = {\\n value(e) {\\n e.target.checked = \\"Off\\" !== e.detail.value;\\n t.setValue(n, {\\n value: e.target.checked\\n });\\n }\\n };\\n this._dispatchEventFromSandbox(i, e);\\n });\\n this._setEventListeners(r, [[\\"change\\", \\"Validate\\"], [\\"change\\", \\"Action\\"], [\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"]], t => t.target.checked);\\n }\\n this._setBackgroundColor(r);\\n this._setDefaultPropertiesFromJS(r);\\n this.container.append(r);\\n return this.container;\\n }\\n }\\n class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms\\n });\\n }\\n render() {\\n this.container.classList.add(\\"buttonWidgetAnnotation\\", \\"radioButton\\");\\n const t = this.annotationStorage,\\n e = this.data,\\n n = e.id;\\n let i = t.getValue(n, {\\n value: e.fieldValue === e.buttonValue\\n }).value;\\n if (\\"string\\" == typeof i) {\\n i = i !== e.buttonValue;\\n t.setValue(n, {\\n value: i\\n });\\n }\\n const r = document.createElement(\\"input\\");\\n h.add(r);\\n r.setAttribute(\\"data-element-id\\", n);\\n r.disabled = e.readOnly;\\n this._setRequired(r, this.data.required);\\n r.type = \\"radio\\";\\n r.name = e.baseFieldName || e.fieldName;\\n i && r.setAttribute(\\"checked\\", !0);\\n r.tabIndex = c;\\n r.addEventListener(\\"change\\", e => {\\n const {\\n name: i,\\n checked: r\\n } = e.target;\\n for (const e of this._getElementsByName(i, n)) t.setValue(e.id, {\\n value: !1\\n });\\n t.setValue(n, {\\n value: r\\n });\\n });\\n r.addEventListener(\\"resetform\\", t => {\\n const n = e.defaultFieldValue;\\n t.target.checked = null != n && n === e.buttonValue;\\n });\\n if (this.enableScripting && this.hasJSActions) {\\n const i = e.buttonValue;\\n r.addEventListener(\\"updatefromsandbox\\", e => {\\n const r = {\\n value: e => {\\n const r = i === e.detail.value;\\n for (const i of this._getElementsByName(e.target.name)) {\\n const e = r && i.id === n;\\n i.domElement && (i.domElement.checked = e);\\n t.setValue(i.id, {\\n value: e\\n });\\n }\\n }\\n };\\n this._dispatchEventFromSandbox(r, e);\\n });\\n this._setEventListeners(r, [[\\"change\\", \\"Validate\\"], [\\"change\\", \\"Action\\"], [\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"]], t => t.target.checked);\\n }\\n this._setBackgroundColor(r);\\n this._setDefaultPropertiesFromJS(r);\\n this.container.append(r);\\n return this.container;\\n }\\n }\\n class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\\n constructor(t) {\\n super(t, {\\n ignoreBorder: t.data.hasAppearance\\n });\\n }\\n render() {\\n const t = super.render();\\n t.classList.add(\\"buttonWidgetAnnotation\\", \\"pushButton\\");\\n this.data.alternativeText && (t.title = this.data.alternativeText);\\n const e = t.lastChild;\\n if (this.enableScripting && this.hasJSActions && e) {\\n this._setDefaultPropertiesFromJS(e);\\n e.addEventListener(\\"updatefromsandbox\\", t => {\\n this._dispatchEventFromSandbox({}, t);\\n });\\n }\\n return t;\\n }\\n }\\n class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms\\n });\\n }\\n render() {\\n this.container.classList.add(\\"choiceWidgetAnnotation\\");\\n const t = this.annotationStorage,\\n e = this.data.id,\\n n = t.getValue(e, {\\n value: this.data.fieldValue\\n }),\\n i = document.createElement(\\"select\\");\\n h.add(i);\\n i.setAttribute(\\"data-element-id\\", e);\\n i.disabled = this.data.readOnly;\\n this._setRequired(i, this.data.required);\\n i.name = this.data.baseFieldName || this.data.fieldName;\\n i.tabIndex = c;\\n let r = this.data.combo && this.data.options.length > 0;\\n if (!this.data.combo) {\\n i.size = this.data.options.length;\\n this.data.multiSelect && (i.multiple = !0);\\n }\\n i.addEventListener(\\"resetform\\", t => {\\n const e = this.data.defaultFieldValue;\\n for (const t of i.options) t.selected = t.value === e;\\n });\\n for (const t of this.data.options) {\\n const e = document.createElement(\\"option\\");\\n e.textContent = t.displayValue;\\n e.value = t.exportValue;\\n if (n.value.includes(t.exportValue)) {\\n e.setAttribute(\\"selected\\", !0);\\n r = !1;\\n }\\n i.append(e);\\n }\\n let s = null;\\n if (r) {\\n const t = document.createElement(\\"option\\");\\n t.value = \\" \\";\\n t.setAttribute(\\"hidden\\", !0);\\n t.setAttribute(\\"selected\\", !0);\\n i.prepend(t);\\n s = () => {\\n t.remove();\\n i.removeEventListener(\\"input\\", s);\\n s = null;\\n };\\n i.addEventListener(\\"input\\", s);\\n }\\n const getValue = t => {\\n const e = t ? \\"value\\" : \\"textContent\\",\\n {\\n options: n,\\n multiple: r\\n } = i;\\n return r ? Array.prototype.filter.call(n, t => t.selected).map(t => t[e]) : -1 === n.selectedIndex ? null : n[n.selectedIndex][e];\\n };\\n let a = getValue(!1);\\n const getItems = t => {\\n const e = t.target.options;\\n return Array.prototype.map.call(e, t => ({\\n displayValue: t.textContent,\\n exportValue: t.value\\n }));\\n };\\n if (this.enableScripting && this.hasJSActions) {\\n i.addEventListener(\\"updatefromsandbox\\", n => {\\n const r = {\\n value(n) {\\n var _s5;\\n (_s5 = s) === null || _s5 === void 0 ? void 0 : _s5();\\n const r = n.detail.value,\\n o = new Set(Array.isArray(r) ? r : [r]);\\n for (const t of i.options) t.selected = o.has(t.value);\\n t.setValue(e, {\\n value: getValue(!0)\\n });\\n a = getValue(!1);\\n },\\n multipleSelection(t) {\\n i.multiple = !0;\\n },\\n remove(n) {\\n const r = i.options,\\n s = n.detail.remove;\\n r[s].selected = !1;\\n i.remove(s);\\n if (r.length > 0) {\\n -1 === Array.prototype.findIndex.call(r, t => t.selected) && (r[0].selected = !0);\\n }\\n t.setValue(e, {\\n value: getValue(!0),\\n items: getItems(n)\\n });\\n a = getValue(!1);\\n },\\n clear(n) {\\n for (; 0 !== i.length;) i.remove(0);\\n t.setValue(e, {\\n value: null,\\n items: []\\n });\\n a = getValue(!1);\\n },\\n insert(n) {\\n const {\\n index: r,\\n displayValue: s,\\n exportValue: o\\n } = n.detail.insert,\\n l = i.children[r],\\n c = document.createElement(\\"option\\");\\n c.textContent = s;\\n c.value = o;\\n l ? l.before(c) : i.append(c);\\n t.setValue(e, {\\n value: getValue(!0),\\n items: getItems(n)\\n });\\n a = getValue(!1);\\n },\\n items(n) {\\n const {\\n items: r\\n } = n.detail;\\n for (; 0 !== i.length;) i.remove(0);\\n for (const t of r) {\\n const {\\n displayValue: e,\\n exportValue: n\\n } = t,\\n r = document.createElement(\\"option\\");\\n r.textContent = e;\\n r.value = n;\\n i.append(r);\\n }\\n i.options.length > 0 && (i.options[0].selected = !0);\\n t.setValue(e, {\\n value: getValue(!0),\\n items: getItems(n)\\n });\\n a = getValue(!1);\\n },\\n indices(n) {\\n const i = new Set(n.detail.indices);\\n for (const t of n.target.options) t.selected = i.has(t.index);\\n t.setValue(e, {\\n value: getValue(!0)\\n });\\n a = getValue(!1);\\n },\\n editable(t) {\\n t.target.disabled = !t.detail.editable;\\n }\\n };\\n this._dispatchEventFromSandbox(r, n);\\n });\\n i.addEventListener(\\"input\\", n => {\\n var _this$linkService$eve10;\\n const i = getValue(!0);\\n t.setValue(e, {\\n value: i\\n });\\n n.preventDefault();\\n (_this$linkService$eve10 = this.linkService.eventBus) === null || _this$linkService$eve10 === void 0 ? void 0 : _this$linkService$eve10.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: a,\\n changeEx: i,\\n willCommit: !1,\\n commitKey: 1,\\n keyDown: !1\\n }\\n });\\n });\\n this._setEventListeners(i, [[\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"], [\\"input\\", \\"Action\\"], [\\"input\\", \\"Validate\\"]], t => t.target.value);\\n } else i.addEventListener(\\"input\\", function (n) {\\n t.setValue(e, {\\n value: getValue(!0)\\n });\\n });\\n this.data.combo && this._setTextStyle(i);\\n this._setBackgroundColor(i);\\n this._setDefaultPropertiesFromJS(i);\\n this.container.append(i);\\n return this.container;\\n }\\n }\\n class PopupAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _e$titleObj, _e$contentsObj, _e$richText;\\n const {\\n data: e,\\n elements: n\\n } = t;\\n super(t, {\\n isRenderable: !!((_e$titleObj = e.titleObj) !== null && _e$titleObj !== void 0 && _e$titleObj.str || (_e$contentsObj = e.contentsObj) !== null && _e$contentsObj !== void 0 && _e$contentsObj.str || (_e$richText = e.richText) !== null && _e$richText !== void 0 && _e$richText.str)\\n });\\n this.elements = n;\\n }\\n render() {\\n this.container.classList.add(\\"popupAnnotation\\");\\n const t = new PopupElement({\\n container: this.container,\\n color: this.data.color,\\n titleObj: this.data.titleObj,\\n modificationDate: this.data.modificationDate,\\n contentsObj: this.data.contentsObj,\\n richText: this.data.richText,\\n rect: this.data.rect,\\n parentRect: this.data.parentRect || null,\\n parent: this.parent,\\n elements: this.elements,\\n open: this.data.open\\n }),\\n e = [];\\n for (const n of this.elements) {\\n n.popup = t;\\n e.push(n.data.id);\\n n.addHighlightArea();\\n }\\n this.container.setAttribute(\\"aria-controls\\", e.join(\\",\\"));\\n return this.container;\\n }\\n }\\n var _Ne = /*#__PURE__*/new WeakMap();\\n var _Be = /*#__PURE__*/new WeakMap();\\n var _Ue = /*#__PURE__*/new WeakMap();\\n var _He = /*#__PURE__*/new WeakMap();\\n var _Se2 = /*#__PURE__*/new WeakMap();\\n var _bt2 = /*#__PURE__*/new WeakMap();\\n var _We = /*#__PURE__*/new WeakMap();\\n var _Ge = /*#__PURE__*/new WeakMap();\\n var _Ve = /*#__PURE__*/new WeakMap();\\n var _$e = /*#__PURE__*/new WeakMap();\\n var _Xe = /*#__PURE__*/new WeakMap();\\n var _Ke = /*#__PURE__*/new WeakMap();\\n var _Ye = /*#__PURE__*/new WeakMap();\\n var _Je = /*#__PURE__*/new WeakMap();\\n var _Qe = /*#__PURE__*/new WeakMap();\\n var _Ze = /*#__PURE__*/new WeakMap();\\n var _qe = /*#__PURE__*/new WeakSet();\\n var _ze = /*#__PURE__*/new WeakSet();\\n var _je = /*#__PURE__*/new WeakSet();\\n class PopupElement {\\n constructor(t) {\\n _classPrivateMethodInitSpec(this, _je);\\n _classPrivateMethodInitSpec(this, _ze);\\n _classPrivateMethodInitSpec(this, _qe);\\n _classPrivateFieldInitSpec(this, _Ne, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Be, {\\n writable: true,\\n value: _classPrivateMethodGet(this, _je, _je2).bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Ue, {\\n writable: true,\\n value: _classPrivateMethodGet(this, _ze, _ze2).bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _He, {\\n writable: true,\\n value: _classPrivateMethodGet(this, _qe, _qe2).bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Se2, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _bt2, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _We, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ge, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ve, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _$e, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Xe, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _Ke, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ye, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Je, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Qe, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ze, {\\n writable: true,\\n value: !1\\n });\\n let {\\n container: e,\\n color: n,\\n elements: i,\\n titleObj: s,\\n modificationDate: a,\\n contentsObj: o,\\n richText: l,\\n parent: c,\\n rect: h,\\n parentRect: d,\\n open: u\\n } = t;\\n _classPrivateFieldSet(this, _bt2, e);\\n _classPrivateFieldSet(this, _Qe, s);\\n _classPrivateFieldSet(this, _We, o);\\n _classPrivateFieldSet(this, _Je, l);\\n _classPrivateFieldSet(this, _Ve, c);\\n _classPrivateFieldSet(this, _Se2, n);\\n _classPrivateFieldSet(this, _Ye, h);\\n _classPrivateFieldSet(this, _$e, d);\\n _classPrivateFieldSet(this, _Ge, i);\\n const p = r.PDFDateString.toDateObject(a);\\n p && _classPrivateFieldSet(this, _Ne, c.l10n.get(\\"annotation_date_string\\", {\\n date: p.toLocaleDateString(),\\n time: p.toLocaleTimeString()\\n }));\\n this.trigger = i.flatMap(t => t.getElementsToTriggerPopup());\\n for (const t of this.trigger) {\\n t.addEventListener(\\"click\\", _classPrivateFieldGet(this, _He));\\n t.addEventListener(\\"mouseenter\\", _classPrivateFieldGet(this, _Ue));\\n t.addEventListener(\\"mouseleave\\", _classPrivateFieldGet(this, _Be));\\n }\\n _classPrivateFieldGet(this, _bt2).hidden = !0;\\n u && _classPrivateMethodGet(this, _qe, _qe2).call(this);\\n }\\n render() {\\n if (_classPrivateFieldGet(this, _Ke)) return;\\n const {\\n page: {\\n view: t\\n },\\n viewport: {\\n rawDims: {\\n pageWidth: e,\\n pageHeight: n,\\n pageX: r,\\n pageY: s\\n }\\n }\\n } = _classPrivateFieldGet(this, _Ve),\\n a = _classPrivateFieldSet(this, _Ke, document.createElement(\\"div\\"));\\n a.className = \\"popup\\";\\n if (_classPrivateFieldGet(this, _Se2)) {\\n const t = a.style.outlineColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2));\\n if (CSS.supports(\\"background-color\\", \\"color-mix(in srgb, red 30%, white)\\")) a.style.backgroundColor = \\"color-mix(in srgb, \\".concat(t, \\" 30%, white)\\");else {\\n const t = .7;\\n a.style.backgroundColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2).map(e => Math.floor(t * (255 - e) + e)));\\n }\\n }\\n const o = document.createElement(\\"span\\");\\n o.className = \\"header\\";\\n const c = document.createElement(\\"h1\\");\\n o.append(c);\\n ({\\n dir: c.dir,\\n str: c.textContent\\n } = _classPrivateFieldGet(this, _Qe));\\n a.append(o);\\n if (_classPrivateFieldGet(this, _Ne)) {\\n const t = document.createElement(\\"span\\");\\n t.classList.add(\\"popupDate\\");\\n _classPrivateFieldGet(this, _Ne).then(e => {\\n t.textContent = e;\\n });\\n o.append(t);\\n }\\n const h = _classPrivateFieldGet(this, _We),\\n d = _classPrivateFieldGet(this, _Je);\\n if (!(d !== null && d !== void 0 && d.str) || h !== null && h !== void 0 && h.str && h.str !== d.str) {\\n const t = this._formatContents(h);\\n a.append(t);\\n } else {\\n l.XfaLayer.render({\\n xfaHtml: d.html,\\n intent: \\"richText\\",\\n div: a\\n });\\n a.lastChild.classList.add(\\"richText\\", \\"popupContent\\");\\n }\\n let u = !!_classPrivateFieldGet(this, _$e),\\n p = u ? _classPrivateFieldGet(this, _$e) : _classPrivateFieldGet(this, _Ye);\\n for (const t of _classPrivateFieldGet(this, _Ge)) if (!p || null !== i.Util.intersect(t.data.rect, p)) {\\n p = t.data.rect;\\n u = !0;\\n break;\\n }\\n const f = i.Util.normalizeRect([p[0], t[3] - p[1] + t[1], p[2], t[3] - p[3] + t[1]]),\\n g = u ? p[2] - p[0] + 5 : 0,\\n m = f[0] + g,\\n b = f[1],\\n {\\n style: v\\n } = _classPrivateFieldGet(this, _bt2);\\n v.left = 100 * (m - r) / e + \\"%\\";\\n v.top = 100 * (b - s) / n + \\"%\\";\\n _classPrivateFieldGet(this, _bt2).append(a);\\n }\\n _formatContents(t) {\\n let {\\n str: e,\\n dir: n\\n } = t;\\n const i = document.createElement(\\"p\\");\\n i.classList.add(\\"popupContent\\");\\n i.dir = n;\\n const r = e.split(/(?:\\\\r\\\\n?|\\\\n)/);\\n for (let t = 0, e = r.length; t < e; ++t) {\\n const n = r[t];\\n i.append(document.createTextNode(n));\\n t < e - 1 && i.append(document.createElement(\\"br\\"));\\n }\\n return i;\\n }\\n forceHide() {\\n _classPrivateFieldSet(this, _Ze, this.isVisible);\\n _classPrivateFieldGet(this, _Ze) && (_classPrivateFieldGet(this, _bt2).hidden = !0);\\n }\\n maybeShow() {\\n if (_classPrivateFieldGet(this, _Ze)) {\\n _classPrivateFieldSet(this, _Ze, !1);\\n _classPrivateFieldGet(this, _bt2).hidden = !1;\\n }\\n }\\n get isVisible() {\\n return !1 === _classPrivateFieldGet(this, _bt2).hidden;\\n }\\n }\\n function _qe2() {\\n _classPrivateFieldSet(this, _Xe, !_classPrivateFieldGet(this, _Xe));\\n if (_classPrivateFieldGet(this, _Xe)) {\\n _classPrivateMethodGet(this, _ze, _ze2).call(this);\\n _classPrivateFieldGet(this, _bt2).addEventListener(\\"click\\", _classPrivateFieldGet(this, _He));\\n } else {\\n _classPrivateMethodGet(this, _je, _je2).call(this);\\n _classPrivateFieldGet(this, _bt2).removeEventListener(\\"click\\", _classPrivateFieldGet(this, _He));\\n }\\n }\\n function _ze2() {\\n _classPrivateFieldGet(this, _Ke) || this.render();\\n if (this.isVisible) _classPrivateFieldGet(this, _Xe) && _classPrivateFieldGet(this, _bt2).classList.add(\\"focused\\");else {\\n _classPrivateFieldGet(this, _bt2).hidden = !1;\\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) + 1e3;\\n }\\n }\\n function _je2() {\\n _classPrivateFieldGet(this, _bt2).classList.remove(\\"focused\\");\\n if (!_classPrivateFieldGet(this, _Xe) && this.isVisible) {\\n _classPrivateFieldGet(this, _bt2).hidden = !0;\\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) - 1e3;\\n }\\n }\\n class FreeTextAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj2, _t$data$contentsObj2, _t$data$richText2;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj2 = t.data.titleObj) !== null && _t$data$titleObj2 !== void 0 && _t$data$titleObj2.str || (_t$data$contentsObj2 = t.data.contentsObj) !== null && _t$data$contentsObj2 !== void 0 && _t$data$contentsObj2.str || (_t$data$richText2 = t.data.richText) !== null && _t$data$richText2 !== void 0 && _t$data$richText2.str),\\n ignoreBorder: !0\\n });\\n this.textContent = t.data.textContent;\\n this.textPosition = t.data.textPosition;\\n this.annotationEditorType = i.AnnotationEditorType.FREETEXT;\\n }\\n render() {\\n this.container.classList.add(\\"freeTextAnnotation\\");\\n if (this.textContent) {\\n const t = document.createElement(\\"div\\");\\n t.classList.add(\\"annotationTextContent\\");\\n t.setAttribute(\\"role\\", \\"comment\\");\\n for (const e of this.textContent) {\\n const n = document.createElement(\\"span\\");\\n n.textContent = e;\\n t.append(n);\\n }\\n this.container.append(t);\\n }\\n this.data.popupRef || this._createPopup();\\n this._editOnDoubleClick();\\n return this.container;\\n }\\n }\\n e.FreeTextAnnotationElement = FreeTextAnnotationElement;\\n var _tn = /*#__PURE__*/new WeakMap();\\n class LineAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj3, _t$data$contentsObj3, _t$data$richText3;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj3 = t.data.titleObj) !== null && _t$data$titleObj3 !== void 0 && _t$data$titleObj3.str || (_t$data$contentsObj3 = t.data.contentsObj) !== null && _t$data$contentsObj3 !== void 0 && _t$data$contentsObj3.str || (_t$data$richText3 = t.data.richText) !== null && _t$data$richText3 !== void 0 && _t$data$richText3.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _tn, {\\n writable: true,\\n value: null\\n });\\n }\\n render() {\\n this.container.classList.add(\\"lineAnnotation\\");\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0),\\n r = _classPrivateFieldSet(this, _tn, this.svgFactory.createElement(\\"svg:line\\"));\\n r.setAttribute(\\"x1\\", t.rect[2] - t.lineCoordinates[0]);\\n r.setAttribute(\\"y1\\", t.rect[3] - t.lineCoordinates[1]);\\n r.setAttribute(\\"x2\\", t.rect[2] - t.lineCoordinates[2]);\\n r.setAttribute(\\"y2\\", t.rect[3] - t.lineCoordinates[3]);\\n r.setAttribute(\\"stroke-width\\", t.borderStyle.width || 1);\\n r.setAttribute(\\"stroke\\", \\"transparent\\");\\n r.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(r);\\n this.container.append(i);\\n t.popupRef || this._createPopup();\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _tn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n var _en = /*#__PURE__*/new WeakMap();\\n class SquareAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj4, _t$data$contentsObj4, _t$data$richText4;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj4 = t.data.titleObj) !== null && _t$data$titleObj4 !== void 0 && _t$data$titleObj4.str || (_t$data$contentsObj4 = t.data.contentsObj) !== null && _t$data$contentsObj4 !== void 0 && _t$data$contentsObj4.str || (_t$data$richText4 = t.data.richText) !== null && _t$data$richText4 !== void 0 && _t$data$richText4.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _en, {\\n writable: true,\\n value: null\\n });\\n }\\n render() {\\n this.container.classList.add(\\"squareAnnotation\\");\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0),\\n r = t.borderStyle.width,\\n s = _classPrivateFieldSet(this, _en, this.svgFactory.createElement(\\"svg:rect\\"));\\n s.setAttribute(\\"x\\", r / 2);\\n s.setAttribute(\\"y\\", r / 2);\\n s.setAttribute(\\"width\\", e - r);\\n s.setAttribute(\\"height\\", n - r);\\n s.setAttribute(\\"stroke-width\\", r || 1);\\n s.setAttribute(\\"stroke\\", \\"transparent\\");\\n s.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(s);\\n this.container.append(i);\\n t.popupRef || this._createPopup();\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _en);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n var _nn = /*#__PURE__*/new WeakMap();\\n class CircleAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj5, _t$data$contentsObj5, _t$data$richText5;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj5 = t.data.titleObj) !== null && _t$data$titleObj5 !== void 0 && _t$data$titleObj5.str || (_t$data$contentsObj5 = t.data.contentsObj) !== null && _t$data$contentsObj5 !== void 0 && _t$data$contentsObj5.str || (_t$data$richText5 = t.data.richText) !== null && _t$data$richText5 !== void 0 && _t$data$richText5.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _nn, {\\n writable: true,\\n value: null\\n });\\n }\\n render() {\\n this.container.classList.add(\\"circleAnnotation\\");\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0),\\n r = t.borderStyle.width,\\n s = _classPrivateFieldSet(this, _nn, this.svgFactory.createElement(\\"svg:ellipse\\"));\\n s.setAttribute(\\"cx\\", e / 2);\\n s.setAttribute(\\"cy\\", n / 2);\\n s.setAttribute(\\"rx\\", e / 2 - r / 2);\\n s.setAttribute(\\"ry\\", n / 2 - r / 2);\\n s.setAttribute(\\"stroke-width\\", r || 1);\\n s.setAttribute(\\"stroke\\", \\"transparent\\");\\n s.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(s);\\n this.container.append(i);\\n t.popupRef || this._createPopup();\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _nn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n var _in = /*#__PURE__*/new WeakMap();\\n class PolylineAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj6, _t$data$contentsObj6, _t$data$richText6;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj6 = t.data.titleObj) !== null && _t$data$titleObj6 !== void 0 && _t$data$titleObj6.str || (_t$data$contentsObj6 = t.data.contentsObj) !== null && _t$data$contentsObj6 !== void 0 && _t$data$contentsObj6.str || (_t$data$richText6 = t.data.richText) !== null && _t$data$richText6 !== void 0 && _t$data$richText6.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _in, {\\n writable: true,\\n value: null\\n });\\n this.containerClassName = \\"polylineAnnotation\\";\\n this.svgElementName = \\"svg:polyline\\";\\n }\\n render() {\\n this.container.classList.add(this.containerClassName);\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0);\\n let r = [];\\n for (const e of t.vertices) {\\n const n = e.x - t.rect[0],\\n i = t.rect[3] - e.y;\\n r.push(n + \\",\\" + i);\\n }\\n r = r.join(\\" \\");\\n const s = _classPrivateFieldSet(this, _in, this.svgFactory.createElement(this.svgElementName));\\n s.setAttribute(\\"points\\", r);\\n s.setAttribute(\\"stroke-width\\", t.borderStyle.width || 1);\\n s.setAttribute(\\"stroke\\", \\"transparent\\");\\n s.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(s);\\n this.container.append(i);\\n t.popupRef || this._createPopup(s, t);\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _in);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n class PolygonAnnotationElement extends PolylineAnnotationElement {\\n constructor(t) {\\n super(t);\\n this.containerClassName = \\"polygonAnnotation\\";\\n this.svgElementName = \\"svg:polygon\\";\\n }\\n }\\n class CaretAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj7, _t$data$contentsObj7, _t$data$richText7;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj7 = t.data.titleObj) !== null && _t$data$titleObj7 !== void 0 && _t$data$titleObj7.str || (_t$data$contentsObj7 = t.data.contentsObj) !== null && _t$data$contentsObj7 !== void 0 && _t$data$contentsObj7.str || (_t$data$richText7 = t.data.richText) !== null && _t$data$richText7 !== void 0 && _t$data$richText7.str),\\n ignoreBorder: !0\\n });\\n }\\n render() {\\n this.container.classList.add(\\"caretAnnotation\\");\\n this.data.popupRef || this._createPopup();\\n return this.container;\\n }\\n }\\n var _rn = /*#__PURE__*/new WeakMap();\\n class InkAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj8, _t$data$contentsObj8, _t$data$richText8;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj8 = t.data.titleObj) !== null && _t$data$titleObj8 !== void 0 && _t$data$titleObj8.str || (_t$data$contentsObj8 = t.data.contentsObj) !== null && _t$data$contentsObj8 !== void 0 && _t$data$contentsObj8.str || (_t$data$richText8 = t.data.richText) !== null && _t$data$richText8 !== void 0 && _t$data$richText8.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _rn, {\\n writable: true,\\n value: []\\n });\\n this.containerClassName = \\"inkAnnotation\\";\\n this.svgElementName = \\"svg:polyline\\";\\n this.annotationEditorType = i.AnnotationEditorType.INK;\\n }\\n render() {\\n this.container.classList.add(this.containerClassName);\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0);\\n for (const e of t.inkLists) {\\n let n = [];\\n for (const i of e) {\\n const e = i.x - t.rect[0],\\n r = t.rect[3] - i.y;\\n n.push(\\"\\".concat(e, \\",\\").concat(r));\\n }\\n n = n.join(\\" \\");\\n const r = this.svgFactory.createElement(this.svgElementName);\\n _classPrivateFieldGet(this, _rn).push(r);\\n r.setAttribute(\\"points\\", n);\\n r.setAttribute(\\"stroke-width\\", t.borderStyle.width || 1);\\n r.setAttribute(\\"stroke\\", \\"transparent\\");\\n r.setAttribute(\\"fill\\", \\"transparent\\");\\n t.popupRef || this._createPopup(r, t);\\n i.append(r);\\n }\\n this.container.append(i);\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _rn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n e.InkAnnotationElement = InkAnnotationElement;\\n class HighlightAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj9, _t$data$contentsObj9, _t$data$richText9;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj9 = t.data.titleObj) !== null && _t$data$titleObj9 !== void 0 && _t$data$titleObj9.str || (_t$data$contentsObj9 = t.data.contentsObj) !== null && _t$data$contentsObj9 !== void 0 && _t$data$contentsObj9.str || (_t$data$richText9 = t.data.richText) !== null && _t$data$richText9 !== void 0 && _t$data$richText9.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"highlightAnnotation\\");\\n return this.container;\\n }\\n }\\n class UnderlineAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj10, _t$data$contentsObj10, _t$data$richText10;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj10 = t.data.titleObj) !== null && _t$data$titleObj10 !== void 0 && _t$data$titleObj10.str || (_t$data$contentsObj10 = t.data.contentsObj) !== null && _t$data$contentsObj10 !== void 0 && _t$data$contentsObj10.str || (_t$data$richText10 = t.data.richText) !== null && _t$data$richText10 !== void 0 && _t$data$richText10.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"underlineAnnotation\\");\\n return this.container;\\n }\\n }\\n class SquigglyAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj11, _t$data$contentsObj11, _t$data$richText11;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj11 = t.data.titleObj) !== null && _t$data$titleObj11 !== void 0 && _t$data$titleObj11.str || (_t$data$contentsObj11 = t.data.contentsObj) !== null && _t$data$contentsObj11 !== void 0 && _t$data$contentsObj11.str || (_t$data$richText11 = t.data.richText) !== null && _t$data$richText11 !== void 0 && _t$data$richText11.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"squigglyAnnotation\\");\\n return this.container;\\n }\\n }\\n class StrikeOutAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj12, _t$data$contentsObj12, _t$data$richText12;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj12 = t.data.titleObj) !== null && _t$data$titleObj12 !== void 0 && _t$data$titleObj12.str || (_t$data$contentsObj12 = t.data.contentsObj) !== null && _t$data$contentsObj12 !== void 0 && _t$data$contentsObj12.str || (_t$data$richText12 = t.data.richText) !== null && _t$data$richText12 !== void 0 && _t$data$richText12.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"strikeoutAnnotation\\");\\n return this.container;\\n }\\n }\\n class StampAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj13, _t$data$contentsObj13, _t$data$richText13;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj13 = t.data.titleObj) !== null && _t$data$titleObj13 !== void 0 && _t$data$titleObj13.str || (_t$data$contentsObj13 = t.data.contentsObj) !== null && _t$data$contentsObj13 !== void 0 && _t$data$contentsObj13.str || (_t$data$richText13 = t.data.richText) !== null && _t$data$richText13 !== void 0 && _t$data$richText13.str),\\n ignoreBorder: !0\\n });\\n }\\n render() {\\n this.container.classList.add(\\"stampAnnotation\\");\\n this.data.popupRef || this._createPopup();\\n return this.container;\\n }\\n }\\n e.StampAnnotationElement = StampAnnotationElement;\\n var _sn = /*#__PURE__*/new WeakMap();\\n class FileAttachmentAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _this$linkService$eve11;\\n super(t, {\\n isRenderable: !0\\n });\\n _classPrivateFieldInitSpec(this, _sn, {\\n writable: true,\\n value: null\\n });\\n const {\\n filename: e,\\n content: n\\n } = this.data.file;\\n this.filename = (0, r.getFilenameFromUrl)(e, !0);\\n this.content = n;\\n (_this$linkService$eve11 = this.linkService.eventBus) === null || _this$linkService$eve11 === void 0 ? void 0 : _this$linkService$eve11.dispatch(\\"fileattachmentannotation\\", {\\n source: this,\\n filename: e,\\n content: n\\n });\\n }\\n render() {\\n var _this$data$titleObj, _this$data$contentsOb;\\n this.container.classList.add(\\"fileAttachmentAnnotation\\");\\n let t;\\n if (this.data.hasAppearance) t = document.createElement(\\"div\\");else {\\n t = document.createElement(\\"img\\");\\n t.src = \\"\\".concat(this.imageResourcesPath, \\"annotation-\\").concat(/paperclip/i.test(this.data.name) ? \\"paperclip\\" : \\"pushpin\\", \\".svg\\");\\n }\\n t.classList.add(\\"popupTriggerArea\\");\\n t.addEventListener(\\"dblclick\\", this._download.bind(this));\\n _classPrivateFieldSet(this, _sn, t);\\n !this.data.popupRef && (((_this$data$titleObj = this.data.titleObj) === null || _this$data$titleObj === void 0 ? void 0 : _this$data$titleObj.str) || ((_this$data$contentsOb = this.data.contentsObj) === null || _this$data$contentsOb === void 0 ? void 0 : _this$data$contentsOb.str) || this.data.richText) && this._createPopup();\\n this.container.append(t);\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _sn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n _download() {\\n var _this$downloadManager2;\\n (_this$downloadManager2 = this.downloadManager) === null || _this$downloadManager2 === void 0 ? void 0 : _this$downloadManager2.openOrDownloadData(this.container, this.content, this.filename);\\n }\\n }\\n e.AnnotationLayer = (_re2 = /*#__PURE__*/new WeakMap(), _an = /*#__PURE__*/new WeakMap(), _on = /*#__PURE__*/new WeakMap(), _ln = /*#__PURE__*/new WeakSet(), _cn = /*#__PURE__*/new WeakSet(), class AnnotationLayer {\\n constructor(_t16) {\\n _classPrivateMethodInitSpec(this, _cn);\\n _classPrivateMethodInitSpec(this, _ln);\\n _classPrivateFieldInitSpec(this, _re2, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _an, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _on, {\\n writable: true,\\n value: new Map()\\n });\\n let {\\n div: _e14,\\n accessibilityManager: _n8,\\n annotationCanvasMap: _i5,\\n l10n: _r5,\\n page: s,\\n viewport: a\\n } = _t16;\\n this.div = _e14;\\n _classPrivateFieldSet(this, _re2, _n8);\\n _classPrivateFieldSet(this, _an, _i5);\\n this.l10n = _r5;\\n this.page = s;\\n this.viewport = a;\\n this.zIndex = 0;\\n this.l10n || (this.l10n = o.NullL10n);\\n }\\n async render(t) {\\n const {\\n annotations: e\\n } = t,\\n n = this.div;\\n (0, r.setLayerDimensions)(n, this.viewport);\\n const a = new Map(),\\n o = {\\n data: null,\\n layer: n,\\n linkService: t.linkService,\\n downloadManager: t.downloadManager,\\n imageResourcesPath: t.imageResourcesPath || \\"\\",\\n renderForms: !1 !== t.renderForms,\\n svgFactory: new r.DOMSVGFactory(),\\n annotationStorage: t.annotationStorage || new s.AnnotationStorage(),\\n enableScripting: !0 === t.enableScripting,\\n hasJSActions: t.hasJSActions,\\n fieldObjects: t.fieldObjects,\\n parent: this,\\n elements: null\\n };\\n for (const t of e) {\\n if (t.noHTML) continue;\\n const e = t.annotationType === i.AnnotationType.POPUP;\\n if (e) {\\n const e = a.get(t.id);\\n if (!e) continue;\\n o.elements = e;\\n } else {\\n const {\\n width: e,\\n height: n\\n } = getRectDims(t.rect);\\n if (e <= 0 || n <= 0) continue;\\n }\\n o.data = t;\\n const n = AnnotationElementFactory.create(o);\\n if (!n.isRenderable) continue;\\n if (!e && t.popupRef) {\\n const e = a.get(t.popupRef);\\n e ? e.push(n) : a.set(t.popupRef, [n]);\\n }\\n n.annotationEditorType > 0 && _classPrivateFieldGet(this, _on).set(n.data.id, n);\\n const r = n.render();\\n t.hidden && (r.style.visibility = \\"hidden\\");\\n _classPrivateMethodGet(this, _ln, _ln2).call(this, r, t.id);\\n }\\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\\n await this.l10n.translate(n);\\n }\\n update(t) {\\n let {\\n viewport: e\\n } = t;\\n const n = this.div;\\n this.viewport = e;\\n (0, r.setLayerDimensions)(n, {\\n rotation: e.rotation\\n });\\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\\n n.hidden = !1;\\n }\\n getEditableAnnotations() {\\n return Array.from(_classPrivateFieldGet(this, _on).values());\\n }\\n getEditableAnnotation(t) {\\n return _classPrivateFieldGet(this, _on).get(t);\\n }\\n });\\n function _ln2(t, e) {\\n var _classPrivateFieldGet14;\\n const n = t.firstChild || t;\\n n.id = \\"\\".concat(r.AnnotationPrefix).concat(e);\\n this.div.append(t);\\n (_classPrivateFieldGet14 = _classPrivateFieldGet(this, _re2)) === null || _classPrivateFieldGet14 === void 0 ? void 0 : _classPrivateFieldGet14.moveElementInDOM(this.div, t, n, !1);\\n }\\n function _cn2() {\\n if (!_classPrivateFieldGet(this, _an)) return;\\n const t = this.div;\\n for (const [e, n] of _classPrivateFieldGet(this, _an)) {\\n const i = t.querySelector(\\"[data-annotation-id=\\\\\\"\\".concat(e, \\"\\\\\\"]\\"));\\n if (!i) continue;\\n const {\\n firstChild: r\\n } = i;\\n r ? \\"CANVAS\\" === r.nodeName ? r.replaceWith(n) : r.before(n) : i.append(n);\\n }\\n _classPrivateFieldGet(this, _an).clear();\\n }\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.ColorConverters = void 0;\\n function makeColorComp(t) {\\n return Math.floor(255 * Math.max(0, Math.min(1, t))).toString(16).padStart(2, \\"0\\");\\n }\\n e.ColorConverters = class ColorConverters {\\n static CMYK_G(t) {\\n let [e, n, i, r] = t;\\n return [\\"G\\", 1 - Math.min(1, .3 * e + .59 * i + .11 * n + r)];\\n }\\n static G_CMYK(t) {\\n let [e] = t;\\n return [\\"CMYK\\", 0, 0, 0, 1 - e];\\n }\\n static G_RGB(t) {\\n let [e] = t;\\n return [\\"RGB\\", e, e, e];\\n }\\n static G_HTML(t) {\\n let [e] = t;\\n const n = makeColorComp(e);\\n return \\"#\\".concat(n).concat(n).concat(n);\\n }\\n static RGB_G(t) {\\n let [e, n, i] = t;\\n return [\\"G\\", .3 * e + .59 * n + .11 * i];\\n }\\n static RGB_HTML(t) {\\n let [e, n, i] = t;\\n return \\"#\\".concat(makeColorComp(e)).concat(makeColorComp(n)).concat(makeColorComp(i));\\n }\\n static T_HTML() {\\n return \\"#00000000\\";\\n }\\n static CMYK_RGB(t) {\\n let [e, n, i, r] = t;\\n return [\\"RGB\\", 1 - Math.min(1, e + r), 1 - Math.min(1, i + r), 1 - Math.min(1, n + r)];\\n }\\n static CMYK_HTML(t) {\\n const e = this.CMYK_RGB(t).slice(1);\\n return this.RGB_HTML(e);\\n }\\n static RGB_CMYK(t) {\\n let [e, n, i] = t;\\n const r = 1 - e,\\n s = 1 - n,\\n a = 1 - i;\\n return [\\"CMYK\\", r, s, a, Math.min(r, s, a)];\\n }\\n };\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.NullL10n = void 0;\\n e.getL10nFallback = getL10nFallback;\\n const n = {\\n of_pages: \\"of {{pagesCount}}\\",\\n page_of_pages: \\"({{pageNumber}} of {{pagesCount}})\\",\\n document_properties_kb: \\"{{size_kb}} KB ({{size_b}} bytes)\\",\\n document_properties_mb: \\"{{size_mb}} MB ({{size_b}} bytes)\\",\\n document_properties_date_string: \\"{{date}}, {{time}}\\",\\n document_properties_page_size_unit_inches: \\"in\\",\\n document_properties_page_size_unit_millimeters: \\"mm\\",\\n document_properties_page_size_orientation_portrait: \\"portrait\\",\\n document_properties_page_size_orientation_landscape: \\"landscape\\",\\n document_properties_page_size_name_a3: \\"A3\\",\\n document_properties_page_size_name_a4: \\"A4\\",\\n document_properties_page_size_name_letter: \\"Letter\\",\\n document_properties_page_size_name_legal: \\"Legal\\",\\n document_properties_page_size_dimension_string: \\"{{width}} × {{height}} {{unit}} ({{orientation}})\\",\\n document_properties_page_size_dimension_name_string: \\"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\\",\\n document_properties_linearized_yes: \\"Yes\\",\\n document_properties_linearized_no: \\"No\\",\\n additional_layers: \\"Additional Layers\\",\\n page_landmark: \\"Page {{page}}\\",\\n thumb_page_title: \\"Page {{page}}\\",\\n thumb_page_canvas: \\"Thumbnail of Page {{page}}\\",\\n find_reached_top: \\"Reached top of document, continued from bottom\\",\\n find_reached_bottom: \\"Reached end of document, continued from top\\",\\n \\"find_match_count[one]\\": \\"{{current}} of {{total}} match\\",\\n \\"find_match_count[other]\\": \\"{{current}} of {{total}} matches\\",\\n \\"find_match_count_limit[one]\\": \\"More than {{limit}} match\\",\\n \\"find_match_count_limit[other]\\": \\"More than {{limit}} matches\\",\\n find_not_found: \\"Phrase not found\\",\\n page_scale_width: \\"Page Width\\",\\n page_scale_fit: \\"Page Fit\\",\\n page_scale_auto: \\"Automatic Zoom\\",\\n page_scale_actual: \\"Actual Size\\",\\n page_scale_percent: \\"{{scale}}%\\",\\n loading_error: \\"An error occurred while loading the PDF.\\",\\n invalid_file_error: \\"Invalid or corrupted PDF file.\\",\\n missing_file_error: \\"Missing PDF file.\\",\\n unexpected_response_error: \\"Unexpected server response.\\",\\n rendering_error: \\"An error occurred while rendering the page.\\",\\n annotation_date_string: \\"{{date}}, {{time}}\\",\\n printing_not_supported: \\"Warning: Printing is not fully supported by this browser.\\",\\n printing_not_ready: \\"Warning: The PDF is not fully loaded for printing.\\",\\n web_fonts_disabled: \\"Web fonts are disabled: unable to use embedded PDF fonts.\\",\\n free_text2_default_content: \\"Start typing…\\",\\n editor_free_text2_aria_label: \\"Text Editor\\",\\n editor_ink2_aria_label: \\"Draw Editor\\",\\n editor_ink_canvas_aria_label: \\"User-created image\\",\\n print_progress_percent: \\"{{progress}}%\\"\\n };\\n function getL10nFallback(t, e) {\\n switch (t) {\\n case \\"find_match_count\\":\\n t = \\"find_match_count[\\".concat(1 === e.total ? \\"one\\" : \\"other\\", \\"]\\");\\n break;\\n case \\"find_match_count_limit\\":\\n t = \\"find_match_count_limit[\\".concat(1 === e.limit ? \\"one\\" : \\"other\\", \\"]\\");\\n }\\n return n[t] || \\"\\";\\n }\\n const i = {\\n getLanguage: async () => \\"en-us\\",\\n getDirection: async () => \\"ltr\\",\\n async get(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return function formatL10nValue(t, e) {\\n return e ? t.replaceAll(/\\\\{\\\\{\\\\s*(\\\\w+)\\\\s*\\\\}\\\\}/g, (t, n) => n in e ? e[n] : \\"{{\\" + n + \\"}}\\") : t;\\n }(arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : getL10nFallback(t, e), e);\\n },\\n async translate(t) {}\\n };\\n e.NullL10n = i;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.XfaLayer = void 0;\\n n(89);\\n var i = n(193);\\n e.XfaLayer = class XfaLayer {\\n static setupStorage(t, e, n, i, r) {\\n const s = i.getValue(e, {\\n value: null\\n });\\n switch (n.name) {\\n case \\"textarea\\":\\n null !== s.value && (t.textContent = s.value);\\n if (\\"print\\" === r) break;\\n t.addEventListener(\\"input\\", t => {\\n i.setValue(e, {\\n value: t.target.value\\n });\\n });\\n break;\\n case \\"input\\":\\n if (\\"radio\\" === n.attributes.type || \\"checkbox\\" === n.attributes.type) {\\n s.value === n.attributes.xfaOn ? t.setAttribute(\\"checked\\", !0) : s.value === n.attributes.xfaOff && t.removeAttribute(\\"checked\\");\\n if (\\"print\\" === r) break;\\n t.addEventListener(\\"change\\", t => {\\n i.setValue(e, {\\n value: t.target.checked ? t.target.getAttribute(\\"xfaOn\\") : t.target.getAttribute(\\"xfaOff\\")\\n });\\n });\\n } else {\\n null !== s.value && t.setAttribute(\\"value\\", s.value);\\n if (\\"print\\" === r) break;\\n t.addEventListener(\\"input\\", t => {\\n i.setValue(e, {\\n value: t.target.value\\n });\\n });\\n }\\n break;\\n case \\"select\\":\\n if (null !== s.value) {\\n t.setAttribute(\\"value\\", s.value);\\n for (const t of n.children) t.attributes.value === s.value ? t.attributes.selected = !0 : t.attributes.hasOwnProperty(\\"selected\\") && delete t.attributes.selected;\\n }\\n t.addEventListener(\\"input\\", t => {\\n const n = t.target.options,\\n r = -1 === n.selectedIndex ? \\"\\" : n[n.selectedIndex].value;\\n i.setValue(e, {\\n value: r\\n });\\n });\\n }\\n }\\n static setAttributes(t) {\\n let {\\n html: e,\\n element: n,\\n storage: i = null,\\n intent: r,\\n linkService: s\\n } = t;\\n const {\\n attributes: a\\n } = n,\\n o = e instanceof HTMLAnchorElement;\\n \\"radio\\" === a.type && (a.name = \\"\\".concat(a.name, \\"-\\").concat(r));\\n for (const [t, n] of Object.entries(a)) if (null != n) switch (t) {\\n case \\"class\\":\\n n.length && e.setAttribute(t, n.join(\\" \\"));\\n break;\\n case \\"dataId\\":\\n break;\\n case \\"id\\":\\n e.setAttribute(\\"data-element-id\\", n);\\n break;\\n case \\"style\\":\\n Object.assign(e.style, n);\\n break;\\n case \\"textContent\\":\\n e.textContent = n;\\n break;\\n default:\\n (!o || \\"href\\" !== t && \\"newWindow\\" !== t) && e.setAttribute(t, n);\\n }\\n o && s.addLinkAttributes(e, a.href, a.newWindow);\\n i && a.dataId && this.setupStorage(e, a.dataId, n, i);\\n }\\n static render(t) {\\n const e = t.annotationStorage,\\n n = t.linkService,\\n r = t.xfaHtml,\\n s = t.intent || \\"display\\",\\n a = document.createElement(r.name);\\n r.attributes && this.setAttributes({\\n html: a,\\n element: r,\\n intent: s,\\n linkService: n\\n });\\n const o = [[r, -1, a]],\\n l = t.div;\\n l.append(a);\\n if (t.viewport) {\\n const e = \\"matrix(\\".concat(t.viewport.transform.join(\\",\\"), \\")\\");\\n l.style.transform = e;\\n }\\n \\"richText\\" !== s && l.setAttribute(\\"class\\", \\"xfaLayer xfaFont\\");\\n const c = [];\\n for (; o.length > 0;) {\\n var _l$attributes;\\n const [t, r, a] = o.at(-1);\\n if (r + 1 === t.children.length) {\\n o.pop();\\n continue;\\n }\\n const l = t.children[++o.at(-1)[1]];\\n if (null === l) continue;\\n const {\\n name: h\\n } = l;\\n if (\\"#text\\" === h) {\\n const t = document.createTextNode(l.value);\\n c.push(t);\\n a.append(t);\\n continue;\\n }\\n const d = l !== null && l !== void 0 && (_l$attributes = l.attributes) !== null && _l$attributes !== void 0 && _l$attributes.xmlns ? document.createElementNS(l.attributes.xmlns, h) : document.createElement(h);\\n a.append(d);\\n l.attributes && this.setAttributes({\\n html: d,\\n element: l,\\n storage: e,\\n intent: s,\\n linkService: n\\n });\\n if (l.children && l.children.length > 0) o.push([l, -1, d]);else if (l.value) {\\n const t = document.createTextNode(l.value);\\n i.XfaText.shouldBuildText(h) && c.push(t);\\n d.append(t);\\n }\\n }\\n for (const t of l.querySelectorAll(\\".xfaNonInteractive input, .xfaNonInteractive textarea\\")) t.setAttribute(\\"readOnly\\", !0);\\n return {\\n textDivs: c\\n };\\n }\\n static update(t) {\\n const e = \\"matrix(\\".concat(t.viewport.transform.join(\\",\\"), \\")\\");\\n t.div.style.transform = e;\\n t.div.hidden = !1;\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class41;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.InkEditor = void 0;\\n n(89);\\n n(2);\\n var i = n(1),\\n r = n(163),\\n s = n(197),\\n a = n(164);\\n var _hn = /*#__PURE__*/new WeakMap();\\n var _dn = /*#__PURE__*/new WeakMap();\\n var _un = /*#__PURE__*/new WeakMap();\\n var _pn = /*#__PURE__*/new WeakMap();\\n var _fn = /*#__PURE__*/new WeakMap();\\n var _gn = /*#__PURE__*/new WeakMap();\\n var _mn = /*#__PURE__*/new WeakMap();\\n var _bn = /*#__PURE__*/new WeakMap();\\n var _vn = /*#__PURE__*/new WeakMap();\\n var _yn = /*#__PURE__*/new WeakMap();\\n var _An = /*#__PURE__*/new WeakMap();\\n var _n9 = /*#__PURE__*/new WeakMap();\\n var _Sn = /*#__PURE__*/new WeakMap();\\n var _En = /*#__PURE__*/new WeakMap();\\n var _xn = /*#__PURE__*/new WeakMap();\\n var _wn = /*#__PURE__*/new WeakSet();\\n var _Pe3 = /*#__PURE__*/new WeakSet();\\n var _Cn = /*#__PURE__*/new WeakSet();\\n var _Fn = /*#__PURE__*/new WeakSet();\\n var _In = /*#__PURE__*/new WeakSet();\\n var _Dn = /*#__PURE__*/new WeakSet();\\n var _Ln = /*#__PURE__*/new WeakSet();\\n var _Bn = /*#__PURE__*/new WeakSet();\\n var _jn = /*#__PURE__*/new WeakSet();\\n var _On = /*#__PURE__*/new WeakSet();\\n var _Nn = /*#__PURE__*/new WeakSet();\\n var _Un = /*#__PURE__*/new WeakSet();\\n var _Pn = /*#__PURE__*/new WeakSet();\\n var _Hn = /*#__PURE__*/new WeakSet();\\n var _kn = /*#__PURE__*/new WeakSet();\\n var _Mn = /*#__PURE__*/new WeakSet();\\n var _Rn = /*#__PURE__*/new WeakSet();\\n var _qn = /*#__PURE__*/new WeakSet();\\n var _zn = /*#__PURE__*/new WeakSet();\\n var _Xn = /*#__PURE__*/new WeakSet();\\n var _Kn = /*#__PURE__*/new WeakSet();\\n var _Wn = /*#__PURE__*/new WeakSet();\\n var _Tn = /*#__PURE__*/new WeakSet();\\n class InkEditor extends r.AnnotationEditor {\\n constructor(_t17) {\\n super(_objectSpread(_objectSpread({}, _t17), {}, {\\n name: \\"inkEditor\\"\\n }));\\n _classPrivateMethodInitSpec(this, _Tn);\\n _classPrivateMethodInitSpec(this, _Wn);\\n _classPrivateMethodInitSpec(this, _Kn);\\n _classPrivateMethodInitSpec(this, _Xn);\\n _classPrivateMethodInitSpec(this, _zn);\\n _classPrivateMethodInitSpec(this, _qn);\\n _classPrivateMethodInitSpec(this, _Rn);\\n _classPrivateMethodInitSpec(this, _Mn);\\n _classPrivateMethodInitSpec(this, _kn);\\n _classPrivateMethodInitSpec(this, _Hn);\\n _classPrivateMethodInitSpec(this, _Pn);\\n _classPrivateMethodInitSpec(this, _Un);\\n _classPrivateMethodInitSpec(this, _Nn);\\n _classPrivateMethodInitSpec(this, _On);\\n _classPrivateMethodInitSpec(this, _jn);\\n _classPrivateMethodInitSpec(this, _Bn);\\n _classPrivateMethodInitSpec(this, _Ln);\\n _classPrivateMethodInitSpec(this, _Dn);\\n _classPrivateMethodInitSpec(this, _In);\\n _classPrivateMethodInitSpec(this, _Fn);\\n _classPrivateMethodInitSpec(this, _Cn);\\n _classPrivateMethodInitSpec(this, _Pe3);\\n _classPrivateMethodInitSpec(this, _wn);\\n _classPrivateFieldInitSpec(this, _hn, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _dn, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _un, {\\n writable: true,\\n value: this.canvasContextMenu.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _pn, {\\n writable: true,\\n value: this.canvasPointermove.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _fn, {\\n writable: true,\\n value: this.canvasPointerleave.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _gn, {\\n writable: true,\\n value: this.canvasPointerup.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _mn, {\\n writable: true,\\n value: this.canvasPointerdown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _bn, {\\n writable: true,\\n value: new Path2D()\\n });\\n _classPrivateFieldInitSpec(this, _vn, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _yn, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _An, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _n9, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Sn, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _En, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _xn, {\\n writable: true,\\n value: null\\n });\\n this.color = _t17.color || null;\\n this.thickness = _t17.thickness || null;\\n this.opacity = _t17.opacity || null;\\n this.paths = [];\\n this.bezierPath2D = [];\\n this.allRawPaths = [];\\n this.currentPath = [];\\n this.scaleFactor = 1;\\n this.translationX = this.translationY = 0;\\n this.x = 0;\\n this.y = 0;\\n this._willKeepAspectRatio = !0;\\n }\\n static initialize(t) {\\n this._l10nPromise = new Map([\\"editor_ink_canvas_aria_label\\", \\"editor_ink2_aria_label\\"].map(e => [e, t.get(e)]));\\n }\\n static updateDefaultParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.INK_THICKNESS:\\n InkEditor._defaultThickness = e;\\n break;\\n case i.AnnotationEditorParamsType.INK_COLOR:\\n InkEditor._defaultColor = e;\\n break;\\n case i.AnnotationEditorParamsType.INK_OPACITY:\\n InkEditor._defaultOpacity = e / 100;\\n }\\n }\\n updateParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.INK_THICKNESS:\\n _classPrivateMethodGet(this, _wn, _wn2).call(this, e);\\n break;\\n case i.AnnotationEditorParamsType.INK_COLOR:\\n _classPrivateMethodGet(this, _Pe3, _Pe4).call(this, e);\\n break;\\n case i.AnnotationEditorParamsType.INK_OPACITY:\\n _classPrivateMethodGet(this, _Cn, _Cn2).call(this, e);\\n }\\n }\\n static get defaultPropertiesToUpdate() {\\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * InkEditor._defaultOpacity)]];\\n }\\n get propertiesToUpdate() {\\n var _this$opacity;\\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * ((_this$opacity = this.opacity) !== null && _this$opacity !== void 0 ? _this$opacity : InkEditor._defaultOpacity))]];\\n }\\n rebuild() {\\n super.rebuild();\\n if (null !== this.div) {\\n if (!this.canvas) {\\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\\n }\\n if (!this.isAttachedToDOM) {\\n this.parent.add(this);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n }\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n }\\n }\\n remove() {\\n if (null !== this.canvas) {\\n this.isEmpty() || this.commit();\\n this.canvas.width = this.canvas.height = 0;\\n this.canvas.remove();\\n this.canvas = null;\\n _classPrivateFieldGet(this, _n9).disconnect();\\n _classPrivateFieldSet(this, _n9, null);\\n super.remove();\\n }\\n }\\n setParent(t) {\\n !this.parent && t ? this._uiManager.removeShouldRescale(this) : this.parent && null === t && this._uiManager.addShouldRescale(this);\\n super.setParent(t);\\n }\\n onScaleChanging() {\\n const [t, e] = this.parentDimensions,\\n n = this.width * t,\\n i = this.height * e;\\n this.setDimensions(n, i);\\n }\\n enableEditMode() {\\n if (!_classPrivateFieldGet(this, _vn) && null !== this.canvas) {\\n super.enableEditMode();\\n this.div.draggable = !1;\\n this.canvas.addEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n }\\n }\\n disableEditMode() {\\n if (this.isInEditMode() && null !== this.canvas) {\\n super.disableEditMode();\\n this.div.draggable = !this.isEmpty();\\n this.div.classList.remove(\\"editing\\");\\n this.canvas.removeEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n }\\n }\\n onceAdded() {\\n this.div.draggable = !this.isEmpty();\\n }\\n isEmpty() {\\n return 0 === this.paths.length || 1 === this.paths.length && 0 === this.paths[0].length;\\n }\\n commit() {\\n if (!_classPrivateFieldGet(this, _vn)) {\\n super.commit();\\n this.isEditing = !1;\\n this.disableEditMode();\\n this.setInForeground();\\n _classPrivateFieldSet(this, _vn, !0);\\n this.div.classList.add(\\"disabled\\");\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this, !0);\\n this.makeResizable();\\n this.parent.addInkEditorIfNeeded(!0);\\n this.parent.moveEditorInDOM(this);\\n this.div.focus({\\n preventScroll: !0\\n });\\n }\\n }\\n focusin(t) {\\n super.focusin(t);\\n this.enableEditMode();\\n }\\n canvasPointerdown(t) {\\n if (0 === t.button && this.isInEditMode() && !_classPrivateFieldGet(this, _vn)) {\\n this.setInForeground();\\n t.preventDefault();\\n \\"mouse\\" !== t.type && this.div.focus();\\n _classPrivateMethodGet(this, _Dn, _Dn2).call(this, t.offsetX, t.offsetY);\\n }\\n }\\n canvasContextMenu(t) {\\n t.preventDefault();\\n }\\n canvasPointermove(t) {\\n t.preventDefault();\\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t.offsetX, t.offsetY);\\n }\\n canvasPointerup(t) {\\n t.preventDefault();\\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\\n }\\n canvasPointerleave(t) {\\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\\n }\\n get isResizable() {\\n return !this.isEmpty() && _classPrivateFieldGet(this, _vn);\\n }\\n render() {\\n if (this.div) return this.div;\\n let t, e;\\n if (this.width) {\\n t = this.x;\\n e = this.y;\\n }\\n super.render();\\n InkEditor._l10nPromise.get(\\"editor_ink2_aria_label\\").then(t => {\\n var _this$div6;\\n return (_this$div6 = this.div) === null || _this$div6 === void 0 ? void 0 : _this$div6.setAttribute(\\"aria-label\\", t);\\n });\\n const [n, i, r, s] = _classPrivateMethodGet(this, _Fn, _Fn2).call(this);\\n this.setAt(n, i, 0, 0);\\n this.setDims(r, s);\\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\\n if (this.width) {\\n const [n, i] = this.parentDimensions;\\n this.setAspectRatio(this.width * n, this.height * i);\\n this.setAt(t * n, e * i, this.width * n, this.height * i);\\n _classPrivateFieldSet(this, _An, !0);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n this.setDims(this.width * n, this.height * i);\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n this.div.classList.add(\\"disabled\\");\\n } else {\\n this.div.classList.add(\\"editing\\");\\n this.enableEditMode();\\n }\\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\\n return this.div;\\n }\\n setDimensions(t, e) {\\n const n = Math.round(t),\\n i = Math.round(e);\\n if (_classPrivateFieldGet(this, _Sn) === n && _classPrivateFieldGet(this, _En) === i) return;\\n _classPrivateFieldSet(this, _Sn, n);\\n _classPrivateFieldSet(this, _En, i);\\n this.canvas.style.visibility = \\"hidden\\";\\n const [r, s] = this.parentDimensions;\\n this.width = t / r;\\n this.height = e / s;\\n this.fixAndSetPosition();\\n _classPrivateFieldGet(this, _vn) && _classPrivateMethodGet(this, _qn, _qn2).call(this, t, e);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n this.canvas.style.visibility = \\"visible\\";\\n this.fixDims();\\n }\\n static deserialize(t, e, n) {\\n if (t instanceof s.InkAnnotationElement) return null;\\n const a = super.deserialize(t, e, n);\\n a.thickness = t.thickness;\\n a.color = i.Util.makeHexColor(...t.color);\\n a.opacity = t.opacity;\\n const [o, l] = a.pageDimensions,\\n c = a.width * o,\\n h = a.height * l,\\n d = a.parentScale,\\n u = t.thickness / 2;\\n _classPrivateFieldSet(a, _vn, !0);\\n _classPrivateFieldSet(a, _Sn, Math.round(c));\\n _classPrivateFieldSet(a, _En, Math.round(h));\\n const {\\n paths: p,\\n rect: f,\\n rotation: g\\n } = t;\\n for (let {\\n bezier: t\\n } of p) {\\n t = _classStaticPrivateMethodGet(InkEditor, InkEditor, _$n).call(InkEditor, t, f, g);\\n const e = [];\\n a.paths.push(e);\\n let n = d * (t[0] - u),\\n i = d * (t[1] - u);\\n for (let r = 2, s = t.length; r < s; r += 6) {\\n const s = d * (t[r] - u),\\n a = d * (t[r + 1] - u),\\n o = d * (t[r + 2] - u),\\n l = d * (t[r + 3] - u),\\n c = d * (t[r + 4] - u),\\n h = d * (t[r + 5] - u);\\n e.push([[n, i], [s, a], [o, l], [c, h]]);\\n n = c;\\n i = h;\\n }\\n const r = _classStaticPrivateMethodGet(this, InkEditor, _Gn).call(this, e);\\n a.bezierPath2D.push(r);\\n }\\n const m = _classPrivateMethodGet(a, _Kn, _Kn2).call(a);\\n _classPrivateFieldSet(a, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, m[2] - m[0]));\\n _classPrivateFieldSet(a, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, m[3] - m[1]));\\n _classPrivateMethodGet(a, _qn, _qn2).call(a, c, h);\\n return a;\\n }\\n serialize() {\\n if (this.isEmpty()) return null;\\n const t = this.getRect(0, 0),\\n e = r.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\\n return {\\n annotationType: i.AnnotationEditorType.INK,\\n color: e,\\n thickness: this.thickness,\\n opacity: this.opacity,\\n paths: _classPrivateMethodGet(this, _Xn, _Xn2).call(this, this.scaleFactor / this.parentScale, this.translationX, this.translationY, t),\\n pageIndex: this.pageIndex,\\n rect: t,\\n rotation: this.rotation\\n };\\n }\\n }\\n _class41 = InkEditor;\\n function _wn2(t) {\\n const e = this.thickness;\\n this.addCommands({\\n cmd: () => {\\n this.thickness = t;\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n },\\n undo: () => {\\n this.thickness = e;\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.INK_THICKNESS,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Pe4(t) {\\n const e = this.color;\\n this.addCommands({\\n cmd: () => {\\n this.color = t;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n undo: () => {\\n this.color = e;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.INK_COLOR,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Cn2(t) {\\n t /= 100;\\n const e = this.opacity;\\n this.addCommands({\\n cmd: () => {\\n this.opacity = t;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n undo: () => {\\n this.opacity = e;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.INK_OPACITY,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Fn2() {\\n const {\\n parentRotation: t,\\n parentDimensions: [e, n]\\n } = this;\\n switch (t) {\\n case 90:\\n return [0, n, n, e];\\n case 180:\\n return [e, n, e, n];\\n case 270:\\n return [e, 0, n, e];\\n default:\\n return [0, 0, e, n];\\n }\\n }\\n function _In2() {\\n const {\\n ctx: t,\\n color: e,\\n opacity: n,\\n thickness: i,\\n parentScale: r,\\n scaleFactor: s\\n } = this;\\n t.lineWidth = i * r / s;\\n t.lineCap = \\"round\\";\\n t.lineJoin = \\"round\\";\\n t.miterLimit = 10;\\n t.strokeStyle = \\"\\".concat(e).concat((0, a.opacityToHex)(n));\\n }\\n function _Dn2(t, e) {\\n this.canvas.addEventListener(\\"contextmenu\\", _classPrivateFieldGet(this, _un));\\n this.canvas.addEventListener(\\"pointerleave\\", _classPrivateFieldGet(this, _fn));\\n this.canvas.addEventListener(\\"pointermove\\", _classPrivateFieldGet(this, _pn));\\n this.canvas.addEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _gn));\\n this.canvas.removeEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n this.isEditing = !0;\\n if (!_classPrivateFieldGet(this, _An)) {\\n var _this$opacity2;\\n _classPrivateFieldSet(this, _An, !0);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n this.thickness || (this.thickness = _class41._defaultThickness);\\n this.color || (this.color = _class41._defaultColor || r.AnnotationEditor._defaultLineColor);\\n (_this$opacity2 = this.opacity) !== null && _this$opacity2 !== void 0 ? _this$opacity2 : this.opacity = _class41._defaultOpacity;\\n }\\n this.currentPath.push([t, e]);\\n _classPrivateFieldSet(this, _yn, !1);\\n _classPrivateMethodGet(this, _In, _In2).call(this);\\n _classPrivateFieldSet(this, _xn, () => {\\n _classPrivateMethodGet(this, _On, _On2).call(this);\\n _classPrivateFieldGet(this, _xn) && window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\\n });\\n window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\\n }\\n function _Ln2(t, e) {\\n const [n, i] = this.currentPath.at(-1);\\n if (this.currentPath.length > 1 && t === n && e === i) return;\\n const r = this.currentPath;\\n let s = _classPrivateFieldGet(this, _bn);\\n r.push([t, e]);\\n _classPrivateFieldSet(this, _yn, !0);\\n if (r.length <= 2) {\\n s.moveTo(...r[0]);\\n s.lineTo(t, e);\\n } else {\\n if (3 === r.length) {\\n _classPrivateFieldSet(this, _bn, s = new Path2D());\\n s.moveTo(...r[0]);\\n }\\n _classPrivateMethodGet(this, _Nn, _Nn2).call(this, s, ...r.at(-3), ...r.at(-2), t, e);\\n }\\n }\\n function _Bn2() {\\n if (0 === this.currentPath.length) return;\\n const t = this.currentPath.at(-1);\\n _classPrivateFieldGet(this, _bn).lineTo(...t);\\n }\\n function _jn2(t, e) {\\n _classPrivateFieldSet(this, _xn, null);\\n t = Math.min(Math.max(t, 0), this.canvas.width);\\n e = Math.min(Math.max(e, 0), this.canvas.height);\\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t, e);\\n _classPrivateMethodGet(this, _Bn, _Bn2).call(this);\\n let n;\\n if (1 !== this.currentPath.length) n = _classPrivateMethodGet(this, _Un, _Un2).call(this);else {\\n const i = [t, e];\\n n = [[i, i.slice(), i.slice(), i]];\\n }\\n const i = _classPrivateFieldGet(this, _bn),\\n r = this.currentPath;\\n this.currentPath = [];\\n _classPrivateFieldSet(this, _bn, new Path2D());\\n this.addCommands({\\n cmd: () => {\\n this.allRawPaths.push(r);\\n this.paths.push(n);\\n this.bezierPath2D.push(i);\\n this.rebuild();\\n },\\n undo: () => {\\n this.allRawPaths.pop();\\n this.paths.pop();\\n this.bezierPath2D.pop();\\n if (0 === this.paths.length) this.remove();else {\\n if (!this.canvas) {\\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\\n }\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n }\\n },\\n mustExec: !0\\n });\\n }\\n function _On2() {\\n if (!_classPrivateFieldGet(this, _yn)) return;\\n _classPrivateFieldSet(this, _yn, !1);\\n const t = Math.ceil(this.thickness * this.parentScale),\\n e = this.currentPath.slice(-3),\\n n = e.map(t => t[0]),\\n i = e.map(t => t[1]),\\n {\\n ctx: r\\n } = (Math.min(...n), Math.max(...n), Math.min(...i), Math.max(...i), this);\\n r.save();\\n r.clearRect(0, 0, this.canvas.width, this.canvas.height);\\n for (const t of this.bezierPath2D) r.stroke(t);\\n r.stroke(_classPrivateFieldGet(this, _bn));\\n r.restore();\\n }\\n function _Nn2(t, e, n, i, r, s, a) {\\n const o = (e + i) / 2,\\n l = (n + r) / 2,\\n c = (i + s) / 2,\\n h = (r + a) / 2;\\n t.bezierCurveTo(o + 2 * (i - o) / 3, l + 2 * (r - l) / 3, c + 2 * (i - c) / 3, h + 2 * (r - h) / 3, c, h);\\n }\\n function _Un2() {\\n const t = this.currentPath;\\n if (t.length <= 2) return [[t[0], t[0], t.at(-1), t.at(-1)]];\\n const e = [];\\n let n,\\n [i, r] = t[0];\\n for (n = 1; n < t.length - 2; n++) {\\n const [s, a] = t[n],\\n [o, l] = t[n + 1],\\n c = (s + o) / 2,\\n h = (a + l) / 2,\\n d = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\\n u = [c + 2 * (s - c) / 3, h + 2 * (a - h) / 3];\\n e.push([[i, r], d, u, [c, h]]);\\n [i, r] = [c, h];\\n }\\n const [s, a] = t[n],\\n [o, l] = t[n + 1],\\n c = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\\n h = [o + 2 * (s - o) / 3, l + 2 * (a - l) / 3];\\n e.push([[i, r], c, h, [o, l]]);\\n return e;\\n }\\n function _Pn2() {\\n if (this.isEmpty()) {\\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\\n return;\\n }\\n _classPrivateMethodGet(this, _In, _In2).call(this);\\n const {\\n canvas: t,\\n ctx: e\\n } = this;\\n e.setTransform(1, 0, 0, 1, 0, 0);\\n e.clearRect(0, 0, t.width, t.height);\\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\\n for (const t of this.bezierPath2D) e.stroke(t);\\n }\\n function _Hn2(t) {\\n this.canvas.removeEventListener(\\"pointerleave\\", _classPrivateFieldGet(this, _fn));\\n this.canvas.removeEventListener(\\"pointermove\\", _classPrivateFieldGet(this, _pn));\\n this.canvas.removeEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _gn));\\n this.canvas.addEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n setTimeout(() => {\\n this.canvas.removeEventListener(\\"contextmenu\\", _classPrivateFieldGet(this, _un));\\n }, 10);\\n _classPrivateMethodGet(this, _jn, _jn2).call(this, t.offsetX, t.offsetY);\\n this.addToAnnotationStorage();\\n this.setInBackground();\\n }\\n function _kn2() {\\n this.canvas = document.createElement(\\"canvas\\");\\n this.canvas.width = this.canvas.height = 0;\\n this.canvas.className = \\"inkEditorCanvas\\";\\n _class41._l10nPromise.get(\\"editor_ink_canvas_aria_label\\").then(t => {\\n var _this$canvas;\\n return (_this$canvas = this.canvas) === null || _this$canvas === void 0 ? void 0 : _this$canvas.setAttribute(\\"aria-label\\", t);\\n });\\n this.div.append(this.canvas);\\n this.ctx = this.canvas.getContext(\\"2d\\");\\n }\\n function _Mn2() {\\n _classPrivateFieldSet(this, _n9, new ResizeObserver(t => {\\n const e = t[0].contentRect;\\n e.width && e.height && this.setDimensions(e.width, e.height);\\n }));\\n _classPrivateFieldGet(this, _n9).observe(this.div);\\n }\\n function _Rn2() {\\n if (!_classPrivateFieldGet(this, _An)) return;\\n const [t, e] = this.parentDimensions;\\n this.canvas.width = Math.ceil(this.width * t);\\n this.canvas.height = Math.ceil(this.height * e);\\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\\n }\\n function _qn2(t, e) {\\n const n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this),\\n i = (t - n) / _classPrivateFieldGet(this, _dn),\\n r = (e - n) / _classPrivateFieldGet(this, _hn);\\n this.scaleFactor = Math.min(i, r);\\n }\\n function _zn2() {\\n const t = _classPrivateMethodGet(this, _Wn, _Wn2).call(this) / 2;\\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + t, this.translationY * this.scaleFactor + t);\\n }\\n function _Gn(t) {\\n const e = new Path2D();\\n for (let n = 0, i = t.length; n < i; n++) {\\n const [i, r, s, a] = t[n];\\n 0 === n && e.moveTo(...i);\\n e.bezierCurveTo(r[0], r[1], s[0], s[1], a[0], a[1]);\\n }\\n return e;\\n }\\n function _Vn(t, e, n) {\\n const [i, r, s, a] = e;\\n switch (n) {\\n case 0:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] += i;\\n t[e + 1] = a - t[e + 1];\\n }\\n break;\\n case 90:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = t[e + 1] + i;\\n t[e + 1] = n + r;\\n }\\n break;\\n case 180:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] = s - t[e];\\n t[e + 1] += r;\\n }\\n break;\\n case 270:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = s - t[e + 1];\\n t[e + 1] = a - n;\\n }\\n break;\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n return t;\\n }\\n function _$n(t, e, n) {\\n const [i, r, s, a] = e;\\n switch (n) {\\n case 0:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] -= i;\\n t[e + 1] = a - t[e + 1];\\n }\\n break;\\n case 90:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = t[e + 1] - r;\\n t[e + 1] = n - i;\\n }\\n break;\\n case 180:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] = s - t[e];\\n t[e + 1] -= r;\\n }\\n break;\\n case 270:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = a - t[e + 1];\\n t[e + 1] = s - n;\\n }\\n break;\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n return t;\\n }\\n function _Xn2(t, e, n, i) {\\n const r = [],\\n s = this.thickness / 2,\\n a = t * e + s,\\n o = t * n + s;\\n for (const e of this.paths) {\\n const n = [],\\n s = [];\\n for (let i = 0, r = e.length; i < r; i++) {\\n const [l, c, h, d] = e[i],\\n u = t * l[0] + a,\\n p = t * l[1] + o,\\n f = t * c[0] + a,\\n g = t * c[1] + o,\\n m = t * h[0] + a,\\n b = t * h[1] + o,\\n v = t * d[0] + a,\\n y = t * d[1] + o;\\n if (0 === i) {\\n n.push(u, p);\\n s.push(u, p);\\n }\\n n.push(f, g, m, b, v, y);\\n s.push(f, g);\\n i === r - 1 && s.push(v, y);\\n }\\n r.push({\\n bezier: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, n, i, this.rotation),\\n points: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, s, i, this.rotation)\\n });\\n }\\n return r;\\n }\\n function _Kn2() {\\n let t = 1 / 0,\\n e = -1 / 0,\\n n = 1 / 0,\\n r = -1 / 0;\\n for (const s of this.paths) for (const [a, o, l, c] of s) {\\n const s = i.Util.bezierBoundingBox(...a, ...o, ...l, ...c);\\n t = Math.min(t, s[0]);\\n n = Math.min(n, s[1]);\\n e = Math.max(e, s[2]);\\n r = Math.max(r, s[3]);\\n }\\n return [t, n, e, r];\\n }\\n function _Wn2() {\\n return _classPrivateFieldGet(this, _vn) ? Math.ceil(this.thickness * this.parentScale) : 0;\\n }\\n function _Tn2() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (this.isEmpty()) return;\\n if (!_classPrivateFieldGet(this, _vn)) {\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n return;\\n }\\n const e = _classPrivateMethodGet(this, _Kn, _Kn2).call(this),\\n n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this);\\n _classPrivateFieldSet(this, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, e[2] - e[0]));\\n _classPrivateFieldSet(this, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, e[3] - e[1]));\\n const i = Math.ceil(n + _classPrivateFieldGet(this, _dn) * this.scaleFactor),\\n s = Math.ceil(n + _classPrivateFieldGet(this, _hn) * this.scaleFactor),\\n [a, o] = this.parentDimensions;\\n this.width = i / a;\\n this.height = s / o;\\n this.setAspectRatio(i, s);\\n const l = this.translationX,\\n c = this.translationY;\\n this.translationX = -e[0];\\n this.translationY = -e[1];\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n _classPrivateFieldSet(this, _Sn, i);\\n _classPrivateFieldSet(this, _En, s);\\n this.setDims(i, s);\\n const h = t ? n / this.scaleFactor / 2 : 0;\\n this.translate(l - this.translationX - h, c - this.translationY - h);\\n }\\n _defineProperty(InkEditor, \\"_defaultColor\\", null);\\n _defineProperty(InkEditor, \\"_defaultOpacity\\", 1);\\n _defineProperty(InkEditor, \\"_defaultThickness\\", 1);\\n _defineProperty(InkEditor, \\"_l10nPromise\\", void 0);\\n _defineProperty(InkEditor, \\"_type\\", \\"ink\\");\\n e.InkEditor = InkEditor;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.StampEditor = void 0;\\n n(148);\\n n(151);\\n var i = n(163),\\n r = n(1),\\n s = n(167),\\n a = n(197);\\n var _Yn = /*#__PURE__*/new WeakMap();\\n var _Jn = /*#__PURE__*/new WeakMap();\\n var _Qn = /*#__PURE__*/new WeakMap();\\n var _Zn = /*#__PURE__*/new WeakMap();\\n var _ti = /*#__PURE__*/new WeakMap();\\n var _n10 = /*#__PURE__*/new WeakMap();\\n var _ei = /*#__PURE__*/new WeakMap();\\n var _ni = /*#__PURE__*/new WeakMap();\\n var _ii = /*#__PURE__*/new WeakSet();\\n var _kn3 = /*#__PURE__*/new WeakSet();\\n var _si = /*#__PURE__*/new WeakSet();\\n var _ai = /*#__PURE__*/new WeakSet();\\n var _ri = /*#__PURE__*/new WeakSet();\\n var _oi = /*#__PURE__*/new WeakSet();\\n var _Mn3 = /*#__PURE__*/new WeakSet();\\n class StampEditor extends i.AnnotationEditor {\\n constructor(_t18) {\\n super(_objectSpread(_objectSpread({}, _t18), {}, {\\n name: \\"stampEditor\\"\\n }));\\n _classPrivateMethodInitSpec(this, _Mn3);\\n _classPrivateMethodInitSpec(this, _oi);\\n _classPrivateMethodInitSpec(this, _ri);\\n _classPrivateMethodInitSpec(this, _ai);\\n _classPrivateMethodInitSpec(this, _si);\\n _classPrivateMethodInitSpec(this, _kn3);\\n _classPrivateMethodInitSpec(this, _ii);\\n _classPrivateFieldInitSpec(this, _Yn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Jn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Qn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Zn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ti, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _n10, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ei, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ni, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldSet(this, _Zn, _t18.bitmapUrl);\\n }\\n remove() {\\n if (_classPrivateFieldGet(this, _Jn)) {\\n var _classPrivateFieldGet15, _classPrivateFieldGet16;\\n _classPrivateFieldSet(this, _Yn, null);\\n this._uiManager.imageManager.deleteId(_classPrivateFieldGet(this, _Jn));\\n (_classPrivateFieldGet15 = _classPrivateFieldGet(this, _ti)) === null || _classPrivateFieldGet15 === void 0 ? void 0 : _classPrivateFieldGet15.remove();\\n _classPrivateFieldSet(this, _ti, null);\\n (_classPrivateFieldGet16 = _classPrivateFieldGet(this, _n10)) === null || _classPrivateFieldGet16 === void 0 ? void 0 : _classPrivateFieldGet16.disconnect();\\n _classPrivateFieldSet(this, _n10, null);\\n }\\n super.remove();\\n }\\n rebuild() {\\n super.rebuild();\\n if (null !== this.div) {\\n _classPrivateFieldGet(this, _Jn) && _classPrivateMethodGet(this, _ii, _ii2).call(this);\\n this.isAttachedToDOM || this.parent.add(this);\\n }\\n }\\n onceAdded() {\\n this.div.draggable = !0;\\n this.parent.addUndoableEditor(this);\\n this.div.focus();\\n }\\n isEmpty() {\\n return null === _classPrivateFieldGet(this, _Qn) && null === _classPrivateFieldGet(this, _Yn) && null === _classPrivateFieldGet(this, _Zn);\\n }\\n get isResizable() {\\n return !0;\\n }\\n render() {\\n if (this.div) return this.div;\\n let t, e;\\n if (this.width) {\\n t = this.x;\\n e = this.y;\\n }\\n super.render();\\n if (_classPrivateFieldGet(this, _Yn)) _classPrivateMethodGet(this, _kn3, _kn4).call(this);else {\\n this.div.classList.add(\\"loading\\");\\n _classPrivateMethodGet(this, _ii, _ii2).call(this);\\n }\\n if (this.width) {\\n const [n, i] = this.parentDimensions;\\n this.setAt(t * n, e * i, this.width * n, this.height * i);\\n }\\n return this.div;\\n }\\n static deserialize(t, e, n) {\\n if (t instanceof a.StampAnnotationElement) return null;\\n const i = super.deserialize(t, e, n),\\n {\\n rect: r,\\n bitmapUrl: s,\\n bitmapId: o,\\n isSvg: l\\n } = t;\\n o && n.imageManager.isValidId(o) ? _classPrivateFieldSet(i, _Jn, o) : _classPrivateFieldSet(i, _Zn, s);\\n _classPrivateFieldSet(i, _ni, l);\\n const [c, h] = i.pageDimensions;\\n i.width = (r[2] - r[0]) / c;\\n i.height = (r[3] - r[1]) / h;\\n return i;\\n }\\n serialize() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n if (this.isEmpty()) return null;\\n const n = {\\n annotationType: r.AnnotationEditorType.STAMP,\\n bitmapId: _classPrivateFieldGet(this, _Jn),\\n pageIndex: this.pageIndex,\\n rect: this.getRect(0, 0),\\n rotation: this.rotation,\\n isSvg: _classPrivateFieldGet(this, _ni)\\n };\\n if (t) {\\n n.bitmapUrl = _classPrivateMethodGet(this, _oi, _oi2).call(this, !0);\\n return n;\\n }\\n if (null === e) return n;\\n e.stamps || (e.stamps = new Map());\\n const i = _classPrivateFieldGet(this, _ni) ? (n.rect[2] - n.rect[0]) * (n.rect[3] - n.rect[1]) : null;\\n if (e.stamps.has(_classPrivateFieldGet(this, _Jn))) {\\n if (_classPrivateFieldGet(this, _ni)) {\\n const t = e.stamps.get(_classPrivateFieldGet(this, _Jn));\\n if (i > t.area) {\\n t.area = i;\\n t.serialized.bitmap.close();\\n t.serialized.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\\n }\\n }\\n } else {\\n e.stamps.set(_classPrivateFieldGet(this, _Jn), {\\n area: i,\\n serialized: n\\n });\\n n.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\\n }\\n return n;\\n }\\n }\\n function _ii2() {\\n if (_classPrivateFieldGet(this, _Jn)) {\\n this._uiManager.imageManager.getFromId(_classPrivateFieldGet(this, _Jn)).then(t => {\\n if (t) {\\n _classPrivateFieldSet(this, _Yn, t.bitmap);\\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\\n } else this.remove();\\n });\\n return;\\n }\\n if (_classPrivateFieldGet(this, _Zn)) {\\n const t = _classPrivateFieldGet(this, _Zn);\\n _classPrivateFieldSet(this, _Zn, null);\\n _classPrivateFieldSet(this, _Qn, this._uiManager.imageManager.getFromUrl(t).then(t => {\\n _classPrivateFieldSet(this, _Qn, null);\\n if (t) {\\n ({\\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\\n } = t);\\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\\n } else this.remove();\\n }));\\n return;\\n }\\n const t = document.createElement(\\"input\\");\\n t.type = \\"file\\";\\n t.accept = \\"image/*\\";\\n _classPrivateFieldSet(this, _Qn, new Promise(e => {\\n t.addEventListener(\\"change\\", async () => {\\n _classPrivateFieldSet(this, _Qn, null);\\n if (t.files && 0 !== t.files.length) {\\n const e = await this._uiManager.imageManager.getFromFile(t.files[0]);\\n if (!e) {\\n this.remove();\\n return;\\n }\\n ({\\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\\n } = e);\\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\\n } else this.remove();\\n e();\\n });\\n t.addEventListener(\\"cancel\\", () => {\\n _classPrivateFieldSet(this, _Qn, null);\\n this.remove();\\n e();\\n });\\n }));\\n t.click();\\n }\\n function _kn4() {\\n const {\\n div: t\\n } = this;\\n let {\\n width: e,\\n height: n\\n } = _classPrivateFieldGet(this, _Yn);\\n const [i, r] = this.pageDimensions,\\n s = .75;\\n if (this.width) {\\n e = this.width * i;\\n n = this.height * r;\\n } else if (e > s * i || n > s * r) {\\n const t = Math.min(s * i / e, s * r / n);\\n e *= t;\\n n *= t;\\n }\\n const [a, o] = this.parentDimensions;\\n this.setDims(e * a / i, n * o / r);\\n const l = _classPrivateFieldSet(this, _ti, document.createElement(\\"canvas\\"));\\n t.append(l);\\n _classPrivateMethodGet(this, _ri, _ri2).call(this, e, n);\\n _classPrivateMethodGet(this, _Mn3, _Mn4).call(this);\\n t.classList.remove(\\"loading\\");\\n }\\n function _si2(t, e) {\\n const [n, i] = this.parentDimensions;\\n this.width = t / n;\\n this.height = e / i;\\n this.setDims(t, e);\\n this.fixAndSetPosition();\\n null !== _classPrivateFieldGet(this, _ei) && clearTimeout(_classPrivateFieldGet(this, _ei));\\n _classPrivateFieldSet(this, _ei, setTimeout(() => {\\n _classPrivateFieldSet(this, _ei, null);\\n _classPrivateMethodGet(this, _ri, _ri2).call(this, t, e);\\n }, 200));\\n }\\n function _ai2(t, e) {\\n const {\\n width: n,\\n height: i\\n } = _classPrivateFieldGet(this, _Yn);\\n let r = n,\\n s = i,\\n a = _classPrivateFieldGet(this, _Yn);\\n for (; r > 2 * t || s > 2 * e;) {\\n const n = r,\\n i = s;\\n r > 2 * t && (r = r >= 16384 ? Math.floor(r / 2) - 1 : Math.ceil(r / 2));\\n s > 2 * e && (s = s >= 16384 ? Math.floor(s / 2) - 1 : Math.ceil(s / 2));\\n const o = new OffscreenCanvas(r, s);\\n o.getContext(\\"2d\\").drawImage(a, 0, 0, n, i, 0, 0, r, s);\\n a = o.transferToImageBitmap();\\n }\\n return a;\\n }\\n function _ri2(t, e) {\\n const n = _classPrivateFieldGet(this, _ti);\\n if (!n || n.width === t && n.height === e) return;\\n n.width = t;\\n n.height = e;\\n const i = _classPrivateFieldGet(this, _ni) ? _classPrivateFieldGet(this, _Yn) : _classPrivateMethodGet(this, _ai, _ai2).call(this, t, e),\\n r = n.getContext(\\"2d\\");\\n r.filter = this._uiManager.hcmFilter;\\n r.drawImage(i, 0, 0, i.width, i.height, 0, 0, t, e);\\n }\\n function _oi2(t) {\\n if (t) {\\n if (_classPrivateFieldGet(this, _ni)) {\\n const t = this._uiManager.imageManager.getSvgUrl(_classPrivateFieldGet(this, _Jn));\\n if (t) return t;\\n }\\n const t = document.createElement(\\"canvas\\");\\n ({\\n width: t.width,\\n height: t.height\\n } = _classPrivateFieldGet(this, _Yn));\\n t.getContext(\\"2d\\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0);\\n return t.toDataURL();\\n }\\n if (_classPrivateFieldGet(this, _ni)) {\\n const [t, e] = this.pageDimensions,\\n n = Math.round(this.width * t * s.PixelsPerInch.PDF_TO_CSS_UNITS),\\n i = Math.round(this.height * e * s.PixelsPerInch.PDF_TO_CSS_UNITS),\\n r = new OffscreenCanvas(n, i);\\n r.getContext(\\"2d\\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0, _classPrivateFieldGet(this, _Yn).width, _classPrivateFieldGet(this, _Yn).height, 0, 0, n, i);\\n return r.transferToImageBitmap();\\n }\\n return structuredClone(_classPrivateFieldGet(this, _Yn));\\n }\\n function _Mn4() {\\n _classPrivateFieldSet(this, _n10, new ResizeObserver(t => {\\n const e = t[0].contentRect;\\n e.width && e.height && _classPrivateMethodGet(this, _si, _si2).call(this, e.width, e.height);\\n }));\\n _classPrivateFieldGet(this, _n10).observe(this.div);\\n }\\n _defineProperty(StampEditor, \\"_type\\", \\"stamp\\");\\n e.StampEditor = StampEditor;\\n }],\\n __webpack_module_cache__ = {};\\n function __w_pdfjs_require__(t) {\\n var e = __webpack_module_cache__[t];\\n if (void 0 !== e) return e.exports;\\n var n = __webpack_module_cache__[t] = {\\n exports: {}\\n };\\n __webpack_modules__[t].call(n.exports, n, n.exports, __w_pdfjs_require__);\\n return n.exports;\\n }\\n var __nested_webpack_exports__ = {};\\n (() => {\\n \\"use strict\\";\\n\\n var t = __nested_webpack_exports__;\\n Object.defineProperty(t, \\"__esModule\\", {\\n value: !0\\n });\\n Object.defineProperty(t, \\"AbortException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AbortException;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return s.AnnotationEditorLayer;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorParamsType\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AnnotationEditorParamsType;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorType\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AnnotationEditorType;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorUIManager\\", {\\n enumerable: !0,\\n get: function get() {\\n return a.AnnotationEditorUIManager;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return o.AnnotationLayer;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationMode\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AnnotationMode;\\n }\\n });\\n Object.defineProperty(t, \\"CMapCompressionType\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.CMapCompressionType;\\n }\\n });\\n Object.defineProperty(t, \\"FeatureTest\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.FeatureTest;\\n }\\n });\\n Object.defineProperty(t, \\"GlobalWorkerOptions\\", {\\n enumerable: !0,\\n get: function get() {\\n return l.GlobalWorkerOptions;\\n }\\n });\\n Object.defineProperty(t, \\"ImageKind\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.ImageKind;\\n }\\n });\\n Object.defineProperty(t, \\"InvalidPDFException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.InvalidPDFException;\\n }\\n });\\n Object.defineProperty(t, \\"MissingPDFException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.MissingPDFException;\\n }\\n });\\n Object.defineProperty(t, \\"OPS\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.OPS;\\n }\\n });\\n Object.defineProperty(t, \\"PDFDataRangeTransport\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.PDFDataRangeTransport;\\n }\\n });\\n Object.defineProperty(t, \\"PDFDateString\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.PDFDateString;\\n }\\n });\\n Object.defineProperty(t, \\"PDFWorker\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.PDFWorker;\\n }\\n });\\n Object.defineProperty(t, \\"PasswordResponses\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.PasswordResponses;\\n }\\n });\\n Object.defineProperty(t, \\"PermissionFlag\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.PermissionFlag;\\n }\\n });\\n Object.defineProperty(t, \\"PixelsPerInch\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.PixelsPerInch;\\n }\\n });\\n Object.defineProperty(t, \\"PromiseCapability\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.PromiseCapability;\\n }\\n });\\n Object.defineProperty(t, \\"RenderingCancelledException\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.RenderingCancelledException;\\n }\\n });\\n Object.defineProperty(t, \\"SVGGraphics\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.SVGGraphics;\\n }\\n });\\n Object.defineProperty(t, \\"UnexpectedResponseException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.UnexpectedResponseException;\\n }\\n });\\n Object.defineProperty(t, \\"Util\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.Util;\\n }\\n });\\n Object.defineProperty(t, \\"VerbosityLevel\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.VerbosityLevel;\\n }\\n });\\n Object.defineProperty(t, \\"XfaLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return c.XfaLayer;\\n }\\n });\\n Object.defineProperty(t, \\"build\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.build;\\n }\\n });\\n Object.defineProperty(t, \\"createValidAbsoluteUrl\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.createValidAbsoluteUrl;\\n }\\n });\\n Object.defineProperty(t, \\"getDocument\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.getDocument;\\n }\\n });\\n Object.defineProperty(t, \\"getFilenameFromUrl\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.getFilenameFromUrl;\\n }\\n });\\n Object.defineProperty(t, \\"getPdfFilenameFromUrl\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.getPdfFilenameFromUrl;\\n }\\n });\\n Object.defineProperty(t, \\"getXfaPageViewport\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.getXfaPageViewport;\\n }\\n });\\n Object.defineProperty(t, \\"isDataScheme\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.isDataScheme;\\n }\\n });\\n Object.defineProperty(t, \\"isPdfFile\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.isPdfFile;\\n }\\n });\\n Object.defineProperty(t, \\"loadScript\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.loadScript;\\n }\\n });\\n Object.defineProperty(t, \\"normalizeUnicode\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.normalizeUnicode;\\n }\\n });\\n Object.defineProperty(t, \\"renderTextLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return r.renderTextLayer;\\n }\\n });\\n Object.defineProperty(t, \\"setLayerDimensions\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.setLayerDimensions;\\n }\\n });\\n Object.defineProperty(t, \\"shadow\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.shadow;\\n }\\n });\\n Object.defineProperty(t, \\"updateTextLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return r.updateTextLayer;\\n }\\n });\\n Object.defineProperty(t, \\"version\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.version;\\n }\\n });\\n var e = __w_pdfjs_require__(1),\\n n = __w_pdfjs_require__(124),\\n i = __w_pdfjs_require__(167),\\n r = __w_pdfjs_require__(194),\\n s = __w_pdfjs_require__(195),\\n a = __w_pdfjs_require__(164),\\n o = __w_pdfjs_require__(197),\\n l = __w_pdfjs_require__(175),\\n c = __w_pdfjs_require__(200);\\n })();\\n return __nested_webpack_exports__;\\n})());\\n\\n//# sourceURL=webpack://babel/./pdf.js?")}),"./node_modules/core-js/internals/a-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`Assert: IsCallable(argument) is true\`\\nmodule.exports = function (argument) {\\n if (isCallable(argument)) return argument;\\n throw $TypeError(tryToString(argument) + ' is not a function');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-callable.js?")}),"./node_modules/core-js/internals/a-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`Assert: IsConstructor(argument) is true\`\\nmodule.exports = function (argument) {\\n if (isConstructor(argument)) return argument;\\n throw $TypeError(tryToString(argument) + ' is not a constructor');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-constructor.js?")}),"./node_modules/core-js/internals/a-possible-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n if (typeof argument == 'object' || isCallable(argument)) return argument;\\n throw $TypeError(\\"Can't set \\" + $String(argument) + ' as a prototype');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-possible-prototype.js?")}),"./node_modules/core-js/internals/add-to-unscopables.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\n\\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\\nvar ArrayPrototype = Array.prototype;\\n\\n// Array.prototype[@@unscopables]\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\\n defineProperty(ArrayPrototype, UNSCOPABLES, {\\n configurable: true,\\n value: create(null)\\n });\\n}\\n\\n// add a key to Array.prototype[@@unscopables]\\nmodule.exports = function (key) {\\n ArrayPrototype[UNSCOPABLES][key] = true;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/add-to-unscopables.js?")}),"./node_modules/core-js/internals/advance-string-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \\"./node_modules/core-js/internals/string-multibyte.js\\").charAt);\\n\\n// \`AdvanceStringIndex\` abstract operation\\n// https://tc39.es/ecma262/#sec-advancestringindex\\nmodule.exports = function (S, index, unicode) {\\n return index + (unicode ? charAt(S, index).length : 1);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/advance-string-index.js?")}),"./node_modules/core-js/internals/an-instance.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it, Prototype) {\\n if (isPrototypeOf(Prototype, it)) return it;\\n throw $TypeError('Incorrect invocation');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-instance.js?")}),"./node_modules/core-js/internals/an-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\n// \`Assert: Type(argument) is Object\`\\nmodule.exports = function (argument) {\\n if (isObject(argument)) return argument;\\n throw $TypeError($String(argument) + ' is not an object');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-object.js?")}),"./node_modules/core-js/internals/array-buffer-basic-detection.js":((module)=>{eval("\\n// eslint-disable-next-line es/no-typed-arrays -- safe\\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-basic-detection.js?")}),"./node_modules/core-js/internals/array-buffer-non-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = fails(function () {\\n if (typeof ArrayBuffer == 'function') {\\n var buffer = new ArrayBuffer(8);\\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-non-extensible.js?")}),"./node_modules/core-js/internals/array-buffer-view-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \\"./node_modules/core-js/internals/array-buffer-basic-detection.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar Int8Array = global.Int8Array;\\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\\nvar Uint8ClampedArray = global.Uint8ClampedArray;\\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\\nvar ObjectPrototype = Object.prototype;\\nvar TypeError = global.TypeError;\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\\nvar TYPED_ARRAY_TAG_REQUIRED = false;\\nvar NAME, Constructor, Prototype;\\n\\nvar TypedArrayConstructorsList = {\\n Int8Array: 1,\\n Uint8Array: 1,\\n Uint8ClampedArray: 1,\\n Int16Array: 2,\\n Uint16Array: 2,\\n Int32Array: 4,\\n Uint32Array: 4,\\n Float32Array: 4,\\n Float64Array: 8\\n};\\n\\nvar BigIntArrayConstructorsList = {\\n BigInt64Array: 8,\\n BigUint64Array: 8\\n};\\n\\nvar isView = function isView(it) {\\n if (!isObject(it)) return false;\\n var klass = classof(it);\\n return klass === 'DataView'\\n || hasOwn(TypedArrayConstructorsList, klass)\\n || hasOwn(BigIntArrayConstructorsList, klass);\\n};\\n\\nvar getTypedArrayConstructor = function (it) {\\n var proto = getPrototypeOf(it);\\n if (!isObject(proto)) return;\\n var state = getInternalState(proto);\\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\\n};\\n\\nvar isTypedArray = function (it) {\\n if (!isObject(it)) return false;\\n var klass = classof(it);\\n return hasOwn(TypedArrayConstructorsList, klass)\\n || hasOwn(BigIntArrayConstructorsList, klass);\\n};\\n\\nvar aTypedArray = function (it) {\\n if (isTypedArray(it)) return it;\\n throw TypeError('Target is not a typed array');\\n};\\n\\nvar aTypedArrayConstructor = function (C) {\\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\\n};\\n\\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\\n if (!DESCRIPTORS) return;\\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\\n var TypedArrayConstructor = global[ARRAY];\\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\\n delete TypedArrayConstructor.prototype[KEY];\\n } catch (error) {\\n // old WebKit bug - some methods are non-configurable\\n try {\\n TypedArrayConstructor.prototype[KEY] = property;\\n } catch (error2) { /* empty */ }\\n }\\n }\\n if (!TypedArrayPrototype[KEY] || forced) {\\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\\n }\\n};\\n\\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\\n var ARRAY, TypedArrayConstructor;\\n if (!DESCRIPTORS) return;\\n if (setPrototypeOf) {\\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\\n TypedArrayConstructor = global[ARRAY];\\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\\n delete TypedArrayConstructor[KEY];\\n } catch (error) { /* empty */ }\\n }\\n if (!TypedArray[KEY] || forced) {\\n // V8 ~ Chrome 49-50 \`%TypedArray%\` methods are non-writable non-configurable\\n try {\\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\\n } catch (error) { /* empty */ }\\n } else return;\\n }\\n for (ARRAY in TypedArrayConstructorsList) {\\n TypedArrayConstructor = global[ARRAY];\\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\\n defineBuiltIn(TypedArrayConstructor, KEY, property);\\n }\\n }\\n};\\n\\nfor (NAME in TypedArrayConstructorsList) {\\n Constructor = global[NAME];\\n Prototype = Constructor && Constructor.prototype;\\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\\n}\\n\\nfor (NAME in BigIntArrayConstructorsList) {\\n Constructor = global[NAME];\\n Prototype = Constructor && Constructor.prototype;\\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\\n}\\n\\n// WebKit bug - typed arrays constructors prototype is Object.prototype\\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\\n // eslint-disable-next-line no-shadow -- safe\\n TypedArray = function TypedArray() {\\n throw TypeError('Incorrect invocation');\\n };\\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\\n }\\n}\\n\\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\\n TypedArrayPrototype = TypedArray.prototype;\\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\\n }\\n}\\n\\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\\n}\\n\\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\\n TYPED_ARRAY_TAG_REQUIRED = true;\\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\\n configurable: true,\\n get: function () {\\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\\n }\\n });\\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\\n }\\n}\\n\\nmodule.exports = {\\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\\n aTypedArray: aTypedArray,\\n aTypedArrayConstructor: aTypedArrayConstructor,\\n exportTypedArrayMethod: exportTypedArrayMethod,\\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\\n getTypedArrayConstructor: getTypedArrayConstructor,\\n isView: isView,\\n isTypedArray: isTypedArray,\\n TypedArray: TypedArray,\\n TypedArrayPrototype: TypedArrayPrototype\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-view-core.js?")}),"./node_modules/core-js/internals/array-buffer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \\"./node_modules/core-js/internals/array-buffer-basic-detection.js\\");\\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \\"./node_modules/core-js/internals/to-index.js\\");\\nvar IEEE754 = __webpack_require__(/*! ../internals/ieee754 */ \\"./node_modules/core-js/internals/ieee754.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar arrayFill = __webpack_require__(/*! ../internals/array-fill */ \\"./node_modules/core-js/internals/array-fill.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\\nvar ARRAY_BUFFER = 'ArrayBuffer';\\nvar DATA_VIEW = 'DataView';\\nvar PROTOTYPE = 'prototype';\\nvar WRONG_LENGTH = 'Wrong length';\\nvar WRONG_INDEX = 'Wrong index';\\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\\nvar setInternalState = InternalStateModule.set;\\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\\nvar $ArrayBuffer = NativeArrayBuffer;\\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\\nvar $DataView = global[DATA_VIEW];\\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\\nvar ObjectPrototype = Object.prototype;\\nvar Array = global.Array;\\nvar RangeError = global.RangeError;\\nvar fill = uncurryThis(arrayFill);\\nvar reverse = uncurryThis([].reverse);\\n\\nvar packIEEE754 = IEEE754.pack;\\nvar unpackIEEE754 = IEEE754.unpack;\\n\\nvar packInt8 = function (number) {\\n return [number & 0xFF];\\n};\\n\\nvar packInt16 = function (number) {\\n return [number & 0xFF, number >> 8 & 0xFF];\\n};\\n\\nvar packInt32 = function (number) {\\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\\n};\\n\\nvar unpackInt32 = function (buffer) {\\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\\n};\\n\\nvar packFloat32 = function (number) {\\n return packIEEE754(number, 23, 4);\\n};\\n\\nvar packFloat64 = function (number) {\\n return packIEEE754(number, 52, 8);\\n};\\n\\nvar addGetter = function (Constructor, key, getInternalState) {\\n defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\\n configurable: true,\\n get: function () {\\n return getInternalState(this)[key];\\n }\\n });\\n};\\n\\nvar get = function (view, count, index, isLittleEndian) {\\n var store = getInternalDataViewState(view);\\n var intIndex = toIndex(index);\\n var boolIsLittleEndian = !!isLittleEndian;\\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\\n var bytes = store.bytes;\\n var start = intIndex + store.byteOffset;\\n var pack = arraySlice(bytes, start, start + count);\\n return boolIsLittleEndian ? pack : reverse(pack);\\n};\\n\\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\\n var store = getInternalDataViewState(view);\\n var intIndex = toIndex(index);\\n var pack = conversion(+value);\\n var boolIsLittleEndian = !!isLittleEndian;\\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\\n var bytes = store.bytes;\\n var start = intIndex + store.byteOffset;\\n for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\\n};\\n\\nif (!NATIVE_ARRAY_BUFFER) {\\n $ArrayBuffer = function ArrayBuffer(length) {\\n anInstance(this, ArrayBufferPrototype);\\n var byteLength = toIndex(length);\\n setInternalState(this, {\\n type: ARRAY_BUFFER,\\n bytes: fill(Array(byteLength), 0),\\n byteLength: byteLength\\n });\\n if (!DESCRIPTORS) {\\n this.byteLength = byteLength;\\n this.detached = false;\\n }\\n };\\n\\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\\n\\n $DataView = function DataView(buffer, byteOffset, byteLength) {\\n anInstance(this, DataViewPrototype);\\n anInstance(buffer, ArrayBufferPrototype);\\n var bufferState = getInternalArrayBufferState(buffer);\\n var bufferLength = bufferState.byteLength;\\n var offset = toIntegerOrInfinity(byteOffset);\\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\\n setInternalState(this, {\\n type: DATA_VIEW,\\n buffer: buffer,\\n byteLength: byteLength,\\n byteOffset: offset,\\n bytes: bufferState.bytes\\n });\\n if (!DESCRIPTORS) {\\n this.buffer = buffer;\\n this.byteLength = byteLength;\\n this.byteOffset = offset;\\n }\\n };\\n\\n DataViewPrototype = $DataView[PROTOTYPE];\\n\\n if (DESCRIPTORS) {\\n addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\\n addGetter($DataView, 'buffer', getInternalDataViewState);\\n addGetter($DataView, 'byteLength', getInternalDataViewState);\\n addGetter($DataView, 'byteOffset', getInternalDataViewState);\\n }\\n\\n defineBuiltIns(DataViewPrototype, {\\n getInt8: function getInt8(byteOffset) {\\n return get(this, 1, byteOffset)[0] << 24 >> 24;\\n },\\n getUint8: function getUint8(byteOffset) {\\n return get(this, 1, byteOffset)[0];\\n },\\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\\n },\\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\\n return bytes[1] << 8 | bytes[0];\\n },\\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\\n },\\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\\n },\\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\\n },\\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\\n },\\n setInt8: function setInt8(byteOffset, value) {\\n set(this, 1, byteOffset, packInt8, value);\\n },\\n setUint8: function setUint8(byteOffset, value) {\\n set(this, 1, byteOffset, packInt8, value);\\n },\\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\\n }\\n });\\n} else {\\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\\n /* eslint-disable no-new -- required for testing */\\n if (!fails(function () {\\n NativeArrayBuffer(1);\\n }) || !fails(function () {\\n new NativeArrayBuffer(-1);\\n }) || fails(function () {\\n new NativeArrayBuffer();\\n new NativeArrayBuffer(1.5);\\n new NativeArrayBuffer(NaN);\\n return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\\n })) {\\n /* eslint-enable no-new -- required for testing */\\n $ArrayBuffer = function ArrayBuffer(length) {\\n anInstance(this, ArrayBufferPrototype);\\n return new NativeArrayBuffer(toIndex(length));\\n };\\n\\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\\n\\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\\n if (!((key = keys[j++]) in $ArrayBuffer)) {\\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\\n }\\n }\\n\\n ArrayBufferPrototype.constructor = $ArrayBuffer;\\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\\n }\\n\\n // WebKit bug - the same parent prototype for typed arrays and data view\\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\\n }\\n\\n // iOS Safari 7.x bug\\n var testView = new $DataView(new $ArrayBuffer(2));\\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\\n testView.setInt8(0, 2147483648);\\n testView.setInt8(1, 2147483649);\\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\\n setInt8: function setInt8(byteOffset, value) {\\n $setInt8(this, byteOffset, value << 24 >> 24);\\n },\\n setUint8: function setUint8(byteOffset, value) {\\n $setInt8(this, byteOffset, value << 24 >> 24);\\n }\\n }, { unsafe: true });\\n}\\n\\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\\nsetToStringTag($DataView, DATA_VIEW);\\n\\nmodule.exports = {\\n ArrayBuffer: $ArrayBuffer,\\n DataView: $DataView\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer.js?")}),"./node_modules/core-js/internals/array-fill.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// \`Array.prototype.fill\` method implementation\\n// https://tc39.es/ecma262/#sec-array.prototype.fill\\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\\n var O = toObject(this);\\n var length = lengthOfArrayLike(O);\\n var argumentsLength = arguments.length;\\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\\n var end = argumentsLength > 2 ? arguments[2] : undefined;\\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\\n while (endPos > index) O[index++] = value;\\n return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-fill.js?")}),"./node_modules/core-js/internals/array-from-constructor-and-list.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\nmodule.exports = function (Constructor, list) {\\n var index = 0;\\n var length = lengthOfArrayLike(list);\\n var result = new Constructor(length);\\n while (length > index) result[index] = list[index++];\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from-constructor-and-list.js?")}),"./node_modules/core-js/internals/array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \\"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\\");\\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \\"./node_modules/core-js/internals/is-array-iterator-method.js\\");\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \\"./node_modules/core-js/internals/create-property.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\n\\nvar $Array = Array;\\n\\n// \`Array.from\` method implementation\\n// https://tc39.es/ecma262/#sec-array.from\\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\\n var O = toObject(arrayLike);\\n var IS_CONSTRUCTOR = isConstructor(this);\\n var argumentsLength = arguments.length;\\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\\n var mapping = mapfn !== undefined;\\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\\n var iteratorMethod = getIteratorMethod(O);\\n var index = 0;\\n var length, result, step, iterator, next, value;\\n // if the target is not iterable or it's an array with the default iterator - use a simple case\\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\\n iterator = getIterator(O, iteratorMethod);\\n next = iterator.next;\\n result = IS_CONSTRUCTOR ? new this() : [];\\n for (;!(step = call(next, iterator)).done; index++) {\\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\\n createProperty(result, index, value);\\n }\\n } else {\\n length = lengthOfArrayLike(O);\\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\\n for (;length > index; index++) {\\n value = mapping ? mapfn(O[index], index) : O[index];\\n createProperty(result, index, value);\\n }\\n }\\n result.length = index;\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from.js?")}),"./node_modules/core-js/internals/array-includes.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// \`Array.prototype.{ indexOf, includes }\` methods implementation\\nvar createMethod = function (IS_INCLUDES) {\\n return function ($this, el, fromIndex) {\\n var O = toIndexedObject($this);\\n var length = lengthOfArrayLike(O);\\n var index = toAbsoluteIndex(fromIndex, length);\\n var value;\\n // Array#includes uses SameValueZero equality algorithm\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (IS_INCLUDES && el != el) while (length > index) {\\n value = O[index++];\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (value != value) return true;\\n // Array#indexOf ignores holes, Array#includes - not\\n } else for (;length > index; index++) {\\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\\n } return !IS_INCLUDES && -1;\\n };\\n};\\n\\nmodule.exports = {\\n // \`Array.prototype.includes\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.includes\\n includes: createMethod(true),\\n // \`Array.prototype.indexOf\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\\n indexOf: createMethod(false)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-includes.js?")}),"./node_modules/core-js/internals/array-iteration-from-last.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// \`Array.prototype.{ findLast, findLastIndex }\` methods implementation\\nvar createMethod = function (TYPE) {\\n var IS_FIND_LAST_INDEX = TYPE == 1;\\n return function ($this, callbackfn, that) {\\n var O = toObject($this);\\n var self = IndexedObject(O);\\n var boundFunction = bind(callbackfn, that);\\n var index = lengthOfArrayLike(self);\\n var value, result;\\n while (index-- > 0) {\\n value = self[index];\\n result = boundFunction(value, index, O);\\n if (result) switch (TYPE) {\\n case 0: return value; // findLast\\n case 1: return index; // findLastIndex\\n }\\n }\\n return IS_FIND_LAST_INDEX ? -1 : undefined;\\n };\\n};\\n\\nmodule.exports = {\\n // \`Array.prototype.findLast\` method\\n // https://github.com/tc39/proposal-array-find-from-last\\n findLast: createMethod(0),\\n // \`Array.prototype.findLastIndex\` method\\n // https://github.com/tc39/proposal-array-find-from-last\\n findLastIndex: createMethod(1)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration-from-last.js?")}),"./node_modules/core-js/internals/array-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \\"./node_modules/core-js/internals/array-species-create.js\\");\\n\\nvar push = uncurryThis([].push);\\n\\n// \`Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }\` methods implementation\\nvar createMethod = function (TYPE) {\\n var IS_MAP = TYPE == 1;\\n var IS_FILTER = TYPE == 2;\\n var IS_SOME = TYPE == 3;\\n var IS_EVERY = TYPE == 4;\\n var IS_FIND_INDEX = TYPE == 6;\\n var IS_FILTER_REJECT = TYPE == 7;\\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\\n return function ($this, callbackfn, that, specificCreate) {\\n var O = toObject($this);\\n var self = IndexedObject(O);\\n var boundFunction = bind(callbackfn, that);\\n var length = lengthOfArrayLike(self);\\n var index = 0;\\n var create = specificCreate || arraySpeciesCreate;\\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\\n var value, result;\\n for (;length > index; index++) if (NO_HOLES || index in self) {\\n value = self[index];\\n result = boundFunction(value, index, O);\\n if (TYPE) {\\n if (IS_MAP) target[index] = result; // map\\n else if (result) switch (TYPE) {\\n case 3: return true; // some\\n case 5: return value; // find\\n case 6: return index; // findIndex\\n case 2: push(target, value); // filter\\n } else switch (TYPE) {\\n case 4: return false; // every\\n case 7: push(target, value); // filterReject\\n }\\n }\\n }\\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\\n };\\n};\\n\\nmodule.exports = {\\n // \`Array.prototype.forEach\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\\n forEach: createMethod(0),\\n // \`Array.prototype.map\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.map\\n map: createMethod(1),\\n // \`Array.prototype.filter\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.filter\\n filter: createMethod(2),\\n // \`Array.prototype.some\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.some\\n some: createMethod(3),\\n // \`Array.prototype.every\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.every\\n every: createMethod(4),\\n // \`Array.prototype.find\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.find\\n find: createMethod(5),\\n // \`Array.prototype.findIndex\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\\n findIndex: createMethod(6),\\n // \`Array.prototype.filterReject\` method\\n // https://github.com/tc39/proposal-array-filtering\\n filterReject: createMethod(7)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration.js?")}),"./node_modules/core-js/internals/array-method-is-strict.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = function (METHOD_NAME, argument) {\\n var method = [][METHOD_NAME];\\n return !!method && fails(function () {\\n // eslint-disable-next-line no-useless-call -- required for testing\\n method.call(null, argument || function () { return 1; }, 1);\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-method-is-strict.js?")}),"./node_modules/core-js/internals/array-set-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\n\\nvar $TypeError = TypeError;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// Safari < 13 does not throw an error in this case\\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\\n // makes no sense without proper strict mode support\\n if (this !== undefined) return true;\\n try {\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty([], 'length', { writable: false }).length = 1;\\n } catch (error) {\\n return error instanceof TypeError;\\n }\\n}();\\n\\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\\n throw $TypeError('Cannot set read only .length');\\n } return O.length = length;\\n} : function (O, length) {\\n return O.length = length;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-set-length.js?")}),"./node_modules/core-js/internals/array-slice-simple.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \\"./node_modules/core-js/internals/create-property.js\\");\\n\\nvar $Array = Array;\\nvar max = Math.max;\\n\\nmodule.exports = function (O, start, end) {\\n var length = lengthOfArrayLike(O);\\n var k = toAbsoluteIndex(start, length);\\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\\n var result = $Array(max(fin - k, 0));\\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\\n result.length = n;\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice-simple.js?")}),"./node_modules/core-js/internals/array-slice.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nmodule.exports = uncurryThis([].slice);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice.js?")}),"./node_modules/core-js/internals/array-sort.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\n\\nvar floor = Math.floor;\\n\\nvar mergeSort = function (array, comparefn) {\\n var length = array.length;\\n var middle = floor(length / 2);\\n return length < 8 ? insertionSort(array, comparefn) : merge(\\n array,\\n mergeSort(arraySlice(array, 0, middle), comparefn),\\n mergeSort(arraySlice(array, middle), comparefn),\\n comparefn\\n );\\n};\\n\\nvar insertionSort = function (array, comparefn) {\\n var length = array.length;\\n var i = 1;\\n var element, j;\\n\\n while (i < length) {\\n j = i;\\n element = array[i];\\n while (j && comparefn(array[j - 1], element) > 0) {\\n array[j] = array[--j];\\n }\\n if (j !== i++) array[j] = element;\\n } return array;\\n};\\n\\nvar merge = function (array, left, right, comparefn) {\\n var llength = left.length;\\n var rlength = right.length;\\n var lindex = 0;\\n var rindex = 0;\\n\\n while (lindex < llength || rindex < rlength) {\\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\\n : lindex < llength ? left[lindex++] : right[rindex++];\\n } return array;\\n};\\n\\nmodule.exports = mergeSort;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-sort.js?")}),"./node_modules/core-js/internals/array-species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\nvar $Array = Array;\\n\\n// a part of \`ArraySpeciesCreate\` abstract operation\\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\\nmodule.exports = function (originalArray) {\\n var C;\\n if (isArray(originalArray)) {\\n C = originalArray.constructor;\\n // cross-realm fallback\\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\\n else if (isObject(C)) {\\n C = C[SPECIES];\\n if (C === null) C = undefined;\\n }\\n } return C === undefined ? $Array : C;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-constructor.js?")}),"./node_modules/core-js/internals/array-species-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ \\"./node_modules/core-js/internals/array-species-constructor.js\\");\\n\\n// \`ArraySpeciesCreate\` abstract operation\\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\\nmodule.exports = function (originalArray, length) {\\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-create.js?")}),"./node_modules/core-js/internals/array-to-reversed.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\\nmodule.exports = function (O, C) {\\n var len = lengthOfArrayLike(O);\\n var A = new C(len);\\n var k = 0;\\n for (; k < len; k++) A[k] = O[len - k - 1];\\n return A;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-to-reversed.js?")}),"./node_modules/core-js/internals/array-with.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar $RangeError = RangeError;\\n\\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\\nmodule.exports = function (O, C, index, value) {\\n var len = lengthOfArrayLike(O);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\\n if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\\n var A = new C(len);\\n var k = 0;\\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\\n return A;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-with.js?")}),"./node_modules/core-js/internals/call-with-safe-iteration-closing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \\"./node_modules/core-js/internals/iterator-close.js\\");\\n\\n// call something on iterator step with safe closing on error\\nmodule.exports = function (iterator, fn, value, ENTRIES) {\\n try {\\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\\n } catch (error) {\\n iteratorClose(iterator, 'throw', error);\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/call-with-safe-iteration-closing.js?")}),"./node_modules/core-js/internals/check-correctness-of-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar SAFE_CLOSING = false;\\n\\ntry {\\n var called = 0;\\n var iteratorWithReturn = {\\n next: function () {\\n return { done: !!called++ };\\n },\\n 'return': function () {\\n SAFE_CLOSING = true;\\n }\\n };\\n iteratorWithReturn[ITERATOR] = function () {\\n return this;\\n };\\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\\n Array.from(iteratorWithReturn, function () { throw 2; });\\n} catch (error) { /* empty */ }\\n\\nmodule.exports = function (exec, SKIP_CLOSING) {\\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\\n var ITERATION_SUPPORT = false;\\n try {\\n var object = {};\\n object[ITERATOR] = function () {\\n return {\\n next: function () {\\n return { done: ITERATION_SUPPORT = true };\\n }\\n };\\n };\\n exec(object);\\n } catch (error) { /* empty */ }\\n return ITERATION_SUPPORT;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/check-correctness-of-iteration.js?")}),"./node_modules/core-js/internals/classof-raw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar toString = uncurryThis({}.toString);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (it) {\\n return stringSlice(toString(it), 8, -1);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof-raw.js?")}),"./node_modules/core-js/internals/classof.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \\"./node_modules/core-js/internals/to-string-tag-support.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar $Object = Object;\\n\\n// ES3 wrong here\\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\\n\\n// fallback for IE11 Script Access Denied error\\nvar tryGet = function (it, key) {\\n try {\\n return it[key];\\n } catch (error) { /* empty */ }\\n};\\n\\n// getting tag from ES6+ \`Object.prototype.toString\`\\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\\n var O, tag, result;\\n return it === undefined ? 'Undefined' : it === null ? 'Null'\\n // @@toStringTag case\\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\\n // builtinTag case\\n : CORRECT_ARGUMENTS ? classofRaw(O)\\n // ES3 arguments fallback\\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof.js?")}),"./node_modules/core-js/internals/collection-weak.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar getWeakData = (__webpack_require__(/*! ../internals/internal-metadata */ \\"./node_modules/core-js/internals/internal-metadata.js\\").getWeakData);\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ \\"./node_modules/core-js/internals/array-iteration.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar setInternalState = InternalStateModule.set;\\nvar internalStateGetterFor = InternalStateModule.getterFor;\\nvar find = ArrayIterationModule.find;\\nvar findIndex = ArrayIterationModule.findIndex;\\nvar splice = uncurryThis([].splice);\\nvar id = 0;\\n\\n// fallback for uncaught frozen keys\\nvar uncaughtFrozenStore = function (state) {\\n return state.frozen || (state.frozen = new UncaughtFrozenStore());\\n};\\n\\nvar UncaughtFrozenStore = function () {\\n this.entries = [];\\n};\\n\\nvar findUncaughtFrozen = function (store, key) {\\n return find(store.entries, function (it) {\\n return it[0] === key;\\n });\\n};\\n\\nUncaughtFrozenStore.prototype = {\\n get: function (key) {\\n var entry = findUncaughtFrozen(this, key);\\n if (entry) return entry[1];\\n },\\n has: function (key) {\\n return !!findUncaughtFrozen(this, key);\\n },\\n set: function (key, value) {\\n var entry = findUncaughtFrozen(this, key);\\n if (entry) entry[1] = value;\\n else this.entries.push([key, value]);\\n },\\n 'delete': function (key) {\\n var index = findIndex(this.entries, function (it) {\\n return it[0] === key;\\n });\\n if (~index) splice(this.entries, index, 1);\\n return !!~index;\\n }\\n};\\n\\nmodule.exports = {\\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\\n var Constructor = wrapper(function (that, iterable) {\\n anInstance(that, Prototype);\\n setInternalState(that, {\\n type: CONSTRUCTOR_NAME,\\n id: id++,\\n frozen: undefined\\n });\\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\\n });\\n\\n var Prototype = Constructor.prototype;\\n\\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\\n\\n var define = function (that, key, value) {\\n var state = getInternalState(that);\\n var data = getWeakData(anObject(key), true);\\n if (data === true) uncaughtFrozenStore(state).set(key, value);\\n else data[state.id] = value;\\n return that;\\n };\\n\\n defineBuiltIns(Prototype, {\\n // \`{ WeakMap, WeakSet }.prototype.delete(key)\` methods\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\\n 'delete': function (key) {\\n var state = getInternalState(this);\\n if (!isObject(key)) return false;\\n var data = getWeakData(key);\\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\\n return data && hasOwn(data, state.id) && delete data[state.id];\\n },\\n // \`{ WeakMap, WeakSet }.prototype.has(key)\` methods\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\\n has: function has(key) {\\n var state = getInternalState(this);\\n if (!isObject(key)) return false;\\n var data = getWeakData(key);\\n if (data === true) return uncaughtFrozenStore(state).has(key);\\n return data && hasOwn(data, state.id);\\n }\\n });\\n\\n defineBuiltIns(Prototype, IS_MAP ? {\\n // \`WeakMap.prototype.get(key)\` method\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\\n get: function get(key) {\\n var state = getInternalState(this);\\n if (isObject(key)) {\\n var data = getWeakData(key);\\n if (data === true) return uncaughtFrozenStore(state).get(key);\\n return data ? data[state.id] : undefined;\\n }\\n },\\n // \`WeakMap.prototype.set(key, value)\` method\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\\n set: function set(key, value) {\\n return define(this, key, value);\\n }\\n } : {\\n // \`WeakSet.prototype.add(value)\` method\\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\\n add: function add(value) {\\n return define(this, value, true);\\n }\\n });\\n\\n return Constructor;\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection-weak.js?")}),"./node_modules/core-js/internals/collection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \\"./node_modules/core-js/internals/internal-metadata.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \\"./node_modules/core-js/internals/check-correctness-of-iteration.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\n\\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\\n var ADDER = IS_MAP ? 'set' : 'add';\\n var NativeConstructor = global[CONSTRUCTOR_NAME];\\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\\n var Constructor = NativeConstructor;\\n var exported = {};\\n\\n var fixMethod = function (KEY) {\\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\\n defineBuiltIn(NativePrototype, KEY,\\n KEY == 'add' ? function add(value) {\\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\\n return this;\\n } : KEY == 'delete' ? function (key) {\\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\\n } : KEY == 'get' ? function get(key) {\\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\\n } : KEY == 'has' ? function has(key) {\\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\\n } : function set(key, value) {\\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\\n return this;\\n }\\n );\\n };\\n\\n var REPLACE = isForced(\\n CONSTRUCTOR_NAME,\\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\\n new NativeConstructor().entries().next();\\n }))\\n );\\n\\n if (REPLACE) {\\n // create collection constructor\\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\\n InternalMetadataModule.enable();\\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\\n var instance = new Constructor();\\n // early implementations not supports chaining\\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\\n // most early implementations doesn't supports iterables, most modern - not close it correctly\\n // eslint-disable-next-line no-new -- required for testing\\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\\n // for early implementations -0 and +0 not the same\\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\\n // V8 ~ Chromium 42- fails only with 5+ elements\\n var $instance = new NativeConstructor();\\n var index = 5;\\n while (index--) $instance[ADDER](index, index);\\n return !$instance.has(-0);\\n });\\n\\n if (!ACCEPT_ITERABLES) {\\n Constructor = wrapper(function (dummy, iterable) {\\n anInstance(dummy, NativePrototype);\\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\\n return that;\\n });\\n Constructor.prototype = NativePrototype;\\n NativePrototype.constructor = Constructor;\\n }\\n\\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\\n fixMethod('delete');\\n fixMethod('has');\\n IS_MAP && fixMethod('get');\\n }\\n\\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\\n\\n // weak collections should not contains .clear method\\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\\n }\\n\\n exported[CONSTRUCTOR_NAME] = Constructor;\\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\\n\\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\\n\\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\\n\\n return Constructor;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection.js?")}),"./node_modules/core-js/internals/copy-constructor-properties.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \\"./node_modules/core-js/internals/own-keys.js\\");\\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\n\\nmodule.exports = function (target, source, exceptions) {\\n var keys = ownKeys(source);\\n var defineProperty = definePropertyModule.f;\\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\n for (var i = 0; i < keys.length; i++) {\\n var key = keys[i];\\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\\n }\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/copy-constructor-properties.js?")}),"./node_modules/core-js/internals/correct-is-regexp-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar MATCH = wellKnownSymbol('match');\\n\\nmodule.exports = function (METHOD_NAME) {\\n var regexp = /./;\\n try {\\n '/./'[METHOD_NAME](regexp);\\n } catch (error1) {\\n try {\\n regexp[MATCH] = false;\\n return '/./'[METHOD_NAME](regexp);\\n } catch (error2) { /* empty */ }\\n } return false;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-is-regexp-logic.js?")}),"./node_modules/core-js/internals/correct-prototype-getter.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = !fails(function () {\\n function F() { /* empty */ }\\n F.prototype.constructor = null;\\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\\n return Object.getPrototypeOf(new F()) !== F.prototype;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-prototype-getter.js?")}),"./node_modules/core-js/internals/create-iter-result-object.js":((module)=>{eval("\\n// \`CreateIterResultObject\` abstract operation\\n// https://tc39.es/ecma262/#sec-createiterresultobject\\nmodule.exports = function (value, done) {\\n return { value: value, done: done };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-iter-result-object.js?")}),"./node_modules/core-js/internals/create-non-enumerable-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\n\\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\\n} : function (object, key, value) {\\n object[key] = value;\\n return object;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-non-enumerable-property.js?")}),"./node_modules/core-js/internals/create-property-descriptor.js":((module)=>{eval("\\nmodule.exports = function (bitmap, value) {\\n return {\\n enumerable: !(bitmap & 1),\\n configurable: !(bitmap & 2),\\n writable: !(bitmap & 4),\\n value: value\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property-descriptor.js?")}),"./node_modules/core-js/internals/create-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\n\\nmodule.exports = function (object, key, value) {\\n var propertyKey = toPropertyKey(key);\\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\\n else object[propertyKey] = value;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property.js?")}),"./node_modules/core-js/internals/define-built-in-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \\"./node_modules/core-js/internals/make-built-in.js\\");\\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\n\\nmodule.exports = function (target, name, descriptor) {\\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\\n return defineProperty.f(target, name, descriptor);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in-accessor.js?")}),"./node_modules/core-js/internals/define-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \\"./node_modules/core-js/internals/make-built-in.js\\");\\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \\"./node_modules/core-js/internals/define-global-property.js\\");\\n\\nmodule.exports = function (O, key, value, options) {\\n if (!options) options = {};\\n var simple = options.enumerable;\\n var name = options.name !== undefined ? options.name : key;\\n if (isCallable(value)) makeBuiltIn(value, name, options);\\n if (options.global) {\\n if (simple) O[key] = value;\\n else defineGlobalProperty(key, value);\\n } else {\\n try {\\n if (!options.unsafe) delete O[key];\\n else if (O[key]) simple = true;\\n } catch (error) { /* empty */ }\\n if (simple) O[key] = value;\\n else definePropertyModule.f(O, key, {\\n value: value,\\n enumerable: false,\\n configurable: !options.nonConfigurable,\\n writable: !options.nonWritable\\n });\\n } return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in.js?")}),"./node_modules/core-js/internals/define-built-ins.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\n\\nmodule.exports = function (target, src, options) {\\n for (var key in src) defineBuiltIn(target, key, src[key], options);\\n return target;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-ins.js?")}),"./node_modules/core-js/internals/define-global-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\n\\nmodule.exports = function (key, value) {\\n try {\\n defineProperty(global, key, { value: value, configurable: true, writable: true });\\n } catch (error) {\\n global[key] = value;\\n } return value;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-global-property.js?")}),"./node_modules/core-js/internals/delete-property-or-throw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (O, P) {\\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/delete-property-or-throw.js?")}),"./node_modules/core-js/internals/descriptors.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\n// Detect IE8's incomplete defineProperty implementation\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/descriptors.js?")}),"./node_modules/core-js/internals/document-all.js":((module)=>{eval("\\nvar documentAll = typeof document == 'object' && document.all;\\n\\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\\n\\nmodule.exports = {\\n all: documentAll,\\n IS_HTMLDDA: IS_HTMLDDA\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-all.js?")}),"./node_modules/core-js/internals/document-create-element.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar document = global.document;\\n// typeof document.createElement is 'object' in old IE\\nvar EXISTS = isObject(document) && isObject(document.createElement);\\n\\nmodule.exports = function (it) {\\n return EXISTS ? document.createElement(it) : {};\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-create-element.js?")}),"./node_modules/core-js/internals/does-not-exceed-safe-integer.js":((module)=>{eval("\\nvar $TypeError = TypeError;\\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\\n\\nmodule.exports = function (it) {\\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\\n return it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/does-not-exceed-safe-integer.js?")}),"./node_modules/core-js/internals/dom-exception-constants.js":((module)=>{eval("\\nmodule.exports = {\\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-exception-constants.js?")}),"./node_modules/core-js/internals/dom-iterables.js":((module)=>{eval("\\n// iterable DOM collections\\n// flag - \`iterable\` interface - 'entries', 'keys', 'values', 'forEach' methods\\nmodule.exports = {\\n CSSRuleList: 0,\\n CSSStyleDeclaration: 0,\\n CSSValueList: 0,\\n ClientRectList: 0,\\n DOMRectList: 0,\\n DOMStringList: 0,\\n DOMTokenList: 1,\\n DataTransferItemList: 0,\\n FileList: 0,\\n HTMLAllCollection: 0,\\n HTMLCollection: 0,\\n HTMLFormElement: 0,\\n HTMLSelectElement: 0,\\n MediaList: 0,\\n MimeTypeArray: 0,\\n NamedNodeMap: 0,\\n NodeList: 1,\\n PaintRequestList: 0,\\n Plugin: 0,\\n PluginArray: 0,\\n SVGLengthList: 0,\\n SVGNumberList: 0,\\n SVGPathSegList: 0,\\n SVGPointList: 0,\\n SVGStringList: 0,\\n SVGTransformList: 0,\\n SourceBufferList: 0,\\n StyleSheetList: 0,\\n TextTrackCueList: 0,\\n TextTrackList: 0,\\n TouchList: 0\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-iterables.js?")}),"./node_modules/core-js/internals/dom-token-list-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// in old WebKit versions, \`element.classList\` is not an instance of global \`DOMTokenList\`\\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\n\\nvar classList = documentCreateElement('span').classList;\\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\\n\\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-token-list-prototype.js?")}),"./node_modules/core-js/internals/engine-ff-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nvar firefox = userAgent.match(/firefox\\\\/(\\\\d+)/i);\\n\\nmodule.exports = !!firefox && +firefox[1];\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-ff-version.js?")}),"./node_modules/core-js/internals/engine-is-browser.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \\"./node_modules/core-js/internals/engine-is-deno.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nmodule.exports = !IS_DENO && !IS_NODE\\n && typeof window == 'object'\\n && typeof document == 'object';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-browser.js?")}),"./node_modules/core-js/internals/engine-is-deno.js":((module)=>{eval("\\n/* global Deno -- Deno case */\\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-deno.js?")}),"./node_modules/core-js/internals/engine-is-ie-or-edge.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar UA = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nmodule.exports = /MSIE|Trident/.test(UA);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ie-or-edge.js?")}),"./node_modules/core-js/internals/engine-is-ios-pebble.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios-pebble.js?")}),"./node_modules/core-js/internals/engine-is-ios.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\n// eslint-disable-next-line redos/no-vulnerable -- safe\\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios.js?")}),"./node_modules/core-js/internals/engine-is-node.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\n\\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-node.js?")}),"./node_modules/core-js/internals/engine-is-webos-webkit.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-webos-webkit.js?")}),"./node_modules/core-js/internals/engine-user-agent.js":((module)=>{eval("\\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-user-agent.js?")}),"./node_modules/core-js/internals/engine-v8-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nvar process = global.process;\\nvar Deno = global.Deno;\\nvar versions = process && process.versions || Deno && Deno.version;\\nvar v8 = versions && versions.v8;\\nvar match, version;\\n\\nif (v8) {\\n match = v8.split('.');\\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\\n // but their correct versions are not interesting for us\\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\\n}\\n\\n// BrowserFS NodeJS \`process\` polyfill incorrectly set \`.v8\` to \`0.0\`\\n// so check \`userAgent\` even if \`.v8\` exists, but 0\\nif (!version && userAgent) {\\n match = userAgent.match(/Edge\\\\/(\\\\d+)/);\\n if (!match || match[1] >= 74) {\\n match = userAgent.match(/Chrome\\\\/(\\\\d+)/);\\n if (match) version = +match[1];\\n }\\n}\\n\\nmodule.exports = version;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-v8-version.js?")}),"./node_modules/core-js/internals/engine-webkit-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nvar webkit = userAgent.match(/AppleWebKit\\\\/(\\\\d+)\\\\./);\\n\\nmodule.exports = !!webkit && +webkit[1];\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-webkit-version.js?")}),"./node_modules/core-js/internals/enum-bug-keys.js":((module)=>{eval("\\n// IE8- don't enum bug keys\\nmodule.exports = [\\n 'constructor',\\n 'hasOwnProperty',\\n 'isPrototypeOf',\\n 'propertyIsEnumerable',\\n 'toLocaleString',\\n 'toString',\\n 'valueOf'\\n];\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/enum-bug-keys.js?")}),"./node_modules/core-js/internals/error-stack-clear.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar $Error = Error;\\nvar replace = uncurryThis(''.replace);\\n\\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\\n// eslint-disable-next-line redos/no-vulnerable -- safe\\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\\\n\\\\s*at [^:]*:[^\\\\n]*/;\\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\\n\\nmodule.exports = function (stack, dropEntries) {\\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\\n } return stack;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-clear.js?")}),"./node_modules/core-js/internals/error-stack-install.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \\"./node_modules/core-js/internals/error-stack-clear.js\\");\\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \\"./node_modules/core-js/internals/error-stack-installable.js\\");\\n\\n// non-standard V8\\nvar captureStackTrace = Error.captureStackTrace;\\n\\nmodule.exports = function (error, C, stack, dropEntries) {\\n if (ERROR_STACK_INSTALLABLE) {\\n if (captureStackTrace) captureStackTrace(error, C);\\n else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-install.js?")}),"./node_modules/core-js/internals/error-stack-installable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\n\\nmodule.exports = !fails(function () {\\n var error = Error('a');\\n if (!('stack' in error)) return true;\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\\n return error.stack !== 7;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-installable.js?")}),"./node_modules/core-js/internals/error-to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\n\\nvar nativeErrorToString = Error.prototype.toString;\\n\\nvar INCORRECT_TO_STRING = fails(function () {\\n if (DESCRIPTORS) {\\n // Chrome 32- incorrectly call accessor\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n var object = create(Object.defineProperty({}, 'name', { get: function () {\\n return this === object;\\n } }));\\n if (nativeErrorToString.call(object) !== 'true') return true;\\n }\\n // FF10- does not properly handle non-strings\\n return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\\n // IE8 does not properly handle defaults\\n || nativeErrorToString.call({}) !== 'Error';\\n});\\n\\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\\n var O = anObject(this);\\n var name = normalizeStringArgument(O.name, 'Error');\\n var message = normalizeStringArgument(O.message);\\n return !name ? message : !message ? name : name + ': ' + message;\\n} : nativeErrorToString;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-to-string.js?")}),"./node_modules/core-js/internals/export.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \\"./node_modules/core-js/internals/define-global-property.js\\");\\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \\"./node_modules/core-js/internals/copy-constructor-properties.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\n\\n/*\\n options.target - name of the target object\\n options.global - target is the global object\\n options.stat - export as static methods of target\\n options.proto - export as prototype methods of target\\n options.real - real prototype method for the \`pure\` version\\n options.forced - export even if the native feature is available\\n options.bind - bind methods to the target, required for the \`pure\` version\\n options.wrap - wrap constructors to preventing global pollution, required for the \`pure\` version\\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\\n options.sham - add a flag to not completely full polyfills\\n options.enumerable - export as enumerable property\\n options.dontCallGetSet - prevent calling a getter on target\\n options.name - the .name of the function if it does not match the key\\n*/\\nmodule.exports = function (options, source) {\\n var TARGET = options.target;\\n var GLOBAL = options.global;\\n var STATIC = options.stat;\\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\\n if (GLOBAL) {\\n target = global;\\n } else if (STATIC) {\\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\\n } else {\\n target = (global[TARGET] || {}).prototype;\\n }\\n if (target) for (key in source) {\\n sourceProperty = source[key];\\n if (options.dontCallGetSet) {\\n descriptor = getOwnPropertyDescriptor(target, key);\\n targetProperty = descriptor && descriptor.value;\\n } else targetProperty = target[key];\\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\\n // contained in target\\n if (!FORCED && targetProperty !== undefined) {\\n if (typeof sourceProperty == typeof targetProperty) continue;\\n copyConstructorProperties(sourceProperty, targetProperty);\\n }\\n // add a flag to not completely full polyfills\\n if (options.sham || (targetProperty && targetProperty.sham)) {\\n createNonEnumerableProperty(sourceProperty, 'sham', true);\\n }\\n defineBuiltIn(target, key, sourceProperty, options);\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/export.js?")}),"./node_modules/core-js/internals/fails.js":((module)=>{eval("\\nmodule.exports = function (exec) {\\n try {\\n return !!exec();\\n } catch (error) {\\n return true;\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fails.js?")}),"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove from \`core-js@4\` since it's moved to entry points\\n__webpack_require__(/*! ../modules/es.regexp.exec */ \\"./node_modules/core-js/modules/es.regexp.exec.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\nvar RegExpPrototype = RegExp.prototype;\\n\\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\\n var SYMBOL = wellKnownSymbol(KEY);\\n\\n var DELEGATES_TO_SYMBOL = !fails(function () {\\n // String methods call symbol-named RegEp methods\\n var O = {};\\n O[SYMBOL] = function () { return 7; };\\n return ''[KEY](O) != 7;\\n });\\n\\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\\n // Symbol-named RegExp methods call .exec\\n var execCalled = false;\\n var re = /a/;\\n\\n if (KEY === 'split') {\\n // We can't use real regex here since it causes deoptimization\\n // and serious performance degradation in V8\\n // https://github.com/zloirock/core-js/issues/306\\n re = {};\\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\\n // a new one. We need to return the patched regex when creating the new one.\\n re.constructor = {};\\n re.constructor[SPECIES] = function () { return re; };\\n re.flags = '';\\n re[SYMBOL] = /./[SYMBOL];\\n }\\n\\n re.exec = function () { execCalled = true; return null; };\\n\\n re[SYMBOL]('');\\n return !execCalled;\\n });\\n\\n if (\\n !DELEGATES_TO_SYMBOL ||\\n !DELEGATES_TO_EXEC ||\\n FORCED\\n ) {\\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\\n var $exec = regexp.exec;\\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\\n // The native String method already delegates to @@method (this\\n // polyfilled function), leasing to infinite recursion.\\n // We avoid it by directly calling the native @@method method.\\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\\n }\\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\\n }\\n return { done: false };\\n });\\n\\n defineBuiltIn(String.prototype, KEY, methods[0]);\\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\\n }\\n\\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js?")}),"./node_modules/core-js/internals/flatten-into-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \\"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\n\\n// \`FlattenIntoArray\` abstract operation\\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\\n var targetIndex = start;\\n var sourceIndex = 0;\\n var mapFn = mapper ? bind(mapper, thisArg) : false;\\n var element, elementLen;\\n\\n while (sourceIndex < sourceLen) {\\n if (sourceIndex in source) {\\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\\n\\n if (depth > 0 && isArray(element)) {\\n elementLen = lengthOfArrayLike(element);\\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\\n } else {\\n doesNotExceedSafeInteger(targetIndex + 1);\\n target[targetIndex] = element;\\n }\\n\\n targetIndex++;\\n }\\n sourceIndex++;\\n }\\n return targetIndex;\\n};\\n\\nmodule.exports = flattenIntoArray;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/flatten-into-array.js?")}),"./node_modules/core-js/internals/freezing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\\n return Object.isExtensible(Object.preventExtensions({}));\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/freezing.js?")}),"./node_modules/core-js/internals/function-apply.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar FunctionPrototype = Function.prototype;\\nvar apply = FunctionPrototype.apply;\\nvar call = FunctionPrototype.call;\\n\\n// eslint-disable-next-line es/no-reflect -- safe\\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\\n return call.apply(apply, arguments);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-apply.js?")}),"./node_modules/core-js/internals/function-bind-context.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar bind = uncurryThis(uncurryThis.bind);\\n\\n// optional / simple context binding\\nmodule.exports = function (fn, that) {\\n aCallable(fn);\\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\\n return fn.apply(that, arguments);\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-context.js?")}),"./node_modules/core-js/internals/function-bind-native.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\\n var test = (function () { /* empty */ }).bind();\\n // eslint-disable-next-line no-prototype-builtins -- safe\\n return typeof test != 'function' || test.hasOwnProperty('prototype');\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-native.js?")}),"./node_modules/core-js/internals/function-call.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar call = Function.prototype.call;\\n\\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\\n return call.apply(call, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-call.js?")}),"./node_modules/core-js/internals/function-name.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\n\\nvar FunctionPrototype = Function.prototype;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\\n\\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\\n// additional protection from minified / mangled / dropped function names\\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\\n\\nmodule.exports = {\\n EXISTS: EXISTS,\\n PROPER: PROPER,\\n CONFIGURABLE: CONFIGURABLE\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-name.js?")}),"./node_modules/core-js/internals/function-uncurry-this-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\n\\nmodule.exports = function (object, key, method) {\\n try {\\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\\n } catch (error) { /* empty */ }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-accessor.js?")}),"./node_modules/core-js/internals/function-uncurry-this-clause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nmodule.exports = function (fn) {\\n // Nashorn bug:\\n // https://github.com/zloirock/core-js/issues/1128\\n // https://github.com/zloirock/core-js/issues/1130\\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-clause.js?")}),"./node_modules/core-js/internals/function-uncurry-this.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar FunctionPrototype = Function.prototype;\\nvar call = FunctionPrototype.call;\\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\\n\\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\\n return function () {\\n return call.apply(fn, arguments);\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this.js?")}),"./node_modules/core-js/internals/get-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar aFunction = function (argument) {\\n return isCallable(argument) ? argument : undefined;\\n};\\n\\nmodule.exports = function (namespace, method) {\\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-built-in.js?")}),"./node_modules/core-js/internals/get-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = function (it) {\\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\\n || getMethod(it, '@@iterator')\\n || Iterators[classof(it)];\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator-method.js?")}),"./node_modules/core-js/internals/get-iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument, usingIterator) {\\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\\n throw $TypeError(tryToString(argument) + ' is not iterable');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator.js?")}),"./node_modules/core-js/internals/get-json-replacer-function.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (replacer) {\\n if (isCallable(replacer)) return replacer;\\n if (!isArray(replacer)) return;\\n var rawLength = replacer.length;\\n var keys = [];\\n for (var i = 0; i < rawLength; i++) {\\n var element = replacer[i];\\n if (typeof element == 'string') push(keys, element);\\n else if (typeof element == 'number' || classof(element) == 'Number' || classof(element) == 'String') push(keys, toString(element));\\n }\\n var keysLength = keys.length;\\n var root = true;\\n return function (key, value) {\\n if (root) {\\n root = false;\\n return value;\\n }\\n if (isArray(this)) return value;\\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-json-replacer-function.js?")}),"./node_modules/core-js/internals/get-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\n\\n// \`GetMethod\` abstract operation\\n// https://tc39.es/ecma262/#sec-getmethod\\nmodule.exports = function (V, P) {\\n var func = V[P];\\n return isNullOrUndefined(func) ? undefined : aCallable(func);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-method.js?")}),"./node_modules/core-js/internals/get-substitution.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\n\\nvar floor = Math.floor;\\nvar charAt = uncurryThis(''.charAt);\\nvar replace = uncurryThis(''.replace);\\nvar stringSlice = uncurryThis(''.slice);\\n// eslint-disable-next-line redos/no-vulnerable -- safe\\nvar SUBSTITUTION_SYMBOLS = /\\\\$([$&'\`]|\\\\d{1,2}|<[^>]*>)/g;\\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\\\$([$&'\`]|\\\\d{1,2})/g;\\n\\n// \`GetSubstitution\` abstract operation\\n// https://tc39.es/ecma262/#sec-getsubstitution\\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\\n var tailPos = position + matched.length;\\n var m = captures.length;\\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\\n if (namedCaptures !== undefined) {\\n namedCaptures = toObject(namedCaptures);\\n symbols = SUBSTITUTION_SYMBOLS;\\n }\\n return replace(replacement, symbols, function (match, ch) {\\n var capture;\\n switch (charAt(ch, 0)) {\\n case '$': return '$';\\n case '&': return matched;\\n case '\`': return stringSlice(str, 0, position);\\n case \\"'\\": return stringSlice(str, tailPos);\\n case '<':\\n capture = namedCaptures[stringSlice(ch, 1, -1)];\\n break;\\n default: // \\\\d\\\\d?\\n var n = +ch;\\n if (n === 0) return match;\\n if (n > m) {\\n var f = floor(n / 10);\\n if (f === 0) return match;\\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\\n return match;\\n }\\n capture = captures[n - 1];\\n }\\n return capture === undefined ? '' : capture;\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-substitution.js?")}),"./node_modules/core-js/internals/global.js":(function(module,__unused_webpack_exports,__webpack_require__){eval("\\nvar check = function (it) {\\n return it && it.Math == Math && it;\\n};\\n\\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\\nmodule.exports =\\n // eslint-disable-next-line es/no-global-this -- safe\\n check(typeof globalThis == 'object' && globalThis) ||\\n check(typeof window == 'object' && window) ||\\n // eslint-disable-next-line no-restricted-globals -- safe\\n check(typeof self == 'object' && self) ||\\n check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\\n // eslint-disable-next-line no-new-func -- fallback\\n (function () { return this; })() || this || Function('return this')();\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/global.js?")}),"./node_modules/core-js/internals/has-own-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\n\\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\\n\\n// \`HasOwnProperty\` abstract operation\\n// https://tc39.es/ecma262/#sec-hasownproperty\\n// eslint-disable-next-line es/no-object-hasown -- safe\\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\\n return hasOwnProperty(toObject(it), key);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/has-own-property.js?")}),"./node_modules/core-js/internals/hidden-keys.js":((module)=>{eval("\\nmodule.exports = {};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/hidden-keys.js?")}),"./node_modules/core-js/internals/host-report-errors.js":((module)=>{eval("\\nmodule.exports = function (a, b) {\\n try {\\n // eslint-disable-next-line no-console -- safe\\n arguments.length == 1 ? console.error(a) : console.error(a, b);\\n } catch (error) { /* empty */ }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/host-report-errors.js?")}),"./node_modules/core-js/internals/html.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\n\\nmodule.exports = getBuiltIn('document', 'documentElement');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/html.js?")}),"./node_modules/core-js/internals/ie8-dom-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\n\\n// Thanks to IE8 for its funny defineProperty\\nmodule.exports = !DESCRIPTORS && !fails(function () {\\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\\n return Object.defineProperty(createElement('div'), 'a', {\\n get: function () { return 7; }\\n }).a != 7;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ie8-dom-define.js?")}),"./node_modules/core-js/internals/ieee754.js":((module)=>{eval("\\n// IEEE754 conversions based on https://github.com/feross/ieee754\\nvar $Array = Array;\\nvar abs = Math.abs;\\nvar pow = Math.pow;\\nvar floor = Math.floor;\\nvar log = Math.log;\\nvar LN2 = Math.LN2;\\n\\nvar pack = function (number, mantissaLength, bytes) {\\n var buffer = $Array(bytes);\\n var exponentLength = bytes * 8 - mantissaLength - 1;\\n var eMax = (1 << exponentLength) - 1;\\n var eBias = eMax >> 1;\\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\\n var index = 0;\\n var exponent, mantissa, c;\\n number = abs(number);\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (number != number || number === Infinity) {\\n // eslint-disable-next-line no-self-compare -- NaN check\\n mantissa = number != number ? 1 : 0;\\n exponent = eMax;\\n } else {\\n exponent = floor(log(number) / LN2);\\n c = pow(2, -exponent);\\n if (number * c < 1) {\\n exponent--;\\n c *= 2;\\n }\\n if (exponent + eBias >= 1) {\\n number += rt / c;\\n } else {\\n number += rt * pow(2, 1 - eBias);\\n }\\n if (number * c >= 2) {\\n exponent++;\\n c /= 2;\\n }\\n if (exponent + eBias >= eMax) {\\n mantissa = 0;\\n exponent = eMax;\\n } else if (exponent + eBias >= 1) {\\n mantissa = (number * c - 1) * pow(2, mantissaLength);\\n exponent = exponent + eBias;\\n } else {\\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\\n exponent = 0;\\n }\\n }\\n while (mantissaLength >= 8) {\\n buffer[index++] = mantissa & 255;\\n mantissa /= 256;\\n mantissaLength -= 8;\\n }\\n exponent = exponent << mantissaLength | mantissa;\\n exponentLength += mantissaLength;\\n while (exponentLength > 0) {\\n buffer[index++] = exponent & 255;\\n exponent /= 256;\\n exponentLength -= 8;\\n }\\n buffer[--index] |= sign * 128;\\n return buffer;\\n};\\n\\nvar unpack = function (buffer, mantissaLength) {\\n var bytes = buffer.length;\\n var exponentLength = bytes * 8 - mantissaLength - 1;\\n var eMax = (1 << exponentLength) - 1;\\n var eBias = eMax >> 1;\\n var nBits = exponentLength - 7;\\n var index = bytes - 1;\\n var sign = buffer[index--];\\n var exponent = sign & 127;\\n var mantissa;\\n sign >>= 7;\\n while (nBits > 0) {\\n exponent = exponent * 256 + buffer[index--];\\n nBits -= 8;\\n }\\n mantissa = exponent & (1 << -nBits) - 1;\\n exponent >>= -nBits;\\n nBits += mantissaLength;\\n while (nBits > 0) {\\n mantissa = mantissa * 256 + buffer[index--];\\n nBits -= 8;\\n }\\n if (exponent === 0) {\\n exponent = 1 - eBias;\\n } else if (exponent === eMax) {\\n return mantissa ? NaN : sign ? -Infinity : Infinity;\\n } else {\\n mantissa = mantissa + pow(2, mantissaLength);\\n exponent = exponent - eBias;\\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\\n};\\n\\nmodule.exports = {\\n pack: pack,\\n unpack: unpack\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ieee754.js?")}),"./node_modules/core-js/internals/indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\n\\nvar $Object = Object;\\nvar split = uncurryThis(''.split);\\n\\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\\nmodule.exports = fails(function () {\\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\\n // eslint-disable-next-line no-prototype-builtins -- safe\\n return !$Object('z').propertyIsEnumerable(0);\\n}) ? function (it) {\\n return classof(it) == 'String' ? split(it, '') : $Object(it);\\n} : $Object;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/indexed-object.js?")}),"./node_modules/core-js/internals/inherit-if-required.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\n\\n// makes subclassing work correct for wrapped built-ins\\nmodule.exports = function ($this, dummy, Wrapper) {\\n var NewTarget, NewTargetPrototype;\\n if (\\n // it can work only with native \`setPrototypeOf\`\\n setPrototypeOf &&\\n // we haven't completely correct pre-ES6 way for getting \`new.target\`, so use this\\n isCallable(NewTarget = dummy.constructor) &&\\n NewTarget !== Wrapper &&\\n isObject(NewTargetPrototype = NewTarget.prototype) &&\\n NewTargetPrototype !== Wrapper.prototype\\n ) setPrototypeOf($this, NewTargetPrototype);\\n return $this;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inherit-if-required.js?")}),"./node_modules/core-js/internals/inspect-source.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar store = __webpack_require__(/*! ../internals/shared-store */ \\"./node_modules/core-js/internals/shared-store.js\\");\\n\\nvar functionToString = uncurryThis(Function.toString);\\n\\n// this helper broken in \`core-js@3.4.1-3.4.4\`, so we can't use \`shared\` helper\\nif (!isCallable(store.inspectSource)) {\\n store.inspectSource = function (it) {\\n return functionToString(it);\\n };\\n}\\n\\nmodule.exports = store.inspectSource;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inspect-source.js?")}),"./node_modules/core-js/internals/install-error-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\n\\n// \`InstallErrorCause\` abstract operation\\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\\nmodule.exports = function (O, options) {\\n if (isObject(options) && 'cause' in options) {\\n createNonEnumerableProperty(O, 'cause', options.cause);\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/install-error-cause.js?")}),"./node_modules/core-js/internals/internal-metadata.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\");\\nvar getOwnPropertyNamesExternalModule = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ \\"./node_modules/core-js/internals/object-get-own-property-names-external.js\\");\\nvar isExtensible = __webpack_require__(/*! ../internals/object-is-extensible */ \\"./node_modules/core-js/internals/object-is-extensible.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \\"./node_modules/core-js/internals/freezing.js\\");\\n\\nvar REQUIRED = false;\\nvar METADATA = uid('meta');\\nvar id = 0;\\n\\nvar setMetadata = function (it) {\\n defineProperty(it, METADATA, { value: {\\n objectID: 'O' + id++, // object ID\\n weakData: {} // weak collections IDs\\n } });\\n};\\n\\nvar fastKey = function (it, create) {\\n // return a primitive with prefix\\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\\n if (!hasOwn(it, METADATA)) {\\n // can't set metadata to uncaught frozen object\\n if (!isExtensible(it)) return 'F';\\n // not necessary to add metadata\\n if (!create) return 'E';\\n // add missing metadata\\n setMetadata(it);\\n // return object ID\\n } return it[METADATA].objectID;\\n};\\n\\nvar getWeakData = function (it, create) {\\n if (!hasOwn(it, METADATA)) {\\n // can't set metadata to uncaught frozen object\\n if (!isExtensible(it)) return true;\\n // not necessary to add metadata\\n if (!create) return false;\\n // add missing metadata\\n setMetadata(it);\\n // return the store of weak collections IDs\\n } return it[METADATA].weakData;\\n};\\n\\n// add metadata on freeze-family methods calling\\nvar onFreeze = function (it) {\\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\\n return it;\\n};\\n\\nvar enable = function () {\\n meta.enable = function () { /* empty */ };\\n REQUIRED = true;\\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\\n var splice = uncurryThis([].splice);\\n var test = {};\\n test[METADATA] = 1;\\n\\n // prevent exposing of metadata key\\n if (getOwnPropertyNames(test).length) {\\n getOwnPropertyNamesModule.f = function (it) {\\n var result = getOwnPropertyNames(it);\\n for (var i = 0, length = result.length; i < length; i++) {\\n if (result[i] === METADATA) {\\n splice(result, i, 1);\\n break;\\n }\\n } return result;\\n };\\n\\n $({ target: 'Object', stat: true, forced: true }, {\\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\\n });\\n }\\n};\\n\\nvar meta = module.exports = {\\n enable: enable,\\n fastKey: fastKey,\\n getWeakData: getWeakData,\\n onFreeze: onFreeze\\n};\\n\\nhiddenKeys[METADATA] = true;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-metadata.js?")}),"./node_modules/core-js/internals/internal-state.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \\"./node_modules/core-js/internals/weak-map-basic-detection.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar shared = __webpack_require__(/*! ../internals/shared-store */ \\"./node_modules/core-js/internals/shared-store.js\\");\\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \\"./node_modules/core-js/internals/shared-key.js\\");\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\n\\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\\nvar TypeError = global.TypeError;\\nvar WeakMap = global.WeakMap;\\nvar set, get, has;\\n\\nvar enforce = function (it) {\\n return has(it) ? get(it) : set(it, {});\\n};\\n\\nvar getterFor = function (TYPE) {\\n return function (it) {\\n var state;\\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\\n } return state;\\n };\\n};\\n\\nif (NATIVE_WEAK_MAP || shared.state) {\\n var store = shared.state || (shared.state = new WeakMap());\\n /* eslint-disable no-self-assign -- prototype methods protection */\\n store.get = store.get;\\n store.has = store.has;\\n store.set = store.set;\\n /* eslint-enable no-self-assign -- prototype methods protection */\\n set = function (it, metadata) {\\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\\n metadata.facade = it;\\n store.set(it, metadata);\\n return metadata;\\n };\\n get = function (it) {\\n return store.get(it) || {};\\n };\\n has = function (it) {\\n return store.has(it);\\n };\\n} else {\\n var STATE = sharedKey('state');\\n hiddenKeys[STATE] = true;\\n set = function (it, metadata) {\\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\\n metadata.facade = it;\\n createNonEnumerableProperty(it, STATE, metadata);\\n return metadata;\\n };\\n get = function (it) {\\n return hasOwn(it, STATE) ? it[STATE] : {};\\n };\\n has = function (it) {\\n return hasOwn(it, STATE);\\n };\\n}\\n\\nmodule.exports = {\\n set: set,\\n get: get,\\n has: has,\\n enforce: enforce,\\n getterFor: getterFor\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-state.js?")}),"./node_modules/core-js/internals/is-array-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar ArrayPrototype = Array.prototype;\\n\\n// check on default Array iterator\\nmodule.exports = function (it) {\\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array-iterator-method.js?")}),"./node_modules/core-js/internals/is-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\n\\n// \`IsArray\` abstract operation\\n// https://tc39.es/ecma262/#sec-isarray\\n// eslint-disable-next-line es/no-array-isarray -- safe\\nmodule.exports = Array.isArray || function isArray(argument) {\\n return classof(argument) == 'Array';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array.js?")}),"./node_modules/core-js/internals/is-big-int-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\n\\nmodule.exports = function (it) {\\n var klass = classof(it);\\n return klass == 'BigInt64Array' || klass == 'BigUint64Array';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-big-int-array.js?")}),"./node_modules/core-js/internals/is-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \\"./node_modules/core-js/internals/document-all.js\\");\\n\\nvar documentAll = $documentAll.all;\\n\\n// \`IsCallable\` abstract operation\\n// https://tc39.es/ecma262/#sec-iscallable\\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\\n return typeof argument == 'function' || argument === documentAll;\\n} : function (argument) {\\n return typeof argument == 'function';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-callable.js?")}),"./node_modules/core-js/internals/is-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \\"./node_modules/core-js/internals/inspect-source.js\\");\\n\\nvar noop = function () { /* empty */ };\\nvar empty = [];\\nvar construct = getBuiltIn('Reflect', 'construct');\\nvar constructorRegExp = /^\\\\s*(?:class|function)\\\\b/;\\nvar exec = uncurryThis(constructorRegExp.exec);\\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\\n\\nvar isConstructorModern = function isConstructor(argument) {\\n if (!isCallable(argument)) return false;\\n try {\\n construct(noop, empty, argument);\\n return true;\\n } catch (error) {\\n return false;\\n }\\n};\\n\\nvar isConstructorLegacy = function isConstructor(argument) {\\n if (!isCallable(argument)) return false;\\n switch (classof(argument)) {\\n case 'AsyncFunction':\\n case 'GeneratorFunction':\\n case 'AsyncGeneratorFunction': return false;\\n }\\n try {\\n // we can't check .prototype since constructors produced by .bind haven't it\\n // \`Function#toString\` throws on some built-it function in some legacy engines\\n // (for example, \`DOMQuad\` and similar in FF41-)\\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\\n } catch (error) {\\n return true;\\n }\\n};\\n\\nisConstructorLegacy.sham = true;\\n\\n// \`IsConstructor\` abstract operation\\n// https://tc39.es/ecma262/#sec-isconstructor\\nmodule.exports = !construct || fails(function () {\\n var called;\\n return isConstructorModern(isConstructorModern.call)\\n || !isConstructorModern(Object)\\n || !isConstructorModern(function () { called = true; })\\n || called;\\n}) ? isConstructorLegacy : isConstructorModern;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-constructor.js?")}),"./node_modules/core-js/internals/is-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar replacement = /#|\\\\.prototype\\\\./;\\n\\nvar isForced = function (feature, detection) {\\n var value = data[normalize(feature)];\\n return value == POLYFILL ? true\\n : value == NATIVE ? false\\n : isCallable(detection) ? fails(detection)\\n : !!detection;\\n};\\n\\nvar normalize = isForced.normalize = function (string) {\\n return String(string).replace(replacement, '.').toLowerCase();\\n};\\n\\nvar data = isForced.data = {};\\nvar NATIVE = isForced.NATIVE = 'N';\\nvar POLYFILL = isForced.POLYFILL = 'P';\\n\\nmodule.exports = isForced;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-forced.js?")}),"./node_modules/core-js/internals/is-integral-number.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar floor = Math.floor;\\n\\n// \`IsIntegralNumber\` abstract operation\\n// https://tc39.es/ecma262/#sec-isintegralnumber\\n// eslint-disable-next-line es/no-number-isinteger -- safe\\nmodule.exports = Number.isInteger || function isInteger(it) {\\n return !isObject(it) && isFinite(it) && floor(it) === it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-integral-number.js?")}),"./node_modules/core-js/internals/is-null-or-undefined.js":((module)=>{eval("\\n// we can't use just \`it == null\` since of \`document.all\` special case\\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\\nmodule.exports = function (it) {\\n return it === null || it === undefined;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-null-or-undefined.js?")}),"./node_modules/core-js/internals/is-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \\"./node_modules/core-js/internals/document-all.js\\");\\n\\nvar documentAll = $documentAll.all;\\n\\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\\n} : function (it) {\\n return typeof it == 'object' ? it !== null : isCallable(it);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-object.js?")}),"./node_modules/core-js/internals/is-pure.js":((module)=>{eval("\\nmodule.exports = false;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-pure.js?")}),"./node_modules/core-js/internals/is-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar MATCH = wellKnownSymbol('match');\\n\\n// \`IsRegExp\` abstract operation\\n// https://tc39.es/ecma262/#sec-isregexp\\nmodule.exports = function (it) {\\n var isRegExp;\\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-regexp.js?")}),"./node_modules/core-js/internals/is-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \\"./node_modules/core-js/internals/use-symbol-as-uid.js\\");\\n\\nvar $Object = Object;\\n\\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\\n return typeof it == 'symbol';\\n} : function (it) {\\n var $Symbol = getBuiltIn('Symbol');\\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-symbol.js?")}),"./node_modules/core-js/internals/iterate.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \\"./node_modules/core-js/internals/is-array-iterator-method.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \\"./node_modules/core-js/internals/iterator-close.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nvar Result = function (stopped, result) {\\n this.stopped = stopped;\\n this.result = result;\\n};\\n\\nvar ResultPrototype = Result.prototype;\\n\\nmodule.exports = function (iterable, unboundFunction, options) {\\n var that = options && options.that;\\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\\n var IS_RECORD = !!(options && options.IS_RECORD);\\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\\n var INTERRUPTED = !!(options && options.INTERRUPTED);\\n var fn = bind(unboundFunction, that);\\n var iterator, iterFn, index, length, result, next, step;\\n\\n var stop = function (condition) {\\n if (iterator) iteratorClose(iterator, 'normal', condition);\\n return new Result(true, condition);\\n };\\n\\n var callFn = function (value) {\\n if (AS_ENTRIES) {\\n anObject(value);\\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\\n } return INTERRUPTED ? fn(value, stop) : fn(value);\\n };\\n\\n if (IS_RECORD) {\\n iterator = iterable.iterator;\\n } else if (IS_ITERATOR) {\\n iterator = iterable;\\n } else {\\n iterFn = getIteratorMethod(iterable);\\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\\n // optimisation for array iterators\\n if (isArrayIteratorMethod(iterFn)) {\\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\\n result = callFn(iterable[index]);\\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\\n } return new Result(false);\\n }\\n iterator = getIterator(iterable, iterFn);\\n }\\n\\n next = IS_RECORD ? iterable.next : iterator.next;\\n while (!(step = call(next, iterator)).done) {\\n try {\\n result = callFn(step.value);\\n } catch (error) {\\n iteratorClose(iterator, 'throw', error);\\n }\\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\\n } return new Result(false);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterate.js?")}),"./node_modules/core-js/internals/iterator-close.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\n\\nmodule.exports = function (iterator, kind, value) {\\n var innerResult, innerError;\\n anObject(iterator);\\n try {\\n innerResult = getMethod(iterator, 'return');\\n if (!innerResult) {\\n if (kind === 'throw') throw value;\\n return value;\\n }\\n innerResult = call(innerResult, iterator);\\n } catch (error) {\\n innerError = true;\\n innerResult = error;\\n }\\n if (kind === 'throw') throw value;\\n if (innerError) throw innerResult;\\n anObject(innerResult);\\n return value;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-close.js?")}),"./node_modules/core-js/internals/iterator-create-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ \\"./node_modules/core-js/internals/iterators-core.js\\").IteratorPrototype);\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\n\\nvar returnThis = function () { return this; };\\n\\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\\n var TO_STRING_TAG = NAME + ' Iterator';\\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\\n Iterators[TO_STRING_TAG] = returnThis;\\n return IteratorConstructor;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-create-constructor.js?")}),"./node_modules/core-js/internals/iterator-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \\"./node_modules/core-js/internals/iterator-create-constructor.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \\"./node_modules/core-js/internals/iterators-core.js\\");\\n\\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar KEYS = 'keys';\\nvar VALUES = 'values';\\nvar ENTRIES = 'entries';\\n\\nvar returnThis = function () { return this; };\\n\\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\\n createIteratorConstructor(IteratorConstructor, NAME, next);\\n\\n var getIterationMethod = function (KIND) {\\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\\n switch (KIND) {\\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\\n } return function () { return new IteratorConstructor(this); };\\n };\\n\\n var TO_STRING_TAG = NAME + ' Iterator';\\n var INCORRECT_VALUES_NAME = false;\\n var IterablePrototype = Iterable.prototype;\\n var nativeIterator = IterablePrototype[ITERATOR]\\n || IterablePrototype['@@iterator']\\n || DEFAULT && IterablePrototype[DEFAULT];\\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\\n var CurrentIteratorPrototype, methods, KEY;\\n\\n // fix native\\n if (anyNativeIterator) {\\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\\n if (setPrototypeOf) {\\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\\n }\\n }\\n // Set @@toStringTag to native iterators\\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\\n }\\n }\\n\\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\\n } else {\\n INCORRECT_VALUES_NAME = true;\\n defaultIterator = function values() { return call(nativeIterator, this); };\\n }\\n }\\n\\n // export additional methods\\n if (DEFAULT) {\\n methods = {\\n values: getIterationMethod(VALUES),\\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\\n entries: getIterationMethod(ENTRIES)\\n };\\n if (FORCED) for (KEY in methods) {\\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\\n }\\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\\n }\\n\\n // define iterator\\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\\n }\\n Iterators[NAME] = defaultIterator;\\n\\n return methods;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-define.js?")}),"./node_modules/core-js/internals/iterators-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar BUGGY_SAFARI_ITERATORS = false;\\n\\n// \`%IteratorPrototype%\` object\\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\\n\\n/* eslint-disable es/no-array-prototype-keys -- safe */\\nif ([].keys) {\\n arrayIterator = [].keys();\\n // Safari 8 has buggy iterators w/o \`next\`\\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\\n else {\\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\\n }\\n}\\n\\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\\n var test = {};\\n // FF44- legacy iterators case\\n return IteratorPrototype[ITERATOR].call(test) !== test;\\n});\\n\\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\\n\\n// \`%IteratorPrototype%[@@iterator]()\` method\\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\\nif (!isCallable(IteratorPrototype[ITERATOR])) {\\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\\n return this;\\n });\\n}\\n\\nmodule.exports = {\\n IteratorPrototype: IteratorPrototype,\\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators-core.js?")}),"./node_modules/core-js/internals/iterators.js":((module)=>{eval("\\nmodule.exports = {};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators.js?")}),"./node_modules/core-js/internals/length-of-array-like.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\n\\n// \`LengthOfArrayLike\` abstract operation\\n// https://tc39.es/ecma262/#sec-lengthofarraylike\\nmodule.exports = function (obj) {\\n return toLength(obj.length);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/length-of-array-like.js?")}),"./node_modules/core-js/internals/make-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\").CONFIGURABLE);\\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \\"./node_modules/core-js/internals/inspect-source.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar $String = String;\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar stringSlice = uncurryThis(''.slice);\\nvar replace = uncurryThis(''.replace);\\nvar join = uncurryThis([].join);\\n\\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\\n});\\n\\nvar TEMPLATE = String(String).split('String');\\n\\nvar makeBuiltIn = module.exports = function (value, name, options) {\\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\\n name = '[' + replace($String(name), /^Symbol\\\\(([^)]*)\\\\)/, '$1') + ']';\\n }\\n if (options && options.getter) name = 'get ' + name;\\n if (options && options.setter) name = 'set ' + name;\\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\\n else value.name = name;\\n }\\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\\n defineProperty(value, 'length', { value: options.arity });\\n }\\n try {\\n if (options && hasOwn(options, 'constructor') && options.constructor) {\\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\\n // in V8 ~ Chrome 53, prototypes of some methods, like \`Array.prototype.values\`, are non-writable\\n } else if (value.prototype) value.prototype = undefined;\\n } catch (error) { /* empty */ }\\n var state = enforceInternalState(value);\\n if (!hasOwn(state, 'source')) {\\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\\n } return value;\\n};\\n\\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\\n// eslint-disable-next-line no-extend-native -- required\\nFunction.prototype.toString = makeBuiltIn(function toString() {\\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\\n}, 'toString');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/make-built-in.js?")}),"./node_modules/core-js/internals/map-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\n// eslint-disable-next-line es/no-map -- safe\\nvar MapPrototype = Map.prototype;\\n\\nmodule.exports = {\\n // eslint-disable-next-line es/no-map -- safe\\n Map: Map,\\n set: uncurryThis(MapPrototype.set),\\n get: uncurryThis(MapPrototype.get),\\n has: uncurryThis(MapPrototype.has),\\n remove: uncurryThis(MapPrototype['delete']),\\n proto: MapPrototype\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/map-helpers.js?")}),"./node_modules/core-js/internals/math-trunc.js":((module)=>{eval("\\nvar ceil = Math.ceil;\\nvar floor = Math.floor;\\n\\n// \`Math.trunc\` method\\n// https://tc39.es/ecma262/#sec-math.trunc\\n// eslint-disable-next-line es/no-math-trunc -- safe\\nmodule.exports = Math.trunc || function trunc(x) {\\n var n = +x;\\n return (n > 0 ? floor : ceil)(n);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/math-trunc.js?")}),"./node_modules/core-js/internals/microtask.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar macrotask = (__webpack_require__(/*! ../internals/task */ \\"./node_modules/core-js/internals/task.js\\").set);\\nvar Queue = __webpack_require__(/*! ../internals/queue */ \\"./node_modules/core-js/internals/queue.js\\");\\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \\"./node_modules/core-js/internals/engine-is-ios.js\\");\\nvar IS_IOS_PEBBLE = __webpack_require__(/*! ../internals/engine-is-ios-pebble */ \\"./node_modules/core-js/internals/engine-is-ios-pebble.js\\");\\nvar IS_WEBOS_WEBKIT = __webpack_require__(/*! ../internals/engine-is-webos-webkit */ \\"./node_modules/core-js/internals/engine-is-webos-webkit.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\\nvar document = global.document;\\nvar process = global.process;\\nvar Promise = global.Promise;\\n// Node.js 11 shows ExperimentalWarning on getting \`queueMicrotask\`\\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\\nvar notify, toggle, node, promise, then;\\n\\n// modern engines have queueMicrotask method\\nif (!microtask) {\\n var queue = new Queue();\\n\\n var flush = function () {\\n var parent, fn;\\n if (IS_NODE && (parent = process.domain)) parent.exit();\\n while (fn = queue.get()) try {\\n fn();\\n } catch (error) {\\n if (queue.head) notify();\\n throw error;\\n }\\n if (parent) parent.enter();\\n };\\n\\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\\n toggle = true;\\n node = document.createTextNode('');\\n new MutationObserver(flush).observe(node, { characterData: true });\\n notify = function () {\\n node.data = toggle = !toggle;\\n };\\n // environments with maybe non-completely correct, but existent Promise\\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\\n // Promise.resolve without an argument throws an error in LG WebOS 2\\n promise = Promise.resolve(undefined);\\n // workaround of WebKit ~ iOS Safari 10.1 bug\\n promise.constructor = Promise;\\n then = bind(promise.then, promise);\\n notify = function () {\\n then(flush);\\n };\\n // Node.js without promises\\n } else if (IS_NODE) {\\n notify = function () {\\n process.nextTick(flush);\\n };\\n // for other environments - macrotask based on:\\n // - setImmediate\\n // - MessageChannel\\n // - window.postMessage\\n // - onreadystatechange\\n // - setTimeout\\n } else {\\n // \`webpack\` dev server bug on IE global methods - use bind(fn, global)\\n macrotask = bind(macrotask, global);\\n notify = function () {\\n macrotask(flush);\\n };\\n }\\n\\n microtask = function (fn) {\\n if (!queue.head) notify();\\n queue.add(fn);\\n };\\n}\\n\\nmodule.exports = microtask;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/microtask.js?")}),"./node_modules/core-js/internals/new-promise-capability.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nvar PromiseCapability = function (C) {\\n var resolve, reject;\\n this.promise = new C(function ($$resolve, $$reject) {\\n if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\\n resolve = $$resolve;\\n reject = $$reject;\\n });\\n this.resolve = aCallable(resolve);\\n this.reject = aCallable(reject);\\n};\\n\\n// \`NewPromiseCapability\` abstract operation\\n// https://tc39.es/ecma262/#sec-newpromisecapability\\nmodule.exports.f = function (C) {\\n return new PromiseCapability(C);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/new-promise-capability.js?")}),"./node_modules/core-js/internals/normalize-string-argument.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\n\\nmodule.exports = function (argument, $default) {\\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/normalize-string-argument.js?")}),"./node_modules/core-js/internals/not-a-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it) {\\n if (isRegExp(it)) {\\n throw $TypeError(\\"The method doesn't accept regular expressions\\");\\n } return it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/not-a-regexp.js?")}),"./node_modules/core-js/internals/number-parse-float.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").trim);\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar charAt = uncurryThis(''.charAt);\\nvar $parseFloat = global.parseFloat;\\nvar Symbol = global.Symbol;\\nvar ITERATOR = Symbol && Symbol.iterator;\\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\\n // MS Edge 18- broken with boxed symbols\\n || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\\n\\n// \`parseFloat\` method\\n// https://tc39.es/ecma262/#sec-parsefloat-string\\nmodule.exports = FORCED ? function parseFloat(string) {\\n var trimmedString = trim(toString(string));\\n var result = $parseFloat(trimmedString);\\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\\n} : $parseFloat;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-float.js?")}),"./node_modules/core-js/internals/number-parse-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").trim);\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar $parseInt = global.parseInt;\\nvar Symbol = global.Symbol;\\nvar ITERATOR = Symbol && Symbol.iterator;\\nvar hex = /^[+-]?0x/i;\\nvar exec = uncurryThis(hex.exec);\\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\\n // MS Edge 18- broken with boxed symbols\\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\\n\\n// \`parseInt\` method\\n// https://tc39.es/ecma262/#sec-parseint-string-radix\\nmodule.exports = FORCED ? function parseInt(string, radix) {\\n var S = trim(toString(string));\\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\\n} : $parseInt;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-int.js?")}),"./node_modules/core-js/internals/object-assign.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \\"./node_modules/core-js/internals/object-keys.js\\");\\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \\"./node_modules/core-js/internals/object-get-own-property-symbols.js\\");\\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \\"./node_modules/core-js/internals/object-property-is-enumerable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\n\\n// eslint-disable-next-line es/no-object-assign -- safe\\nvar $assign = Object.assign;\\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\\nvar defineProperty = Object.defineProperty;\\nvar concat = uncurryThis([].concat);\\n\\n// \`Object.assign\` method\\n// https://tc39.es/ecma262/#sec-object.assign\\nmodule.exports = !$assign || fails(function () {\\n // should have correct order of operations (Edge bug)\\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\\n enumerable: true,\\n get: function () {\\n defineProperty(this, 'b', {\\n value: 3,\\n enumerable: false\\n });\\n }\\n }), { b: 2 })).b !== 1) return true;\\n // should work with symbols and should have deterministic property order (V8 bug)\\n var A = {};\\n var B = {};\\n // eslint-disable-next-line es/no-symbol -- safe\\n var symbol = Symbol();\\n var alphabet = 'abcdefghijklmnopqrst';\\n A[symbol] = 7;\\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for \`.length\`\\n var T = toObject(target);\\n var argumentsLength = arguments.length;\\n var index = 1;\\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\\n while (argumentsLength > index) {\\n var S = IndexedObject(arguments[index++]);\\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\\n var length = keys.length;\\n var j = 0;\\n var key;\\n while (length > j) {\\n key = keys[j++];\\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\\n }\\n } return T;\\n} : $assign;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-assign.js?")}),"./node_modules/core-js/internals/object-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* global ActiveXObject -- old IE, WSH */\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ \\"./node_modules/core-js/internals/object-define-properties.js\\");\\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \\"./node_modules/core-js/internals/enum-bug-keys.js\\");\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\nvar html = __webpack_require__(/*! ../internals/html */ \\"./node_modules/core-js/internals/html.js\\");\\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \\"./node_modules/core-js/internals/shared-key.js\\");\\n\\nvar GT = '>';\\nvar LT = '<';\\nvar PROTOTYPE = 'prototype';\\nvar SCRIPT = 'script';\\nvar IE_PROTO = sharedKey('IE_PROTO');\\n\\nvar EmptyConstructor = function () { /* empty */ };\\n\\nvar scriptTag = function (content) {\\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\\n};\\n\\n// Create object with fake \`null\` prototype: use ActiveX Object with cleared prototype\\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\\n activeXDocument.write(scriptTag(''));\\n activeXDocument.close();\\n var temp = activeXDocument.parentWindow.Object;\\n activeXDocument = null; // avoid memory leak\\n return temp;\\n};\\n\\n// Create object with fake \`null\` prototype: use iframe Object with cleared prototype\\nvar NullProtoObjectViaIFrame = function () {\\n // Thrash, waste and sodomy: IE GC bug\\n var iframe = documentCreateElement('iframe');\\n var JS = 'java' + SCRIPT + ':';\\n var iframeDocument;\\n iframe.style.display = 'none';\\n html.appendChild(iframe);\\n // https://github.com/zloirock/core-js/issues/475\\n iframe.src = String(JS);\\n iframeDocument = iframe.contentWindow.document;\\n iframeDocument.open();\\n iframeDocument.write(scriptTag('document.F=Object'));\\n iframeDocument.close();\\n return iframeDocument.F;\\n};\\n\\n// Check for document.domain and active x support\\n// No need to use active x approach when document.domain is not set\\n// see https://github.com/es-shims/es5-shim/issues/150\\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\\n// avoid IE GC bug\\nvar activeXDocument;\\nvar NullProtoObject = function () {\\n try {\\n activeXDocument = new ActiveXObject('htmlfile');\\n } catch (error) { /* ignore */ }\\n NullProtoObject = typeof document != 'undefined'\\n ? document.domain && activeXDocument\\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\\n : NullProtoObjectViaIFrame()\\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\\n var length = enumBugKeys.length;\\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\\n return NullProtoObject();\\n};\\n\\nhiddenKeys[IE_PROTO] = true;\\n\\n// \`Object.create\` method\\n// https://tc39.es/ecma262/#sec-object.create\\n// eslint-disable-next-line es/no-object-create -- safe\\nmodule.exports = Object.create || function create(O, Properties) {\\n var result;\\n if (O !== null) {\\n EmptyConstructor[PROTOTYPE] = anObject(O);\\n result = new EmptyConstructor();\\n EmptyConstructor[PROTOTYPE] = null;\\n // add \\"__proto__\\" for Object.getPrototypeOf polyfill\\n result[IE_PROTO] = O;\\n } else result = NullProtoObject();\\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-create.js?")}),"./node_modules/core-js/internals/object-define-properties.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \\"./node_modules/core-js/internals/v8-prototype-define-bug.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \\"./node_modules/core-js/internals/object-keys.js\\");\\n\\n// \`Object.defineProperties\` method\\n// https://tc39.es/ecma262/#sec-object.defineproperties\\n// eslint-disable-next-line es/no-object-defineproperties -- safe\\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\\n anObject(O);\\n var props = toIndexedObject(Properties);\\n var keys = objectKeys(Properties);\\n var length = keys.length;\\n var index = 0;\\n var key;\\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\\n return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-properties.js?")}),"./node_modules/core-js/internals/object-define-property.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \\"./node_modules/core-js/internals/ie8-dom-define.js\\");\\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \\"./node_modules/core-js/internals/v8-prototype-define-bug.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\n\\nvar $TypeError = TypeError;\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar $defineProperty = Object.defineProperty;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar ENUMERABLE = 'enumerable';\\nvar CONFIGURABLE = 'configurable';\\nvar WRITABLE = 'writable';\\n\\n// \`Object.defineProperty\` method\\n// https://tc39.es/ecma262/#sec-object.defineproperty\\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\\n anObject(O);\\n P = toPropertyKey(P);\\n anObject(Attributes);\\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\\n var current = $getOwnPropertyDescriptor(O, P);\\n if (current && current[WRITABLE]) {\\n O[P] = Attributes.value;\\n Attributes = {\\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\\n writable: false\\n };\\n }\\n } return $defineProperty(O, P, Attributes);\\n} : $defineProperty : function defineProperty(O, P, Attributes) {\\n anObject(O);\\n P = toPropertyKey(P);\\n anObject(Attributes);\\n if (IE8_DOM_DEFINE) try {\\n return $defineProperty(O, P, Attributes);\\n } catch (error) { /* empty */ }\\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\\n if ('value' in Attributes) O[P] = Attributes.value;\\n return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-property.js?")}),"./node_modules/core-js/internals/object-get-own-property-descriptor.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \\"./node_modules/core-js/internals/object-property-is-enumerable.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \\"./node_modules/core-js/internals/ie8-dom-define.js\\");\\n\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// \`Object.getOwnPropertyDescriptor\` method\\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\\n O = toIndexedObject(O);\\n P = toPropertyKey(P);\\n if (IE8_DOM_DEFINE) try {\\n return $getOwnPropertyDescriptor(O, P);\\n } catch (error) { /* empty */ }\\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-descriptor.js?")}),"./node_modules/core-js/internals/object-get-own-property-names-external.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable es/no-object-getownpropertynames -- safe */\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\n\\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\\n ? Object.getOwnPropertyNames(window) : [];\\n\\nvar getWindowNames = function (it) {\\n try {\\n return $getOwnPropertyNames(it);\\n } catch (error) {\\n return arraySlice(windowNames);\\n }\\n};\\n\\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\\nmodule.exports.f = function getOwnPropertyNames(it) {\\n return windowNames && classof(it) == 'Window'\\n ? getWindowNames(it)\\n : $getOwnPropertyNames(toIndexedObject(it));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names-external.js?")}),"./node_modules/core-js/internals/object-get-own-property-names.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \\"./node_modules/core-js/internals/object-keys-internal.js\\");\\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \\"./node_modules/core-js/internals/enum-bug-keys.js\\");\\n\\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\\n\\n// \`Object.getOwnPropertyNames\` method\\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\\n return internalObjectKeys(O, hiddenKeys);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names.js?")}),"./node_modules/core-js/internals/object-get-own-property-symbols.js":((__unused_webpack_module,exports)=>{eval("\\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\\nexports.f = Object.getOwnPropertySymbols;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-symbols.js?")}),"./node_modules/core-js/internals/object-get-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \\"./node_modules/core-js/internals/shared-key.js\\");\\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \\"./node_modules/core-js/internals/correct-prototype-getter.js\\");\\n\\nvar IE_PROTO = sharedKey('IE_PROTO');\\nvar $Object = Object;\\nvar ObjectPrototype = $Object.prototype;\\n\\n// \`Object.getPrototypeOf\` method\\n// https://tc39.es/ecma262/#sec-object.getprototypeof\\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\\n var object = toObject(O);\\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\\n var constructor = object.constructor;\\n if (isCallable(constructor) && object instanceof constructor) {\\n return constructor.prototype;\\n } return object instanceof $Object ? ObjectPrototype : null;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-prototype-of.js?")}),"./node_modules/core-js/internals/object-is-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(/*! ../internals/array-buffer-non-extensible */ \\"./node_modules/core-js/internals/array-buffer-non-extensible.js\\");\\n\\n// eslint-disable-next-line es/no-object-isextensible -- safe\\nvar $isExtensible = Object.isExtensible;\\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\\n\\n// \`Object.isExtensible\` method\\n// https://tc39.es/ecma262/#sec-object.isextensible\\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\\n if (!isObject(it)) return false;\\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\\n return $isExtensible ? $isExtensible(it) : true;\\n} : $isExtensible;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-extensible.js?")}),"./node_modules/core-js/internals/object-is-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nmodule.exports = uncurryThis({}.isPrototypeOf);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-prototype-of.js?")}),"./node_modules/core-js/internals/object-keys-internal.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar indexOf = (__webpack_require__(/*! ../internals/array-includes */ \\"./node_modules/core-js/internals/array-includes.js\\").indexOf);\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (object, names) {\\n var O = toIndexedObject(object);\\n var i = 0;\\n var result = [];\\n var key;\\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\\n // Don't enum bug & hidden keys\\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\\n ~indexOf(result, key) || push(result, key);\\n }\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys-internal.js?")}),"./node_modules/core-js/internals/object-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \\"./node_modules/core-js/internals/object-keys-internal.js\\");\\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \\"./node_modules/core-js/internals/enum-bug-keys.js\\");\\n\\n// \`Object.keys\` method\\n// https://tc39.es/ecma262/#sec-object.keys\\n// eslint-disable-next-line es/no-object-keys -- safe\\nmodule.exports = Object.keys || function keys(O) {\\n return internalObjectKeys(O, enumBugKeys);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys.js?")}),"./node_modules/core-js/internals/object-property-is-enumerable.js":((__unused_webpack_module,exports)=>{eval("\\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// Nashorn ~ JDK8 bug\\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\\n\\n// \`Object.prototype.propertyIsEnumerable\` method implementation\\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\\n var descriptor = getOwnPropertyDescriptor(this, V);\\n return !!descriptor && descriptor.enumerable;\\n} : $propertyIsEnumerable;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-property-is-enumerable.js?")}),"./node_modules/core-js/internals/object-set-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable no-proto -- safe */\\nvar uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ \\"./node_modules/core-js/internals/function-uncurry-this-accessor.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ \\"./node_modules/core-js/internals/a-possible-prototype.js\\");\\n\\n// \`Object.setPrototypeOf\` method\\n// https://tc39.es/ecma262/#sec-object.setprototypeof\\n// Works with __proto__ only. Old v8 can't work with null proto objects.\\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\\n var CORRECT_SETTER = false;\\n var test = {};\\n var setter;\\n try {\\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\\n setter(test, []);\\n CORRECT_SETTER = test instanceof Array;\\n } catch (error) { /* empty */ }\\n return function setPrototypeOf(O, proto) {\\n anObject(O);\\n aPossiblePrototype(proto);\\n if (CORRECT_SETTER) setter(O, proto);\\n else O.__proto__ = proto;\\n return O;\\n };\\n}() : undefined);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-set-prototype-of.js?")}),"./node_modules/core-js/internals/ordinary-to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`OrdinaryToPrimitive\` abstract operation\\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\\nmodule.exports = function (input, pref) {\\n var fn, val;\\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n throw $TypeError(\\"Can't convert object to primitive value\\");\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ordinary-to-primitive.js?")}),"./node_modules/core-js/internals/own-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\");\\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \\"./node_modules/core-js/internals/object-get-own-property-symbols.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\n\\nvar concat = uncurryThis([].concat);\\n\\n// all object keys, includes non-enumerable and symbols\\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\\n var keys = getOwnPropertyNamesModule.f(anObject(it));\\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/own-keys.js?")}),"./node_modules/core-js/internals/perform.js":((module)=>{eval("\\nmodule.exports = function (exec) {\\n try {\\n return { error: false, value: exec() };\\n } catch (error) {\\n return { error: true, value: error };\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/perform.js?")}),"./node_modules/core-js/internals/promise-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \\"./node_modules/core-js/internals/inspect-source.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \\"./node_modules/core-js/internals/engine-is-browser.js\\");\\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \\"./node_modules/core-js/internals/engine-is-deno.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\n\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\nvar SPECIES = wellKnownSymbol('species');\\nvar SUBCLASSING = false;\\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\\n\\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\\n // We can't detect it synchronously, so just check versions\\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\\n // We can't use @@species feature detection in V8 since it causes\\n // deoptimization and performance degradation\\n // https://github.com/zloirock/core-js/issues/679\\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\\n // Detect correctness of subclassing with @@species support\\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\\n var FakePromise = function (exec) {\\n exec(function () { /* empty */ }, function () { /* empty */ });\\n };\\n var constructor = promise.constructor = {};\\n constructor[SPECIES] = FakePromise;\\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\\n if (!SUBCLASSING) return true;\\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\\n } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\\n});\\n\\nmodule.exports = {\\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\\n SUBCLASSING: SUBCLASSING\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-constructor-detection.js?")}),"./node_modules/core-js/internals/promise-native-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\nmodule.exports = global.Promise;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-native-constructor.js?")}),"./node_modules/core-js/internals/promise-resolve.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\n\\nmodule.exports = function (C, x) {\\n anObject(C);\\n if (isObject(x) && x.constructor === C) return x;\\n var promiseCapability = newPromiseCapability.f(C);\\n var resolve = promiseCapability.resolve;\\n resolve(x);\\n return promiseCapability.promise;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-resolve.js?")}),"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \\"./node_modules/core-js/internals/check-correctness-of-iteration.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\n\\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js?")}),"./node_modules/core-js/internals/proxy-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\n\\nmodule.exports = function (Target, Source, key) {\\n key in Target || defineProperty(Target, key, {\\n configurable: true,\\n get: function () { return Source[key]; },\\n set: function (it) { Source[key] = it; }\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/proxy-accessor.js?")}),"./node_modules/core-js/internals/queue.js":((module)=>{eval("\\nvar Queue = function () {\\n this.head = null;\\n this.tail = null;\\n};\\n\\nQueue.prototype = {\\n add: function (item) {\\n var entry = { item: item, next: null };\\n var tail = this.tail;\\n if (tail) tail.next = entry;\\n else this.head = entry;\\n this.tail = entry;\\n },\\n get: function () {\\n var entry = this.head;\\n if (entry) {\\n var next = this.head = entry.next;\\n if (next === null) this.tail = null;\\n return entry.item;\\n }\\n }\\n};\\n\\nmodule.exports = Queue;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/queue.js?")}),"./node_modules/core-js/internals/regexp-exec-abstract.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`RegExpExec\` abstract operation\\n// https://tc39.es/ecma262/#sec-regexpexec\\nmodule.exports = function (R, S) {\\n var exec = R.exec;\\n if (isCallable(exec)) {\\n var result = call(exec, R, S);\\n if (result !== null) anObject(result);\\n return result;\\n }\\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\\n throw $TypeError('RegExp#exec called on incompatible receiver');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec-abstract.js?")}),"./node_modules/core-js/internals/regexp-exec.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\\n/* eslint-disable regexp/no-useless-quantifier -- testing */\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \\"./node_modules/core-js/internals/regexp-flags.js\\");\\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \\"./node_modules/core-js/internals/regexp-sticky-helpers.js\\");\\nvar shared = __webpack_require__(/*! ../internals/shared */ \\"./node_modules/core-js/internals/shared.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").get);\\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \\"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\\");\\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \\"./node_modules/core-js/internals/regexp-unsupported-ncg.js\\");\\n\\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\\nvar nativeExec = RegExp.prototype.exec;\\nvar patchedExec = nativeExec;\\nvar charAt = uncurryThis(''.charAt);\\nvar indexOf = uncurryThis(''.indexOf);\\nvar replace = uncurryThis(''.replace);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar UPDATES_LAST_INDEX_WRONG = (function () {\\n var re1 = /a/;\\n var re2 = /b*/g;\\n call(nativeExec, re1, 'a');\\n call(nativeExec, re2, 'a');\\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\\n})();\\n\\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\\n\\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\\n\\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\\n\\nif (PATCH) {\\n patchedExec = function exec(string) {\\n var re = this;\\n var state = getInternalState(re);\\n var str = toString(string);\\n var raw = state.raw;\\n var result, reCopy, lastIndex, match, i, object, group;\\n\\n if (raw) {\\n raw.lastIndex = re.lastIndex;\\n result = call(patchedExec, raw, str);\\n re.lastIndex = raw.lastIndex;\\n return result;\\n }\\n\\n var groups = state.groups;\\n var sticky = UNSUPPORTED_Y && re.sticky;\\n var flags = call(regexpFlags, re);\\n var source = re.source;\\n var charsAdded = 0;\\n var strCopy = str;\\n\\n if (sticky) {\\n flags = replace(flags, 'y', '');\\n if (indexOf(flags, 'g') === -1) {\\n flags += 'g';\\n }\\n\\n strCopy = stringSlice(str, re.lastIndex);\\n // Support anchored sticky behavior.\\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\\\n')) {\\n source = '(?: ' + source + ')';\\n strCopy = ' ' + strCopy;\\n charsAdded++;\\n }\\n // ^(? + rx + ) is needed, in combination with some str slicing, to\\n // simulate the 'y' flag.\\n reCopy = new RegExp('^(?:' + source + ')', flags);\\n }\\n\\n if (NPCG_INCLUDED) {\\n reCopy = new RegExp('^' + source + '$(?!\\\\\\\\s)', flags);\\n }\\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\\n\\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\\n\\n if (sticky) {\\n if (match) {\\n match.input = stringSlice(match.input, charsAdded);\\n match[0] = stringSlice(match[0], charsAdded);\\n match.index = re.lastIndex;\\n re.lastIndex += match[0].length;\\n } else re.lastIndex = 0;\\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\\n }\\n if (NPCG_INCLUDED && match && match.length > 1) {\\n // Fix browsers whose \`exec\` methods don't consistently return \`undefined\`\\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\\n call(nativeReplace, match[0], reCopy, function () {\\n for (i = 1; i < arguments.length - 2; i++) {\\n if (arguments[i] === undefined) match[i] = undefined;\\n }\\n });\\n }\\n\\n if (match && groups) {\\n match.groups = object = create(null);\\n for (i = 0; i < groups.length; i++) {\\n group = groups[i];\\n object[group[0]] = match[group[1]];\\n }\\n }\\n\\n return match;\\n };\\n}\\n\\nmodule.exports = patchedExec;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec.js?")}),"./node_modules/core-js/internals/regexp-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\n\\n// \`RegExp.prototype.flags\` getter implementation\\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\\nmodule.exports = function () {\\n var that = anObject(this);\\n var result = '';\\n if (that.hasIndices) result += 'd';\\n if (that.global) result += 'g';\\n if (that.ignoreCase) result += 'i';\\n if (that.multiline) result += 'm';\\n if (that.dotAll) result += 's';\\n if (that.unicode) result += 'u';\\n if (that.unicodeSets) result += 'v';\\n if (that.sticky) result += 'y';\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-flags.js?")}),"./node_modules/core-js/internals/regexp-get-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \\"./node_modules/core-js/internals/regexp-flags.js\\");\\n\\nvar RegExpPrototype = RegExp.prototype;\\n\\nmodule.exports = function (R) {\\n var flags = R.flags;\\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\\n ? call(regExpFlags, R) : flags;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-get-flags.js?")}),"./node_modules/core-js/internals/regexp-sticky-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\\nvar $RegExp = global.RegExp;\\n\\nvar UNSUPPORTED_Y = fails(function () {\\n var re = $RegExp('a', 'y');\\n re.lastIndex = 2;\\n return re.exec('abcd') != null;\\n});\\n\\n// UC Browser bug\\n// https://github.com/zloirock/core-js/issues/1008\\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\\n return !$RegExp('a', 'y').sticky;\\n});\\n\\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\\n var re = $RegExp('^r', 'gy');\\n re.lastIndex = 2;\\n return re.exec('str') != null;\\n});\\n\\nmodule.exports = {\\n BROKEN_CARET: BROKEN_CARET,\\n MISSED_STICKY: MISSED_STICKY,\\n UNSUPPORTED_Y: UNSUPPORTED_Y\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-sticky-helpers.js?")}),"./node_modules/core-js/internals/regexp-unsupported-dot-all.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\\nvar $RegExp = global.RegExp;\\n\\nmodule.exports = fails(function () {\\n var re = $RegExp('.', 's');\\n return !(re.dotAll && re.exec('\\\\n') && re.flags === 's');\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-dot-all.js?")}),"./node_modules/core-js/internals/regexp-unsupported-ncg.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\\nvar $RegExp = global.RegExp;\\n\\nmodule.exports = fails(function () {\\n var re = $RegExp('(?b)', 'g');\\n return re.exec('b').groups.a !== 'b' ||\\n 'b'.replace(re, '$c') !== 'bc';\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-ncg.js?")}),"./node_modules/core-js/internals/require-object-coercible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`RequireObjectCoercible\` abstract operation\\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\\nmodule.exports = function (it) {\\n if (isNullOrUndefined(it)) throw $TypeError(\\"Can't call method on \\" + it);\\n return it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/require-object-coercible.js?")}),"./node_modules/core-js/internals/set-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\n// eslint-disable-next-line es/no-set -- safe\\nvar SetPrototype = Set.prototype;\\n\\nmodule.exports = {\\n // eslint-disable-next-line es/no-set -- safe\\n Set: Set,\\n add: uncurryThis(SetPrototype.add),\\n has: uncurryThis(SetPrototype.has),\\n remove: uncurryThis(SetPrototype['delete']),\\n proto: SetPrototype\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-helpers.js?")}),"./node_modules/core-js/internals/set-species.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\n\\nmodule.exports = function (CONSTRUCTOR_NAME) {\\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\\n\\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\\n defineBuiltInAccessor(Constructor, SPECIES, {\\n configurable: true,\\n get: function () { return this; }\\n });\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-species.js?")}),"./node_modules/core-js/internals/set-to-string-tag.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\n\\nmodule.exports = function (target, TAG, STATIC) {\\n if (target && !STATIC) target = target.prototype;\\n if (target && !hasOwn(target, TO_STRING_TAG)) {\\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-to-string-tag.js?")}),"./node_modules/core-js/internals/shared-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar shared = __webpack_require__(/*! ../internals/shared */ \\"./node_modules/core-js/internals/shared.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\n\\nvar keys = shared('keys');\\n\\nmodule.exports = function (key) {\\n return keys[key] || (keys[key] = uid(key));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-key.js?")}),"./node_modules/core-js/internals/shared-store.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \\"./node_modules/core-js/internals/define-global-property.js\\");\\n\\nvar SHARED = '__core-js_shared__';\\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\\n\\nmodule.exports = store;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-store.js?")}),"./node_modules/core-js/internals/shared.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar store = __webpack_require__(/*! ../internals/shared-store */ \\"./node_modules/core-js/internals/shared-store.js\\");\\n\\n(module.exports = function (key, value) {\\n return store[key] || (store[key] = value !== undefined ? value : {});\\n})('versions', []).push({\\n version: '3.32.0',\\n mode: IS_PURE ? 'pure' : 'global',\\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\\n license: 'https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE',\\n source: 'https://github.com/zloirock/core-js'\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared.js?")}),"./node_modules/core-js/internals/species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \\"./node_modules/core-js/internals/a-constructor.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\n\\n// \`SpeciesConstructor\` abstract operation\\n// https://tc39.es/ecma262/#sec-speciesconstructor\\nmodule.exports = function (O, defaultConstructor) {\\n var C = anObject(O).constructor;\\n var S;\\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/species-constructor.js?")}),"./node_modules/core-js/internals/string-multibyte.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nvar charAt = uncurryThis(''.charAt);\\nvar charCodeAt = uncurryThis(''.charCodeAt);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar createMethod = function (CONVERT_TO_STRING) {\\n return function ($this, pos) {\\n var S = toString(requireObjectCoercible($this));\\n var position = toIntegerOrInfinity(pos);\\n var size = S.length;\\n var first, second;\\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\\n first = charCodeAt(S, position);\\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\\n ? CONVERT_TO_STRING\\n ? charAt(S, position)\\n : first\\n : CONVERT_TO_STRING\\n ? stringSlice(S, position, position + 2)\\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\\n };\\n};\\n\\nmodule.exports = {\\n // \`String.prototype.codePointAt\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\\n codeAt: createMethod(false),\\n // \`String.prototype.at\` method\\n // https://github.com/mathiasbynens/String.prototype.at\\n charAt: createMethod(true)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-multibyte.js?")}),"./node_modules/core-js/internals/string-punycode-to-ascii.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\\nvar base = 36;\\nvar tMin = 1;\\nvar tMax = 26;\\nvar skew = 38;\\nvar damp = 700;\\nvar initialBias = 72;\\nvar initialN = 128; // 0x80\\nvar delimiter = '-'; // '\\\\x2D'\\nvar regexNonASCII = /[^\\\\0-\\\\u007E]/; // non-ASCII chars\\nvar regexSeparators = /[.\\\\u3002\\\\uFF0E\\\\uFF61]/g; // RFC 3490 separators\\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\\nvar baseMinusTMin = base - tMin;\\n\\nvar $RangeError = RangeError;\\nvar exec = uncurryThis(regexSeparators.exec);\\nvar floor = Math.floor;\\nvar fromCharCode = String.fromCharCode;\\nvar charCodeAt = uncurryThis(''.charCodeAt);\\nvar join = uncurryThis([].join);\\nvar push = uncurryThis([].push);\\nvar replace = uncurryThis(''.replace);\\nvar split = uncurryThis(''.split);\\nvar toLowerCase = uncurryThis(''.toLowerCase);\\n\\n/**\\n * Creates an array containing the numeric code points of each Unicode\\n * character in the string. While JavaScript uses UCS-2 internally,\\n * this function will convert a pair of surrogate halves (each of which\\n * UCS-2 exposes as separate characters) into a single code point,\\n * matching UTF-16.\\n */\\nvar ucs2decode = function (string) {\\n var output = [];\\n var counter = 0;\\n var length = string.length;\\n while (counter < length) {\\n var value = charCodeAt(string, counter++);\\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\\n // It's a high surrogate, and there is a next character.\\n var extra = charCodeAt(string, counter++);\\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\\n } else {\\n // It's an unmatched surrogate; only append this code unit, in case the\\n // next code unit is the high surrogate of a surrogate pair.\\n push(output, value);\\n counter--;\\n }\\n } else {\\n push(output, value);\\n }\\n }\\n return output;\\n};\\n\\n/**\\n * Converts a digit/integer into a basic code point.\\n */\\nvar digitToBasic = function (digit) {\\n // 0..25 map to ASCII a..z or A..Z\\n // 26..35 map to ASCII 0..9\\n return digit + 22 + 75 * (digit < 26);\\n};\\n\\n/**\\n * Bias adaptation function as per section 3.4 of RFC 3492.\\n * https://tools.ietf.org/html/rfc3492#section-3.4\\n */\\nvar adapt = function (delta, numPoints, firstTime) {\\n var k = 0;\\n delta = firstTime ? floor(delta / damp) : delta >> 1;\\n delta += floor(delta / numPoints);\\n while (delta > baseMinusTMin * tMax >> 1) {\\n delta = floor(delta / baseMinusTMin);\\n k += base;\\n }\\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\\n};\\n\\n/**\\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\\n * Punycode string of ASCII-only symbols.\\n */\\nvar encode = function (input) {\\n var output = [];\\n\\n // Convert the input in UCS-2 to an array of Unicode code points.\\n input = ucs2decode(input);\\n\\n // Cache the length.\\n var inputLength = input.length;\\n\\n // Initialize the state.\\n var n = initialN;\\n var delta = 0;\\n var bias = initialBias;\\n var i, currentValue;\\n\\n // Handle the basic code points.\\n for (i = 0; i < input.length; i++) {\\n currentValue = input[i];\\n if (currentValue < 0x80) {\\n push(output, fromCharCode(currentValue));\\n }\\n }\\n\\n var basicLength = output.length; // number of basic code points.\\n var handledCPCount = basicLength; // number of code points that have been handled;\\n\\n // Finish the basic string with a delimiter unless it's empty.\\n if (basicLength) {\\n push(output, delimiter);\\n }\\n\\n // Main encoding loop:\\n while (handledCPCount < inputLength) {\\n // All non-basic code points < n have been handled already. Find the next larger one:\\n var m = maxInt;\\n for (i = 0; i < input.length; i++) {\\n currentValue = input[i];\\n if (currentValue >= n && currentValue < m) {\\n m = currentValue;\\n }\\n }\\n\\n // Increase \`delta\` enough to advance the decoder's state to , but guard against overflow.\\n var handledCPCountPlusOne = handledCPCount + 1;\\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\\n throw $RangeError(OVERFLOW_ERROR);\\n }\\n\\n delta += (m - n) * handledCPCountPlusOne;\\n n = m;\\n\\n for (i = 0; i < input.length; i++) {\\n currentValue = input[i];\\n if (currentValue < n && ++delta > maxInt) {\\n throw $RangeError(OVERFLOW_ERROR);\\n }\\n if (currentValue == n) {\\n // Represent delta as a generalized variable-length integer.\\n var q = delta;\\n var k = base;\\n while (true) {\\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\\n if (q < t) break;\\n var qMinusT = q - t;\\n var baseMinusT = base - t;\\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\\n q = floor(qMinusT / baseMinusT);\\n k += base;\\n }\\n\\n push(output, fromCharCode(digitToBasic(q)));\\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\\n delta = 0;\\n handledCPCount++;\\n }\\n }\\n\\n delta++;\\n n++;\\n }\\n return join(output, '');\\n};\\n\\nmodule.exports = function (input) {\\n var encoded = [];\\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\\\u002E'), '.');\\n var i, label;\\n for (i = 0; i < labels.length; i++) {\\n label = labels[i];\\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\\n }\\n return join(encoded, '.');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-punycode-to-ascii.js?")}),"./node_modules/core-js/internals/string-repeat.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nvar $RangeError = RangeError;\\n\\n// \`String.prototype.repeat\` method implementation\\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\\nmodule.exports = function repeat(count) {\\n var str = toString(requireObjectCoercible(this));\\n var result = '';\\n var n = toIntegerOrInfinity(count);\\n if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions');\\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-repeat.js?")}),"./node_modules/core-js/internals/string-trim-end.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $trimEnd = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").end);\\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \\"./node_modules/core-js/internals/string-trim-forced.js\\");\\n\\n// \`String.prototype.{ trimEnd, trimRight }\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\\n// https://tc39.es/ecma262/#String.prototype.trimright\\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\\n return $trimEnd(this);\\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\\n} : ''.trimEnd;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-end.js?")}),"./node_modules/core-js/internals/string-trim-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\").PROPER);\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar non = '\\\\u200B\\\\u0085\\\\u180E';\\n\\n// check that a method works with the correct list\\n// of whitespaces and has a correct name\\nmodule.exports = function (METHOD_NAME) {\\n return fails(function () {\\n return !!whitespaces[METHOD_NAME]()\\n || non[METHOD_NAME]() !== non\\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-forced.js?")}),"./node_modules/core-js/internals/string-trim.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar replace = uncurryThis(''.replace);\\nvar ltrim = RegExp('^[' + whitespaces + ']+');\\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\\n\\n// \`String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }\` methods implementation\\nvar createMethod = function (TYPE) {\\n return function ($this) {\\n var string = toString(requireObjectCoercible($this));\\n if (TYPE & 1) string = replace(string, ltrim, '');\\n if (TYPE & 2) string = replace(string, rtrim, '$1');\\n return string;\\n };\\n};\\n\\nmodule.exports = {\\n // \`String.prototype.{ trimLeft, trimStart }\` methods\\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\\n start: createMethod(1),\\n // \`String.prototype.{ trimRight, trimEnd }\` methods\\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\\n end: createMethod(2),\\n // \`String.prototype.trim\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.trim\\n trim: createMethod(3)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim.js?")}),"./node_modules/core-js/internals/structured-clone-proper-transfer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \\"./node_modules/core-js/internals/engine-is-browser.js\\");\\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \\"./node_modules/core-js/internals/engine-is-deno.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nvar structuredClone = global.structuredClone;\\n\\nmodule.exports = !!structuredClone && !fails(function () {\\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\\n // https://github.com/zloirock/core-js/issues/679\\n if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\\n var buffer = new ArrayBuffer(8);\\n var clone = structuredClone(buffer, { transfer: [buffer] });\\n return buffer.byteLength != 0 || clone.byteLength != 8;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/structured-clone-proper-transfer.js?")}),"./node_modules/core-js/internals/symbol-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable es/no-symbol -- required for testing */\\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\nvar $String = global.String;\\n\\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\\n var symbol = Symbol();\\n // Chrome 38 Symbol has incorrect toString conversion\\n // \`get-own-property-symbols\` polyfill symbols converted to object are not Symbol instances\\n // nb: Do not call \`String\` directly to avoid this being optimized out to \`symbol+''\` which will,\\n // of course, fail.\\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/symbol-constructor-detection.js?")}),"./node_modules/core-js/internals/task.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar html = __webpack_require__(/*! ../internals/html */ \\"./node_modules/core-js/internals/html.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \\"./node_modules/core-js/internals/array-slice.js\\");\\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \\"./node_modules/core-js/internals/engine-is-ios.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nvar set = global.setImmediate;\\nvar clear = global.clearImmediate;\\nvar process = global.process;\\nvar Dispatch = global.Dispatch;\\nvar Function = global.Function;\\nvar MessageChannel = global.MessageChannel;\\nvar String = global.String;\\nvar counter = 0;\\nvar queue = {};\\nvar ONREADYSTATECHANGE = 'onreadystatechange';\\nvar $location, defer, channel, port;\\n\\nfails(function () {\\n // Deno throws a ReferenceError on \`location\` access without \`--location\` flag\\n $location = global.location;\\n});\\n\\nvar run = function (id) {\\n if (hasOwn(queue, id)) {\\n var fn = queue[id];\\n delete queue[id];\\n fn();\\n }\\n};\\n\\nvar runner = function (id) {\\n return function () {\\n run(id);\\n };\\n};\\n\\nvar eventListener = function (event) {\\n run(event.data);\\n};\\n\\nvar globalPostMessageDefer = function (id) {\\n // old engines have not location.origin\\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\\n};\\n\\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\\nif (!set || !clear) {\\n set = function setImmediate(handler) {\\n validateArgumentsLength(arguments.length, 1);\\n var fn = isCallable(handler) ? handler : Function(handler);\\n var args = arraySlice(arguments, 1);\\n queue[++counter] = function () {\\n apply(fn, undefined, args);\\n };\\n defer(counter);\\n return counter;\\n };\\n clear = function clearImmediate(id) {\\n delete queue[id];\\n };\\n // Node.js 0.8-\\n if (IS_NODE) {\\n defer = function (id) {\\n process.nextTick(runner(id));\\n };\\n // Sphere (JS game engine) Dispatch API\\n } else if (Dispatch && Dispatch.now) {\\n defer = function (id) {\\n Dispatch.now(runner(id));\\n };\\n // Browsers with MessageChannel, includes WebWorkers\\n // except iOS - https://github.com/zloirock/core-js/issues/624\\n } else if (MessageChannel && !IS_IOS) {\\n channel = new MessageChannel();\\n port = channel.port2;\\n channel.port1.onmessage = eventListener;\\n defer = bind(port.postMessage, port);\\n // Browsers with postMessage, skip WebWorkers\\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\\n } else if (\\n global.addEventListener &&\\n isCallable(global.postMessage) &&\\n !global.importScripts &&\\n $location && $location.protocol !== 'file:' &&\\n !fails(globalPostMessageDefer)\\n ) {\\n defer = globalPostMessageDefer;\\n global.addEventListener('message', eventListener, false);\\n // IE8-\\n } else if (ONREADYSTATECHANGE in createElement('script')) {\\n defer = function (id) {\\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\\n html.removeChild(this);\\n run(id);\\n };\\n };\\n // Rest old browsers\\n } else {\\n defer = function (id) {\\n setTimeout(runner(id), 0);\\n };\\n }\\n}\\n\\nmodule.exports = {\\n set: set,\\n clear: clear\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/task.js?")}),"./node_modules/core-js/internals/this-number-value.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\n// \`thisNumberValue\` abstract operation\\n// https://tc39.es/ecma262/#sec-thisnumbervalue\\nmodule.exports = uncurryThis(1.0.valueOf);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/this-number-value.js?")}),"./node_modules/core-js/internals/to-absolute-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar max = Math.max;\\nvar min = Math.min;\\n\\n// Helper for a popular repeating case of the spec:\\n// Let integer be ? ToInteger(index).\\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\\nmodule.exports = function (index, length) {\\n var integer = toIntegerOrInfinity(index);\\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-absolute-index.js?")}),"./node_modules/core-js/internals/to-big-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \\"./node_modules/core-js/internals/to-primitive.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`ToBigInt\` abstract operation\\n// https://tc39.es/ecma262/#sec-tobigint\\nmodule.exports = function (argument) {\\n var prim = toPrimitive(argument, 'number');\\n if (typeof prim == 'number') throw $TypeError(\\"Can't convert number to bigint\\");\\n // eslint-disable-next-line es/no-bigint -- safe\\n return BigInt(prim);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-big-int.js?")}),"./node_modules/core-js/internals/to-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\n\\nvar $RangeError = RangeError;\\n\\n// \`ToIndex\` abstract operation\\n// https://tc39.es/ecma262/#sec-toindex\\nmodule.exports = function (it) {\\n if (it === undefined) return 0;\\n var number = toIntegerOrInfinity(it);\\n var length = toLength(number);\\n if (number !== length) throw $RangeError('Wrong length or index');\\n return length;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-index.js?")}),"./node_modules/core-js/internals/to-indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// toObject with fallback for non-array-like ES3 strings\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nmodule.exports = function (it) {\\n return IndexedObject(requireObjectCoercible(it));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-indexed-object.js?")}),"./node_modules/core-js/internals/to-integer-or-infinity.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar trunc = __webpack_require__(/*! ../internals/math-trunc */ \\"./node_modules/core-js/internals/math-trunc.js\\");\\n\\n// \`ToIntegerOrInfinity\` abstract operation\\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\\nmodule.exports = function (argument) {\\n var number = +argument;\\n // eslint-disable-next-line no-self-compare -- NaN check\\n return number !== number || number === 0 ? 0 : trunc(number);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-integer-or-infinity.js?")}),"./node_modules/core-js/internals/to-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar min = Math.min;\\n\\n// \`ToLength\` abstract operation\\n// https://tc39.es/ecma262/#sec-tolength\\nmodule.exports = function (argument) {\\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-length.js?")}),"./node_modules/core-js/internals/to-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nvar $Object = Object;\\n\\n// \`ToObject\` abstract operation\\n// https://tc39.es/ecma262/#sec-toobject\\nmodule.exports = function (argument) {\\n return $Object(requireObjectCoercible(argument));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-object.js?")}),"./node_modules/core-js/internals/to-offset.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPositiveInteger = __webpack_require__(/*! ../internals/to-positive-integer */ \\"./node_modules/core-js/internals/to-positive-integer.js\\");\\n\\nvar $RangeError = RangeError;\\n\\nmodule.exports = function (it, BYTES) {\\n var offset = toPositiveInteger(it);\\n if (offset % BYTES) throw $RangeError('Wrong offset');\\n return offset;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-offset.js?")}),"./node_modules/core-js/internals/to-positive-integer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar $RangeError = RangeError;\\n\\nmodule.exports = function (it) {\\n var result = toIntegerOrInfinity(it);\\n if (result < 0) throw $RangeError(\\"The argument can't be less than 0\\");\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-positive-integer.js?")}),"./node_modules/core-js/internals/to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ \\"./node_modules/core-js/internals/ordinary-to-primitive.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar $TypeError = TypeError;\\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\\n\\n// \`ToPrimitive\` abstract operation\\n// https://tc39.es/ecma262/#sec-toprimitive\\nmodule.exports = function (input, pref) {\\n if (!isObject(input) || isSymbol(input)) return input;\\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\\n var result;\\n if (exoticToPrim) {\\n if (pref === undefined) pref = 'default';\\n result = call(exoticToPrim, input, pref);\\n if (!isObject(result) || isSymbol(result)) return result;\\n throw $TypeError(\\"Can't convert object to primitive value\\");\\n }\\n if (pref === undefined) pref = 'number';\\n return ordinaryToPrimitive(input, pref);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-primitive.js?")}),"./node_modules/core-js/internals/to-property-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \\"./node_modules/core-js/internals/to-primitive.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\n\\n// \`ToPropertyKey\` abstract operation\\n// https://tc39.es/ecma262/#sec-topropertykey\\nmodule.exports = function (argument) {\\n var key = toPrimitive(argument, 'string');\\n return isSymbol(key) ? key : key + '';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-property-key.js?")}),"./node_modules/core-js/internals/to-string-tag-support.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar test = {};\\n\\ntest[TO_STRING_TAG] = 'z';\\n\\nmodule.exports = String(test) === '[object z]';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string-tag-support.js?")}),"./node_modules/core-js/internals/to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\n\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\\n return $String(argument);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string.js?")}),"./node_modules/core-js/internals/to-uint8-clamped.js":((module)=>{eval("\\nvar round = Math.round;\\n\\nmodule.exports = function (it) {\\n var value = round(it);\\n return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-uint8-clamped.js?")}),"./node_modules/core-js/internals/try-node-require.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nmodule.exports = function (name) {\\n try {\\n // eslint-disable-next-line no-new-func -- safe\\n if (IS_NODE) return Function('return require(\\"' + name + '\\")')();\\n } catch (error) { /* empty */ }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-node-require.js?")}),"./node_modules/core-js/internals/try-to-string.js":((module)=>{eval("\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n try {\\n return $String(argument);\\n } catch (error) {\\n return 'Object';\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-to-string.js?")}),"./node_modules/core-js/internals/typed-array-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(/*! ../internals/typed-array-constructors-require-wrappers */ \\"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \\"./node_modules/core-js/internals/array-buffer.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar isIntegralNumber = __webpack_require__(/*! ../internals/is-integral-number */ \\"./node_modules/core-js/internals/is-integral-number.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \\"./node_modules/core-js/internals/to-index.js\\");\\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \\"./node_modules/core-js/internals/to-offset.js\\");\\nvar toUint8Clamped = __webpack_require__(/*! ../internals/to-uint8-clamped */ \\"./node_modules/core-js/internals/to-uint8-clamped.js\\");\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar typedArrayFrom = __webpack_require__(/*! ../internals/typed-array-from */ \\"./node_modules/core-js/internals/typed-array-from.js\\");\\nvar forEach = (__webpack_require__(/*! ../internals/array-iteration */ \\"./node_modules/core-js/internals/array-iteration.js\\").forEach);\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\n\\nvar getInternalState = InternalStateModule.get;\\nvar setInternalState = InternalStateModule.set;\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar nativeDefineProperty = definePropertyModule.f;\\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\nvar RangeError = global.RangeError;\\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\nvar DataView = ArrayBufferModule.DataView;\\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\\nvar TypedArray = ArrayBufferViewCore.TypedArray;\\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\\nvar WRONG_LENGTH = 'Wrong length';\\n\\nvar fromList = function (C, list) {\\n aTypedArrayConstructor(C);\\n var index = 0;\\n var length = list.length;\\n var result = new C(length);\\n while (length > index) result[index] = list[index++];\\n return result;\\n};\\n\\nvar addGetter = function (it, key) {\\n defineBuiltInAccessor(it, key, {\\n configurable: true,\\n get: function () {\\n return getInternalState(this)[key];\\n }\\n });\\n};\\n\\nvar isArrayBuffer = function (it) {\\n var klass;\\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\\n};\\n\\nvar isTypedArrayIndex = function (target, key) {\\n return isTypedArray(target)\\n && !isSymbol(key)\\n && key in target\\n && isIntegralNumber(+key)\\n && key >= 0;\\n};\\n\\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\\n key = toPropertyKey(key);\\n return isTypedArrayIndex(target, key)\\n ? createPropertyDescriptor(2, target[key])\\n : nativeGetOwnPropertyDescriptor(target, key);\\n};\\n\\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\\n key = toPropertyKey(key);\\n if (isTypedArrayIndex(target, key)\\n && isObject(descriptor)\\n && hasOwn(descriptor, 'value')\\n && !hasOwn(descriptor, 'get')\\n && !hasOwn(descriptor, 'set')\\n // TODO: add validation descriptor w/o calling accessors\\n && !descriptor.configurable\\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\\n ) {\\n target[key] = descriptor.value;\\n return target;\\n } return nativeDefineProperty(target, key, descriptor);\\n};\\n\\nif (DESCRIPTORS) {\\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\\n definePropertyModule.f = wrappedDefineProperty;\\n addGetter(TypedArrayPrototype, 'buffer');\\n addGetter(TypedArrayPrototype, 'byteOffset');\\n addGetter(TypedArrayPrototype, 'byteLength');\\n addGetter(TypedArrayPrototype, 'length');\\n }\\n\\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\\n defineProperty: wrappedDefineProperty\\n });\\n\\n module.exports = function (TYPE, wrapper, CLAMPED) {\\n var BYTES = TYPE.match(/\\\\d+/)[0] / 8;\\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\\n var GETTER = 'get' + TYPE;\\n var SETTER = 'set' + TYPE;\\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\\n var TypedArrayConstructor = NativeTypedArrayConstructor;\\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\\n var exported = {};\\n\\n var getter = function (that, index) {\\n var data = getInternalState(that);\\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\\n };\\n\\n var setter = function (that, index, value) {\\n var data = getInternalState(that);\\n data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\\n };\\n\\n var addElement = function (that, index) {\\n nativeDefineProperty(that, index, {\\n get: function () {\\n return getter(this, index);\\n },\\n set: function (value) {\\n return setter(this, index, value);\\n },\\n enumerable: true\\n });\\n };\\n\\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\\n anInstance(that, TypedArrayConstructorPrototype);\\n var index = 0;\\n var byteOffset = 0;\\n var buffer, byteLength, length;\\n if (!isObject(data)) {\\n length = toIndex(data);\\n byteLength = length * BYTES;\\n buffer = new ArrayBuffer(byteLength);\\n } else if (isArrayBuffer(data)) {\\n buffer = data;\\n byteOffset = toOffset(offset, BYTES);\\n var $len = data.byteLength;\\n if ($length === undefined) {\\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\\n byteLength = $len - byteOffset;\\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\\n } else {\\n byteLength = toLength($length) * BYTES;\\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\\n }\\n length = byteLength / BYTES;\\n } else if (isTypedArray(data)) {\\n return fromList(TypedArrayConstructor, data);\\n } else {\\n return call(typedArrayFrom, TypedArrayConstructor, data);\\n }\\n setInternalState(that, {\\n buffer: buffer,\\n byteOffset: byteOffset,\\n byteLength: byteLength,\\n length: length,\\n view: new DataView(buffer)\\n });\\n while (index < length) addElement(that, index++);\\n });\\n\\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\\n anInstance(dummy, TypedArrayConstructorPrototype);\\n return inheritIfRequired(function () {\\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\\n if (isArrayBuffer(data)) return $length !== undefined\\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\\n : typedArrayOffset !== undefined\\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\\n : new NativeTypedArrayConstructor(data);\\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\\n return call(typedArrayFrom, TypedArrayConstructor, data);\\n }(), dummy, TypedArrayConstructor);\\n });\\n\\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\\n if (!(key in TypedArrayConstructor)) {\\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\\n }\\n });\\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\\n }\\n\\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\\n }\\n\\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\\n\\n if (TYPED_ARRAY_TAG) {\\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\\n }\\n\\n var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\\n\\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\\n\\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\\n\\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\\n }\\n\\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\\n }\\n\\n setSpecies(CONSTRUCTOR_NAME);\\n };\\n} else module.exports = function () { /* empty */ };\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructor.js?")}),"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable no-new -- required for testing */\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \\"./node_modules/core-js/internals/check-correctness-of-iteration.js\\");\\nvar NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\").NATIVE_ARRAY_BUFFER_VIEWS);\\n\\nvar ArrayBuffer = global.ArrayBuffer;\\nvar Int8Array = global.Int8Array;\\n\\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\\n Int8Array(1);\\n}) || !fails(function () {\\n new Int8Array(-1);\\n}) || !checkCorrectnessOfIteration(function (iterable) {\\n new Int8Array();\\n new Int8Array(null);\\n new Int8Array(1.5);\\n new Int8Array(iterable);\\n}, true) || fails(function () {\\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js?")}),"./node_modules/core-js/internals/typed-array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \\"./node_modules/core-js/internals/a-constructor.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \\"./node_modules/core-js/internals/is-array-iterator-method.js\\");\\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \\"./node_modules/core-js/internals/is-big-int-array.js\\");\\nvar aTypedArrayConstructor = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\").aTypedArrayConstructor);\\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \\"./node_modules/core-js/internals/to-big-int.js\\");\\n\\nmodule.exports = function from(source /* , mapfn, thisArg */) {\\n var C = aConstructor(this);\\n var O = toObject(source);\\n var argumentsLength = arguments.length;\\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\\n var mapping = mapfn !== undefined;\\n var iteratorMethod = getIteratorMethod(O);\\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\\n iterator = getIterator(O, iteratorMethod);\\n next = iterator.next;\\n O = [];\\n while (!(step = call(next, iterator)).done) {\\n O.push(step.value);\\n }\\n }\\n if (mapping && argumentsLength > 2) {\\n mapfn = bind(mapfn, arguments[2]);\\n }\\n length = lengthOfArrayLike(O);\\n result = new (aTypedArrayConstructor(C))(length);\\n thisIsBigIntArray = isBigIntArray(result);\\n for (i = 0; length > i; i++) {\\n value = mapping ? mapfn(O[i], i) : O[i];\\n // FF30- typed arrays doesn't properly convert objects to typed array values\\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\\n }\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-from.js?")}),"./node_modules/core-js/internals/uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar id = 0;\\nvar postfix = Math.random();\\nvar toString = uncurryThis(1.0.toString);\\n\\nmodule.exports = function (key) {\\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/uid.js?")}),"./node_modules/core-js/internals/url-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\\n var params = url.searchParams;\\n var params2 = new URLSearchParams('a=1&a=2&b=3');\\n var result = '';\\n url.pathname = 'c%20d';\\n params.forEach(function (value, key) {\\n params['delete']('b');\\n result += key + value;\\n });\\n params2['delete']('a', 2);\\n // \`undefined\` case is a Chromium 117 bug\\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\\n params2['delete']('b', undefined);\\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\\n || (!params.size && (IS_PURE || !DESCRIPTORS))\\n || !params.sort\\n || url.href !== 'http://a/c%20d?a=1&c=3'\\n || params.get('c') !== '3'\\n || String(new URLSearchParams('?a=1')) !== 'a=1'\\n || !params[ITERATOR]\\n // throws in Edge\\n || new URL('https://a@b').username !== 'a'\\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\\n // not punycoded in Edge\\n || new URL('http://тест').host !== 'xn--e1aybc'\\n // not escaped in Chrome 62-\\n || new URL('http://a#б').hash !== '#%D0%B1'\\n // fails in Chrome 66-\\n || result !== 'a1c3'\\n // throws in Safari\\n || new URL('http://x', undefined).host !== 'x';\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/url-constructor-detection.js?")}),"./node_modules/core-js/internals/use-symbol-as-uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable es/no-symbol -- required for testing */\\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \\"./node_modules/core-js/internals/symbol-constructor-detection.js\\");\\n\\nmodule.exports = NATIVE_SYMBOL\\n && !Symbol.sham\\n && typeof Symbol.iterator == 'symbol';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/use-symbol-as-uid.js?")}),"./node_modules/core-js/internals/v8-prototype-define-bug.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\n// V8 ~ Chrome 36-\\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\\nmodule.exports = DESCRIPTORS && fails(function () {\\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\\n value: 42,\\n writable: false\\n }).prototype != 42;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/v8-prototype-define-bug.js?")}),"./node_modules/core-js/internals/validate-arguments-length.js":((module)=>{eval("\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (passed, required) {\\n if (passed < required) throw $TypeError('Not enough arguments');\\n return passed;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/validate-arguments-length.js?")}),"./node_modules/core-js/internals/weak-map-basic-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar WeakMap = global.WeakMap;\\n\\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/weak-map-basic-detection.js?")}),"./node_modules/core-js/internals/well-known-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar shared = __webpack_require__(/*! ../internals/shared */ \\"./node_modules/core-js/internals/shared.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \\"./node_modules/core-js/internals/symbol-constructor-detection.js\\");\\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \\"./node_modules/core-js/internals/use-symbol-as-uid.js\\");\\n\\nvar Symbol = global.Symbol;\\nvar WellKnownSymbolsStore = shared('wks');\\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\\n\\nmodule.exports = function (name) {\\n if (!hasOwn(WellKnownSymbolsStore, name)) {\\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\\n ? Symbol[name]\\n : createWellKnownSymbol('Symbol.' + name);\\n } return WellKnownSymbolsStore[name];\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/well-known-symbol.js?")}),"./node_modules/core-js/internals/whitespaces.js":((module)=>{eval("\\n// a string of all valid unicode whitespaces\\nmodule.exports = '\\\\u0009\\\\u000A\\\\u000B\\\\u000C\\\\u000D\\\\u0020\\\\u00A0\\\\u1680\\\\u2000\\\\u2001\\\\u2002' +\\n '\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/whitespaces.js?")}),"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \\"./node_modules/core-js/internals/copy-constructor-properties.js\\");\\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \\"./node_modules/core-js/internals/proxy-accessor.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\nvar installErrorCause = __webpack_require__(/*! ../internals/install-error-cause */ \\"./node_modules/core-js/internals/install-error-cause.js\\");\\nvar installErrorStack = __webpack_require__(/*! ../internals/error-stack-install */ \\"./node_modules/core-js/internals/error-stack-install.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\\n var path = FULL_NAME.split('.');\\n var ERROR_NAME = path[path.length - 1];\\n var OriginalError = getBuiltIn.apply(null, path);\\n\\n if (!OriginalError) return;\\n\\n var OriginalErrorPrototype = OriginalError.prototype;\\n\\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\\n\\n if (!FORCED) return OriginalError;\\n\\n var BaseError = getBuiltIn('Error');\\n\\n var WrappedError = wrapper(function (a, b) {\\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\\n installErrorStack(result, WrappedError, result.stack, 2);\\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\\n return result;\\n });\\n\\n WrappedError.prototype = OriginalErrorPrototype;\\n\\n if (ERROR_NAME !== 'Error') {\\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\\n }\\n\\n copyConstructorProperties(WrappedError, OriginalError);\\n\\n if (!IS_PURE) try {\\n // Safari 13- bug: WebAssembly errors does not have a proper \`.name\`\\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\\n }\\n OriginalErrorPrototype.constructor = WrappedError;\\n } catch (error) { /* empty */ }\\n\\n return WrappedError;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js?")}),"./node_modules/core-js/modules/es.array-buffer.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar arrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \\"./node_modules/core-js/internals/array-buffer.js\\");\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\n\\nvar ARRAY_BUFFER = 'ArrayBuffer';\\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\\n\\n// \`ArrayBuffer\` constructor\\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\\n ArrayBuffer: ArrayBuffer\\n});\\n\\nsetSpecies(ARRAY_BUFFER);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.constructor.js?")}),"./node_modules/core-js/modules/es.array-buffer.slice.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \\"./node_modules/core-js/internals/array-buffer.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\n\\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\\nvar DataView = ArrayBufferModule.DataView;\\nvar DataViewPrototype = DataView.prototype;\\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\\n\\nvar INCORRECT_SLICE = fails(function () {\\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\\n});\\n\\n// \`ArrayBuffer.prototype.slice\` method\\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\\n slice: function slice(start, end) {\\n if (nativeArrayBufferSlice && end === undefined) {\\n return nativeArrayBufferSlice(anObject(this), start); // FF fix\\n }\\n var length = anObject(this).byteLength;\\n var first = toAbsoluteIndex(start, length);\\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\\n var viewSource = new DataView(this);\\n var viewTarget = new DataView(result);\\n var index = 0;\\n while (first < fin) {\\n setUint8(viewTarget, index++, getUint8(viewSource, first++));\\n } return result;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.slice.js?")}),"./node_modules/core-js/modules/es.array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// \`Array.prototype.at\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.at\\n$({ target: 'Array', proto: true }, {\\n at: function at(index) {\\n var O = toObject(this);\\n var len = lengthOfArrayLike(O);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\\n return (k < 0 || k >= len) ? undefined : O[k];\\n }\\n});\\n\\naddToUnscopables('at');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.at.js?")}),"./node_modules/core-js/modules/es.array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLastIndex);\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// \`Array.prototype.findLastIndex\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\\n$({ target: 'Array', proto: true }, {\\n findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\\n return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\\n }\\n});\\n\\naddToUnscopables('findLastIndex');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last-index.js?")}),"./node_modules/core-js/modules/es.array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLast);\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// \`Array.prototype.findLast\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\\n$({ target: 'Array', proto: true }, {\\n findLast: function findLast(callbackfn /* , that = undefined */) {\\n return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\\n }\\n});\\n\\naddToUnscopables('findLast');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last.js?")}),"./node_modules/core-js/modules/es.array.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar flattenIntoArray = __webpack_require__(/*! ../internals/flatten-into-array */ \\"./node_modules/core-js/internals/flatten-into-array.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \\"./node_modules/core-js/internals/array-species-create.js\\");\\n\\n// \`Array.prototype.flatMap\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\\n$({ target: 'Array', proto: true }, {\\n flatMap: function flatMap(callbackfn /* , thisArg */) {\\n var O = toObject(this);\\n var sourceLen = lengthOfArrayLike(O);\\n var A;\\n aCallable(callbackfn);\\n A = arraySpeciesCreate(O, 0);\\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\\n return A;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.flat-map.js?")}),"./node_modules/core-js/modules/es.array.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $includes = (__webpack_require__(/*! ../internals/array-includes */ \\"./node_modules/core-js/internals/array-includes.js\\").includes);\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// FF99+ bug\\nvar BROKEN_ON_SPARSE = fails(function () {\\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\\n return !Array(1).includes();\\n});\\n\\n// \`Array.prototype.includes\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.includes\\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\\n includes: function includes(el /* , fromIndex = 0 */) {\\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\\n }\\n});\\n\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\naddToUnscopables('includes');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.includes.js?")}),"./node_modules/core-js/modules/es.array.iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \\"./node_modules/core-js/internals/iterator-define.js\\");\\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \\"./node_modules/core-js/internals/create-iter-result-object.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\n\\nvar ARRAY_ITERATOR = 'Array Iterator';\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\\n\\n// \`Array.prototype.entries\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.entries\\n// \`Array.prototype.keys\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.keys\\n// \`Array.prototype.values\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.values\\n// \`Array.prototype[@@iterator]\` method\\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\\n// \`CreateArrayIterator\` internal method\\n// https://tc39.es/ecma262/#sec-createarrayiterator\\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\\n setInternalState(this, {\\n type: ARRAY_ITERATOR,\\n target: toIndexedObject(iterated), // target\\n index: 0, // next index\\n kind: kind // kind\\n });\\n// \`%ArrayIteratorPrototype%.next\` method\\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\\n}, function () {\\n var state = getInternalState(this);\\n var target = state.target;\\n var kind = state.kind;\\n var index = state.index++;\\n if (!target || index >= target.length) {\\n state.target = undefined;\\n return createIterResultObject(undefined, true);\\n }\\n if (kind == 'keys') return createIterResultObject(index, false);\\n if (kind == 'values') return createIterResultObject(target[index], false);\\n return createIterResultObject([index, target[index]], false);\\n}, 'values');\\n\\n// argumentsList[@@iterator] is %ArrayProto_values%\\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\\nvar values = Iterators.Arguments = Iterators.Array;\\n\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\naddToUnscopables('keys');\\naddToUnscopables('values');\\naddToUnscopables('entries');\\n\\n// V8 ~ Chrome 45- bug\\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\\n defineProperty(values, 'name', { value: 'values' });\\n} catch (error) { /* empty */ }\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.iterator.js?")}),"./node_modules/core-js/modules/es.array.push.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ \\"./node_modules/core-js/internals/array-set-length.js\\");\\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \\"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar INCORRECT_TO_LENGTH = fails(function () {\\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\\n});\\n\\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\\nvar properErrorOnNonWritableLength = function () {\\n try {\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty([], 'length', { writable: false }).push();\\n } catch (error) {\\n return error instanceof TypeError;\\n }\\n};\\n\\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\\n\\n// \`Array.prototype.push\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.push\\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n push: function push(item) {\\n var O = toObject(this);\\n var len = lengthOfArrayLike(O);\\n var argCount = arguments.length;\\n doesNotExceedSafeInteger(len + argCount);\\n for (var i = 0; i < argCount; i++) {\\n O[len] = arguments[i];\\n len++;\\n }\\n setArrayLength(O, len);\\n return len;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.push.js?")}),"./node_modules/core-js/modules/es.array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ \\"./node_modules/core-js/internals/delete-property-or-throw.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \\"./node_modules/core-js/internals/array-sort.js\\");\\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \\"./node_modules/core-js/internals/array-method-is-strict.js\\");\\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \\"./node_modules/core-js/internals/engine-ff-version.js\\");\\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \\"./node_modules/core-js/internals/engine-is-ie-or-edge.js\\");\\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \\"./node_modules/core-js/internals/engine-webkit-version.js\\");\\n\\nvar test = [];\\nvar nativeSort = uncurryThis(test.sort);\\nvar push = uncurryThis(test.push);\\n\\n// IE8-\\nvar FAILS_ON_UNDEFINED = fails(function () {\\n test.sort(undefined);\\n});\\n// V8 bug\\nvar FAILS_ON_NULL = fails(function () {\\n test.sort(null);\\n});\\n// Old WebKit\\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\\n\\nvar STABLE_SORT = !fails(function () {\\n // feature detection can be too slow, so check engines versions\\n if (V8) return V8 < 70;\\n if (FF && FF > 3) return;\\n if (IE_OR_EDGE) return true;\\n if (WEBKIT) return WEBKIT < 603;\\n\\n var result = '';\\n var code, chr, value, index;\\n\\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\\n for (code = 65; code < 76; code++) {\\n chr = String.fromCharCode(code);\\n\\n switch (code) {\\n case 66: case 69: case 70: case 72: value = 3; break;\\n case 68: case 71: value = 4; break;\\n default: value = 2;\\n }\\n\\n for (index = 0; index < 47; index++) {\\n test.push({ k: chr + index, v: value });\\n }\\n }\\n\\n test.sort(function (a, b) { return b.v - a.v; });\\n\\n for (index = 0; index < test.length; index++) {\\n chr = test[index].k.charAt(0);\\n if (result.charAt(result.length - 1) !== chr) result += chr;\\n }\\n\\n return result !== 'DGBEFHACIJK';\\n});\\n\\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\\n\\nvar getSortCompare = function (comparefn) {\\n return function (x, y) {\\n if (y === undefined) return -1;\\n if (x === undefined) return 1;\\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\\n return toString(x) > toString(y) ? 1 : -1;\\n };\\n};\\n\\n// \`Array.prototype.sort\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.sort\\n$({ target: 'Array', proto: true, forced: FORCED }, {\\n sort: function sort(comparefn) {\\n if (comparefn !== undefined) aCallable(comparefn);\\n\\n var array = toObject(this);\\n\\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\\n\\n var items = [];\\n var arrayLength = lengthOfArrayLike(array);\\n var itemsLength, index;\\n\\n for (index = 0; index < arrayLength; index++) {\\n if (index in array) push(items, array[index]);\\n }\\n\\n internalSort(items, getSortCompare(comparefn));\\n\\n itemsLength = lengthOfArrayLike(items);\\n index = 0;\\n\\n while (index < itemsLength) array[index] = items[index++];\\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\\n\\n return array;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.sort.js?")}),"./node_modules/core-js/modules/es.array.unscopables.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// this method was added to unscopables after implementation\\n// in popular engines, so it's moved to a separate module\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\naddToUnscopables('flatMap');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.unscopables.flat-map.js?")}),"./node_modules/core-js/modules/es.array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \\"./node_modules/core-js/internals/array-with.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\n\\nvar $Array = Array;\\n\\n// \`Array.prototype.with\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.with\\n$({ target: 'Array', proto: true }, {\\n 'with': function (index, value) {\\n return arrayWith(toIndexedObject(this), $Array, index, value);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.with.js?")}),"./node_modules/core-js/modules/es.error.cause.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable no-unused-vars -- required for functions \`.length\` */\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar wrapErrorConstructorWithCause = __webpack_require__(/*! ../internals/wrap-error-constructor-with-cause */ \\"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js\\");\\n\\nvar WEB_ASSEMBLY = 'WebAssembly';\\nvar WebAssembly = global[WEB_ASSEMBLY];\\n\\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\\n\\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\\n var O = {};\\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\\n};\\n\\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\\n var O = {};\\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\\n }\\n};\\n\\n// https://tc39.es/ecma262/#sec-nativeerror\\nexportGlobalErrorCauseWrapper('Error', function (init) {\\n return function Error(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\\n return function EvalError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\\n return function RangeError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\\n return function ReferenceError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\\n return function SyntaxError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\\n return function TypeError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('URIError', function (init) {\\n return function URIError(message) { return apply(init, this, arguments); };\\n});\\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\\n return function CompileError(message) { return apply(init, this, arguments); };\\n});\\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\\n return function LinkError(message) { return apply(init, this, arguments); };\\n});\\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\\n return function RuntimeError(message) { return apply(init, this, arguments); };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.error.cause.js?")}),"./node_modules/core-js/modules/es.global-this.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// \`globalThis\` object\\n// https://tc39.es/ecma262/#sec-globalthis\\n$({ global: true, forced: global.globalThis !== global }, {\\n globalThis: global\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.global-this.js?")}),"./node_modules/core-js/modules/es.json.stringify.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \\"./node_modules/core-js/internals/array-slice.js\\");\\nvar getReplacerFunction = __webpack_require__(/*! ../internals/get-json-replacer-function */ \\"./node_modules/core-js/internals/get-json-replacer-function.js\\");\\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \\"./node_modules/core-js/internals/symbol-constructor-detection.js\\");\\n\\nvar $String = String;\\nvar $stringify = getBuiltIn('JSON', 'stringify');\\nvar exec = uncurryThis(/./.exec);\\nvar charAt = uncurryThis(''.charAt);\\nvar charCodeAt = uncurryThis(''.charCodeAt);\\nvar replace = uncurryThis(''.replace);\\nvar numberToString = uncurryThis(1.0.toString);\\n\\nvar tester = /[\\\\uD800-\\\\uDFFF]/g;\\nvar low = /^[\\\\uD800-\\\\uDBFF]$/;\\nvar hi = /^[\\\\uDC00-\\\\uDFFF]$/;\\n\\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\\n var symbol = getBuiltIn('Symbol')();\\n // MS Edge converts symbol values to JSON as {}\\n return $stringify([symbol]) != '[null]'\\n // WebKit converts symbol values to JSON as null\\n || $stringify({ a: symbol }) != '{}'\\n // V8 throws on boxed symbols\\n || $stringify(Object(symbol)) != '{}';\\n});\\n\\n// https://github.com/tc39/proposal-well-formed-stringify\\nvar ILL_FORMED_UNICODE = fails(function () {\\n return $stringify('\\\\uDF06\\\\uD834') !== '\\"\\\\\\\\udf06\\\\\\\\ud834\\"'\\n || $stringify('\\\\uDEAD') !== '\\"\\\\\\\\udead\\"';\\n});\\n\\nvar stringifyWithSymbolsFix = function (it, replacer) {\\n var args = arraySlice(arguments);\\n var $replacer = getReplacerFunction(replacer);\\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\\n args[1] = function (key, value) {\\n // some old implementations (like WebKit) could pass numbers as keys\\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\\n if (!isSymbol(value)) return value;\\n };\\n return apply($stringify, null, args);\\n};\\n\\nvar fixIllFormed = function (match, offset, string) {\\n var prev = charAt(string, offset - 1);\\n var next = charAt(string, offset + 1);\\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\\n return '\\\\\\\\u' + numberToString(charCodeAt(match, 0), 16);\\n } return match;\\n};\\n\\nif ($stringify) {\\n // \`JSON.stringify\` method\\n // https://tc39.es/ecma262/#sec-json.stringify\\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n stringify: function stringify(it, replacer, space) {\\n var args = arraySlice(arguments);\\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\\n }\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.json.stringify.js?")}),"./node_modules/core-js/modules/es.math.hypot.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\n\\n// eslint-disable-next-line es/no-math-hypot -- required for testing\\nvar $hypot = Math.hypot;\\nvar abs = Math.abs;\\nvar sqrt = Math.sqrt;\\n\\n// Chrome 77 bug\\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\\n\\n// \`Math.hypot\` method\\n// https://tc39.es/ecma262/#sec-math.hypot\\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n hypot: function hypot(value1, value2) {\\n var sum = 0;\\n var i = 0;\\n var aLen = arguments.length;\\n var larg = 0;\\n var arg, div;\\n while (i < aLen) {\\n arg = abs(arguments[i++]);\\n if (larg < arg) {\\n div = larg / arg;\\n sum = sum * div * div + 1;\\n larg = arg;\\n } else if (arg > 0) {\\n div = arg / larg;\\n sum += div * div;\\n } else sum += arg;\\n }\\n return larg === Infinity ? Infinity : larg * sqrt(sum);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.math.hypot.js?")}),"./node_modules/core-js/modules/es.number.to-fixed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar thisNumberValue = __webpack_require__(/*! ../internals/this-number-value */ \\"./node_modules/core-js/internals/this-number-value.js\\");\\nvar $repeat = __webpack_require__(/*! ../internals/string-repeat */ \\"./node_modules/core-js/internals/string-repeat.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar $RangeError = RangeError;\\nvar $String = String;\\nvar floor = Math.floor;\\nvar repeat = uncurryThis($repeat);\\nvar stringSlice = uncurryThis(''.slice);\\nvar nativeToFixed = uncurryThis(1.0.toFixed);\\n\\nvar pow = function (x, n, acc) {\\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\\n};\\n\\nvar log = function (x) {\\n var n = 0;\\n var x2 = x;\\n while (x2 >= 4096) {\\n n += 12;\\n x2 /= 4096;\\n }\\n while (x2 >= 2) {\\n n += 1;\\n x2 /= 2;\\n } return n;\\n};\\n\\nvar multiply = function (data, n, c) {\\n var index = -1;\\n var c2 = c;\\n while (++index < 6) {\\n c2 += n * data[index];\\n data[index] = c2 % 1e7;\\n c2 = floor(c2 / 1e7);\\n }\\n};\\n\\nvar divide = function (data, n) {\\n var index = 6;\\n var c = 0;\\n while (--index >= 0) {\\n c += data[index];\\n data[index] = floor(c / n);\\n c = (c % n) * 1e7;\\n }\\n};\\n\\nvar dataToString = function (data) {\\n var index = 6;\\n var s = '';\\n while (--index >= 0) {\\n if (s !== '' || index === 0 || data[index] !== 0) {\\n var t = $String(data[index]);\\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\\n }\\n } return s;\\n};\\n\\nvar FORCED = fails(function () {\\n return nativeToFixed(0.00008, 3) !== '0.000' ||\\n nativeToFixed(0.9, 0) !== '1' ||\\n nativeToFixed(1.255, 2) !== '1.25' ||\\n nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\\n}) || !fails(function () {\\n // V8 ~ Android 4.3-\\n nativeToFixed({});\\n});\\n\\n// \`Number.prototype.toFixed\` method\\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\\n$({ target: 'Number', proto: true, forced: FORCED }, {\\n toFixed: function toFixed(fractionDigits) {\\n var number = thisNumberValue(this);\\n var fractDigits = toIntegerOrInfinity(fractionDigits);\\n var data = [0, 0, 0, 0, 0, 0];\\n var sign = '';\\n var result = '0';\\n var e, z, j, k;\\n\\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\\n if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (number != number) return 'NaN';\\n if (number <= -1e21 || number >= 1e21) return $String(number);\\n if (number < 0) {\\n sign = '-';\\n number = -number;\\n }\\n if (number > 1e-21) {\\n e = log(number * pow(2, 69, 1)) - 69;\\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\\n z *= 0x10000000000000;\\n e = 52 - e;\\n if (e > 0) {\\n multiply(data, 0, z);\\n j = fractDigits;\\n while (j >= 7) {\\n multiply(data, 1e7, 0);\\n j -= 7;\\n }\\n multiply(data, pow(10, j, 1), 0);\\n j = e - 1;\\n while (j >= 23) {\\n divide(data, 1 << 23);\\n j -= 23;\\n }\\n divide(data, 1 << j);\\n multiply(data, 1, 1);\\n divide(data, 2);\\n result = dataToString(data);\\n } else {\\n multiply(data, 0, z);\\n multiply(data, 1 << -e, 0);\\n result = dataToString(data) + repeat('0', fractDigits);\\n }\\n }\\n if (fractDigits > 0) {\\n k = result.length;\\n result = sign + (k <= fractDigits\\n ? '0.' + repeat('0', fractDigits - k) + result\\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\\n } else {\\n result = sign + result;\\n } return result;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.number.to-fixed.js?")}),"./node_modules/core-js/modules/es.object.assign.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \\"./node_modules/core-js/internals/object-assign.js\\");\\n\\n// \`Object.assign\` method\\n// https://tc39.es/ecma262/#sec-object.assign\\n// eslint-disable-next-line es/no-object-assign -- required for testing\\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\\n assign: assign\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.assign.js?")}),"./node_modules/core-js/modules/es.object.has-own.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\n\\n// \`Object.hasOwn\` method\\n// https://tc39.es/ecma262/#sec-object.hasown\\n$({ target: 'Object', stat: true }, {\\n hasOwn: hasOwn\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.has-own.js?")}),"./node_modules/core-js/modules/es.parse-float.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $parseFloat = __webpack_require__(/*! ../internals/number-parse-float */ \\"./node_modules/core-js/internals/number-parse-float.js\\");\\n\\n// \`parseFloat\` method\\n// https://tc39.es/ecma262/#sec-parsefloat-string\\n$({ global: true, forced: parseFloat != $parseFloat }, {\\n parseFloat: $parseFloat\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-float.js?")}),"./node_modules/core-js/modules/es.parse-int.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $parseInt = __webpack_require__(/*! ../internals/number-parse-int */ \\"./node_modules/core-js/internals/number-parse-int.js\\");\\n\\n// \`parseInt\` method\\n// https://tc39.es/ecma262/#sec-parseint-string-radix\\n$({ global: true, forced: parseInt != $parseInt }, {\\n parseInt: $parseInt\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-int.js?")}),"./node_modules/core-js/modules/es.promise.all-settled.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \\"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\\");\\n\\n// \`Promise.allSettled\` method\\n// https://tc39.es/ecma262/#sec-promise.allsettled\\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\\n allSettled: function allSettled(iterable) {\\n var C = this;\\n var capability = newPromiseCapabilityModule.f(C);\\n var resolve = capability.resolve;\\n var reject = capability.reject;\\n var result = perform(function () {\\n var promiseResolve = aCallable(C.resolve);\\n var values = [];\\n var counter = 0;\\n var remaining = 1;\\n iterate(iterable, function (promise) {\\n var index = counter++;\\n var alreadyCalled = false;\\n remaining++;\\n call(promiseResolve, C, promise).then(function (value) {\\n if (alreadyCalled) return;\\n alreadyCalled = true;\\n values[index] = { status: 'fulfilled', value: value };\\n --remaining || resolve(values);\\n }, function (error) {\\n if (alreadyCalled) return;\\n alreadyCalled = true;\\n values[index] = { status: 'rejected', reason: error };\\n --remaining || resolve(values);\\n });\\n });\\n --remaining || resolve(values);\\n });\\n if (result.error) reject(result.value);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all-settled.js?")}),"./node_modules/core-js/modules/es.promise.all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \\"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\\");\\n\\n// \`Promise.all\` method\\n// https://tc39.es/ecma262/#sec-promise.all\\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\\n all: function all(iterable) {\\n var C = this;\\n var capability = newPromiseCapabilityModule.f(C);\\n var resolve = capability.resolve;\\n var reject = capability.reject;\\n var result = perform(function () {\\n var $promiseResolve = aCallable(C.resolve);\\n var values = [];\\n var counter = 0;\\n var remaining = 1;\\n iterate(iterable, function (promise) {\\n var index = counter++;\\n var alreadyCalled = false;\\n remaining++;\\n call($promiseResolve, C, promise).then(function (value) {\\n if (alreadyCalled) return;\\n alreadyCalled = true;\\n values[index] = value;\\n --remaining || resolve(values);\\n }, reject);\\n });\\n --remaining || resolve(values);\\n });\\n if (result.error) reject(result.value);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all.js?")}),"./node_modules/core-js/modules/es.promise.catch.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\n\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\n\\n// \`Promise.prototype.catch\` method\\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\\n 'catch': function (onRejected) {\\n return this.then(undefined, onRejected);\\n }\\n});\\n\\n// makes sure that native promise-based APIs \`Promise#catch\` properly works with patched \`Promise#then\`\\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\\n var method = getBuiltIn('Promise').prototype['catch'];\\n if (NativePromisePrototype['catch'] !== method) {\\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.catch.js?")}),"./node_modules/core-js/modules/es.promise.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\nvar task = (__webpack_require__(/*! ../internals/task */ \\"./node_modules/core-js/internals/task.js\\").set);\\nvar microtask = __webpack_require__(/*! ../internals/microtask */ \\"./node_modules/core-js/internals/microtask.js\\");\\nvar hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ \\"./node_modules/core-js/internals/host-report-errors.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar Queue = __webpack_require__(/*! ../internals/queue */ \\"./node_modules/core-js/internals/queue.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar PromiseConstructorDetection = __webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\n\\nvar PROMISE = 'Promise';\\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\\nvar setInternalState = InternalStateModule.set;\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\nvar PromiseConstructor = NativePromiseConstructor;\\nvar PromisePrototype = NativePromisePrototype;\\nvar TypeError = global.TypeError;\\nvar document = global.document;\\nvar process = global.process;\\nvar newPromiseCapability = newPromiseCapabilityModule.f;\\nvar newGenericPromiseCapability = newPromiseCapability;\\n\\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\\nvar UNHANDLED_REJECTION = 'unhandledrejection';\\nvar REJECTION_HANDLED = 'rejectionhandled';\\nvar PENDING = 0;\\nvar FULFILLED = 1;\\nvar REJECTED = 2;\\nvar HANDLED = 1;\\nvar UNHANDLED = 2;\\n\\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\\n\\n// helpers\\nvar isThenable = function (it) {\\n var then;\\n return isObject(it) && isCallable(then = it.then) ? then : false;\\n};\\n\\nvar callReaction = function (reaction, state) {\\n var value = state.value;\\n var ok = state.state == FULFILLED;\\n var handler = ok ? reaction.ok : reaction.fail;\\n var resolve = reaction.resolve;\\n var reject = reaction.reject;\\n var domain = reaction.domain;\\n var result, then, exited;\\n try {\\n if (handler) {\\n if (!ok) {\\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\\n state.rejection = HANDLED;\\n }\\n if (handler === true) result = value;\\n else {\\n if (domain) domain.enter();\\n result = handler(value); // can throw\\n if (domain) {\\n domain.exit();\\n exited = true;\\n }\\n }\\n if (result === reaction.promise) {\\n reject(TypeError('Promise-chain cycle'));\\n } else if (then = isThenable(result)) {\\n call(then, result, resolve, reject);\\n } else resolve(result);\\n } else reject(value);\\n } catch (error) {\\n if (domain && !exited) domain.exit();\\n reject(error);\\n }\\n};\\n\\nvar notify = function (state, isReject) {\\n if (state.notified) return;\\n state.notified = true;\\n microtask(function () {\\n var reactions = state.reactions;\\n var reaction;\\n while (reaction = reactions.get()) {\\n callReaction(reaction, state);\\n }\\n state.notified = false;\\n if (isReject && !state.rejection) onUnhandled(state);\\n });\\n};\\n\\nvar dispatchEvent = function (name, promise, reason) {\\n var event, handler;\\n if (DISPATCH_EVENT) {\\n event = document.createEvent('Event');\\n event.promise = promise;\\n event.reason = reason;\\n event.initEvent(name, false, true);\\n global.dispatchEvent(event);\\n } else event = { promise: promise, reason: reason };\\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\\n};\\n\\nvar onUnhandled = function (state) {\\n call(task, global, function () {\\n var promise = state.facade;\\n var value = state.value;\\n var IS_UNHANDLED = isUnhandled(state);\\n var result;\\n if (IS_UNHANDLED) {\\n result = perform(function () {\\n if (IS_NODE) {\\n process.emit('unhandledRejection', value, promise);\\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\\n });\\n // Browsers should not trigger \`rejectionHandled\` event if it was handled here, NodeJS - should\\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\\n if (result.error) throw result.value;\\n }\\n });\\n};\\n\\nvar isUnhandled = function (state) {\\n return state.rejection !== HANDLED && !state.parent;\\n};\\n\\nvar onHandleUnhandled = function (state) {\\n call(task, global, function () {\\n var promise = state.facade;\\n if (IS_NODE) {\\n process.emit('rejectionHandled', promise);\\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\\n });\\n};\\n\\nvar bind = function (fn, state, unwrap) {\\n return function (value) {\\n fn(state, value, unwrap);\\n };\\n};\\n\\nvar internalReject = function (state, value, unwrap) {\\n if (state.done) return;\\n state.done = true;\\n if (unwrap) state = unwrap;\\n state.value = value;\\n state.state = REJECTED;\\n notify(state, true);\\n};\\n\\nvar internalResolve = function (state, value, unwrap) {\\n if (state.done) return;\\n state.done = true;\\n if (unwrap) state = unwrap;\\n try {\\n if (state.facade === value) throw TypeError(\\"Promise can't be resolved itself\\");\\n var then = isThenable(value);\\n if (then) {\\n microtask(function () {\\n var wrapper = { done: false };\\n try {\\n call(then, value,\\n bind(internalResolve, wrapper, state),\\n bind(internalReject, wrapper, state)\\n );\\n } catch (error) {\\n internalReject(wrapper, error, state);\\n }\\n });\\n } else {\\n state.value = value;\\n state.state = FULFILLED;\\n notify(state, false);\\n }\\n } catch (error) {\\n internalReject({ done: false }, error, state);\\n }\\n};\\n\\n// constructor polyfill\\nif (FORCED_PROMISE_CONSTRUCTOR) {\\n // 25.4.3.1 Promise(executor)\\n PromiseConstructor = function Promise(executor) {\\n anInstance(this, PromisePrototype);\\n aCallable(executor);\\n call(Internal, this);\\n var state = getInternalPromiseState(this);\\n try {\\n executor(bind(internalResolve, state), bind(internalReject, state));\\n } catch (error) {\\n internalReject(state, error);\\n }\\n };\\n\\n PromisePrototype = PromiseConstructor.prototype;\\n\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n Internal = function Promise(executor) {\\n setInternalState(this, {\\n type: PROMISE,\\n done: false,\\n notified: false,\\n parent: false,\\n reactions: new Queue(),\\n rejection: false,\\n state: PENDING,\\n value: undefined\\n });\\n };\\n\\n // \`Promise.prototype.then\` method\\n // https://tc39.es/ecma262/#sec-promise.prototype.then\\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\\n var state = getInternalPromiseState(this);\\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\\n state.parent = true;\\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\\n reaction.fail = isCallable(onRejected) && onRejected;\\n reaction.domain = IS_NODE ? process.domain : undefined;\\n if (state.state == PENDING) state.reactions.add(reaction);\\n else microtask(function () {\\n callReaction(reaction, state);\\n });\\n return reaction.promise;\\n });\\n\\n OwnPromiseCapability = function () {\\n var promise = new Internal();\\n var state = getInternalPromiseState(promise);\\n this.promise = promise;\\n this.resolve = bind(internalResolve, state);\\n this.reject = bind(internalReject, state);\\n };\\n\\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\\n return C === PromiseConstructor || C === PromiseWrapper\\n ? new OwnPromiseCapability(C)\\n : newGenericPromiseCapability(C);\\n };\\n\\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\\n nativeThen = NativePromisePrototype.then;\\n\\n if (!NATIVE_PROMISE_SUBCLASSING) {\\n // make \`Promise#then\` return a polyfilled \`Promise\` for native promise-based APIs\\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\\n var that = this;\\n return new PromiseConstructor(function (resolve, reject) {\\n call(nativeThen, that, resolve, reject);\\n }).then(onFulfilled, onRejected);\\n // https://github.com/zloirock/core-js/issues/640\\n }, { unsafe: true });\\n }\\n\\n // make \`.constructor === Promise\` work for native promise-based APIs\\n try {\\n delete NativePromisePrototype.constructor;\\n } catch (error) { /* empty */ }\\n\\n // make \`instanceof Promise\` work for native promise-based APIs\\n if (setPrototypeOf) {\\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\\n }\\n }\\n}\\n\\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\\n Promise: PromiseConstructor\\n});\\n\\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\\nsetSpecies(PROMISE);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.constructor.js?")}),"./node_modules/core-js/modules/es.promise.finally.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \\"./node_modules/core-js/internals/promise-resolve.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\n\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\n\\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\\n});\\n\\n// \`Promise.prototype.finally\` method\\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\\n 'finally': function (onFinally) {\\n var C = speciesConstructor(this, getBuiltIn('Promise'));\\n var isFunction = isCallable(onFinally);\\n return this.then(\\n isFunction ? function (x) {\\n return promiseResolve(C, onFinally()).then(function () { return x; });\\n } : onFinally,\\n isFunction ? function (e) {\\n return promiseResolve(C, onFinally()).then(function () { throw e; });\\n } : onFinally\\n );\\n }\\n});\\n\\n// makes sure that native promise-based APIs \`Promise#finally\` properly works with patched \`Promise#then\`\\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\\n var method = getBuiltIn('Promise').prototype['finally'];\\n if (NativePromisePrototype['finally'] !== method) {\\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.finally.js?")}),"./node_modules/core-js/modules/es.promise.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's split to modules listed below\\n__webpack_require__(/*! ../modules/es.promise.constructor */ \\"./node_modules/core-js/modules/es.promise.constructor.js\\");\\n__webpack_require__(/*! ../modules/es.promise.all */ \\"./node_modules/core-js/modules/es.promise.all.js\\");\\n__webpack_require__(/*! ../modules/es.promise.catch */ \\"./node_modules/core-js/modules/es.promise.catch.js\\");\\n__webpack_require__(/*! ../modules/es.promise.race */ \\"./node_modules/core-js/modules/es.promise.race.js\\");\\n__webpack_require__(/*! ../modules/es.promise.reject */ \\"./node_modules/core-js/modules/es.promise.reject.js\\");\\n__webpack_require__(/*! ../modules/es.promise.resolve */ \\"./node_modules/core-js/modules/es.promise.resolve.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.js?")}),"./node_modules/core-js/modules/es.promise.race.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \\"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\\");\\n\\n// \`Promise.race\` method\\n// https://tc39.es/ecma262/#sec-promise.race\\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\\n race: function race(iterable) {\\n var C = this;\\n var capability = newPromiseCapabilityModule.f(C);\\n var reject = capability.reject;\\n var result = perform(function () {\\n var $promiseResolve = aCallable(C.resolve);\\n iterate(iterable, function (promise) {\\n call($promiseResolve, C, promise).then(capability.resolve, reject);\\n });\\n });\\n if (result.error) reject(result.value);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.race.js?")}),"./node_modules/core-js/modules/es.promise.reject.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\n\\n// \`Promise.reject\` method\\n// https://tc39.es/ecma262/#sec-promise.reject\\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\\n reject: function reject(r) {\\n var capability = newPromiseCapabilityModule.f(this);\\n call(capability.reject, undefined, r);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.reject.js?")}),"./node_modules/core-js/modules/es.promise.resolve.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \\"./node_modules/core-js/internals/promise-resolve.js\\");\\n\\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\\n\\n// \`Promise.resolve\` method\\n// https://tc39.es/ecma262/#sec-promise.resolve\\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\\n resolve: function resolve(x) {\\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.resolve.js?")}),"./node_modules/core-js/modules/es.reflect.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\n\\n$({ global: true }, { Reflect: {} });\\n\\n// Reflect[@@toStringTag] property\\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\\nsetToStringTag(global.Reflect, 'Reflect', true);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.reflect.to-string-tag.js?")}),"./node_modules/core-js/modules/es.regexp.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \\"./node_modules/core-js/internals/regexp-sticky-helpers.js\\");\\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \\"./node_modules/core-js/internals/proxy-accessor.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").enforce);\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \\"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\\");\\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \\"./node_modules/core-js/internals/regexp-unsupported-ncg.js\\");\\n\\nvar MATCH = wellKnownSymbol('match');\\nvar NativeRegExp = global.RegExp;\\nvar RegExpPrototype = NativeRegExp.prototype;\\nvar SyntaxError = global.SyntaxError;\\nvar exec = uncurryThis(RegExpPrototype.exec);\\nvar charAt = uncurryThis(''.charAt);\\nvar replace = uncurryThis(''.replace);\\nvar stringIndexOf = uncurryThis(''.indexOf);\\nvar stringSlice = uncurryThis(''.slice);\\n// TODO: Use only proper RegExpIdentifierName\\nvar IS_NCG = /^\\\\?<[^\\\\s\\\\d!#%&*+<=>@^][^\\\\s!#%&*+<=>@^]*>/;\\nvar re1 = /a/g;\\nvar re2 = /a/g;\\n\\n// \\"new\\" should create a new object, old webkit bug\\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\\n\\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\\n\\nvar BASE_FORCED = DESCRIPTORS &&\\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\\n re2[MATCH] = false;\\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\\n }));\\n\\nvar handleDotAll = function (string) {\\n var length = string.length;\\n var index = 0;\\n var result = '';\\n var brackets = false;\\n var chr;\\n for (; index <= length; index++) {\\n chr = charAt(string, index);\\n if (chr === '\\\\\\\\') {\\n result += chr + charAt(string, ++index);\\n continue;\\n }\\n if (!brackets && chr === '.') {\\n result += '[\\\\\\\\s\\\\\\\\S]';\\n } else {\\n if (chr === '[') {\\n brackets = true;\\n } else if (chr === ']') {\\n brackets = false;\\n } result += chr;\\n }\\n } return result;\\n};\\n\\nvar handleNCG = function (string) {\\n var length = string.length;\\n var index = 0;\\n var result = '';\\n var named = [];\\n var names = {};\\n var brackets = false;\\n var ncg = false;\\n var groupid = 0;\\n var groupname = '';\\n var chr;\\n for (; index <= length; index++) {\\n chr = charAt(string, index);\\n if (chr === '\\\\\\\\') {\\n chr = chr + charAt(string, ++index);\\n } else if (chr === ']') {\\n brackets = false;\\n } else if (!brackets) switch (true) {\\n case chr === '[':\\n brackets = true;\\n break;\\n case chr === '(':\\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\\n index += 2;\\n ncg = true;\\n }\\n result += chr;\\n groupid++;\\n continue;\\n case chr === '>' && ncg:\\n if (groupname === '' || hasOwn(names, groupname)) {\\n throw new SyntaxError('Invalid capture group name');\\n }\\n names[groupname] = true;\\n named[named.length] = [groupname, groupid];\\n ncg = false;\\n groupname = '';\\n continue;\\n }\\n if (ncg) groupname += chr;\\n else result += chr;\\n } return [result, named];\\n};\\n\\n// \`RegExp\` constructor\\n// https://tc39.es/ecma262/#sec-regexp-constructor\\nif (isForced('RegExp', BASE_FORCED)) {\\n var RegExpWrapper = function RegExp(pattern, flags) {\\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\\n var patternIsRegExp = isRegExp(pattern);\\n var flagsAreUndefined = flags === undefined;\\n var groups = [];\\n var rawPattern = pattern;\\n var rawFlags, dotAll, sticky, handled, result, state;\\n\\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\\n return pattern;\\n }\\n\\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\\n pattern = pattern.source;\\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\\n }\\n\\n pattern = pattern === undefined ? '' : toString(pattern);\\n flags = flags === undefined ? '' : toString(flags);\\n rawPattern = pattern;\\n\\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\\n if (dotAll) flags = replace(flags, /s/g, '');\\n }\\n\\n rawFlags = flags;\\n\\n if (MISSED_STICKY && 'sticky' in re1) {\\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\\n }\\n\\n if (UNSUPPORTED_NCG) {\\n handled = handleNCG(pattern);\\n pattern = handled[0];\\n groups = handled[1];\\n }\\n\\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\\n\\n if (dotAll || sticky || groups.length) {\\n state = enforceInternalState(result);\\n if (dotAll) {\\n state.dotAll = true;\\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\\n }\\n if (sticky) state.sticky = true;\\n if (groups.length) state.groups = groups;\\n }\\n\\n if (pattern !== rawPattern) try {\\n // fails in old engines, but we have no alternatives for unsupported regex syntax\\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\\n } catch (error) { /* empty */ }\\n\\n return result;\\n };\\n\\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\\n }\\n\\n RegExpPrototype.constructor = RegExpWrapper;\\n RegExpWrapper.prototype = RegExpPrototype;\\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\\n}\\n\\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\\nsetSpecies('RegExp');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.constructor.js?")}),"./node_modules/core-js/modules/es.regexp.dot-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \\"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").get);\\n\\nvar RegExpPrototype = RegExp.prototype;\\nvar $TypeError = TypeError;\\n\\n// \`RegExp.prototype.dotAll\` getter\\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\\n configurable: true,\\n get: function dotAll() {\\n if (this === RegExpPrototype) return undefined;\\n // We can't use InternalStateModule.getterFor because\\n // we don't add metadata for regexps created by a literal.\\n if (classof(this) === 'RegExp') {\\n return !!getInternalState(this).dotAll;\\n }\\n throw $TypeError('Incompatible receiver, RegExp required');\\n }\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.dot-all.js?")}),"./node_modules/core-js/modules/es.regexp.exec.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar exec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\n\\n// \`RegExp.prototype.exec\` method\\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\\n exec: exec\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.exec.js?")}),"./node_modules/core-js/modules/es.regexp.flags.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \\"./node_modules/core-js/internals/regexp-flags.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\\nvar RegExp = global.RegExp;\\nvar RegExpPrototype = RegExp.prototype;\\n\\nvar FORCED = DESCRIPTORS && fails(function () {\\n var INDICES_SUPPORT = true;\\n try {\\n RegExp('.', 'd');\\n } catch (error) {\\n INDICES_SUPPORT = false;\\n }\\n\\n var O = {};\\n // modern V8 bug\\n var calls = '';\\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\\n\\n var addGetter = function (key, chr) {\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty(O, key, { get: function () {\\n calls += chr;\\n return true;\\n } });\\n };\\n\\n var pairs = {\\n dotAll: 's',\\n global: 'g',\\n ignoreCase: 'i',\\n multiline: 'm',\\n sticky: 'y'\\n };\\n\\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\\n\\n for (var key in pairs) addGetter(key, pairs[key]);\\n\\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\\n\\n return result !== expected || calls !== expected;\\n});\\n\\n// \`RegExp.prototype.flags\` getter\\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\\n configurable: true,\\n get: regExpFlags\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.flags.js?")}),"./node_modules/core-js/modules/es.regexp.test.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove from \`core-js@4\` since it's moved to entry points\\n__webpack_require__(/*! ../modules/es.regexp.exec */ \\"./node_modules/core-js/modules/es.regexp.exec.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\n\\nvar DELEGATES_TO_EXEC = function () {\\n var execCalled = false;\\n var re = /[ac]/;\\n re.exec = function () {\\n execCalled = true;\\n return /./.exec.apply(this, arguments);\\n };\\n return re.test('abc') === true && execCalled;\\n}();\\n\\nvar nativeTest = /./.test;\\n\\n// \`RegExp.prototype.test\` method\\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\\n test: function (S) {\\n var R = anObject(this);\\n var string = toString(S);\\n var exec = R.exec;\\n if (!isCallable(exec)) return call(nativeTest, R, string);\\n var result = call(exec, R, string);\\n if (result === null) return false;\\n anObject(result);\\n return true;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.test.js?")}),"./node_modules/core-js/modules/es.regexp.to-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\").PROPER);\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\n\\nvar TO_STRING = 'toString';\\nvar RegExpPrototype = RegExp.prototype;\\nvar nativeToString = RegExpPrototype[TO_STRING];\\n\\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\\n// FF44- RegExp#toString has a wrong name\\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;\\n\\n// \`RegExp.prototype.toString\` method\\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\\nif (NOT_GENERIC || INCORRECT_NAME) {\\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\\n var R = anObject(this);\\n var pattern = $toString(R.source);\\n var flags = $toString(getRegExpFlags(R));\\n return '/' + pattern + '/' + flags;\\n }, { unsafe: true });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.to-string.js?")}),"./node_modules/core-js/modules/es.string.at-alternative.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar charAt = uncurryThis(''.charAt);\\n\\nvar FORCED = fails(function () {\\n // eslint-disable-next-line es/no-array-string-prototype-at -- safe\\n return '𠮷'.at(-2) !== '\\\\uD842';\\n});\\n\\n// \`String.prototype.at\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.at\\n$({ target: 'String', proto: true, forced: FORCED }, {\\n at: function at(index) {\\n var S = toString(requireObjectCoercible(this));\\n var len = S.length;\\n var relativeIndex = toIntegerOrInfinity(index);\\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\\n return (k < 0 || k >= len) ? undefined : charAt(S, k);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.at-alternative.js?")}),"./node_modules/core-js/modules/es.string.ends-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \\"./node_modules/core-js/internals/not-a-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \\"./node_modules/core-js/internals/correct-is-regexp-logic.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\\nvar nativeEndsWith = uncurryThis(''.endsWith);\\nvar slice = uncurryThis(''.slice);\\nvar min = Math.min;\\n\\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\\n// https://github.com/zloirock/core-js/pull/702\\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\\n return descriptor && !descriptor.writable;\\n}();\\n\\n// \`String.prototype.endsWith\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\\n var that = toString(requireObjectCoercible(this));\\n notARegExp(searchString);\\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\\n var len = that.length;\\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\\n var search = toString(searchString);\\n return nativeEndsWith\\n ? nativeEndsWith(that, search, end)\\n : slice(that, end - search.length, end) === search;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.ends-with.js?")}),"./node_modules/core-js/modules/es.string.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \\"./node_modules/core-js/internals/not-a-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \\"./node_modules/core-js/internals/correct-is-regexp-logic.js\\");\\n\\nvar stringIndexOf = uncurryThis(''.indexOf);\\n\\n// \`String.prototype.includes\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.includes\\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\\n includes: function includes(searchString /* , position = 0 */) {\\n return !!~stringIndexOf(\\n toString(requireObjectCoercible(this)),\\n toString(notARegExp(searchString)),\\n arguments.length > 1 ? arguments[1] : undefined\\n );\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.includes.js?")}),"./node_modules/core-js/modules/es.string.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \\"./node_modules/core-js/internals/string-multibyte.js\\").charAt);\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \\"./node_modules/core-js/internals/iterator-define.js\\");\\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \\"./node_modules/core-js/internals/create-iter-result-object.js\\");\\n\\nvar STRING_ITERATOR = 'String Iterator';\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\\n\\n// \`String.prototype[@@iterator]\` method\\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\\ndefineIterator(String, 'String', function (iterated) {\\n setInternalState(this, {\\n type: STRING_ITERATOR,\\n string: toString(iterated),\\n index: 0\\n });\\n// \`%StringIteratorPrototype%.next\` method\\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\\n}, function next() {\\n var state = getInternalState(this);\\n var string = state.string;\\n var index = state.index;\\n var point;\\n if (index >= string.length) return createIterResultObject(undefined, true);\\n point = charAt(string, index);\\n state.index += point.length;\\n return createIterResultObject(point, false);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.iterator.js?")}),"./node_modules/core-js/modules/es.string.match.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \\"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \\"./node_modules/core-js/internals/advance-string-index.js\\");\\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \\"./node_modules/core-js/internals/regexp-exec-abstract.js\\");\\n\\n// @@match logic\\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\\n return [\\n // \`String.prototype.match\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.match\\n function match(regexp) {\\n var O = requireObjectCoercible(this);\\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\\n },\\n // \`RegExp.prototype[@@match]\` method\\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\\n function (string) {\\n var rx = anObject(this);\\n var S = toString(string);\\n var res = maybeCallNative(nativeMatch, rx, S);\\n\\n if (res.done) return res.value;\\n\\n if (!rx.global) return regExpExec(rx, S);\\n\\n var fullUnicode = rx.unicode;\\n rx.lastIndex = 0;\\n var A = [];\\n var n = 0;\\n var result;\\n while ((result = regExpExec(rx, S)) !== null) {\\n var matchStr = toString(result[0]);\\n A[n] = matchStr;\\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\\n n++;\\n }\\n return n === 0 ? null : A;\\n }\\n ];\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.match.js?")}),"./node_modules/core-js/modules/es.string.replace-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \\"./node_modules/core-js/internals/get-substitution.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar REPLACE = wellKnownSymbol('replace');\\nvar $TypeError = TypeError;\\nvar indexOf = uncurryThis(''.indexOf);\\nvar replace = uncurryThis(''.replace);\\nvar stringSlice = uncurryThis(''.slice);\\nvar max = Math.max;\\n\\nvar stringIndexOf = function (string, searchValue, fromIndex) {\\n if (fromIndex > string.length) return -1;\\n if (searchValue === '') return fromIndex;\\n return indexOf(string, searchValue, fromIndex);\\n};\\n\\n// \`String.prototype.replaceAll\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\\n$({ target: 'String', proto: true }, {\\n replaceAll: function replaceAll(searchValue, replaceValue) {\\n var O = requireObjectCoercible(this);\\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\\n var position = 0;\\n var endOfLastMatch = 0;\\n var result = '';\\n if (!isNullOrUndefined(searchValue)) {\\n IS_REG_EXP = isRegExp(searchValue);\\n if (IS_REG_EXP) {\\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\\n if (!~indexOf(flags, 'g')) throw $TypeError('\`.replaceAll\` does not allow non-global regexes');\\n }\\n replacer = getMethod(searchValue, REPLACE);\\n if (replacer) {\\n return call(replacer, searchValue, O, replaceValue);\\n } else if (IS_PURE && IS_REG_EXP) {\\n return replace(toString(O), searchValue, replaceValue);\\n }\\n }\\n string = toString(O);\\n searchString = toString(searchValue);\\n functionalReplace = isCallable(replaceValue);\\n if (!functionalReplace) replaceValue = toString(replaceValue);\\n searchLength = searchString.length;\\n advanceBy = max(1, searchLength);\\n position = stringIndexOf(string, searchString, 0);\\n while (position !== -1) {\\n replacement = functionalReplace\\n ? toString(replaceValue(searchString, position, string))\\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\\n result += stringSlice(string, endOfLastMatch, position) + replacement;\\n endOfLastMatch = position + searchLength;\\n position = stringIndexOf(string, searchString, position + advanceBy);\\n }\\n if (endOfLastMatch < string.length) {\\n result += stringSlice(string, endOfLastMatch);\\n }\\n return result;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace-all.js?")}),"./node_modules/core-js/modules/es.string.replace.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \\"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \\"./node_modules/core-js/internals/advance-string-index.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \\"./node_modules/core-js/internals/get-substitution.js\\");\\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \\"./node_modules/core-js/internals/regexp-exec-abstract.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar REPLACE = wellKnownSymbol('replace');\\nvar max = Math.max;\\nvar min = Math.min;\\nvar concat = uncurryThis([].concat);\\nvar push = uncurryThis([].push);\\nvar stringIndexOf = uncurryThis(''.indexOf);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar maybeToString = function (it) {\\n return it === undefined ? it : String(it);\\n};\\n\\n// IE <= 11 replaces $0 with the whole match, as if it was $&\\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\\nvar REPLACE_KEEPS_$0 = (function () {\\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\\n return 'a'.replace(/./, '$0') === '$0';\\n})();\\n\\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\\n if (/./[REPLACE]) {\\n return /./[REPLACE]('a', '$0') === '';\\n }\\n return false;\\n})();\\n\\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\\n var re = /./;\\n re.exec = function () {\\n var result = [];\\n result.groups = { a: '7' };\\n return result;\\n };\\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\\n return ''.replace(re, '$') !== '7';\\n});\\n\\n// @@replace logic\\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\\n\\n return [\\n // \`String.prototype.replace\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.replace\\n function replace(searchValue, replaceValue) {\\n var O = requireObjectCoercible(this);\\n var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\\n return replacer\\n ? call(replacer, searchValue, O, replaceValue)\\n : call(nativeReplace, toString(O), searchValue, replaceValue);\\n },\\n // \`RegExp.prototype[@@replace]\` method\\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\\n function (string, replaceValue) {\\n var rx = anObject(this);\\n var S = toString(string);\\n\\n if (\\n typeof replaceValue == 'string' &&\\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\\n stringIndexOf(replaceValue, '$<') === -1\\n ) {\\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\\n if (res.done) return res.value;\\n }\\n\\n var functionalReplace = isCallable(replaceValue);\\n if (!functionalReplace) replaceValue = toString(replaceValue);\\n\\n var global = rx.global;\\n if (global) {\\n var fullUnicode = rx.unicode;\\n rx.lastIndex = 0;\\n }\\n var results = [];\\n while (true) {\\n var result = regExpExec(rx, S);\\n if (result === null) break;\\n\\n push(results, result);\\n if (!global) break;\\n\\n var matchStr = toString(result[0]);\\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\\n }\\n\\n var accumulatedResult = '';\\n var nextSourcePosition = 0;\\n for (var i = 0; i < results.length; i++) {\\n result = results[i];\\n\\n var matched = toString(result[0]);\\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\\n var captures = [];\\n // NOTE: This is equivalent to\\n // captures = result.slice(1).map(maybeToString)\\n // but for some reason \`nativeSlice.call(result, 1, result.length)\` (called in\\n // the slice polyfill when slicing native arrays) \\"doesn't work\\" in safari 9 and\\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\\n var namedCaptures = result.groups;\\n if (functionalReplace) {\\n var replacerArgs = concat([matched], captures, position, S);\\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\\n } else {\\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\\n }\\n if (position >= nextSourcePosition) {\\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\\n nextSourcePosition = position + matched.length;\\n }\\n }\\n return accumulatedResult + stringSlice(S, nextSourcePosition);\\n }\\n ];\\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace.js?")}),"./node_modules/core-js/modules/es.string.split.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \\"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \\"./node_modules/core-js/internals/advance-string-index.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\nvar callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \\"./node_modules/core-js/internals/regexp-exec-abstract.js\\");\\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \\"./node_modules/core-js/internals/regexp-sticky-helpers.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\\nvar MAX_UINT32 = 0xFFFFFFFF;\\nvar min = Math.min;\\nvar $push = [].push;\\nvar exec = uncurryThis(/./.exec);\\nvar push = uncurryThis($push);\\nvar stringSlice = uncurryThis(''.slice);\\n\\n// Chrome 51 has a buggy \\"split\\" implementation when RegExp#exec !== nativeExec\\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\\n var re = /(?:)/;\\n var originalExec = re.exec;\\n re.exec = function () { return originalExec.apply(this, arguments); };\\n var result = 'ab'.split(re);\\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\\n});\\n\\n// @@split logic\\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\\n var internalSplit;\\n if (\\n 'abbc'.split(/(b)*/)[1] == 'c' ||\\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\\n 'test'.split(/(?:)/, -1).length != 4 ||\\n 'ab'.split(/(?:ab)*/).length != 2 ||\\n '.'.split(/(.?)(.?)/).length != 4 ||\\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\\n '.'.split(/()()/).length > 1 ||\\n ''.split(/.?/).length\\n ) {\\n // based on es5-shim implementation, need to rework it\\n internalSplit = function (separator, limit) {\\n var string = toString(requireObjectCoercible(this));\\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\\n if (lim === 0) return [];\\n if (separator === undefined) return [string];\\n // If \`separator\` is not a regex, use native split\\n if (!isRegExp(separator)) {\\n return call(nativeSplit, string, separator, lim);\\n }\\n var output = [];\\n var flags = (separator.ignoreCase ? 'i' : '') +\\n (separator.multiline ? 'm' : '') +\\n (separator.unicode ? 'u' : '') +\\n (separator.sticky ? 'y' : '');\\n var lastLastIndex = 0;\\n // Make \`global\` and avoid \`lastIndex\` issues by working with a copy\\n var separatorCopy = new RegExp(separator.source, flags + 'g');\\n var match, lastIndex, lastLength;\\n while (match = call(regexpExec, separatorCopy, string)) {\\n lastIndex = separatorCopy.lastIndex;\\n if (lastIndex > lastLastIndex) {\\n push(output, stringSlice(string, lastLastIndex, match.index));\\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\\n lastLength = match[0].length;\\n lastLastIndex = lastIndex;\\n if (output.length >= lim) break;\\n }\\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\\n }\\n if (lastLastIndex === string.length) {\\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\\n } else push(output, stringSlice(string, lastLastIndex));\\n return output.length > lim ? arraySlice(output, 0, lim) : output;\\n };\\n // Chakra, V8\\n } else if ('0'.split(undefined, 0).length) {\\n internalSplit = function (separator, limit) {\\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\\n };\\n } else internalSplit = nativeSplit;\\n\\n return [\\n // \`String.prototype.split\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.split\\n function split(separator, limit) {\\n var O = requireObjectCoercible(this);\\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\\n return splitter\\n ? call(splitter, separator, O, limit)\\n : call(internalSplit, toString(O), separator, limit);\\n },\\n // \`RegExp.prototype[@@split]\` method\\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\\n //\\n // NOTE: This cannot be properly polyfilled in engines that don't support\\n // the 'y' flag.\\n function (string, limit) {\\n var rx = anObject(this);\\n var S = toString(string);\\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\\n\\n if (res.done) return res.value;\\n\\n var C = speciesConstructor(rx, RegExp);\\n\\n var unicodeMatching = rx.unicode;\\n var flags = (rx.ignoreCase ? 'i' : '') +\\n (rx.multiline ? 'm' : '') +\\n (rx.unicode ? 'u' : '') +\\n (UNSUPPORTED_Y ? 'g' : 'y');\\n\\n // ^(? + rx + ) is needed, in combination with some S slicing, to\\n // simulate the 'y' flag.\\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\\n if (lim === 0) return [];\\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\\n var p = 0;\\n var q = 0;\\n var A = [];\\n while (q < S.length) {\\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\\n var e;\\n if (\\n z === null ||\\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\\n ) {\\n q = advanceStringIndex(S, q, unicodeMatching);\\n } else {\\n push(A, stringSlice(S, p, q));\\n if (A.length === lim) return A;\\n for (var i = 1; i <= z.length - 1; i++) {\\n push(A, z[i]);\\n if (A.length === lim) return A;\\n }\\n q = p = e;\\n }\\n }\\n push(A, stringSlice(S, p));\\n return A;\\n }\\n ];\\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.split.js?")}),"./node_modules/core-js/modules/es.string.starts-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \\"./node_modules/core-js/internals/not-a-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \\"./node_modules/core-js/internals/correct-is-regexp-logic.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\\nvar nativeStartsWith = uncurryThis(''.startsWith);\\nvar stringSlice = uncurryThis(''.slice);\\nvar min = Math.min;\\n\\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\\n// https://github.com/zloirock/core-js/pull/702\\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\\n return descriptor && !descriptor.writable;\\n}();\\n\\n// \`String.prototype.startsWith\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\\n startsWith: function startsWith(searchString /* , position = 0 */) {\\n var that = toString(requireObjectCoercible(this));\\n notARegExp(searchString);\\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\\n var search = toString(searchString);\\n return nativeStartsWith\\n ? nativeStartsWith(that, search, index)\\n : stringSlice(that, index, index + search.length) === search;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.starts-with.js?")}),"./node_modules/core-js/modules/es.string.trim-end.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this line from \`core-js@4\`\\n__webpack_require__(/*! ../modules/es.string.trim-right */ \\"./node_modules/core-js/modules/es.string.trim-right.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \\"./node_modules/core-js/internals/string-trim-end.js\\");\\n\\n// \`String.prototype.trimEnd\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\\n trimEnd: trimEnd\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-end.js?")}),"./node_modules/core-js/modules/es.string.trim-right.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \\"./node_modules/core-js/internals/string-trim-end.js\\");\\n\\n// \`String.prototype.trimRight\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\\n trimRight: trimEnd\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-right.js?")}),"./node_modules/core-js/modules/es.string.trim.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $trim = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").trim);\\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \\"./node_modules/core-js/internals/string-trim-forced.js\\");\\n\\n// \`String.prototype.trim\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trim\\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\\n trim: function trim() {\\n return $trim(this);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim.js?")}),"./node_modules/core-js/modules/es.symbol.description.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("// \`Symbol.prototype.description\` getter\\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\\n\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \\"./node_modules/core-js/internals/copy-constructor-properties.js\\");\\n\\nvar NativeSymbol = global.Symbol;\\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\\n\\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\\n // Safari 12 bug\\n NativeSymbol().description !== undefined\\n)) {\\n var EmptyStringDescriptionStore = {};\\n // wrap Symbol constructor for correct work with undefined description\\n var SymbolWrapper = function Symbol() {\\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\\n var result = isPrototypeOf(SymbolPrototype, this)\\n ? new NativeSymbol(description)\\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\\n if (description === '') EmptyStringDescriptionStore[result] = true;\\n return result;\\n };\\n\\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\\n SymbolWrapper.prototype = SymbolPrototype;\\n SymbolPrototype.constructor = SymbolWrapper;\\n\\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\\n var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\\n var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\\n var regexp = /^Symbol\\\\((.*)\\\\)[^)]+$/;\\n var replace = uncurryThis(''.replace);\\n var stringSlice = uncurryThis(''.slice);\\n\\n defineBuiltInAccessor(SymbolPrototype, 'description', {\\n configurable: true,\\n get: function description() {\\n var symbol = thisSymbolValue(this);\\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\\n var string = symbolDescriptiveString(symbol);\\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\\n return desc === '' ? undefined : desc;\\n }\\n });\\n\\n $({ global: true, constructor: true, forced: true }, {\\n Symbol: SymbolWrapper\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.symbol.description.js?")}),"./node_modules/core-js/modules/es.typed-array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\n// \`%TypedArray%.prototype.at\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\\nexportTypedArrayMethod('at', function at(index) {\\n var O = aTypedArray(this);\\n var len = lengthOfArrayLike(O);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\\n return (k < 0 || k >= len) ? undefined : O[k];\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.at.js?")}),"./node_modules/core-js/modules/es.typed-array.fill.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar $fill = __webpack_require__(/*! ../internals/array-fill */ \\"./node_modules/core-js/internals/array-fill.js\\");\\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \\"./node_modules/core-js/internals/to-big-int.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar slice = uncurryThis(''.slice);\\n\\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\\nvar CONVERSION_BUG = fails(function () {\\n var count = 0;\\n // eslint-disable-next-line es/no-typed-arrays -- safe\\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\\n return count !== 1;\\n});\\n\\n// \`%TypedArray%.prototype.fill\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\\n var length = arguments.length;\\n aTypedArray(this);\\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\\n}, CONVERSION_BUG);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.fill.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLastIndex);\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\n// \`%TypedArray%.prototype.findLastIndex\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last-index.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLast);\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\n// \`%TypedArray%.prototype.findLast\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last.js?")}),"./node_modules/core-js/modules/es.typed-array.int32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Int32Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Int32', function (init) {\\n return function Int32Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.int8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Int8Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Int8', function (init) {\\n return function Int8Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.set.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \\"./node_modules/core-js/internals/to-offset.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar RangeError = global.RangeError;\\nvar Int8Array = global.Int8Array;\\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\\n var array = new Uint8ClampedArray(2);\\n call($set, array, { length: 1, 0: 3 }, 1);\\n return array[1] !== 3;\\n});\\n\\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\\n var array = new Int8Array(2);\\n array.set(1);\\n array.set('2', 1);\\n return array[0] !== 0 || array[1] !== 2;\\n});\\n\\n// \`%TypedArray%.prototype.set\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\\n aTypedArray(this);\\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\\n var src = toIndexedObject(arrayLike);\\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\\n var length = this.length;\\n var len = lengthOfArrayLike(src);\\n var index = 0;\\n if (len + offset > length) throw RangeError('Wrong length');\\n while (index < len) this[offset + index] = src[index++];\\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.set.js?")}),"./node_modules/core-js/modules/es.typed-array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \\"./node_modules/core-js/internals/array-sort.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \\"./node_modules/core-js/internals/engine-ff-version.js\\");\\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \\"./node_modules/core-js/internals/engine-is-ie-or-edge.js\\");\\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \\"./node_modules/core-js/internals/engine-webkit-version.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar Uint16Array = global.Uint16Array;\\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\\n\\n// WebKit\\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\\n nativeSort(new Uint16Array(2), null);\\n}) && fails(function () {\\n nativeSort(new Uint16Array(2), {});\\n}));\\n\\nvar STABLE_SORT = !!nativeSort && !fails(function () {\\n // feature detection can be too slow, so check engines versions\\n if (V8) return V8 < 74;\\n if (FF) return FF < 67;\\n if (IE_OR_EDGE) return true;\\n if (WEBKIT) return WEBKIT < 602;\\n\\n var array = new Uint16Array(516);\\n var expected = Array(516);\\n var index, mod;\\n\\n for (index = 0; index < 516; index++) {\\n mod = index % 4;\\n array[index] = 515 - index;\\n expected[index] = index - 2 * mod + 3;\\n }\\n\\n nativeSort(array, function (a, b) {\\n return (a / 4 | 0) - (b / 4 | 0);\\n });\\n\\n for (index = 0; index < 516; index++) {\\n if (array[index] !== expected[index]) return true;\\n }\\n});\\n\\nvar getSortCompare = function (comparefn) {\\n return function (x, y) {\\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (y !== y) return -1;\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (x !== x) return 1;\\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\\n return x > y;\\n };\\n};\\n\\n// \`%TypedArray%.prototype.sort\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\\nexportTypedArrayMethod('sort', function sort(comparefn) {\\n if (comparefn !== undefined) aCallable(comparefn);\\n if (STABLE_SORT) return nativeSort(this, comparefn);\\n\\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.sort.js?")}),"./node_modules/core-js/modules/es.typed-array.to-locale-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \\"./node_modules/core-js/internals/array-slice.js\\");\\n\\nvar Int8Array = global.Int8Array;\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar $toLocaleString = [].toLocaleString;\\n\\n// iOS Safari 6.x fails here\\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\\n $toLocaleString.call(new Int8Array(1));\\n});\\n\\nvar FORCED = fails(function () {\\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\\n}) || !fails(function () {\\n Int8Array.prototype.toLocaleString.call([1, 2]);\\n});\\n\\n// \`%TypedArray%.prototype.toLocaleString\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\\n return apply(\\n $toLocaleString,\\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\\n arraySlice(arguments)\\n );\\n}, FORCED);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-locale-string.js?")}),"./node_modules/core-js/modules/es.typed-array.to-reversed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arrayToReversed = __webpack_require__(/*! ../internals/array-to-reversed */ \\"./node_modules/core-js/internals/array-to-reversed.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\\n\\n// \`%TypedArray%.prototype.toReversed\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\\nexportTypedArrayMethod('toReversed', function toReversed() {\\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-reversed.js?")}),"./node_modules/core-js/modules/es.typed-array.to-sorted.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar arrayFromConstructorAndList = __webpack_require__(/*! ../internals/array-from-constructor-and-list */ \\"./node_modules/core-js/internals/array-from-constructor-and-list.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\\n\\n// \`%TypedArray%.prototype.toSorted\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\\n if (compareFn !== undefined) aCallable(compareFn);\\n var O = aTypedArray(this);\\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\\n return sort(A, compareFn);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-sorted.js?")}),"./node_modules/core-js/modules/es.typed-array.uint32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Uint32Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Uint32', function (init) {\\n return function Uint32Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Uint8Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Uint8', function (init) {\\n return function Uint8Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Uint8ClampedArray\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Uint8', function (init) {\\n return function Uint8ClampedArray(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n}, true);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js?")}),"./node_modules/core-js/modules/es.typed-array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \\"./node_modules/core-js/internals/array-with.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \\"./node_modules/core-js/internals/is-big-int-array.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \\"./node_modules/core-js/internals/to-big-int.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\nvar PROPER_ORDER = !!function () {\\n try {\\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\\n } catch (error) {\\n // some early implementations, like WebKit, does not follow the final semantic\\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\\n return error === 8;\\n }\\n}();\\n\\n// \`%TypedArray%.prototype.with\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\\nexportTypedArrayMethod('with', { 'with': function (index, value) {\\n var O = aTypedArray(this);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\\n} }['with'], !PROPER_ORDER);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.with.js?")}),"./node_modules/core-js/modules/es.weak-map.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \\"./node_modules/core-js/internals/freezing.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \\"./node_modules/core-js/internals/internal-metadata.js\\");\\nvar collection = __webpack_require__(/*! ../internals/collection */ \\"./node_modules/core-js/internals/collection.js\\");\\nvar collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ \\"./node_modules/core-js/internals/collection-weak.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").enforce);\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \\"./node_modules/core-js/internals/weak-map-basic-detection.js\\");\\n\\nvar $Object = Object;\\n// eslint-disable-next-line es/no-array-isarray -- safe\\nvar isArray = Array.isArray;\\n// eslint-disable-next-line es/no-object-isextensible -- safe\\nvar isExtensible = $Object.isExtensible;\\n// eslint-disable-next-line es/no-object-isfrozen -- safe\\nvar isFrozen = $Object.isFrozen;\\n// eslint-disable-next-line es/no-object-issealed -- safe\\nvar isSealed = $Object.isSealed;\\n// eslint-disable-next-line es/no-object-freeze -- safe\\nvar freeze = $Object.freeze;\\n// eslint-disable-next-line es/no-object-seal -- safe\\nvar seal = $Object.seal;\\n\\nvar FROZEN = {};\\nvar SEALED = {};\\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\\nvar InternalWeakMap;\\n\\nvar wrapper = function (init) {\\n return function WeakMap() {\\n return init(this, arguments.length ? arguments[0] : undefined);\\n };\\n};\\n\\n// \`WeakMap\` constructor\\n// https://tc39.es/ecma262/#sec-weakmap-constructor\\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\\nvar WeakMapPrototype = $WeakMap.prototype;\\nvar nativeSet = uncurryThis(WeakMapPrototype.set);\\n\\n// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them\\nvar hasMSEdgeFreezingBug = function () {\\n return FREEZING && fails(function () {\\n var frozenArray = freeze([]);\\n nativeSet(new $WeakMap(), frozenArray, 1);\\n return !isFrozen(frozenArray);\\n });\\n};\\n\\n// IE11 WeakMap frozen keys fix\\n// We can't use feature detection because it crash some old IE builds\\n// https://github.com/zloirock/core-js/issues/485\\nif (NATIVE_WEAK_MAP) if (IS_IE11) {\\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\\n InternalMetadataModule.enable();\\n var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\\n var nativeHas = uncurryThis(WeakMapPrototype.has);\\n var nativeGet = uncurryThis(WeakMapPrototype.get);\\n defineBuiltIns(WeakMapPrototype, {\\n 'delete': function (key) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n return nativeDelete(this, key) || state.frozen['delete'](key);\\n } return nativeDelete(this, key);\\n },\\n has: function has(key) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n return nativeHas(this, key) || state.frozen.has(key);\\n } return nativeHas(this, key);\\n },\\n get: function get(key) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\\n } return nativeGet(this, key);\\n },\\n set: function set(key, value) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\\n } else nativeSet(this, key, value);\\n return this;\\n }\\n });\\n// Chakra Edge frozen keys fix\\n} else if (hasMSEdgeFreezingBug()) {\\n defineBuiltIns(WeakMapPrototype, {\\n set: function set(key, value) {\\n var arrayIntegrityLevel;\\n if (isArray(key)) {\\n if (isFrozen(key)) arrayIntegrityLevel = FROZEN;\\n else if (isSealed(key)) arrayIntegrityLevel = SEALED;\\n }\\n nativeSet(this, key, value);\\n if (arrayIntegrityLevel == FROZEN) freeze(key);\\n if (arrayIntegrityLevel == SEALED) seal(key);\\n return this;\\n }\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.constructor.js?")}),"./node_modules/core-js/modules/es.weak-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's replaced to module below\\n__webpack_require__(/*! ../modules/es.weak-map.constructor */ \\"./node_modules/core-js/modules/es.weak-map.constructor.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.js?")}),"./node_modules/core-js/modules/web.dom-collections.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ \\"./node_modules/core-js/internals/dom-iterables.js\\");\\nvar DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ \\"./node_modules/core-js/internals/dom-token-list-prototype.js\\");\\nvar ArrayIteratorMethods = __webpack_require__(/*! ../modules/es.array.iterator */ \\"./node_modules/core-js/modules/es.array.iterator.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar ArrayValues = ArrayIteratorMethods.values;\\n\\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\\n if (CollectionPrototype) {\\n // some Chrome versions have non-configurable methods on DOMTokenList\\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\\n } catch (error) {\\n CollectionPrototype[ITERATOR] = ArrayValues;\\n }\\n if (!CollectionPrototype[TO_STRING_TAG]) {\\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\\n }\\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\\n // some Chrome versions have non-configurable methods on DOMTokenList\\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\\n } catch (error) {\\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\\n }\\n }\\n }\\n};\\n\\nfor (var COLLECTION_NAME in DOMIterables) {\\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\\n}\\n\\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-collections.iterator.js?")}),"./node_modules/core-js/modules/web.dom-exception.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar tryNodeRequire = __webpack_require__(/*! ../internals/try-node-require */ \\"./node_modules/core-js/internals/try-node-require.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar errorToString = __webpack_require__(/*! ../internals/error-to-string */ \\"./node_modules/core-js/internals/error-to-string.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \\"./node_modules/core-js/internals/dom-exception-constants.js\\");\\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \\"./node_modules/core-js/internals/error-stack-clear.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar DOM_EXCEPTION = 'DOMException';\\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\\nvar Error = getBuiltIn('Error');\\n// NodeJS < 17.0 does not expose \`DOMException\` to global\\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\\n try {\\n // NodeJS < 15.0 does not expose \`MessageChannel\` to global\\n var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;\\n // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe\\n new MessageChannel().port1.postMessage(new WeakMap());\\n } catch (error) {\\n if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor;\\n }\\n})();\\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\\nvar ErrorPrototype = Error.prototype;\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\\nvar HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\\n\\nvar codeFor = function (name) {\\n return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\\n};\\n\\nvar $DOMException = function DOMException() {\\n anInstance(this, DOMExceptionPrototype);\\n var argumentsLength = arguments.length;\\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\\n var code = codeFor(name);\\n setInternalState(this, {\\n type: DOM_EXCEPTION,\\n name: name,\\n message: message,\\n code: code\\n });\\n if (!DESCRIPTORS) {\\n this.name = name;\\n this.message = message;\\n this.code = code;\\n }\\n if (HAS_STACK) {\\n var error = Error(message);\\n error.name = DOM_EXCEPTION;\\n defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\\n }\\n};\\n\\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\\n\\nvar createGetterDescriptor = function (get) {\\n return { enumerable: true, configurable: true, get: get };\\n};\\n\\nvar getterFor = function (key) {\\n return createGetterDescriptor(function () {\\n return getInternalState(this)[key];\\n });\\n};\\n\\nif (DESCRIPTORS) {\\n // \`DOMException.prototype.code\` getter\\n defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\\n // \`DOMException.prototype.message\` getter\\n defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\\n // \`DOMException.prototype.name\` getter\\n defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\\n}\\n\\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\\n\\n// FF36- DOMException is a function, but can't be constructed\\nvar INCORRECT_CONSTRUCTOR = fails(function () {\\n return !(new NativeDOMException() instanceof Error);\\n});\\n\\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\\n return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\\n});\\n\\n// Deno 1.6.3- DOMException.prototype.code just missed\\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\\n return new NativeDOMException(1, 'DataCloneError').code !== 25;\\n});\\n\\n// Deno 1.6.3- DOMException constants just missed\\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\\n || NativeDOMException[DATA_CLONE_ERR] !== 25\\n || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\\n\\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\\n\\n// \`DOMException\` constructor\\n// https://webidl.spec.whatwg.org/#idl-DOMException\\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\\n});\\n\\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\\n\\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\\n defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\\n}\\n\\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\\n defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\\n return codeFor(anObject(this).name);\\n }));\\n}\\n\\n// \`DOMException\` constants\\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\\n var constant = DOMExceptionConstants[key];\\n var constantName = constant.s;\\n var descriptor = createPropertyDescriptor(6, constant.c);\\n if (!hasOwn(PolyfilledDOMException, constantName)) {\\n defineProperty(PolyfilledDOMException, constantName, descriptor);\\n }\\n if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\\n defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.constructor.js?")}),"./node_modules/core-js/modules/web.dom-exception.stack.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \\"./node_modules/core-js/internals/dom-exception-constants.js\\");\\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \\"./node_modules/core-js/internals/error-stack-clear.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar DOM_EXCEPTION = 'DOMException';\\nvar Error = getBuiltIn('Error');\\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\\n\\nvar $DOMException = function DOMException() {\\n anInstance(this, DOMExceptionPrototype);\\n var argumentsLength = arguments.length;\\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\\n var that = new NativeDOMException(message, name);\\n var error = Error(message);\\n error.name = DOM_EXCEPTION;\\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\\n inheritIfRequired(that, this, $DOMException);\\n return that;\\n};\\n\\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\\n\\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\\n\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\\n\\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\\n// https://github.com/Jarred-Sumner/bun/issues/399\\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\\n\\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\\n\\n// \`DOMException\` constructor patch for \`.stack\` where it's required\\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\\n});\\n\\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\\n\\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\\n if (!IS_PURE) {\\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\\n }\\n\\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\\n var constant = DOMExceptionConstants[key];\\n var constantName = constant.s;\\n if (!hasOwn(PolyfilledDOMException, constantName)) {\\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\\n }\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.stack.js?")}),"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\n\\nvar DOM_EXCEPTION = 'DOMException';\\n\\n// \`DOMException.prototype[@@toStringTag]\` property\\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.to-string-tag.js?")}),"./node_modules/core-js/modules/web.self.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\n\\nvar $TypeError = TypeError;\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar INCORRECT_VALUE = global.self !== global;\\n\\n// \`self\` getter\\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\\ntry {\\n if (DESCRIPTORS) {\\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\n var descriptor = Object.getOwnPropertyDescriptor(global, 'self');\\n // some engines have \`self\`, but with incorrect descriptor\\n // https://github.com/denoland/deno/issues/15765\\n if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\\n defineBuiltInAccessor(global, 'self', {\\n get: function self() {\\n return global;\\n },\\n set: function self(value) {\\n if (this !== global) throw $TypeError('Illegal invocation');\\n defineProperty(global, 'self', {\\n value: value,\\n writable: true,\\n configurable: true,\\n enumerable: true\\n });\\n },\\n configurable: true,\\n enumerable: true\\n });\\n }\\n } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\\n self: global\\n });\\n} catch (error) { /* empty */ }\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.self.js?")}),"./node_modules/core-js/modules/web.structured-clone.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar getBuiltin = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \\"./node_modules/core-js/internals/create-property.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\nvar MapHelpers = __webpack_require__(/*! ../internals/map-helpers */ \\"./node_modules/core-js/internals/map-helpers.js\\");\\nvar SetHelpers = __webpack_require__(/*! ../internals/set-helpers */ \\"./node_modules/core-js/internals/set-helpers.js\\");\\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \\"./node_modules/core-js/internals/error-stack-installable.js\\");\\nvar PROPER_TRANSFER = __webpack_require__(/*! ../internals/structured-clone-proper-transfer */ \\"./node_modules/core-js/internals/structured-clone-proper-transfer.js\\");\\n\\nvar Object = global.Object;\\nvar Array = global.Array;\\nvar Date = global.Date;\\nvar Error = global.Error;\\nvar EvalError = global.EvalError;\\nvar RangeError = global.RangeError;\\nvar ReferenceError = global.ReferenceError;\\nvar SyntaxError = global.SyntaxError;\\nvar TypeError = global.TypeError;\\nvar URIError = global.URIError;\\nvar PerformanceMark = global.PerformanceMark;\\nvar WebAssembly = global.WebAssembly;\\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\\nvar DOMException = getBuiltin('DOMException');\\nvar Map = MapHelpers.Map;\\nvar mapHas = MapHelpers.has;\\nvar mapGet = MapHelpers.get;\\nvar mapSet = MapHelpers.set;\\nvar Set = SetHelpers.Set;\\nvar setAdd = SetHelpers.add;\\nvar objectKeys = getBuiltin('Object', 'keys');\\nvar push = uncurryThis([].push);\\nvar thisBooleanValue = uncurryThis(true.valueOf);\\nvar thisNumberValue = uncurryThis(1.0.valueOf);\\nvar thisStringValue = uncurryThis(''.valueOf);\\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\\nvar PERFORMANCE_MARK = uid('structuredClone');\\nvar DATA_CLONE_ERROR = 'DataCloneError';\\nvar TRANSFERRING = 'Transferring';\\n\\nvar checkBasicSemantic = function (structuredCloneImplementation) {\\n return !fails(function () {\\n var set1 = new global.Set([7]);\\n var set2 = structuredCloneImplementation(set1);\\n var number = structuredCloneImplementation(Object(7));\\n return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7;\\n }) && structuredCloneImplementation;\\n};\\n\\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\\n return !fails(function () {\\n var error = new $Error();\\n var test = structuredCloneImplementation({ a: error, b: error });\\n return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\\n });\\n};\\n\\n// https://github.com/whatwg/html/pull/5749\\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\\n return !fails(function () {\\n var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\\n return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3;\\n });\\n};\\n\\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\\n// FF<103 and Safari implementations can't clone errors\\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\\n// FF103 can clone errors, but \`.stack\` of clone is an empty string\\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\\n// FF104+ fixed it on usual errors, but not on DOMExceptions\\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\\n// Chrome <102 returns \`null\` if cloned object contains multiple references to one error\\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\\n// NodeJS implementation can't clone DOMExceptions\\n// https://github.com/nodejs/node/issues/41038\\n// only FF103+ supports new (html/5749) error cloning semantic\\nvar nativeStructuredClone = global.structuredClone;\\n\\nvar FORCED_REPLACEMENT = IS_PURE\\n || !checkErrorsCloning(nativeStructuredClone, Error)\\n || !checkErrorsCloning(nativeStructuredClone, DOMException)\\n || !checkNewErrorsCloningSemantic(nativeStructuredClone);\\n\\n// Chrome 82+, Safari 14.1+, Deno 1.11+\\n// Chrome 78-81 implementation swaps \`.name\` and \`.message\` of cloned \`DOMException\`\\n// Chrome returns \`null\` if cloned object contains multiple references to one error\\n// Safari 14.1 implementation doesn't clone some \`RegExp\` flags, so requires a workaround\\n// Safari implementation can't clone errors\\n// Deno 1.2-1.10 implementations too naive\\n// NodeJS 16.0+ does not have \`PerformanceMark\` constructor\\n// NodeJS <17.2 structured cloning implementation from \`performance.mark\` is too naive\\n// and can't clone, for example, \`RegExp\` or some boxed primitives\\n// https://github.com/nodejs/node/issues/40840\\n// no one of those implementations supports new (html/5749) error cloning semantic\\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\\n return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\\n});\\n\\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\\n\\nvar throwUncloneable = function (type) {\\n throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\\n};\\n\\nvar throwUnpolyfillable = function (type, action) {\\n throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\\n};\\n\\nvar tryNativeRestrictedStructuredClone = function (value, type) {\\n if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);\\n return nativeRestrictedStructuredClone(value);\\n};\\n\\nvar createDataTransfer = function () {\\n var dataTransfer;\\n try {\\n dataTransfer = new global.DataTransfer();\\n } catch (error) {\\n try {\\n dataTransfer = new global.ClipboardEvent('').clipboardData;\\n } catch (error2) { /* empty */ }\\n }\\n return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\\n};\\n\\nvar cloneBuffer = function (value, map, $type) {\\n if (mapHas(map, value)) return mapGet(map, value);\\n\\n var type = $type || classof(value);\\n var clone, length, options, source, target, i;\\n\\n if (type === 'SharedArrayBuffer') {\\n if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);\\n // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\\n else clone = value;\\n } else {\\n var DataView = global.DataView;\\n\\n // \`ArrayBuffer#slice\` is not available in IE10\\n // \`ArrayBuffer#slice\` and \`DataView\` are not available in old FF\\n if (!DataView && typeof value.slice != 'function') throwUnpolyfillable('ArrayBuffer');\\n // detached buffers throws in \`DataView\` and \`.slice\`\\n try {\\n if (typeof value.slice == 'function' && !value.resizable) {\\n clone = value.slice(0);\\n } else {\\n length = value.byteLength;\\n options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;\\n clone = new ArrayBuffer(length, options);\\n source = new DataView(value);\\n target = new DataView(clone);\\n for (i = 0; i < length; i++) {\\n target.setUint8(i, source.getUint8(i));\\n }\\n }\\n } catch (error) {\\n throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\\n }\\n }\\n\\n mapSet(map, value, clone);\\n\\n return clone;\\n};\\n\\nvar cloneView = function (value, type, offset, length, map) {\\n var C = global[type];\\n // in some old engines like Safari 9, typeof C is 'object'\\n // on Uint8ClampedArray or some other constructors\\n if (!isObject(C)) throwUnpolyfillable(type);\\n return new C(cloneBuffer(value.buffer, map), offset, length);\\n};\\n\\nvar Placeholder = function (object, type, metadata) {\\n this.object = object;\\n this.type = type;\\n this.metadata = metadata;\\n};\\n\\nvar structuredCloneInternal = function (value, map, transferredBuffers) {\\n if (isSymbol(value)) throwUncloneable('Symbol');\\n if (!isObject(value)) return value;\\n // effectively preserves circular references\\n if (map) {\\n if (mapHas(map, value)) return mapGet(map, value);\\n } else map = new Map();\\n\\n var type = classof(value);\\n var C, name, cloned, dataTransfer, i, length, keys, key;\\n\\n switch (type) {\\n case 'Array':\\n cloned = Array(lengthOfArrayLike(value));\\n break;\\n case 'Object':\\n cloned = {};\\n break;\\n case 'Map':\\n cloned = new Map();\\n break;\\n case 'Set':\\n cloned = new Set();\\n break;\\n case 'RegExp':\\n // in this block because of a Safari 14.1 bug\\n // old FF does not clone regexes passed to the constructor, so get the source and flags directly\\n cloned = new RegExp(value.source, getRegExpFlags(value));\\n break;\\n case 'Error':\\n name = value.name;\\n switch (name) {\\n case 'AggregateError':\\n cloned = getBuiltin('AggregateError')([]);\\n break;\\n case 'EvalError':\\n cloned = EvalError();\\n break;\\n case 'RangeError':\\n cloned = RangeError();\\n break;\\n case 'ReferenceError':\\n cloned = ReferenceError();\\n break;\\n case 'SyntaxError':\\n cloned = SyntaxError();\\n break;\\n case 'TypeError':\\n cloned = TypeError();\\n break;\\n case 'URIError':\\n cloned = URIError();\\n break;\\n case 'CompileError':\\n cloned = CompileError();\\n break;\\n case 'LinkError':\\n cloned = LinkError();\\n break;\\n case 'RuntimeError':\\n cloned = RuntimeError();\\n break;\\n default:\\n cloned = Error();\\n }\\n break;\\n case 'DOMException':\\n cloned = new DOMException(value.message, value.name);\\n break;\\n case 'ArrayBuffer':\\n case 'SharedArrayBuffer':\\n cloned = transferredBuffers\\n ? new Placeholder(value, type)\\n : cloneBuffer(value, map, type);\\n break;\\n case 'DataView':\\n case 'Int8Array':\\n case 'Uint8Array':\\n case 'Uint8ClampedArray':\\n case 'Int16Array':\\n case 'Uint16Array':\\n case 'Int32Array':\\n case 'Uint32Array':\\n case 'Float16Array':\\n case 'Float32Array':\\n case 'Float64Array':\\n case 'BigInt64Array':\\n case 'BigUint64Array':\\n length = type === 'DataView' ? value.byteLength : value.length;\\n cloned = transferredBuffers\\n ? new Placeholder(value, type, { offset: value.byteOffset, length: length })\\n : cloneView(value, type, value.byteOffset, length, map);\\n break;\\n case 'DOMQuad':\\n try {\\n cloned = new DOMQuad(\\n structuredCloneInternal(value.p1, map, transferredBuffers),\\n structuredCloneInternal(value.p2, map, transferredBuffers),\\n structuredCloneInternal(value.p3, map, transferredBuffers),\\n structuredCloneInternal(value.p4, map, transferredBuffers)\\n );\\n } catch (error) {\\n cloned = tryNativeRestrictedStructuredClone(value, type);\\n }\\n break;\\n case 'File':\\n if (nativeRestrictedStructuredClone) try {\\n cloned = nativeRestrictedStructuredClone(value);\\n // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612\\n if (classof(cloned) !== type) cloned = undefined;\\n } catch (error) { /* empty */ }\\n if (!cloned) try {\\n cloned = new File([value], value.name, value);\\n } catch (error) { /* empty */ }\\n if (!cloned) throwUnpolyfillable(type);\\n break;\\n case 'FileList':\\n dataTransfer = createDataTransfer();\\n if (dataTransfer) {\\n for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\\n dataTransfer.items.add(structuredCloneInternal(value[i], map, transferredBuffers));\\n }\\n cloned = dataTransfer.files;\\n } else cloned = tryNativeRestrictedStructuredClone(value, type);\\n break;\\n case 'ImageData':\\n // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\\n try {\\n cloned = new ImageData(\\n structuredCloneInternal(value.data, map, transferredBuffers),\\n value.width,\\n value.height,\\n { colorSpace: value.colorSpace }\\n );\\n } catch (error) {\\n cloned = tryNativeRestrictedStructuredClone(value, type);\\n } break;\\n default:\\n if (nativeRestrictedStructuredClone) {\\n cloned = nativeRestrictedStructuredClone(value);\\n } else switch (type) {\\n case 'BigInt':\\n // can be a 3rd party polyfill\\n cloned = Object(value.valueOf());\\n break;\\n case 'Boolean':\\n cloned = Object(thisBooleanValue(value));\\n break;\\n case 'Number':\\n cloned = Object(thisNumberValue(value));\\n break;\\n case 'String':\\n cloned = Object(thisStringValue(value));\\n break;\\n case 'Date':\\n cloned = new Date(thisTimeValue(value));\\n break;\\n case 'Blob':\\n try {\\n cloned = value.slice(0, value.size, value.type);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'DOMPoint':\\n case 'DOMPointReadOnly':\\n C = global[type];\\n try {\\n cloned = C.fromPoint\\n ? C.fromPoint(value)\\n : new C(value.x, value.y, value.z, value.w);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'DOMRect':\\n case 'DOMRectReadOnly':\\n C = global[type];\\n try {\\n cloned = C.fromRect\\n ? C.fromRect(value)\\n : new C(value.x, value.y, value.width, value.height);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'DOMMatrix':\\n case 'DOMMatrixReadOnly':\\n C = global[type];\\n try {\\n cloned = C.fromMatrix\\n ? C.fromMatrix(value)\\n : new C(value);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'AudioData':\\n case 'VideoFrame':\\n if (!isCallable(value.clone)) throwUnpolyfillable(type);\\n try {\\n cloned = value.clone();\\n } catch (error) {\\n throwUncloneable(type);\\n } break;\\n case 'CropTarget':\\n case 'CryptoKey':\\n case 'FileSystemDirectoryHandle':\\n case 'FileSystemFileHandle':\\n case 'FileSystemHandle':\\n case 'GPUCompilationInfo':\\n case 'GPUCompilationMessage':\\n case 'ImageBitmap':\\n case 'RTCCertificate':\\n case 'WebAssembly.Module':\\n throwUnpolyfillable(type);\\n // break omitted\\n default:\\n throwUncloneable(type);\\n }\\n }\\n\\n mapSet(map, value, cloned);\\n\\n switch (type) {\\n case 'Array':\\n case 'Object':\\n keys = objectKeys(value);\\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\\n key = keys[i];\\n createProperty(cloned, key, structuredCloneInternal(value[key], map, transferredBuffers));\\n } break;\\n case 'Map':\\n value.forEach(function (v, k) {\\n mapSet(cloned, structuredCloneInternal(k, map, transferredBuffers), structuredCloneInternal(v, map, transferredBuffers));\\n });\\n break;\\n case 'Set':\\n value.forEach(function (v) {\\n setAdd(cloned, structuredCloneInternal(v, map, transferredBuffers));\\n });\\n break;\\n case 'Error':\\n createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map, transferredBuffers));\\n if (hasOwn(value, 'cause')) {\\n createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map, transferredBuffers));\\n }\\n if (name == 'AggregateError') {\\n cloned.errors = structuredCloneInternal(value.errors, map, transferredBuffers);\\n } // break omitted\\n case 'DOMException':\\n if (ERROR_STACK_INSTALLABLE) {\\n createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map, transferredBuffers));\\n }\\n }\\n\\n return cloned;\\n};\\n\\nvar replacePlaceholders = function (value, map) {\\n if (!isObject(value)) return value;\\n if (mapHas(map, value)) return mapGet(map, value);\\n\\n var type, object, metadata, i, length, keys, key, replacement;\\n\\n if (value instanceof Placeholder) {\\n type = value.type;\\n object = value.object;\\n\\n switch (type) {\\n case 'ArrayBuffer':\\n case 'SharedArrayBuffer':\\n replacement = cloneBuffer(object, map, type);\\n break;\\n case 'DataView':\\n case 'Int8Array':\\n case 'Uint8Array':\\n case 'Uint8ClampedArray':\\n case 'Int16Array':\\n case 'Uint16Array':\\n case 'Int32Array':\\n case 'Uint32Array':\\n case 'Float16Array':\\n case 'Float32Array':\\n case 'Float64Array':\\n case 'BigInt64Array':\\n case 'BigUint64Array':\\n metadata = value.metadata;\\n replacement = cloneView(object, type, metadata.offset, metadata.length, map);\\n }\\n } else switch (classof(value)) {\\n case 'Array':\\n case 'Object':\\n keys = objectKeys(value);\\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\\n key = keys[i];\\n value[key] = replacePlaceholders(value[key], map);\\n } break;\\n case 'Map':\\n replacement = new Map();\\n value.forEach(function (v, k) {\\n mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));\\n });\\n break;\\n case 'Set':\\n replacement = new Set();\\n value.forEach(function (v) {\\n setAdd(replacement, replacePlaceholders(v, map));\\n });\\n break;\\n case 'Error':\\n value.message = replacePlaceholders(value.message, map);\\n if (hasOwn(value, 'cause')) {\\n value.cause = replacePlaceholders(value.cause, map);\\n }\\n if (value.name == 'AggregateError') {\\n value.errors = replacePlaceholders(value.errors, map);\\n } // break omitted\\n case 'DOMException':\\n if (ERROR_STACK_INSTALLABLE) {\\n value.stack = replacePlaceholders(value.stack, map);\\n }\\n }\\n\\n mapSet(map, value, replacement || value);\\n\\n return replacement || value;\\n};\\n\\nvar tryToTransfer = function (rawTransfer, map) {\\n if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence');\\n\\n var transfer = [];\\n\\n iterate(rawTransfer, function (value) {\\n push(transfer, anObject(value));\\n });\\n\\n var i = 0;\\n var length = lengthOfArrayLike(transfer);\\n var buffers = [];\\n var value, type, C, transferred, canvas, context;\\n\\n while (i < length) {\\n value = transfer[i++];\\n\\n type = classof(value);\\n\\n if (type === 'ArrayBuffer') {\\n push(buffers, value);\\n continue;\\n }\\n\\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\\n\\n if (PROPER_TRANSFER) {\\n transferred = nativeStructuredClone(value, { transfer: [value] });\\n } else switch (type) {\\n case 'ImageBitmap':\\n C = global.OffscreenCanvas;\\n if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\\n try {\\n canvas = new C(value.width, value.height);\\n context = canvas.getContext('bitmaprenderer');\\n context.transferFromImageBitmap(value);\\n transferred = canvas.transferToImageBitmap();\\n } catch (error) { /* empty */ }\\n break;\\n case 'AudioData':\\n case 'VideoFrame':\\n if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\\n try {\\n transferred = value.clone();\\n value.close();\\n } catch (error) { /* empty */ }\\n break;\\n case 'MediaSourceHandle':\\n case 'MessagePort':\\n case 'OffscreenCanvas':\\n case 'ReadableStream':\\n case 'TransformStream':\\n case 'WritableStream':\\n throwUnpolyfillable(type, TRANSFERRING);\\n }\\n\\n if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\\n\\n mapSet(map, value, transferred);\\n }\\n\\n return buffers;\\n};\\n\\nvar tryToTransferBuffers = function (transfer, map) {\\n var i = 0;\\n var length = lengthOfArrayLike(transfer);\\n var value, transferred;\\n\\n while (i < length) {\\n value = transfer[i++];\\n\\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\\n\\n if (PROPER_TRANSFER) {\\n transferred = nativeStructuredClone(value, { transfer: [value] });\\n } else {\\n if (!isCallable(value.transfer)) throwUnpolyfillable('ArrayBuffer', TRANSFERRING);\\n transferred = value.transfer();\\n }\\n\\n mapSet(map, value, transferred);\\n }\\n};\\n\\n// \`structuredClone\` method\\n// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone\\n$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {\\n structuredClone: function structuredClone(value /* , { transfer } */) {\\n var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\\n var transfer = options ? options.transfer : undefined;\\n var transferredBuffers = false;\\n var map, buffers;\\n\\n if (transfer !== undefined) {\\n map = new Map();\\n buffers = tryToTransfer(transfer, map);\\n transferredBuffers = !!lengthOfArrayLike(buffers);\\n }\\n\\n var clone = structuredCloneInternal(value, map, transferredBuffers);\\n\\n // since of an issue with cloning views of transferred buffers, we a forced to transfer / clone them in 2 steps\\n // https://github.com/zloirock/core-js/issues/1265\\n if (transferredBuffers) {\\n map = new Map();\\n tryToTransferBuffers(transfer, map);\\n clone = replacePlaceholders(clone, map);\\n }\\n\\n return clone;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.structured-clone.js?")}),"./node_modules/core-js/modules/web.url-search-params.constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like \`preset-env\`\\n__webpack_require__(/*! ../modules/es.array.iterator */ \\"./node_modules/core-js/modules/es.array.iterator.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \\"./node_modules/core-js/internals/url-constructor-detection.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \\"./node_modules/core-js/internals/iterator-create-constructor.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar arraySort = __webpack_require__(/*! ../internals/array-sort */ \\"./node_modules/core-js/internals/array-sort.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// Avoid NodeJS experimental warning\\nvar safeGetBuiltIn = function (name) {\\n if (!DESCRIPTORS) return global[name];\\n var descriptor = getOwnPropertyDescriptor(global, name);\\n return descriptor && descriptor.value;\\n};\\n\\nvar nativeFetch = safeGetBuiltIn('fetch');\\nvar NativeRequest = safeGetBuiltIn('Request');\\nvar Headers = safeGetBuiltIn('Headers');\\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\\nvar HeadersPrototype = Headers && Headers.prototype;\\nvar RegExp = global.RegExp;\\nvar TypeError = global.TypeError;\\nvar decodeURIComponent = global.decodeURIComponent;\\nvar encodeURIComponent = global.encodeURIComponent;\\nvar charAt = uncurryThis(''.charAt);\\nvar join = uncurryThis([].join);\\nvar push = uncurryThis([].push);\\nvar replace = uncurryThis(''.replace);\\nvar shift = uncurryThis([].shift);\\nvar splice = uncurryThis([].splice);\\nvar split = uncurryThis(''.split);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar plus = /\\\\+/g;\\nvar sequences = Array(4);\\n\\nvar percentSequence = function (bytes) {\\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\\\\\da-f]{2}){' + bytes + '})', 'gi'));\\n};\\n\\nvar percentDecode = function (sequence) {\\n try {\\n return decodeURIComponent(sequence);\\n } catch (error) {\\n return sequence;\\n }\\n};\\n\\nvar deserialize = function (it) {\\n var result = replace(it, plus, ' ');\\n var bytes = 4;\\n try {\\n return decodeURIComponent(result);\\n } catch (error) {\\n while (bytes) {\\n result = replace(result, percentSequence(bytes--), percentDecode);\\n }\\n return result;\\n }\\n};\\n\\nvar find = /[!'()~]|%20/g;\\n\\nvar replacements = {\\n '!': '%21',\\n \\"'\\": '%27',\\n '(': '%28',\\n ')': '%29',\\n '~': '%7E',\\n '%20': '+'\\n};\\n\\nvar replacer = function (match) {\\n return replacements[match];\\n};\\n\\nvar serialize = function (it) {\\n return replace(encodeURIComponent(it), find, replacer);\\n};\\n\\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\\n setInternalState(this, {\\n type: URL_SEARCH_PARAMS_ITERATOR,\\n iterator: getIterator(getInternalParamsState(params).entries),\\n kind: kind\\n });\\n}, 'Iterator', function next() {\\n var state = getInternalIteratorState(this);\\n var kind = state.kind;\\n var step = state.iterator.next();\\n var entry = step.value;\\n if (!step.done) {\\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\\n } return step;\\n}, true);\\n\\nvar URLSearchParamsState = function (init) {\\n this.entries = [];\\n this.url = null;\\n\\n if (init !== undefined) {\\n if (isObject(init)) this.parseObject(init);\\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\\n }\\n};\\n\\nURLSearchParamsState.prototype = {\\n type: URL_SEARCH_PARAMS,\\n bindURL: function (url) {\\n this.url = url;\\n this.update();\\n },\\n parseObject: function (object) {\\n var iteratorMethod = getIteratorMethod(object);\\n var iterator, next, step, entryIterator, entryNext, first, second;\\n\\n if (iteratorMethod) {\\n iterator = getIterator(object, iteratorMethod);\\n next = iterator.next;\\n while (!(step = call(next, iterator)).done) {\\n entryIterator = getIterator(anObject(step.value));\\n entryNext = entryIterator.next;\\n if (\\n (first = call(entryNext, entryIterator)).done ||\\n (second = call(entryNext, entryIterator)).done ||\\n !call(entryNext, entryIterator).done\\n ) throw TypeError('Expected sequence with length 2');\\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\\n }\\n } else for (var key in object) if (hasOwn(object, key)) {\\n push(this.entries, { key: key, value: $toString(object[key]) });\\n }\\n },\\n parseQuery: function (query) {\\n if (query) {\\n var attributes = split(query, '&');\\n var index = 0;\\n var attribute, entry;\\n while (index < attributes.length) {\\n attribute = attributes[index++];\\n if (attribute.length) {\\n entry = split(attribute, '=');\\n push(this.entries, {\\n key: deserialize(shift(entry)),\\n value: deserialize(join(entry, '='))\\n });\\n }\\n }\\n }\\n },\\n serialize: function () {\\n var entries = this.entries;\\n var result = [];\\n var index = 0;\\n var entry;\\n while (index < entries.length) {\\n entry = entries[index++];\\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\\n } return join(result, '&');\\n },\\n update: function () {\\n this.entries.length = 0;\\n this.parseQuery(this.url.query);\\n },\\n updateURL: function () {\\n if (this.url) this.url.update();\\n }\\n};\\n\\n// \`URLSearchParams\` constructor\\n// https://url.spec.whatwg.org/#interface-urlsearchparams\\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\\n anInstance(this, URLSearchParamsPrototype);\\n var init = arguments.length > 0 ? arguments[0] : undefined;\\n var state = setInternalState(this, new URLSearchParamsState(init));\\n if (!DESCRIPTORS) this.size = state.entries.length;\\n};\\n\\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\\n\\ndefineBuiltIns(URLSearchParamsPrototype, {\\n // \`URLSearchParams.prototype.append\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\\n append: function append(name, value) {\\n var state = getInternalParamsState(this);\\n validateArgumentsLength(arguments.length, 2);\\n push(state.entries, { key: $toString(name), value: $toString(value) });\\n if (!DESCRIPTORS) this.length++;\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.delete\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\\n 'delete': function (name /* , value */) {\\n var state = getInternalParamsState(this);\\n var length = validateArgumentsLength(arguments.length, 1);\\n var entries = state.entries;\\n var key = $toString(name);\\n var $value = length < 2 ? undefined : arguments[1];\\n var value = $value === undefined ? $value : $toString($value);\\n var index = 0;\\n while (index < entries.length) {\\n var entry = entries[index];\\n if (entry.key === key && (value === undefined || entry.value === value)) {\\n splice(entries, index, 1);\\n if (value !== undefined) break;\\n } else index++;\\n }\\n if (!DESCRIPTORS) this.size = entries.length;\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.get\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\\n get: function get(name) {\\n var entries = getInternalParamsState(this).entries;\\n validateArgumentsLength(arguments.length, 1);\\n var key = $toString(name);\\n var index = 0;\\n for (; index < entries.length; index++) {\\n if (entries[index].key === key) return entries[index].value;\\n }\\n return null;\\n },\\n // \`URLSearchParams.prototype.getAll\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\\n getAll: function getAll(name) {\\n var entries = getInternalParamsState(this).entries;\\n validateArgumentsLength(arguments.length, 1);\\n var key = $toString(name);\\n var result = [];\\n var index = 0;\\n for (; index < entries.length; index++) {\\n if (entries[index].key === key) push(result, entries[index].value);\\n }\\n return result;\\n },\\n // \`URLSearchParams.prototype.has\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\\n has: function has(name /* , value */) {\\n var entries = getInternalParamsState(this).entries;\\n var length = validateArgumentsLength(arguments.length, 1);\\n var key = $toString(name);\\n var $value = length < 2 ? undefined : arguments[1];\\n var value = $value === undefined ? $value : $toString($value);\\n var index = 0;\\n while (index < entries.length) {\\n var entry = entries[index++];\\n if (entry.key === key && (value === undefined || entry.value === value)) return true;\\n }\\n return false;\\n },\\n // \`URLSearchParams.prototype.set\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\\n set: function set(name, value) {\\n var state = getInternalParamsState(this);\\n validateArgumentsLength(arguments.length, 1);\\n var entries = state.entries;\\n var found = false;\\n var key = $toString(name);\\n var val = $toString(value);\\n var index = 0;\\n var entry;\\n for (; index < entries.length; index++) {\\n entry = entries[index];\\n if (entry.key === key) {\\n if (found) splice(entries, index--, 1);\\n else {\\n found = true;\\n entry.value = val;\\n }\\n }\\n }\\n if (!found) push(entries, { key: key, value: val });\\n if (!DESCRIPTORS) this.size = entries.length;\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.sort\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\\n sort: function sort() {\\n var state = getInternalParamsState(this);\\n arraySort(state.entries, function (a, b) {\\n return a.key > b.key ? 1 : -1;\\n });\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.forEach\` method\\n forEach: function forEach(callback /* , thisArg */) {\\n var entries = getInternalParamsState(this).entries;\\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\\n var index = 0;\\n var entry;\\n while (index < entries.length) {\\n entry = entries[index++];\\n boundFunction(entry.value, entry.key, this);\\n }\\n },\\n // \`URLSearchParams.prototype.keys\` method\\n keys: function keys() {\\n return new URLSearchParamsIterator(this, 'keys');\\n },\\n // \`URLSearchParams.prototype.values\` method\\n values: function values() {\\n return new URLSearchParamsIterator(this, 'values');\\n },\\n // \`URLSearchParams.prototype.entries\` method\\n entries: function entries() {\\n return new URLSearchParamsIterator(this, 'entries');\\n }\\n}, { enumerable: true });\\n\\n// \`URLSearchParams.prototype[@@iterator]\` method\\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\\n\\n// \`URLSearchParams.prototype.toString\` method\\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\\n return getInternalParamsState(this).serialize();\\n}, { enumerable: true });\\n\\n// \`URLSearchParams.prototype.size\` getter\\n// https://github.com/whatwg/url/pull/734\\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\\n get: function size() {\\n return getInternalParamsState(this).entries.length;\\n },\\n configurable: true,\\n enumerable: true\\n});\\n\\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\\n\\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\\n URLSearchParams: URLSearchParamsConstructor\\n});\\n\\n// Wrap \`fetch\` and \`Request\` for correct work with polyfilled \`URLSearchParams\`\\nif (!USE_NATIVE_URL && isCallable(Headers)) {\\n var headersHas = uncurryThis(HeadersPrototype.has);\\n var headersSet = uncurryThis(HeadersPrototype.set);\\n\\n var wrapRequestOptions = function (init) {\\n if (isObject(init)) {\\n var body = init.body;\\n var headers;\\n if (classof(body) === URL_SEARCH_PARAMS) {\\n headers = init.headers ? new Headers(init.headers) : new Headers();\\n if (!headersHas(headers, 'content-type')) {\\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\\n }\\n return create(init, {\\n body: createPropertyDescriptor(0, $toString(body)),\\n headers: createPropertyDescriptor(0, headers)\\n });\\n }\\n } return init;\\n };\\n\\n if (isCallable(nativeFetch)) {\\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\\n fetch: function fetch(input /* , init */) {\\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\\n }\\n });\\n }\\n\\n if (isCallable(NativeRequest)) {\\n var RequestConstructor = function Request(input /* , init */) {\\n anInstance(this, RequestPrototype);\\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\\n };\\n\\n RequestPrototype.constructor = RequestConstructor;\\n RequestConstructor.prototype = RequestPrototype;\\n\\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\\n Request: RequestConstructor\\n });\\n }\\n}\\n\\nmodule.exports = {\\n URLSearchParams: URLSearchParamsConstructor,\\n getState: getInternalParamsState\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.constructor.js?")}),"./node_modules/core-js/modules/web.url-search-params.delete.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar append = uncurryThis(URLSearchParamsPrototype.append);\\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\nvar push = uncurryThis([].push);\\nvar params = new $URLSearchParams('a=1&a=2&b=3');\\n\\nparams['delete']('a', 1);\\n// \`undefined\` case is a Chromium 117 bug\\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\\nparams['delete']('b', undefined);\\n\\nif (params + '' !== 'a=2') {\\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\\n var length = arguments.length;\\n var $value = length < 2 ? undefined : arguments[1];\\n if (length && $value === undefined) return $delete(this, name);\\n var entries = [];\\n forEach(this, function (v, k) { // also validates \`this\`\\n push(entries, { key: k, value: v });\\n });\\n validateArgumentsLength(length, 1);\\n var key = toString(name);\\n var value = toString($value);\\n var index = 0;\\n var dindex = 0;\\n var found = false;\\n var entriesLength = entries.length;\\n var entry;\\n while (index < entriesLength) {\\n entry = entries[index++];\\n if (found || entry.key === key) {\\n found = true;\\n $delete(this, entry.key);\\n } else dindex++;\\n }\\n while (dindex < entriesLength) {\\n entry = entries[dindex++];\\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\\n }\\n }, { enumerable: true, unsafe: true });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.delete.js?")}),"./node_modules/core-js/modules/web.url-search-params.has.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\\nvar params = new $URLSearchParams('a=1');\\n\\n// \`undefined\` case is a Chromium 117 bug\\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\\nif (params.has('a', 2) || !params.has('a', undefined)) {\\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\\n var length = arguments.length;\\n var $value = length < 2 ? undefined : arguments[1];\\n if (length && $value === undefined) return $has(this, name);\\n var values = getAll(this, name); // also validates \`this\`\\n validateArgumentsLength(length, 1);\\n var value = toString($value);\\n var index = 0;\\n while (index < values.length) {\\n if (values[index++] === value) return true;\\n } return false;\\n }, { enumerable: true, unsafe: true });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.has.js?")}),"./node_modules/core-js/modules/web.url-search-params.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's replaced to module below\\n__webpack_require__(/*! ../modules/web.url-search-params.constructor */ \\"./node_modules/core-js/modules/web.url-search-params.constructor.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.js?")}),"./node_modules/core-js/modules/web.url-search-params.size.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\n\\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\n\\n// \`URLSearchParams.prototype.size\` getter\\n// https://github.com/whatwg/url/pull/734\\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\\n get: function size() {\\n var count = 0;\\n forEach(this, function () { count++; });\\n return count;\\n },\\n configurable: true,\\n enumerable: true\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.size.js?")}),"./node_modules/core-js/modules/web.url.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like \`preset-env\`\\n__webpack_require__(/*! ../modules/es.string.iterator */ \\"./node_modules/core-js/modules/es.string.iterator.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \\"./node_modules/core-js/internals/url-constructor-detection.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \\"./node_modules/core-js/internals/object-assign.js\\");\\nvar arrayFrom = __webpack_require__(/*! ../internals/array-from */ \\"./node_modules/core-js/internals/array-from.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\nvar codeAt = (__webpack_require__(/*! ../internals/string-multibyte */ \\"./node_modules/core-js/internals/string-multibyte.js\\").codeAt);\\nvar toASCII = __webpack_require__(/*! ../internals/string-punycode-to-ascii */ \\"./node_modules/core-js/internals/string-punycode-to-ascii.js\\");\\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar URLSearchParamsModule = __webpack_require__(/*! ../modules/web.url-search-params.constructor */ \\"./node_modules/core-js/modules/web.url-search-params.constructor.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalURLState = InternalStateModule.getterFor('URL');\\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\\n\\nvar NativeURL = global.URL;\\nvar TypeError = global.TypeError;\\nvar parseInt = global.parseInt;\\nvar floor = Math.floor;\\nvar pow = Math.pow;\\nvar charAt = uncurryThis(''.charAt);\\nvar exec = uncurryThis(/./.exec);\\nvar join = uncurryThis([].join);\\nvar numberToString = uncurryThis(1.0.toString);\\nvar pop = uncurryThis([].pop);\\nvar push = uncurryThis([].push);\\nvar replace = uncurryThis(''.replace);\\nvar shift = uncurryThis([].shift);\\nvar split = uncurryThis(''.split);\\nvar stringSlice = uncurryThis(''.slice);\\nvar toLowerCase = uncurryThis(''.toLowerCase);\\nvar unshift = uncurryThis([].unshift);\\n\\nvar INVALID_AUTHORITY = 'Invalid authority';\\nvar INVALID_SCHEME = 'Invalid scheme';\\nvar INVALID_HOST = 'Invalid host';\\nvar INVALID_PORT = 'Invalid port';\\n\\nvar ALPHA = /[a-z]/i;\\n// eslint-disable-next-line regexp/no-obscure-range -- safe\\nvar ALPHANUMERIC = /[\\\\d+-.a-z]/i;\\nvar DIGIT = /\\\\d/;\\nvar HEX_START = /^0x/i;\\nvar OCT = /^[0-7]+$/;\\nvar DEC = /^\\\\d+$/;\\nvar HEX = /^[\\\\da-f]+$/i;\\n/* eslint-disable regexp/no-control-character -- safe */\\nvar FORBIDDEN_HOST_CODE_POINT = /[\\\\0\\\\t\\\\n\\\\r #%/:<>?@[\\\\\\\\\\\\]^|]/;\\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\\\0\\\\t\\\\n\\\\r #/:<>?@[\\\\\\\\\\\\]^|]/;\\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\\\u0000-\\\\u0020]+/;\\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\\\u0000-\\\\u0020])[\\\\u0000-\\\\u0020]+$/;\\nvar TAB_AND_NEW_LINE = /[\\\\t\\\\n\\\\r]/g;\\n/* eslint-enable regexp/no-control-character -- safe */\\nvar EOF;\\n\\n// https://url.spec.whatwg.org/#ipv4-number-parser\\nvar parseIPv4 = function (input) {\\n var parts = split(input, '.');\\n var partsLength, numbers, index, part, radix, number, ipv4;\\n if (parts.length && parts[parts.length - 1] == '') {\\n parts.length--;\\n }\\n partsLength = parts.length;\\n if (partsLength > 4) return input;\\n numbers = [];\\n for (index = 0; index < partsLength; index++) {\\n part = parts[index];\\n if (part == '') return input;\\n radix = 10;\\n if (part.length > 1 && charAt(part, 0) == '0') {\\n radix = exec(HEX_START, part) ? 16 : 8;\\n part = stringSlice(part, radix == 8 ? 1 : 2);\\n }\\n if (part === '') {\\n number = 0;\\n } else {\\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\\n number = parseInt(part, radix);\\n }\\n push(numbers, number);\\n }\\n for (index = 0; index < partsLength; index++) {\\n number = numbers[index];\\n if (index == partsLength - 1) {\\n if (number >= pow(256, 5 - partsLength)) return null;\\n } else if (number > 255) return null;\\n }\\n ipv4 = pop(numbers);\\n for (index = 0; index < numbers.length; index++) {\\n ipv4 += numbers[index] * pow(256, 3 - index);\\n }\\n return ipv4;\\n};\\n\\n// https://url.spec.whatwg.org/#concept-ipv6-parser\\n// eslint-disable-next-line max-statements -- TODO\\nvar parseIPv6 = function (input) {\\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\\n var pieceIndex = 0;\\n var compress = null;\\n var pointer = 0;\\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\\n\\n var chr = function () {\\n return charAt(input, pointer);\\n };\\n\\n if (chr() == ':') {\\n if (charAt(input, 1) != ':') return;\\n pointer += 2;\\n pieceIndex++;\\n compress = pieceIndex;\\n }\\n while (chr()) {\\n if (pieceIndex == 8) return;\\n if (chr() == ':') {\\n if (compress !== null) return;\\n pointer++;\\n pieceIndex++;\\n compress = pieceIndex;\\n continue;\\n }\\n value = length = 0;\\n while (length < 4 && exec(HEX, chr())) {\\n value = value * 16 + parseInt(chr(), 16);\\n pointer++;\\n length++;\\n }\\n if (chr() == '.') {\\n if (length == 0) return;\\n pointer -= length;\\n if (pieceIndex > 6) return;\\n numbersSeen = 0;\\n while (chr()) {\\n ipv4Piece = null;\\n if (numbersSeen > 0) {\\n if (chr() == '.' && numbersSeen < 4) pointer++;\\n else return;\\n }\\n if (!exec(DIGIT, chr())) return;\\n while (exec(DIGIT, chr())) {\\n number = parseInt(chr(), 10);\\n if (ipv4Piece === null) ipv4Piece = number;\\n else if (ipv4Piece == 0) return;\\n else ipv4Piece = ipv4Piece * 10 + number;\\n if (ipv4Piece > 255) return;\\n pointer++;\\n }\\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\\n numbersSeen++;\\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\\n }\\n if (numbersSeen != 4) return;\\n break;\\n } else if (chr() == ':') {\\n pointer++;\\n if (!chr()) return;\\n } else if (chr()) return;\\n address[pieceIndex++] = value;\\n }\\n if (compress !== null) {\\n swaps = pieceIndex - compress;\\n pieceIndex = 7;\\n while (pieceIndex != 0 && swaps > 0) {\\n swap = address[pieceIndex];\\n address[pieceIndex--] = address[compress + swaps - 1];\\n address[compress + --swaps] = swap;\\n }\\n } else if (pieceIndex != 8) return;\\n return address;\\n};\\n\\nvar findLongestZeroSequence = function (ipv6) {\\n var maxIndex = null;\\n var maxLength = 1;\\n var currStart = null;\\n var currLength = 0;\\n var index = 0;\\n for (; index < 8; index++) {\\n if (ipv6[index] !== 0) {\\n if (currLength > maxLength) {\\n maxIndex = currStart;\\n maxLength = currLength;\\n }\\n currStart = null;\\n currLength = 0;\\n } else {\\n if (currStart === null) currStart = index;\\n ++currLength;\\n }\\n }\\n if (currLength > maxLength) {\\n maxIndex = currStart;\\n maxLength = currLength;\\n }\\n return maxIndex;\\n};\\n\\n// https://url.spec.whatwg.org/#host-serializing\\nvar serializeHost = function (host) {\\n var result, index, compress, ignore0;\\n // ipv4\\n if (typeof host == 'number') {\\n result = [];\\n for (index = 0; index < 4; index++) {\\n unshift(result, host % 256);\\n host = floor(host / 256);\\n } return join(result, '.');\\n // ipv6\\n } else if (typeof host == 'object') {\\n result = '';\\n compress = findLongestZeroSequence(host);\\n for (index = 0; index < 8; index++) {\\n if (ignore0 && host[index] === 0) continue;\\n if (ignore0) ignore0 = false;\\n if (compress === index) {\\n result += index ? ':' : '::';\\n ignore0 = true;\\n } else {\\n result += numberToString(host[index], 16);\\n if (index < 7) result += ':';\\n }\\n }\\n return '[' + result + ']';\\n } return host;\\n};\\n\\nvar C0ControlPercentEncodeSet = {};\\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\\n ' ': 1, '\\"': 1, '<': 1, '>': 1, '\`': 1\\n});\\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\\n '#': 1, '?': 1, '{': 1, '}': 1\\n});\\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\\\\\': 1, ']': 1, '^': 1, '|': 1\\n});\\n\\nvar percentEncode = function (chr, set) {\\n var code = codeAt(chr, 0);\\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\\n};\\n\\n// https://url.spec.whatwg.org/#special-scheme\\nvar specialSchemes = {\\n ftp: 21,\\n file: null,\\n http: 80,\\n https: 443,\\n ws: 80,\\n wss: 443\\n};\\n\\n// https://url.spec.whatwg.org/#windows-drive-letter\\nvar isWindowsDriveLetter = function (string, normalized) {\\n var second;\\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\\n};\\n\\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\\nvar startsWithWindowsDriveLetter = function (string) {\\n var third;\\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\\n string.length == 2 ||\\n ((third = charAt(string, 2)) === '/' || third === '\\\\\\\\' || third === '?' || third === '#')\\n );\\n};\\n\\n// https://url.spec.whatwg.org/#single-dot-path-segment\\nvar isSingleDot = function (segment) {\\n return segment === '.' || toLowerCase(segment) === '%2e';\\n};\\n\\n// https://url.spec.whatwg.org/#double-dot-path-segment\\nvar isDoubleDot = function (segment) {\\n segment = toLowerCase(segment);\\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\\n};\\n\\n// States:\\nvar SCHEME_START = {};\\nvar SCHEME = {};\\nvar NO_SCHEME = {};\\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\\nvar PATH_OR_AUTHORITY = {};\\nvar RELATIVE = {};\\nvar RELATIVE_SLASH = {};\\nvar SPECIAL_AUTHORITY_SLASHES = {};\\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\\nvar AUTHORITY = {};\\nvar HOST = {};\\nvar HOSTNAME = {};\\nvar PORT = {};\\nvar FILE = {};\\nvar FILE_SLASH = {};\\nvar FILE_HOST = {};\\nvar PATH_START = {};\\nvar PATH = {};\\nvar CANNOT_BE_A_BASE_URL_PATH = {};\\nvar QUERY = {};\\nvar FRAGMENT = {};\\n\\nvar URLState = function (url, isBase, base) {\\n var urlString = $toString(url);\\n var baseState, failure, searchParams;\\n if (isBase) {\\n failure = this.parse(urlString);\\n if (failure) throw TypeError(failure);\\n this.searchParams = null;\\n } else {\\n if (base !== undefined) baseState = new URLState(base, true);\\n failure = this.parse(urlString, null, baseState);\\n if (failure) throw TypeError(failure);\\n searchParams = getInternalSearchParamsState(new URLSearchParams());\\n searchParams.bindURL(this);\\n this.searchParams = searchParams;\\n }\\n};\\n\\nURLState.prototype = {\\n type: 'URL',\\n // https://url.spec.whatwg.org/#url-parsing\\n // eslint-disable-next-line max-statements -- TODO\\n parse: function (input, stateOverride, base) {\\n var url = this;\\n var state = stateOverride || SCHEME_START;\\n var pointer = 0;\\n var buffer = '';\\n var seenAt = false;\\n var seenBracket = false;\\n var seenPasswordToken = false;\\n var codePoints, chr, bufferCodePoints, failure;\\n\\n input = $toString(input);\\n\\n if (!stateOverride) {\\n url.scheme = '';\\n url.username = '';\\n url.password = '';\\n url.host = null;\\n url.port = null;\\n url.path = [];\\n url.query = null;\\n url.fragment = null;\\n url.cannotBeABaseURL = false;\\n input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\\n input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\\n }\\n\\n input = replace(input, TAB_AND_NEW_LINE, '');\\n\\n codePoints = arrayFrom(input);\\n\\n while (pointer <= codePoints.length) {\\n chr = codePoints[pointer];\\n switch (state) {\\n case SCHEME_START:\\n if (chr && exec(ALPHA, chr)) {\\n buffer += toLowerCase(chr);\\n state = SCHEME;\\n } else if (!stateOverride) {\\n state = NO_SCHEME;\\n continue;\\n } else return INVALID_SCHEME;\\n break;\\n\\n case SCHEME:\\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\\n buffer += toLowerCase(chr);\\n } else if (chr == ':') {\\n if (stateOverride && (\\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\\n (url.scheme == 'file' && !url.host)\\n )) return;\\n url.scheme = buffer;\\n if (stateOverride) {\\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\\n return;\\n }\\n buffer = '';\\n if (url.scheme == 'file') {\\n state = FILE;\\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\\n } else if (url.isSpecial()) {\\n state = SPECIAL_AUTHORITY_SLASHES;\\n } else if (codePoints[pointer + 1] == '/') {\\n state = PATH_OR_AUTHORITY;\\n pointer++;\\n } else {\\n url.cannotBeABaseURL = true;\\n push(url.path, '');\\n state = CANNOT_BE_A_BASE_URL_PATH;\\n }\\n } else if (!stateOverride) {\\n buffer = '';\\n state = NO_SCHEME;\\n pointer = 0;\\n continue;\\n } else return INVALID_SCHEME;\\n break;\\n\\n case NO_SCHEME:\\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\\n if (base.cannotBeABaseURL && chr == '#') {\\n url.scheme = base.scheme;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n url.fragment = '';\\n url.cannotBeABaseURL = true;\\n state = FRAGMENT;\\n break;\\n }\\n state = base.scheme == 'file' ? FILE : RELATIVE;\\n continue;\\n\\n case SPECIAL_RELATIVE_OR_AUTHORITY:\\n if (chr == '/' && codePoints[pointer + 1] == '/') {\\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\\n pointer++;\\n } else {\\n state = RELATIVE;\\n continue;\\n } break;\\n\\n case PATH_OR_AUTHORITY:\\n if (chr == '/') {\\n state = AUTHORITY;\\n break;\\n } else {\\n state = PATH;\\n continue;\\n }\\n\\n case RELATIVE:\\n url.scheme = base.scheme;\\n if (chr == EOF) {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n } else if (chr == '/' || (chr == '\\\\\\\\' && url.isSpecial())) {\\n state = RELATIVE_SLASH;\\n } else if (chr == '?') {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n url.fragment = '';\\n state = FRAGMENT;\\n } else {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.path.length--;\\n state = PATH;\\n continue;\\n } break;\\n\\n case RELATIVE_SLASH:\\n if (url.isSpecial() && (chr == '/' || chr == '\\\\\\\\')) {\\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\\n } else if (chr == '/') {\\n state = AUTHORITY;\\n } else {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n state = PATH;\\n continue;\\n } break;\\n\\n case SPECIAL_AUTHORITY_SLASHES:\\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\\n pointer++;\\n break;\\n\\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\\n if (chr != '/' && chr != '\\\\\\\\') {\\n state = AUTHORITY;\\n continue;\\n } break;\\n\\n case AUTHORITY:\\n if (chr == '@') {\\n if (seenAt) buffer = '%40' + buffer;\\n seenAt = true;\\n bufferCodePoints = arrayFrom(buffer);\\n for (var i = 0; i < bufferCodePoints.length; i++) {\\n var codePoint = bufferCodePoints[i];\\n if (codePoint == ':' && !seenPasswordToken) {\\n seenPasswordToken = true;\\n continue;\\n }\\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\\n if (seenPasswordToken) url.password += encodedCodePoints;\\n else url.username += encodedCodePoints;\\n }\\n buffer = '';\\n } else if (\\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\\n (chr == '\\\\\\\\' && url.isSpecial())\\n ) {\\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\\n pointer -= arrayFrom(buffer).length + 1;\\n buffer = '';\\n state = HOST;\\n } else buffer += chr;\\n break;\\n\\n case HOST:\\n case HOSTNAME:\\n if (stateOverride && url.scheme == 'file') {\\n state = FILE_HOST;\\n continue;\\n } else if (chr == ':' && !seenBracket) {\\n if (buffer == '') return INVALID_HOST;\\n failure = url.parseHost(buffer);\\n if (failure) return failure;\\n buffer = '';\\n state = PORT;\\n if (stateOverride == HOSTNAME) return;\\n } else if (\\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\\n (chr == '\\\\\\\\' && url.isSpecial())\\n ) {\\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\\n failure = url.parseHost(buffer);\\n if (failure) return failure;\\n buffer = '';\\n state = PATH_START;\\n if (stateOverride) return;\\n continue;\\n } else {\\n if (chr == '[') seenBracket = true;\\n else if (chr == ']') seenBracket = false;\\n buffer += chr;\\n } break;\\n\\n case PORT:\\n if (exec(DIGIT, chr)) {\\n buffer += chr;\\n } else if (\\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\\n (chr == '\\\\\\\\' && url.isSpecial()) ||\\n stateOverride\\n ) {\\n if (buffer != '') {\\n var port = parseInt(buffer, 10);\\n if (port > 0xFFFF) return INVALID_PORT;\\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\\n buffer = '';\\n }\\n if (stateOverride) return;\\n state = PATH_START;\\n continue;\\n } else return INVALID_PORT;\\n break;\\n\\n case FILE:\\n url.scheme = 'file';\\n if (chr == '/' || chr == '\\\\\\\\') state = FILE_SLASH;\\n else if (base && base.scheme == 'file') {\\n if (chr == EOF) {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n } else if (chr == '?') {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n url.fragment = '';\\n state = FRAGMENT;\\n } else {\\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.shortenPath();\\n }\\n state = PATH;\\n continue;\\n }\\n } else {\\n state = PATH;\\n continue;\\n } break;\\n\\n case FILE_SLASH:\\n if (chr == '/' || chr == '\\\\\\\\') {\\n state = FILE_HOST;\\n break;\\n }\\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\\n else url.host = base.host;\\n }\\n state = PATH;\\n continue;\\n\\n case FILE_HOST:\\n if (chr == EOF || chr == '/' || chr == '\\\\\\\\' || chr == '?' || chr == '#') {\\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\\n state = PATH;\\n } else if (buffer == '') {\\n url.host = '';\\n if (stateOverride) return;\\n state = PATH_START;\\n } else {\\n failure = url.parseHost(buffer);\\n if (failure) return failure;\\n if (url.host == 'localhost') url.host = '';\\n if (stateOverride) return;\\n buffer = '';\\n state = PATH_START;\\n } continue;\\n } else buffer += chr;\\n break;\\n\\n case PATH_START:\\n if (url.isSpecial()) {\\n state = PATH;\\n if (chr != '/' && chr != '\\\\\\\\') continue;\\n } else if (!stateOverride && chr == '?') {\\n url.query = '';\\n state = QUERY;\\n } else if (!stateOverride && chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n } else if (chr != EOF) {\\n state = PATH;\\n if (chr != '/') continue;\\n } break;\\n\\n case PATH:\\n if (\\n chr == EOF || chr == '/' ||\\n (chr == '\\\\\\\\' && url.isSpecial()) ||\\n (!stateOverride && (chr == '?' || chr == '#'))\\n ) {\\n if (isDoubleDot(buffer)) {\\n url.shortenPath();\\n if (chr != '/' && !(chr == '\\\\\\\\' && url.isSpecial())) {\\n push(url.path, '');\\n }\\n } else if (isSingleDot(buffer)) {\\n if (chr != '/' && !(chr == '\\\\\\\\' && url.isSpecial())) {\\n push(url.path, '');\\n }\\n } else {\\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\\n if (url.host) url.host = '';\\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\\n }\\n push(url.path, buffer);\\n }\\n buffer = '';\\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\\n while (url.path.length > 1 && url.path[0] === '') {\\n shift(url.path);\\n }\\n }\\n if (chr == '?') {\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n }\\n } else {\\n buffer += percentEncode(chr, pathPercentEncodeSet);\\n } break;\\n\\n case CANNOT_BE_A_BASE_URL_PATH:\\n if (chr == '?') {\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n } else if (chr != EOF) {\\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\\n } break;\\n\\n case QUERY:\\n if (!stateOverride && chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n } else if (chr != EOF) {\\n if (chr == \\"'\\" && url.isSpecial()) url.query += '%27';\\n else if (chr == '#') url.query += '%23';\\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\\n } break;\\n\\n case FRAGMENT:\\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\\n break;\\n }\\n\\n pointer++;\\n }\\n },\\n // https://url.spec.whatwg.org/#host-parsing\\n parseHost: function (input) {\\n var result, codePoints, index;\\n if (charAt(input, 0) == '[') {\\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\\n result = parseIPv6(stringSlice(input, 1, -1));\\n if (!result) return INVALID_HOST;\\n this.host = result;\\n // opaque host\\n } else if (!this.isSpecial()) {\\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\\n result = '';\\n codePoints = arrayFrom(input);\\n for (index = 0; index < codePoints.length; index++) {\\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\\n }\\n this.host = result;\\n } else {\\n input = toASCII(input);\\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\\n result = parseIPv4(input);\\n if (result === null) return INVALID_HOST;\\n this.host = result;\\n }\\n },\\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\\n cannotHaveUsernamePasswordPort: function () {\\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\\n },\\n // https://url.spec.whatwg.org/#include-credentials\\n includesCredentials: function () {\\n return this.username != '' || this.password != '';\\n },\\n // https://url.spec.whatwg.org/#is-special\\n isSpecial: function () {\\n return hasOwn(specialSchemes, this.scheme);\\n },\\n // https://url.spec.whatwg.org/#shorten-a-urls-path\\n shortenPath: function () {\\n var path = this.path;\\n var pathSize = path.length;\\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\\n path.length--;\\n }\\n },\\n // https://url.spec.whatwg.org/#concept-url-serializer\\n serialize: function () {\\n var url = this;\\n var scheme = url.scheme;\\n var username = url.username;\\n var password = url.password;\\n var host = url.host;\\n var port = url.port;\\n var path = url.path;\\n var query = url.query;\\n var fragment = url.fragment;\\n var output = scheme + ':';\\n if (host !== null) {\\n output += '//';\\n if (url.includesCredentials()) {\\n output += username + (password ? ':' + password : '') + '@';\\n }\\n output += serializeHost(host);\\n if (port !== null) output += ':' + port;\\n } else if (scheme == 'file') output += '//';\\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\\n if (query !== null) output += '?' + query;\\n if (fragment !== null) output += '#' + fragment;\\n return output;\\n },\\n // https://url.spec.whatwg.org/#dom-url-href\\n setHref: function (href) {\\n var failure = this.parse(href);\\n if (failure) throw TypeError(failure);\\n this.searchParams.update();\\n },\\n // https://url.spec.whatwg.org/#dom-url-origin\\n getOrigin: function () {\\n var scheme = this.scheme;\\n var port = this.port;\\n if (scheme == 'blob') try {\\n return new URLConstructor(scheme.path[0]).origin;\\n } catch (error) {\\n return 'null';\\n }\\n if (scheme == 'file' || !this.isSpecial()) return 'null';\\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\\n },\\n // https://url.spec.whatwg.org/#dom-url-protocol\\n getProtocol: function () {\\n return this.scheme + ':';\\n },\\n setProtocol: function (protocol) {\\n this.parse($toString(protocol) + ':', SCHEME_START);\\n },\\n // https://url.spec.whatwg.org/#dom-url-username\\n getUsername: function () {\\n return this.username;\\n },\\n setUsername: function (username) {\\n var codePoints = arrayFrom($toString(username));\\n if (this.cannotHaveUsernamePasswordPort()) return;\\n this.username = '';\\n for (var i = 0; i < codePoints.length; i++) {\\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\\n }\\n },\\n // https://url.spec.whatwg.org/#dom-url-password\\n getPassword: function () {\\n return this.password;\\n },\\n setPassword: function (password) {\\n var codePoints = arrayFrom($toString(password));\\n if (this.cannotHaveUsernamePasswordPort()) return;\\n this.password = '';\\n for (var i = 0; i < codePoints.length; i++) {\\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\\n }\\n },\\n // https://url.spec.whatwg.org/#dom-url-host\\n getHost: function () {\\n var host = this.host;\\n var port = this.port;\\n return host === null ? ''\\n : port === null ? serializeHost(host)\\n : serializeHost(host) + ':' + port;\\n },\\n setHost: function (host) {\\n if (this.cannotBeABaseURL) return;\\n this.parse(host, HOST);\\n },\\n // https://url.spec.whatwg.org/#dom-url-hostname\\n getHostname: function () {\\n var host = this.host;\\n return host === null ? '' : serializeHost(host);\\n },\\n setHostname: function (hostname) {\\n if (this.cannotBeABaseURL) return;\\n this.parse(hostname, HOSTNAME);\\n },\\n // https://url.spec.whatwg.org/#dom-url-port\\n getPort: function () {\\n var port = this.port;\\n return port === null ? '' : $toString(port);\\n },\\n setPort: function (port) {\\n if (this.cannotHaveUsernamePasswordPort()) return;\\n port = $toString(port);\\n if (port == '') this.port = null;\\n else this.parse(port, PORT);\\n },\\n // https://url.spec.whatwg.org/#dom-url-pathname\\n getPathname: function () {\\n var path = this.path;\\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\\n },\\n setPathname: function (pathname) {\\n if (this.cannotBeABaseURL) return;\\n this.path = [];\\n this.parse(pathname, PATH_START);\\n },\\n // https://url.spec.whatwg.org/#dom-url-search\\n getSearch: function () {\\n var query = this.query;\\n return query ? '?' + query : '';\\n },\\n setSearch: function (search) {\\n search = $toString(search);\\n if (search == '') {\\n this.query = null;\\n } else {\\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\\n this.query = '';\\n this.parse(search, QUERY);\\n }\\n this.searchParams.update();\\n },\\n // https://url.spec.whatwg.org/#dom-url-searchparams\\n getSearchParams: function () {\\n return this.searchParams.facade;\\n },\\n // https://url.spec.whatwg.org/#dom-url-hash\\n getHash: function () {\\n var fragment = this.fragment;\\n return fragment ? '#' + fragment : '';\\n },\\n setHash: function (hash) {\\n hash = $toString(hash);\\n if (hash == '') {\\n this.fragment = null;\\n return;\\n }\\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\\n this.fragment = '';\\n this.parse(hash, FRAGMENT);\\n },\\n update: function () {\\n this.query = this.searchParams.serialize() || null;\\n }\\n};\\n\\n// \`URL\` constructor\\n// https://url.spec.whatwg.org/#url-class\\nvar URLConstructor = function URL(url /* , base */) {\\n var that = anInstance(this, URLPrototype);\\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\\n var state = setInternalState(that, new URLState(url, false, base));\\n if (!DESCRIPTORS) {\\n that.href = state.serialize();\\n that.origin = state.getOrigin();\\n that.protocol = state.getProtocol();\\n that.username = state.getUsername();\\n that.password = state.getPassword();\\n that.host = state.getHost();\\n that.hostname = state.getHostname();\\n that.port = state.getPort();\\n that.pathname = state.getPathname();\\n that.search = state.getSearch();\\n that.searchParams = state.getSearchParams();\\n that.hash = state.getHash();\\n }\\n};\\n\\nvar URLPrototype = URLConstructor.prototype;\\n\\nvar accessorDescriptor = function (getter, setter) {\\n return {\\n get: function () {\\n return getInternalURLState(this)[getter]();\\n },\\n set: setter && function (value) {\\n return getInternalURLState(this)[setter](value);\\n },\\n configurable: true,\\n enumerable: true\\n };\\n};\\n\\nif (DESCRIPTORS) {\\n // \`URL.prototype.href\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-href\\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\\n // \`URL.prototype.origin\` getter\\n // https://url.spec.whatwg.org/#dom-url-origin\\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\\n // \`URL.prototype.protocol\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-protocol\\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\\n // \`URL.prototype.username\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-username\\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\\n // \`URL.prototype.password\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-password\\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\\n // \`URL.prototype.host\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-host\\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\\n // \`URL.prototype.hostname\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-hostname\\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\\n // \`URL.prototype.port\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-port\\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\\n // \`URL.prototype.pathname\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-pathname\\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\\n // \`URL.prototype.search\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-search\\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\\n // \`URL.prototype.searchParams\` getter\\n // https://url.spec.whatwg.org/#dom-url-searchparams\\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\\n // \`URL.prototype.hash\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-hash\\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\\n}\\n\\n// \`URL.prototype.toJSON\` method\\n// https://url.spec.whatwg.org/#dom-url-tojson\\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\\n return getInternalURLState(this).serialize();\\n}, { enumerable: true });\\n\\n// \`URL.prototype.toString\` method\\n// https://url.spec.whatwg.org/#URL-stringification-behavior\\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\\n return getInternalURLState(this).serialize();\\n}, { enumerable: true });\\n\\nif (NativeURL) {\\n var nativeCreateObjectURL = NativeURL.createObjectURL;\\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\\n // \`URL.createObjectURL\` method\\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\\n // \`URL.revokeObjectURL\` method\\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\\n}\\n\\nsetToStringTag(URLConstructor, 'URL');\\n\\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\\n URL: URLConstructor\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.constructor.js?")}),"./node_modules/core-js/modules/web.url.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's replaced to module below\\n__webpack_require__(/*! ../modules/web.url.constructor */ \\"./node_modules/core-js/modules/web.url.constructor.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.js?")})});var __webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==undefined){return cachedModule.exports}var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:false,exports:{}};__webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.loaded=true;return module.exports}(()=>{__webpack_require__.amdO={}})();(()=>{__webpack_require__.n=(module)=>{var getter=module&&module.__esModule?()=>(module['default']):()=>(module);__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,definition)=>{for(var key in definition){if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,get:definition[key]})}}}})();(()=>{__webpack_require__.g=(function(){if(typeof globalThis==='object')return globalThis;try{return this||new Function('return this')()}catch(e){if(typeof window==='object')return window}})()})();(()=>{__webpack_require__.hmd=(module)=>{module=Object.create(module);if(!module.children)module.children=[];Object.defineProperty(module,'exports',{enumerable:true,set:()=>{throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: '+module.id);}});return module}})();(()=>{__webpack_require__.o=(obj,prop)=>(Object.prototype.hasOwnProperty.call(obj,prop))})();(()=>{__webpack_require__.r=(exports)=>{if(typeof Symbol!=='undefined'&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'})}Object.defineProperty(exports,'__esModule',{value:true})}})();var __webpack_exports__=__webpack_require__("./pdf.js")})();`;function X(t){var e,r,i,a,n;for(e="",i=t.length,r=0;r=1&&a<=127?e+=t.charAt(r):a>2047?(n=224|a>>12&15,e+=String.fromCharCode(n),n=128|a>>6&63,e+=String.fromCharCode(n),n=128|a>>0&63,e+=String.fromCharCode(n)):(n=192|a>>6&31,e+=String.fromCharCode(n),n=128|a>>0&63,e+=String.fromCharCode(n));return e}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function z(t){var e,r,i,a,n,l;for(i=t.length,r=0,e="";r>2),e+=o.charAt((a&3)<<4),e+="==";break}if(n=t.charCodeAt(r++),r==i){e+=o.charAt(a>>2),e+=o.charAt((a&3)<<4|(n&240)>>4),e+=o.charAt((n&15)<<2),e+="=";break}l=t.charCodeAt(r++),e+=o.charAt(a>>2),e+=o.charAt((a&3)<<4|(n&240)>>4),e+=o.charAt((n&15)<<2|(l&192)>>6),e+=o.charAt(l&63)}return e}function A(t){return z(X(t))}const V=`data:text/javascript;base64,${A(H)}`,K=`data:text/javascript;base64,${A(W)}`,Y=R({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(t,{emit:e}){let r=null,i=null;const a=v([]),n=v(0);function l(){return C(V).then(()=>{if(window.pdfjsLib)window.pdfjsLib.GlobalWorkerOptions.workerSrc=K;else return Promise.reject("window.pdfjsLib未找到")})}function m(){return window.pdfjsLib?Promise.resolve():l()}function w(){if(!t.src){n.value=0;return}i=window.pdfjsLib.getDocument({url:P(t.src),cMapUrl:`${t.staticFileUrl.endsWith("/")?t.staticFileUrl:t.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0,...T(t.options,["width"])}),i.promise.then(s=>{r=s,n.value=r.numPages,setTimeout(()=>{S(1)})}).catch(s=>{e("error",s)})}function S(s){r.getPage(s).then(c=>{const d=c.getViewport({scale:2}),h=window.devicePixelRatio||1,p=a.value[s-1],E=p.getContext("2d");p.width=Math.floor(d.width*h),p.height=Math.floor(d.height*h);let u=Math.floor(d.width),f=Math.floor(d.height);if(t.options.width){let _=t.options.width/u;u=Math.floor(t.options.width),f=Math.floor(f*_)}if(u>document.documentElement.clientWidth){let _=document.documentElement.clientWidth/u;u=Math.floor(document.documentElement.clientWidth),f=Math.floor(f*_)}p.style.width=u+"px",p.style.height=f+"px";const j=h!==1?[h,0,0,h,0,0]:null;c.render({canvasContext:E,transform:j,viewport:d}).promise.then(()=>{n.value>s?S(s+1):e("rendered")}).catch(_=>{e("error",_)})}).catch(c=>{e("error",c)})}F(()=>{t.src&&m().then(w).catch(s=>{console.warn(s)})}),M(()=>t.src,()=>{m().then(w).catch(s=>{console.warn(s)})});function k(s){r&&r._transport&&r._transport.getData().then(c=>{O(s||`vue-office-pdf-${new Date().getTime()}.pdf`,c.buffer)})}return{rootRef:a,numPages:n,save:k}}}),J={class:"vue-office-pdf",ref:"vue-office-pdf",style:{"text-align":"center","overflow-y":"auto"}},Z={key:0,class:"vue-office-pdf-wrapper",style:{background:"gray",padding:"30px 0",position:"relative"}};function Q(t,e,r,i,a,n){return g(),b("div",J,[t.numPages?(g(),b("div",Z,[(g(!0),b(D,null,L(t.numPages,l=>(g(),b("canvas",{ref_for:!0,ref:"rootRef",key:l,style:{width:"100%"}}))),128))])):N("",!0)],512)}const y=I(Y,[["render",Q]]);y.install=function(t){t.component(y.name,y)};const se={__name:"PdfDemo",setup(t){function e(){x.hideLoading()}function r(n){console.log("出差",n),x.hideLoading()}const i=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.pdf",a=v();return(n,l)=>(g(),U(G,{accept:".pdf",placeholder:"请输入pdf文件地址","default-src":i},{default:B(m=>[q($(y),{ref_key:"docxRef",ref:a,src:m.src,style:{flex:"1",height:"0"},options:{},onRendered:e,onError:r},null,8,["src"])]),_:1}))}};export{se as default}; diff --git a/examples/dist/assets/PreviewWrapper-95ad6bf9.js b/examples/dist/assets/PreviewWrapper-95ad6bf9.js new file mode 100644 index 0000000..45dd506 --- /dev/null +++ b/examples/dist/assets/PreviewWrapper-95ad6bf9.js @@ -0,0 +1 @@ +import{r as d,m as C,_ as I,w as N,p as l,a as p,c as x,u as t,g as i,f as n,q as v,s as S,e as y,l as m,t as V,v as W,x as A,b as R}from"./index-11290fb6.js";function T(e){const s=d("url"),a=d(e),r=d(e),u=d([]);function b(w){let c=new FileReader;return c.onload=o=>{let _=o.target.result;r.value=_},c.readAsArrayBuffer(w),!1}return{type:s,inputSrc:a,src:r,fileList:u,beforeUpload:b}}let g=d(!1),k;function $(e){k=C.loading(e,0),g.value=!0}function q(){g.value===!0&&(k(),g.value=!1)}const E={loading:g,showLoading:$,hideLoading:q};function F(){return location.href.includes("test")}const j=e=>(W("data-v-6e0b6946"),e=e(),A(),e),z={class:"preview-wrapper"},D={key:0,class:"operate-area"},G=j(()=>R("div",{class:"preview-wrapper-main"},null,-1)),H={__name:"PreviewWrapper",props:{accept:String,placeholder:String,defaultSrc:String},setup(e){const s=e,{type:a,inputSrc:r,src:u,fileList:b,beforeUpload:w}=T(s.defaultSrc);return N(u,()=>{E.showLoading()},{immediate:!0}),(c,o)=>{const _=l("a-radio-button"),B=l("a-radio-group"),L=l("a-input"),h=l("a-button"),U=l("upload-outlined"),P=l("a-upload");return p(),x("div",z,[t(F)()?m("",!0):(p(),x("div",D,[i(B,{value:t(a),"onUpdate:value":o[0]||(o[0]=f=>S(a)?a.value=f:null),"button-style":"solid"},{default:n(()=>[i(_,{value:"url"},{default:n(()=>[v("远程文件地址")]),_:1}),i(_,{value:"upload"},{default:n(()=>[v("上传本地文件")]),_:1})]),_:1},8,["value"]),t(a)==="url"?(p(),y(L,{key:0,value:t(r),"onUpdate:value":o[1]||(o[1]=f=>S(r)?r.value=f:null),placeholder:s.placeholder,style:{width:"600px","margin-left":"10px"}},null,8,["value","placeholder"])):m("",!0),t(a)==="url"?(p(),y(h,{key:1,type:"primary",style:{"margin-left":"10px"},onClick:o[2]||(o[2]=f=>u.value=t(r))},{default:n(()=>[v(" 预览 ")]),_:1})):m("",!0),t(a)!=="url"?(p(),y(P,{key:2,accept:s.accept,action:"",beforeUpload:t(w),"file-list":[]},{default:n(()=>[i(h,{style:{"margin-left":"10px"}},{default:n(()=>[i(U),v(" 选择文件 ")]),_:1})]),_:1},8,["accept","beforeUpload"])):m("",!0)])),V(c.$slots,"default",{src:t(u)},void 0,!0),G])}}},K=I(H,[["__scopeId","data-v-6e0b6946"]]);export{K as P,E as u}; diff --git a/examples/dist/assets/docx-a0687961.js b/examples/dist/assets/docx-a0687961.js new file mode 100644 index 0000000..7b412c3 --- /dev/null +++ b/examples/dist/assets/docx-a0687961.js @@ -0,0 +1,96 @@ +import{y as _e}from"./index-11290fb6.js";import{c as ke}from"./_commonjs-dynamic-modules-302442b1.js";var Ae={},Ne={get exports(){return Ae},set exports(re){Ae=re}},we={},Be={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(j,N,A){function v(r,m){if(!N[r]){if(!j[r]){var p=typeof ke=="function"&&ke;if(!m&&p)return p(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=N[r]={exports:{}};j[r][0].call(i.exports,function(y){var h=j[r][1][y];return v(h||y)},i,i.exports,T,j,N,A)}return N[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,p=(3&i)<<6|(y=e.indexOf(u.charAt(h++))),g[d++]=r,i!==64&&(g[d++]=m),y!==64&&(g[d++]=p);return g}},{"./support":30,"./utils":32}],2:[function(T,j,N){var A=T("./external"),v=T("./stream/DataWorker"),e=T("./stream/Crc32Probe"),u=T("./stream/DataLengthProbe");function r(m,p,a,i,y){this.compressedSize=m,this.uncompressedSize=p,this.crc32=a,this.compression=i,this.compressedContent=y}r.prototype={getContentWorker:function(){var m=new v(A.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new u("data_length")),p=this;return m.on("end",function(){if(this.streamInfo.data_length!==p.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),m},getCompressedWorker:function(){return new v(A.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},r.createWorkerFrom=function(m,p,a){return m.pipe(new e).pipe(new u("uncompressedSize")).pipe(p.compressWorker(a)).pipe(new u("compressedSize")).withStreamInfo("compression",p)},j.exports=r},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(T,j,N){var A=T("./stream/GenericWorker");N.STORE={magic:"\0\0",compressWorker:function(){return new A("STORE compression")},uncompressWorker:function(){return new A("STORE decompression")}},N.DEFLATE=T("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(T,j,N){var A=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}();j.exports=function(e,u){return e!==void 0&&e.length?A.getTypeOf(e)!=="string"?function(r,m,p,a){var i=v,y=a+p;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,p,a){var i=v,y=a+p;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,j,N){N.base64=!1,N.binary=!1,N.dir=!1,N.createFolders=!0,N.date=null,N.compression=null,N.compressionOptions=null,N.comment=null,N.unixPermissions=null,N.dosPermissions=null},{}],6:[function(T,j,N){var A=null;A=typeof Promise<"u"?Promise:T("lie"),j.exports={Promise:A}},{lie:37}],7:[function(T,j,N){var A=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",v=T("pako"),e=T("./utils"),u=T("./stream/GenericWorker"),r=A?"uint8array":"array";function m(p,a){u.call(this,"FlateWorker/"+p),this._pako=null,this._pakoAction=p,this._pakoOptions=a,this.meta={}}N.magic="\b\0",e.inherits(m,u),m.prototype.processChunk=function(p){this.meta=p.meta,this._pako===null&&this._createPako(),this._pako.push(e.transformTo(r,p.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 p=this;this._pako.onData=function(a){p.push({data:a,meta:p.meta})}},N.compressWorker=function(p){return new m("Deflate",p)},N.uncompressWorker=function(){return new m("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(T,j,N){function A(i,y){var h,d="";for(h=0;h>>=8;return d}function v(i,y,h,d,f,g){var x,P,n=i.file,o=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,s=_.length!==k.length,R="",V="",M="",K=n.dir,W=n.date,J={crc32:0,compressedSize:0,uncompressedSize:0};y&&!h||(J.crc32=i.crc32,J.compressedSize=i.compressedSize,J.uncompressedSize=i.uncompressedSize);var z=0;y&&(z|=8),t||!C&&!s||(z|=2048);var O=0,Y=0;K&&(O|=16),f==="UNIX"?(Y=798,O|=function(Z,ne){var le=Z;return Z||(le=ne?16893:33204),(65535&le)<<16}(n.unixPermissions,K)):(Y=20,O|=function(Z){return 63&(Z||0)}(n.dosPermissions)),x=W.getUTCHours(),x<<=6,x|=W.getUTCMinutes(),x<<=5,x|=W.getUTCSeconds()/2,P=W.getUTCFullYear()-1980,P<<=4,P|=W.getUTCMonth()+1,P<<=5,P|=W.getUTCDate(),C&&(V=A(1,1)+A(m(l),4)+b,R+="up"+A(V.length,2)+V),s&&(M=A(1,1)+A(m(E),4)+_,R+="uc"+A(M.length,2)+M);var X="";return X+=` +\0`,X+=A(z,2),X+=o.magic,X+=A(x,2),X+=A(P,2),X+=A(J.crc32,4),X+=A(J.compressedSize,4),X+=A(J.uncompressedSize,4),X+=A(l.length,2),X+=A(R.length,2),{fileRecord:p.LOCAL_FILE_HEADER+X+l+R,dirRecord:p.CENTRAL_FILE_HEADER+A(Y,2)+X+A(E.length,2)+"\0\0\0\0"+A(O,4)+A(d,4)+l+R+E}}var e=T("../utils"),u=T("../stream/GenericWorker"),r=T("../utf8"),m=T("../crc32"),p=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 p.DATA_DESCRIPTOR+A(d.crc32,4)+A(d.compressedSize,4)+A(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 A.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))}},j.exports=v},{"../utils":32}],19:[function(T,j,N){var A=T("./Uint8ArrayReader");function v(e){A.call(this,e)}T("../utils").inherits(v,A),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},j.exports=v},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(T,j,N){var A=T("./DataReader");function v(e){A.call(this,e)}T("../utils").inherits(v,A),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},j.exports=v},{"../utils":32,"./DataReader":18}],21:[function(T,j,N){var A=T("./ArrayReader");function v(e){A.call(this,e)}T("../utils").inherits(v,A),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},j.exports=v},{"../utils":32,"./ArrayReader":17}],22:[function(T,j,N){var A=T("../utils"),v=T("../support"),e=T("./ArrayReader"),u=T("./StringReader"),r=T("./NodeBufferReader"),m=T("./Uint8ArrayReader");j.exports=function(p){var a=A.getTypeOf(p);return A.checkSupport(a),a!=="string"||v.uint8array?a==="nodebuffer"?new r(p):v.uint8array?new m(A.transformTo("uint8array",p)):new e(A.transformTo("array",p)):new u(p)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(T,j,N){N.LOCAL_FILE_HEADER="PK",N.CENTRAL_FILE_HEADER="PK",N.CENTRAL_DIRECTORY_END="PK",N.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",N.ZIP64_CENTRAL_DIRECTORY_END="PK",N.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(T,j,N){var A=T("./GenericWorker"),v=T("../utils");function e(u){A.call(this,"ConvertWorker to "+u),this.destType=u}v.inherits(e,A),e.prototype.processChunk=function(u){this.push({data:v.transformTo(this.destType,u.data),meta:u.meta})},j.exports=e},{"../utils":32,"./GenericWorker":28}],25:[function(T,j,N){var A=T("./GenericWorker"),v=T("../crc32");function e(){A.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}T("../utils").inherits(e,A),e.prototype.processChunk=function(u){this.streamInfo.crc32=v(u.data,this.streamInfo.crc32||0),this.push(u)},j.exports=e},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(T,j,N){var A=T("../utils"),v=T("./GenericWorker");function e(u){v.call(this,"DataLengthProbe for "+u),this.propName=u,this.withStreamInfo(u,0)}A.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)},j.exports=e},{"../utils":32,"./GenericWorker":28}],27:[function(T,j,N){var A=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=A.getTypeOf(m),r.isPaused||r._tickAndRepeat()},function(m){r.error(m)})}A.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,A.delay(this._tickAndRepeat,[],this)),!0)},e.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(A.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}})},j.exports=e},{"../utils":32,"./GenericWorker":28}],28:[function(T,j,N){function A(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}A.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}},j.exports=A},{}],29:[function(T,j,N){var A=T("../utils"),v=T("./ConvertWorker"),e=T("./GenericWorker"),u=T("../base64"),r=T("../support"),m=T("../external"),p=null;if(r.nodestream)try{p=T("../nodejs/NodejsStreamOutputAdapter")}catch{}function a(y,h){return new m.Promise(function(d,f){var g=[],x=y._internalType,P=y._outputType,n=y._mimeType;y.on("data",function(o,t){g.push(o),h&&h(t)}).on("error",function(o){g=[],f(o)}).on("end",function(){try{var o=function(t,l,b){switch(t){case"blob":return A.newBlob(A.transformTo("arraybuffer",l),b);case"base64":return u.encode(l);default:return A.transformTo(t,l)}}(P,function(t,l){var b,k=0,E=null,_=0;for(b=0;b"u")N.blob=!1;else{var A=new ArrayBuffer(0);try{N.blob=new Blob([A],{type:"application/zip"}).size===0}catch{try{var v=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);v.append(A),N.blob=v.getBlob("application/zip").size===0}catch{N.blob=!1}}}try{N.nodestream=!!T("readable-stream").Readable}catch{N.nodestream=!1}},{"readable-stream":16}],31:[function(T,j,N){for(var A=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 p(){u.call(this,"utf-8 decode"),this.leftOver=null}function a(){u.call(this,"utf-8 encode")}N.utf8encode=function(i){return v.nodebuffer?e.newBufferFrom(i,"utf-8"):function(y){var h,d,f,g,x,P=y.length,n=0;for(g=0;g>>6:(d<65536?h[x++]=224|d>>>12:(h[x++]=240|d>>>18,h[x++]=128|d>>>12&63),h[x++]=128|d>>>6&63),h[x++]=128|63&d);return h}(i)},N.utf8decode=function(i){return v.nodebuffer?A.transformTo("nodebuffer",i).toString("utf-8"):function(y){var h,d,f,g,x=y.length,P=new Array(2*x);for(h=d=0;h>10&1023,P[d++]=56320|1023&f)}return P.length!==d&&(P.subarray?P=P.subarray(0,d):P.length=d),A.applyFromCharCode(P)}(i=A.transformTo(v.uint8array?"uint8array":"array",i))},A.inherits(p,u),p.prototype.processChunk=function(i){var y=A.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,x){var P;for((x=x||g.length)>g.length&&(x=g.length),P=x-1;0<=P&&(192&g[P])==128;)P--;return P<0||P===0?x:P+r[g[P]]>x?P:x}(y),f=y;d!==y.length&&(v.uint8array?(f=y.subarray(0,d),this.leftOver=y.subarray(d,y.length)):(f=y.slice(0,d),this.leftOver=y.slice(d,y.length))),this.push({data:N.utf8decode(f),meta:i.meta})},p.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:N.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},N.Utf8DecodeWorker=p,A.inherits(a,u),a.prototype.processChunk=function(i){this.push({data:N.utf8encode(i.data),meta:i.meta})},N.Utf8EncodeWorker=a},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(T,j,N){var A=T("./support"),v=T("./base64"),e=T("./nodejsUtils"),u=T("./external");function r(h){return h}function m(h,d){for(var f=0;f>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=A(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,f=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},N.buf2binstring=function(p){return m(p,p.length)},N.binstring2buf=function(p){for(var a=new A.Buf8(p.length),i=0,y=a.length;i>10&1023,g[y++]=56320|1023&h)}return m(g,y)},N.utf8border=function(p,a){var i;for((a=a||p.length)>p.length&&(a=p.length),i=a-1;0<=i&&(192&p[i])==128;)i--;return i<0||i===0?a:i+u[p[i]]>a?i:a}},{"./common":41}],43:[function(T,j,N){j.exports=function(A,v,e,u){for(var r=65535&A|0,m=A>>>16&65535|0,p=0;e!==0;){for(e-=p=2e3>>1:v>>>1;e[u]=v}return e}();j.exports=function(v,e,u,r){var m=A,p=r+u;v^=-1;for(var a=r;a>>8^m[255&(v^e[a])];return-1^v}},{}],46:[function(T,j,N){var A,v=T("../utils/common"),e=T("./trees"),u=T("./adler32"),r=T("./crc32"),m=T("./messages"),p=0,a=4,i=0,y=-2,h=-1,d=4,f=2,g=8,x=9,P=286,n=30,o=19,t=2*P+1,l=15,b=3,k=258,E=k+b+1,_=42,C=113,s=1,R=2,V=3,M=4;function K(c,F){return c.msg=m[F],F}function W(c){return(c<<1)-(4c.avail_out&&(I=c.avail_out),I!==0&&(v.arraySet(c.output,F.pending_buf,F.pending_out,I,c.next_out),c.next_out+=I,F.pending_out+=I,c.total_out+=I,c.avail_out-=I,F.pending-=I,F.pending===0&&(F.pending_out=0))}function O(c,F){e._tr_flush_block(c,0<=c.block_start?c.block_start:-1,c.strstart-c.block_start,F),c.block_start=c.strstart,z(c.strm)}function Y(c,F){c.pending_buf[c.pending++]=F}function X(c,F){c.pending_buf[c.pending++]=F>>>8&255,c.pending_buf[c.pending++]=255&F}function Z(c,F){var I,S,w=c.max_chain_length,D=c.strstart,L=c.prev_length,U=c.nice_match,B=c.strstart>c.w_size-E?c.strstart-(c.w_size-E):0,H=c.window,G=c.w_mask,$=c.prev,q=c.strstart+k,ae=H[D+L-1],ee=H[D+L];c.prev_length>=c.good_match&&(w>>=2),U>c.lookahead&&(U=c.lookahead);do if(H[(I=F)+L]===ee&&H[I+L-1]===ae&&H[I]===H[D]&&H[++I]===H[D+1]){D+=2,I++;do;while(H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&DB&&--w!=0);return L<=c.lookahead?L:c.lookahead}function ne(c){var F,I,S,w,D,L,U,B,H,G,$=c.w_size;do{if(w=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-=$,F=I=c.hash_size;S=c.head[--F],c.head[F]=$<=S?S-$:0,--I;);for(F=I=$;S=c.prev[--F],c.prev[F]=$<=S?S-$:0,--I;);w+=$}if(c.strm.avail_in===0)break;if(L=c.strm,U=c.window,B=c.strstart+c.lookahead,H=w,G=void 0,G=L.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(S=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(w=c.strstart+c.lookahead-b,S=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<=w&&(c.ins_h=(c.ins_h<c.pending_buf_size-5&&(I=c.pending_buf_size-5);;){if(c.lookahead<=1){if(ne(c),c.lookahead===0&&F===p)return s;if(c.lookahead===0)break}c.strstart+=c.lookahead,c.lookahead=0;var S=c.block_start+I;if((c.strstart===0||c.strstart>=S)&&(c.lookahead=c.strstart-S,c.strstart=S,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 s}return c.insert=0,F===a?(O(c,!0),c.strm.avail_out===0?V:M):(c.strstart>c.block_start&&(O(c,!1),c.strm.avail_out),s)}),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)],N.deflateInit=function(c,F){return he(c,F,g,15,8,0)},N.deflateInit2=he,N.deflateReset=de,N.deflateResetKeep=se,N.deflateSetHeader=function(c,F){return c&&c.state?c.state.wrap!==2?y:(c.state.gzhead=F,i):y},N.deflate=function(c,F){var I,S,w,D;if(!c||!c.state||5>8&255),Y(S,S.gzhead.time>>16&255),Y(S,S.gzhead.time>>24&255),Y(S,S.level===9?2:2<=S.strategy||S.level<2?4:0),Y(S,255&S.gzhead.os),S.gzhead.extra&&S.gzhead.extra.length&&(Y(S,255&S.gzhead.extra.length),Y(S,S.gzhead.extra.length>>8&255)),S.gzhead.hcrc&&(c.adler=r(c.adler,S.pending_buf,S.pending,0)),S.gzindex=0,S.status=69):(Y(S,0),Y(S,0),Y(S,0),Y(S,0),Y(S,0),Y(S,S.level===9?2:2<=S.strategy||S.level<2?4:0),Y(S,3),S.status=C);else{var L=g+(S.w_bits-8<<4)<<8;L|=(2<=S.strategy||S.level<2?0:S.level<6?1:S.level===6?2:3)<<6,S.strstart!==0&&(L|=32),L+=31-L%31,S.status=C,X(S,L),S.strstart!==0&&(X(S,c.adler>>>16),X(S,65535&c.adler)),c.adler=1}if(S.status===69)if(S.gzhead.extra){for(w=S.pending;S.gzindex<(65535&S.gzhead.extra.length)&&(S.pending!==S.pending_buf_size||(S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),z(c),w=S.pending,S.pending!==S.pending_buf_size));)Y(S,255&S.gzhead.extra[S.gzindex]),S.gzindex++;S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),S.gzindex===S.gzhead.extra.length&&(S.gzindex=0,S.status=73)}else S.status=73;if(S.status===73)if(S.gzhead.name){w=S.pending;do{if(S.pending===S.pending_buf_size&&(S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),z(c),w=S.pending,S.pending===S.pending_buf_size)){D=1;break}D=S.gzindexw&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),D===0&&(S.gzindex=0,S.status=91)}else S.status=91;if(S.status===91)if(S.gzhead.comment){w=S.pending;do{if(S.pending===S.pending_buf_size&&(S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),z(c),w=S.pending,S.pending===S.pending_buf_size)){D=1;break}D=S.gzindexw&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),D===0&&(S.status=103)}else S.status=103;if(S.status===103&&(S.gzhead.hcrc?(S.pending+2>S.pending_buf_size&&z(c),S.pending+2<=S.pending_buf_size&&(Y(S,255&c.adler),Y(S,c.adler>>8&255),c.adler=0,S.status=C)):S.status=C),S.pending!==0){if(z(c),c.avail_out===0)return S.last_flush=-1,i}else if(c.avail_in===0&&W(F)<=W(I)&&F!==a)return K(c,-5);if(S.status===666&&c.avail_in!==0)return K(c,-5);if(c.avail_in!==0||S.lookahead!==0||F!==p&&S.status!==666){var U=S.strategy===2?function(B,H){for(var G;;){if(B.lookahead===0&&(ne(B),B.lookahead===0)){if(H===p)return s;break}if(B.match_length=0,G=e._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++,G&&(O(B,!1),B.strm.avail_out===0))return s}return B.insert=0,H===a?(O(B,!0),B.strm.avail_out===0?V:M):B.last_lit&&(O(B,!1),B.strm.avail_out===0)?s:R}(S,F):S.strategy===3?function(B,H){for(var G,$,q,ae,ee=B.window;;){if(B.lookahead<=k){if(ne(B),B.lookahead<=k&&H===p)return s;if(B.lookahead===0)break}if(B.match_length=0,B.lookahead>=b&&0B.lookahead&&(B.match_length=B.lookahead)}if(B.match_length>=b?(G=e._tr_tally(B,1,B.match_length-b),B.lookahead-=B.match_length,B.strstart+=B.match_length,B.match_length=0):(G=e._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++),G&&(O(B,!1),B.strm.avail_out===0))return s}return B.insert=0,H===a?(O(B,!0),B.strm.avail_out===0?V:M):B.last_lit&&(O(B,!1),B.strm.avail_out===0)?s:R}(S,F):A[S.level].func(S,F);if(U!==V&&U!==M||(S.status=666),U===s||U===V)return c.avail_out===0&&(S.last_flush=-1),i;if(U===R&&(F===1?e._tr_align(S):F!==5&&(e._tr_stored_block(S,0,0,!1),F===3&&(J(S.head),S.lookahead===0&&(S.strstart=0,S.block_start=0,S.insert=0))),z(c),c.avail_out===0))return S.last_flush=-1,i}return F!==a?i:S.wrap<=0?1:(S.wrap===2?(Y(S,255&c.adler),Y(S,c.adler>>8&255),Y(S,c.adler>>16&255),Y(S,c.adler>>24&255),Y(S,255&c.total_in),Y(S,c.total_in>>8&255),Y(S,c.total_in>>16&255),Y(S,c.total_in>>24&255)):(X(S,c.adler>>>16),X(S,65535&c.adler)),z(c),0=I.w_size&&(D===0&&(J(I.head),I.strstart=0,I.block_start=0,I.insert=0),H=new v.Buf8(I.w_size),v.arraySet(H,F,G-I.w_size,I.w_size,0),F=H,G=I.w_size),L=c.avail_in,U=c.next_in,B=c.input,c.avail_in=G,c.next_in=0,c.input=F,ne(I);I.lookahead>=b;){for(S=I.strstart,w=I.lookahead-(b-1);I.ins_h=(I.ins_h<>>=b=l>>>24,x-=b,(b=l>>>16&255)===0)R[m++]=65535&l;else{if(!(16&b)){if(!(64&b)){l=P[(65535&l)+(g&(1<>>=b,x-=b),x<15&&(g+=s[u++]<>>=b=l>>>24,x-=b,!(16&(b=l>>>16&255))){if(!(64&b)){l=n[(65535&l)+(g&(1<>>=b,x-=b,(b=m-p)>3,g&=(1<<(x-=k<<3))-1,A.next_in=u,A.next_out=m,A.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 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 x(_){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 A.Buf32(h),C.distcode=C.distdyn=new A.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,x(_)):i}function n(_,C){var s,R;return _&&_.state?(R=_.state,C<0?(s=0,C=-C):(s=1+(C>>4),C<48&&(C&=15)),C&&(C<8||15=M.wsize?(A.arraySet(M.window,C,s-M.wsize,M.wsize,0),M.wnext=0,M.whave=M.wsize):(R<(V=M.wsize-M.wnext)&&(V=R),A.arraySet(M.window,C,s-R,V,M.wnext),(R-=V)?(A.arraySet(M.window,C,s-R,R,0),M.wnext=R,M.whave=M.wsize):(M.wnext+=V,M.wnext===M.wsize&&(M.wnext=0),M.whave>>8&255,s.check=e(s.check,D,2,0),O=z=0,s.mode=2;break}if(s.flags=0,s.head&&(s.head.done=!1),!(1&s.wrap)||(((255&z)<<8)+(z>>8))%31){_.msg="incorrect header check",s.mode=30;break}if((15&z)!=8){_.msg="unknown compression method",s.mode=30;break}if(O-=4,c=8+(15&(z>>>=4)),s.wbits===0)s.wbits=c;else if(c>s.wbits){_.msg="invalid window size",s.mode=30;break}s.dmax=1<>8&1),512&s.flags&&(D[0]=255&z,D[1]=z>>>8&255,s.check=e(s.check,D,2,0)),O=z=0,s.mode=3;case 3:for(;O<32;){if(W===0)break e;W--,z+=R[M++]<>>8&255,D[2]=z>>>16&255,D[3]=z>>>24&255,s.check=e(s.check,D,4,0)),O=z=0,s.mode=4;case 4:for(;O<16;){if(W===0)break e;W--,z+=R[M++]<>8),512&s.flags&&(D[0]=255&z,D[1]=z>>>8&255,s.check=e(s.check,D,2,0)),O=z=0,s.mode=5;case 5:if(1024&s.flags){for(;O<16;){if(W===0)break e;W--,z+=R[M++]<>>8&255,s.check=e(s.check,D,2,0)),O=z=0}else s.head&&(s.head.extra=null);s.mode=6;case 6:if(1024&s.flags&&(W<(Z=s.length)&&(Z=W),Z&&(s.head&&(c=s.head.extra_len-s.length,s.head.extra||(s.head.extra=new Array(s.head.extra_len)),A.arraySet(s.head.extra,R,M,Z,c)),512&s.flags&&(s.check=e(s.check,R,Z,M)),W-=Z,M+=Z,s.length-=Z),s.length))break e;s.length=0,s.mode=7;case 7:if(2048&s.flags){if(W===0)break e;for(Z=0;c=R[M+Z++],s.head&&c&&s.length<65536&&(s.head.name+=String.fromCharCode(c)),c&&Z>9&1,s.head.done=!0),_.adler=s.check=0,s.mode=12;break;case 10:for(;O<32;){if(W===0)break e;W--,z+=R[M++]<>>=7&O,O-=7&O,s.mode=27;break}for(;O<3;){if(W===0)break e;W--,z+=R[M++]<>>=1)){case 0:s.mode=14;break;case 1:if(k(s),s.mode=20,C!==6)break;z>>>=2,O-=2;break e;case 2:s.mode=17;break;case 3:_.msg="invalid block type",s.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[M++]<>>16^65535)){_.msg="invalid stored block lengths",s.mode=30;break}if(s.length=65535&z,O=z=0,s.mode=15,C===6)break e;case 15:s.mode=16;case 16:if(Z=s.length){if(W>>=5,O-=5,s.ndist=1+(31&z),z>>>=5,O-=5,s.ncode=4+(15&z),z>>>=4,O-=4,286>>=3,O-=3}for(;s.have<19;)s.lens[L[s.have++]]=0;if(s.lencode=s.lendyn,s.lenbits=7,I={bits:s.lenbits},F=r(0,s.lens,0,19,s.lencode,0,s.work,I),s.lenbits=I.bits,F){_.msg="invalid code lengths set",s.mode=30;break}s.have=0,s.mode=19;case 19:for(;s.have>>16&255,oe=65535&w,!((Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>>=Q,O-=Q,s.lens[s.have++]=oe;else{if(oe===16){for(S=Q+2;O>>=Q,O-=Q,s.have===0){_.msg="invalid bit length repeat",s.mode=30;break}c=s.lens[s.have-1],Z=3+(3&z),z>>>=2,O-=2}else if(oe===17){for(S=Q+3;O>>=Q)),z>>>=3,O-=3}else{for(S=Q+7;O>>=Q)),z>>>=7,O-=7}if(s.have+Z>s.nlen+s.ndist){_.msg="invalid bit length repeat",s.mode=30;break}for(;Z--;)s.lens[s.have++]=c}}if(s.mode===30)break;if(s.lens[256]===0){_.msg="invalid code -- missing end-of-block",s.mode=30;break}if(s.lenbits=9,I={bits:s.lenbits},F=r(m,s.lens,0,s.nlen,s.lencode,0,s.work,I),s.lenbits=I.bits,F){_.msg="invalid literal/lengths set",s.mode=30;break}if(s.distbits=6,s.distcode=s.distdyn,I={bits:s.distbits},F=r(p,s.lens,s.nlen,s.ndist,s.distcode,0,s.work,I),s.distbits=I.bits,F){_.msg="invalid distances set",s.mode=30;break}if(s.mode=20,C===6)break e;case 20:s.mode=21;case 21:if(6<=W&&258<=J){_.next_out=K,_.avail_out=J,_.next_in=M,_.avail_in=W,s.hold=z,s.bits=O,u(_,X),K=_.next_out,V=_.output,J=_.avail_out,M=_.next_in,R=_.input,W=_.avail_in,z=s.hold,O=s.bits,s.mode===12&&(s.back=-1);break}for(s.back=0;te=(w=s.lencode[z&(1<>>16&255,oe=65535&w,!((Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>se)])>>>16&255,oe=65535&w,!(se+(Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>>=se,O-=se,s.back+=se}if(z>>>=Q,O-=Q,s.back+=Q,s.length=oe,te===0){s.mode=26;break}if(32&te){s.back=-1,s.mode=12;break}if(64&te){_.msg="invalid literal/length code",s.mode=30;break}s.extra=15&te,s.mode=22;case 22:if(s.extra){for(S=s.extra;O>>=s.extra,O-=s.extra,s.back+=s.extra}s.was=s.length,s.mode=23;case 23:for(;te=(w=s.distcode[z&(1<>>16&255,oe=65535&w,!((Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>se)])>>>16&255,oe=65535&w,!(se+(Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>>=se,O-=se,s.back+=se}if(z>>>=Q,O-=Q,s.back+=Q,64&te){_.msg="invalid distance code",s.mode=30;break}s.offset=oe,s.extra=15&te,s.mode=24;case 24:if(s.extra){for(S=s.extra;O>>=s.extra,O-=s.extra,s.back+=s.extra}if(s.offset>s.dmax){_.msg="invalid distance too far back",s.mode=30;break}s.mode=25;case 25:if(J===0)break e;if(Z=X-J,s.offset>Z){if((Z=s.offset-Z)>s.whave&&s.sane){_.msg="invalid distance too far back",s.mode=30;break}ne=Z>s.wnext?(Z-=s.wnext,s.wsize-Z):s.wnext-Z,Z>s.length&&(Z=s.length),le=s.window}else le=V,ne=K-s.offset,Z=s.length;for(Jt?(b=ne[le+d[C]],O[Y+d[C]]):(b=96,0),g=1<<_-K,s=x=1<>K)+(x-=g)]=l<<24|b<<16|k|0,x!==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;_=p[a+d[C]]}if(V<_&&(z&n)!==P){for(K===0&&(K=V),o+=s,W=1<<(M=_-K);M+K>>7)]}function Y(w,D){w.pending_buf[w.pending++]=255&D,w.pending_buf[w.pending++]=D>>>8&255}function X(w,D,L){w.bi_valid>f-L?(w.bi_buf|=D<>f-w.bi_valid,w.bi_valid+=L-f):(w.bi_buf|=D<>>=1,L<<=1,0<--D;);return L>>>1}function le(w,D,L){var U,B,H=new Array(d+1),G=0;for(U=1;U<=d;U++)H[U]=G=G+L[U-1]<<1;for(B=0;B<=D;B++){var $=w[2*B+1];$!==0&&(w[2*B]=ne(H[$]++,$))}}function Q(w){var D;for(D=0;D>1;1<=L;L--)se(w,H,L);for(B=q;L=w.heap[1],w.heap[1]=w.heap[w.heap_len--],se(w,H,1),U=w.heap[1],w.heap[--w.heap_max]=L,w.heap[--w.heap_max]=U,H[2*B]=H[2*L]+H[2*U],w.depth[B]=(w.depth[L]>=w.depth[U]?w.depth[L]:w.depth[U])+1,H[2*L+1]=H[2*U+1]=B,w.heap[1]=B++,se(w,H,1),2<=w.heap_len;);w.heap[--w.heap_max]=w.heap[1],function(ee,ue){var me,fe,ge,ie,ye,xe,pe=ue.dyn_tree,Se=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(pe[2*ee.heap[ee.heap_max]+1]=0,me=ee.heap_max+1;me>=7;B>>=1)if(1&ae&&$.dyn_ltree[2*q]!==0)return v;if($.dyn_ltree[18]!==0||$.dyn_ltree[20]!==0||$.dyn_ltree[26]!==0)return e;for(q=32;q>>3,(H=w.static_len+3+7>>>3)<=B&&(B=H)):B=H=L+5,L+4<=B&&D!==-1?S(w,D,L,U):w.strategy===4||H===B?(X(w,2+(U?1:0),3),de(w,E,_)):(X(w,4+(U?1:0),3),function($,q,ae,ee){var ue;for(X($,q-257,5),X($,ae-1,5),X($,ee-4,4),ue=0;ue>>8&255,w.pending_buf[w.d_buf+2*w.last_lit+1]=255&D,w.pending_buf[w.l_buf+w.last_lit]=255&L,w.last_lit++,D===0?w.dyn_ltree[2*L]++:(w.matches++,D--,w.dyn_ltree[2*(s[L]+p+1)]++,w.dyn_dtree[2*O(D)]++),w.last_lit===w.lit_bufsize-1},N._tr_align=function(w){X(w,2,3),Z(w,x,E),function(D){D.bi_valid===16?(Y(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)}(w)}},{"../utils/common":41}],53:[function(T,j,N){j.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,j,N){(function(A){(function(v,e){if(!v.setImmediate){var u,r,m,p,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}}()?(p="setImmediate$"+Math.random()+"$",v.addEventListener?v.addEventListener("message",x,!1):v.attachEvent("onmessage",x),function(P){v.postMessage(p+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),o=0;o"u"?A===void 0?this:A:self)}).call(this,typeof _e<"u"?_e:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(Be)),we}(function(re,ce){(function(T,j){re.exports=j(Oe())})(globalThis,T=>(()=>{var j={438:(v,e,u)=>{u.r(e),u.d(e,{default:()=>g});var r=u(537),m=u.n(r),p=u(645),a=u.n(p),i=u(806),y=u.n(i),h=new URL(u(583),u.b),d=a()(m()),f=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(${f})}`,"",{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="",p=r[5]!==void 0;return r[4]&&(m+="@supports (".concat(r[4],") {")),r[2]&&(m+="@media ".concat(r[2]," {")),p&&(m+="@layer".concat(r[5].length>0?" ".concat(r[5]):""," {")),m+=e(r),p&&(m+="}"),r[2]&&(m+="}"),r[4]&&(m+="}"),m}).join("")},u.i=function(r,m,p,a,i){typeof r=="string"&&(r=[[null,r,void 0]]);var y={};if(p)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)))),p="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(m),a="/*# ".concat(p," */");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),p=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 f=await r.loadAsync(h);return new i(f,d)}save(h="blob"){return this._zip.generateAsync({type:h})}load(h,d="string"){var f,g;return(g=(f=this.get(h))===null||f===void 0?void 0:f.async(d))!==null&&g!==void 0?g:Promise.resolve(null)}async loadRelationships(h=null){let d="_rels/.rels";if(h!=null){const[g,x]=(0,p.splitPath)(h);d=`${g}_rels/${x}.rels`}const f=await this.load(d);return f?(0,a.parseRelationships)(this.parseXmlDocument(f).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,p){this._package=m,this.path=p}async load(){this.rels=await this._package.loadRelationships(this.path);const m=await this._package.load(this.path),p=this._package.parseXmlDocument(m);this._package.options.keepOrigin&&(this._xmlDocument=p),this.parseXml(p.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(p=>({id:m.attr(p,"Id"),type:m.attr(p,"Type"),target:m.attr(p,"Target"),targetMode:m.attr(p,"TargetMode")}))}},168:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DocumentParser=e.autos=void 0;const r=u(120),m=u(109),p=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 f=[],g={oMath:r.DomType.MmlMath,oMathPara:r.DomType.MmlMathParagraph,f:r.DomType.MmlFraction,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,sup:r.DomType.MmlSuperArgument,sub:r.DomType.MmlSubArgument,d:r.DomType.MmlDelimiter,nary:r.DomType.MmlNary};e.DocumentParser=class{constructor(o){this.options=Object.assign({ignoreWidth:!1,debug:!1},o)}parseNotes(o,t,l){var b=[];for(let k of a.default.elements(o,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(o){var t=a.default.element(o,"body"),l=a.default.element(o,"background"),b=a.default.element(t,"sectPr");return{type:r.DomType.Document,children:this.parseBodyElements(t),props:b?(0,p.parseSectionProperties)(b,a.default):{},cssStyle:l?this.parseBackground(l):{}}}parseBackground(o){var t={},l=P.colorAttr(o,"color");return l&&(t["background-color"]=l),t}parseBodyElements(o){var t=[];for(let l of a.default.elements(o))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(o){var t=[];return P.foreach(o,l=>{switch(l.localName){case"style":t.push(this.parseStyle(l));break;case"docDefaults":t.push(this.parseDefaultStyles(l))}}),t}parseDefaultStyles(o){var t={id:null,name:null,target:null,basedOn:null,styles:[]};return P.foreach(o,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(o){var t={id:a.default.attr(o,"styleId"),isDefault:a.default.boolAttr(o,"default"),name:null,target:null,basedOn:null,styles:[],linked:null};switch(a.default.attr(o,"type")){case"paragraph":t.target="p";break;case"table":t.target="table";break;case"character":t.target="span"}return P.foreach(o,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(o){var t=[],l=a.default.attr(o,"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(o,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(o){var t=[],l={},b=[];return P.foreach(o,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(o){var t=a.default.element(o,"pict"),l=t&&a.default.element(t,"shape"),b=l&&a.default.element(l,"imagedata");return b?{id:a.default.intAttr(o,"numPicBulletId"),src:a.default.attr(b,"id"),style:a.default.attr(l,"style")}:null}parseAbstractNumbering(o,t){var l=[],b=a.default.attr(o,"abstractNumId");return P.foreach(o,k=>{k.localName==="lvl"&&l.push(this.parseNumberingLevel(b,k,t))}),l}parseNumberingLevel(o,t,l){var b={id:o,level:a.default.intAttr(t,"ilvl"),pStyleName:void 0,pStyle:{},rStyle:{},suff:"tab"};return P.foreach(t,k=>{switch(k.localName){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(o,t){const l=a.default.element(o,"sdtContent");return l?t(l):[]}parseInserted(o,t){var l,b;return{type:r.DomType.Inserted,children:(b=(l=t(o))===null||l===void 0?void 0:l.children)!==null&&b!==void 0?b:[]}}parseDeleted(o,t){var l,b;return{type:r.DomType.Deleted,children:(b=(l=t(o))===null||l===void 0?void 0:l.children)!==null&&b!==void 0?b:[]}}parseParagraph(o){var t={type:r.DomType.Paragraph,children:[]};for(let l of a.default.elements(o))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(o,t){this.parseDefaultProperties(o,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(o,t){a.default.attr(o,"dropCap")=="drop"&&(t.cssStyle.float="left")}parseHyperlink(o,t){var l={type:r.DomType.Hyperlink,parent:t,children:[]},b=a.default.attr(o,"anchor"),k=a.default.attr(o,"id");return b&&(l.href="#"+b),k&&(l.id=k),P.foreach(o,E=>{E.localName==="r"&&l.children.push(this.parseRun(E,l))}),l}parseRun(o,t){var l={type:r.DomType.Run,parent:t,children:[]};return P.foreach(o,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(o){const t=`${o.localName}Pr`,l={type:g[o.localName],children:[]};for(const k of a.default.elements(o))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(o){const t={};for(const l of a.default.elements(o))switch(l.localName){case"chr":t.char=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(o,t){this.parseDefaultProperties(o,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(o){const t={type:r.DomType.VmlPicture,children:[]};for(const l of a.default.elements(o)){const b=(0,d.parseVmlElement)(l);b&&t.children.push(b)}return t}checkAlternateContent(o){var t;if(o.localName!="AlternateContent")return o;var l=a.default.element(o,"Choice");if(l){var b=a.default.attr(l,"Requires"),k=o.lookupNamespaceURI(b);if(f.includes(k))return l.firstElementChild}return(t=a.default.element(o,"Fallback"))===null||t===void 0?void 0:t.firstElementChild}parseDrawing(o){for(var t of a.default.elements(o))switch(t.localName){case"inline":case"anchor":return this.parseDrawingWrapper(t)}}parseDrawingWrapper(o){var t,l={type:r.DomType.Drawing,children:[],cssStyle:{}},b=o.localName=="anchor";let k=null,E=a.default.boolAttr(o,"simplePos"),_={relative:"page",align:"left",offset:"0"},C={relative:"page",align:"top",offset:"0"};for(var s of a.default.elements(o))switch(s.localName){case"simplePos":E&&(_.offset=a.default.lengthAttr(s,"x",h.LengthUsage.Emu),C.offset=a.default.lengthAttr(s,"y",h.LengthUsage.Emu));break;case"extent":l.cssStyle.width=a.default.lengthAttr(s,"cx",h.LengthUsage.Emu),l.cssStyle.height=a.default.lengthAttr(s,"cy",h.LengthUsage.Emu);break;case"positionH":case"positionV":if(!E){let K=s.localName=="positionH"?_:C;var R=a.default.element(s,"align"),V=a.default.element(s,"posOffset");K.relative=(t=a.default.attr(s,"relativeFrom"))!==null&&t!==void 0?t:K.relative,R&&(K.align=R.textContent),V&&(K.offset=P.sizeValue(V,h.LengthUsage.Emu))}break;case"wrapTopAndBottom":k="wrapTopAndBottom";break;case"wrapNone":k="wrapNone";break;case"graphic":var M=this.parseGraphic(s);M&&l.children.push(M)}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(o){var t=a.default.element(o,"graphicData");for(let l of a.default.elements(t))if(l.localName==="pic")return this.parsePicture(l);return null}parsePicture(o){var t={type:r.DomType.Image,src:"",cssStyle:{}},l=a.default.element(o,"blipFill"),b=a.default.element(l,"blip");t.src=a.default.attr(b,"embed");var k=a.default.element(o,"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(o){var t={type:r.DomType.Table,children:[]};return P.foreach(o,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(o){var t=[];return P.foreach(o,l=>{l.localName==="gridCol"&&t.push({width:a.default.lengthAttr(l,"w")})}),t}parseTableProperties(o,t){switch(t.cssStyle={},t.cellStyle={},this.parseDefaultProperties(o,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(o,t){var l=a.default.lengthAttr(o,"topFromText"),b=a.default.lengthAttr(o,"bottomFromText"),k=a.default.lengthAttr(o,"rightFromText"),E=a.default.lengthAttr(o,"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(o){var t={type:r.DomType.Row,children:[]};return P.foreach(o,l=>{switch(l.localName){case"tc":t.children.push(this.parseTableCell(l));break;case"trPr":this.parseTableRowProperties(l,t)}}),t}parseTableRowProperties(o,t){t.cssStyle=this.parseDefaultProperties(o,{},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(o){var t={type:r.DomType.Cell,children:[]};return P.foreach(o,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(o,t){t.cssStyle=this.parseDefaultProperties(o,{},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(o,t=null,l=null,b=null){return t=t||{},P.foreach(o,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":o.localName=="pPr"&&this.parseSpacing(k,t);break;case"wordWrap":a.default.boolAttr(k,"val")&&(t["overflow-wrap"]="break-word");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"lang":case"widowControl":case"bidi":case"rtl":case"noProof":break;default:this.options.debug&&console.warn(`DOCX: Unknown document element: ${o.localName}.${k.localName}`)}}),t}parseUnderline(o,t){var l=a.default.attr(o,"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(o,"color");b&&(t["text-decoration-color"]=b)}}parseFont(o,t){var l=[a.default.attr(o,"ascii"),n.themeValue(o,"asciiTheme")].filter(b=>b).join(", ");l.length>0&&(t["font-family"]=l)}parseIndentation(o,t){var l=a.default.lengthAttr(o,"firstLine"),b=a.default.lengthAttr(o,"hanging"),k=a.default.lengthAttr(o,"left"),E=a.default.lengthAttr(o,"start"),_=a.default.lengthAttr(o,"right"),C=a.default.lengthAttr(o,"end");l&&(t["text-indent"]=l),b&&(t["text-indent"]=`-${b}`),(k||E)&&(t["margin-left"]=k||E),(_||C)&&(t["margin-right"]=_||C)}parseSpacing(o,t){var l=a.default.lengthAttr(o,"before"),b=a.default.lengthAttr(o,"after"),k=a.default.intAttr(o,"line",null),E=a.default.attr(o,"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(o,t){P.foreach(o,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(o,t){a.default.attr(o,"hRule"),t.height=a.default.lengthAttr(o,"val")}parseBorderProperties(o,t){P.foreach(o,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 x=["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 p extends r.Part{parseXml(i){this.props=(0,m.parseCoreProps)(i,this._package.xmlParser)}}e.CorePropsPart=p},614:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseCoreProps=void 0,e.parseCoreProps=function(u,r){const m={};for(let p of r.elements(u))switch(p.localName){case"title":m.title=p.textContent;break;case"description":m.description=p.textContent;break;case"subject":m.subject=p.textContent;break;case"creator":m.creator=p.textContent;break;case"keywords":m.keywords=p.textContent;break;case"language":m.language=p.textContent;break;case"lastModifiedBy":m.lastModifiedBy=p.textContent;break;case"revision":p.textContent&&(m.revision=parseInt(p.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 p extends r.Part{parseXml(i){this.props=(0,m.parseCustomProps)(i,this._package.xmlParser)}}e.CustomPropsPart=p},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 p=m.firstChild;return{formatId:r.attr(m,"fmtid"),name:r.attr(m,"name"),type:p.nodeName,value:p.textContent}})}},665:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ExtendedPropsPart=void 0;const r=u(530),m=u(668);class p extends r.Part{parseXml(i){this.props=(0,m.parseExtendedProps)(i,this._package.xmlParser)}}e.ExtendedPropsPart=p},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 p={};for(let a of m.elements(r))switch(a.localName){case"Template":p.template=a.textContent;break;case"Pages":p.pages=u(a.textContent);break;case"Words":p.words=u(a.textContent);break;case"Characters":p.characters=u(a.textContent);break;case"Application":p.application=a.textContent;break;case"Lines":p.lines=u(a.textContent);break;case"Paragraphs":p.paragraphs=u(a.textContent);break;case"Company":p.company=a.textContent;break;case"AppVersion":p.appVersion=a.textContent}return p}},172:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseBookmarkEnd=e.parseBookmarkStart=void 0;const r=u(120);e.parseBookmarkStart=function(m,p){return{type:r.DomType.BookmarkStart,id:p.attr(m,"id"),name:p.attr(m,"name"),colFirst:p.intAttr(m,"colFirst"),colLast:p.intAttr(m,"colLast")}},e.parseBookmarkEnd=function(m,p){return{type:r.DomType.BookmarkEnd,id:p.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(p,a){return{type:a.attr(p,"val"),color:a.attr(p,"color"),size:a.lengthAttr(p,"sz",r.LengthUsage.Border),offset:a.lengthAttr(p,"space",r.LengthUsage.Point),frame:a.boolAttr(p,"frame"),shadow:a.boolAttr(p,"shadow")}}e.parseBorder=m,e.parseBorders=function(p,a){var i={};for(let y of a.elements(p))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.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.MmlNumerator="mmlNumerator",r.MmlDenominator="mmlDenominator",r.MmlRadical="mmlRadical",r.MmlBase="mmlBase",r.MmlDegree="mmlDegree",r.MmlSuperscript="mmlSuperscript",r.MmlSubscript="mmlSubscript",r.MmlSubArgument="mmlSubArgument",r.MmlSuperArgument="mmlSuperArgument",r.MmlNary="mmlNary",r.MmlDelimiter="mmlDelimiter",r.MmlRun="mmlRun",r.VmlElement="vmlElement",r.Inserted="inserted",r.Deleted="deleted",r.DeletedText="deletedText"}(u||(e.DomType=u={}))},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),p=u(931),a=u(488);function i(d,f,g){if(d.namespaceURI!=r.ns.wordml)return!1;if((0,r.parseCommonProperty)(d,f,g))return!0;switch(d.localName){case"tabs":f.tabs=y(d,g);break;case"sectPr":f.sectionProps=(0,m.parseSectionProperties)(d,g);break;case"numPr":f.numbering=h(d,g);break;case"spacing":return f.lineSpacing=(0,p.parseLineSpacing)(d,g),!1;case"textAlignment":return f.textAlignment=g.attr(d,"val"),!1;case"keepNext":f.keepLines=g.boolAttr(d,"val",!0);break;case"keepNext":f.keepNext=g.boolAttr(d,"val",!0);break;case"pageBreakBefore":f.pageBreakBefore=g.boolAttr(d,"val",!0);break;case"outlineLvl":f.outlineLevel=g.intAttr(d,"val");break;case"pStyle":f.styleName=g.attr(d,"val");break;case"rPr":f.runProps=(0,a.parseRunProperties)(d,g);break;default:return!1}return!0}function y(d,f){return f.elements(d,"tab").map(g=>({position:f.lengthAttr(g,"pos"),leader:f.attr(g,"leader"),style:f.attr(g,"val")}))}function h(d,f){var g={};for(let x of f.elements(d))switch(x.localName){case"numId":g.id=f.attr(x,"val");break;case"ilvl":g.level=f.intAttr(x,"val")}return g}e.parseParagraphProperties=function(d,f){let g={};for(let x of f.elements(d))i(x,g,f);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(p,a,i){return!!(0,r.parseCommonProperty)(p,a,i)}e.parseRunProperties=function(p,a){let i={};for(let y of a.elements(p))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 p;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(f=>({width:d.lengthAttr(f,"w"),space:d.lengthAttr(f,"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"})(p||(e.SectionType=p={})),e.parseSectionProperties=function(h,d=r.default){var f,g,x={};for(let P of d.elements(h))switch(P.localName){case"pgSz":x.pageSize={width:d.lengthAttr(P,"w"),height:d.lengthAttr(P,"h"),orientation:d.attr(P,"orient")};break;case"type":x.type=d.attr(P,"val");break;case"pgMar":x.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":x.columns=a(P,d);break;case"headerReference":((f=x.headerRefs)!==null&&f!==void 0?f:x.headerRefs=[]).push(y(P,d));break;case"footerReference":((g=x.footerRefs)!==null&&g!==void 0?g:x.footerRefs=[]).push(y(P,d));break;case"titlePg":x.titlePage=d.boolAttr(P,"val",!0);break;case"pgBorders":x.pageBorders=(0,m.parseBorders)(P,d);break;case"pgNumType":x.pageNumber=i(P,d)}return x}},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),p=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),f=new p.HtmlRenderer(window.document),g=await r.WordDocument.load(a,new m.DocumentParser(d),d);return f.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 p extends r.Part{parseXml(i){this.fonts=(0,m.parseFonts)(i,this._package.xmlParser)}}e.FontTablePart=p},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(p,a){let i={name:a.attr(p,"name"),embedFontRefs:[]};for(let y of a.elements(p))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(p,a){return{id:a.attr(p,"id"),key:a.attr(p,"fontKey"),type:u[p.localName]}}e.parseFonts=function(p,a){return a.elements(p).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);e.WmlHeader=class{constructor(){this.type=r.DomType.Header,this.children=[],this.cssStyle={}}},e.WmlFooter=class{constructor(){this.type=r.DomType.Footer,this.children=[],this.cssStyle={}}}},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 p 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=p,e.HeaderPart=class extends p{createRootElement(){return new m.WmlHeader}},e.FooterPart=class extends p{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),p=u(630),a=u(438),i="http://www.w3.org/1998/Math/MathML";function y(n,o,t){return d(void 0,n,o,t)}function h(n,o,t){return d("http://www.w3.org/2000/svg",n,o,t)}function d(n,o,t,l){var b=n?document.createElementNS(n,o):document.createElement(o);return Object.assign(b,t),l&&g(b,l),b}function f(n){n.innerHTML=""}function g(n,o){o.forEach(t=>n.appendChild((0,m.isString)(t)?document.createTextNode(t):t))}function x(n){return y("style",{innerHTML:n})}function P(n,o){n.appendChild(document.createComment(o))}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,o,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,f(t=t||o),f(o),P(t,"docxjs library predefined styles"),t.appendChild(this.renderDefaultStyle()),!window.MathMLElement&&l.useMathMLPolyfill&&(P(t,"docxjs mathml polyfill styles"),t.appendChild(x(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?o.appendChild(this.renderWrapper(k)):g(o,k),this.refreshTabStops()}renderTheme(n,o){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,s]of Object.entries(E.colors))b[`--docx-${C}-color`]=`#${s}`;const _=this.styleToString(`.${this.className}`,b);o.appendChild(x(_))}renderFontTable(n,o){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(o,`docxjs ${t.name} font`);const E=this.styleToString("@font-face",k);o.appendChild(x(E)),this.refreshTabStops()})}processStyleName(n){return n?`${this.className}_${(0,m.escapeClassName)(n)}`:this.className}processStyles(n){const o=(0,m.keyBy)(n.filter(l=>l.id!=null),l=>l.id);for(const l of n.filter(b=>b.basedOn)){var t=o[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 o}prodessNumberings(n){var o;for(let t of n.filter(l=>l.pStyleName)){const l=this.findStyle(t.pStyleName);!((o=l==null?void 0:l.paragraphProps)===null||o===void 0)&&o.numbering&&(l.paragraphProps.numbering.level=t.level)}}processElement(n){if(n.children)for(var o of n.children)o.parent=n,o.type==r.DomType.Table?this.processTable(o):this.processElement(o)}processTable(n){for(var o of n.children)for(var t of o.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,o,t=null){if(!n)return o;for(var l of(o==null&&(o={}),t==null&&(t=Object.getOwnPropertyNames(n)),t))n.hasOwnProperty(l)&&!o.hasOwnProperty(l)&&(o[l]=n[l]);return o}createSection(n,o){var t=this.createElement("section",{className:n});return o&&(o.pageMargins&&(t.style.paddingLeft=o.pageMargins.left,t.style.paddingRight=o.pageMargins.right,t.style.paddingTop=o.pageMargins.top,t.style.paddingBottom=o.pageMargins.bottom),o.pageSize&&(this.options.ignoreWidth||(t.style.width=o.pageSize.width),this.options.ignoreHeight||(t.style.minHeight=o.pageSize.height)),o.columns&&o.columns.numberOfColumns&&(t.style.columnCount=`${o.columns.numberOfColumns}`,t.style.columnGap=o.columns.space,o.columns.separator&&(t.style.columnRule="1px solid black"))),t}renderSections(n){const o=[];this.processElement(n);const t=this.splitBySection(n.children);let l=null;for(let k=0,E=t.length;ks.type=="first"):null)!==null&&k!==void 0?k:t%2==1?n.find(s=>s.type=="even"):null)!==null&&E!==void 0?E:n.find(s=>s.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 o,t={sectProps:null,elements:[]},l=[t];for(let R of n){if(R.type==r.DomType.Paragraph){const V=this.findStyle(R.styleName);!((o=V==null?void 0:V.paragraphProps)===null||o===void 0)&&o.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(M=>{var K,W;return(E=(W=(K=M.children)===null||K===void 0?void 0:K.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 M=V.children[k],K=E=0;R--)l[R].sectProps==null?l[R].sectProps=s:s=l[R].sectProps;return l}renderWrapper(n){return this.createElement("div",{className:`${this.className}-wrapper`},n)}renderDefaultStyle(){var n=this.className;return x(` +.${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; } +section.${n} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; } +section.${n}>article { margin-bottom: auto; } +.${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,o){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 s=`${this.rootSelector} { ${_}: url(${C}) }`;o.appendChild(x(s))})}else if(b.levelText){let _=this.numberingCounter(b.id,b.level);b.level>0?t+=this.styleToString(`p.${this.numberingClass(b.id,b.level-1)}`,{"counter-reset":_}):l.push(_),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(" ")})),x(t)}renderStyles(n){var o,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 s of k){var _=`${(o=C.target)!==null&&o!==void 0?o:""}.${C.cssName}`;C.target!=s.target&&(_+=` ${s.target}`),b[C.target]==C&&(_=`.${this.className} ${C.target}, `+_),t+=this.styleToString(_,s.values)}}return x(t)}renderNotes(n,o,t){var l=n.map(k=>o[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.MmlNumerator:case r.DomType.MmlDenominator:return this.renderContainerNS(n,i,"mrow");case r.DomType.MmlRadical:return this.renderMmlRadical(n);case r.DomType.MmlDegree:return this.renderContainerNS(n,i,"mn");case r.DomType.MmlSuperscript:return this.renderContainerNS(n,i,"msup");case r.DomType.MmlSubscript:return this.renderContainerNS(n,i,"msub");case r.DomType.MmlBase:return this.renderContainerNS(n,i,"mrow");case r.DomType.MmlSuperArgument:case r.DomType.MmlSubArgument:return this.renderContainerNS(n,i,"mn");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.Inserted:return this.renderInserted(n);case r.DomType.Deleted:return this.renderDeleted(n)}return null}renderChildren(n,o){return this.renderElements(n.children,o)}renderElements(n,o){if(n==null)return null;var t=n.flatMap(l=>this.renderElement(l)).filter(l=>l!=null);return o&&g(o,t),t}renderContainer(n,o,t){return this.createElement(o,t,this.renderChildren(n))}renderContainerNS(n,o,t,l){return d(o,t,l,this.renderChildren(n))}renderParagraph(n){var o,t,l,b,k=this.createElement("p");const E=this.findStyle(n.styleName);(o=n.tabs)!==null&&o!==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,o){this.renderCommonProperties(n,o)}renderCommonProperties(n,o){o!=null&&(o.color&&(n.color=o.color),o.fontSize&&(n["font-size"]=o.fontSize))}renderHyperlink(n){var o=this.createElement("a");if(this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),n.href)o.href=n.href;else if(n.id){const t=this.document.documentPart.rels.find(l=>l.id==n.id&&l.targetMode==="External");o.href=t==null?void 0:t.target}return o}renderDrawing(n){var o=this.createElement("div");return o.style.display="inline-block",o.style.position="relative",o.style.textIndent="0px",this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),o}renderImage(n){let o=this.createElement("img");return this.renderStyleValues(n.cssStyle,o),this.document&&this.document.loadDocumentImage(n.src,this.currentPart).then(t=>{o.src=t}),o}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 o=this.createElement("span");return o.style.fontFamily=n.font,o.innerHTML=`&#x${n.char};`,o}renderFootnoteReference(n){var o=this.createElement("sup");return this.currentFootnoteIds.push(n.id),o.textContent=`${this.currentFootnoteIds.length}`,o}renderEndnoteReference(n){var o=this.createElement("sup");return this.currentEndnoteIds.push(n.id),o.textContent=`${this.currentEndnoteIds.length}`,o}renderTab(n){var o,t=this.createElement("span");if(t.innerHTML=" ",this.options.experimental){t.className=this.tabStopClass();var l=(o=function(b,k){for(var E=b.parent;E!=null&&E.type!=k;)E=E.parent;return E}(n,r.DomType.Paragraph))===null||o===void 0?void 0:o.tabs;this.currentTabs.push({stops:l,span:t})}return t}renderBookmarkStart(n){var o=this.createElement("span");return o.id=n.name,o}renderRun(n){if(n.fieldRun)return null;const o=this.createElement("span");if(n.id&&(o.id=n.id),this.renderClass(n,o),this.renderStyleValues(n.cssStyle,o),n.verticalAlign){const t=this.createElement(n.verticalAlign);this.renderChildren(n,t),o.appendChild(t)}else this.renderChildren(n,o);return o}renderTable(n){let o=this.createElement("table");return this.tableCellPositions.push(this.currentCellPosition),this.tableVerticalMerges.push(this.currentVerticalMerge),this.currentVerticalMerge={},this.currentCellPosition={col:0,row:0},n.columns&&o.appendChild(this.renderTableColumns(n.columns)),this.renderClass(n,o),this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),this.currentVerticalMerge=this.tableVerticalMerges.pop(),this.currentCellPosition=this.tableCellPositions.pop(),o}renderTableColumns(n){let o=this.createElement("colgroup");for(let t of n){let l=this.createElement("col");t.width&&(l.style.width=t.width),o.appendChild(l)}return o}renderTableRow(n){let o=this.createElement("tr");return this.currentCellPosition.col=0,this.renderClass(n,o),this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),this.currentCellPosition.row++,o}renderTableCell(n){let o=this.createElement("td");const t=this.currentCellPosition.col;return n.verticalMerge?n.verticalMerge=="restart"?(this.currentVerticalMerge[t]=o,o.rowSpan=1):this.currentVerticalMerge[t]&&(this.currentVerticalMerge[t].rowSpan+=1,o.style.display="none"):this.currentVerticalMerge[t]=null,this.renderClass(n,o),this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),n.span&&(o.colSpan=n.span),this.currentCellPosition.col+=o.colSpan,o}renderVmlPicture(n){var o=y("div");return this.renderChildren(n,o),o}renderVmlElement(n){var o,t,l=h("svg");l.setAttribute("style",n.cssStyleText);const b=h(n.tagName);return Object.entries(n.attrs).forEach(([k,E])=>b.setAttribute(k,E)),!((o=n.imageHref)===null||o===void 0)&&o.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}renderMmlRadical(n){var o;const t=n.children.find(b=>b.type==r.DomType.MmlBase);if(!((o=n.props)===null||o===void 0)&&o.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 o,t;const l=[];return l.push(d(i,"mo",null,[(o=n.props.beginChar)!==null&&o!==void 0?o:"("])),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 o;const t=[],l=(0,m.keyBy)(n.children,C=>C.type),b=l[r.DomType.MmlSuperArgument],k=l[r.DomType.MmlSubArgument],E=b?d(i,"mo",null,(0,m.asArray)(this.renderElement(b))):null,_=k?d(i,"mo",null,(0,m.asArray)(this.renderElement(k))):null;if(!((o=n.props)===null||o===void 0)&&o.char){const C=d(i,"mo",null,[n.props.char]);E||_?t.push(d(i,"munderover",null,[C,_,E])):E?t.push(d(i,"mover",null,[C,E])):_?t.push(d(i,"munder",null,[C,_])):t.push(C)}return t.push(...this.renderElements(l[r.DomType.MmlBase].children)),d(i,"mrow",null,t)}renderMmlRun(n){const o=d(i,"ms");return this.renderClass(n,o),this.renderStyleValues(n.cssStyle,o),this.renderChildren(n,o),o}renderStyleValues(n,o){Object.assign(o.style,n)}renderClass(n,o){n.className&&(o.className=n.className),n.styleName&&o.classList.add(this.processStyleName(n.styleName))}findStyle(n){var o;return n&&((o=this.styleMap)===null||o===void 0?void 0:o[n])}numberingClass(n,o){return`${this.className}-num-${n}-${o}`}tabStopClass(){return`${this.className}-tab-stop`}styleToString(n,o,t=null){let l=`${n} {\r +`;for(const b in o)l+=` ${b}: ${o[b]};\r +`;return t&&(l+=t),l+`}\r +`}numberingCounter(n,o){return`${this.className}-num-${n}-${o}`}levelTextToContent(n,o,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"}[o])!==null&&b!==void 0?b:""}"`}numFormatToCssValue(n){var o;return(o={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&&o!==void 0?o:n}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout(()=>{const n=(0,p.computePixelToPoint)();for(let o of this.currentTabs)(0,p.updateTabStop)(o.span,o.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 p=document.createElement("div");p.style.width="100pt",m.appendChild(p);const a=100/p.offsetWidth;return m.removeChild(p),a},e.updateTabStop=function(m,p,a,i=.75){const y=m.closest("p"),h=m.getBoundingClientRect(),d=y.getBoundingClientRect(),f=getComputedStyle(y),g=(p==null?void 0:p.length)>0?p.map(_=>({pos:r(_.position),leader:_.leader,style:_.style})).sort((_,C)=>_.pos-C.pos):[u],x=g[g.length-1],P=d.width*i,n=r(a);let o=x.pos+n;if(o_.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,s=document.createRange();s.setStart(m,1),C<_.length?s.setEndBefore(_[C]):s.setEndAfter(y);const R=k.style=="center"?.5:1,V=s.getBoundingClientRect(),M=V.left+R*V.width-(d.left-t);E=k.pos-M*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{constructor(){this.children=[],this.cssStyle={}}}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 p extends r.Part{constructor(i,y,h){super(i,y),this._documentParser=h}}e.BaseNotePart=p,e.FootnotesPart=class extends p{constructor(a,i,y){super(a,i,y)}parseXml(a){this.notes=this._documentParser.parseNotes(a,"footnote",m.WmlFootnote)}},e.EndnotesPart=class extends p{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 p 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=p},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 p(d,f){let g={id:f.attr(d,"numId"),overrides:[]};for(let x of f.elements(d))switch(x.localName){case"abstractNumId":g.abstractId=f.attr(x,"val");break;case"lvlOverride":g.overrides.push(y(x,f))}return g}function a(d,f){let g={id:f.attr(d,"abstractNumId"),levels:[]};for(let x of f.elements(d))switch(x.localName){case"name":g.name=f.attr(x,"val");break;case"multiLevelType":g.multiLevelType=f.attr(x,"val");break;case"numStyleLink":g.numberingStyleLink=f.attr(x,"val");break;case"styleLink":g.styleLink=f.attr(x,"val");break;case"lvl":g.levels.push(i(x,f))}return g}function i(d,f){let g={level:f.intAttr(d,"ilvl")};for(let x of f.elements(d))switch(x.localName){case"start":g.start=f.attr(x,"val");break;case"lvlRestart":g.restart=f.intAttr(x,"val");break;case"numFmt":g.format=f.attr(x,"val");break;case"lvlText":g.text=f.attr(x,"val");break;case"lvlJc":g.justification=f.attr(x,"val");break;case"lvlPicBulletId":g.bulletPictureId=f.attr(x,"val");break;case"pStyle":g.paragraphStyle=f.attr(x,"val");break;case"pPr":g.paragraphProps=(0,r.parseParagraphProperties)(x,f);break;case"rPr":g.runProps=(0,m.parseRunProperties)(x,f)}return g}function y(d,f){let g={level:f.intAttr(d,"ilvl")};for(let x of f.elements(d))switch(x.localName){case"startOverride":g.start=f.intAttr(x,"val");break;case"lvl":g.numberingLevel=i(x,f)}return g}function h(d,f){var g=f.element(d,"pict"),x=g&&f.element(g,"shape"),P=x&&f.element(x,"imagedata");return P?{id:f.attr(d,"numPicBulletId"),referenceId:f.attr(P,"id"),style:f.attr(x,"style")}:null}e.parseNumberingPart=function(d,f){let g={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let x of f.elements(d))switch(x.localName){case"num":g.numberings.push(p(x,f));break;case"abstractNum":g.abstractNumberings.push(a(x,f));break;case"numPicBullet":g.bulletPictures.push(h(x,f))}return g},e.parseNumbering=p,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=(f=h.getElementsByTagName("parsererror")[0])===null||f===void 0?void 0:f.textContent;var f;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,f=i.childNodes.length;d{Object.defineProperty(e,"__esModule",{value:!0}),e.SettingsPart=void 0;const r=u(530),m=u(846);class p extends r.Part{constructor(i,y){super(i,y)}parseXml(i){this.settings=(0,m.parseSettings)(i,this._package.xmlParser)}}e.SettingsPart=p},846:(v,e)=>{function u(r,m){var p={defaultNoteIds:[]};for(let a of m.elements(r))switch(a.localName){case"numFmt":p.nummeringFormat=m.attr(a,"val");break;case"footnote":case"endnote":p.defaultNoteIds.push(m.attr(a,"id"))}return p}Object.defineProperty(e,"__esModule",{value:!0}),e.parseNoteProperties=e.parseSettings=void 0,e.parseSettings=function(r,m){var p={};for(let a of m.elements(r))switch(a.localName){case"defaultTabStop":p.defaultTabStop=m.lengthAttr(a,"val");break;case"footnotePr":p.footnoteProps=u(a,m);break;case"endnotePr":p.endnoteProps=u(a,m);break;case"autoHyphenation":p.autoHyphenation=m.boolAttr(a,"val")}return p},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 p extends r.Part{constructor(i,y){super(i,y)}parseXml(i){this.theme=(0,m.parseTheme)(i,this._package.xmlParser)}}e.ThemePart=p},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 f of i.elements(a)){var h=i.element(f,"srgbClr"),d=i.element(f,"sysClr");h?y.colors[f.localName]=i.attr(h,"val"):d&&(y.colors[f.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=p(h,i);break;case"minorFont":y.minorFont=p(h,i)}return y}function p(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=p},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 p="http://docx/";return new URL(r,p+m).toString().substring(p.length)}catch{return`${m}${r}`}},e.keyBy=function(r,m){return r.reduce((p,a)=>(p[m(a)]=a,p),{})},e.blobToBase64=function(r){return new Promise((m,p)=>{const a=new FileReader;a.onloadend=()=>m(a.result),a.onerror=()=>p(),a.readAsDataURL(r)})},e.isObject=u,e.isString=function(r){return r&&typeof r=="string"||r instanceof String},e.mergeDeep=function r(m,...p){var a;if(!p.length)return m;const i=p.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,...p)},e.parseCssRules=function(r){const m={};for(const p of r.split(";")){const[a,i]=p.split(":");m[a]=i}return m},e.formatCssRules=function(r){return Object.entries(r).map((m,p)=>`${m}: ${p}`).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),p=u(472);class a{constructor(){this.type=m.DomType.VmlElement,this.attrs={},this.chidren=[]}}function i(h){var d;return{stroke:p.default.attr(h,"color"),"stroke-width":(d=p.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){var f=new a;switch(d.localName){case"rect":f.tagName="rect",Object.assign(f.attrs,{width:"100%",height:"100%"});break;case"oval":f.tagName="ellipse",Object.assign(f.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":f.tagName="line";break;case"shape":f.tagName="g";break;default:return null}for(const g of p.default.attrs(d))switch(g.localName){case"style":f.cssStyleText=g.value;break;case"fillcolor":f.attrs.fill=g.value;break;case"from":const[x,P]=y(g.value);Object.assign(f.attrs,{x1:x,y1:P});break;case"to":const[n,o]=y(g.value);Object.assign(f.attrs,{x2:n,y2:o})}for(const g of p.default.elements(d))switch(g.localName){case"stroke":Object.assign(f.attrs,i(g));break;case"fill":Object.assign(f.attrs,{});break;case"imagedata":f.tagName="image",Object.assign(f.attrs,{width:"100%",height:"100%"}),f.imageHref={id:p.default.attr(g,"id"),title:p.default.attr(g,"title")};break;default:const x=h(g);x&&f.chidren.push(x)}return f}},213:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.deobfuscate=e.WordDocument=void 0;const r=u(461),m=u(380),p=u(522),a=u(448),i=u(593),y=u(527),h=u(240),d=u(985),f=u(665),g=u(162),x=u(893),P=u(735),n=u(287),o=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 s=new l;return s._options=C,s._parser=_,s._package=await p.OpenXmlPackage.load(E,C),s.rels=await s._package.loadRelationships(),await Promise.all(t.map(R=>{var V;const M=(V=s.rels.find(K=>K.type===R.type))!==null&&V!==void 0?V:R;return s.loadRelationshipPart(M.target,M.type)})),s}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 s=null;switch(_){case r.RelationshipTypes.OfficeDocument:this.documentPart=s=new a.DocumentPart(this._package,E,this._parser);break;case r.RelationshipTypes.FontTable:this.fontTablePart=s=new m.FontTablePart(this._package,E);break;case r.RelationshipTypes.Numbering:this.numberingPart=s=new y.NumberingPart(this._package,E,this._parser);break;case r.RelationshipTypes.Styles:this.stylesPart=s=new h.StylesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Theme:this.themePart=s=new x.ThemePart(this._package,E);break;case r.RelationshipTypes.Footnotes:this.footnotesPart=s=new P.FootnotesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Endnotes:this.endnotesPart=s=new P.EndnotesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Footer:s=new d.FooterPart(this._package,E,this._parser);break;case r.RelationshipTypes.Header:s=new d.HeaderPart(this._package,E,this._parser);break;case r.RelationshipTypes.CoreProperties:this.corePropsPart=s=new g.CorePropsPart(this._package,E);break;case r.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=s=new f.ExtendedPropsPart(this._package,E);break;case r.RelationshipTypes.CustomProperties:s=new o.CustomPropsPart(this._package,E);break;case r.RelationshipTypes.Settings:this.settingsPart=s=new n.SettingsPart(this._package,E)}if(s==null)return Promise.resolve(null);if(this.partsMap[E]=s,this.parts.push(s),await s.load(),((C=s.rels)===null||C===void 0?void 0:C.length)>0){const[R]=(0,i.splitPath)(s.path);await Promise.all(s.rels.map(V=>this.loadRelationshipPart((0,i.resolvePath)(V.target,R),V.type)))}return s}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,s=((C=_.rels)!==null&&C!==void 0?C:this.rels).find(V=>V.id==E);const R=_?(0,i.splitPath)(_.path)[0]:"";return s?this.partsMap[(0,i.resolvePath)(s.target,R)]:null}getPathById(E,_){const C=E.rels.find(R=>R.id==_),[s]=(0,i.splitPath)(E.path);return C?(0,i.resolvePath)(C.target,s):null}loadResource(E,_,C){const s=this.getPathById(E,_);return s?this._package.load(s,C):Promise.resolve(null)}}function b(k,E){const _=E.replace(/{|}|-/g,""),C=new Array(16);for(let s=0;s<16;s++)C[16-s-1]=parseInt(_.substr(2*s,2),16);for(let s=0;s<32;s++)k[s]=k[s]^C[s%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}},N={};function A(v){var e=N[v];if(e!==void 0)return e.exports;var u=N[v]={id:v,exports:{}};return j[v](u,u.exports,A),u.exports}return A.m=j,A.n=v=>{var e=v&&v.__esModule?()=>v.default:()=>v;return A.d(e,{a:e}),e},A.d=(v,e)=>{for(var u in e)A.o(e,u)&&!A.o(v,u)&&Object.defineProperty(v,u,{enumerable:!0,get:e[u]})},A.o=(v,e)=>Object.prototype.hasOwnProperty.call(v,e),A.r=v=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(v,"__esModule",{value:!0})},A.b=document.baseURI||self.location.href,A(667)})())})(Ne);const Re={ignoreLastRenderedPageBreak:!1};function ze(re,ce={}){return typeof re=="string"?Ie(re,ce):Promise.resolve(re)}function Ie(re,ce){return fetch(re,ce).then(T=>T.status!==200?Promise.reject(T):T)}async function Fe(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 Me(re,ce,T={}){if(!re)return ce.innerHTML="",Promise.resolve();let j;return re instanceof Blob?j=re:re instanceof Response?j=re.blob():re instanceof ArrayBuffer&&(j=new Blob([re])),Ae.renderAsync(j,ce,ce,{...Re,...T})}const Ue={getData:ze,render:Me,getBlob:Fe};export{Ue as d}; diff --git a/examples/dist/assets/hack-2409615a.js b/examples/dist/assets/hack-2409615a.js new file mode 100644 index 0000000..9aeb2db --- /dev/null +++ b/examples/dist/assets/hack-2409615a.js @@ -0,0 +1,99 @@ +import{y as Vt,z as Bi}from"./index-11290fb6.js";import{c as Do}from"./_commonjs-dynamic-modules-302442b1.js";import{g as Zv}from"./url-de9b02cf.js";class Xi{constructor(k,e=""){typeof k=="string"?(this.el=document.createElement(k),this.el.className=e):this.el=k,this.data={}}data(k,e){return e!==void 0?(this.data[k]=e,this):this.data[k]}on(k,e){const[x,..._]=k.split(".");let u=x;return u==="mousewheel"&&/Firefox/i.test(window.navigator.userAgent)&&(u="DOMMouseScroll"),this.el.addEventListener(u,m=>{e(m);for(let g=0;g<_.length;g+=1){const b=_[g];if(b==="left"&&m.button!==0||b==="right"&&m.button!==2)return;b==="stop"&&m.stopPropagation()}}),this}offset(k){if(k!==void 0)return Object.keys(k).forEach(m=>{this.css(m,`${k[m]}px`)}),this;const{offsetTop:e,offsetLeft:x,offsetHeight:_,offsetWidth:u}=this.el;return{top:e,left:x,height:_,width:u}}scroll(k){const{el:e}=this;return k!==void 0&&(k.left!==void 0&&(e.scrollLeft=k.left),k.top!==void 0&&(e.scrollTop=k.top)),{left:e.scrollLeft,top:e.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new Xi(this.el.parentNode)}children(...k){return arguments.length===0?this.el.childNodes:(k.forEach(e=>this.child(e)),this)}removeChild(k){this.el.removeChild(k)}child(k){let e=k;return typeof k=="string"?e=document.createTextNode(k):k instanceof Xi&&(e=k.el),this.el.appendChild(e),this}contains(k){return this.el.contains(k)}className(k){return k!==void 0?(this.el.className=k,this):this.el.className}addClass(k){return this.el.classList.add(k),this}hasClass(k){return this.el.classList.contains(k)}removeClass(k){return this.el.classList.remove(k),this}toggle(k="active"){return this.toggleClass(k)}toggleClass(k){return this.el.classList.toggle(k)}active(k=!0,e="active"){return k?this.addClass(e):this.removeClass(e),this}checked(k=!0){return this.active(k,"checked"),this}disabled(k=!0){return k?this.addClass("disabled"):this.removeClass("disabled"),this}attr(k,e){if(e!==void 0)this.el.setAttribute(k,e);else{if(typeof k=="string")return this.el.getAttribute(k);Object.keys(k).forEach(x=>{this.el.setAttribute(x,k[x])})}return this}removeAttr(k){return this.el.removeAttribute(k),this}html(k){return k!==void 0?(this.el.innerHTML=k,this):this.el.innerHTML}val(k){return k!==void 0?(this.el.value=k,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...k){return k.forEach(e=>this.el.style.removeProperty(e)),this}css(k,e){return e===void 0&&typeof k!="string"?(Object.keys(k).forEach(x=>{this.el.style[x]=k[x]}),this):e!==void 0?(this.el.style[k]=e,this):this.el.style[k]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}}const We=(X,k="")=>new Xi(X,k),Ei=["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 rc(X){let k="",e=X;for(;e>=Ei.length;)e/=Ei.length,e-=1,k+=Ei[parseInt(e,10)%Ei.length];const x=X%Ei.length;return k+=Ei[x],k}function Yv(X){let k=0;for(let e=0;e="0"&&X.charAt(x)<="9"?e+=X.charAt(x):k+=X.charAt(x);return[Yv(k),parseInt(e,10)-1]}function hi(X,k){return`${rc(X)}${k+1}`}function Xa(X,k,e,x=()=>!0){if(k===0&&e===0)return X;const[_,u]=Ti(X);return x(_,u)?hi(_+k,u+e):X}class kr{constructor(k,e,x,_,u=0,m=0){this.sri=k,this.sci=e,this.eri=x,this.eci=_,this.w=u,this.h=m}set(k,e,x,_){this.sri=k,this.sci=e,this.eri=x,this.eci=_}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...k){let[e,x]=[0,0];k.length===1?[x,e]=Ti(k[0]):k.length===2&&([e,x]=k);const{sri:_,sci:u,eri:m,eci:g}=this;return _<=e&&e<=m&&u<=x&&x<=g}each(k,e=()=>!0){const{sri:x,sci:_,eri:u,eci:m}=this;for(let g=x;g<=u;g+=1)if(e(g))for(let b=_;b<=m;b+=1)k(g,b)}contains(k){return this.sri<=k.sri&&this.sci<=k.sci&&this.eri>=k.eri&&this.eci>=k.eci}within(k){return this.sri>=k.sri&&this.sci>=k.sci&&this.eri<=k.eri&&this.eci<=k.eci}disjoint(k){return this.sri>k.eri||this.sci>k.eci||k.sri>this.eri||k.sci>this.eci}intersects(k){return this.sri<=k.eri&&this.sci<=k.eci&&k.sri<=this.eri&&k.sci<=this.eci}union(k){const{sri:e,sci:x,eri:_,eci:u}=this;return new kr(k.sri_?k.eri:_,k.eci>u?k.eci:u)}difference(k){const e=[],x=(h,l,d,s)=>{e.push(new kr(h,l,d,s))},{sri:_,sci:u,eri:m,eci:g}=this,b=k.sri-_,w=k.sci-u,f=m-k.eri,y=g-k.eci;return b>0?(x(_,u,k.sri-1,g),f>0?(x(k.eri+1,u,m,g),w>0&&x(k.sri,u,k.eri,k.sci-1),y>0&&x(k.sri,k.eci+1,k.eri,g)):(w>0&&x(k.sri,u,m,k.sci-1),y>0&&x(k.sri,k.eci+1,m,g))):f>0&&(x(k.eri+1,u,m,g),w>0&&x(_,u,k.eri,k.sci-1),y>0&&x(_,k.eci+1,k.eri,g)),w>0?(x(_,u,m,k.sci-1),y>0?(x(_,k.eri+1,m,g),b>0&&x(_,k.sci,k.sri-1,k.eci),f>0&&x(k.sri+1,k.sci,m,k.eci)):(b>0&&x(_,k.sci,k.sri-1,g),f>0&&x(k.sri+1,k.sci,m,g))):y>0&&(x(m,k.eci+1,m,g),b>0&&x(_,u,k.sri-1,k.eci),f>0&&x(k.eri+1,u,m,k.eci)),e}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:k,sci:e,eri:x,eci:_}=this;let u=hi(e,k);return this.multiple()&&(u=`${u}:${hi(_,x)}`),u}clone(){const{sri:k,sci:e,eri:x,eci:_,w:u,h:m}=this;return new kr(k,e,x,_,u,m)}equals(k){return this.eri===k.eri&&this.eci===k.eci&&this.sri===k.sri&&this.sci===k.sci}static valueOf(k){const e=k.split(":"),[x,_]=Ti(e[0]);let[u,m]=[_,x];return e.length>1&&([m,u]=Ti(e[1])),new kr(_,x,u,m)}}let Jv=class{constructor(){this.range=new kr(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(k,e){this.ri=k,this.ci=e}size(){return this.range.size()}};class Qv{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class qv{constructor(){this.undoItems=[],this.redoItems=[]}add(k){this.undoItems.push(JSON.stringify(k)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(k,e){const{undoItems:x,redoItems:_}=this;this.canUndo()&&(_.push(JSON.stringify(k)),e(JSON.parse(x.pop())))}redo(k,e){const{undoItems:x,redoItems:_}=this;this.canRedo()&&(x.push(JSON.stringify(k)),e(JSON.parse(_.pop())))}}class em{constructor(){this.range=null,this.state="clear"}copy(k){return this.range=k,this.state="copy",this}cut(k){return this.range=k,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 Sl{constructor(k,e,x){this.ci=k,this.operator=e,this.value=x}set(k,e){this.operator=k,this.value=e}includes(k){const{operator:e,value:x}=this;return e==="all"?!0:e==="in"?x.includes(k):!1}vlength(){const{operator:k,value:e}=this;return k==="in"?e.length:0}getData(){const{ci:k,operator:e,value:x}=this;return{ci:k,operator:e,value:x}}}class kl{constructor(k,e){this.ci=k,this.order=e}asc(){return this.order==="asc"}desc(){return this.order==="desc"}}class tm{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:k,filters:e,sort:x}){k!=null&&(this.ref=k,this.filters=e.map(_=>new Sl(_.ci,_.operator,_.value)),x&&(this.sort=new kl(x.ci,x.order)))}getData(){if(this.active()){const{ref:k,filters:e,sort:x}=this;return{ref:k,filters:e.map(_=>_.getData()),sort:x}}return{}}addFilter(k,e,x){const _=this.getFilter(k);_==null?this.filters.push(new Sl(k,e,x)):_.set(e,x)}setSort(k,e){this.sort=e?new kl(k,e):null}includes(k,e){return this.active()?this.hrange().includes(k,e):!1}getSort(k){const{sort:e}=this;return e&&e.ci===k?e:null}getFilter(k){const{filters:e}=this;for(let x=0;x!e.within(k))}getFirstIncludes(k,e){for(let x=0;xe.intersects(k)))}intersects(k){for(let e=0;e{x.intersects(e)&&(e=x.union(e))}),e}add(k){this.deleteWithin(k),this._.push(k)}shift(k,e,x,_){this._.forEach(u=>{const{sri:m,sci:g,eri:b,eci:w}=u,f=u;k==="row"?m>=e?(f.sri+=x,f.eri+=x):m=e?(f.sci+=x,f.eci+=x):g{const u=_;u.within(k)&&(u.eri+=e,u.sri+=e,u.sci+=x,u.eci+=x)})}setData(k){return this._=k.map(e=>kr.valueOf(e)),this}getData(){return this._.map(k=>k.toString())}}function rm(X){return JSON.parse(JSON.stringify(X))}const nc=(X={},...k)=>(k.forEach(e=>{Object.keys(e).forEach(x=>{const _=e[x];typeof _=="string"||typeof _=="number"||typeof _=="boolean"?X[x]=_:typeof _!="function"&&!Array.isArray(_)&&_ instanceof Object?(X[x]=X[x]||{},nc(X[x],_)):X[x]=_})}),X);function uf(X,k){const e=Object.keys(X);if(e.length!==Object.keys(k).length)return!1;for(let x=0;xe)=>{let e=0,x=0;return Object.keys(X).forEach(_=>{e+=k(X[_],_),x+=1}),[e,x]};function im(X,k){const e=X[`${k}`];return delete X[`${k}`],e}function am(X,k,e,x,_,u){let m=e,g=x,b=X;for(;b_);b+=1)g=u(b),m+=g;return[b,m-g,g]}function om(X,k,e){let x=0;for(let _=X;_5?g.toFixed(2):g;return g.toFixed(Math.max(x,_))}const fn={cloneDeep:rm,merge:(...X)=>nc({},...X),equals:uf,arrayEquals:fm,sum:nm,rangeEach:sm,rangeSum:om,rangeReduceIf:am,deleteProperty:im,numberCalc:ji};class um{constructor({len:k,height:e}){this._={},this.len=k,this.height=e}getHeight(k){if(this.isHide(k))return 0;const e=this.get(k);return e&&e.height?e.height:this.height}setHeight(k,e){const x=this.getOrNew(k);x.height=e}unhide(k){let e=k;for(;e>0&&(e-=1,this.isHide(e));)this.setHide(e,!1)}isHide(k){const e=this.get(k);return e&&e.hide}setHide(k,e){const x=this.getOrNew(k);e===!0?x.hide=!0:delete x.hide}setStyle(k,e){const x=this.getOrNew(k);x.style=e}sumHeight(k,e,x){return fn.rangeSum(k,e,_=>x&&x.has(_)?0:this.getHeight(_))}totalHeight(){return this.sumHeight(0,this.len)}get(k){return this._[k]}getOrNew(k){return this._[k]=this._[k]||{cells:{}},this._[k]}getCell(k,e){const x=this.get(k);return x!==void 0&&x.cells!==void 0&&x.cells[e]!==void 0?x.cells[e]:null}getCellMerge(k,e){const x=this.getCell(k,e);return x&&x.merge?x.merge:[0,0]}getCellOrNew(k,e){const x=this.getOrNew(k);return x.cells[e]=x.cells[e]||{},x.cells[e]}setCell(k,e,x,_="all"){const u=this.getOrNew(k);_==="all"?u.cells[e]=x:_==="text"?(u.cells[e]=u.cells[e]||{},u.cells[e].text=x.text):_==="format"&&(u.cells[e]=u.cells[e]||{},u.cells[e].style=x.style,x.merge&&(u.cells[e].merge=x.merge))}setCellText(k,e,x){const _=this.getCellOrNew(k,e);_.editable!==!1&&(_.text=x)}copyPaste(k,e,x,_=!1,u=()=>{}){const{sri:m,sci:g,eri:b,eci:w}=k,f=e.sri,y=e.sci,h=e.eri,l=e.eci,[d,s]=k.size(),[v,c]=e.size();let a=!0,r=0;(h0){const{text:N}=C;let L=o-y+(n-f)+2;if(a||(L-=r+1),N[0]==="=")C.text=N.replace(/[a-zA-Z]{1,3}\d+/g,F=>{let[M,D]=[0,0];return m===f?M=L-1:D=L-1,/^\d+$/.test(F)?F:Xa(F,M,D)});else if(d<=1&&s>1&&(f>b||h1&&(y>w||l{this.eachCells(_,u=>{let m=parseInt(_,10),g=parseInt(u,10);k.includes(_,u)&&(m=e.sri+(m-k.sri),g=e.sci+(g-k.sci)),x[m]=x[m]||{cells:{}},x[m].cells[g]=this._[_].cells[u]})}),this._=x}paste(k,e){if(k.length<=0)return;const{sri:x,sci:_}=e;k.forEach((u,m)=>{const g=x+m;u.forEach((b,w)=>{const f=_+w;this.setCellText(g,f,b)})})}insert(k,e=1){const x={};this.each((_,u)=>{let m=parseInt(_,10);m>=k&&(m+=e,this.eachCells(_,(g,b)=>{b.text&&b.text[0]==="="&&(b.text=b.text.replace(/[a-zA-Z]{1,3}\d+/g,w=>Xa(w,0,e,(f,y)=>y>=k)))})),x[m]=u}),this._=x,this.len+=e}delete(k,e){const x=e-k+1,_={};this.each((u,m)=>{const g=parseInt(u,10);ge&&(_[g-x]=m,this.eachCells(u,(b,w)=>{w.text&&w.text[0]==="="&&(w.text=w.text.replace(/[a-zA-Z]{1,3}\d+/g,f=>Xa(f,0,-x,(y,h)=>h>e)))}))}),this._=_,this.len-=x}insertColumn(k,e=1){this.each((x,_)=>{const u={};this.eachCells(x,(m,g)=>{let b=parseInt(m,10);b>=k&&(b+=e,g.text&&g.text[0]==="="&&(g.text=g.text.replace(/[a-zA-Z]{1,3}\d+/g,w=>Xa(w,e,0,f=>f>=k)))),u[b]=g}),_.cells=u})}deleteColumn(k,e){const x=e-k+1;this.each((_,u)=>{const m={};this.eachCells(_,(g,b)=>{const w=parseInt(g,10);we&&(m[w-x]=b,b.text&&b.text[0]==="="&&(b.text=b.text.replace(/[a-zA-Z]{1,3}\d+/g,f=>Xa(f,-x,0,y=>y>e))))}),u.cells=m})}deleteCells(k,e="all"){k.each((x,_)=>{this.deleteCell(x,_,e)})}deleteCell(k,e,x="all"){const _=this.get(k);if(_!==null){const u=this.getCell(k,e);u!==null&&u.editable!==!1&&(x==="all"?delete _.cells[e]:x==="text"?(u.text&&delete u.text,u.value&&delete u.value):x==="format"?(u.style!==void 0&&delete u.style,u.merge&&delete u.merge):x==="merge"&&u.merge&&delete u.merge)}}maxCell(){const k=Object.keys(this._),e=k[k.length-1],x=this._[e];if(x){const{cells:_}=x,u=Object.keys(_),m=u[u.length-1];return[parseInt(e,10),parseInt(m,10)]}return[0,0]}each(k){Object.entries(this._).forEach(([e,x])=>{k(e,x)})}eachCells(k,e){this._[k]&&this._[k].cells&&Object.entries(this._[k].cells).forEach(([x,_])=>{e(x,_)})}setData(k){k.len&&(this.len=k.len,delete k.len),this._=k}getData(){const{len:k}=this;return Object.assign({len:k},this._)}}class lm{constructor({len:k,width:e,indexWidth:x,minWidth:_}){this._={},this.len=k,this.width=e,this.indexWidth=x,this.minWidth=_}setData(k){k.len&&(this.len=k.len,delete k.len),this._=k}getData(){const{len:k}=this;return Object.assign({len:k},this._)}getWidth(k){if(this.isHide(k))return 0;const e=this._[k];return e&&e.width?e.width:this.width}getOrNew(k){return this._[k]=this._[k]||{},this._[k]}setWidth(k,e){const x=this.getOrNew(k);x.width=e}unhide(k){let e=k;for(;e>0&&(e-=1,this.isHide(e));)this.setHide(e,!1)}isHide(k){const e=this._[k];return e&&e.hide}setHide(k,e){const x=this.getOrNew(k);e===!0?x.hide=!0:delete x.hide}setStyle(k,e){const x=this.getOrNew(k);x.style=e}sumWidth(k,e){return fn.rangeSum(k,e,x=>this.getWidth(x))}totalWidth(){return this.sumWidth(0,this.len)}}const cm={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 lf=["en"];const ic={en:cm};function Ol(X,k){if(k)for(const e of lf){if(!k[e])break;let x=k[e];const _=X.match(/(?:\\.|[^.])+/g);for(let u=0;u<_.length;u+=1){const m=_[u],g=x[m];if(!g)break;if(u===_.length-1)return g;x=g}}}function Cr(X){let k=Ol(X,ic);return!k&&window&&window.x_spreadsheet&&window.x_spreadsheet.$messages&&(k=Ol(X,window.x_spreadsheet.$messages)),k||""}function Jt(X){return()=>Cr(X)}function ac(X,k,e=!1){e?lf=[X]:lf.unshift(X),k&&(ic[X]=k)}const El={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function Un(X,k,...e){let x="";return X||(x=Cr(`validation.${k}`,...e)),[X,x]}class oc{constructor(k,e,x,_){this.required=e,this.value=x,this.type=k,this.operator=_,this.message=""}parseValue(k){const{type:e}=this;return e==="date"?new Date(k):e==="number"?Number(k):k}equals(k){let e=this.type===k.type&&this.required===k.required&&this.operator===k.operator;return e&&(Array.isArray(this.value)?e=fn.arrayEquals(this.value,k.value):e=this.value===k.value),e}values(){return this.value.split(",")}validate(k){const{required:e,operator:x,value:_,type:u}=this;if(e&&/^\s*$/.test(k))return Un(!1,"required");if(/^\s*$/.test(k))return[!0];if(El[u]&&!El[u].test(k))return Un(!1,"notMatch");if(u==="list")return Un(this.values().includes(k),"notIn");if(x){const m=this.parseValue(k);if(x==="be"){const[g,b]=_;return Un(m>=this.parseValue(g)&&m<=this.parseValue(b),"between",g,b)}if(x==="nbe"){const[g,b]=_;return Un(mthis.parseValue(b),"notBetween",g,b)}if(x==="eq")return Un(m===this.parseValue(_),"equal",_);if(x==="neq")return Un(m!==this.parseValue(_),"notEqual",_);if(x==="lt")return Un(mthis.parseValue(_),"greaterThan",_);if(x==="gte")return Un(m>=this.parseValue(_),"greaterThanEqual",_)}return[!0]}}class Vo{constructor(k,e,x){this.refs=e,this.mode=k,this.validator=x}includes(k,e){const{refs:x}=this;for(let _=0;_{const _=kr.valueOf(x);_.intersects(k)?_.difference(k).forEach(m=>e.push(m.toString())):e.push(x)}),this.refs=e}getData(){const{refs:k,mode:e,validator:x}=this,{type:_,required:u,operator:m,value:g}=x;return{refs:k,mode:e,type:_,required:u,operator:m,value:g}}static valueOf({refs:k,mode:e,type:x,required:_,operator:u,value:m}){return new Vo(e,k,new oc(x,_,m,u))}}class hm{constructor(){this._=[],this.errors=new Map}getError(k,e){return this.errors.get(`${k}_${e}`)}validate(k,e,x){const _=this.get(k,e),u=`${k}_${e}`,{errors:m}=this;if(_!==null){const[g,b]=_.validator.validate(x);g?m.delete(u):m.set(u,b)}else m.delete(u);return!0}add(k,e,{type:x,required:_,value:u,operator:m}){const g=new oc(x,_,u,m),b=this.getByValidator(g);b!==null?b.addRef(e):this._.push(new Vo(k,[e],g))}getByValidator(k){for(let e=0;e{e.remove(k)})}each(k){this._.forEach(e=>k(e))}getData(){return this._.filter(k=>k.refs.length>0).map(k=>k.getData())}setData(k){this._=k.map(e=>Vo.valueOf(e))}}const dm={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"}},pm=41,ym=41,Tl=(X,k)=>Object.prototype.hasOwnProperty.call(X,k);function Rl(X,k,e=()=>{}){const{merges:x}=this,_=k.clone(),[u,m]=X.size(),[g,b]=k.size();return u>g&&(_.eri=k.sri+u-1),m>b&&(_.eci=k.sci+m-1),x.intersects(_)?(e(Cr("error.pasteForMergedCell")),!1):!0}function Cl(X,k,e,x=!1){const{rows:_,merges:u}=this;(e==="all"||e==="format")&&(_.deleteCells(k,e),u.deleteWithin(k)),_.copyPaste(X,k,e,x,(m,g,b)=>{if(b&&b.merge){const[w,f]=b.merge;if(w<=0&&f<=0)return;u.add(new kr(m,g,m+w,g+f))}})}function vm(X,k){const{clipboard:e,rows:x,merges:_}=this;x.cutPaste(X,k),_.move(X,k.sri-X.sri,k.sci-X.sci),e.clear()}function pa(X,k,e){const{styles:x,rows:_}=this,u=_.getCellOrNew(X,k);let m={};u.style!==void 0&&(m=fn.cloneDeep(x[u.style])),m=fn.merge(m,{border:e}),u.style=this.addStyle(m)}function mm({mode:X,style:k,color:e}){const{styles:x,selector:_,rows:u}=this,{sri:m,sci:g,eri:b,eci:w}=_.range,f=!this.isSignleSelected();if(!(!f&&(X==="inside"||X==="horizontal"||X==="vertical"))){if(X==="outside"&&!f)pa.call(this,m,g,{top:[k,e],bottom:[k,e],left:[k,e],right:[k,e]});else if(X==="none")_.range.each((y,h)=>{const l=u.getCell(y,h);if(l&&l.style!==void 0){const d=fn.cloneDeep(x[l.style]);delete d.border,l.style=this.addStyle(d)}});else if(X==="all"||X==="inside"||X==="outside"||X==="horizontal"||X==="vertical"){const y=[];for(let h=m;h<=b;h+=1)for(let l=g;l<=w;l+=1){const d=[];for(let i=0;iy.splice(i,1)),l>w)break;const s=u.getCell(h,l);let[v,c]=[0,0];s&&s.merge&&([v,c]=s.merge,y.push([h,l,v,c]));const a=v>0&&h+v===b,r=c>0&&l+c===w;let t={};X==="all"?t={bottom:[k,e],top:[k,e],left:[k,e],right:[k,e]}:X==="inside"?(!r&&l0&&pa.call(this,h,l,t),l+=c}}else if(X==="top"||X==="bottom")for(let y=g;y<=w;y+=1)X==="top"&&(pa.call(this,m,y,{top:[k,e]}),y+=u.getCellMerge(m,y)[1]),X==="bottom"&&(pa.call(this,b,y,{bottom:[k,e]}),y+=u.getCellMerge(b,y)[1]);else if(X==="left"||X==="right")for(let y=m;y<=b;y+=1)X==="left"&&(pa.call(this,y,g,{left:[k,e]}),y+=u.getCellMerge(y,g)[0]),X==="right"&&(pa.call(this,y,w,{right:[k,e]}),y+=u.getCellMerge(y,w)[0])}}function bm(X,k){const{rows:e}=this,x=this.freezeTotalHeight();let _=e.height;x+e.heightX);m+=1)u.has(m)||(b=e.getHeight(m),g+=b);return g-=b,g<=0?{ri:-1,top:0,height:b}:{ri:m-1,top:g,height:b}}function gm(X,k){const{cols:e}=this,x=this.freezeTotalWidth();let _=e.indexWidth;x+e.indexWidthe.getWidth(b));return m<=0?{ci:-1,left:0,width:e.indexWidth}:{ci:u-1,left:m,width:g}}class _m{constructor(k,e){this.settings=fn.merge(dm,e||{}),this.name=k||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new gf,this.rows=new um(this.settings.row),this.cols=new lm(this.settings.col),this.validations=new hm,this.hyperlinks={},this.comments={},this.selector=new Jv,this.scroll=new Qv,this.history=new qv,this.clipboard=new em,this.autoFilter=new tm,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(k,e,x){this.changeData(()=>{this.validations.add(k,e,x)})}removeValidation(){const{range:k}=this.selector;this.changeData(()=>{this.validations.remove(k)})}getSelectedValidator(){const{ri:k,ci:e}=this.selector,x=this.validations.get(k,e);return x?x.validator:null}getSelectedValidation(){const{ri:k,ci:e,range:x}=this.selector,_=this.validations.get(k,e),u={ref:x.toString()};return _!==null&&(u.mode=_.mode,u.validator=_.validator),u}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),k=>{this.setData(k)})}redo(){this.history.redo(this.getData(),k=>{this.setData(k)})}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(navigator.clipboard===void 0)return;let k="";const e=this.rows.getData();for(let x=this.selector.range.sri;x<=this.selector.range.eri;x+=1){if(Tl(e,x)){for(let _=this.selector.range.sci;_<=this.selector.range.eci;_+=1)if(_>this.selector.range.sci&&(k+=" "),Tl(e[x].cells,_)){const u=String(e[x].cells[_].text);u.indexOf(` +`)===-1&&u.indexOf(" ")===-1&&u.indexOf('"')===-1?k+=u:k+=`"${u}"`}}else for(let _=this.selector.range.sci;_<=this.selector.range.eci;_+=1)k+=" ";k+=` +`}navigator.clipboard.writeText(k).then(()=>{},x=>{console.log("text copy to the system clipboard error ",k,x)})}cut(){this.clipboard.cut(this.selector.range)}paste(k="all",e=()=>{}){const{clipboard:x,selector:_}=this;return x.isClear()||!Rl.call(this,x.range,_.range,e)?!1:(this.changeData(()=>{x.isCopy()?Cl.call(this,x.range,_.range,k):x.isCut()&&vm.call(this,x.range,_.range)}),!0)}pasteFromText(k){const e=k.split(`\r +`).map(u=>u.replace(/"/g,"").split(" "));e.length>0&&(e.length-=1);const{rows:x,selector:_}=this;this.changeData(()=>{x.paste(e,_.range)})}autofill(k,e,x=()=>{}){const _=this.selector.range;return Rl.call(this,_,k,x)?(this.changeData(()=>{Cl.call(this,_,k,e,!0)}),!0):!1}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(k,e){const{selector:x,rows:_,cols:u,merges:m}=this;let{sri:g,sci:b,eri:w,eci:f}=x.range;const y=x.ri,h=x.ci;let[l,d]=[k,e];return k<0&&(l=_.len-1),e<0&&(d=u.len-1),l>y?[g,w]=[y,l]:[g,w]=[l,y],d>h?[b,f]=[h,d]:[b,f]=[d,h],x.range=m.union(new kr(g,b,w,f)),x.range=m.union(x.range),x.range}calSelectedRangeByStart(k,e){const{selector:x,rows:_,cols:u,merges:m}=this;let g=m.getFirstIncludes(k,e);return g===null&&(g=new kr(k,e,k,e),k===-1&&(g.sri=0,g.eri=_.len-1),e===-1&&(g.sci=0,g.eci=u.len-1)),x.range=g,g}setSelectedCellAttr(k,e){this.changeData(()=>{const{selector:x,styles:_,rows:u}=this;if(k==="merge")e?this.merge():this.unmerge();else if(k==="border")mm.call(this,e);else if(k==="formula"){const{ri:m,ci:g,range:b}=x;if(x.multiple()){const[w,f]=x.size(),{sri:y,sci:h,eri:l,eci:d}=b;if(w>1)for(let s=h;s<=d;s+=1){const v=u.getCellOrNew(l+1,s);v.text=`=${e}(${hi(s,y)}:${hi(s,l)})`}else if(f>1){const s=u.getCellOrNew(m,d+1);s.text=`=${e}(${hi(h,m)}:${hi(d,m)})`}}else{const w=u.getCellOrNew(m,g);w.text=`=${e}()`}}else x.range.each((m,g)=>{const b=u.getCellOrNew(m,g);let w={};if(b.style!==void 0&&(w=fn.cloneDeep(_[b.style])),k==="format")w.format=e,b.style=this.addStyle(w);else if(k==="font-bold"||k==="font-italic"||k==="font-name"||k==="font-size"){const f={};f[k.split("-")[1]]=e,w.font=Object.assign(w.font||{},f),b.style=this.addStyle(w)}else k==="strike"||k==="textwrap"||k==="underline"||k==="align"||k==="valign"||k==="color"||k==="bgcolor"?(w[k]=e,b.style=this.addStyle(w)):b[k]=e})})}setSelectedCellText(k,e="input"){const{autoFilter:x,selector:_,rows:u}=this,{ri:m,ci:g}=_;let b=m;this.unsortedRowMap.has(m)&&(b=this.unsortedRowMap.get(m));const w=u.getCell(b,g),f=w?w.text:"";if(this.setCellText(b,g,k,e),x.active()){const y=x.getFilter(g);if(y){const h=y.value.findIndex(l=>l===f);h>=0&&y.value.splice(h,1,k)}}}getSelectedCell(){const{ri:k,ci:e}=this.selector;let x=k;return this.unsortedRowMap.has(k)&&(x=this.unsortedRowMap.get(k)),this.rows.getCell(x,e)}xyInSelectedRect(k,e){const{left:x,top:_,width:u,height:m}=this.getSelectedRect(),g=k-this.cols.indexWidth,b=e-this.rows.height;return g>x&&g_&&b<_+m}getSelectedRect(){return this.getRect(this.selector.range)}getClipboardRect(){const{clipboard:k}=this;return k.isClear()?{left:-100,top:-100}:this.getRect(k.range)}getRect(k){const{scroll:e,rows:x,cols:_,exceptRowSet:u}=this,{sri:m,sci:g,eri:b,eci:w}=k;if(m<0&&g<0)return{left:0,l:0,top:0,t:0,scroll:e};const f=_.sumWidth(0,g),y=x.sumHeight(0,m,u),h=x.sumHeight(m,b+1,u),l=_.sumWidth(g,w+1);let d=f-e.x,s=y-e.y;const v=this.freezeTotalHeight(),c=this.freezeTotalWidth();return c>0&&c>f&&(d=f),v>0&&v>y&&(s=y),{l:f,t:y,left:d,top:s,height:h,width:l,scroll:e}}getCellRectByXY(k,e){const{scroll:x,merges:_,rows:u,cols:m}=this;let{ri:g,top:b,height:w}=bm.call(this,e,x.y),{ci:f,left:y,width:h}=gm.call(this,k,x.x);if(f===-1&&(h=m.totalWidth()),g===-1&&(w=u.totalHeight()),g>=0||f>=0){const l=_.getFirstIncludes(g,f);l&&(g=l.sri,f=l.sci,{left:y,top:b,width:h,height:w}=this.cellRect(g,f))}return{ri:g,ci:f,left:y,top:b,width:h,height:w}}isSignleSelected(){const{sri:k,sci:e,eri:x,eci:_}=this.selector.range,u=this.getCell(k,e);if(u&&u.merge){const[m,g]=u.merge;if(k+m===x&&e+g===_)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:k,sci:e,eri:x,eci:_}=this.selector.range,u=this.getCell(k,e);if(u&&u.merge){const[m,g]=u.merge;if(k+m===x&&e+g===_)return!0}return!1}merge(){const{selector:k,rows:e}=this;if(this.isSignleSelected())return;const[x,_]=k.size();if(x>1||_>1){const{sri:u,sci:m}=k.range;this.changeData(()=>{const g=e.getCellOrNew(u,m);g.merge=[x-1,_-1],this.merges.add(k.range),this.rows.deleteCells(k.range),this.rows.setCell(u,m,g)})}}unmerge(){const{selector:k}=this;if(!this.isSignleSelected())return;const{sri:e,sci:x}=k.range;this.changeData(()=>{this.rows.deleteCell(e,x,"merge"),this.merges.deleteWithin(k.range)})}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:k,selector:e}=this;this.changeData(()=>{k.active()?(k.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):k.ref=e.range.toString()})}setAutoFilter(k,e,x,_){const{autoFilter:u}=this;u.addFilter(k,x,_),u.setSort(k,e),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:k,rows:e}=this;if(!k.active())return;const{sort:x}=k,{rset:_,fset:u}=k.filteredRows((b,w)=>e.getCell(b,w)),m=Array.from(u),g=Array.from(u);x&&m.sort((b,w)=>x.order==="asc"?b-w:x.order==="desc"?w-b:0),this.exceptRowSet=_,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,m.forEach((b,w)=>{this.sortedRowMap.set(g[w],b),this.unsortedRowMap.set(b,g[w])})}deleteCell(k="all"){const{selector:e}=this;this.changeData(()=>{this.rows.deleteCells(e.range,k),(k==="all"||k==="format")&&this.merges.deleteWithin(e.range)})}insert(k,e=1){this.changeData(()=>{const{sri:x,sci:_}=this.selector.range,{rows:u,merges:m,cols:g}=this;let b=x;k==="row"?u.insert(x,e):k==="column"&&(u.insertColumn(_,e),b=_,g.len+=1),m.shift(k,b,e,(w,f,y,h)=>{const l=u.getCell(w,f);l.merge[0]+=y,l.merge[1]+=h})})}delete(k){this.changeData(()=>{const{rows:e,merges:x,selector:_,cols:u}=this,{range:m}=_,{sri:g,sci:b,eri:w,eci:f}=_.range,[y,h]=_.range.size();let l=g,d=y;k==="row"?e.delete(g,w):k==="column"&&(e.deleteColumn(b,f),l=m.sci,d=h,u.len-=1),x.shift(k,l,-d,(s,v,c,a)=>{const r=e.getCell(s,v);r.merge[0]+=c,r.merge[1]+=a,r.merge[0]===0&&r.merge[1]===0&&delete r.merge})})}scrollx(k,e){const{scroll:x,freeze:_,cols:u}=this,[,m]=_,[g,b,w]=fn.rangeReduceIf(m,u.len,0,0,k,y=>u.getWidth(y));let f=b;k>0&&(f+=w),x.x!==f&&(x.ci=k>0?g:0,x.x=f,e())}scrolly(k,e){const{scroll:x,freeze:_,rows:u}=this,[m]=_,[g,b,w]=fn.rangeReduceIf(m,u.len,0,0,k,y=>u.getHeight(y));let f=b;k>0&&(f+=w),x.y!==f&&(x.ri=k>0?g:0,x.y=f,e())}cellRect(k,e){const{rows:x,cols:_}=this,u=_.sumWidth(0,e),m=x.sumHeight(0,k),g=x.getCell(k,e);let b=_.getWidth(e),w=x.getHeight(k);if(g!==null&&g.merge){const[f,y]=g.merge;if(f>0)for(let h=1;h<=f;h+=1)w+=x.getHeight(k+h);if(y>0)for(let h=1;h<=y;h+=1)b+=_.getWidth(e+h)}return{left:u,top:m,width:b,height:w,cell:g}}getCell(k,e){return this.rows.getCell(k,e)}getCellTextOrDefault(k,e){const x=this.getCell(k,e);return x&&x.text?x.text:""}getCellStyle(k,e){const x=this.getCell(k,e);return x&&x.style!==void 0?this.styles[x.style]:null}getCellStyleOrDefault(k,e){const{styles:x,rows:_}=this,u=_.getCell(k,e),m=u&&u.style!==void 0?x[u.style]:{};return fn.merge(this.defaultStyle(),m)}getSelectedCellStyle(){const{ri:k,ci:e}=this.selector;return this.getCellStyleOrDefault(k,e)}setCellText(k,e,x,_){const{rows:u,history:m,validations:g}=this;_==="finished"?(u.setCellText(k,e,""),m.add(this.getData()),u.setCellText(k,e,x)):(u.setCellText(k,e,x),this.change(this.getData())),g.validate(k,e,x)}freezeIsActive(){const[k,e]=this.freeze;return k>0||e>0}setFreeze(k,e){this.changeData(()=>{this.freeze=[k,e]})}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(k,e){this.changeData(()=>{this.rows.setHeight(k,e)})}setColWidth(k,e){this.changeData(()=>{this.cols.setWidth(k,e)})}viewHeight(){const{view:k,showToolbar:e,showBottomBar:x}=this.settings;let _=k.height();return x&&(_-=ym),e&&(_-=pm),_}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[k,e]=this.freeze;return new kr(0,0,k-1,e-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:k,cols:e}=this,[x,_]=k.maxCell(),u=k.sumHeight(0,x+1),m=e.sumWidth(0,_+1);return new kr(0,0,x,_,m,u)}exceptRowTotalHeight(k,e){const{exceptRowSet:x,rows:_}=this,u=Array.from(x);let m=0;return u.forEach(g=>{if(ge){const b=_.getHeight(g);m+=b}}),m}viewRange(){const{scroll:k,rows:e,cols:x,freeze:_,exceptRowSet:u}=this;let{ri:m,ci:g}=k;m<=0&&([m]=_),g<=0&&([,g]=_);let[b,w]=[0,0],[f,y]=[e.len,x.len];for(let h=m;hthis.viewHeight()));h+=1);for(let h=g;hthis.viewWidth()));h+=1);return new kr(m,g,f,y,b,w)}eachMergesInView(k,e){this.merges.filterIntersects(k).forEach(x=>e(x))}hideRowsOrCols(){const{rows:k,cols:e,selector:x}=this,[_,u]=x.size(),{sri:m,sci:g,eri:b,eci:w}=x.range;if(_===k.len)for(let f=g;f<=w;f+=1)e.setHide(f,!0);else if(u===e.len)for(let f=m;f<=b;f+=1)k.setHide(f,!0)}unhideRowsOrCols(k,e){this[`${k}s`].unhide(e)}rowEach(k,e,x){let _=0;const{rows:u}=this,m=this.exceptRowSet,g=[...m];let b=0;for(let w=0;w0&&(x(w,_,f),_+=f,_>this.viewHeight()))break}}colEach(k,e,x){let _=0;const{cols:u}=this;for(let m=k;m<=e;m+=1){const g=u.getWidth(m);if(g>0&&(x(m,_,g),_+=g,_>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(k){const{styles:e}=this;for(let x=0;x{if(e==="merges"||e==="rows"||e==="cols"||e==="validations")this[e].setData(k[e]);else if(e==="freeze"){const[x,_]=Ti(k[e]);this.freeze=[_,x]}else e==="autofilter"?this.autoFilter.setData(k[e]):k[e]!==void 0&&(this[e]=k[e])}),this}getData(){const{name:k,freeze:e,styles:x,merges:_,rows:u,cols:m,validations:g,autoFilter:b}=this;return{name:k,freeze:hi(e[1],e[0]),styles:x,merges:_.getData(),rows:u.getData(),cols:m.getData(),validations:g.getData(),autofilter:b.getData()}}}function ln(X,k,e){X.addEventListener(k,e)}function Ko(X,k,e){X.removeEventListener(k,e)}function _a(X){X.xclickoutside&&(Ko(window.document.body,"click",X.xclickoutside),delete X.xclickoutside)}function Va(X,k){X.xclickoutside=e=>{e.detail===2||X.contains(e.target)||(k?k(X):(X.hide(),_a(X)))},ln(window.document.body,"click",X.xclickoutside)}function sc(X,k,e){ln(X,"mousemove",k);const x=X;x.xEvtUp=_=>{Ko(X,"mousemove",k),Ko(X,"mouseup",X.xEvtUp),e(_)},ln(X,"mouseup",X.xEvtUp)}function Pl(X,k,e,x){let _="";Math.abs(X)>Math.abs(k)?(_=X>0?"right":"left",x(_,X,e)):(_=k>0?"down":"up",x(_,k,e))}function wm(X,{move:k,end:e}){let x=0,_=0;ln(X,"touchstart",u=>{const{pageX:m,pageY:g}=u.touches[0];x=m,_=g}),ln(X,"touchmove",u=>{if(!k)return;const{pageX:m,pageY:g}=u.changedTouches[0],b=m-x,w=g-_;(Math.abs(b)>10||Math.abs(w)>10)&&(Pl(b,w,u,k),x=m,_=g),u.preventDefault()}),ln(X,"touchend",u=>{if(!e)return;const{pageX:m,pageY:g}=u.changedTouches[0],b=m-x,w=g-_;Pl(b,w,u,e)})}function xm(){const X=new Map;function k(m,g){const b=()=>{const f=X.get(m);return Array.isArray(f)&&f.push(g)||!1},w=()=>X.set(m,[].concat(g));return X.has(m)&&b()||w()}function e(m,g){const b=()=>{const w=X.get(m);for(const f of w)f.call(null,...g)};return X.has(m)&&b()}function x(m,g){const b=()=>{const w=X.get(m),f=w.indexOf(g);return f>=0&&w.splice(f,1)&&X.get(m).length===0&&X.delete(m)};return X.has(m)&&b()}function _(m,g){const b=(...w)=>{g.call(null,...w),x(m,b)};return k(m,b)}function u(){X.clear()}return{get current(){return X},on:k,once:_,fire:e,removeListener:x,removeAllListeners:u}}const lt="x-spreadsheet";class Al{constructor(k=!1,e){this.moving=!1,this.vertical=k,this.el=We("div",`${lt}-resizer ${k?"vertical":"horizontal"}`).children(this.unhideHoverEl=We("div",`${lt}-resizer-hover`).on("dblclick.stop",x=>this.mousedblclickHandler(x)).css("position","absolute").hide(),this.hoverEl=We("div",`${lt}-resizer-hover`).on("mousedown.stop",x=>this.mousedownHandler(x)),this.lineEl=We("div",`${lt}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=e,this.unhideFn=()=>{}}showUnhide(k){this.unhideIndex=k,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(k,e){const{moving:x,vertical:_,hoverEl:u,lineEl:m,el:g,unhideHoverEl:b}=this;if(x)return;this.cRect=k;const{left:w,top:f,width:y,height:h}=k;g.offset({left:_?w+y-5:w,top:_?f:f+h-5}).show(),u.offset({width:_?5:y,height:_?h:5}),m.offset({width:_?0:e.width,height:_?e.height:0}),b.offset({left:_?5-y:w,top:_?f:5-h,width:_?5:y,height:_?h:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(k){let e=k;const{el:x,lineEl:_,cRect:u,vertical:m,minDistance:g}=this;let b=m?u.width:u.height;_.show(),sc(window,w=>{this.moving=!0,e!==null&&w.buttons===1&&(m?(b+=w.movementX,b>g&&x.css("left",`${u.left+b}px`)):(b+=w.movementY,b>g&&x.css("top",`${u.top+b}px`)),e=w)},()=>{e=null,_.hide(),this.moving=!1,this.hide(),this.finishedFn&&(b{}).on("scroll.stop",e=>{const{scrollTop:x,scrollLeft:_}=e.target;this.moveFn&&this.moveFn(this.vertical?x:_,e)})}move(k){return this.el.scroll(k),this}scroll(){return this.el.scroll()}set(k,e){const x=k-1;if(e>x){const _=this.vertical?"height":"width";this.el.css(_,`${x-15}px`).show(),this.contentEl.css(this.vertical?"width":"height","1px").css(_,`${e}px`)}else this.el.hide();return this}}const No=2*2-1;let cf=10;class Fo{constructor(k=!1){this.useHideInput=k,this.inputChange=()=>{},this.cornerEl=We("div",`${lt}-selector-corner`),this.areaEl=We("div",`${lt}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=We("div",`${lt}-selector-clipboard`).hide(),this.autofillEl=We("div",`${lt}-selector-autofill`).hide(),this.el=We("div",`${lt}-selector`).css("z-index",`${cf}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),k&&(this.hideInput=We("input","").on("compositionend",e=>{this.inputChange(e.target.value)}),this.el.child(this.hideInputDiv=We("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=We("div","hide-input").child(this.hideInput))),cf+=1}setOffset(k){return this.el.offset(k).show(),this}hide(){return this.el.hide(),this}setAreaOffset(k){const{left:e,top:x,width:_,height:u}=k,m={width:_-No+.8,height:u-No+.8,left:e-.8,top:x-.8};this.areaEl.offset(m).show(),this.useHideInput&&(this.hideInputDiv.offset(m),this.hideInput.val("").focus())}setClipboardOffset(k){const{left:e,top:x,width:_,height:u}=k;this.clipboardEl.offset({left:e,top:x,width:_-5,height:u-5})}showAutofill(k){const{left:e,top:x,width:_,height:u}=k;this.autofillEl.offset({width:_-No,height:u-No,left:e,top:x}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function _f(X){const{data:k}=this,{left:e,top:x,width:_,height:u,scroll:m,l:g,t:b}=X,w=k.freezeTotalWidth(),f=k.freezeTotalHeight();let y=e-w;w>g&&(y-=m.x);let h=x-f;return f>b&&(h-=m.y),{left:y,top:h,width:_,height:u}}function wf(X){const{data:k}=this,{left:e,width:x,height:_,l:u,t:m,scroll:g}=X,b=k.freezeTotalWidth();let w=e-b;return b>u&&(w-=g.x),{left:w,top:m,width:x,height:_}}function xf(X){const{data:k}=this,{top:e,width:x,height:_,l:u,t:m,scroll:g}=X,b=k.freezeTotalHeight();let w=e-b;return b>m&&(w-=g.y),{left:u,top:w,width:x,height:_}}function hf(X){const{br:k}=this;k.setAreaOffset(_f.call(this,X))}function Sm(X){const{tl:k}=this;k.setAreaOffset(X)}function fc(X){const{t:k}=this;k.setAreaOffset(wf.call(this,X))}function uc(X){const{l:k}=this;k.setAreaOffset(xf.call(this,X))}function lc(X){const{l:k}=this;k.setClipboardOffset(xf.call(this,X))}function df(X){const{br:k}=this;k.setClipboardOffset(_f.call(this,X))}function km(X){const{tl:k}=this;k.setClipboardOffset(X)}function cc(X){const{t:k}=this;k.setClipboardOffset(wf.call(this,X))}function Il(X){hf.call(this,X),Sm.call(this,X),fc.call(this,X),uc.call(this,X)}function Dl(X){df.call(this,X),km.call(this,X),cc.call(this,X),lc.call(this,X)}class Om{constructor(k){this.inputChange=()=>{},this.data=k,this.br=new Fo(!0),this.t=new Fo,this.l=new Fo,this.tl=new Fo,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=We("div",`${lt}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,cf+=1}resetData(k){this.data=k,this.range=k.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:k,tl:e,t:x,l:_,br:u}=this,m=k.freezeTotalHeight(),g=k.freezeTotalWidth();m>0||g>0?(e.setOffset({width:g,height:m}),x.setOffset({left:g,height:m}),_.setOffset({top:m,width:g}),u.setOffset({left:g,top:m})):(e.hide(),x.hide(),_.hide(),u.setOffset({left:0,top:0}))}resetAreaOffset(){const k=this.data.getSelectedRect(),e=this.data.getClipboardRect();Il.call(this,k),Dl.call(this,e),this.resetOffset()}resetBRTAreaOffset(){const k=this.data.getSelectedRect(),e=this.data.getClipboardRect();hf.call(this,k),fc.call(this,k),df.call(this,e),cc.call(this,e),this.resetOffset()}resetBRLAreaOffset(){const k=this.data.getSelectedRect(),e=this.data.getClipboardRect();hf.call(this,k),uc.call(this,k),df.call(this,e),lc.call(this,e),this.resetOffset()}set(k,e,x=!0){const{data:_}=this,u=_.calSelectedRangeByStart(k,e),{sri:m,sci:g}=u;if(x){let[b,w]=[k,e];k<0&&(b=0),e<0&&(w=0),_.selector.setIndexes(b,w),this.indexes=[b,w]}this.moveIndexes=[m,g],this.range=u,this.resetAreaOffset(),this.el.show()}setEnd(k,e,x=!0){const{data:_,lastri:u,lastci:m}=this;if(x){if(k===u&&e===m)return;this.lastri=k,this.lastci=e}this.range=_.calSelectedRangeByEnd(k,e),Il.call(this,this.data.getSelectedRect())}reset(){const{eri:k,eci:e}=this.data.selector.range;this.setEnd(k,e)}showAutofill(k,e){if(k===-1&&e===-1)return;const{sri:x,sci:_,eri:u,eci:m}=this.range,[g,b]=[k,e],w=x-k,f=_-e,y=u-k,h=m-e;if(f>0)this.arange=new kr(x,b,u,_-1);else if(w>0)this.arange=new kr(g,_,x-1,m);else if(h<0)this.arange=new kr(x,m+1,u,b);else if(y<0)this.arange=new kr(u+1,_,g,m);else{this.arange=null;return}if(this.arange!==null){const l=this.data.getRect(this.arange);l.width+=2,l.height+=2;const{br:d,l:s,t:v,tl:c}=this;d.showAutofill(_f.call(this,l)),s.showAutofill(xf.call(this,l)),v.showAutofill(wf.call(this,l)),c.showAutofill(l)}}hideAutofill(){["br","l","t","tl"].forEach(k=>{this[k].hideAutofill()})}showClipboard(){const k=this.data.getClipboardRect();Dl.call(this,k),["br","l","t","tl"].forEach(e=>{this[e].showClipboard()})}hideClipboard(){["br","l","t","tl"].forEach(k=>{this[k].hideClipboard()})}}function Em(X){X.preventDefault(),X.stopPropagation();const{filterItems:k}=this;k.length<=0||(this.itemIndex>=0&&k[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=k.length-1),k[this.itemIndex].toggle())}function Tm(X){X.stopPropagation();const{filterItems:k}=this;k.length<=0||(this.itemIndex>=0&&k[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>k.length-1&&(this.itemIndex=0),k[this.itemIndex].toggle())}function Nl(X){X.preventDefault();const{filterItems:k}=this;k.length<=0||(X.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),k[this.itemIndex].el.click(),this.hide())}function Rm(X){const{keyCode:k}=X;switch(X.ctrlKey&&X.stopPropagation(),k){case 37:X.stopPropagation();break;case 38:Em.call(this,X);break;case 39:X.stopPropagation();break;case 40:Tm.call(this,X);break;case 13:Nl.call(this,X);break;case 9:Nl.call(this,X);break;default:X.stopPropagation();break}}class hc{constructor(k,e,x="200px"){this.filterItems=[],this.items=k,this.el=We("div",`${lt}-suggest`).css("width",x).hide(),this.itemClick=e,this.itemIndex=-1}setOffset(k){this.el.cssRemoveKeys("top","bottom").offset(k)}hide(){const{el:k}=this;this.filterItems=[],this.itemIndex=-1,k.hide(),_a(this.el.parent())}setItems(k){this.items=k}search(k){let{items:e}=this;if(/^\s*$/.test(k)||(e=e.filter(_=>(_.key||_).startsWith(k.toUpperCase()))),e=e.map(_=>{let{title:u}=_;u?typeof u=="function"&&(u=u()):u=_;const m=We("div",`${lt}-item`).child(u).on("click.stop",()=>{this.itemClick(_),this.hide()});return _.label&&m.child(We("div","label").html(_.label)),m}),this.filterItems=e,e.length<=0)return;const{el:x}=this;x.html("").children(...e).show(),Va(x.parent(),()=>{this.hide()})}bindInputEvents(k){k.on("keydown",e=>Rm.call(this,e))}}class Kr extends Xi{constructor(k){super("div",`${lt}-icon`),this.iconNameEl=We("div",`${lt}-icon-img ${k}`),this.child(this.iconNameEl)}setName(k){this.iconNameEl.className(`${lt}-icon-img ${k}`)}}function Fl(X,k){X.setMonth(X.getMonth()+k)}function Cm(X,k){const e=new Date(X);return e.setDate(k-X.getDay()+1),e}function Pm(X,k,e){const x=new Date(X,k,1,23,59,59),_=[[],[],[],[],[],[]];for(let u=0;u<6;u+=1)for(let m=0;m<7;m+=1){const g=u*7+m,b=Cm(x,g),w=b.getMonth()!==k,f=b.getMonth()===e.getMonth()&&b.getDate()===e.getDate();_[u][m]={d:b,disabled:w,active:f}}return _}class Am{constructor(k){this.value=k,this.cvalue=new Date(k),this.headerLeftEl=We("div","calendar-header-left"),this.bodyEl=We("tbody",""),this.buildAll(),this.el=We("div","x-spreadsheet-calendar").children(We("div","calendar-header").children(this.headerLeftEl,We("div","calendar-header-right").children(We("a","calendar-prev").on("click.stop",()=>this.prev()).child(new Kr("chevron-left")),We("a","calendar-next").on("click.stop",()=>this.next()).child(new Kr("chevron-right")))),We("table","calendar-body").children(We("thead","").child(We("tr","").children(...Cr("calendar.weeks").map(e=>We("th","cell").child(e)))),this.bodyEl)),this.selectChange=()=>{}}setValue(k){this.value=k,this.cvalue=new Date(k),this.buildAll()}prev(){const{value:k}=this;Fl(k,-1),this.buildAll()}next(){const{value:k}=this;Fl(k,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:k}=this;this.headerLeftEl.html(`${Cr("calendar.months")[k.getMonth()]} ${k.getFullYear()}`)}buildBody(){const{value:k,cvalue:e,bodyEl:x}=this,u=Pm(k.getFullYear(),k.getMonth(),e).map(m=>{const g=m.map(b=>{let w="cell";return b.disabled&&(w+=" disabled"),b.active&&(w+=" active"),We("td","").child(We("div",w).on("click.stop",()=>{this.selectChange(b.d)}).child(b.d.getDate().toString()))});return We("tr","").children(...g)});x.html("").children(...u)}}class Mm{constructor(){this.calendar=new Am(new Date),this.el=We("div",`${lt}-datepicker`).child(this.calendar.el).hide()}setValue(k){const{calendar:e}=this;return typeof k=="string"?/^\d{4}-\d{1,2}-\d{1,2}$/.test(k)&&e.setValue(new Date(k.replace(new RegExp("-","g"),"/"))):k instanceof Date&&e.setValue(k),this}change(k){this.calendar.selectChange=e=>{k(e),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function Go(){const{inputText:X}=this;if(!/^\s*$/.test(X)){const{textlineEl:k,textEl:e,areaOffset:x}=this,_=X.split(` +`),u=Math.max(..._.map(y=>y.length)),g=k.offset().width/X.length,b=(u+1)*g+5,w=this.viewFn().width-x.left-g;let f=_.length;if(b>x.width){let y=b;b>w&&(y=w,f+=parseInt(b/w,10),f+=b%w>0?1:0),e.css("width",`${y}px`)}f*=this.rowHeight,f>x.height&&e.css("height",`${f}px`)}}function Im({target:X},k){const{value:e,selectionEnd:x}=X,_=`${e.slice(0,x)}${k}${e.slice(x)}`;X.value=_,X.setSelectionRange(x+1,x+1),this.inputText=_,this.textlineEl.html(_),Go.call(this)}function Dm(X){const{keyCode:k,altKey:e}=X;k!==13&&k!==9&&X.stopPropagation(),k===13&&e&&(Im.call(this,X,` +`),X.stopPropagation()),k===13&&!e&&X.preventDefault()}function Nm(X){const k=X.target.value,{suggest:e,textlineEl:x,validator:_}=this,{cell:u}=this;if(u!==null)if("editable"in u&&u.editable===!0||u.editable===void 0){if(this.inputText=k,_)_.type==="list"?e.search(k):e.hide();else{const m=k.lastIndexOf("=");m!==-1?e.search(k.substring(m+1)):e.hide()}x.html(k),Go.call(this),this.change("input",k)}else X.target.value=u.text;else{if(this.inputText=k,_)_.type==="list"?e.search(k):e.hide();else{const m=k.lastIndexOf("=");m!==-1?e.search(k.substring(m+1)):e.hide()}x.html(k),Go.call(this),this.change("input",k)}}function Fm(X){const{el:k}=this.textEl;setTimeout(()=>{k.focus(),k.setSelectionRange(X,X)},0)}function dc(X,k){const{textEl:e,textlineEl:x}=this;e.el.blur(),e.val(X),x.html(X),Fm.call(this,k)}function Bm(X){const{inputText:k,validator:e}=this;let x=0;if(e&&e.type==="list")this.inputText=X,x=this.inputText.length;else{const _=k.lastIndexOf("="),u=k.substring(0,_+1);let m=k.substring(_+1);m.indexOf(")")!==-1?m=m.substring(m.indexOf(")")):m="",this.inputText=`${u+X.key}(`,x=this.inputText.length,this.inputText+=`)${m}`}dc.call(this,this.inputText,x)}function jm(){this.suggest.setItems(this.formulas)}function Lm(X){let k=X.getMonth()+1,e=X.getDate();return k<10&&(k=`0${k}`),e<10&&(e=`0${e}`),`${X.getFullYear()}-${k}-${e}`}class zm{constructor(k,e,x){this.viewFn=e,this.rowHeight=x,this.formulas=k,this.suggest=new hc(k,_=>{Bm.call(this,_)}),this.datepicker=new Mm,this.datepicker.change(_=>{this.setText(Lm(_)),this.clear()}),this.areaEl=We("div",`${lt}-editor-area`).children(this.textEl=We("textarea","").on("input",_=>Nm.call(this,_)).on("paste.stop",()=>{}).on("keydown",_=>Dm.call(this,_)),this.textlineEl=We("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",()=>{}).on("mousedown.stop",()=>{}),this.el=We("div",`${lt}-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(k,e){this.freeze.w=k,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(""),jm.call(this),this.datepicker.hide()}setOffset(k,e="top"){const{textEl:x,areaEl:_,suggest:u,freeze:m,el:g}=this;if(k){this.areaOffset=k;const{left:b,top:w,width:f,height:y,l:h,t:l}=k,d={left:0,top:0};m.w>h&&m.h>l||(m.wh?d.top=m.h:m.h>l&&(d.left=m.w)),g.offset(d),_.offset({left:b-d.left-.8,top:w-d.top-.8}),x.offset({width:f-9+.8,height:y-3+.8});const s={left:0};s[e]=y,u.setOffset(s),u.hide()}}setCell(k,e){const{el:x,datepicker:_,suggest:u}=this;x.show(),this.cell=k;const m=k&&k.text||"";if(this.setText(m),this.validator=e,e){const{type:g}=e;g==="date"&&(_.show(),/^\s*$/.test(m)||_.setValue(m)),g==="list"&&(u.setItems(e.values()),u.search(""))}}setText(k){this.inputText=k,dc.call(this,k,k.length),Go.call(this)}}class Li extends Xi{constructor(k,e=""){super("div",`${lt}-button ${e}`),this.child(Cr(`button.${k}`))}}function Zo(){return window.devicePixelRatio||1}function Sf(){return Zo()-.5}function zt(X){return parseInt(X*Zo(),10)}function ya(X){const k=zt(X);return k>0?k-.5:.5}class Xm{constructor(k,e,x,_,u=0){this.x=k,this.y=e,this.width=x,this.height=_,this.padding=u,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:k,bottom:e,left:x,right:_}){k&&(this.borderTop=k),_&&(this.borderRight=_),e&&(this.borderBottom=e),x&&(this.borderLeft=x)}innerWidth(){return this.width-this.padding*2-2}innerHeight(){return this.height-this.padding*2-2}textx(k){const{width:e,padding:x}=this;let{x:_}=this;return k==="left"?_+=x:k==="center"?_+=e/2:k==="right"&&(_+=e-x),_}texty(k,e){const{height:x,padding:_}=this;let{y:u}=this;return k==="top"?u+=_:k==="middle"?u+=x/2-e/2:k==="bottom"&&(u+=x-_-e),u}topxys(){const{x:k,y:e,width:x}=this;return[[k,e],[k+x,e]]}rightxys(){const{x:k,y:e,width:x,height:_}=this;return[[k+x,e],[k+x,e+_]]}bottomxys(){const{x:k,y:e,width:x,height:_}=this;return[[k,e+_],[k+x,e+_]]}leftxys(){const{x:k,y:e,height:x}=this;return[[k,e],[k,e+x]]}}function Bl(X,k,e,x,_,u,m){const g={x:0,y:0};X==="underline"?_==="bottom"?g.y=0:_==="top"?g.y=-(u+2):g.y=-u/2:X==="strike"&&(_==="bottom"?g.y=u/2:_==="top"&&(g.y=-(u/2+2))),x==="center"?g.x=m/2:x==="right"&&(g.x=m),this.line([k-g.x,e-g.y],[k-g.x+m,e-g.y])}class pc{constructor(k,e,x){this.el=k,this.ctx=k.getContext("2d"),this.resize(e,x),this.ctx.scale(Zo(),Zo())}resize(k,e){this.el.style.width=`${k}px`,this.el.style.height=`${e}px`,this.el.width=zt(k),this.el.height=zt(e)}clear(){const{width:k,height:e}=this.el;return this.ctx.clearRect(0,0,k,e),this}attr(k){return Object.assign(this.ctx,k),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(k,e){return this.ctx.translate(zt(k),zt(e)),this}scale(k,e){return this.ctx.scale(k,e),this}clearRect(k,e,x,_){return this.ctx.clearRect(k,e,x,_),this}fillRect(k,e,x,_){return this.ctx.fillRect(zt(k)-.5,zt(e)-.5,zt(x),zt(_)),this}fillText(k,e,x){return this.ctx.fillText(k,zt(e),zt(x)),this}text(k,e,x={},_=!0){const{ctx:u}=this,{align:m,valign:g,font:b,color:w,strike:f,underline:y}=x,h=e.textx(m);u.save(),u.beginPath(),this.attr({textAlign:m,textBaseline:g,font:`${b.italic?"italic":""} ${b.bold?"bold":""} ${zt(b.size)}px ${b.name}`,fillStyle:w,strokeStyle:w});const l=`${k}`.split(` +`),d=e.innerWidth(),s=[];l.forEach(a=>{const r=u.measureText(a).width;if(_&&r>zt(d)){let t={w:0,len:0,start:0};for(let i=0;i=zt(d)&&(s.push(a.substr(t.start,t.len)),t={w:0,len:0,start:i}),t.len+=1,t.w+=u.measureText(a[i]).width+1;t.len>0&&s.push(a.substr(t.start,t.len))}else s.push(a)});const v=(s.length-1)*(b.size+2);let c=e.texty(g,v);return s.forEach(a=>{const r=u.measureText(a).width;this.fillText(a,h,c),f&&Bl.call(this,"strike",h,c,m,g,b.size,r),y&&Bl.call(this,"underline",h,c,m,g,b.size,r),c+=b.size+2}),u.restore(),this}border(k,e){const{ctx:x}=this;return x.lineWidth=Sf,x.strokeStyle=e,k==="medium"?x.lineWidth=zt(2)-.5:k==="thick"?x.lineWidth=zt(3):k==="dashed"?x.setLineDash([zt(3),zt(2)]):k==="dotted"?x.setLineDash([zt(1),zt(1)]):k==="double"&&x.setLineDash([zt(2),0]),this}line(...k){const{ctx:e}=this;if(k.length>1){e.beginPath();const[x,_]=k[0];e.moveTo(ya(x),ya(_));for(let u=1;u{const k=[],e=[];let x=[],_=0,u="",m=1,g="";for(let b=0;b="a"&&w<="z")x.push(w.toUpperCase());else if(w>="0"&&w<="9"||w>="A"&&w<="Z"||w===".")x.push(w);else if(w==='"'){for(b+=1;X.charAt(b)!=='"';)x.push(X.charAt(b)),b+=1;e.push(`"${x.join("")}`),x=[]}else if(w==="-"&&/[+\-*/,(]/.test(g))x.push(w);else{if(w!=="("&&x.length>0&&e.push(x.join("")),w===")"){let f=k.pop();if(_===2)try{const[y,h]=Ti(e.pop()),[l,d]=Ti(e.pop());let s=0;for(let v=l;v<=y;v+=1)for(let c=d;c<=h;c+=1)e.push(hi(v,c)),s+=1;e.push([f,s])}catch{}else if(_===1||_===3)_===3&&e.push(u),e.push([f,m]),m=1;else for(;f!=="("&&(e.push(f),!(k.length<=0));)f=k.pop();_=0}else if(w==="="||w===">"||w==="<"){const f=X.charAt(b+1);u=w,(f==="="||f==="-")&&(u+=f,b+=1),_=3}else if(w===":")_=2;else if(w===",")_===3&&e.push(u),_=1,m+=1;else if(w==="("&&x.length>0)k.push(x.join(""));else{if(k.length>0&&(w==="+"||w==="-")){let f=k[k.length-1];if(f!=="("&&e.push(k.pop()),f==="*"||f==="/")for(;k.length>0&&(f=k[k.length-1],f!=="(");)e.push(k.pop())}else if(k.length>0){const f=k[k.length-1];(f==="*"||f==="/")&&e.push(k.pop())}k.push(w)}x=[]}g=w}}for(x.length>0&&e.push(x.join(""));k.length>0;)e.push(k.pop());return e},Wm=(X,k)=>{const[e]=X;let x=X;if(e==='"')return X.substring(1);let _=1;if(e==="-"&&(x=X.substring(1),_=-1),x[0]>="0"&&x[0]<="9")return _*Number(x);const[u,m]=Ti(x);return _*k(u,m)},$m=(X,k,e,x)=>{const _=[];for(let u=0;u"||g==="<"){let b=_.pop();Number.isNaN(b)||(b=Number(b));let w=_.pop();Number.isNaN(w)||(w=Number(w));let f=!1;g==="="?f=w===b:m===">"?f=w>b:m===">="?f=w>=b:m==="<"?f=w="a"&&g<="z"||g>="A"&&g<="Z")&&x.push(m),_.push(Wm(m,e)),x.pop()}}return _[0]},yc=(X,k,e,x=[])=>{if(X[0]==="="){const _=Um(X.substring(1));return _.length<=0?X:$m(_,k,(u,m)=>yc(e(u,m),k,e,x),x)}return X},Vm={render:yc},kf=[{key:"SUM",title:Jt("formula.sum"),render:X=>X.reduce((k,e)=>ji("+",k,e),0)},{key:"AVERAGE",title:Jt("formula.average"),render:X=>X.reduce((k,e)=>Number(k)+Number(e),0)/X.length},{key:"MAX",title:Jt("formula.max"),render:X=>Math.max(...X.map(k=>Number(k)))},{key:"MIN",title:Jt("formula.min"),render:X=>Math.min(...X.map(k=>Number(k)))},{key:"IF",title:Jt("formula._if"),render:([X,k,e])=>X?k:e},{key:"AND",title:Jt("formula.and"),render:X=>X.every(k=>k)},{key:"OR",title:Jt("formula.or"),render:X=>X.some(k=>k)},{key:"CONCAT",title:Jt("formula.concat"),render:X=>X.join("")}],Km=kf,vc={};kf.forEach(X=>{vc[X.key]=X});const va=X=>X,Bo=X=>{if(/^(-?\d*.?\d*)$/.test(X)){const k=Number(X).toFixed(2).toString(),[e,...x]=k.split("\\.");return[e.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...x]}return X},Ha=[{key:"normal",title:Jt("format.normal"),type:"string",render:va},{key:"text",title:Jt("format.text"),type:"string",render:va},{key:"number",title:Jt("format.number"),type:"number",label:"1,000.12",render:Bo},{key:"percent",title:Jt("format.percent"),type:"number",label:"10.12%",render:X=>`${X}%`},{key:"rmb",title:Jt("format.rmb"),type:"number",label:"¥10.00",render:X=>`¥${Bo(X)}`},{key:"usd",title:Jt("format.usd"),type:"number",label:"$10.00",render:X=>`$${Bo(X)}`},{key:"eur",title:Jt("format.eur"),type:"number",label:"€10.00",render:X=>`€${Bo(X)}`},{key:"date",title:Jt("format.date"),type:"date",label:"26/09/2008",render:va},{key:"time",title:Jt("format.time"),type:"date",label:"15:59:00",render:va},{key:"datetime",title:Jt("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:va},{key:"duration",title:Jt("format.duration"),type:"date",label:"24:01:00",render:va}],mc={};Ha.forEach(X=>{mc[X.key]=X});const Gm=5,Zm={fillStyle:"#f4f5f8"},Ym={fillStyle:"#fff",lineWidth:Sf,strokeStyle:"#e6e6e6"};function Jm(){return{textAlign:"center",textBaseline:"middle",font:`500 ${zt(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:Sf(),strokeStyle:"#e6e6e6"}}function bc(X,k,e,x=0){const{left:_,top:u,width:m,height:g}=X.cellRect(k,e);return new Xm(_,u+x,m,g,Gm)}function Yo(X,k,e,x,_=0){const{sortedRowMap:u,rows:m,cols:g}=k;if(m.isHide(e)||g.isHide(x))return;let b=e;u.has(e)&&(b=u.get(e));const w=k.getCell(b,x);if(w===null)return;let f=!1;"editable"in w&&w.editable===!1&&(f=!0);const y=k.getCellStyleOrDefault(b,x),h=bc(k,e,x,_);h.bgcolor=y.bgcolor,y.border!==void 0&&(h.setBorders(y.border),X.strokeBorders(h)),X.rect(h,()=>{let l="";k.settings.evalPaused?l=w.text||"":l=Vm.render(w.text||"",vc,(v,c)=>k.getCellTextOrDefault(c,v)),y.format&&(l=mc[y.format].render(l));const d=Object.assign({},y.font);d.size=Hm(d.size),X.text(l,h,{align:y.align,valign:y.valign,font:d,color:y.color,strike:y.strike,underline:y.underline},y.textwrap),k.validations.getError(e,x)&&X.error(h),f&&X.frozen(h)})}function Qm(X){const{data:k,draw:e}=this;if(X){const{autoFilter:x}=k;if(!x.active())return;const _=x.hrange();X.intersects(_)&&_.each((u,m)=>{const g=bc(k,u,m);e.dropdown(g)})}}function jo(X,k,e,x,_){const{draw:u,data:m}=this;u.save(),u.translate(k,e).translate(x,_);const{exceptRowSet:g}=m,b=y=>{const h=g.has(y);if(h){const l=m.rows.getHeight(y);u.translate(0,-l)}return!h},w=m.exceptRowTotalHeight(X.sri,X.eri);u.save(),u.translate(0,-w),X.each((y,h)=>{Yo(u,m,y,h)},y=>b(y)),u.restore();const f=new Set;u.save(),u.translate(0,-w),m.eachMergesInView(X,({sri:y,sci:h,eri:l})=>{if(!g.has(y))Yo(u,m,y,h);else if(!f.has(y)){f.add(y);const d=m.rows.sumHeight(y,l+1);u.translate(0,-d)}}),u.restore(),Qm.call(this,X),u.restore()}function Ll(X,k,e,x){const{draw:_}=this;_.save(),_.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(X,k,e,x),_.restore()}function Lo(X,k,e,x,_,u){const{draw:m,data:g}=this,b=k.h,w=k.w,f=u+x,y=_+e;m.save(),m.attr(Zm),(X==="all"||X==="left")&&m.fillRect(0,f,e,b),(X==="all"||X==="top")&&m.fillRect(y,0,w,x);const{sri:h,sci:l,eri:d,eci:s}=g.selector.range;m.attr(Jm()),(X==="all"||X==="left")&&(g.rowEach(k.sri,k.eri,(v,c,a)=>{const r=f+c,t=v;m.line([0,r],[e,r]),h<=t&&t0&&g.rows.isHide(v-1)&&(m.save(),m.attr({strokeStyle:"#c6c6c6"}),m.line([5,r+5],[e-5,r+5]),m.restore())}),m.line([0,b+f],[e,b+f]),m.line([e,f],[e,b+f])),(X==="all"||X==="top")&&(g.colEach(k.sci,k.eci,(v,c,a)=>{const r=y+c,t=v;m.line([r,0],[r,x]),l<=t&&t0&&g.cols.isHide(v-1)&&(m.save(),m.attr({strokeStyle:"#c6c6c6"}),m.line([r+5,5],[r+5,x-5]),m.restore())}),m.line([w+y,0],[w+y,x]),m.line([0,x],[w+y,x])),m.restore()}function qm(X,k){const{draw:e}=this;e.save(),e.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,X,k),e.restore()}function zo({sri:X,sci:k,eri:e,eci:x,w:_,h:u},m,g,b,w){const{draw:f,data:y}=this,{settings:h}=y;if(f.save(),f.attr(Ym).translate(m+b,g+w),!h.showGrid){f.restore();return}y.rowEach(X,e,(l,d,s)=>{l!==X&&f.line([0,d],[_,d]),l===e&&f.line([0,d+s],[_,d+s])}),y.colEach(k,x,(l,d,s)=>{l!==k&&f.line([d,0],[d,u]),l===x&&f.line([d+s,0],[d+s,u])}),f.restore()}function eb(X,k,e,x){const{draw:_,data:u}=this,m=u.viewWidth()-X,g=u.viewHeight()-k;_.save().translate(X,k).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),_.line([0,x],[m,x]),_.line([e,0],[e,g]),_.restore()}class tb{constructor(k,e){this.el=k,this.draw=new pc(k,e.viewWidth(),e.viewHeight()),this.data=e}resetData(k){this.data=k,this.render()}render(){const{data:k}=this,{rows:e,cols:x}=k,_=x.indexWidth,u=e.height;this.draw.resize(k.viewWidth(),k.viewHeight()),this.clear();const m=k.viewRange(),g=k.freezeTotalWidth(),b=k.freezeTotalHeight(),{x:w,y:f}=k.scroll;zo.call(this,m,_,u,g,b),jo.call(this,m,_,u,-w,-f),Lo.call(this,"all",m,_,u,g,b),qm.call(this,_,u);const[y,h]=k.freeze;if(y>0||h>0){if(y>0){const d=m.clone();d.sri=0,d.eri=y-1,d.h=b,zo.call(this,d,_,u,g,0),jo.call(this,d,_,u,-w,0),Lo.call(this,"top",d,_,u,g,0)}if(h>0){const d=m.clone();d.sci=0,d.eci=h-1,d.w=g,zo.call(this,d,_,u,0,b),Lo.call(this,"left",d,_,u,0,b),jo.call(this,d,_,u,0,-f)}const l=k.freezeViewRange();zo.call(this,l,_,u,0,0),Lo.call(this,"all",l,_,u,0,0),jo.call(this,l,_,u,0,0),eb.call(this,_,u,g,b)}}clear(){this.draw.clear()}}const Xo=[["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]],yf=["landscape","portrait"];function Jo(X){return parseInt(96*X,10)}function zl(X){X==="cancel"?this.el.hide():this.toPrint()}function rb(X){const{paper:k}=this,{value:e}=X.target,x=Xo[e];k.w=Jo(x[1]),k.h=Jo(x[2]),this.preview()}function nb(X){const{paper:k}=this,{value:e}=X.target,x=yf[e];k.orientation=x,this.preview()}let ib=class{constructor(k){this.paper={w:Jo(Xo[0][1]),h:Jo(Xo[0][2]),padding:50,orientation:yf[0],get width(){return this.orientation==="landscape"?this.h:this.w},get height(){return this.orientation==="landscape"?this.w:this.h}},this.data=k,this.el=We("div",`${lt}-print`).children(We("div",`${lt}-print-bar`).children(We("div","-title").child("Print settings"),We("div","-right").children(We("div",`${lt}-buttons`).children(new Li("cancel").on("click",zl.bind(this,"cancel")),new Li("next","primary").on("click",zl.bind(this,"next"))))),We("div",`${lt}-print-content`).children(this.contentEl=We("div","-content"),We("div","-sider").child(We("form","").children(We("fieldset","").children(We("label","").child(`${Cr("print.size")}`),We("select","").children(...Xo.map((e,x)=>We("option","").attr("value",x).child(`${e[0]} ( ${e[1]}''x${e[2]}'' )`))).on("change",rb.bind(this))),We("fieldset","").children(We("label","").child(`${Cr("print.orientation")}`),We("select","").children(...yf.map((e,x)=>We("option","").attr("value",x).child(`${Cr("print.orientations")[x]}`))).on("change",nb.bind(this))))))).hide()}resetData(k){this.data=k}preview(){const{data:k,paper:e}=this,{width:x,height:_,padding:u}=e,m=x-u*2,g=_-u*2,b=k.contentRange(),w=parseInt(b.h/g,10)+1,f=m/b.w;let y=u;const h=u;f>1&&(y+=(m-b.w)/2);let l=0,d=0;this.contentEl.html(""),this.canvases=[];const s={sri:0,sci:0,eri:0,eci:0};for(let v=0;v{Yo(i,k,o,p,n)}),i.restore(),s.sri=s.eri,s.sci=s.eci,d+=a,this.contentEl.child(We("div",`${lt}-canvas-card-wraper`).child(r.child(t)))}this.el.show()}toPrint(){this.el.hide();const{paper:k}=this,e=We("iframe","").hide(),{el:x}=e;window.document.body.appendChild(x);const{contentWindow:_}=x,u=_.document,m=document.createElement("style");m.innerHTML=` + @page { size: ${k.width}px ${k.height}px; }; + canvas { + page-break-before: auto; + page-break-after: always; + image-rendering: pixelated; + }; + `,u.head.appendChild(m),this.canvases.forEach(g=>{const b=g.cloneNode(!1);b.getContext("2d").drawImage(g,0,0),u.body.appendChild(b)}),_.print()}};const ab=[{key:"copy",title:Jt("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:Jt("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:Jt("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:Jt("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:Jt("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:Jt("contextmenu.insertRow")},{key:"insert-column",title:Jt("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:Jt("contextmenu.deleteRow")},{key:"delete-column",title:Jt("contextmenu.deleteColumn")},{key:"delete-cell-text",title:Jt("contextmenu.deleteCellText")},{key:"hide",title:Jt("contextmenu.hide")},{key:"divider"},{key:"validation",title:Jt("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:Jt("contextmenu.cellprintable")},{key:"cell-non-printable",title:Jt("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:Jt("contextmenu.celleditable")},{key:"cell-non-editable",title:Jt("contextmenu.cellnoneditable")}];function ob(X){return X.key==="divider"?We("div",`${lt}-item divider`):We("div",`${lt}-item`).on("click",()=>{this.itemClick(X.key),this.hide()}).children(X.title(),We("div","label").child(X.label||""))}function sb(){return ab.map(X=>ob.call(this,X))}let fb=class{constructor(k,e=!1){this.menuItems=sb.call(this),this.el=We("div",`${lt}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=k,this.itemClick=()=>{},this.isHide=e,this.setMode("range")}setMode(k){const e=this.menuItems[12];k==="row-col"?e.show():e.hide()}hide(){const{el:k}=this;k.hide(),_a(k)}setPosition(k,e){if(this.isHide)return;const{el:x}=this,{width:_}=x.show().offset(),u=this.viewFn(),m=u.height/2;let g=k;u.width-k<=_&&(g-=_),x.css("left",`${g}px`),e>m?x.css("bottom",`${u.height-e}px`).css("max-height",`${e}px`).css("top","auto"):x.css("top",`${e}px`).css("max-height",`${u.height-e}px`).css("bottom","auto"),Va(x)}};function ub(X,k){if(k.classList.contains("active"))return;const{left:e,top:x,width:_,height:u}=k.getBoundingClientRect(),m=We("div",`${lt}-tooltip`).html(X).show();document.body.appendChild(m.el);const g=m.box();m.css("left",`${e+_/2-g.width/2}px`).css("top",`${x+u+2}px`),ln(k,"mouseleave",()=>{document.body.contains(m.el)&&document.body.removeChild(m.el)}),ln(k,"click",()=>{document.body.contains(m.el)&&document.body.removeChild(m.el)})}class Of{constructor(k,e,x){this.tip=Cr(`toolbar.${k.replace(/-[a-z]/g,_=>_[1].toUpperCase())}`),e&&(this.tip+=` (${e})`),this.tag=k,this.shortcut=e,this.value=x,this.el=this.element(),this.change=()=>{}}element(){const{tip:k}=this;return We("div",`${lt}-toolbar-btn`).on("mouseenter",e=>{ub(k,e.target)}).attr("data-tooltip",k)}setState(){}}class Qn extends Of{dropdown(){}getValue(k){return k}element(){const{tag:k}=this;return this.dd=this.dropdown(),this.dd.change=e=>this.change(k,this.getValue(e)),super.element().child(this.dd)}setState(k){k&&(this.value=k,this.dd.setTitle(k))}}class qn extends Xi{constructor(k,e,x,_,...u){super("div",`${lt}-dropdown ${_}`),this.title=k,this.change=()=>{},this.headerClick=()=>{},typeof k=="string"?this.title=We("div",`${lt}-dropdown-title`).child(k):x&&this.title.addClass("arrow-left"),this.contentEl=We("div",`${lt}-dropdown-content`).css("width",e).hide(),this.setContentChildren(...u),this.headerEl=We("div",`${lt}-dropdown-header`),this.headerEl.on("click",()=>{this.contentEl.css("display")!=="block"?this.show():this.hide()}).children(this.title,x?We("div",`${lt}-icon arrow-right`).child(We("div",`${lt}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...k){this.contentEl.html(""),k.length>0&&this.contentEl.children(...k)}setTitle(k){this.title.html(k),this.hide()}show(){const{contentEl:k}=this;k.show(),this.parent().active(),Va(this.parent(),()=>{this.hide()})}hide(){this.parent().active(!1),this.contentEl.hide(),_a(this.parent())}}function lb(X){return We("div",`${lt}-item`).child(new Kr(X))}class gc extends qn{constructor(k,e){const x=new Kr(`align-${e}`),_=k.map(u=>lb(`align-${u}`).on("click",()=>{this.setTitle(u),this.change(u)}));super(x,"auto",!0,"bottom-left",..._)}setTitle(k){this.title.setName(`align-${k}`),this.hide()}}class cb extends Qn{constructor(k){super("align","",k)}dropdown(){const{value:k}=this;return new gc(["left","center","right"],k)}}class hb extends Qn{constructor(k){super("valign","",k)}dropdown(){const{value:k}=this;return new gc(["top","middle","bottom"],k)}}class di extends Of{element(){const{tag:k}=this;return super.element().child(new Kr(k)).on("click",()=>this.click())}click(){this.change(this.tag,this.toggle())}setState(k){this.el.active(k)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class db extends di{constructor(){super("autofilter")}setState(){}}class pb extends di{constructor(){super("font-bold","Ctrl+B")}}class yb extends di{constructor(){super("font-italic","Ctrl+I")}}class vb extends di{constructor(){super("strike","Ctrl+U")}}class mb extends di{constructor(){super("underline","Ctrl+U")}}const bb=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],gb=[["#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"]],_b=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function Qs(X){return We("td","").child(We("div",`${lt}-color-palette-cell`).on("click.stop",()=>this.change(X)).css("background-color",X))}class wb{constructor(){this.el=We("div",`${lt}-color-palette`),this.change=()=>{};const k=We("table","").children(We("tbody","").children(We("tr",`${lt}-theme-color-placeholders`).children(...bb.map(e=>Qs.call(this,e))),...gb.map(e=>We("tr",`${lt}-theme-colors`).children(...e.map(x=>Qs.call(this,x)))),We("tr",`${lt}-standard-colors`).children(..._b.map(e=>Qs.call(this,e)))));this.el.child(k)}}class Ef extends qn{constructor(k,e){const x=new Kr(k).css("height","16px").css("border-bottom",`3px solid ${e}`),_=new wb;_.change=u=>{this.setTitle(u),this.change(u)},super(x,"auto",!1,"bottom-left",_.el)}setTitle(k){this.title.css("border-color",k),this.hide()}}const xb=[["thin",''],["medium",''],["thick",''],["dashed",''],["dotted",'']];class Sb extends qn{constructor(k){const e=new Kr("line-type");let x=0;const _=xb.map((u,m)=>We("div",`${lt}-item state ${k===u[0]?"checked":""}`).on("click",()=>{_[x].toggle("checked"),_[m].toggle("checked"),x=m,this.hide(),this.change(u)}).child(We("div",`${lt}-line-type`).html(u[1])));super(e,"auto",!1,"bottom-left",..._)}}function Xl(...X){return We("table","").child(We("tbody","").children(...X))}function Hl(X){return We("td","").child(We("div",`${lt}-border-palette-cell`).child(new Kr(`border-${X}`)).on("click",()=>{this.mode=X;const{mode:k,style:e,color:x}=this;this.change({mode:k,style:e,color:x})}))}class kb{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new Ef("line-color",this.color),this.ddColor.change=e=>{this.color=e},this.ddType=new Sb(this.style),this.ddType.change=([e])=>{this.style=e},this.el=We("div",`${lt}-border-palette`);const k=Xl(We("tr","").children(We("td",`${lt}-border-palette-left`).child(Xl(We("tr","").children(...["all","inside","horizontal","vertical","outside"].map(e=>Hl.call(this,e))),We("tr","").children(...["left","top","right","bottom","none"].map(e=>Hl.call(this,e))))),We("td",`${lt}-border-palette-right`).children(We("div",`${lt}-toolbar-btn`).child(this.ddColor.el),We("div",`${lt}-toolbar-btn`).child(this.ddType.el))));this.el.child(k)}}class Ob extends qn{constructor(){const k=new Kr("border-all"),e=new kb;e.change=x=>{this.change(x),this.hide()},super(k,"auto",!1,"bottom-left",e.el)}}class Eb extends Qn{constructor(){super("border")}dropdown(){return new Ob}}class qo extends Of{element(){return super.element().child(new Kr(this.tag)).on("click",()=>this.change(this.tag))}setState(k){this.el.disabled(k)}}class Tb extends qo{constructor(){super("clearformat")}}class Rb extends di{constructor(){super("paintformat")}setState(){}}class Cb extends Qn{constructor(k){super("color",void 0,k)}dropdown(){const{tag:k,value:e}=this;return new Ef(k,e)}}class Pb extends Qn{constructor(k){super("bgcolor",void 0,k)}dropdown(){const{tag:k,value:e}=this;return new Ef(k,e)}}class Ab extends qn{constructor(){const k=pf.map(e=>We("div",`${lt}-item`).on("click",()=>{this.setTitle(`${e.pt}`),this.change(e)}).child(`${e.pt}`));super("10","60px",!0,"bottom-left",...k)}}let Mb=class extends Qn{constructor(){super("font-size")}getValue(k){return k.pt}dropdown(){return new Ab}};class Ib extends qn{constructor(){const k=jl.map(e=>We("div",`${lt}-item`).on("click",()=>{this.setTitle(e.title),this.change(e)}).child(e.title));super(jl[0].title,"160px",!0,"bottom-left",...k)}}class Db extends Qn{constructor(){super("font-name")}getValue(k){return k.key}dropdown(){return new Ib}}class Nb extends qn{constructor(){let k=Ha.slice(0);k.splice(2,0,{key:"divider"}),k.splice(8,0,{key:"divider"}),k=k.map(e=>{const x=We("div",`${lt}-item`);return e.key==="divider"?x.addClass("divider"):(x.child(e.title()).on("click",()=>{this.setTitle(e.title()),this.change(e)}),e.label&&x.child(We("div","label").html(e.label))),x}),super("Normal","220px",!0,"bottom-left",...k)}setTitle(k){for(let e=0;eWe("div",`${lt}-item`).on("click",()=>{this.hide(),this.change(e)}).child(e.key));super(new Kr("formula"),"180px",!0,"bottom-left",...k)}}class jb extends Qn{constructor(){super("formula")}getValue(k){return k.key}dropdown(){return new Bb}}class Lb extends di{constructor(){super("freeze")}}class zb extends di{constructor(){super("merge")}setState(k,e){this.el.active(k).disabled(e)}}class Xb extends qo{constructor(){super("redo","Ctrl+Y")}}class Hb extends qo{constructor(){super("undo","Ctrl+Z")}}class Ub extends qo{constructor(){super("print","Ctrl+P")}}class Wb extends di{constructor(){super("textwrap")}}let $b=class extends qn{constructor(){const k=new Kr("ellipsis"),e=We("div",`${lt}-toolbar-more`);super(k,"auto",!1,"bottom-right",e),this.moreBtns=e,this.contentEl.css("max-width","420px")}};class Vb extends Qn{constructor(){super("more"),this.el.hide()}dropdown(){return new $b}show(){this.el.show()}hide(){this.el.hide()}}function ma(){return We("div",`${lt}-toolbar-divider`)}function Kb(){this.btns2=[],this.items.forEach(X=>{if(Array.isArray(X))X.forEach(({el:k})=>{const e=k.box(),{marginLeft:x,marginRight:_}=k.computedStyle();this.btns2.push([k,e.width+parseInt(x,10)+parseInt(_,10)])});else{const k=X.box(),{marginLeft:e,marginRight:x}=X.computedStyle();this.btns2.push([X,k.width+parseInt(e,10)+parseInt(x,10)])}})}function Ul(){const{el:X,btns:k,moreEl:e,btns2:x}=this,{moreBtns:_,contentEl:u}=e.dd;X.css("width",`${this.widthFn()-60}px`);const m=X.box();let g=160,b=12;const w=[],f=[];x.forEach(([y,h],l)=>{g+=h,l===x.length-1||g0?e.show():e.hide()}class Gb{constructor(k,e,x=!1){this.data=k,this.change=()=>{},this.widthFn=e,this.isHide=x;const _=k.defaultStyle();this.items=[[this.undoEl=new Hb,this.redoEl=new Xb,new Ub,this.paintformatEl=new Rb,this.clearformatEl=new Tb],ma(),[this.formatEl=new Fb],ma(),[this.fontEl=new Db,this.fontSizeEl=new Mb],ma(),[this.boldEl=new pb,this.italicEl=new yb,this.underlineEl=new mb,this.strikeEl=new vb,this.textColorEl=new Cb(_.color)],ma(),[this.fillColorEl=new Pb(_.bgcolor),this.borderEl=new Eb,this.mergeEl=new zb],ma(),[this.alignEl=new cb(_.align),this.valignEl=new hb(_.valign),this.textwrapEl=new Wb],ma(),[this.freezeEl=new Lb,this.autofilterEl=new db,this.formulaEl=new jb,this.moreEl=new Vb]],this.el=We("div",`${lt}-toolbar`),this.btns=We("div",`${lt}-toolbar-btns`),this.items.forEach(u=>{Array.isArray(u)?u.forEach(m=>{this.btns.child(m.el),m.change=(...g)=>{this.change(...g)}}):this.btns.child(u.el)}),this.el.child(this.btns),x?this.el.hide():(this.reset(),setTimeout(()=>{Kb.call(this),Ul.call(this)},0),ln(window,"resize",()=>{Ul.call(this)}))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(k){this[`${k}El`].click()}resetData(k){this.data=k,this.reset()}reset(){if(this.isHide)return;const{data:k}=this,e=k.getSelectedCellStyle();this.undoEl.setState(!k.canUndo()),this.redoEl.setState(!k.canRedo()),this.mergeEl.setState(k.canUnmerge(),!k.selector.multiple()),this.autofilterEl.setState(!k.canAutofilter());const{font:x,format:_}=e;this.formatEl.setState(_),this.fontEl.setState(x.name),this.fontSizeEl.setState(x.size),this.boldEl.setState(x.bold),this.italicEl.setState(x.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(k.freezeIsActive())}}class Zb{constructor(k,e,x="600px"){this.title=k,this.el=We("div",`${lt}-modal`).css("width",x).children(We("div",`${lt}-modal-header`).children(new Kr("close").on("click.stop",()=>this.hide()),this.title),We("div",`${lt}-modal-content`).children(...e)).hide()}show(){this.dimmer=We("div",`${lt}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:k,height:e}=this.el.show().box(),{clientHeight:x,clientWidth:_}=document.documentElement;this.el.offset({left:(_-k)/2,top:(x-e)/3}),window.xkeydownEsc=u=>{u.keyCode===27&&this.hide()},ln(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),Ko(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class ba{constructor(k,e){this.vchange=()=>{},this.el=We("div",`${lt}-form-input`),this.input=We("input","").css("width",k).on("input",x=>this.vchange(x)).attr("placeholder",e),this.el.child(this.input)}focus(){setTimeout(()=>{this.input.el.focus()},10)}hint(k){this.input.attr("placeholder",k)}val(k){return this.input.val(k)}}class qs{constructor(k,e,x,_=m=>m,u=()=>{}){this.key=k,this.getTitle=_,this.vchange=()=>{},this.el=We("div",`${lt}-form-select`),this.suggest=new hc(e.map(m=>({key:m,title:this.getTitle(m)})),m=>{this.itemClick(m.key),u(m.key),this.vchange(m.key)},x,this.el),this.el.children(this.itemEl=We("div","input-text").html(this.getTitle(k)),this.suggest.el).on("click",()=>this.show())}show(){this.suggest.search("")}itemClick(k){this.key=k,this.itemEl.html(this.getTitle(k))}val(k){return k!==void 0?(this.key=k,this.itemEl.html(this.getTitle(k)),this):this.key}}const Yb={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class Oi{constructor(k,e,x,_){this.label="",this.rule=e,x&&(this.label=We("label","label").css("width",`${_}px`).html(x)),this.tip=We("div","tip").child("tip").hide(),this.input=k,this.input.vchange=()=>this.validate(),this.el=We("div",`${lt}-form-field`).children(this.label,k.el,this.tip)}isShow(){return this.el.css("display")!=="none"}show(){this.el.show()}hide(){return this.el.hide(),this}val(k){return this.input.val(k)}hint(k){this.input.hint(k)}validate(){const{input:k,rule:e,tip:x,el:_}=this,u=k.val();return e.required&&/^\s*$/.test(u)?(x.html(Cr("validation.required")),_.addClass("error"),!1):(e.type||e.pattern)&&!(e.pattern||Yb[e.type]).test(u)?(x.html(Cr("validation.notMatch")),_.addClass("error"),!1):(_.removeClass("error"),!0)}}const Wl=100;class Jb extends Zb{constructor(){const k=new Oi(new qs("cell",["cell"],"100%",w=>Cr(`dataValidation.modeType.${w}`)),{required:!0},`${Cr("dataValidation.range")}:`,Wl),e=new Oi(new ba("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),x=new Oi(new qs("list",["list","number","date","phone","email"],"100%",w=>Cr(`dataValidation.type.${w}`),w=>this.criteriaSelected(w)),{required:!0},`${Cr("dataValidation.criteria")}:`,Wl),_=new Oi(new qs("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",w=>Cr(`dataValidation.operator.${w}`),w=>this.criteriaOperatorSelected(w)),{required:!0}).hide(),u=new Oi(new ba("70px","10"),{required:!0}).hide(),m=new Oi(new ba("70px","100"),{required:!0,type:"number"}).hide(),g=new Oi(new ba("120px","a,b,c"),{required:!0}),b=new Oi(new ba("70px","10"),{required:!0,type:"number"}).hide();super(Cr("contextmenu.validation"),[We("div",`${lt}-form-fields`).children(k.el,e.el),We("div",`${lt}-form-fields`).children(x.el,_.el,u.el,m.el,b.el,g.el),We("div",`${lt}-buttons`).children(new Li("cancel").on("click",()=>this.btnClick("cancel")),new Li("remove").on("click",()=>this.btnClick("remove")),new Li("save","primary").on("click",()=>this.btnClick("save")))]),this.mf=k,this.rf=e,this.cf=x,this.of=_,this.minvf=u,this.maxvf=m,this.vf=b,this.svf=g,this.change=()=>{}}showVf(k){const e=k==="date"?"2018-11-12":"10",{vf:x}=this;x.input.hint(e),x.show()}criteriaSelected(k){const{of:e,minvf:x,maxvf:_,vf:u,svf:m}=this;k==="date"||k==="number"?(e.show(),x.rule.type=k,_.rule.type=k,k==="date"?(x.hint("2018-11-12"),_.hint("2019-11-12")):(x.hint("10"),_.hint("100")),x.show(),_.show(),u.hide(),m.hide()):(k==="list"?m.show():m.hide(),u.hide(),e.hide(),x.hide(),_.hide())}criteriaOperatorSelected(k){if(!k)return;const{minvf:e,maxvf:x,vf:_}=this;if(k==="be"||k==="nbe")e.show(),x.show(),_.hide();else{const u=this.cf.val();_.rule.type=u,u==="date"?_.hint("2018-11-12"):_.hint("10"),_.show(),e.hide(),x.hide()}}btnClick(k){if(k==="cancel")this.hide();else if(k==="remove")this.change("remove"),this.hide();else if(k==="save"){const e=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let b=0;bthis.itemClick(X))}function Qb(X){const{filterbEl:k,filterValues:e}=this;k.html(""),Object.keys(X).forEach((_,u)=>{const m=X[_],g=e.includes(_)?"checked":"";k.child(We("div",`${lt}-item state ${g}`).on("click.stop",()=>this.filterClick(u,_)).children(_===""?Cr("filter.empty"):_,We("div","label").html(`(${m})`)))})}function Vl(){const{filterhEl:X,filterValues:k,values:e}=this;X.html(`${k.length} / ${e.length}`),X.checked(k.length===e.length)}class qb{constructor(){this.filterbEl=We("div",`${lt}-body`),this.filterhEl=We("div",`${lt}-header state`).on("click.stop",()=>this.filterClick(0,"all")),this.el=We("div",`${lt}-sort-filter`).children(this.sortAscEl=$l.call(this,"asc"),this.sortDescEl=$l.call(this,"desc"),_c("divider"),We("div",`${lt}-filter`).children(this.filterhEl,this.filterbEl),We("div",`${lt}-buttons`).children(new Li("cancel").on("click",()=>this.btnClick("cancel")),new Li("ok","primary").on("click",()=>this.btnClick("ok")))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(k){if(k==="ok"){const{ci:e,sort:x,filterValues:_}=this;this.ok&&this.ok(e,x,"in",_)}this.hide()}itemClick(k){this.sort=k;const{sortAscEl:e,sortDescEl:x}=this;e.checked(k==="asc"),x.checked(k==="desc")}filterClick(k,e){const{filterbEl:x,filterValues:_,values:u}=this,m=x.children();e==="all"?m.length===_.length?(this.filterValues=[],m.forEach(g=>We(g).checked(!1))):(this.filterValues=Array.from(u),m.forEach(g=>We(g).checked(!0))):We(m[k]).toggle("checked")?_.push(e):_.splice(_.findIndex(b=>b===e),1),Vl.call(this)}set(k,e,x,_){this.ci=k;const{sortAscEl:u,sortDescEl:m}=this;_!==null?(this.sort=_.order,u.checked(_.asc()),m.checked(_.desc())):(this.sortDesc=null,u.checked(!1),m.checked(!1)),this.values=Object.keys(e),this.filterValues=x?Array.from(x.value):Object.keys(e),Qb.call(this,e,x),Vl.call(this)}setOffset(k){this.el.offset(k).show();let e=1;Va(this.el,()=>{e<=0&&this.hide(),e-=1})}show(){this.el.show()}hide(){this.el.hide(),_a(this.el)}}function wc(X,k){const e=We("div",`${lt}-toast`),x=We("div",`${lt}-dimmer active`),_=()=>{document.body.removeChild(e.el),document.body.removeChild(x.el)};e.children(We("div",`${lt}-toast-header`).children(new Kr("close").on("click.stop",()=>_()),X),We("div",`${lt}-toast-content`).html(k)),document.body.appendChild(e.el),document.body.appendChild(x.el);const{width:u,height:m}=e.box(),{clientHeight:g,clientWidth:b}=document.documentElement;e.offset({left:(b-u)/2,top:(g-m)/3})}function ef(X,k){let e;return(...x)=>{const _=this,u=x;e||(e=setTimeout(()=>{e=null,X.apply(_,u)},k))}}function eg(){const{data:X,verticalScrollbar:k,horizontalScrollbar:e}=this,{l:x,t:_,left:u,top:m,width:g,height:b}=X.getSelectedRect(),w=this.getTableOffset();if(Math.abs(u)+g>w.width)e.move({left:x+g-w.width});else{const f=X.freezeTotalWidth();uw.height)k.move({top:_+b-w.height-1});else{const f=X.freezeTotalHeight();m0&&(g-=1):k==="right"?(w!==g&&(g=w),g0&&(m-=1):k==="down"?(b!==m&&(m=b),m<_.len-1&&(m+=1)):k==="row-first"?g=0:k==="row-last"?g=u.len-1:k==="col-first"?m=0:k==="col-last"&&(m=_.len-1),X&&(e.moveIndexes=[m,g]),zi.call(this,X,m,g),eg.call(this)}function tg(X){if(X.buttons!==0||X.target.className===`${lt}-resizer-hover`)return;const{offsetX:k,offsetY:e}=X,{rowResizer:x,colResizer:_,tableEl:u,data:m}=this,{rows:g,cols:b}=m;if(k>b.indexWidth&&e>g.height){x.hide(),_.hide();return}const w=u.box(),f=m.getCellRectByXY(X.offsetX,X.offsetY);f.ri>=0&&f.ci===-1?(f.width=b.indexWidth,x.show(f,{width:w.width}),g.isHide(f.ri-1)?x.showUnhide(f.ri):x.hideUnhide()):x.hide(),f.ri===-1&&f.ci>=0?(f.height=g.height,_.show(f,{height:w.height}),b.isHide(f.ci-1)?_.showUnhide(f.ci):_.hideUnhide()):_.hide()}function rg(X){const{verticalScrollbar:k,horizontalScrollbar:e,data:x}=this,{top:_}=k.scroll(),{left:u}=e.scroll(),{rows:m,cols:g}=x,{deltaY:b,deltaX:w}=X,f=(v,c)=>{let a=v,r=0;do r=c(a),a+=1;while(r<=0);return r},y=v=>{if(v>0){const c=x.scroll.ri+1;if(cm.getHeight(r));k.move({top:_+a-1})}}else{const c=x.scroll.ri-1;if(c>=0){const a=f(c,r=>m.getHeight(r));k.move({top:c===0?0:_-a})}}},h=v=>{if(v>0){const c=x.scroll.ci+1;if(cg.getWidth(r));e.move({left:u+a-1})}}else{const c=x.scroll.ci-1;if(c>=0){const a=f(c,r=>g.getWidth(r));e.move({left:c===0?0:u-a})}}},l=Math.abs(b),d=Math.abs(w),s=Math.max(l,d);/Firefox/i.test(window.navigator.userAgent)&&ef(y(X.detail),50),s===d&&ef(h(w),50),s===l&&ef(y(b),50)}function ng(X,k){const{verticalScrollbar:e,horizontalScrollbar:x}=this,{top:_}=e.scroll(),{left:u}=x.scroll();X==="left"||X==="right"?x.move({left:u-k}):(X==="up"||X==="down")&&e.move({top:_-k})}function Tf(){const{data:X,verticalScrollbar:k}=this,{height:e}=this.getTableOffset(),x=X.exceptRowTotalHeight(0,-1);k.set(e,X.rows.totalHeight()-x)}function Rf(){const{data:X,horizontalScrollbar:k}=this,{width:e}=this.getTableOffset();X&&k.set(e,X.cols.totalWidth())}function ig(){const{selector:X,data:k,editor:e}=this,[x,_]=k.freeze;if(x>0||_>0){const u=k.freezeTotalWidth(),m=k.freezeTotalHeight();e.setFreezeLengths(u,m)}X.resetAreaOffset()}function un(){const{tableEl:X,overlayerEl:k,overlayerCEl:e,table:x,toolbar:_,selector:u,el:m}=this,g=this.getTableOffset(),b=this.getRect();X.attr(b),k.offset(b),e.offset(g),m.css("width",`${b.width}px`),Tf.call(this),Rf.call(this),ig.call(this),x.render(),_.reset(),u.reset()}function Ka(){const{data:X,selector:k}=this;X.clearClipboard(),k.hideClipboard()}function vf(){const{data:X,selector:k}=this;X.copy(),X.copyToSystemClipboard(),k.showClipboard()}function Kl(){const{data:X,selector:k}=this;X.cut(),k.showClipboard()}function Ua(X,k){const{data:e}=this;if(e.settings.mode!=="read"){if(e.paste(X,x=>wc("Tip",x)))un.call(this);else if(k){const x=k.clipboardData.getData("text/plain");this.data.pasteFromText(x),un.call(this)}}}function ag(){this.data.hideRowsOrCols(),un.call(this)}function Gl(X,k){this.data.unhideRowsOrCols(X,k),un.call(this)}function og(){const{data:X}=this;X.autofilter(),un.call(this)}function sg(){const{toolbar:X}=this;X.paintformatActive()&&(Ua.call(this,"format"),Ka.call(this),X.paintformatToggle())}function Zl(X){const{selector:k,data:e,table:x,sortFilter:_}=this,{offsetX:u,offsetY:m}=X,g=X.target.className===`${lt}-selector-corner`,b=e.getCellRectByXY(u,m),{left:w,top:f,width:y,height:h}=b;let{ri:l,ci:d}=b;const{autoFilter:s}=e;if(s.includes(l,d)&&w+y-20e.rows.getCell(c,a));_.hide(),_.set(d,v,s.getFilter(d),s.getSort(d)),_.setOffset({left:w,top:f+h+2});return}X.shiftKey||(g?k.showAutofill(l,d):zi.call(this,!1,l,d),sc(window,v=>{({ri:l,ci:d}=e.getCellRectByXY(v.offsetX,v.offsetY)),g?k.showAutofill(l,d):v.buttons===1&&!v.shiftKey&&zi.call(this,!0,l,d,!0,!0)},()=>{g&&k.arange&&e.settings.mode!=="read"&&e.autofill(k.arange,"all",v=>wc("Tip",v))&&x.render(),k.hideAutofill(),sg.call(this)})),!g&&X.buttons===1&&X.shiftKey&&zi.call(this,!0,l,d)}function Ga(){const{editor:X,data:k}=this,e=k.getSelectedRect(),x=this.getTableOffset();let _="top";e.top>x.height/2&&(_="bottom"),X.setOffset(e,_)}function Wa(){const{editor:X,data:k}=this;k.settings.mode!=="read"&&(Ga.call(this),X.setCell(k.getSelectedCell(),k.getSelectedValidator()),Ka.call(this))}function fg(X){const{data:k,table:e,selector:x}=this;k.scrolly(X,()=>{x.resetBRLAreaOffset(),Ga.call(this),e.render()})}function ug(X){const{data:k,table:e,selector:x}=this;k.scrollx(X,()=>{x.resetBRTAreaOffset(),Ga.call(this),e.render()})}function lg(X,k){const{ri:e}=X,{table:x,selector:_,data:u}=this;u.rows.setHeight(e,k),x.render(),_.resetAreaOffset(),Tf.call(this),Ga.call(this)}function cg(X,k){const{ci:e}=X,{table:x,selector:_,data:u}=this;u.cols.setWidth(e,k),x.render(),_.resetAreaOffset(),Rf.call(this),Ga.call(this)}function tf(X,k="finished"){const{data:e,table:x}=this;if(e.settings.mode==="read")return;e.setSelectedCellText(X,k);const{ri:_,ci:u}=e.selector;k==="finished"?x.render():this.trigger("cell-edited",X,_,u)}function Ho(X){const{data:k}=this;k.settings.mode!=="read"&&(X==="insert-row"?k.insert("row"):X==="delete-row"?k.delete("row"):X==="insert-column"?k.insert("column"):X==="delete-column"?k.delete("column"):X==="delete-cell"?k.deleteCell():X==="delete-cell-format"?k.deleteCell("format"):X==="delete-cell-text"?k.deleteCell("text"):X==="cell-printable"?k.setSelectedCellAttr("printable",!0):X==="cell-non-printable"?k.setSelectedCellAttr("printable",!1):X==="cell-editable"?k.setSelectedCellAttr("editable",!0):X==="cell-non-editable"&&k.setSelectedCellAttr("editable",!1),Ka.call(this),un.call(this))}function hg(X,k){const{data:e}=this;if(X==="undo")this.undo();else if(X==="redo")this.redo();else if(X==="print")this.print.preview();else if(X==="paintformat")k===!0?vf.call(this):Ka.call(this);else if(X==="clearformat")Ho.call(this,"delete-cell-format");else if(X!=="link"){if(X!=="chart")if(X==="autofilter")og.call(this);else if(X==="freeze")if(k){const{ri:x,ci:_}=e.selector;this.freeze(x,_)}else this.freeze(0,0);else e.setSelectedCellAttr(X,k),X==="formula"&&!e.selector.multiple()&&Wa.call(this),un.call(this)}}function dg(X,k,e,x){this.data.setAutoFilter(X,k,e,x),un.call(this)}function pg(){const{selector:X,overlayerEl:k,rowResizer:e,colResizer:x,verticalScrollbar:_,horizontalScrollbar:u,editor:m,contextMenu:g,toolbar:b,modalValidation:w,sortFilter:f}=this;k.on("mousemove",y=>{tg.call(this,y)}).on("mousedown",y=>{m.clear(),g.hide(),y.buttons===2?(this.data.xyInSelectedRect(y.offsetX,y.offsetY)||Zl.call(this,y),g.setPosition(y.offsetX,y.offsetY),y.stopPropagation()):y.detail===2?Wa.call(this):Zl.call(this,y)}).on("mousewheel.stop",y=>{rg.call(this,y)}).on("mouseout",y=>{const{offsetX:h,offsetY:l}=y;l<=0&&x.hide(),h<=0&&e.hide()}),X.inputChange=y=>{tf.call(this,y,"input"),Wa.call(this)},wm(k.el,{move:(y,h)=>{ng.call(this,y,h)}}),b.change=(y,h)=>hg.call(this,y,h),f.ok=(y,h,l,d)=>dg.call(this,y,h,l,d),e.finishedFn=(y,h)=>{lg.call(this,y,h)},x.finishedFn=(y,h)=>{cg.call(this,y,h)},e.unhideFn=y=>{Gl.call(this,"row",y)},x.unhideFn=y=>{Gl.call(this,"col",y)},_.moveFn=(y,h)=>{fg.call(this,y,h)},u.moveFn=(y,h)=>{ug.call(this,y,h)},m.change=(y,h)=>{tf.call(this,h,y)},w.change=(y,...h)=>{y==="save"?this.data.addValidation(...h):this.data.removeValidation()},g.itemClick=y=>{y==="validation"?w.setValue(this.data.getSelectedValidation()):y==="copy"?vf.call(this):y==="cut"?Kl.call(this):y==="paste"?Ua.call(this,"all"):y==="paste-value"?Ua.call(this,"text"):y==="paste-format"?Ua.call(this,"format"):y==="hide"?ag.call(this):Ho.call(this,y)},ln(window,"resize",()=>{this.reload()}),ln(window,"click",y=>{this.focusing=k.contains(y.target)}),ln(window,"paste",y=>{this.focusing&&(Ua.call(this,"all",y),y.preventDefault())}),ln(window,"keydown",y=>{if(!this.focusing)return;const h=y.keyCode||y.which,{key:l,ctrlKey:d,shiftKey:s,metaKey:v}=y;if(d||v)switch(h){case 90:this.undo(),y.preventDefault();break;case 89:this.redo(),y.preventDefault();break;case 67:vf.call(this),y.preventDefault();break;case 88:Kl.call(this),y.preventDefault();break;case 85:b.trigger("underline"),y.preventDefault();break;case 86:break;case 37:Yn.call(this,s,"row-first"),y.preventDefault();break;case 38:Yn.call(this,s,"col-first"),y.preventDefault();break;case 39:Yn.call(this,s,"row-last"),y.preventDefault();break;case 40:Yn.call(this,s,"col-last"),y.preventDefault();break;case 32:zi.call(this,!1,-1,this.data.selector.ci,!1),y.preventDefault();break;case 66:b.trigger("bold");break;case 73:b.trigger("italic");break}else{switch(h){case 32:s&&zi.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:g.hide(),Ka.call(this);break;case 37:Yn.call(this,s,"left"),y.preventDefault();break;case 38:Yn.call(this,s,"up"),y.preventDefault();break;case 39:Yn.call(this,s,"right"),y.preventDefault();break;case 40:Yn.call(this,s,"down"),y.preventDefault();break;case 9:m.clear(),Yn.call(this,!1,s?"left":"right"),y.preventDefault();break;case 13:m.clear(),Yn.call(this,!1,s?"up":"down"),y.preventDefault();break;case 8:Ho.call(this,"delete-cell-text"),y.preventDefault();break}l==="Delete"?(Ho.call(this,"delete-cell-text"),y.preventDefault()):h>=65&&h<=90||h>=48&&h<=57||h>=96&&h<=105||y.key==="="?(tf.call(this,y.key,"input"),Wa.call(this)):h===113&&Wa.call(this)}})}class yg{constructor(k,e){this.eventMap=xm();const{view:x,showToolbar:_,showContextmenu:u}=e.settings;this.el=We("div",`${lt}-sheet`),this.toolbar=new Gb(e,x.width,!_),this.print=new ib(e),k.children(this.toolbar.el,this.el,this.print.el),this.data=e,this.tableEl=We("canvas",`${lt}-table`),this.rowResizer=new Al(!1,e.rows.height),this.colResizer=new Al(!0,e.cols.minWidth),this.verticalScrollbar=new Ml(!0),this.horizontalScrollbar=new Ml(!1),this.editor=new zm(Km,()=>this.getTableOffset(),e.rows.height),this.modalValidation=new Jb,this.contextMenu=new fb(()=>this.getRect(),!u),this.selector=new Om(e),this.overlayerCEl=We("div",`${lt}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=We("div",`${lt}-overlayer`).child(this.overlayerCEl),this.sortFilter=new qb,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 tb(this.tableEl.el,e),pg.call(this),un.call(this),zi.call(this,!1,0,0)}on(k,e){return this.eventMap.on(k,e),this}trigger(k,...e){const{eventMap:x}=this;x.fire(k,e)}resetData(k){this.editor.clear(),this.data=k,Tf.call(this),Rf.call(this),this.toolbar.resetData(k),this.print.resetData(k),this.selector.resetData(k),this.table.resetData(k)}loadData(k){return this.data.setData(k),un.call(this),this}freeze(k,e){const{data:x}=this;return x.setFreeze(k,e),un.call(this),this}undo(){this.data.undo(),un.call(this)}redo(){this.data.redo(),un.call(this)}reload(){return un.call(this),this}getRect(){const{data:k}=this;return{width:k.viewWidth(),height:k.viewHeight()}}getTableOffset(){const{rows:k,cols:e}=this.data,{width:x,height:_}=this.getRect();return{width:x-e.indexWidth,height:_-k.height,left:e.indexWidth,top:k.height}}}class vg extends qn{constructor(k){const e=new Kr("ellipsis");super(e,"auto",!1,"top-left"),this.contentClick=k}reset(k){const e=k.map((x,_)=>We("div",`${lt}-item`).css("width","150px").css("font-weight","normal").on("click",()=>{this.contentClick(_),this.hide()}).child(x));this.setContentChildren(...e)}setTitle(){}}const mg=[{key:"delete",title:Jt("contextmenu.deleteSheet")}];function bg(X){return We("div",`${lt}-item`).child(X.title()).on("click",()=>{this.itemClick(X.key),this.hide()})}function gg(){return mg.map(X=>bg.call(this,X))}class _g{constructor(){this.el=We("div",`${lt}-contextmenu`).css("width","160px").children(...gg.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:k}=this;k.hide(),_a(k)}setOffset(k){const{el:e}=this;e.offset(k),e.show(),Va(e)}}class wg{constructor(k=()=>{},e=()=>{},x=()=>{},_=()=>{}){this.swapFunc=e,this.updateFunc=_,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new vg(u=>{this.clickSwap2(this.items[u])}),this.contextMenu=new _g,this.contextMenu.itemClick=x,this.el=We("div",`${lt}-bottombar`).children(this.contextMenu.el,this.menuEl=We("ul",`${lt}-menu`).child(We("li","").children(new Kr("add").on("click",()=>{k()}),We("span","").child(this.moreEl))))}addItem(k,e){this.dataNames.push(k);const x=We("li",e?"active":"").child(k);x.on("click",()=>{this.clickSwap2(x)}).on("contextmenu",_=>{const{offsetLeft:u,offsetHeight:m}=_.target;this.contextMenu.setOffset({left:u,bottom:m+1}),this.deleteEl=x}).on("dblclick",()=>{const _=x.html(),u=new ba("auto","");u.val(_),u.input.on("blur",({target:m})=>{const{value:g}=m,b=this.dataNames.findIndex(w=>w===_);this.renameItem(b,g)}),x.html("").child(u.el),u.focus()}),e&&this.clickSwap(x),this.items.push(x),this.menuEl.child(x),this.moreEl.reset(this.dataNames)}renameItem(k,e){this.dataNames.splice(k,1,e),this.moreEl.reset(this.dataNames),this.items[k].html("").child(e),this.updateFunc(k,e)}clear(){this.items.forEach(k=>{this.menuEl.removeChild(k.el)}),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:k,deleteEl:e}=this;if(this.items.length>1){const x=this.items.findIndex(_=>_===e);if(this.items.splice(x,1),this.dataNames.splice(x,1),this.menuEl.removeChild(e.el),this.moreEl.reset(this.dataNames),k===e){const[_]=this.items;return this.activeEl=_,this.activeEl.toggle(),[x,0]}return[x,-1]}return[-1]}clickSwap2(k){const e=this.items.findIndex(x=>x===k);this.clickSwap(k),this.activeEl.toggle(),this.swapFunc(e)}clickSwap(k){this.activeEl!==null&&this.activeEl.toggle(),this.activeEl=k}}class xg{constructor(k,e={}){let x=k;this.options={showBottomBar:!0,...e},this.sheetIndex=1,this.datas=[],typeof k=="string"&&(x=document.querySelector(k)),this.bottombar=this.options.showBottomBar?new wg(()=>{const u=this.addSheet();this.sheet.resetData(u)},u=>{const m=this.datas[u];this.sheet.resetData(m)},()=>{this.deleteSheet()},(u,m)=>{this.datas[u].name=m}):null,this.data=this.addSheet();const _=We("div",`${lt}`).on("contextmenu",u=>u.preventDefault());x.appendChild(_.el),this.sheet=new yg(_,this.data),this.bottombar!==null&&_.child(this.bottombar.el)}addSheet(k,e=!0){const x=k||`sheet${this.sheetIndex}`,_=new _m(x,this.options);return _.change=(...u)=>{this.sheet.trigger("change",...u)},this.datas.push(_),this.bottombar!==null&&this.bottombar.addItem(x,e),this.sheetIndex+=1,_}deleteSheet(){if(this.bottombar===null)return;const[k,e]=this.bottombar.deleteItem();k>=0&&(this.datas.splice(k,1),e>=0&&this.sheet.resetData(this.datas[e]))}loadData(k){const e=Array.isArray(k)?k:[k];if(this.bottombar!==null&&this.bottombar.clear(),this.datas=[],e.length>0)for(let x=0;xk.getData())}cellText(k,e,x,_=0){return this.datas[_].setCellText(k,e,x,"finished"),this}cell(k,e,x=0){return this.datas[x].getCell(k,e)}cellStyle(k,e,x=0){return this.datas[x].getCellStyle(k,e)}reRender(){return this.sheet.table.render(),this}on(k,e){return this.sheet.on(k,e),this}validate(){const{validations:k}=this.data;return k.errors.size<=0}change(k){return this.sheet.on("change",k),this}static locale(k,e){ac(k,e)}}const Sg=(X,k={})=>new xg(X,k);window&&(window.x_spreadsheet=Sg,window.x_spreadsheet.locale=(X,k)=>ac(X,k));var mf={},kg={get exports(){return mf},set exports(X){mf=X}};(function(X,k){(function(e){X.exports=e()})(function(){return function(){function e(x,_,u){function m(w,f){if(!_[w]){if(!x[w]){var y=typeof Do=="function"&&Do;if(!f&&y)return y(w,!0);if(g)return g(w,!0);var h=new Error("Cannot find module '"+w+"'");throw h.code="MODULE_NOT_FOUND",h}var l=_[w]={exports:{}};x[w][0].call(l.exports,function(d){var s=x[w][1][d];return m(s||d)},l,l.exports,e,x,_,u)}return _[w].exports}for(var g=typeof Do=="function"&&Do,b=0;b2&&arguments[2]!==void 0?arguments[2]:0;if(u(this,f),!h)this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;else if(typeof h=="string"){var d=b.decodeAddress(h);this.nativeCol=d.col+l,this.nativeColOff=0,this.nativeRow=d.row+l,this.nativeRowOff=0}else h.nativeCol!==void 0?(this.nativeCol=h.nativeCol||0,this.nativeColOff=h.nativeColOff||0,this.nativeRow=h.nativeRow||0,this.nativeRowOff=h.nativeRowOff||0):h.col!==void 0?(this.col=h.col+l,this.row=h.row+l):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);this.worksheet=y}return g(f,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(h){this.nativeCol=Math.floor(h),this.nativeColOff=Math.floor((h-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(h){this.nativeRow=Math.floor(h),this.nativeRowOff=Math.floor((h-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(h){this.nativeCol=h.nativeCol,this.nativeColOff=h.nativeColOff,this.nativeRow=h.nativeRow,this.nativeRowOff=h.nativeRowOff}}],[{key:"asInstance",value:function(h){return h instanceof f||h==null?h:new f(h)}}]),f}();x.exports=w},{"../utils/col-cache":19}],3:[function(e,x,_){function u(L,F){if(!(L instanceof F))throw new TypeError("Cannot call a class as a function")}function m(L,F){for(var M=0;M0||this.type===L.Types.Merge}},{key:"master",get:function(){return this.type===L.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===L.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(M){if(this.type===L.Types.Merge){this._value.master.value=M;return}this._value.release(),this._value=N.create(N.getType(M),this,M)}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(M){this._comment=new l(M)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return w.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 D=this,R=this.workbook.definedNames;R.removeAllNames(this.fullAddress),M.forEach(function(P){R.addEx(D.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=N.create(M.type,this),this._value.model=M,M.comment)switch(M.comment.type){case"note":this._comment=l.fromModel(M.comment);break}M.style?this.style=M.style:this.style={}}}]),L}();d.Types=f.ValueType;var s=function(){function L(F){u(this,L),this.model={address:F.address,type:d.Types.Null}}return g(L,[{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 d.Types.Null}},{key:"effectiveType",get:function(){return d.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),v=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Number,value:M}}return g(L,[{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 d.Types.Number}},{key:"effectiveType",get:function(){return d.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),c=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.String,value:M}}return g(L,[{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 d.Types.String}},{key:"effectiveType",get:function(){return d.Types.String}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),a=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.String,value:M}}return g(L,[{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 d.Types.RichText}},{key:"effectiveType",get:function(){return d.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),r=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Date,value:M}}return g(L,[{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 d.Types.Date}},{key:"effectiveType",get:function(){return d.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),t=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Hyperlink,text:M?M.text:void 0,hyperlink:M?M.hyperlink:void 0},M&&M.tooltip&&(this.model.tooltip=M.tooltip)}return g(L,[{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 d.Types.Hyperlink}},{key:"effectiveType",get:function(){return d.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),i=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Merge,master:M?M.address:void 0},this._master=M,M&&M.addMergeRef()}return g(L,[{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 d?(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 d.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}}]),L}(),n=function(){function L(F,M){u(this,L),this.cell=F,this.model={address:F.address,type:d.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 g(L,[{key:"_copyModel",value:function(M){var D={},R=function(E){var A=M[E];A&&(D[E]=A)};return R("formula"),R("result"),R("ref"),R("shareType"),R("sharedFormula"),D}},{key:"validate",value:function(M){switch(N.getType(M)){case d.Types.Null:case d.Types.String:case d.Types.Number:case d.Types.Date:break;case d.Types.Hyperlink:case d.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,D=M.findCell(this.model.sharedFormula);this._translatedFormula=D&&h(D.formula,D.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),D=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:D}}},{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?f.FormulaType.Master:this.model.sharedFormula?f.FormulaType.Shared:f.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(M){this.model.result=M}},{key:"type",get:function(){return d.Types.Formula}},{key:"effectiveType",get:function(){var M=this.model.result;return M==null?f.ValueType.Null:M instanceof String||typeof M=="string"?f.ValueType.String:typeof M=="number"?f.ValueType.Number:M instanceof Date?f.ValueType.Date:M.text&&M.hyperlink?f.ValueType.Hyperlink:M.formula?f.ValueType.Formula:f.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),o=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.SharedString,value:M}}return g(L,[{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 d.Types.SharedString}},{key:"effectiveType",get:function(){return d.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),p=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Boolean,value:M}}return g(L,[{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 d.Types.Boolean}},{key:"effectiveType",get:function(){return d.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),O=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Error,value:M}}return g(L,[{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 d.Types.Error}},{key:"effectiveType",get:function(){return d.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),C=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.String,value:JSON.stringify(M),rawValue:M}}return g(L,[{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 d.Types.String}},{key:"effectiveType",get:function(){return d.Types.String}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),N={getType:function(F){return F==null?d.Types.Null:F instanceof String||typeof F=="string"?d.Types.String:typeof F=="number"?d.Types.Number:typeof F=="boolean"?d.Types.Boolean:F instanceof Date?d.Types.Date:F.text&&F.hyperlink?d.Types.Hyperlink:F.formula||F.sharedFormula?d.Types.Formula:F.richText?d.Types.RichText:F.sharedString?d.Types.SharedString:F.error?d.Types.Error:d.Types.JSON},types:[{t:d.Types.Null,f:s},{t:d.Types.Number,f:v},{t:d.Types.String,f:c},{t:d.Types.Date,f:r},{t:d.Types.Hyperlink,f:t},{t:d.Types.Formula,f:n},{t:d.Types.Merge,f:i},{t:d.Types.JSON,f:C},{t:d.Types.SharedString,f:o},{t:d.Types.RichText,f:a},{t:d.Types.Boolean,f:p},{t:d.Types.Error,f:O}].reduce(function(L,F){return L[F.t]=F.f,L},[]),create:function(F,M,D){var R=this.types[F];if(!R)throw new Error("Could not create Value of type ".concat(F));return new R(M,D)}};x.exports=d},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(e,x,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth||this.hidden||this.outlineLevel)return!1;var s=this.style;return!(s&&(s.font||s.numFmt||s.alignment||s.border||s.fill||s.protection))}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var s=[];return this.eachCell(function(v,c){v&&v.type!==w.ValueType.Null&&(s[c]=v.value)}),s},set:function(s){var v=this;if(s){var c=this.number,a=0;s.hasOwnProperty("0")&&(a=1),s.forEach(function(r,t){v._worksheet.getCell(t+a,c).value=r})}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(s){this._applyStyle("numFmt",s)}},{key:"font",get:function(){return this.style.font},set:function(s){this._applyStyle("font",s)}},{key:"alignment",get:function(){return this.style.alignment},set:function(s){this._applyStyle("alignment",s)}},{key:"protection",get:function(){return this.style.protection},set:function(s){this._applyStyle("protection",s)}},{key:"border",get:function(){return this.style.border},set:function(s){this._applyStyle("border",s)}},{key:"fill",get:function(){return this.style.fill},set:function(s){this._applyStyle("fill",s)}}],[{key:"toModel",value:function(s){var v=[],c=null;return s&&s.forEach(function(a,r){a.isDefault?c&&(c=null):!c||!a.equivalentTo(c)?(c={min:r+1,max:r+1,width:a.width!==void 0?a.width:y,style:a.style,isCustomWidth:a.isCustomWidth,hidden:a.hidden,outlineLevel:a.outlineLevel,collapsed:a.collapsed},v.push(c)):c.max=r+1}),v.length?v:void 0}},{key:"fromModel",value:function(s,v){v=v||[];for(var c=[],a=1,r=0;rthis.bottom)&&(this.bottom=d),(!this.model.right||s>this.right)&&(this.right=s)}},{key:"expandRow",value:function(h){if(h){var l=h.dimensions,d=h.number;l&&this.expand(d,l.min,d,l.max)}}},{key:"expandToAddress",value:function(h){var l=b.decodeEx(h);this.expand(l.row,l.col,l.row,l.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(h){return!(h.sheetName&&this.sheetName&&h.sheetName!==this.sheetName||h.bottomthis.bottom||h.rightthis.right)}},{key:"contains",value:function(h){var l=b.decodeEx(h);return this.containsEx(l)}},{key:"containsEx",value:function(h){return h.sheetName&&this.sheetName&&h.sheetName!==this.sheetName?!1:h.row>=this.top&&h.row<=this.bottom&&h.col>=this.left&&h.col<=this.right}},{key:"forEachAddress",value:function(h){for(var l=this.left;l<=this.right;l++)for(var d=this.top;d<=this.bottom;d++)h(b.encodeAddress(d,l),d,l)}},{key:"top",get:function(){return this.model.top||1},set:function(h){this.model.top=h}},{key:"left",get:function(){return this.model.left||1},set:function(h){this.model.left=h}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(h){this.model.bottom=h}},{key:"right",get:function(){return this.model.right||1},set:function(h){this.model.right=h}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(h){this.model.sheetName=h}},{key:"_serialisedSheetName",get:function(){var h=this.model.sheetName;return h?/^[a-zA-Z0-9]*$/.test(h)?"".concat(h,"!"):"'".concat(h,"'!"):""}},{key:"tl",get:function(){return b.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(b.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return b.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(b.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)}}]),f}();x.exports=w},{"../utils/col-cache":19}],11:[function(e,x,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s2?a-2:0),t=2;t0)for(o=n;o>=c;o--)p=this._cells[o-1],p?(O=this.getCell(o+i),O.value=p.value,O.style=p.style,O._comment=p._comment):this._cells[o+i-1]=void 0;for(o=0;oc.col)&&(s=c.col),v0?{min:s,max:v}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(s){this._applyStyle("numFmt",s)}},{key:"font",get:function(){return this.style.font},set:function(s){this._applyStyle("font",s)}},{key:"alignment",get:function(){return this.style.alignment},set:function(s){this._applyStyle("alignment",s)}},{key:"protection",get:function(){return this.style.protection},set:function(s){this._applyStyle("protection",s)}},{key:"border",get:function(){return this.style.border},set:function(s){this._applyStyle("border",s)}},{key:"fill",get:function(){return this.style.fill},set:function(s){this._applyStyle("fill",s)}},{key:"hidden",get:function(){return!!this._hidden},set:function(s){this._hidden=s}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(s){this._outlineLevel=s}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var s=[],v=0,c=0;return this._cells.forEach(function(a){if(a){var r=a.model;r&&((!v||v>a.col)&&(v=a.col),c0,"Table must be on valid row"),v(r>0,"Table must be on valid col");var t=this.width,i=this.filterHeight,n=this.tableHeight;d.autoFilterRef=b.encode(a,r,a+i-1,r+t-1),d.tableRef=b.encode(a,r,a+n-1,r+t-1),d.columns.forEach(function(o,p){v(o.name,"Column ".concat(p," must have a name")),p===0?s(o,"totalsRowLabel","Total"):(s(o,"totalsRowFunction","none"),o.totalsRowFormula=l.getFormula(o))})}},{key:"store",value:function(){var l=this,d=function(p,O){O&&Object.keys(O).forEach(function(C){p[C]=O[C]})},s=this.worksheet,v=this.table,c=v.tl,a=c.row,r=c.col,t=0;if(v.headerRow){var i=s.getRow(a+t++);v.columns.forEach(function(o,p){var O=o.style,C=o.name,N=i.getCell(r+p);N.value=C,d(N,O)})}if(v.rows.forEach(function(o){var p=s.getRow(a+t++);o.forEach(function(O,C){var N=p.getCell(r+C);N.value=O,d(N,v.columns[C].style)})}),v.totalsRow){var n=s.getRow(a+t++);v.columns.forEach(function(o,p){var O=n.getCell(r+p);if(p===0)O.value=o.totalsRowLabel;else{var C=l.getFormula(o);C?O.value={formula:o.totalsRowFormula,result:o.totalsRowResult}:O.value=null}d(O,o.style)})}}},{key:"load",value:function(l){var d=this,s=this.table,v=s.tl,c=v.row,a=v.col,r=0;if(s.headerRow){var t=l.getRow(c+r++);s.columns.forEach(function(n,o){var p=t.getCell(a+o);p.value=n.name})}if(s.rows.forEach(function(n){var o=l.getRow(c+r++);n.forEach(function(p,O){var C=o.getCell(a+O);C.value=p})}),s.totalsRow){var i=l.getRow(c+r++);s.columns.forEach(function(n,o){var p=i.getCell(a+o);if(o===0)p.value=n.totalsRowLabel;else{var O=d.getFormula(n);O&&(p.value={formula:n.totalsRowFormula,result:n.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 l=b.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var d=0;d1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.rows.splice(l,d)}},{key:"getColumn",value:function(l){var d=this.table.columns[l];return new w(this,d,l)}},{key:"addColumn",value:function(l,d,s){this.cacheState(),s===void 0?(this.table.columns.push(l),this.table.rows.forEach(function(v,c){v.push(d[c])})):(this.table.columns.splice(s,0,l),this.table.rows.forEach(function(v,c){v.splice(s,0,d[c])}))}},{key:"removeColumns",value:function(l){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.columns.splice(l,d),this.table.rows.forEach(function(s){s.splice(l,d)})}},{key:"_assign",value:function(l,d,s){this.cacheState(),l[d]=s}},{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(l){this.table=l}},{key:"ref",get:function(){return this.table.ref},set:function(l){this._assign(this.table,"ref",l)}},{key:"name",get:function(){return this.table.name},set:function(l){this.table.name=l}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(l){this.table.displayName=l}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(l){this._assign(this.table,"headerRow",l)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(l){this._assign(this.table,"totalsRow",l)}},{key:"theme",get:function(){return this.table.style.name},set:function(l){this.table.style.name=l}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(l){this.table.style.showFirstColumn=l}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(l){this.table.style.showLastColumn=l}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(l){this.table.style.showRowStripes=l}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(l){this.table.style.showColumnStripes=l}}]),y}();x.exports=f},{"../utils/col-cache":19}],13:[function(e,x,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s31&&console.warn("Worksheet name ".concat(s," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(s))throw new Error("Worksheet name ".concat(s," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(s))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(s));if(s=(s||"sheet".concat(c)).substring(0,31),this._worksheets.find(function(i){return i&&i.name.toLowerCase()===s.toLowerCase()}))throw new Error("Worksheet name already exists: ".concat(s));v&&(typeof v=="string"?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),v={properties:{tabColor:{argb:v}}}):(v.argb||v.theme||v.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),v={properties:{tabColor:v}}));var a=this._worksheets.reduce(function(i,n){return(n&&n.orderNo)>i?n.orderNo:i},0),r=Object.assign({},v,{id:c,name:s,orderNo:a+1,workbook:this}),t=new b(r);return this._worksheets[c]=t,t}},{key:"removeWorksheetEx",value:function(s){delete this._worksheets[s.id]}},{key:"removeWorksheet",value:function(s){var v=this.getWorksheet(s);v&&v.destroy()}},{key:"getWorksheet",value:function(s){if(s===void 0)return this._worksheets.find(Boolean);if(typeof s=="number")return this._worksheets[s];if(typeof s=="string")return this._worksheets.find(function(v){return v&&v.name===s})}},{key:"eachSheet",value:function(s){this.worksheets.forEach(function(v){s(v,v.id)})}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(s){var v=this.media.length;return this.media.push(Object.assign({},s,{type:"image"})),v}},{key:"getImage",value:function(s){return this.media[s]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new f(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new y(this)),this._csv}},{key:"nextId",get:function(){for(var s=1;sL.length)&&(F=L.length);for(var M=0,D=new Array(F);Mthis._columns.length)for(var R=this._columns.length+1;R<=M;)this._columns.push(new i(this,R++));return this._columns[M-1]}},{key:"spliceColumns",value:function(M,D){for(var R=this,P=this._rows,E=P.length,A=arguments.length,z=new Array(A>2?A-2:0),W=2;W0)for(var $=function(be){var _e=[M,D];z.forEach(function(J){_e.push(J[be]||null)});var oe=R.getRow(be+1);oe.splice.apply(oe,_e)},U=0;U0)for(var te=B;te>=j;te--)this.getColumn(te+I).defn=this.getColumn(te).defn;for(var ie=M;ie1&&arguments[1]!==void 0?arguments[1]:"n",R=this._nextRow,P=this.getRow(R);return P.values=M,this._setStyleOption(R,D[0]==="i"?D:"n"),P}},{key:"addRows",value:function(M){var D=this,R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"n",P=[];return M.forEach(function(E){P.push(D.addRow(E,R))}),P}},{key:"insertRow",value:function(M,D){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";return this.spliceRows(M,0,D),this._setStyleOption(M,R),this.getRow(M)}},{key:"insertRows",value:function(M,D){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";if(this.spliceRows.apply(this,[M,0].concat(b(D))),R!=="n")for(var P=0;P1&&arguments[1]!==void 0?arguments[1]:"n";D[0]==="o"&&this.findRow(M+1)!==void 0?this._copyStyle(M+1,M,D[1]==="+"):D[0]==="i"&&this.findRow(M-1)!==void 0&&this._copyStyle(M-1,M,D[1]==="+")}},{key:"_copyStyle",value:function(M,D){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,P=this.getRow(M),E=this.getRow(D);E.style=Object.freeze(m({},P.style)),P.eachCell({includeEmpty:R},function(A,z){E.getCell(z).style=Object.freeze(m({},A.style))}),E.height=P.height}},{key:"duplicateRow",value:function(M,D){var R=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,E=this._rows[M-1],A=new Array(D).fill(E.values);this.spliceRows.apply(this,[M+1,P?0:D].concat(b(A)));for(var z=function(U){var I=R._rows[M+U];I.style=E.style,I.height=E.height,E.eachCell({includeEmpty:!0},function(j,B){I.getCell(B).style=j.style})},W=0;W2?E-2:0),z=2;z0)for(I=U;I>=P;I--)j=this._rows[I-1],j?function(){var V=R.getRow(I+$);V.values=j.values,V.style=j.style,V.height=j.height,j.eachCell({includeEmpty:!0},function(te,ie){if(V.getCell(ie).style=te.style,te._value.constructor.name==="MergeValue"){var ce=R.getRow(te._row._number+W).getCell(ie),be=te._value._master,_e=R.getRow(be._row._number+W).getCell(be._column._number);ce.merge(_e)}})}():this._rows[I+$-1]=void 0;for(I=0;IM.top||E>M.left)&&this.getCell(P,E).merge(R,D);this._merges[R.address]=M}},{key:"_unMergeMaster",value:function(M){var D=this._merges[M.address];if(D){for(var R=D.top;R<=D.bottom;R++)for(var P=D.left;P<=D.right;P++)this.getCell(R,P).unmerge();delete this._merges[M.address]}}},{key:"unMergeCells",value:function(){for(var M=arguments.length,D=new Array(M),R=0;R3&&arguments[3]!==void 0?arguments[3]:"shared",E=a.decode(M),A=E.top,z=E.left,W=E.bottom,$=E.right,U=$-z+1,I=a.encodeAddress(A,z),j=P==="shared",B;typeof R=="function"?B=R:Array.isArray(R)?Array.isArray(R[0])?B=function(be,_e){return R[be-A][_e-z]}:B=function(be,_e){return R[(be-A)*U+(_e-z)]}:B=function(){};for(var V=!0,te=A;te<=W;te++)for(var ie=z;ie<=$;ie++)V?(this.getCell(te,ie).value={shareType:P,formula:D,ref:M,result:B(te,ie)},V=!1):this.getCell(te,ie).value=j?{sharedFormula:I,result:B(te,ie)}:B(te,ie)}},{key:"addImage",value:function(M,D){var R={type:"image",imageId:M,range:D};this._media.push(new o(this,R))}},{key:"getImages",value:function(){return this._media.filter(function(M){return M.type==="image"})}},{key:"addBackgroundImage",value:function(M){var D={type:"background",imageId:M};this._media.push(new o(this,D))}},{key:"getBackgroundImageId",value:function(){var M=this._media.find(function(D){return D.type==="background"});return M&&M.imageId}},{key:"protect",value:function(M,D){var R=this;return new Promise(function(P){R.sheetProtection={sheet:!0},D&&"spinCount"in D&&(D.spinCount=Number.isFinite(D.spinCount)?Math.round(Math.max(0,D.spinCount)):1e5),M&&(R.sheetProtection.algorithmName="SHA-512",R.sheetProtection.saltValue=C.randomBytes(16).toString("base64"),R.sheetProtection.spinCount=D&&"spinCount"in D?D.spinCount:1e5,R.sheetProtection.hashValue=C.convertPasswordToHash(M,"SHA512",R.sheetProtection.saltValue,R.sheetProtection.spinCount)),D&&(R.sheetProtection=Object.assign(R.sheetProtection,D),!M&&"spinCount"in D&&delete R.sheetProtection.spinCount),P()})}},{key:"unprotect",value:function(){this.sheetProtection=null}},{key:"addTable",value:function(M){var D=new p(this,M);return this.tables[M.name]=D,D}},{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 D=this;this._rows=[],M.rows.forEach(function(R){var P=new t(D,R.number);D._rows[P.number-1]=P,P.model=R})}},{key:"_parseMergeCells",value:function(M){var D=this;c.each(M.mergeCells,function(R){D.mergeCellsWithoutStyle(R)})}},{key:"workbook",get:function(){return this._workbook}},{key:"dimensions",get:function(){var M=new r;return this._rows.forEach(function(D){if(D){var R=D.dimensions;R&&M.expand(D.number,R.min,D.number,R.max)}}),M}},{key:"columns",get:function(){return this._columns},set:function(M){var D=this;this._headerRowCount=M.reduce(function(E,A){var z=A.header&&1||A.headers&&A.headers.length||0;return Math.max(E,z)},0);var R=1,P=this._columns=[];M.forEach(function(E){var A=new i(D,R++,!1);P.push(A),A.defn=E})}},{key:"lastColumn",get:function(){return this.getColumn(this.columnCount)}},{key:"columnCount",get:function(){var M=0;return this.eachRow(function(D){M=Math.max(M,D.cellCount)}),M}},{key:"actualColumnCount",get:function(){var M=[],D=0;return this.eachRow(function(R){R.eachCell(function(P){var E=P.col;M[E]||(M[E]=!0,D++)})}),D}},{key:"_lastRowNumber",get:function(){for(var M=this._rows,D=M.length;D>0&&M[D-1]===void 0;)D--;return D}},{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 c.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=i.toModel(this.columns);var D=M.rows=[],R=M.dimensions=new r;return this._rows.forEach(function(P){var E=P&&P.model;E&&(R.expand(E.number,E.min,E.number,E.max),D.push(E))}),M.merges=[],c.each(this._merges,function(P){M.merges.push(P.range)}),M},set:function(M){var D=this;this.name=M.name,this._columns=i.fromModel(this,M.cols),this._parseRows(M),this._parseMergeCells(M),this.dataValidations=new O(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 o(D,R)}),this.sheetProtection=M.sheetProtection,this.tables=M.tables.reduce(function(R,P){var E=new p;return E.model=P,R[P.name]=E,R},{}),this.conditionalFormattings=M.conditionalFormattings}}]),L}();x.exports=N},{"../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,x,_){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 u={Workbook:e("./doc/workbook")},m=e("./doc/enums");Object.keys(m).forEach(function(g){u[g]=m[g]}),x.exports=u},{"./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,x,_){var u=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function m(g){return typeof g=="string"?g:u?u.decode(g):g.toString()}_.bufferToString=m},{}],17:[function(e,x,_){var u=typeof TextEncoder>"u"?null:new TextEncoder("utf-8"),m=e("buffer"),g=m.Buffer;function b(w){return typeof w!="string"?w:u?g.from(u.encode(w).buffer):g.from(w)}_.stringToBuffer=b},{buffer:216}],18:[function(e,x,_){function u(y,h){if(!(y instanceof h))throw new TypeError("Cannot call a class as a function")}function m(y,h){for(var l=0;lv.length)&&(c=v.length);for(var a=0,r=new Array(c);a"u"||!(Symbol.iterator in Object(v)))){var a=[],r=!0,t=!1,i=void 0;try{for(var n=v[Symbol.iterator](),o;!(r=(o=n.next()).done)&&(a.push(o.value),!(c&&a.length===c));r=!0);}catch(p){t=!0,i=p}finally{try{!r&&n.return!=null&&n.return()}finally{if(t)throw i}}return a}}function f(v){if(Array.isArray(v))return v}function y(v,c){var a=Object.keys(v);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(v);c&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(v,t).enumerable})),a.push.apply(a,r)}return a}function h(v){for(var c=1;c=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&c>=1){for(;o<=26;)a=this._dictionary[o-1],this._n2l[o]=a,this._l2n[a]=o,o++;this._l2nFill=1}if(this._l2nFill<2&&c>=2){for(o=27;o<=26+26*26;)r=o-(26+1),t=r%26,i=Math.floor(r/26),a=this._dictionary[i]+this._dictionary[t],this._n2l[o]=a,this._l2n[a]=o,o++;this._l2nFill=2}if(this._l2nFill<3&&c>=3){for(o=26+26*26+1;o<=16384;)r=o-(26*26+26+1),t=r%26,i=Math.floor(r/26)%26,n=Math.floor(r/(26*26)),a=this._dictionary[n]+this._dictionary[i]+this._dictionary[t],this._n2l[o]=a,this._l2n[a]=o,o++;this._l2nFill=3}},l2n:function(c){if(this._l2n[c]||this._fill(c.length),!this._l2n[c])throw new Error("Out of bounds. Invalid column letter: ".concat(c));return this._l2n[c]},n2l:function(c){if(c<1||c>16384)throw new Error("".concat(c," is out of bounds. Excel supports columns from 1 to 16384"));return this._n2l[c]||this._fill(this._level(c)),this._n2l[c]},_hash:{},validateAddress:function(c){if(!d.test(c))throw new Error("Invalid Address: ".concat(c));return!0},decodeAddress:function(c){var a=c.length<5&&this._hash[c];if(a)return a;for(var r=!1,t="",i=0,n=!1,o="",p=0,O=0,C;O=65&&C<=90)r=!0,t+=c[O],i=i*26+C-64;else if(C>=48&&C<=57)n=!0,o+=c[O],p=p*10+C-48;else if(n&&r&&C!==36)break;if(!r)i=void 0;else if(i>16384)throw new Error("Out of bounds. Invalid column letter: ".concat(t));n||(p=void 0),c=t+o;var N={address:c,col:i,row:p,$col$row:"$".concat(t,"$").concat(o)};return i<=100&&p<=100&&(this._hash[c]=N,this._hash[N.$col$row]=N),N},getAddress:function(c,a){if(a){var r=this.n2l(a)+c;return this.decodeAddress(r)}return this.decodeAddress(c)},decode:function(c){var a=c.split(":");if(a.length===2){var r=this.decodeAddress(a[0]),t=this.decodeAddress(a[1]),i={top:Math.min(r.row,t.row),left:Math.min(r.col,t.col),bottom:Math.max(r.row,t.row),right:Math.max(r.col,t.col)};return i.tl=this.n2l(i.left)+i.top,i.br=this.n2l(i.right)+i.bottom,i.dimensions="".concat(i.tl,":").concat(i.br),i}return this.decodeAddress(c)},decodeEx:function(c){var a=c.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),r=a[1]||a[2],t=a[3],i=t.split(":");if(i.length>1){var n=this.decodeAddress(i[0]),o=this.decodeAddress(i[1]),p=Math.min(n.row,o.row),O=Math.min(n.col,o.col),C=Math.max(n.row,o.row),N=Math.max(n.col,o.col);return n=this.n2l(O)+p,o=this.n2l(N)+C,{top:p,left:O,bottom:C,right:N,sheetName:r,tl:{address:n,col:O,row:p,$col$row:"$".concat(this.n2l(O),"$").concat(p),sheetName:r},br:{address:o,col:N,row:C,$col$row:"$".concat(this.n2l(N),"$").concat(C),sheetName:r},dimensions:"".concat(n,":").concat(o)}}if(t.startsWith("#"))return r?{sheetName:r,error:t}:{error:t};var L=this.decodeAddress(t);return r?h({sheetName:r},L):L},encodeAddress:function(c,a){return s.n2l(a)+c},encode:function(){switch(arguments.length){case 2:return s.encodeAddress(arguments[0],arguments[1]);case 4:return"".concat(s.encodeAddress(arguments[0],arguments[1]),":").concat(s.encodeAddress(arguments[2],arguments[3]));default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange:function(c,a){var r=u(c,5),t=r[0],i=r[1],n=r[3],o=r[4],p=u(a,2),O=p[0],C=p[1];return O>=t&&O<=n&&C>=i&&C<=o}};x.exports=s},{}],20:[function(e,x,_){(function(u){var m=e("crypto"),g={hash:function(w){for(var f=m.createHash(w),y=arguments.length,h=new Array(y>1?y-1:0),l=1;l3||i.length===3&&i>"XFD")return d;var p=u.l2n(i),O=parseInt(o,10);t||(p+=l.col-h.col),n||(O+=l.row-h.row);var C=(s||"")+(t||"")+u.n2l(p)+(n||"")+O;return C}return d})}x.exports={slideFormula:b}},{"./col-cache":19}],23:[function(e,x,_){(function(u,m){function g(t,i,n,o,p,O,C){try{var N=t[O](C),L=N.value}catch(F){n(F);return}N.done?i(L):Promise.resolve(L).then(o,p)}function b(t){return function(){var i=this,n=arguments;return new Promise(function(o,p){var O=t.apply(i,n);function C(L){g(O,o,p,C,N,"next",L)}function N(L){g(O,o,p,C,N,"throw",L)}C(void 0)})}}function w(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function f(t,i){for(var n=0;n=this.length?(o=this.toBuffer(),this.iRead=this.iWrite,o):(o=m.alloc(n),this.buffer.copy(o,0,this.iRead,n),this.iRead+=n,o)}},{key:"write",value:function(n,o,p){var O=Math.min(p,this.size-this.iWrite);return n.copy(this.buffer,this.iWrite,o,o+O),this.iWrite+=O,O}},{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}}]),t}(),r=function(i){i=i||{},this.bufSize=i.bufSize||1024*1024,this.buffers=[],this.batch=i.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};l.inherits(r,h.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return m.concat(this.buffers.map(function(i){return i.toBuffer()}))}},_getWritableBuffer:function(){if(this.buffers.length){var i=this.buffers[this.buffers.length-1];if(!i.full)return i}var n=new a(this.bufSize);return this.buffers.push(n),n},_pipe:function(i){var n=this;return b(regeneratorRuntime.mark(function o(){var p;return regeneratorRuntime.wrap(function(C){for(;;)switch(C.prev=C.next){case 0:return p=function(L){return new Promise(function(F){L.write(i.toBuffer(),function(){F()})})},C.next=3,Promise.all(n.pipes.map(p));case 3:case"end":return C.stop()}},o)}))()},_writeToBuffers:function(i){for(var n=0,o=i.length;n1;)p._pipe(p.buffers.shift());L.next=29;break;case 21:if(p.corked){L.next=27;break}return L.next=24,p._pipe(C);case 24:o(),L.next=29;break;case 27:p._writeToBuffers(C),u.nextTick(o);case 29:L.next=34;break;case 31:p.paused||p.emit("data",C.toBuffer()),p._writeToBuffers(C),p.emit("readable");case 34:return L.abrupt("return",!0);case 35:case"end":return L.stop()}},O)}))()},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(i,n,o){var p=this,O=function(N){N?o(N):(p._flush(),p.pipes.forEach(function(L){L.end()}),p.emit("finish"))};i?this.write(i,n,O):O()},read:function(i){var n;if(i){for(n=[];i&&this.buffers.length&&!this.buffers[0].eod;){var o=this.buffers[0],p=o.read(i);i-=p.length,n.push(p),o.eod&&o.full&&this.buffers.shift()}return m.concat(n)}return n=this.buffers.map(function(O){return O.toBuffer()}).filter(Boolean),this.buffers=[],m.concat(n)},setEncoding:function(i){this.encoding=i},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(i){this.pipes.push(i),!this.paused&&this.buffers.length&&this.end()},unpipe:function(i){this.pipes=this.pipes.filter(function(n){return n!==i})},unshift:function(){throw new Error("Not Implemented")},wrap:function(){throw new Error("Not Implemented")}}),x.exports=r}).call(this,e("_process"),e("buffer").Buffer)},{"./string-buf":24,"./utils":26,_process:467,buffer:216,"readable-stream":491}],24:[function(e,x,_){(function(u){function m(f,y){if(!(f instanceof y))throw new TypeError("Cannot call a class as a function")}function g(f,y){for(var h=0;h=this._buf.length-4;)this._grow(this._inPos+h.length),l=this._inPos+this._buf.write(h,this._inPos,this._encoding);this._inPos=l}},{key:"addStringBuf",value:function(h){h.length&&(this._buffer=void 0,this.length+h.length>this.capacity&&this._grow(this.length+h.length),h._buf.copy(this._buf,this._inPos,0,h.length),this._inPos+=h.length)}},{key:"length",get:function(){return this._inPos}},{key:"capacity",get:function(){return this._buf.length}},{key:"buffer",get:function(){return this._buf}}]),f}();x.exports=w}).call(this,e("buffer").Buffer)},{buffer:216}],25:[function(e,x,_){function u(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(y){return typeof y}:u=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},u(w)}var m=Object.prototype.toString,g=/["&<>]/,b={each:function(f,y){f&&(Array.isArray(f)?f.forEach(y):Object.keys(f).forEach(function(h){y(f[h],h)}))},some:function(f,y){return f?Array.isArray(f)?f.some(y):Object.keys(f).some(function(h){return y(f[h],h)}):!1},every:function(f,y){return f?Array.isArray(f)?f.every(y):Object.keys(f).every(function(h){return y(f[h],h)}):!0},map:function(f,y){return f?Array.isArray(f)?f.map(y):Object.keys(f).map(function(h){return y(f[h],h)}):[]},keyBy:function(f,y){return f.reduce(function(h,l){return h[l[y]]=l,h},{})},isEqual:function(f,y){var h=u(f),l=u(y),d=Array.isArray(f),s=Array.isArray(y);if(h!==l)return!1;switch(u(f)){case"object":return d||s?d&&s?f.length===y.length&&f.every(function(v,c){var a=y[c];return b.isEqual(v,a)}):!1:b.every(f,function(v,c){var a=y[c];return b.isEqual(v,a)});default:return f===y}},escapeHtml:function(f){var y=g.exec(f);if(!y)return f;for(var h="",l="",d=0,s=y.index;s":l=">";break;default:continue}d!==s&&(h+=f.substring(d,s)),d=s+1,h+=l}return d!==s?h+f.substring(d,s):h},strcmp:function(f,y){return fy?1:0},isUndefined:function(f){return m.call(f)==="[object Undefined]"},isObject:function(f){return m.call(f)==="[object Object]"},deepMerge:function(){var f=arguments[0]||{},y=arguments.length,h,l,d;function s(c,a){h=f[a],d=Array.isArray(c),b.isObject(c)||d?(d?(d=!1,l=h&&Array.isArray(h)?h:[]):l=h&&b.isObject(h)?h:{},f[a]=b.deepMerge(l,c)):b.isUndefined(c)||(f[a]=c)}for(var v=0;v&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,f={nop:function(){},promiseImmediate:function(h){return new Promise(function(l){u.setImmediate?m(function(){l(h)}):setTimeout(function(){l(h)},1)})},inherits:b,dateToExcel:function(h,l){return 25569+h.getTime()/(24*3600*1e3)-(l?1462:0)},excelToDate:function(h,l){var d=Math.round((h-25569+(l?1462:0))*24*3600*1e3);return new Date(d)},parsePath:function(h){var l=h.lastIndexOf("/");return{path:h.substring(0,l),name:h.substring(l+1)}},getRelsPath:function(h){var l=f.parsePath(h);return"".concat(l.path,"/_rels/").concat(l.name,".rels")},xmlEncode:function(h){var l=w.exec(h);if(!l)return h;for(var d="",s="",v=0,c=l.index;c=11&&a!==13)){s="";break}continue}}v!==c&&(d+=h.substring(v,c)),v=c+1,s&&(d+=s)}return v!==c?d+h.substring(v,c):d},xmlDecode:function(h){return h.replace(/&([a-z]*);/g,function(l){switch(l){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case""":return'"';default:return l}})},validInt:function(h){var l=parseInt(h,10);return Number.isNaN(l)?0:l},isDateFmt:function(h){if(!h)return!1;h=h.replace(/\[[^\]]*]/g,""),h=h.replace(/"[^"]*"/g,"");var l=h.match(/[ymdhMsb]+/)!==null;return l},fs:{exists:function(h){return new Promise(function(l){g.access(h,g.constants.F_OK,function(d){l(!d)})})}},toIsoDateString:function(h){return h.toIsoString().subsstr(0,10)}};x.exports=f}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{},e("timers").setImmediate)},{fs:215,timers:521}],27:[function(e,x,_){function u(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function m(t,i){for(var n=0;n",h="",d='="',s='"',v=" ";function c(t,i,n){t.push(v),t.push(i),t.push(d),t.push(w.xmlEncode(n.toString())),t.push(s)}function a(t,i){i&&b.each(i,function(n,o){n!==void 0&&c(t,o,n)})}var r=function(){function t(){u(this,t),this._xml=[],this._stack=[],this._rollbacks=[]}return g(t,[{key:"openXml",value:function(n){var o=this._xml;o.push(" +`)}},{key:"openNode",value:function(n,o){var p=this.tos,O=this._xml;p&&this.open&&O.push(y),this._stack.push(n),O.push(f),O.push(n),a(O,o),this.leaf=!0,this.open=!0}},{key:"addAttribute",value:function(n,o){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");o!==void 0&&c(this._xml,n,o)}},{key:"addAttributes",value:function(n){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");a(this._xml,n)}},{key:"writeText",value:function(n){var o=this._xml;this.open&&(o.push(y),this.open=!1),this.leaf=!1,o.push(w.xmlEncode(n.toString()))}},{key:"writeXml",value:function(n){this.open&&(this._xml.push(y),this.open=!1),this.leaf=!1,this._xml.push(n)}},{key:"closeNode",value:function(){var n=this._stack.pop(),o=this._xml;this.leaf?o.push(l):(o.push(h),o.push(n),o.push(y)),this.open=!1,this.leaf=!1}},{key:"leafNode",value:function(n,o,p){this.openNode(n,o),p!==void 0&&this.writeText(p),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 n=this._rollbacks.pop();this._xml.length>n.xml&&this._xml.splice(n.xml,this._xml.length-n.xml),this._stack.length>n.stack&&this._stack.splice(n.stack,this._stack.length-n.stack),this.leaf=n.leaf,this.open=n.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("")}}]),t}();r.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},x.exports=r},{"./under-dash":25,"./utils":26}],28:[function(e,x,_){(function(u){function m(O){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(N){return typeof N}:m=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},m(O)}function g(O,C,N,L,F,M,D){try{var R=O[M](D),P=R.value}catch(E){N(E);return}R.done?C(P):Promise.resolve(P).then(L,F)}function b(O){return function(){var C=this,N=arguments;return new Promise(function(L,F){var M=O.apply(C,N);function D(P){g(M,L,F,D,R,"next",P)}function R(P){g(M,L,F,D,R,"throw",P)}D(void 0)})}}function w(O,C){if(!(O instanceof C))throw new TypeError("Cannot call a class as a function")}function f(O,C){for(var N=0;N"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 a(O){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(N){return N.__proto__||Object.getPrototypeOf(N)},a(O)}var r=e("events"),t=e("jszip"),i=e("./stream-buf"),n=e("./browser-buffer-encode"),o=n.stringToBuffer,p=function(O){h(N,O);var C=d(N);function N(L){var F;return w(this,N),F=C.call(this),F.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},L),F.zip=new t,F.stream=new i,F}return y(N,[{key:"append",value:function(F,M){M.hasOwnProperty("base64")&&M.base64?this.zip.file(M.name,F,{base64:!0}):(u.browser&&typeof F=="string"&&(F=o(F)),this.zip.file(M.name,F))}},{key:"finalize",value:function(){var L=b(regeneratorRuntime.mark(function M(){var D;return regeneratorRuntime.wrap(function(P){for(;;)switch(P.prev=P.next){case 0:return P.next=2,this.zip.generateAsync(this.options);case 2:D=P.sent,this.stream.end(D),this.emit("finish");case 5:case"end":return P.stop()}},M,this)}));function F(){return L.apply(this,arguments)}return F}()},{key:"read",value:function(F){return this.stream.read(F)}},{key:"setEncoding",value:function(F){return this.stream.setEncoding(F)}},{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(F,M){return this.stream.pipe(F,M)}},{key:"unpipe",value:function(F){return this.stream.unpipe(F)}},{key:"unshift",value:function(F){return this.stream.unshift(F)}},{key:"wrap",value:function(F){return this.stream.wrap(F)}}]),N}(r.EventEmitter);x.exports={ZipWriter:p}}).call(this,e("_process"))},{"./browser-buffer-encode":17,"./stream-buf":23,_process:467,events:367,jszip:399}],29:[function(e,x,_){x.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,x,_){x.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,x,_){function u(c,a){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=m(c))||a&&c&&typeof c.length=="number"){r&&(c=r);var t=0,i=function(){};return{s:i,n:function(){return t>=c.length?{done:!0}:{done:!1,value:c[t++]}},e:function(C){throw C},f:i}}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 n=!0,o=!1,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var C=r.next();return n=C.done,C},e:function(C){o=!0,p=C},f:function(){try{!n&&r.return!=null&&r.return()}finally{if(o)throw p}}}}function m(c,a){if(c){if(typeof c=="string")return g(c,a);var r=Object.prototype.toString.call(c).slice(8,-1);if(r==="Object"&&c.constructor&&(r=c.constructor.name),r==="Map"||r==="Set")return Array.from(c);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(c,a)}}function g(c,a){(a==null||a>c.length)&&(a=c.length);for(var r=0,t=new Array(a);r2&&arguments[2]!==void 0?arguments[2]:!1;if(r===void 0){if(i)return t}else if(i||r!==t)return r.toString()}},{key:"toStringAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return c.toAttribute(r,t,i)}},{key:"toStringValue",value:function(r,t){return r===void 0?t:r}},{key:"toBoolAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(r===void 0){if(i)return t}else if(i||r!==t)return r?"1":"0"}},{key:"toBoolValue",value:function(r,t){return r===void 0?t:r==="1"}},{key:"toIntAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return c.toAttribute(r,t,i)}},{key:"toIntValue",value:function(r,t){return r===void 0?t:parseInt(r,10)}},{key:"toFloatAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return c.toAttribute(r,t,i)}},{key:"toFloatValue",value:function(r,t){return r===void 0?t:parseFloat(r)}}]),c}();x.exports=v},{"../../utils/parse-sax":21,"../../utils/xml-stream":27}],32:[function(e,x,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"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(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../base-xform"),c=e("../../../utils/col-cache"),a=function(i){w(o,i);var n=y(o);function o(){return m(this,o),n.apply(this,arguments)}return b(o,[{key:"render",value:function(O,C){O.openNode("definedName",{name:C.name,localSheetId:C.localSheetId}),O.writeText(C.ranges.join(",")),O.closeNode()}},{key:"parseOpen",value:function(O){switch(O.name){case"definedName":return this._parsedName=O.attributes.name,this._parsedLocalSheetId=O.attributes.localSheetId,this._parsedText=[],!0;default:return!1}}},{key:"parseText",value:function(O){this._parsedText.push(O)}},{key:"parseClose",value:function(){return this.model={name:this._parsedName,ranges:t(this._parsedText.join(""))},this._parsedLocalSheetId!==void 0&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}]),o}(v);function r(i){try{return c.decodeEx(i),!0}catch{return!1}}function t(i){var n=[],o=!1,p="";return i.split(",").forEach(function(O){if(O){var C=(O.match(/'/g)||[]).length;if(!C){o?p+="".concat(O,","):r(O)&&n.push(O);return}var N=C%2===0;!o&&N&&r(O)?n.push(O):o&&!N?(o=!1,r(p+O)&&n.push(p+O),p=""):(o=!0,p+="".concat(O,","))}}),n}x.exports=a},{"../../../utils/col-cache":19,"../base-xform":31}],33:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/utils"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){o.leafNode("sheet",{sheetId:p.id,name:p.name,state:p.state,"r:id":p.rId})}},{key:"parseOpen",value:function(o){return o.name==="sheet"?(this.model={name:v.xmlDecode(o.attributes.name),id:parseInt(o.attributes.sheetId,10),state:o.attributes.state,rId:o.attributes["r:id"]},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),i}(c);x.exports=a},{"../../../utils/utils":26,"../base-xform":31}],34:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("calcPr",{calcId:171027,fullCalcOnLoad:o.fullCalcOnLoad?1:void 0})}},{key:"parseOpen",value:function(n){return n.name==="calcPr"?(this.model={},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);x.exports=c},{"../base-xform":31}],35:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("workbookPr",{date1904:o.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}},{key:"parseOpen",value:function(n){return n.name==="workbookPr"?(this.model={date1904:n.attributes.date1904==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);x.exports=c},{"../base-xform":31}],36:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){var p={xWindow:o.x||0,yWindow:o.y||0,windowWidth:o.width||12e3,windowHeight:o.height||24e3,firstSheet:o.firstSheet,activeTab:o.activeTab};o.visibility&&o.visibility!=="visible"&&(p.visibility=o.visibility),n.leafNode("workbookView",p)}},{key:"parseOpen",value:function(n){if(n.name==="workbookView"){var o=this.model={},p=function(N,L,F){var M=L!==void 0?o[N]=L:F;M!==void 0&&(o[N]=M)},O=function(N,L,F){var M=L!==void 0?o[N]=parseInt(L,10):F;M!==void 0&&(o[N]=M)};return O("x",n.attributes.xWindow,0),O("y",n.attributes.yWindow,0),O("width",n.attributes.windowWidth,25e3),O("height",n.attributes.windowHeight,1e4),p("visibility",n.attributes.visibility,"visible"),O("activeTab",n.attributes.activeTab,void 0),O("firstSheet",n.attributes.firstSheet,void 0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);x.exports=c},{"../base-xform":31}],37:[function(e,x,_){function u(L){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(M){return typeof M}:u=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},u(L)}function m(L,F){if(!(L instanceof F))throw new TypeError("Cannot call a class as a function")}function g(L,F){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 s(L){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},s(L)}var v=e("../../../utils/under-dash"),c=e("../../../utils/col-cache"),a=e("../../../utils/xml-stream"),r=e("../base-xform"),t=e("../static-xform"),i=e("../list-xform"),n=e("./defined-name-xform"),o=e("./sheet-xform"),p=e("./workbook-view-xform"),O=e("./workbook-properties-xform"),C=e("./workbook-calc-properties-xform"),N=function(L){w(M,L);var F=y(M);function M(){var D;return m(this,M),D=F.call(this),D.map={fileVersion:M.STATIC_XFORMS.fileVersion,workbookPr:new O,bookViews:new i({tag:"bookViews",count:!1,childXform:new p}),sheets:new i({tag:"sheets",count:!1,childXform:new o}),definedNames:new i({tag:"definedNames",count:!1,childXform:new n}),calcPr:new C},D}return b(M,[{key:"prepare",value:function(R){R.sheets=R.worksheets;var P=[],E=0;R.sheets.forEach(function(A){if(A.pageSetup&&A.pageSetup.printArea&&A.pageSetup.printArea.split("&&").forEach(function(I){var j=I.split(":"),B={name:"_xlnm.Print_Area",ranges:["'".concat(A.name,"'!$").concat(j[0],":$").concat(j[1])],localSheetId:E};P.push(B)}),A.pageSetup&&(A.pageSetup.printTitlesRow||A.pageSetup.printTitlesColumn)){var z=[];if(A.pageSetup.printTitlesColumn){var W=A.pageSetup.printTitlesColumn.split(":");z.push("'".concat(A.name,"'!$").concat(W[0],":$").concat(W[1]))}if(A.pageSetup.printTitlesRow){var $=A.pageSetup.printTitlesRow.split(":");z.push("'".concat(A.name,"'!$").concat($[0],":$").concat($[1]))}var U={name:"_xlnm.Print_Titles",ranges:z,localSheetId:E};P.push(U)}E++}),P.length&&(R.definedNames=R.definedNames.concat(P)),(R.media||[]).forEach(function(A,z){A.name=A.type+(z+1)})}},{key:"render",value:function(R,P){R.openXml(a.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($,U){return $[U.Id]=U,$},{}),E=[],A,z=0;(R.sheets||[]).forEach(function($){var U=P[$.rId];U&&(A=R.worksheetHash["xl/".concat(U.Target.replace(/^(\s|\/xl\/)+/,""))],A&&(A.name=$.name,A.id=$.id,A.state=$.state,E[z++]=A))});var W=[];v.each(R.definedNames,function($){if($.name==="_xlnm.Print_Area"){if(A=E[$.localSheetId],A){A.pageSetup||(A.pageSetup={});var U=c.decodeEx($.ranges[0]);A.pageSetup.printArea=A.pageSetup.printArea?"".concat(A.pageSetup.printArea,"&&").concat(U.dimensions):U.dimensions}}else if($.name==="_xlnm.Print_Titles"){if(A=E[$.localSheetId],A){A.pageSetup||(A.pageSetup={});var I=$.ranges.join(","),j=/\$/g,B=/\$\d+:\$\d+/,V=I.match(B);if(V&&V.length){var te=V[0];A.pageSetup.printTitlesRow=te.replace(j,"")}var ie=/\$[A-Z]+:\$[A-Z]+/,ce=I.match(ie);if(ce&&ce.length){var be=ce[0];A.pageSetup.printTitlesColumn=be.replace(j,"")}}}else W.push($)}),R.definedNames=W,R.media.forEach(function($,U){$.index=U})}}]),M}(r);N.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"},N.STATIC_XFORMS={fileVersion:new t({tag:"fileVersion",$:{appName:"xl",lastEdited:5,lowestEdited:5,rupBuild:9303}})},x.exports=N},{"../../../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,x,_){function u(h,l){var d=Object.keys(h);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(h);l&&(s=s.filter(function(v){return Object.getOwnPropertyDescriptor(h,v).enumerable})),d.push.apply(d,s)}return d}function m(h){for(var l=1;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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n._model=i,n}return b(t,[{key:"render",value:function(n,o,p){o===p[2]?n.leafNode(this.tag):this.tag==="x:SizeWithCells"&&o===p[1]&&n.leafNode(this.tag)}},{key:"parseOpen",value:function(n){switch(n.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}}]),t}(v);x.exports=c},{"../../base-xform":31}],41:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n._model=i,n}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(n){this.text=n}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),t}(v);x.exports=c},{"../../base-xform":31}],42:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"getAnchorRect",value:function(n){var o=Math.floor(n.left),p=Math.floor((n.left-o)*68),O=Math.floor(n.top),C=Math.floor((n.top-O)*18),N=Math.floor(n.right),L=Math.floor((n.right-N)*68),F=Math.floor(n.bottom),M=Math.floor((n.bottom-F)*18);return[o,p,O,C,N,L,F,M]}},{key:"getDefaultRect",value:function(n){var o=n.col,p=6,O=Math.max(n.row-2,0),C=14,N=o+2,L=2,F=O+4,M=16;return[o,p,O,C,N,L,F,M]}},{key:"render",value:function(n,o){var p=o.anchor?this.getAnchorRect(o.anchor):this.getDefaultRect(o.refAddress);n.leafNode("x:Anchor",null,p.join(", "))}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(n){this.text=n}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"x:Anchor"}}]),t}(v);x.exports=c},{"../base-xform":31}],43:[function(e,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../base-xform"),c=e("./vml-anchor-xform"),a=e("./style/vml-protection-xform"),r=e("./style/vml-position-xform"),t=["twoCells","oneCells","absolute"],i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"x:Anchor":new c,"x:Locked":new a({tag:"x:Locked"}),"x:LockText":new a({tag:"x:LockText"}),"x:SizeWithCells":new r({tag:"x:SizeWithCells"}),"x:MoveWithCells":new r({tag:"x:MoveWithCells"})},O}return b(p,[{key:"render",value:function(C,N){var L=N.note,F=L.protection,M=L.editAs;C.openNode(this.tag,{ObjectType:"Note"}),this.map["x:MoveWithCells"].render(C,M,t),this.map["x:SizeWithCells"].render(C,M,t),this.map["x:Anchor"].render(C,N),this.map["x:Locked"].render(C,F.locked),C.leafNode("x:AutoFill",null,"False"),this.map["x:LockText"].render(C,F.lockText),C.leafNode("x:Row",null,N.refAddress.row-1),C.leafNode("x:Column",null,N.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),N=Object.keys(C).length;this.model.editAs=t[N],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"}}]),p}(v);x.exports=i},{"../base-xform":31,"./style/vml-position-xform":40,"./style/vml-protection-xform":41,"./vml-anchor-xform":42}],44:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("./vml-shape-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"v:shape":new a},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openXml(v.StdDocAttributes),p.openNode(this.tag,n.DRAWING_ATTRIBUTES),p.openNode("o:shapelayout",{"v:ext":"edit"}),p.leafNode("o:idmap",{"v:ext":"edit",data:1}),p.closeNode(),p.openNode("v:shapetype",{id:"_x0000_t202",coordsize:"21600,21600","o:spt":202,path:"m,l,21600r21600,l21600,xe"}),p.leafNode("v:stroke",{joinstyle:"miter"}),p.leafNode("v:path",{gradientshapeok:"t","o:connecttype":"rect"}),p.closeNode(),O.comments.forEach(function(N,L){C.map["v:shape"].render(p,N,L)}),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset(),this.model={comments:[]};break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0;switch(p){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(p,O){var C=this;p.anchors.forEach(function(N){N.br?C.map["xdr:twoCellAnchor"].reconcile(N,O):C.map["xdr:oneCellAnchor"].reconcile(N,O)})}},{key:"tag",get:function(){return"xml"}}]),n}(c);r.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"},x.exports=r},{"../../../utils/xml-stream":27,"../base-xform":31,"./vml-shape-xform":45}],45:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./vml-textbox-xform"),a=e("./vml-client-data-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"v:textbox":new c,"x:ClientData":new a},o}return b(n,[{key:"render",value:function(p,O,C){p.openNode("v:shape",n.V_SHAPE_ATTRIBUTES(O,C)),p.leafNode("v:fill",{color2:"infoBackground [80]"}),p.leafNode("v:shadow",{color:"none [81]",obscured:"t"}),p.leafNode("v:path",{"o:connecttype":"none"}),this.map["v:textbox"].render(p,O),this.map["x:ClientData"].render(p,O),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset(),this.model={margins:{insetmode:p.attributes["o:insetmode"]},anchor:"",editAs:"",protection:{}};break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.parser=void 0),!0;switch(p){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"}}]),n}(v);r.V_SHAPE_ATTRIBUTES=function(t,i){return{id:"_x0000_s".concat(1025+i),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":t.note.margins&&t.note.margins.insetmode}},x.exports=r},{"../base-xform":31,"./vml-client-data-xform":43,"./vml-textbox-xform":46}],46:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"conversionUnit",value:function(n,o,p){return"".concat(parseFloat(n)*o.toFixed(2)).concat(p)}},{key:"reverseConversionUnit",value:function(n){var o=this;return(n||"").split(",").map(function(p){return Number(parseFloat(o.conversionUnit(parseFloat(p),.1,"")).toFixed(2))})}},{key:"render",value:function(n,o){var p=this,O={style:"mso-direction-alt:auto"};if(o&&o.note){var C=o.note&&o.note.margins,N=C.inset;Array.isArray(N)&&(N=N.map(function(L){return p.conversionUnit(L,10,"mm")}).join(",")),N&&(O.inset=N)}n.openNode("v:textbox",O),n.leafNode("div",{style:"text-align:left"}),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={inset:this.reverseConversionUnit(n.attributes.inset)},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"v:textbox"}}]),t}(v);x.exports=c},{"../base-xform":31}],47:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("./base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"createNewModel",value:function(n){return{}}},{key:"parseOpen",value:function(n){return this.parser=this.parser||this.map[n.name],this.parser?(this.parser.parseOpen(n),!0):n.name===this.tag?(this.model=this.createNewModel(n),!0):!1}},{key:"parseText",value:function(n){this.parser&&this.parser.parseText(n)}},{key:"onParserClose",value:function(n,o){this.model[n]=o.model}},{key:"parseClose",value:function(n){return this.parser?(this.parser.parseClose(n)||(this.onParserClose(n,this.parser),this.parser=void 0),!0):n!==this.tag}}]),t}(v);x.exports=c},{"./base-xform":31}],48:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.openNode("HeadingPairs"),n.openNode("vt:vector",{size:2,baseType:"variant"}),n.openNode("vt:variant"),n.leafNode("vt:lpstr",void 0,"Worksheets"),n.closeNode(),n.openNode("vt:variant"),n.leafNode("vt:i4",void 0,o.length),n.closeNode(),n.closeNode(),n.closeNode()}},{key:"parseOpen",value:function(n){return n.name==="HeadingPairs"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){return n!=="HeadingPairs"}}]),t}(v);x.exports=c},{"../base-xform":31}],49:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.openNode("TitlesOfParts"),n.openNode("vt:vector",{size:o.length,baseType:"lpstr"}),o.forEach(function(p){n.leafNode("vt:lpstr",void 0,p.name)}),n.closeNode(),n.closeNode()}},{key:"parseOpen",value:function(n){return n.name==="TitlesOfParts"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){return n!=="TitlesOfParts"}}]),t}(v);x.exports=c},{"../base-xform":31}],50:[function(e,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("../simple/string-xform"),r=e("./app-heading-pairs-xform"),t=e("./app-titles-of-parts-xform"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={Company:new a({tag:"Company"}),Manager:new a({tag:"Manager"}),HeadingPairs:new r,TitleOfParts:new t},O}return b(p,[{key:"render",value:function(C,N){C.openXml(v.StdDocAttributes),C.openNode("Properties",p.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,N.worksheets),this.map.TitleOfParts.render(C,N.worksheets),this.map.Company.render(C,N.company||""),this.map.Manager.render(C,N.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}}}]),p}(c);i.DateFormat=function(n){return n.toISOString().replace(/[.]\d{3,6}/,"")},i.DateAttrs={"xsi:type":"dcterms:W3CDTF"},i.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties","xmlns:vt":"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"},x.exports=i},{"../../../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,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){o.openXml(v.StdDocAttributes),o.openNode("Types",i.PROPERTY_ATTRIBUTES);var O={};(p.media||[]).forEach(function(N){if(N.type==="image"){var L=N.extension;O[L]||(O[L]=!0,o.leafNode("Default",{Extension:L,ContentType:"image/".concat(L)}))}}),o.leafNode("Default",{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}),o.leafNode("Default",{Extension:"xml",ContentType:"application/xml"}),o.leafNode("Override",{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}),p.worksheets.forEach(function(N){var L="/xl/worksheets/sheet".concat(N.id,".xml");o.leafNode("Override",{PartName:L,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"})}),o.leafNode("Override",{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}),o.leafNode("Override",{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"});var C=p.sharedStrings&&p.sharedStrings.count;C&&o.leafNode("Override",{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}),p.tables&&p.tables.forEach(function(N){o.leafNode("Override",{PartName:"/xl/tables/".concat(N.target),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"})}),p.drawings&&p.drawings.forEach(function(N){o.leafNode("Override",{PartName:"/xl/drawings/".concat(N.name,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml"})}),p.commentRefs&&(o.leafNode("Default",{Extension:"vml",ContentType:"application/vnd.openxmlformats-officedocument.vmlDrawing"}),p.commentRefs.forEach(function(N){var L=N.commentName;o.leafNode("Override",{PartName:"/xl/".concat(L,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"})})),o.leafNode("Override",{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}),o.leafNode("Override",{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}),o.closeNode()}},{key:"parseOpen",value:function(){return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),i}(c);a.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},x.exports=a},{"../../../utils/xml-stream":27,"../base-xform":31}],52:[function(e,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("../simple/date-xform"),r=e("../simple/string-xform"),t=e("../simple/integer-xform"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"dc:creator":new r({tag:"dc:creator"}),"dc:title":new r({tag:"dc:title"}),"dc:subject":new r({tag:"dc:subject"}),"dc:description":new r({tag:"dc:description"}),"dc:identifier":new r({tag:"dc:identifier"}),"dc:language":new r({tag:"dc:language"}),"cp:keywords":new r({tag:"cp:keywords"}),"cp:category":new r({tag:"cp:category"}),"cp:lastModifiedBy":new r({tag:"cp:lastModifiedBy"}),"cp:lastPrinted":new a({tag:"cp:lastPrinted",format:p.DateFormat}),"cp:revision":new t({tag:"cp:revision"}),"cp:version":new r({tag:"cp:version"}),"cp:contentStatus":new r({tag:"cp:contentStatus"}),"cp:contentType":new r({tag:"cp:contentType"}),"dcterms:created":new a({tag:"dcterms:created",attrs:p.DateAttrs,format:p.DateFormat}),"dcterms:modified":new a({tag:"dcterms:modified",attrs:p.DateAttrs,format:p.DateFormat})},O}return b(p,[{key:"render",value:function(C,N){C.openXml(v.StdDocAttributes),C.openNode("cp:coreProperties",p.CORE_PROPERTY_ATTRIBUTES),this.map["dc:creator"].render(C,N.creator),this.map["dc:title"].render(C,N.title),this.map["dc:subject"].render(C,N.subject),this.map["dc:description"].render(C,N.description),this.map["dc:identifier"].render(C,N.identifier),this.map["dc:language"].render(C,N.language),this.map["cp:keywords"].render(C,N.keywords),this.map["cp:category"].render(C,N.category),this.map["cp:lastModifiedBy"].render(C,N.lastModifiedBy),this.map["cp:lastPrinted"].render(C,N.lastPrinted),this.map["cp:revision"].render(C,N.revision),this.map["cp:version"].render(C,N.version),this.map["cp:contentStatus"].render(C,N.contentStatus),this.map["cp:contentType"].render(C,N.contentType),this.map["dcterms:created"].render(C,N.created),this.map["dcterms:modified"].render(C,N.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))}}}]),p}(c);i.DateFormat=function(n){return n.toISOString().replace(/[.]\d{3}/,"")},i.DateAttrs={"xsi:type":"dcterms:W3CDTF"},i.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"},x.exports=i},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/date-xform":116,"../simple/integer-xform":117,"../simple/string-xform":118}],53:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("Relationship",o)}},{key:"parseOpen",value:function(n){switch(n.name){case"Relationship":return this.model=n.attributes,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);x.exports=c},{"../base-xform":31}],54:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("./relationship-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={Relationship:new a},o}return b(n,[{key:"render",value:function(p,O){var C=this;O=O||this._values,p.openXml(v.StdDocAttributes),p.openNode("Relationships",n.RELATIONSHIPS_ATTRIBUTES),O.forEach(function(N){C.map.Relationship.render(p,N)}),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"Relationships":return this.model=[],!0;default:if(this.parser=this.map[p.name],this.parser)return this.parser.parseOpen(p),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(p)))}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.model.push(this.parser.model),this.parser=void 0),!0;switch(p){case"Relationships":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(p))}}}]),n}(c);r.RELATIONSHIPS_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},x.exports=r},{"../../../utils/xml-stream":27,"../base-xform":31,"./relationship-xform":53}],55:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"parseOpen",value:function(n){if(this.parser)return this.parser.parseOpen(n),!0;switch(n.name){case this.tag:this.reset(),this.model={range:{editAs:n.attributes.editAs||"oneCell"}};break;default:this.parser=this.map[n.name],this.parser&&this.parser.parseOpen(n);break}return!0}},{key:"parseText",value:function(n){this.parser&&this.parser.parseText(n)}},{key:"reconcilePicture",value:function(n,o){if(n&&n.rId){var p=o.rels[n.rId],O=p.Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/);if(O){var C=O[1],N=o.mediaIndex[C];return o.media[N]}}}}]),t}(v);x.exports=c},{"../base-xform":31}],56:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("./blip-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={"a:blip":new c},n}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag),this.map["a:blip"].render(o,p),o.openNode("a:stretch"),o.leafNode("a:fillRect"),o.closeNode(),o.closeNode()}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;switch(o.name){case this.tag:this.reset();break;default:this.parser=this.map[o.name],this.parser&&this.parser.parseOpen(o);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(o){if(this.parser)return this.parser.parseClose(o)||(this.parser=void 0),!0;switch(o){case this.tag:return this.model=this.map["a:blip"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:blipFill"}}]),i}(v);x.exports=a},{"../base-xform":31,"./blip-xform":57}],57:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":o.rId,cstate:"print"})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:embed"]},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:blip"}}]),t}(v);x.exports=c},{"../base-xform":31}],58:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n){n.openNode(this.tag),n.leafNode("a:picLocks",{noChangeAspect:"1"}),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPicPr"}}]),t}(v);x.exports=c},{"../base-xform":31}],59:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./hlink-click-xform"),a=e("./ext-lst-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"a:hlinkClick":new c,"a:extLst":new a},o}return b(n,[{key:"render",value:function(p,O){p.openNode(this.tag,{id:O.index,name:"Picture ".concat(O.index)}),this.map["a:hlinkClick"].render(p,O),this.map["a:extLst"].render(p,O),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset();break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.parser=void 0),!0;switch(p){case this.tag:return this.model=this.map["a:hlinkClick"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPr"}}]),n}(v);x.exports=r},{"../base-xform":31,"./ext-lst-xform":62,"./hlink-click-xform":64}],60:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("../simple/integer-xform"),a=function(r){w(i,r);var t=y(i);function i(n){var o;return m(this,i),o=t.call(this),o.tag=n.tag,o.map={"xdr:col":new c({tag:"xdr:col",zero:!0}),"xdr:colOff":new c({tag:"xdr:colOff",zero:!0}),"xdr:row":new c({tag:"xdr:row",zero:!0}),"xdr:rowOff":new c({tag:"xdr:rowOff",zero:!0})},o}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag),this.map["xdr:col"].render(o,p.nativeCol),this.map["xdr:colOff"].render(o,p.nativeColOff),this.map["xdr:row"].render(o,p.nativeRow),this.map["xdr:rowOff"].render(o,p.nativeRowOff),o.closeNode()}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;switch(o.name){case this.tag:this.reset();break;default:this.parser=this.map[o.name],this.parser&&this.parser.parseOpen(o);break}return!0}},{key:"parseText",value:function(o){this.parser&&this.parser.parseText(o)}},{key:"parseClose",value:function(o){if(this.parser)return this.parser.parseClose(o)||(this.parser=void 0),!0;switch(o){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}}}]),i}(v);x.exports=a},{"../base-xform":31,"../simple/integer-xform":117}],61:[function(e,x,_){function u(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(O){return typeof O}:u=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},u(o)}function m(o,p){if(!(o instanceof p))throw new TypeError("Cannot call a class as a function")}function g(o,p){for(var O=0;O"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(o){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(O){return O.__proto__||Object.getPrototypeOf(O)},s(o)}var v=e("../../../utils/col-cache"),c=e("../../../utils/xml-stream"),a=e("../base-xform"),r=e("./two-cell-anchor-xform"),t=e("./one-cell-anchor-xform");function i(o){var p=typeof o.range=="string"?v.decode(o.range):o.range;return p.br?"xdr:twoCellAnchor":"xdr:oneCellAnchor"}var n=function(o){w(O,o);var p=y(O);function O(){var C;return m(this,O),C=p.call(this),C.map={"xdr:twoCellAnchor":new r,"xdr:oneCellAnchor":new t},C}return b(O,[{key:"prepare",value:function(N){var L=this;N.anchors.forEach(function(F,M){F.anchorType=i(F);var D=L.map[F.anchorType];D.prepare(F,{index:M})})}},{key:"render",value:function(N,L){var F=this;N.openXml(c.StdDocAttributes),N.openNode(this.tag,O.DRAWING_ATTRIBUTES),L.anchors.forEach(function(M){var D=F.map[M.anchorType];D.render(N,M)}),N.closeNode()}},{key:"parseOpen",value:function(N){if(this.parser)return this.parser.parseOpen(N),!0;switch(N.name){case this.tag:this.reset(),this.model={anchors:[]};break;default:this.parser=this.map[N.name],this.parser&&this.parser.parseOpen(N);break}return!0}},{key:"parseText",value:function(N){this.parser&&this.parser.parseText(N)}},{key:"parseClose",value:function(N){if(this.parser)return this.parser.parseClose(N)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0;switch(N){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(N,L){var F=this;N.anchors.forEach(function(M){M.br?F.map["xdr:twoCellAnchor"].reconcile(M,L):F.map["xdr:oneCellAnchor"].reconcile(M,L)})}},{key:"tag",get:function(){return"xdr:wsDr"}}]),O}(a);n.DRAWING_ATTRIBUTES={"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},x.exports=n},{"../../../utils/col-cache":19,"../../../utils/xml-stream":27,"../base-xform":31,"./one-cell-anchor-xform":66,"./two-cell-anchor-xform":69}],62:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n){n.openNode(this.tag),n.openNode("a:ext",{uri:"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"}),n.leafNode("a16:creationId",{"xmlns:a16":"http://schemas.microsoft.com/office/drawing/2014/main",id:"{00000000-0008-0000-0000-000002000000}"}),n.closeNode(),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:extLst"}}]),t}(v);x.exports=c},{"../base-xform":31}],63:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=9525,a=function(r){w(i,r);var t=y(i);function i(n){var o;return m(this,i),o=t.call(this),o.tag=n.tag,o.map={},o}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag);var O=Math.floor(p.width*c),C=Math.floor(p.height*c);o.addAttribute("cx",O),o.addAttribute("cy",C),o.closeNode()}},{key:"parseOpen",value:function(o){return o.name===this.tag?(this.model={width:parseInt(o.attributes.cx||"0",10)/c,height:parseInt(o.attributes.cy||"0",10)/c},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),i}(v);x.exports=a},{"../base-xform":31}],64:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o.hyperlinks&&o.hyperlinks.rId&&n.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":o.hyperlinks.rId,tooltip:o.hyperlinks.tooltip})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={hyperlinks:{rId:n.attributes["r:id"],tooltip:n.attributes.tooltip}},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"a:hlinkClick"}}]),t}(v);x.exports=c},{"../base-xform":31}],65:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./c-nv-pr-xform"),a=e("./c-nv-pic-pr-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"xdr:cNvPr":new c,"xdr:cNvPicPr":new a},o}return b(n,[{key:"render",value:function(p,O){p.openNode(this.tag),this.map["xdr:cNvPr"].render(p,O),this.map["xdr:cNvPicPr"].render(p,O),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset();break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.parser=void 0),!0;switch(p){case this.tag:return this.model=this.map["xdr:cNvPr"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:nvPicPr"}}]),n}(v);x.exports=r},{"../base-xform":31,"./c-nv-pic-pr-xform":58,"./c-nv-pr-xform":59}],66:[function(e,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("./base-cell-anchor-xform"),c=e("../static-xform"),a=e("./cell-position-xform"),r=e("./ext-xform"),t=e("./pic-xform"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"xdr:from":new a({tag:"xdr:from"}),"xdr:ext":new r({tag:"xdr:ext"}),"xdr:pic":new t,"xdr:clientData":new c({tag:"xdr:clientData"})},O}return b(p,[{key:"prepare",value:function(C,N){this.map["xdr:pic"].prepare(C.picture,N)}},{key:"render",value:function(C,N){C.openNode(this.tag,{editAs:N.range.editAs||"oneCell"}),this.map["xdr:from"].render(C,N.range.tl),this.map["xdr:ext"].render(C,N.range.ext),this.map["xdr:pic"].render(C,N.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,N){C.medium=this.reconcilePicture(C.picture,N)}},{key:"tag",get:function(){return"xdr:oneCellAnchor"}}]),p}(v);x.exports=i},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./ext-xform":63,"./pic-xform":67}],67:[function(e,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../base-xform"),c=e("../static-xform"),a=e("./blip-fill-xform"),r=e("./nv-pic-pr-xform"),t=e("./sp-pr"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"xdr:nvPicPr":new r,"xdr:blipFill":new a,"xdr:spPr":new c(t)},O}return b(p,[{key:"prepare",value:function(C,N){C.index=N.index+1}},{key:"render",value:function(C,N){C.openNode(this.tag),this.map["xdr:nvPicPr"].render(C,N),this.map["xdr:blipFill"].render(C,N),this.map["xdr:spPr"].render(C,N),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"}}]),p}(v);x.exports=i},{"../base-xform":31,"../static-xform":119,"./blip-fill-xform":56,"./nv-pic-pr-xform":65,"./sp-pr":68}],68:[function(e,x,_){x.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,x,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"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(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("./base-cell-anchor-xform"),c=e("../static-xform"),a=e("./cell-position-xform"),r=e("./pic-xform"),t=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={"xdr:from":new a({tag:"xdr:from"}),"xdr:to":new a({tag:"xdr:to"}),"xdr:pic":new r,"xdr:clientData":new c({tag:"xdr:clientData"})},p}return b(o,[{key:"prepare",value:function(O,C){this.map["xdr:pic"].prepare(O.picture,C)}},{key:"render",value:function(O,C){O.openNode(this.tag,{editAs:C.range.editAs||"oneCell"}),this.map["xdr:from"].render(O,C.range.tl),this.map["xdr:to"].render(O,C.range.br),this.map["xdr:pic"].render(O,C.picture),this.map["xdr:clientData"].render(O,{}),O.closeNode()}},{key:"parseClose",value:function(O){if(this.parser)return this.parser.parseClose(O)||(this.parser=void 0),!0;switch(O){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(O,C){O.medium=this.reconcilePicture(O.picture,C)}},{key:"tag",get:function(){return"xdr:twoCellAnchor"}}]),o}(v);x.exports=t},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./pic-xform":67}],70:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("./base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.always=!!i.always,n.count=i.count,n.empty=i.empty,n.$count=i.$count||"count",n.$=i.$,n.childXform=i.childXform,n.maxItems=i.maxItems,n}return b(t,[{key:"prepare",value:function(n,o){var p=this.childXform;n&&n.forEach(function(O,C){o.index=C,p.prepare(O,o)})}},{key:"render",value:function(n,o){if(this.always||o&&o.length){n.openNode(this.tag,this.$),this.count&&n.addAttribute(this.$count,o&&o.length||0);var p=this.childXform;(o||[]).forEach(function(O,C){p.render(n,O,C)}),n.closeNode()}else this.empty&&n.leafNode(this.tag)}},{key:"parseOpen",value:function(n){if(this.parser)return this.parser.parseOpen(n),!0;switch(n.name){case this.tag:return this.model=[],!0;default:return this.childXform.parseOpen(n)?(this.parser=this.childXform,!0):!1}}},{key:"parseText",value:function(n){this.parser&&this.parser.parseText(n)}},{key:"parseClose",value:function(n){if(this.parser){if(!this.parser.parseClose(n)&&(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(n,o){if(n){var p=this.childXform;n.forEach(function(O){p.reconcile(O,o)})}}}]),t}(v);x.exports=c},{"./base-xform":31}],71:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/col-cache"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){if(p)if(typeof p=="string")o.leafNode("autoFilter",{ref:p});else{var O=function(F){return typeof F=="string"?F:v.getAddress(F.row,F.column).address},C=O(p.from),N=O(p.to);C&&N&&o.leafNode("autoFilter",{ref:"".concat(C,":").concat(N)})}}},{key:"parseOpen",value:function(o){o.name==="autoFilter"&&(this.model=o.attributes.ref)}},{key:"tag",get:function(){return"autoFilter"}}]),i}(c);x.exports=a},{"../../../utils/col-cache":19,"../base-xform":31}],72:[function(e,x,_){function u(N){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(F){return typeof F}:u=function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},u(N)}function m(N,L){var F=Object.keys(N);if(Object.getOwnPropertySymbols){var M=Object.getOwnPropertySymbols(N);L&&(M=M.filter(function(D){return Object.getOwnPropertyDescriptor(N,D).enumerable})),F.push.apply(F,M)}return F}function g(N){for(var L=1;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 a(N){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(F){return F.__proto__||Object.getPrototypeOf(F)},a(N)}var r=e("../../../utils/utils"),t=e("../base-xform"),i=e("../../../doc/range"),n=e("../../../doc/enums"),o=e("../strings/rich-text-xform");function p(N){if(N==null)return n.ValueType.Null;if(N instanceof String||typeof N=="string")return n.ValueType.String;if(typeof N=="number")return n.ValueType.Number;if(typeof N=="boolean")return n.ValueType.Boolean;if(N instanceof Date)return n.ValueType.Date;if(N.text&&N.hyperlink)return n.ValueType.Hyperlink;if(N.formula)return n.ValueType.Formula;if(N.error)return n.ValueType.Error;throw new Error("I could not understand type of value")}function O(N){switch(N.type){case n.ValueType.Formula:return p(N.result);default:return N.type}}var C=function(N){h(F,N);var L=d(F);function F(){var M;return w(this,F),M=L.call(this),M.richTextXForm=new o,M}return y(F,[{key:"prepare",value:function(D,R){var P=R.styles.addStyleModel(D.style||{},O(D));switch(P&&(D.styleId=P),D.comment&&R.comments.push(g(g({},D.comment),{},{ref:D.address})),D.type){case n.ValueType.String:case n.ValueType.RichText:R.sharedStrings&&(D.ssId=R.sharedStrings.add(D.value));break;case n.ValueType.Date:R.date1904&&(D.date1904=!0);break;case n.ValueType.Hyperlink:R.sharedStrings&&D.text!==void 0&&D.text!==null&&(D.ssId=R.sharedStrings.add(D.text)),R.hyperlinks.push({address:D.address,target:D.hyperlink,tooltip:D.tooltip});break;case n.ValueType.Merge:R.merges.add(D);break;case n.ValueType.Formula:if(R.date1904&&(D.date1904=!0),D.shareType==="shared"&&(D.si=R.siFormulae++),D.formula)R.formulae[D.address]=D;else if(D.sharedFormula){var E=R.formulae[D.sharedFormula];if(!E)throw new Error("Shared Formula master must exist above and or left of clone for cell ".concat(D.address));E.si===void 0?(E.shareType="shared",E.si=R.siFormulae++,E.range=new i(E.address,D.address)):E.range&&E.range.expandToAddress(D.address),D.si=E.si}break}}},{key:"renderFormula",value:function(D,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(p(R.result)){case n.ValueType.Null:D.leafNode("f",P,R.formula);break;case n.ValueType.String:D.addAttribute("t","str"),D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result);break;case n.ValueType.Number:D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result);break;case n.ValueType.Boolean:D.addAttribute("t","b"),D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result?1:0);break;case n.ValueType.Error:D.addAttribute("t","e"),D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result.error);break;case n.ValueType.Date:D.leafNode("f",P,R.formula),D.leafNode("v",null,r.dateToExcel(R.result,R.date1904));break;default:throw new Error("I could not understand type of value")}}},{key:"render",value:function(D,R){var P=this;if(!(R.type===n.ValueType.Null&&!R.styleId)){switch(D.openNode("c"),D.addAttribute("r",R.address),R.styleId&&D.addAttribute("s",R.styleId),R.type){case n.ValueType.Null:break;case n.ValueType.Number:D.leafNode("v",null,R.value);break;case n.ValueType.Boolean:D.addAttribute("t","b"),D.leafNode("v",null,R.value?"1":"0");break;case n.ValueType.Error:D.addAttribute("t","e"),D.leafNode("v",null,R.value.error);break;case n.ValueType.String:case n.ValueType.RichText:R.ssId!==void 0?(D.addAttribute("t","s"),D.leafNode("v",null,R.ssId)):R.value&&R.value.richText?(D.addAttribute("t","inlineStr"),D.openNode("is"),R.value.richText.forEach(function(E){P.richTextXForm.render(D,E)}),D.closeNode("is")):(D.addAttribute("t","str"),D.leafNode("v",null,R.value));break;case n.ValueType.Date:D.leafNode("v",null,r.dateToExcel(R.value,R.date1904));break;case n.ValueType.Hyperlink:R.ssId!==void 0?(D.addAttribute("t","s"),D.leafNode("v",null,R.ssId)):(D.addAttribute("t","str"),D.leafNode("v",null,R.text));break;case n.ValueType.Formula:this.renderFormula(D,R);break;case n.ValueType.Merge:break}D.closeNode()}}},{key:"parseOpen",value:function(D){if(this.parser)return this.parser.parseOpen(D),!0;switch(D.name){case"c":return this.model={address:D.attributes.r},this.t=D.attributes.t,D.attributes.s&&(this.model.styleId=parseInt(D.attributes.s,10)),!0;case"f":return this.currentNode="f",this.model.si=D.attributes.si,this.model.shareType=D.attributes.t,this.model.ref=D.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(D),!0;default:return!1}}},{key:"parseText",value:function(D){if(this.parser){this.parser.parseText(D);return}switch(this.currentNode){case"f":this.model.formula=this.model.formula?this.model.formula+D:D;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+D:D:this.model.value=this.model.value?this.model.value+D:D;break}}},{key:"parseClose",value:function(D){switch(D){case"c":{var R=this.model;if(R.formula||R.shareType)R.type=n.ValueType.Formula,R.value&&(this.t==="str"?R.result=r.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=n.ValueType.String,R.value=parseInt(R.value,10);break;case"str":R.type=n.ValueType.String,R.value=r.xmlDecode(R.value);break;case"inlineStr":R.type=n.ValueType.String;break;case"b":R.type=n.ValueType.Boolean,R.value=parseInt(R.value,10)!==0;break;case"e":R.type=n.ValueType.Error,R.value={error:R.value};break;default:R.type=n.ValueType.Number,R.value=parseFloat(R.value);break}else R.styleId?R.type=n.ValueType.Null:R.type=n.ValueType.Merge;return!1}case"f":case"v":case"is":return this.currentNode=void 0,!0;case"t":return this.parser?(this.parser.parseClose(D),!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(D),!0):!1}}},{key:"reconcile",value:function(D,R){var P=D.styleId&&R.styles&&R.styles.getStyleModel(D.styleId);switch(P&&(D.style=P),D.styleId!==void 0&&(D.styleId=void 0),D.type){case n.ValueType.String:typeof D.value=="number"&&R.sharedStrings&&(D.value=R.sharedStrings.getString(D.value)),D.value.richText&&(D.type=n.ValueType.RichText);break;case n.ValueType.Number:P&&r.isDateFmt(P.numFmt)&&(D.type=n.ValueType.Date,D.value=r.excelToDate(D.value,R.date1904));break;case n.ValueType.Formula:D.result!==void 0&&P&&r.isDateFmt(P.numFmt)&&(D.result=r.excelToDate(D.result,R.date1904)),D.shareType==="shared"&&(D.ref?R.formulae[D.si]=D.address:(D.sharedFormula=R.formulae[D.si],delete D.shareType),delete D.si);break}var E=R.hyperlinkMap[D.address];E&&(D.type===n.ValueType.Formula?(D.text=D.result,D.result=void 0):(D.text=D.value,D.value=void 0),D.type=n.ValueType.Hyperlink,D.hyperlink=E);var A=R.commentsMap&&R.commentsMap[D.address];A&&(D.comment=A)}},{key:"tag",get:function(){return"c"}}]),F}(t);x.exports=C},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],73:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,{iconSet:o.iconSet,iconId:o.iconId})}},{key:"parseOpen",value:function(n){var o=n.attributes;this.model={iconSet:o.iconSet,iconId:v.toIntValue(o.iconId)}}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"x14:cfIcon"}}]),t}(v);x.exports=c},{"../../base-xform":31}],74:[function(e,x,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){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 s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("uuid"),c=v.v4,a=e("../../base-xform"),r=e("../../composite-xform"),t=e("./databar-ext-xform"),i=e("./icon-set-ext-xform"),n={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},o=function(p){w(C,p);var O=y(C);function C(){var N;return m(this,C),N=O.call(this),N.map={"x14:dataBar":N.databarXform=new t,"x14:iconSet":N.iconSetXform=new i},N}return b(C,[{key:"prepare",value:function(L){C.isExt(L)&&(L.x14Id="{".concat(c(),"}").toUpperCase())}},{key:"render",value:function(L,F){if(C.isExt(F))switch(F.type){case"dataBar":this.renderDataBar(L,F);break;case"iconSet":this.renderIconSet(L,F);break}}},{key:"renderDataBar",value:function(L,F){L.openNode(this.tag,{type:"dataBar",id:F.x14Id}),this.databarXform.render(L,F),L.closeNode()}},{key:"renderIconSet",value:function(L,F){L.openNode(this.tag,{type:"iconSet",priority:F.priority,id:F.x14Id||"{".concat(c(),"}")}),this.iconSetXform.render(L,F),L.closeNode()}},{key:"createNewModel",value:function(L){var F=L.attributes;return{type:F.type,x14Id:F.id,priority:a.toIntValue(F.priority)}}},{key:"onParserClose",value:function(L,F){Object.assign(this.model,F.model)}},{key:"tag",get:function(){return"x14:cfRule"}}],[{key:"isExt",value:function(L){return L.type==="dataBar"?t.isExt(L):!!(L.type==="iconSet"&&(L.custom||n[L.iconSet]))}}]),C}(r);x.exports=o},{"../../base-xform":31,"../../composite-xform":47,"./databar-ext-xform":78,"./icon-set-ext-xform":80,uuid:526}],75:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../composite-xform"),c=e("./f-ext-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={"xm:f":n.fExtXform=new c},n}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag,{type:p.type}),p.value!==void 0&&this.fExtXform.render(o,p.value),o.closeNode()}},{key:"createNewModel",value:function(o){return{type:o.attributes.type}}},{key:"onParserClose",value:function(o,p){switch(o){case"xm:f":this.model.value=p.model?parseFloat(p.model):0;break}}},{key:"tag",get:function(){return"x14:cfvo"}}]),i}(v);x.exports=a},{"../../composite-xform":47,"./f-ext-xform":79}],76:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("./sqref-ext-xform"),a=e("./cf-rule-ext-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"xm:sqref":o.sqRef=new c,"x14:cfRule":o.cfRule=new a},o}return b(n,[{key:"prepare",value:function(p,O){var C=this;p.rules.forEach(function(N){C.cfRule.prepare(N,O)})}},{key:"render",value:function(p,O){var C=this;O.rules.some(a.isExt)&&(p.openNode(this.tag,{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"}),O.rules.filter(a.isExt).forEach(function(N){return C.cfRule.render(p,N)}),this.sqRef.render(p,O.ref),p.closeNode())}},{key:"createNewModel",value:function(){return{rules:[]}}},{key:"onParserClose",value:function(p,O){switch(p){case"xm:sqref":this.model.ref=O.model;break;case"x14:cfRule":this.model.rules.push(O.model);break}}},{key:"tag",get:function(){return"x14:conditionalFormatting"}}]),n}(v);x.exports=r},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./sqref-ext-xform":81}],77:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("./cf-rule-ext-xform"),a=e("./conditional-formatting-ext-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"x14:conditionalFormatting":o.cfXform=new a},o}return b(n,[{key:"hasContent",value:function(p){return p.hasExtContent===void 0&&(p.hasExtContent=p.some(function(O){return O.rules.some(c.isExt)})),p.hasExtContent}},{key:"prepare",value:function(p,O){var C=this;p.forEach(function(N){C.cfXform.prepare(N,O)})}},{key:"render",value:function(p,O){var C=this;this.hasContent(O)&&(p.openNode(this.tag),O.forEach(function(N){return C.cfXform.render(p,N)}),p.closeNode())}},{key:"createNewModel",value:function(){return[]}},{key:"onParserClose",value:function(p,O){this.model.push(O.model)}},{key:"tag",get:function(){return"x14:conditionalFormattings"}}]),n}(v);x.exports=r},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./conditional-formatting-ext-xform":76}],78:[function(e,x,_){function u(N){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(F){return typeof F}:u=function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},u(N)}function m(N,L){return y(N)||f(N,L)||b(N,L)||g()}function g(){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 b(N,L){if(N){if(typeof N=="string")return w(N,L);var F=Object.prototype.toString.call(N).slice(8,-1);if(F==="Object"&&N.constructor&&(F=N.constructor.name),F==="Map"||F==="Set")return Array.from(N);if(F==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F))return w(N,L)}}function w(N,L){(L==null||L>N.length)&&(L=N.length);for(var F=0,M=new Array(L);F"u"||!(Symbol.iterator in Object(N)))){var F=[],M=!0,D=!1,R=void 0;try{for(var P=N[Symbol.iterator](),E;!(M=(E=P.next()).done)&&(F.push(E.value),!(L&&F.length===L));M=!0);}catch(A){D=!0,R=A}finally{try{!M&&P.return!=null&&P.return()}finally{if(D)throw R}}return F}}function y(N){if(Array.isArray(N))return N}function h(N,L){if(!(N instanceof L))throw new TypeError("Cannot call a class as a function")}function l(N,L){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 i(N){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(F){return F.__proto__||Object.getPrototypeOf(F)},i(N)}var n=e("../../base-xform"),o=e("../../composite-xform"),p=e("../../style/color-xform"),O=e("./cfvo-ext-xform"),C=function(N){s(F,N);var L=c(F);function F(){var M;return h(this,F),M=L.call(this),M.map={"x14:cfvo":M.cfvoXform=new O,"x14:borderColor":M.borderColorXform=new p("x14:borderColor"),"x14:negativeBorderColor":M.negativeBorderColorXform=new p("x14:negativeBorderColor"),"x14:negativeFillColor":M.negativeFillColorXform=new p("x14:negativeFillColor"),"x14:axisColor":M.axisColorXform=new p("x14:axisColor")},M}return d(F,[{key:"render",value:function(D,R){var P=this;D.openNode(this.tag,{minLength:n.toIntAttribute(R.minLength,0,!0),maxLength:n.toIntAttribute(R.maxLength,100,!0),border:n.toBoolAttribute(R.border,!1),gradient:n.toBoolAttribute(R.gradient,!0),negativeBarColorSameAsPositive:n.toBoolAttribute(R.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolAttribute(R.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toAttribute(R.axisPosition,"auto"),direction:n.toAttribute(R.direction,"leftToRight")}),R.cfvo.forEach(function(E){P.cfvoXform.render(D,E)}),this.borderColorXform.render(D,R.borderColor),this.negativeBorderColorXform.render(D,R.negativeBorderColor),this.negativeFillColorXform.render(D,R.negativeFillColor),this.axisColorXform.render(D,R.axisColor),D.closeNode()}},{key:"createNewModel",value:function(D){var R=D.attributes;return{cfvo:[],minLength:n.toIntValue(R.minLength,0),maxLength:n.toIntValue(R.maxLength,100),border:n.toBoolValue(R.border,!1),gradient:n.toBoolValue(R.gradient,!0),negativeBarColorSameAsPositive:n.toBoolValue(R.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolValue(R.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toStringValue(R.axisPosition,"auto"),direction:n.toStringValue(R.direction,"leftToRight")}}},{key:"onParserClose",value:function(D,R){var P=D.split(":"),E=m(P,2),A=E[1];switch(A){case"cfvo":this.model.cfvo.push(R.model);break;default:this.model[A]=R.model;break}}},{key:"tag",get:function(){return"x14:dataBar"}}],[{key:"isExt",value:function(D){return!D.gradient}}]),F}(o);x.exports=C},{"../../base-xform":31,"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-ext-xform":75}],79:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(n){this.model+=n}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"xm:f"}}]),t}(v);x.exports=c},{"../../base-xform":31}],80:[function(e,x,_){function u(N){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(F){return typeof F}:u=function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},u(N)}function m(N,L){return y(N)||f(N,L)||b(N,L)||g()}function g(){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 b(N,L){if(N){if(typeof N=="string")return w(N,L);var F=Object.prototype.toString.call(N).slice(8,-1);if(F==="Object"&&N.constructor&&(F=N.constructor.name),F==="Map"||F==="Set")return Array.from(N);if(F==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F))return w(N,L)}}function w(N,L){(L==null||L>N.length)&&(L=N.length);for(var F=0,M=new Array(L);F"u"||!(Symbol.iterator in Object(N)))){var F=[],M=!0,D=!1,R=void 0;try{for(var P=N[Symbol.iterator](),E;!(M=(E=P.next()).done)&&(F.push(E.value),!(L&&F.length===L));M=!0);}catch(A){D=!0,R=A}finally{try{!M&&P.return!=null&&P.return()}finally{if(D)throw R}}return F}}function y(N){if(Array.isArray(N))return N}function h(N,L){if(!(N instanceof L))throw new TypeError("Cannot call a class as a function")}function l(N,L){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 i(N){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(F){return F.__proto__||Object.getPrototypeOf(F)},i(N)}var n=e("../../base-xform"),o=e("../../composite-xform"),p=e("./cfvo-ext-xform"),O=e("./cf-icon-ext-xform"),C=function(N){s(F,N);var L=c(F);function F(){var M;return h(this,F),M=L.call(this),M.map={"x14:cfvo":M.cfvoXform=new p,"x14:cfIcon":M.cfIconXform=new O},M}return d(F,[{key:"render",value:function(D,R){var P=this;D.openNode(this.tag,{iconSet:n.toStringAttribute(R.iconSet),reverse:n.toBoolAttribute(R.reverse,!1),showValue:n.toBoolAttribute(R.showValue,!0),custom:n.toBoolAttribute(R.icons,!1)}),R.cfvo.forEach(function(E){P.cfvoXform.render(D,E)}),R.icons&&R.icons.forEach(function(E,A){E.iconId=A,P.cfIconXform.render(D,E)}),D.closeNode()}},{key:"createNewModel",value:function(D){var R=D.attributes;return{cfvo:[],iconSet:n.toStringValue(R.iconSet,"3TrafficLights"),reverse:n.toBoolValue(R.reverse,!1),showValue:n.toBoolValue(R.showValue,!0)}}},{key:"onParserClose",value:function(D,R){var P=D.split(":"),E=m(P,2),A=E[1];switch(A){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[A]=R.model;break}}},{key:"tag",get:function(){return"x14:iconSet"}}]),F}(o);x.exports=C},{"../../base-xform":31,"../../composite-xform":47,"./cf-icon-ext-xform":73,"./cfvo-ext-xform":75}],81:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(n){this.model+=n}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"xm:sqref"}}]),t}(v);x.exports=c},{"../../base-xform":31}],82:[function(e,x,_){function u(R){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(E){return typeof E}:u=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},u(R)}function m(R,P){var E=Object.keys(R);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(R);P&&(A=A.filter(function(z){return Object.getOwnPropertyDescriptor(R,z).enumerable})),E.push.apply(E,A)}return E}function g(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 a(R){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(E){return E.__proto__||Object.getPrototypeOf(E)},a(R)}var r=e("../../base-xform"),t=e("../../composite-xform"),i=e("../../../../doc/range"),n=e("./databar-xform"),o=e("./ext-lst-ref-xform"),p=e("./formula-xform"),O=e("./color-scale-xform"),C=e("./icon-set-xform"),N={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},L=function(P){if(P.formulae&&P.formulae[0])return P.formulae[0];var E=new i(P.ref),A=E.tl;switch(P.operator){case"containsText":return'NOT(ISERROR(SEARCH("'.concat(P.text,'",').concat(A,")))");case"containsBlanks":return"LEN(TRIM(".concat(A,"))=0");case"notContainsBlanks":return"LEN(TRIM(".concat(A,"))>0");case"containsErrors":return"ISERROR(".concat(A,")");case"notContainsErrors":return"NOT(ISERROR(".concat(A,"))");default:return}},F=function(P){if(P.formulae&&P.formulae[0])return P.formulae[0];var E=new i(P.ref),A=E.tl;switch(P.timePeriod){case"thisWeek":return"AND(TODAY()-ROUNDDOWN(".concat(A,",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(A,",0)-TODAY()<=7-WEEKDAY(TODAY()))");case"lastWeek":return"AND(TODAY()-ROUNDDOWN(".concat(A,",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(A,",0)<(WEEKDAY(TODAY())+7))");case"nextWeek":return"AND(ROUNDDOWN(".concat(A,",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(A,",0)-TODAY()<(15-WEEKDAY(TODAY())))");case"yesterday":return"FLOOR(".concat(A,",1)=TODAY()-1");case"today":return"FLOOR(".concat(A,",1)=TODAY()");case"tomorrow":return"FLOOR(".concat(A,",1)=TODAY()+1");case"last7Days":return"AND(TODAY()-FLOOR(".concat(A,",1)<=6,FLOOR(").concat(A,",1)<=TODAY())");case"lastMonth":return"AND(MONTH(".concat(A,")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(A,")=YEAR(EDATE(TODAY(),0-1)))");case"thisMonth":return"AND(MONTH(".concat(A,")=MONTH(TODAY()),YEAR(").concat(A,")=YEAR(TODAY()))");case"nextMonth":return"AND(MONTH(".concat(A,")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(A,")=YEAR(EDATE(TODAY(),0+1)))");default:return}},M=function(P){var E=P.type,A=P.operator;switch(E){case"containsText":case"containsBlanks":case"notContainsBlanks":case"containsErrors":case"notContainsErrors":return{type:"containsText",operator:E};default:return{type:E,operator:A}}},D=function(R){h(E,R);var P=d(E);function E(){var A;return w(this,E),A=P.call(this),A.map={dataBar:A.databarXform=new n,extLst:A.extLstRefXform=new o,formula:A.formulaXform=new p,colorScale:A.colorScaleXform=new O,iconSet:A.iconSetXform=new C},A}return y(E,[{key:"render",value:function(z,W){switch(W.type){case"expression":this.renderExpression(z,W);break;case"cellIs":this.renderCellIs(z,W);break;case"top10":this.renderTop10(z,W);break;case"aboveAverage":this.renderAboveAverage(z,W);break;case"dataBar":this.renderDataBar(z,W);break;case"colorScale":this.renderColorScale(z,W);break;case"iconSet":this.renderIconSet(z,W);break;case"containsText":this.renderText(z,W);break;case"timePeriod":this.renderTimePeriod(z,W);break}}},{key:"renderExpression",value:function(z,W){z.openNode(this.tag,{type:"expression",dxfId:W.dxfId,priority:W.priority}),this.formulaXform.render(z,W.formulae[0]),z.closeNode()}},{key:"renderCellIs",value:function(z,W){var $=this;z.openNode(this.tag,{type:"cellIs",dxfId:W.dxfId,priority:W.priority,operator:W.operator}),W.formulae.forEach(function(U){$.formulaXform.render(z,U)}),z.closeNode()}},{key:"renderTop10",value:function(z,W){z.leafNode(this.tag,{type:"top10",dxfId:W.dxfId,priority:W.priority,percent:r.toBoolAttribute(W.percent,!1),bottom:r.toBoolAttribute(W.bottom,!1),rank:r.toIntValue(W.rank,10,!0)})}},{key:"renderAboveAverage",value:function(z,W){z.leafNode(this.tag,{type:"aboveAverage",dxfId:W.dxfId,priority:W.priority,aboveAverage:r.toBoolAttribute(W.aboveAverage,!0)})}},{key:"renderDataBar",value:function(z,W){z.openNode(this.tag,{type:"dataBar",priority:W.priority}),this.databarXform.render(z,W),this.extLstRefXform.render(z,W),z.closeNode()}},{key:"renderColorScale",value:function(z,W){z.openNode(this.tag,{type:"colorScale",priority:W.priority}),this.colorScaleXform.render(z,W),z.closeNode()}},{key:"renderIconSet",value:function(z,W){E.isPrimitive(W)&&(z.openNode(this.tag,{type:"iconSet",priority:W.priority}),this.iconSetXform.render(z,W),z.closeNode())}},{key:"renderText",value:function(z,W){z.openNode(this.tag,{type:W.operator,dxfId:W.dxfId,priority:W.priority,operator:r.toStringAttribute(W.operator,"containsText")});var $=L(W);$&&this.formulaXform.render(z,$),z.closeNode()}},{key:"renderTimePeriod",value:function(z,W){z.openNode(this.tag,{type:"timePeriod",dxfId:W.dxfId,priority:W.priority,timePeriod:W.timePeriod});var $=F(W);$&&this.formulaXform.render(z,$),z.closeNode()}},{key:"createNewModel",value:function(z){var W=z.attributes;return g(g({},M(W)),{},{dxfId:r.toIntValue(W.dxfId),priority:r.toIntValue(W.priority),timePeriod:W.timePeriod,percent:r.toBoolValue(W.percent),bottom:r.toBoolValue(W.bottom),rank:r.toIntValue(W.rank),aboveAverage:r.toBoolValue(W.aboveAverage)})}},{key:"onParserClose",value:function(z,W){switch(z){case"dataBar":case"extLst":case"colorScale":case"iconSet":Object.assign(this.model,W.model);break;case"formula":this.model.formulae=this.model.formulae||[],this.model.formulae.push(W.model);break}}},{key:"tag",get:function(){return"cfRule"}}],[{key:"isPrimitive",value:function(z){return!(z.type==="iconSet"&&(z.custom||N[z.iconSet]))}}]),E}(t);x.exports=D},{"../../../../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,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,{type:o.type,val:o.value})}},{key:"parseOpen",value:function(n){this.model={type:n.attributes.type,value:v.toFloatValue(n.attributes.val)}}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"cfvo"}}]),t}(v);x.exports=c},{"../../base-xform":31}],84:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("../../style/color-xform"),a=e("./cfvo-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={cfvo:o.cfvoXform=new a,color:o.colorXform=new c},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openNode(this.tag),O.cfvo.forEach(function(N){C.cfvoXform.render(p,N)}),O.color.forEach(function(N){C.colorXform.render(p,N)}),p.closeNode()}},{key:"createNewModel",value:function(p){return{cfvo:[],color:[]}}},{key:"onParserClose",value:function(p,O){this.model[p].push(O.model)}},{key:"tag",get:function(){return"colorScale"}}]),n}(v);x.exports=r},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],85:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../composite-xform"),c=e("./cf-rule-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={cfRule:new c},n}return b(i,[{key:"render",value:function(o,p){var O=this;p.rules.some(c.isPrimitive)&&(o.openNode(this.tag,{sqref:p.ref}),p.rules.forEach(function(C){c.isPrimitive(C)&&(C.ref=p.ref,O.map.cfRule.render(o,C))}),o.closeNode())}},{key:"createNewModel",value:function(o){var p=o.attributes;return{ref:p.sqref,rules:[]}}},{key:"onParserClose",value:function(o,p){this.model.rules.push(p.model)}},{key:"tag",get:function(){return"conditionalFormatting"}}]),i}(v);x.exports=a},{"../../composite-xform":47,"./cf-rule-xform":82}],86:[function(e,x,_){function u(O){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(N){return typeof N}:u=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},u(O)}function m(O){return f(O)||w(O)||b(O)||g()}function g(){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 b(O,C){if(O){if(typeof O=="string")return y(O,C);var N=Object.prototype.toString.call(O).slice(8,-1);if(N==="Object"&&O.constructor&&(N=O.constructor.name),N==="Map"||N==="Set")return Array.from(O);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return y(O,C)}}function w(O){if(typeof Symbol<"u"&&Symbol.iterator in Object(O))return Array.from(O)}function f(O){if(Array.isArray(O))return y(O)}function y(O,C){(C==null||C>O.length)&&(C=O.length);for(var N=0,L=new Array(C);N"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 i(O){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(N){return N.__proto__||Object.getPrototypeOf(N)},i(O)}var n=e("../../base-xform"),o=e("./conditional-formatting-xform"),p=function(O){s(N,O);var C=c(N);function N(){var L;return h(this,N),L=C.call(this),L.cfXform=new o,L}return d(N,[{key:"reset",value:function(){this.model=[]}},{key:"prepare",value:function(F,M){var D=F.reduce(function(R,P){return Math.max.apply(Math,[R].concat(m(P.rules.map(function(E){return E.priority||0}))))},1);F.forEach(function(R){R.rules.forEach(function(P){P.priority||(P.priority=D++),P.style&&(P.dxfId=M.styles.addDxfStyle(P.style))})})}},{key:"render",value:function(F,M){var D=this;M.forEach(function(R){D.cfXform.render(F,R)})}},{key:"parseOpen",value:function(F){if(this.parser)return this.parser.parseOpen(F),!0;switch(F.name){case"conditionalFormatting":return this.parser=this.cfXform,this.parser.parseOpen(F),!0;default:return!1}}},{key:"parseText",value:function(F){this.parser&&this.parser.parseText(F)}},{key:"parseClose",value:function(F){return this.parser?this.parser.parseClose(F)?!0:(this.model.push(this.parser.model),this.parser=void 0,!1):!1}},{key:"reconcile",value:function(F,M){F.forEach(function(D){D.rules.forEach(function(R){R.dxfId!==void 0&&(R.style=M.styles.getDxfStyle(R.dxfId),delete R.dxfId)})})}},{key:"tag",get:function(){return"conditionalFormatting"}}]),N}(n);x.exports=p},{"../../base-xform":31,"./conditional-formatting-xform":85}],87:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("../../style/color-xform"),a=e("./cfvo-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={cfvo:o.cfvoXform=new a,color:o.colorXform=new c},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openNode(this.tag),O.cfvo.forEach(function(N){C.cfvoXform.render(p,N)}),this.colorXform.render(p,O.color),p.closeNode()}},{key:"createNewModel",value:function(){return{cfvo:[]}}},{key:"onParserClose",value:function(p,O){switch(p){case"cfvo":this.model.cfvo.push(O.model);break;case"color":this.model.color=O.model;break}}},{key:"tag",get:function(){return"dataBar"}}]),n}(v);x.exports=r},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],88:[function(e,x,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"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(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../../base-xform"),c=e("../../composite-xform"),a=function(i){w(o,i);var n=y(o);function o(){return m(this,o),n.apply(this,arguments)}return b(o,[{key:"render",value:function(O,C){O.leafNode(this.tag,null,C)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(O){this.model+=O}},{key:"parseClose",value:function(O){return O!==this.tag}},{key:"tag",get:function(){return"x14:id"}}]),o}(v),r=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={"x14:id":p.idXform=new a},p}return b(o,[{key:"render",value:function(O,C){O.openNode(this.tag,{uri:"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.idXform.render(O,C.x14Id),O.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(O,C){this.model.x14Id=C.model}},{key:"tag",get:function(){return"ext"}}]),o}(c),t=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={ext:new r},p}return b(o,[{key:"render",value:function(O,C){O.openNode(this.tag),this.map.ext.render(O,C),O.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(O,C){Object.assign(this.model,C.model)}},{key:"tag",get:function(){return"extLst"}}]),o}(c);x.exports=t},{"../../base-xform":31,"../../composite-xform":47}],89:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(n){this.model+=n}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"formula"}}]),t}(v);x.exports=c},{"../../base-xform":31}],90:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../base-xform"),c=e("../../composite-xform"),a=e("./cfvo-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={cfvo:o.cfvoXform=new a},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openNode(this.tag,{iconSet:v.toStringAttribute(O.iconSet,"3TrafficLights"),reverse:v.toBoolAttribute(O.reverse,!1),showValue:v.toBoolAttribute(O.showValue,!0)}),O.cfvo.forEach(function(N){C.cfvoXform.render(p,N)}),p.closeNode()}},{key:"createNewModel",value:function(p){var O=p.attributes;return{iconSet:v.toStringValue(O.iconSet,"3TrafficLights"),reverse:v.toBoolValue(O.reverse),showValue:v.toBoolValue(O.showValue),cfvo:[]}}},{key:"onParserClose",value:function(p,O){this.model[p].push(O.model)}},{key:"tag",get:function(){return"iconSet"}}]),n}(c);x.exports=r},{"../../base-xform":31,"../../composite-xform":47,"./cfvo-xform":83}],91:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"prepare",value:function(n,o){var p=o.styles.addStyleModel(n.style||{});p&&(n.styleId=p)}},{key:"render",value:function(n,o){n.openNode("col"),n.addAttribute("min",o.min),n.addAttribute("max",o.max),o.width&&n.addAttribute("width",o.width),o.styleId&&n.addAttribute("style",o.styleId),o.hidden&&n.addAttribute("hidden","1"),o.bestFit&&n.addAttribute("bestFit","1"),o.outlineLevel&&n.addAttribute("outlineLevel",o.outlineLevel),o.collapsed&&n.addAttribute("collapsed","1"),n.addAttribute("customWidth","1"),n.closeNode()}},{key:"parseOpen",value:function(n){if(n.name==="col"){var o=this.model={min:parseInt(n.attributes.min||"0",10),max:parseInt(n.attributes.max||"0",10),width:n.attributes.width===void 0?void 0:parseFloat(n.attributes.width||"0")};return n.attributes.style&&(o.styleId=parseInt(n.attributes.style,10)),(n.attributes.hidden===!0||n.attributes.hidden==="true"||n.attributes.hidden===1||n.attributes.hidden==="1")&&(o.hidden=!0),n.attributes.bestFit&&(o.bestFit=!0),n.attributes.outlineLevel&&(o.outlineLevel=parseInt(n.attributes.outlineLevel,10)),n.attributes.collapsed&&(o.collapsed=!0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"reconcile",value:function(n,o){n.styleId&&(n.style=o.styles.getStyleModel(n.styleId))}},{key:"tag",get:function(){return"col"}}]),t}(v);x.exports=c},{"../base-xform":31}],92:[function(e,x,_){function u(F){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(D){return typeof D}:u=function(D){return D&&typeof Symbol=="function"&&D.constructor===Symbol&&D!==Symbol.prototype?"symbol":typeof D},u(F)}function m(F,M){if(!(F instanceof M))throw new TypeError("Cannot call a class as a function")}function g(F,M){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 s(F){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(D){return D.__proto__||Object.getPrototypeOf(D)},s(F)}function v(F,M){var D=Object.keys(F);if(Object.getOwnPropertySymbols){var R=Object.getOwnPropertySymbols(F);M&&(R=R.filter(function(P){return Object.getOwnPropertyDescriptor(F,P).enumerable})),D.push.apply(D,R)}return D}function c(F){for(var M=1;M1||W>1){var I=E.row+(A-1),j=E.col+(W-1);return c(c({},P.dataValidation),{},{sqref:"".concat(P.address,":").concat(i.encodeAddress(I,j))})}return c(c({},P.dataValidation),{},{sqref:P.address})}return null}).filter(Boolean)}var L=function(F){w(D,F);var M=y(D);function D(){return m(this,D),M.apply(this,arguments)}return b(D,[{key:"render",value:function(P,E){var A=N(E);A.length&&(P.openNode("dataValidations",{count:A.length}),A.forEach(function(z){P.openNode("dataValidation"),z.type!=="any"&&(P.addAttribute("type",z.type),z.operator&&z.type!=="list"&&z.operator!=="between"&&P.addAttribute("operator",z.operator),z.allowBlank&&P.addAttribute("allowBlank","1")),z.showInputMessage&&P.addAttribute("showInputMessage","1"),z.promptTitle&&P.addAttribute("promptTitle",z.promptTitle),z.prompt&&P.addAttribute("prompt",z.prompt),z.showErrorMessage&&P.addAttribute("showErrorMessage","1"),z.errorStyle&&P.addAttribute("errorStyle",z.errorStyle),z.errorTitle&&P.addAttribute("errorTitle",z.errorTitle),z.error&&P.addAttribute("error",z.error),P.addAttribute("sqref",z.sqref),(z.formulae||[]).forEach(function(W,$){P.openNode("formula".concat($+1)),z.type==="date"?P.writeText(t.dateToExcel(new Date(W))):P.writeText(W),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 E={type:P.attributes.type||"any",formulae:[]};switch(P.attributes.type&&C(E,P.attributes,"allowBlank"),C(E,P.attributes,"showInputMessage"),C(E,P.attributes,"showErrorMessage"),E.type){case"any":case"list":case"custom":break;default:p(E,P.attributes,"operator","between");break}return p(E,P.attributes,"promptTitle"),p(E,P.attributes,"prompt"),p(E,P.attributes,"errorStyle"),p(E,P.attributes,"errorTitle"),p(E,P.attributes,"error"),this._dataValidation=E,!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 E=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 A=this._address.split(/\s+/g)||[];return A.forEach(function(W){if(W.includes(":")){var $=new o(W);$.forEachAddress(function(U){E.model[U]=E._dataValidation})}else E.model[W]=E._dataValidation}),!0}case"formula1":case"formula2":{var z=this._formula.join("");switch(this._dataValidation.type){case"whole":case"textLength":z=parseInt(z,10);break;case"decimal":z=parseFloat(z);break;case"date":z=t.excelToDate(parseFloat(z));break}return this._dataValidation.formulae.push(z),this._formula=void 0,!0}default:return!0}}},{key:"tag",get:function(){return"dataValidations"}}]),D}(n);x.exports=L},{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/utils":26,"../base-xform":31}],93:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode("dimension",{ref:o})}},{key:"parseOpen",value:function(n){return n.name==="dimension"?(this.model=n.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"dimension"}}]),t}(v);x.exports=c},{"../base-xform":31}],94:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode(this.tag,{"r:id":o.rId})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"drawing"}}]),t}(v);x.exports=c},{"../base-xform":31}],95:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../composite-xform"),c=e("./cf-ext/conditional-formattings-ext-xform"),a=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"x14:conditionalFormattings":o.conditionalFormattings=new c},o}return b(n,[{key:"hasContent",value:function(p){return this.conditionalFormattings.hasContent(p.conditionalFormattings)}},{key:"prepare",value:function(p,O){this.conditionalFormattings.prepare(p.conditionalFormattings,O)}},{key:"render",value:function(p,O){p.openNode("ext",{uri:"{78C0D931-6437-407d-A8EE-F0AAD7539E65}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.conditionalFormattings.render(p,O.conditionalFormattings),p.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(p,O){this.model[p]=O.model}},{key:"tag",get:function(){return"ext"}}]),n}(v),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={ext:o.ext=new a},o}return b(n,[{key:"prepare",value:function(p,O){this.ext.prepare(p,O)}},{key:"hasContent",value:function(p){return this.ext.hasContent(p)}},{key:"render",value:function(p,O){this.hasContent(O)&&(p.openNode("extLst"),this.ext.render(p,O),p.closeNode())}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(p,O){Object.assign(this.model,O.model)}},{key:"tag",get:function(){return"extLst"}}]),n}(v);x.exports=r},{"../composite-xform":47,"./cf-ext/conditional-formattings-ext-xform":77}],96:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){if(o){n.addRollback();var p=!1;n.openNode("headerFooter"),o.differentFirst&&(n.addAttribute("differentFirst","1"),p=!0),o.differentOddEven&&(n.addAttribute("differentOddEven","1"),p=!0),o.oddHeader&&typeof o.oddHeader=="string"&&(n.leafNode("oddHeader",null,o.oddHeader),p=!0),o.oddFooter&&typeof o.oddFooter=="string"&&(n.leafNode("oddFooter",null,o.oddFooter),p=!0),o.evenHeader&&typeof o.evenHeader=="string"&&(n.leafNode("evenHeader",null,o.evenHeader),p=!0),o.evenFooter&&typeof o.evenFooter=="string"&&(n.leafNode("evenFooter",null,o.evenFooter),p=!0),o.firstHeader&&typeof o.firstHeader=="string"&&(n.leafNode("firstHeader",null,o.firstHeader),p=!0),o.firstFooter&&typeof o.firstFooter=="string"&&(n.leafNode("firstFooter",null,o.firstFooter),p=!0),p?(n.closeNode(),n.commit()):n.rollback()}}},{key:"parseOpen",value:function(n){switch(n.name){case"headerFooter":return this.model={},n.attributes.differentFirst&&(this.model.differentFirst=parseInt(n.attributes.differentFirst,0)===1),n.attributes.differentOddEven&&(this.model.differentOddEven=parseInt(n.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(n){switch(this.currentNode){case"oddHeader":this.model.oddHeader=n;break;case"oddFooter":this.model.oddFooter=n;break;case"evenHeader":this.model.evenHeader=n;break;case"evenFooter":this.model.evenFooter=n;break;case"firstHeader":this.model.firstHeader=n;break;case"firstFooter":this.model.firstFooter=n;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"}}]),t}(v);x.exports=c},{"../base-xform":31}],97:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("hyperlink",{ref:o.address,"r:id":o.rId,tooltip:o.tooltip})}},{key:"parseOpen",value:function(n){return n.name==="hyperlink"?(this.model={address:n.attributes.ref,rId:n.attributes["r:id"],tooltip:n.attributes.tooltip},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"hyperlink"}}]),t}(v);x.exports=c},{"../base-xform":31}],98:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("mergeCell",{ref:o})}},{key:"parseOpen",value:function(n){return n.name==="mergeCell"?(this.model=n.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"mergeCell"}}]),t}(v);x.exports=c},{"../base-xform":31}],99:[function(e,x,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){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 s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=function(t){return typeof t<"u"},a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){return p&&(c(p.summaryBelow)||c(p.summaryRight))?(o.leafNode(this.tag,{summaryBelow:c(p.summaryBelow)?Number(p.summaryBelow):void 0,summaryRight:c(p.summaryRight)?Number(p.summaryRight):void 0}),!0):!1}},{key:"parseOpen",value:function(o){return o.name===this.tag?(this.model={summaryBelow:c(o.attributes.summaryBelow)?!!Number(o.attributes.summaryBelow):void 0,summaryRight:c(o.attributes.summaryRight)?!!Number(o.attributes.summaryRight):void 0},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"outlinePr"}}]),i}(v);x.exports=a},{"../base-xform":31}],101:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("brk",o)}},{key:"parseOpen",value:function(n){return n.name==="brk"?(this.model=n.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"brk"}}]),t}(v);x.exports=c},{"../base-xform":31}],102:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/under-dash"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){if(p){var O={left:p.left,right:p.right,top:p.top,bottom:p.bottom,header:p.header,footer:p.footer};v.some(O,function(C){return C!==void 0})&&o.leafNode(this.tag,O)}}},{key:"parseOpen",value:function(o){switch(o.name){case this.tag:return this.model={left:parseFloat(o.attributes.left||.7),right:parseFloat(o.attributes.right||.7),top:parseFloat(o.attributes.top||.75),bottom:parseFloat(o.attributes.bottom||.75),header:parseFloat(o.attributes.header||.3),footer:parseFloat(o.attributes.footer||.3)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageMargins"}}]),i}(c);x.exports=a},{"../../../utils/under-dash":25,"../base-xform":31}],103:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){return o&&o.fitToPage?(n.leafNode(this.tag,{fitToPage:o.fitToPage?"1":void 0}),!0):!1}},{key:"parseOpen",value:function(n){return n.name===this.tag?(this.model={fitToPage:n.attributes.fitToPage==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetUpPr"}}]),t}(v);x.exports=c},{"../base-xform":31}],104:[function(e,x,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){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 s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("../../../utils/under-dash"),c=e("../base-xform");function a(p){return p?"1":void 0}function r(p){switch(p){case"overThenDown":return p;default:return}}function t(p){switch(p){case"atEnd":case"asDisplyed":return p;default:return}}function i(p){switch(p){case"dash":case"blank":case"NA":return p;default:return}}function n(p){return p!==void 0?parseInt(p,10):void 0}var o=function(p){w(C,p);var O=y(C);function C(){return m(this,C),O.apply(this,arguments)}return b(C,[{key:"render",value:function(L,F){if(F){var M={paperSize:F.paperSize,orientation:F.orientation,horizontalDpi:F.horizontalDpi,verticalDpi:F.verticalDpi,pageOrder:r(F.pageOrder),blackAndWhite:a(F.blackAndWhite),draft:a(F.draft),cellComments:t(F.cellComments),errors:i(F.errors),scale:F.scale,fitToWidth:F.fitToWidth,fitToHeight:F.fitToHeight,firstPageNumber:F.firstPageNumber,useFirstPageNumber:a(F.firstPageNumber),usePrinterDefaults:a(F.usePrinterDefaults),copies:F.copies};v.some(M,function(D){return D!==void 0})&&L.leafNode(this.tag,M)}}},{key:"parseOpen",value:function(L){switch(L.name){case this.tag:return this.model={paperSize:n(L.attributes.paperSize),orientation:L.attributes.orientation||"portrait",horizontalDpi:parseInt(L.attributes.horizontalDpi||"4294967295",10),verticalDpi:parseInt(L.attributes.verticalDpi||"4294967295",10),pageOrder:L.attributes.pageOrder||"downThenOver",blackAndWhite:L.attributes.blackAndWhite==="1",draft:L.attributes.draft==="1",cellComments:L.attributes.cellComments||"None",errors:L.attributes.errors||"displayed",scale:parseInt(L.attributes.scale||"100",10),fitToWidth:parseInt(L.attributes.fitToWidth||"1",10),fitToHeight:parseInt(L.attributes.fitToHeight||"1",10),firstPageNumber:parseInt(L.attributes.firstPageNumber||"1",10),useFirstPageNumber:L.attributes.useFirstPageNumber==="1",usePrinterDefaults:L.attributes.usePrinterDefaults==="1",copies:parseInt(L.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}(c);x.exports=o},{"../../../utils/under-dash":25,"../base-xform":31}],105:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode(this.tag,{"r:id":o.rId})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"picture"}}]),t}(v);x.exports=c},{"../base-xform":31}],106:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/under-dash"),c=e("../base-xform");function a(t){return t?"1":void 0}var r=function(t){w(n,t);var i=y(n);function n(){return m(this,n),i.apply(this,arguments)}return b(n,[{key:"render",value:function(p,O){if(O){var C={headings:a(O.showRowColHeaders),gridLines:a(O.showGridLines),horizontalCentered:a(O.horizontalCentered),verticalCentered:a(O.verticalCentered)};v.some(C,function(N){return N!==void 0})&&p.leafNode(this.tag,C)}}},{key:"parseOpen",value:function(p){switch(p.name){case this.tag:return this.model={showRowColHeaders:p.attributes.headings==="1",showGridLines:p.attributes.gridLines==="1",horizontalCentered:p.attributes.horizontalCentered==="1",verticalCentered:p.attributes.verticalCentered==="1"},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"printOptions"}}]),n}(c);x.exports=r},{"../../../utils/under-dash":25,"../base-xform":31}],107:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("./page-breaks-xform"),c=e("../list-xform"),a=function(r){w(i,r);var t=y(i);function i(){m(this,i);var n={tag:"rowBreaks",count:!0,childXform:new v};return t.call(this,n)}return b(i,[{key:"render",value:function(o,p){if(p&&p.length){o.openNode(this.tag,this.$),this.count&&(o.addAttribute(this.$count,p.length),o.addAttribute("manualBreakCount",p.length));var O=this.childXform;p.forEach(function(C){O.render(o,C)}),o.closeNode()}else this.empty&&o.leafNode(this.tag)}}]),i}(c);x.exports=a},{"../list-xform":70,"./page-breaks-xform":101}],108:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("./cell-xform"),a=function(r){w(i,r);var t=y(i);function i(n){var o;return m(this,i),o=t.call(this),o.maxItems=n&&n.maxItems,o.map={c:new c},o}return b(i,[{key:"prepare",value:function(o,p){var O=p.styles.addStyleModel(o.style);O&&(o.styleId=O);var C=this.map.c;o.cells.forEach(function(N){C.prepare(N,p)})}},{key:"render",value:function(o,p,O){o.openNode("row"),o.addAttribute("r",p.number),p.height&&(o.addAttribute("ht",p.height),o.addAttribute("customHeight","1")),p.hidden&&o.addAttribute("hidden","1"),p.min>0&&p.max>0&&p.min<=p.max&&o.addAttribute("spans","".concat(p.min,":").concat(p.max)),p.styleId&&(o.addAttribute("s",p.styleId),o.addAttribute("customFormat","1")),o.addAttribute("x14ac:dyDescent","0.25"),p.outlineLevel&&o.addAttribute("outlineLevel",p.outlineLevel),p.collapsed&&o.addAttribute("collapsed","1");var C=this.map.c;p.cells.forEach(function(N){C.render(o,N,O)}),o.closeNode()}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;if(o.name==="row"){this.numRowsSeen+=1;var p=o.attributes.spans?o.attributes.spans.split(":").map(function(C){return parseInt(C,10)}):[void 0,void 0],O=this.model={number:parseInt(o.attributes.r,10),min:p[0],max:p[1],cells:[]};return o.attributes.s&&(O.styleId=parseInt(o.attributes.s,10)),(o.attributes.hidden===!0||o.attributes.hidden==="true"||o.attributes.hidden===1||o.attributes.hidden==="1")&&(O.hidden=!0),o.attributes.bestFit&&(O.bestFit=!0),o.attributes.ht&&(O.height=parseFloat(o.attributes.ht)),o.attributes.outlineLevel&&(O.outlineLevel=parseInt(o.attributes.outlineLevel,10)),o.attributes.collapsed&&(O.collapsed=!0),!0}return this.parser=this.map[o.name],this.parser?(this.parser.parseOpen(o),!0):!1}},{key:"parseText",value:function(o){this.parser&&this.parser.parseText(o)}},{key:"parseClose",value:function(o){if(this.parser){if(!this.parser.parseClose(o)){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(o,p){o.style=o.styleId?p.styles.getStyleModel(o.styleId):{},o.styleId!==void 0&&(o.styleId=void 0);var O=this.map.c;o.cells.forEach(function(C){O.reconcile(C,p)})}},{key:"tag",get:function(){return"row"}}]),i}(v);x.exports=a},{"../base-xform":31,"./cell-xform":72}],109:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/under-dash"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){if(p){var O={defaultRowHeight:p.defaultRowHeight,outlineLevelRow:p.outlineLevelRow,outlineLevelCol:p.outlineLevelCol,"x14ac:dyDescent":p.dyDescent};p.defaultColWidth&&(O.defaultColWidth=p.defaultColWidth),(!p.defaultRowHeight||p.defaultRowHeight!==15)&&(O.customHeight="1"),v.some(O,function(C){return C!==void 0})&&o.leafNode("sheetFormatPr",O)}}},{key:"parseOpen",value:function(o){return o.name==="sheetFormatPr"?(this.model={defaultRowHeight:parseFloat(o.attributes.defaultRowHeight||"0"),dyDescent:parseFloat(o.attributes["x14ac:dyDescent"]||"0"),outlineLevelRow:parseInt(o.attributes.outlineLevelRow||"0",10),outlineLevelCol:parseInt(o.attributes.outlineLevelCol||"0",10)},o.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(o.attributes.defaultColWidth)),!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetFormatPr"}}]),i}(c);x.exports=a},{"../../../utils/under-dash":25,"../base-xform":31}],110:[function(e,x,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"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(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../base-xform"),c=e("../style/color-xform"),a=e("./page-setup-properties-xform"),r=e("./outline-properties-xform"),t=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={tabColor:new c("tabColor"),pageSetUpPr:new a,outlinePr:new r},p}return b(o,[{key:"render",value:function(O,C){if(C){O.addRollback(),O.openNode("sheetPr");var N=!1;N=this.map.tabColor.render(O,C.tabColor)||N,N=this.map.pageSetUpPr.render(O,C.pageSetup)||N,N=this.map.outlinePr.render(O,C.outlineProperties)||N,N?(O.closeNode(),O.commit()):O.rollback()}}},{key:"parseOpen",value:function(O){return this.parser?(this.parser.parseOpen(O),!0):O.name===this.tag?(this.reset(),!0):this.map[O.name]?(this.parser=this.map[O.name],this.parser.parseOpen(O),!0):!1}},{key:"parseText",value:function(O){return this.parser?(this.parser.parseText(O),!0):!1}},{key:"parseClose",value:function(O){return this.parser?(this.parser.parseClose(O)||(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"}}]),o}(v);x.exports=t},{"../base-xform":31,"../style/color-xform":127,"./outline-properties-xform":100,"./page-setup-properties-xform":103}],111:[function(e,x,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"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(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../../../utils/under-dash"),c=e("../base-xform");function a(i,n){return i?n:void 0}function r(i,n){return i===n?!0:void 0}var t=function(i){w(o,i);var n=y(o);function o(){return m(this,o),n.apply(this,arguments)}return b(o,[{key:"render",value:function(O,C){if(C){var N={sheet:a(C.sheet,"1"),selectLockedCells:C.selectLockedCells===!1?"1":void 0,selectUnlockedCells:C.selectUnlockedCells===!1?"1":void 0,formatCells:a(C.formatCells,"0"),formatColumns:a(C.formatColumns,"0"),formatRows:a(C.formatRows,"0"),insertColumns:a(C.insertColumns,"0"),insertRows:a(C.insertRows,"0"),insertHyperlinks:a(C.insertHyperlinks,"0"),deleteColumns:a(C.deleteColumns,"0"),deleteRows:a(C.deleteRows,"0"),sort:a(C.sort,"0"),autoFilter:a(C.autoFilter,"0"),pivotTables:a(C.pivotTables,"0")};C.sheet&&(N.algorithmName=C.algorithmName,N.hashValue=C.hashValue,N.saltValue=C.saltValue,N.spinCount=C.spinCount,N.objects=a(C.objects===!1,"1"),N.scenarios=a(C.scenarios===!1,"1")),v.some(N,function(L){return L!==void 0})&&O.leafNode(this.tag,N)}}},{key:"parseOpen",value:function(O){switch(O.name){case this.tag:return this.model={sheet:r(O.attributes.sheet,"1"),objects:O.attributes.objects==="1"?!1:void 0,scenarios:O.attributes.scenarios==="1"?!1:void 0,selectLockedCells:O.attributes.selectLockedCells==="1"?!1:void 0,selectUnlockedCells:O.attributes.selectUnlockedCells==="1"?!1:void 0,formatCells:r(O.attributes.formatCells,"0"),formatColumns:r(O.attributes.formatColumns,"0"),formatRows:r(O.attributes.formatRows,"0"),insertColumns:r(O.attributes.insertColumns,"0"),insertRows:r(O.attributes.insertRows,"0"),insertHyperlinks:r(O.attributes.insertHyperlinks,"0"),deleteColumns:r(O.attributes.deleteColumns,"0"),deleteRows:r(O.attributes.deleteRows,"0"),sort:r(O.attributes.sort,"0"),autoFilter:r(O.attributes.autoFilter,"0"),pivotTables:r(O.attributes.pivotTables,"0")},O.attributes.algorithmName&&(this.model.algorithmName=O.attributes.algorithmName,this.model.hashValue=O.attributes.hashValue,this.model.saltValue=O.attributes.saltValue,this.model.spinCount=parseInt(O.attributes.spinCount,10)),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetProtection"}}]),o}(c);x.exports=t},{"../../../utils/under-dash":25,"../base-xform":31}],112:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/col-cache"),c=e("../base-xform"),a={frozen:"frozen",frozenSplit:"frozen",split:"split"},r=function(t){w(n,t);var i=y(n);function n(){return m(this,n),i.apply(this,arguments)}return b(n,[{key:"prepare",value:function(p){switch(p.state){case"frozen":case"split":break;default:p.state="normal";break}}},{key:"render",value:function(p,O){p.openNode("sheetView",{workbookViewId:O.workbookViewId||0});var C=function(R,P,E){E&&p.addAttribute(R,P)};C("rightToLeft","1",O.rightToLeft===!0),C("tabSelected","1",O.tabSelected),C("showRuler","0",O.showRuler===!1),C("showRowColHeaders","0",O.showRowColHeaders===!1),C("showGridLines","0",O.showGridLines===!1),C("zoomScale",O.zoomScale,O.zoomScale),C("zoomScaleNormal",O.zoomScaleNormal,O.zoomScaleNormal),C("view",O.style,O.style);var N,L,F,M;switch(O.state){case"frozen":L=O.xSplit||0,F=O.ySplit||0,N=O.topLeftCell||v.getAddress(F+1,L+1).address,M=O.xSplit&&O.ySplit&&"bottomRight"||O.xSplit&&"topRight"||"bottomLeft",p.leafNode("pane",{xSplit:O.xSplit||void 0,ySplit:O.ySplit||void 0,topLeftCell:N,activePane:M,state:"frozen"}),p.leafNode("selection",{pane:M,activeCell:O.activeCell,sqref:O.activeCell});break;case"split":O.activePane==="topLeft"&&(O.activePane=void 0),p.leafNode("pane",{xSplit:O.xSplit||void 0,ySplit:O.ySplit||void 0,topLeftCell:O.topLeftCell,activePane:O.activePane}),p.leafNode("selection",{pane:O.activePane,activeCell:O.activeCell,sqref:O.activeCell});break;case"normal":O.activeCell&&p.leafNode("selection",{activeCell:O.activeCell,sqref:O.activeCell});break}p.closeNode()}},{key:"parseOpen",value:function(p){switch(p.name){case"sheetView":return this.sheetView={workbookViewId:parseInt(p.attributes.workbookViewId,10),rightToLeft:p.attributes.rightToLeft==="1",tabSelected:p.attributes.tabSelected==="1",showRuler:p.attributes.showRuler!=="0",showRowColHeaders:p.attributes.showRowColHeaders!=="0",showGridLines:p.attributes.showGridLines!=="0",zoomScale:parseInt(p.attributes.zoomScale||"100",10),zoomScaleNormal:parseInt(p.attributes.zoomScaleNormal||"100",10),style:p.attributes.view},this.pane=void 0,this.selections={},!0;case"pane":return this.pane={xSplit:parseInt(p.attributes.xSplit||"0",10),ySplit:parseInt(p.attributes.ySplit||"0",10),topLeftCell:p.attributes.topLeftCell,activePane:p.attributes.activePane||"topLeft",state:p.attributes.state},!0;case"selection":{var O=p.attributes.pane||"topLeft";return this.selections[O]={pane:O,activeCell:p.attributes.activeCell},!0}default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){var O,C;switch(p){case"sheetView":return this.sheetView&&this.pane?(O=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:a[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"&&(O.activePane=this.pane.activePane),C=this.selections[this.pane.activePane],C&&C.activeCell&&(O.activeCell=C.activeCell),this.sheetView.style&&(O.style=this.sheetView.style)):(O=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&&(O.activeCell=C.activeCell),this.sheetView.style&&(O.style=this.sheetView.style)),!1;default:return!0}}},{key:"reconcile",value:function(){}},{key:"tag",get:function(){return"sheetView"}}]),n}(c);x.exports=r},{"../../../utils/col-cache":19,"../base-xform":31}],113:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode(this.tag,{"r:id":o.rId})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tablePart"}}]),t}(v);x.exports=c},{"../base-xform":31}],114:[function(e,x,_){function u(be){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(oe){return typeof oe}:u=function(oe){return oe&&typeof Symbol=="function"&&oe.constructor===Symbol&&oe!==Symbol.prototype?"symbol":typeof oe},u(be)}function m(be,_e){if(!(be instanceof _e))throw new TypeError("Cannot call a class as a function")}function g(be,_e){for(var oe=0;oe<_e.length;oe++){var J=_e[oe];J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J&&(J.writable=!0),Object.defineProperty(be,J.key,J)}}function b(be,_e,oe){return _e&&g(be.prototype,_e),oe&&g(be,oe),be}function w(be,_e){if(typeof _e!="function"&&_e!==null)throw new TypeError("Super expression must either be null or a function");be.prototype=Object.create(_e&&_e.prototype,{constructor:{value:be,writable:!0,configurable:!0}}),_e&&f(be,_e)}function f(be,_e){return f=Object.setPrototypeOf||function(J,Q){return J.__proto__=Q,J},f(be,_e)}function y(be){var _e=d();return function(){var J=s(be),Q;if(_e){var he=s(this).constructor;Q=Reflect.construct(J,arguments,he)}else Q=J.apply(this,arguments);return h(this,Q)}}function h(be,_e){return _e&&(u(_e)==="object"||typeof _e=="function")?_e:l(be)}function l(be){if(be===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return be}function d(){if(typeof Reflect>"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(be){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(oe){return oe.__proto__||Object.getPrototypeOf(oe)},s(be)}var v=e("../../../utils/under-dash"),c=e("../../../utils/col-cache"),a=e("../../../utils/xml-stream"),r=e("../../rel-type"),t=e("./merges"),i=e("../base-xform"),n=e("../list-xform"),o=e("./row-xform"),p=e("./col-xform"),O=e("./dimension-xform"),C=e("./hyperlink-xform"),N=e("./merge-cell-xform"),L=e("./data-validations-xform"),F=e("./sheet-properties-xform"),M=e("./sheet-format-properties-xform"),D=e("./sheet-view-xform"),R=e("./sheet-protection-xform"),P=e("./page-margins-xform"),E=e("./page-setup-xform"),A=e("./print-options-xform"),z=e("./auto-filter-xform"),W=e("./picture-xform"),$=e("./drawing-xform"),U=e("./table-part-xform"),I=e("./row-breaks-xform"),j=e("./header-footer-xform"),B=e("./cf/conditional-formattings-xform"),V=e("./ext-lst-xform"),te=function(_e,oe){Object.keys(oe).forEach(function(J){var Q=_e[J],he=oe[J];Q===void 0&&he!==void 0&&(_e[J]=he)})},ie=function(_e,oe){if(!oe||!oe.length)return _e;if(!_e||!_e.length)return oe;var J={},Q={};return _e.forEach(function(he){J[he.ref]=he,he.rules.forEach(function(ke){var re=ke.x14Id;re&&(Q[re]=ke)})}),oe.forEach(function(he){he.rules.forEach(function(ke){var re=Q[ke.x14Id];re?te(re,ke):J[he.ref]?J[he.ref].rules.push(ke):_e.push({ref:he.ref,rules:[ke]})})}),_e},ce=function(be){w(oe,be);var _e=y(oe);function oe(J){var Q;m(this,oe),Q=_e.call(this);var he=J||{},ke=he.maxRows,re=he.maxCols;return Q.map={sheetPr:new F,dimension:new O,sheetViews:new n({tag:"sheetViews",count:!1,childXform:new D}),sheetFormatPr:new M,cols:new n({tag:"cols",count:!1,childXform:new p}),sheetData:new n({tag:"sheetData",count:!1,empty:!0,childXform:new o({maxItems:re}),maxItems:ke}),autoFilter:new z,mergeCells:new n({tag:"mergeCells",count:!0,childXform:new N}),rowBreaks:new I,hyperlinks:new n({tag:"hyperlinks",count:!1,childXform:new C}),pageMargins:new P,dataValidations:new L,pageSetup:new E,headerFooter:new j,printOptions:new A,picture:new W,drawing:new $,sheetProtection:new R,tableParts:new n({tag:"tableParts",count:!0,childXform:new U}),conditionalFormatting:new B,extLst:new V},Q}return b(oe,[{key:"prepare",value:function(Q,he){var ke=this;he.merges=new t,Q.hyperlinks=he.hyperlinks=[],Q.comments=he.comments=[],he.formulae={},he.siFormulae=0,this.map.cols.prepare(Q.cols,he),this.map.sheetData.prepare(Q.rows,he),this.map.conditionalFormatting.prepare(Q.conditionalFormattings,he),Q.mergeCells=he.merges.mergeCells;var re=Q.rels=[];function se(fe){return"rId".concat(fe.length+1)}if(Q.hyperlinks.forEach(function(fe){var we=se(re);fe.rId=we,re.push({Id:we,Type:r.Hyperlink,Target:fe.target,TargetMode:"External"})}),Q.comments.length>0){var Ce={Id:se(re),Type:r.Comments,Target:"../comments".concat(Q.id,".xml")};re.push(Ce);var q={Id:se(re),Type:r.VmlDrawing,Target:"../drawings/vmlDrawing".concat(Q.id,".vml")};re.push(q),Q.comments.forEach(function(fe){fe.refAddress=c.decodeAddress(fe.ref)}),he.commentRefs.push({commentName:"comments".concat(Q.id),vmlDrawing:"vmlDrawing".concat(Q.id)})}var G=[],Z;Q.media.forEach(function(fe){if(fe.type==="background"){var we=se(re);Z=he.media[fe.imageId],re.push({Id:we,Type:r.Image,Target:"../media/".concat(Z.name,".").concat(Z.extension)}),Q.background={rId:we},Q.image=he.media[fe.imageId]}else if(fe.type==="image"){var ge=Q.drawing;Z=he.media[fe.imageId],ge||(ge=Q.drawing={rId:se(re),name:"drawing".concat(++he.drawingsCount),anchors:[],rels:[]},he.drawings.push(ge),re.push({Id:ge.rId,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",Target:"../drawings/".concat(ge.name,".xml")}));var je=ke.preImageId===fe.imageId?G[fe.imageId]:G[ge.rels.length];je||(je=se(ge.rels),G[ge.rels.length]=je,ge.rels.push({Id:je,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Target:"../media/".concat(Z.name,".").concat(Z.extension)}));var Ze={picture:{rId:je},range:fe.range};if(fe.hyperlinks&&fe.hyperlinks.hyperlink){var nt=se(ge.rels);G[ge.rels.length]=nt,Ze.picture.hyperlinks={tooltip:fe.hyperlinks.tooltip,rId:nt},ge.rels.push({Id:nt,Type:r.Hyperlink,Target:fe.hyperlinks.hyperlink,TargetMode:"External"})}ke.preImageId=fe.imageId,ge.anchors.push(Ze)}}),Q.tables.forEach(function(fe){var we=se(re);fe.rId=we,re.push({Id:we,Type:r.Table,Target:"../tables/".concat(fe.target)}),fe.columns.forEach(function(ge){var je=ge.style;je&&(ge.dxfId=he.styles.addDxfStyle(je))})}),this.map.extLst.prepare(Q,he)}},{key:"render",value:function(Q,he){Q.openXml(a.StdDocAttributes),Q.openNode("worksheet",oe.WORKSHEET_ATTRIBUTES);var ke=he.properties?{defaultRowHeight:he.properties.defaultRowHeight,dyDescent:he.properties.dyDescent,outlineLevelCol:he.properties.outlineLevelCol,outlineLevelRow:he.properties.outlineLevelRow}:void 0;he.properties&&he.properties.defaultColWidth&&(ke.defaultColWidth=he.properties.defaultColWidth);var re={outlineProperties:he.properties&&he.properties.outlineProperties,tabColor:he.properties&&he.properties.tabColor,pageSetup:he.pageSetup&&he.pageSetup.fitToPage?{fitToPage:he.pageSetup.fitToPage}:void 0},se=he.pageSetup&&he.pageSetup.margins,Ce={showRowColHeaders:he.pageSetup&&he.pageSetup.showRowColHeaders,showGridLines:he.pageSetup&&he.pageSetup.showGridLines,horizontalCentered:he.pageSetup&&he.pageSetup.horizontalCentered,verticalCentered:he.pageSetup&&he.pageSetup.verticalCentered},q=he.sheetProtection;this.map.sheetPr.render(Q,re),this.map.dimension.render(Q,he.dimensions),this.map.sheetViews.render(Q,he.views),this.map.sheetFormatPr.render(Q,ke),this.map.cols.render(Q,he.cols),this.map.sheetData.render(Q,he.rows),this.map.sheetProtection.render(Q,q),this.map.autoFilter.render(Q,he.autoFilter),this.map.mergeCells.render(Q,he.mergeCells),this.map.conditionalFormatting.render(Q,he.conditionalFormattings),this.map.dataValidations.render(Q,he.dataValidations),this.map.hyperlinks.render(Q,he.hyperlinks),this.map.printOptions.render(Q,Ce),this.map.pageMargins.render(Q,se),this.map.pageSetup.render(Q,he.pageSetup),this.map.headerFooter.render(Q,he.headerFooter),this.map.rowBreaks.render(Q,he.rowBreaks),this.map.drawing.render(Q,he.drawing),this.map.picture.render(Q,he.background),this.map.tableParts.render(Q,he.tables),this.map.extLst.render(Q,he),he.rels&&he.rels.forEach(function(G){G.Type===r.VmlDrawing&&Q.leafNode("legacyDrawing",{"r:id":G.Id})}),Q.closeNode()}},{key:"parseOpen",value:function(Q){return this.parser?(this.parser.parseOpen(Q),!0):Q.name==="worksheet"?(v.each(this.map,function(he){he.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 he=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(he.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(he.outlineProperties=this.map.sheetPr.model.outlineProperties);var ke={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},re=Object.assign(ke,this.map.pageSetup.model,this.map.printOptions.model),se=ie(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:he,views:this.map.sheetViews.model,pageSetup:re,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:se},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,he){var ke=(Q.relationships||[]).reduce(function(we,ge){if(we[ge.Id]=ge,ge.Type===r.Comments&&(Q.comments=he.comments[ge.Target].comments),ge.Type===r.VmlDrawing&&Q.comments&&Q.comments.length){var je=he.vmlDrawings[ge.Target].comments;Q.comments.forEach(function(Ze,nt){Ze.note=Object.assign({},Ze.note,je[nt])})}return we},{});if(he.commentsMap=(Q.comments||[]).reduce(function(we,ge){return ge.ref&&(we[ge.ref]=ge),we},{}),he.hyperlinkMap=(Q.hyperlinks||[]).reduce(function(we,ge){return ge.rId&&(we[ge.address]=ke[ge.rId].Target),we},{}),he.formulae={},Q.rows=Q.rows&&Q.rows.filter(Boolean)||[],Q.rows.forEach(function(we){we.cells=we.cells&&we.cells.filter(Boolean)||[]}),this.map.cols.reconcile(Q.cols,he),this.map.sheetData.reconcile(Q.rows,he),this.map.conditionalFormatting.reconcile(Q.conditionalFormattings,he),Q.media=[],Q.drawing){var re=ke[Q.drawing.rId],se=re.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(se){var Ce=se[1],q=he.drawings[Ce];q.anchors.forEach(function(we){if(we.medium){var ge={type:"image",imageId:we.medium.index,range:we.range,hyperlinks:we.picture.hyperlinks};Q.media.push(ge)}})}}var G=Q.background&&ke[Q.background.rId];if(G){var Z=G.Target.split("/media/")[1],fe=he.mediaIndex&&he.mediaIndex[Z];fe!==void 0&&Q.media.push({type:"background",imageId:fe})}Q.tables=(Q.tables||[]).map(function(we){var ge=ke[we.rId];return he.tables[ge.Target]}),delete Q.relationships,delete Q.hyperlinks,delete Q.comments}}]),oe}(i);ce.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"},x.exports=ce},{"../../../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,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n}return b(t,[{key:"render",value:function(n,o){o&&(n.openNode(this.tag),n.closeNode())}},{key:"parseOpen",value:function(n){n.name===this.tag&&(this.model=!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);x.exports=c},{"../base-xform":31}],116:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n.attrs=i.attrs,n._format=i.format||function(o){try{return Number.isNaN(o.getTime())?"":o.toISOString()}catch{return""}},n._parse=i.parse||function(o){return new Date(o)},n}return b(t,[{key:"render",value:function(n,o){o&&(n.openNode(this.tag),this.attrs&&n.addAttributes(this.attrs),this.attr?n.addAttribute(this.attr,this._format(o)):n.writeText(this._format(o)),n.closeNode())}},{key:"parseOpen",value:function(n){n.name===this.tag&&(this.attr?this.model=this._parse(n.attributes[this.attr]):this.text=[])}},{key:"parseText",value:function(n){this.attr||this.text.push(n)}},{key:"parseClose",value:function(){return this.attr||(this.model=this._parse(this.text.join(""))),!1}}]),t}(v);x.exports=c},{"../base-xform":31}],117:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n.attrs=i.attrs,n.zero=i.zero,n}return b(t,[{key:"render",value:function(n,o){(o||this.zero)&&(n.openNode(this.tag),this.attrs&&n.addAttributes(this.attrs),this.attr?n.addAttribute(this.attr,o):n.writeText(o),n.closeNode())}},{key:"parseOpen",value:function(n){return n.name===this.tag?(this.attr?this.model=parseInt(n.attributes[this.attr],10):this.text=[],!0):!1}},{key:"parseText",value:function(n){this.attr||this.text.push(n)}},{key:"parseClose",value:function(){return this.attr||(this.model=parseInt(this.text.join("")||0,10)),!1}}]),t}(v);x.exports=c},{"../base-xform":31}],118:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n.attrs=i.attrs,n}return b(t,[{key:"render",value:function(n,o){o!==void 0&&(n.openNode(this.tag),this.attrs&&n.addAttributes(this.attrs),this.attr?n.addAttribute(this.attr,o):n.writeText(o),n.closeNode())}},{key:"parseOpen",value:function(n){n.name===this.tag&&(this.attr?this.model=n.attributes[this.attr]:this.text=[])}},{key:"parseText",value:function(n){this.attr||this.text.push(n)}},{key:"parseClose",value:function(){return this.attr||(this.model=this.text.join("")),!1}}]),t}(v);x.exports=c},{"../base-xform":31}],119:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("./base-xform"),c=e("../../utils/xml-stream");function a(t,i){t.openNode(i.tag,i.$),i.c&&i.c.forEach(function(n){a(t,n)}),i.t&&t.writeText(i.t),t.closeNode()}var r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p._model=o,p}return b(n,[{key:"render",value:function(p){if(!this._xml){var O=new c;a(O,this._model),this._xml=O.xml}p.writeXml(this._xml)}},{key:"parseOpen",value:function(){return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){switch(p){case this._model.tag:return!1;default:return!0}}}]),n}(v);x.exports=r},{"../../utils/xml-stream":27,"./base-xform":31}],120:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("./text-xform"),c=e("./rich-text-xform"),a=e("../base-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={r:new c,t:new v},o}return b(n,[{key:"render",value:function(p,O){if(p.openNode(this.tag,{sb:O.sb||0,eb:O.eb||0}),O&&O.hasOwnProperty("richText")&&O.richText){var C=this.map.r;O.richText.forEach(function(N){C.render(p,N)})}else O&&this.map.t.render(p,O.text);p.closeNode()}},{key:"parseOpen",value:function(p){var O=p.name;return this.parser?(this.parser.parseOpen(p),!0):O===this.tag?(this.model={sb:parseInt(p.attributes.sb,10),eb:parseInt(p.attributes.eb,10)},!0):(this.parser=this.map[O],this.parser?(this.parser.parseOpen(p),!0):!1)}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser){if(!this.parser.parseClose(p)){switch(p){case"r":{var O=this.model.richText;O||(O=this.model.richText=[]),O.push(this.parser.model);break}case"t":this.model.text=this.parser.model;break}this.parser=void 0}return!0}switch(p){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"rPh"}}]),n}(a);x.exports=r},{"../base-xform":31,"./rich-text-xform":121,"./text-xform":124}],121:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("./text-xform"),c=e("../style/font-xform"),a=e("../base-xform"),r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p.model=o,p}return b(n,[{key:"render",value:function(p,O){O=O||this.model,p.openNode("r"),O.font&&this.fontXform.render(p,O.font),this.textXform.render(p,O.text),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"r":return this.model={},!0;case"t":return this.parser=this.textXform,this.parser.parseOpen(p),!0;case"rPr":return this.parser=this.fontXform,this.parser.parseOpen(p),!0;default:return!1}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){switch(p){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(p),!0}}},{key:"tag",get:function(){return"r"}},{key:"textXform",get:function(){return this._textXform||(this._textXform=new v)}},{key:"fontXform",get:function(){return this._fontXform||(this._fontXform=new c(n.FONT_OPTIONS))}}]),n}(a);r.FONT_OPTIONS={tagName:"rPr",fontNameTag:"rFont"},x.exports=r},{"../base-xform":31,"../style/font-xform":130,"./text-xform":124}],122:[function(e,x,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"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(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("./text-xform"),c=e("./rich-text-xform"),a=e("./phonetic-text-xform"),r=e("../base-xform"),t=function(i){w(o,i);var n=y(o);function o(p){var O;return m(this,o),O=n.call(this),O.model=p,O.map={r:new c,t:new v,rPh:new a},O}return b(o,[{key:"render",value:function(O,C){var N=this;O.openNode(this.tag),C&&C.hasOwnProperty("richText")&&C.richText?C.richText.length?C.richText.forEach(function(L){N.map.r.render(O,L)}):this.map.t.render(O,""):C!=null&&this.map.t.render(O,C),O.closeNode()}},{key:"parseOpen",value:function(O){var C=O.name;return this.parser?(this.parser.parseOpen(O),!0):C===this.tag?(this.model={},!0):(this.parser=this.map[C],this.parser?(this.parser.parseOpen(O),!0):!1)}},{key:"parseText",value:function(O){this.parser&&this.parser.parseText(O)}},{key:"parseClose",value:function(O){if(this.parser){if(!this.parser.parseClose(O)){switch(O){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(O){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"si"}}]),o}(r);x.exports=t},{"../base-xform":31,"./phonetic-text-xform":120,"./rich-text-xform":121,"./text-xform":124}],123:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("./shared-string-xform"),r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p.model=o||{values:[],count:0},p.hash=Object.create(null),p.rich=Object.create(null),p}return b(n,[{key:"getString",value:function(p){return this.model.values[p]}},{key:"add",value:function(p){return p.richText?this.addRichText(p):this.addText(p)}},{key:"addText",value:function(p){var O=this.hash[p];return O===void 0&&(O=this.hash[p]=this.model.values.length,this.model.values.push(p)),this.model.count++,O}},{key:"addRichText",value:function(p){var O=this.sharedStringXform.toXml(p),C=this.rich[O];return C===void 0&&(C=this.rich[O]=this.model.values.length,this.model.values.push(p)),this.model.count++,C}},{key:"render",value:function(p,O){O=O||this._values,p.openXml(v.StdDocAttributes),p.openNode("sst",{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:O.count,uniqueCount:O.values.length});var C=this.sharedStringXform;O.values.forEach(function(N){C.render(p,N)}),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"sst":return!0;case"si":return this.parser=this.sharedStringXform,this.parser.parseOpen(p),!0;default:throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(p)))}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;switch(p){case"sst":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(p))}}},{key:"sharedStringXform",get:function(){return this._sharedStringXform||(this._sharedStringXform=new a)}},{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}}]),n}(c);x.exports=r},{"../../../utils/xml-stream":27,"../base-xform":31,"./shared-string-xform":122}],124:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.openNode("t"),/^\s|\n|\s$/.test(o)&&n.addAttribute("xml:space","preserve"),n.writeText(o),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case"t":return this._text=[],!0;default:return!1}}},{key:"parseText",value:function(n){this._text.push(n)}},{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(n,o){return String.fromCharCode(parseInt(o,16))})}}]),t}(v);x.exports=c},{"../base-xform":31}],125:[function(e,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../doc/enums"),c=e("../../../utils/utils"),a=e("../base-xform"),r={horizontalValues:["left","center","right","fill","centerContinuous","distributed","justify"].reduce(function(n,o){return n[o]=!0,n},{}),horizontal:function(o){return this.horizontalValues[o]?o:void 0},verticalValues:["top","middle","bottom","distributed","justify"].reduce(function(n,o){return n[o]=!0,n},{}),vertical:function(o){return o==="middle"?"center":this.verticalValues[o]?o:void 0},wrapText:function(o){return o?!0:void 0},shrinkToFit:function(o){return o?!0:void 0},textRotation:function(o){switch(o){case"vertical":return o;default:return o=c.validInt(o),o>=-90&&o<=90?o:void 0}},indent:function(o){return o=c.validInt(o),Math.max(0,o)},readingOrder:function(o){switch(o){case"ltr":return v.ReadingOrder.LeftToRight;case"rtl":return v.ReadingOrder.RightToLeft;default:return}}},t={toXml:function(o){if(o=r.textRotation(o),o){if(o==="vertical")return 255;var p=Math.round(o);if(p>=0&&p<=90)return p;if(p<0&&p>=-90)return 90-p}},toModel:function(o){var p=c.validInt(o);if(p!==void 0){if(p===255)return"vertical";if(p>=0&&p<=90)return p;if(p>90&&p<=180)return 90-p}}},i=function(n){w(p,n);var o=y(p);function p(){return m(this,p),o.apply(this,arguments)}return b(p,[{key:"render",value:function(C,N){C.addRollback(),C.openNode("alignment");var L=!1;function F(M,D){D&&(C.addAttribute(M,D),L=!0)}F("horizontal",r.horizontal(N.horizontal)),F("vertical",r.vertical(N.vertical)),F("wrapText",r.wrapText(N.wrapText)?"1":!1),F("shrinkToFit",r.shrinkToFit(N.shrinkToFit)?"1":!1),F("indent",r.indent(N.indent)),F("textRotation",t.toXml(N.textRotation)),F("readingOrder",r.readingOrder(N.readingOrder)),C.closeNode(),L?C.commit():C.rollback()}},{key:"parseOpen",value:function(C){var N={},L=!1;function F(M,D,R){M&&(N[D]=R,L=!0)}F(C.attributes.horizontal,"horizontal",C.attributes.horizontal),F(C.attributes.vertical,"vertical",C.attributes.vertical==="center"?"middle":C.attributes.vertical),F(C.attributes.wrapText,"wrapText",!!C.attributes.wrapText),F(C.attributes.shrinkToFit,"shrinkToFit",!!C.attributes.shrinkToFit),F(C.attributes.indent,"indent",parseInt(C.attributes.indent,10)),F(C.attributes.textRotation,"textRotation",t.toModel(C.attributes.textRotation)),F(C.attributes.readingOrder,"readingOrder",C.attributes.readingOrder==="2"?"rtl":"ltr"),this.model=L?N:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"alignment"}}]),p}(a);x.exports=i},{"../../../doc/enums":7,"../../../utils/utils":26,"../base-xform":31}],126:[function(e,x,_){function u(o,p){var O=Object.keys(o);if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(o);p&&(C=C.filter(function(N){return Object.getOwnPropertyDescriptor(o,N).enumerable})),O.push.apply(O,C)}return O}function m(o){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 a(o){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(O){return O.__proto__||Object.getPrototypeOf(O)},a(o)}var r=e("../base-xform"),t=e("./color-xform"),i=function(o){h(O,o);var p=d(O);function O(C){var N;return w(this,O),N=p.call(this),N.name=C,N.map={color:new t},N}return y(O,[{key:"render",value:function(N,L,F){var M=L&&L.color||F||this.defaultColor;N.openNode(this.name),L&&L.style&&(N.addAttribute("style",L.style),M&&this.map.color.render(N,M)),N.closeNode()}},{key:"parseOpen",value:function(N){if(this.parser)return this.parser.parseOpen(N),!0;switch(N.name){case this.name:{var L=N.attributes.style;return L?this.model={style:L}:this.model=void 0,!0}case"color":return this.parser=this.map.color,this.parser.parseOpen(N),!0;default:return!1}}},{key:"parseText",value:function(N){this.parser&&this.parser.parseText(N)}},{key:"parseClose",value:function(N){return this.parser?(this.parser.parseClose(N)||(this.parser=void 0),!0):(N===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}},{key:"validStyle",value:function(N){return O.validStyleValues[N]}},{key:"tag",get:function(){return this.name}}]),O}(r);i.validStyleValues=["thin","dotted","dashDot","hair","dashDotDot","slantDashDot","mediumDashed","mediumDashDotDot","mediumDashDot","medium","double","thick"].reduce(function(o,p){return o[p]=!0,o},{});var n=function(o){h(O,o);var p=d(O);function O(){var C;return w(this,O),C=p.call(this),C.map={top:new i("top"),left:new i("left"),bottom:new i("bottom"),right:new i("right"),diagonal:new i("diagonal")},C}return y(O,[{key:"render",value:function(N,L){var F=L.color;N.openNode("border"),L.diagonal&&L.diagonal.style&&(L.diagonal.up&&N.addAttribute("diagonalUp","1"),L.diagonal.down&&N.addAttribute("diagonalDown","1"));function M(D,R){D&&!D.color&&L.color&&(D=m(m({},D),{},{color:L.color})),R.render(N,D,F)}M(L.left,this.map.left),M(L.right,this.map.right),M(L.top,this.map.top),M(L.bottom,this.map.bottom),M(L.diagonal,this.map.diagonal),N.closeNode()}},{key:"parseOpen",value:function(N){if(this.parser)return this.parser.parseOpen(N),!0;switch(N.name){case"border":return this.reset(),this.diagonalUp=!!N.attributes.diagonalUp,this.diagonalDown=!!N.attributes.diagonalDown,!0;default:return this.parser=this.map[N.name],this.parser?(this.parser.parseOpen(N),!0):!1}}},{key:"parseText",value:function(N){this.parser&&this.parser.parseText(N)}},{key:"parseClose",value:function(N){if(this.parser)return this.parser.parseClose(N)||(this.parser=void 0),!0;if(N==="border"){var L=this.model={},F=function(D,R,P){R&&(P&&Object.assign(R,P),L[D]=R)};F("left",this.map.left.model),F("right",this.map.right.model),F("top",this.map.top.model),F("bottom",this.map.bottom.model),F("diagonal",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}]),O}(r);x.exports=n},{"../base-xform":31,"./color-xform":127}],127:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.name=i||"color",n}return b(t,[{key:"render",value:function(n,o){return o?(n.openNode(this.name),o.argb?n.addAttribute("rgb",o.argb):o.theme!==void 0?(n.addAttribute("theme",o.theme),o.tint!==void 0&&n.addAttribute("tint",o.tint)):o.indexed!==void 0?n.addAttribute("indexed",o.indexed):n.addAttribute("auto","1"),n.closeNode(),!0):!1}},{key:"parseOpen",value:function(n){return n.name===this.name?(n.attributes.rgb?this.model={argb:n.attributes.rgb}:n.attributes.theme?(this.model={theme:parseInt(n.attributes.theme,10)},n.attributes.tint&&(this.model.tint=parseFloat(n.attributes.tint))):n.attributes.indexed?this.model={indexed:parseInt(n.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}}]),t}(v);x.exports=c},{"../base-xform":31}],128:[function(e,x,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){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 s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("../base-xform"),c=e("./alignment-xform"),a=e("./border-xform"),r=e("./fill-xform"),t=e("./font-xform"),i=e("./numfmt-xform"),n=e("./protection-xform"),o=function(p){w(C,p);var O=y(C);function C(){var N;return m(this,C),N=O.call(this),N.map={alignment:new c,border:new a,fill:new r,font:new t,numFmt:new i,protection:new n},N}return b(C,[{key:"render",value:function(L,F){L.openNode(this.tag),F.font&&this.map.font.render(L,F.font),F.numFmt&&this.map.numFmt.render(L,F.numFmt),F.fill&&this.map.fill.render(L,F.fill),F.alignment&&this.map.alignment.render(L,F.alignment),F.border&&this.map.border.render(L,F.border),F.protection&&this.map.protection.render(L,F.protection),L.closeNode()}},{key:"parseOpen",value:function(L){if(this.parser)return this.parser.parseOpen(L),!0;switch(L.name){case this.tag:return this.reset(),!0;default:return this.parser=this.map[L.name],this.parser&&this.parser.parseOpen(L),!0}}},{key:"parseText",value:function(L){this.parser&&this.parser.parseText(L)}},{key:"parseClose",value:function(L){return this.parser?(this.parser.parseClose(L)||(this.parser=void 0),!0):L===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}(v);x.exports=o},{"../base-xform":31,"./alignment-xform":125,"./border-xform":126,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./protection-xform":132}],129:[function(e,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../base-xform"),c=e("./color-xform"),a=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={color:new c},O}return b(p,[{key:"render",value:function(C,N){C.openNode("stop"),C.addAttribute("position",N.position),this.map.color.render(C,N.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"}}]),p}(v),r=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={fgColor:new c("fgColor"),bgColor:new c("bgColor")},O}return b(p,[{key:"render",value:function(C,N){C.openNode("patternFill"),C.addAttribute("patternType",N.pattern),N.fgColor&&this.map.fgColor.render(C,N.fgColor),N.bgColor&&this.map.bgColor.render(C,N.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"}}]),p}(v),t=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={stop:new a},O}return b(p,[{key:"render",value:function(C,N){switch(C.openNode("gradientFill"),N.gradient){case"angle":C.addAttribute("degree",N.degree);break;case"path":C.addAttribute("type","path"),N.center.left&&(C.addAttribute("left",N.center.left),N.center.right===void 0&&C.addAttribute("right",N.center.left)),N.center.right&&C.addAttribute("right",N.center.right),N.center.top&&(C.addAttribute("top",N.center.top),N.center.bottom===void 0&&C.addAttribute("bottom",N.center.top)),N.center.bottom&&C.addAttribute("bottom",N.center.bottom);break}var L=this.map.stop;N.stops.forEach(function(F){L.render(C,F)}),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"gradientFill":{var N=this.model={stops:[]};return C.attributes.degree?(N.gradient="angle",N.degree=parseInt(C.attributes.degree,10)):C.attributes.type==="path"&&(N.gradient="path",N.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&&(N.center.right=C.attributes.right?parseFloat(C.attributes.right):0),C.attributes.bottom!==C.attributes.top&&(N.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"}}]),p}(v),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={patternFill:new r,gradientFill:new t},O}return b(p,[{key:"render",value:function(C,N){switch(C.addRollback(),C.openNode("fill"),N.type){case"pattern":this.map.patternFill.render(C,N);break;case"gradient":this.map.gradientFill.render(C,N);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 p.validPatternValues[C]}},{key:"tag",get:function(){return"fill"}}]),p}(v);i.validPatternValues=["none","solid","darkVertical","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","lightGrid"].reduce(function(n,o){return n[o]=!0,n},{}),i.StopXform=a,i.PatternFillXform=r,i.GradientFillXform=t,x.exports=i},{"../base-xform":31,"./color-xform":127}],130:[function(e,x,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){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 s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("./color-xform"),c=e("../simple/boolean-xform"),a=e("../simple/integer-xform"),r=e("../simple/string-xform"),t=e("./underline-xform"),i=e("../../../utils/under-dash"),n=e("../base-xform"),o=function(p){w(C,p);var O=y(C);function C(N){var L;return m(this,C),L=O.call(this),L.options=N||C.OPTIONS,L.map={b:{prop:"bold",xform:new c({tag:"b",attr:"val"})},i:{prop:"italic",xform:new c({tag:"i",attr:"val"})},u:{prop:"underline",xform:new t},charset:{prop:"charset",xform:new a({tag:"charset",attr:"val"})},color:{prop:"color",xform:new v},condense:{prop:"condense",xform:new c({tag:"condense",attr:"val"})},extend:{prop:"extend",xform:new c({tag:"extend",attr:"val"})},family:{prop:"family",xform:new a({tag:"family",attr:"val"})},outline:{prop:"outline",xform:new c({tag:"outline",attr:"val"})},vertAlign:{prop:"vertAlign",xform:new r({tag:"vertAlign",attr:"val"})},scheme:{prop:"scheme",xform:new r({tag:"scheme",attr:"val"})},shadow:{prop:"shadow",xform:new c({tag:"shadow",attr:"val"})},strike:{prop:"strike",xform:new c({tag:"strike",attr:"val"})},sz:{prop:"size",xform:new a({tag:"sz",attr:"val"})}},L.map[L.options.fontNameTag]={prop:"name",xform:new r({tag:L.options.fontNameTag,attr:"val"})},L}return b(C,[{key:"render",value:function(L,F){var M=this.map;L.openNode(this.options.tagName),i.each(this.map,function(D,R){M[R].xform.render(L,F[D.prop])}),L.closeNode()}},{key:"parseOpen",value:function(L){if(this.parser)return this.parser.parseOpen(L),!0;if(this.map[L.name])return this.parser=this.map[L.name].xform,this.parser.parseOpen(L);switch(L.name){case this.options.tagName:return this.model={},!0;default:return!1}}},{key:"parseText",value:function(L){this.parser&&this.parser.parseText(L)}},{key:"parseClose",value:function(L){if(this.parser&&!this.parser.parseClose(L)){var F=this.map[L];return this.parser.model&&(this.model[F.prop]=this.parser.model),this.parser=void 0,!0}switch(L){case this.options.tagName:return!1;default:return!0}}},{key:"tag",get:function(){return this.options.tagName}}]),C}(n);o.OPTIONS={tagName:"font",fontNameTag:"name"},x.exports=o},{"../../../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,x,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){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 s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../utils/under-dash"),c=e("../../defaultnumformats"),a=e("../base-xform");function r(){var n={};return v.each(c,function(o,p){o.f&&(n[o.f]=parseInt(p,10))}),n}var t=r(),i=function(n){w(p,n);var o=y(p);function p(O,C){var N;return m(this,p),N=o.call(this),N.id=O,N.formatCode=C,N}return b(p,[{key:"render",value:function(C,N){C.leafNode("numFmt",{numFmtId:N.id,formatCode:N.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"}}]),p}(a);i.getDefaultFmtId=function(o){return t[o]},i.getDefaultFmtCode=function(o){return c[o]&&c[o].f},x.exports=i},{"../../../utils/under-dash":25,"../../defaultnumformats":29,"../base-xform":31}],132:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c={boolean:function(t,i){return t===void 0?i:t}},a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){o.addRollback(),o.openNode("protection");var O=!1;function C(N,L){L!==void 0&&(o.addAttribute(N,L),O=!0)}C("locked",c.boolean(p.locked,!0)?void 0:"0"),C("hidden",c.boolean(p.hidden,!1)?"1":void 0),o.closeNode(),O?o.commit():o.rollback()}},{key:"parseOpen",value:function(o){var p={locked:o.attributes.locked!=="0",hidden:o.attributes.hidden==="1"},O=!p.locked||p.hidden;this.model=O?p:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"protection"}}]),i}(v);x.exports=a},{"../base-xform":31}],133:[function(e,x,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"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(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./alignment-xform"),a=e("./protection-xform"),r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p.xfId=!!(o&&o.xfId),p.map={alignment:new c,protection:new a},p}return b(n,[{key:"render",value:function(p,O){p.openNode("xf",{numFmtId:O.numFmtId||0,fontId:O.fontId||0,fillId:O.fillId||0,borderId:O.borderId||0}),this.xfId&&p.addAttribute("xfId",O.xfId||0),O.numFmtId&&p.addAttribute("applyNumberFormat","1"),O.fontId&&p.addAttribute("applyFont","1"),O.fillId&&p.addAttribute("applyFill","1"),O.borderId&&p.addAttribute("applyBorder","1"),O.alignment&&p.addAttribute("applyAlignment","1"),O.protection&&p.addAttribute("applyProtection","1"),O.alignment&&this.map.alignment.render(p,O.alignment),O.protection&&this.map.protection.render(p,O.protection),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"xf":return this.model={numFmtId:parseInt(p.attributes.numFmtId,10),fontId:parseInt(p.attributes.fontId,10),fillId:parseInt(p.attributes.fillId,10),borderId:parseInt(p.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(p.attributes.xfId,10)),!0;case"alignment":return this.parser=this.map.alignment,this.parser.parseOpen(p),!0;case"protection":return this.parser=this.map.protection,this.parser.parseOpen(p),!0;default:return!1}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){return this.parser?(this.parser.parseClose(p)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):p!=="xf"}},{key:"tag",get:function(){return"xf"}}]),n}(v);x.exports=r},{"../base-xform":31,"./alignment-xform":125,"./protection-xform":132}],134:[function(e,x,_){function u(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(R){return typeof R}:u=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},u(M)}function m(M,D){if(!(M instanceof D))throw new TypeError("Cannot call a class as a function")}function g(M,D){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 s(M){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},s(M)}var v=e("../../../doc/enums"),c=e("../../../utils/xml-stream"),a=e("../base-xform"),r=e("../static-xform"),t=e("../list-xform"),i=e("./font-xform"),n=e("./fill-xform"),o=e("./border-xform"),p=e("./numfmt-xform"),O=e("./style-xform"),C=e("./dxf-xform"),N=164,L=function(M){w(R,M);var D=y(R);function R(P){var E;return m(this,R),E=D.call(this),E.map={numFmts:new t({tag:"numFmts",count:!0,childXform:new p}),fonts:new t({tag:"fonts",count:!0,childXform:new i,$:{"x14ac:knownFonts":1}}),fills:new t({tag:"fills",count:!0,childXform:new n}),borders:new t({tag:"borders",count:!0,childXform:new o}),cellStyleXfs:new t({tag:"cellStyleXfs",count:!0,childXform:new O}),cellXfs:new t({tag:"cellXfs",count:!0,childXform:new O({xfId:!0})}),dxfs:new t({tag:"dxfs",always:!0,count:!0,childXform:new C}),numFmt:new p,font:new i,fill:new n,border:new o,style:new O({xfId:!0}),cellStyles:R.STATIC_XFORMS.cellStyles,tableStyles:R.STATIC_XFORMS.tableStyles,extLst:R.STATIC_XFORMS.extLst},P&&E.init(),E}return b(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(E,A){A=A||this.model,E.openXml(c.StdDocAttributes),E.openNode("styleSheet",R.STYLESHEET_ATTRIBUTES),this.index?(A.numFmts&&A.numFmts.length&&(E.openNode("numFmts",{count:A.numFmts.length}),A.numFmts.forEach(function(z){E.writeXml(z)}),E.closeNode()),A.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),E.openNode("fonts",{count:A.fonts.length,"x14ac:knownFonts":1}),A.fonts.forEach(function(z){E.writeXml(z)}),E.closeNode(),E.openNode("fills",{count:A.fills.length}),A.fills.forEach(function(z){E.writeXml(z)}),E.closeNode(),E.openNode("borders",{count:A.borders.length}),A.borders.forEach(function(z){E.writeXml(z)}),E.closeNode(),this.map.cellStyleXfs.render(E,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),E.openNode("cellXfs",{count:A.styles.length}),A.styles.forEach(function(z){E.writeXml(z)}),E.closeNode()):(this.map.numFmts.render(E,A.numFmts),this.map.fonts.render(E,A.fonts),this.map.fills.render(E,A.fills),this.map.borders.render(E,A.borders),this.map.cellStyleXfs.render(E,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(E,A.styles)),R.STATIC_XFORMS.cellStyles.render(E),this.map.dxfs.render(E,A.dxfs),R.STATIC_XFORMS.tableStyles.render(E),R.STATIC_XFORMS.extLst.render(E),E.closeNode()}},{key:"parseOpen",value:function(E){if(this.parser)return this.parser.parseOpen(E),!0;switch(E.name){case"styleSheet":return this.initIndex(),!0;default:return this.parser=this.map[E.name],this.parser&&this.parser.parseOpen(E),!0}}},{key:"parseText",value:function(E){this.parser&&this.parser.parseText(E)}},{key:"parseClose",value:function(E){var A=this;if(this.parser)return this.parser.parseClose(E)||(this.parser=void 0),!0;switch(E){case"styleSheet":{this.model={};var z=function(U,I){I.model&&I.model.length&&(A.model[U]=I.model)};if(z("numFmts",this.map.numFmts),z("fonts",this.map.fonts),z("fills",this.map.fills),z("borders",this.map.borders),z("styles",this.map.cellXfs),z("dxfs",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){var W=this.index.numFmt;this.model.numFmts.forEach(function($){W[$.id]=$.formatCode})}return!1}default:return!0}}},{key:"addStyleModel",value:function(E,A){if(!E)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(E))return this.weakMap.get(E);var z={};if(A=A||v.ValueType.Number,E.numFmt)z.numFmtId=this._addNumFmtStr(E.numFmt);else switch(A){case v.ValueType.Number:z.numFmtId=this._addNumFmtStr("General");break;case v.ValueType.Date:z.numFmtId=this._addNumFmtStr("mm-dd-yy");break}E.font&&(z.fontId=this._addFont(E.font)),E.border&&(z.borderId=this._addBorder(E.border)),E.fill&&(z.fillId=this._addFill(E.fill)),E.alignment&&(z.alignment=E.alignment),E.protection&&(z.protection=E.protection);var W=this._addStyle(z);return this.weakMap&&this.weakMap.set(E,W),W}},{key:"getStyleModel",value:function(E){var A=this.model.styles[E];if(!A)return null;var z=this.index.model[E];if(z)return z;if(z=this.index.model[E]={},A.numFmtId){var W=this.index.numFmt[A.numFmtId]||p.getDefaultFmtCode(A.numFmtId);W&&(z.numFmt=W)}function $(U,I,j){if(j||j===0){var B=I[j];B&&(z[U]=B)}}return $("font",this.model.fonts,A.fontId),$("border",this.model.borders,A.borderId),$("fill",this.model.fills,A.fillId),A.alignment&&(z.alignment=A.alignment),A.protection&&(z.protection=A.protection),z}},{key:"addDxfStyle",value:function(E){return this.model.dxfs.push(E),this.model.dxfs.length-1}},{key:"getDxfStyle",value:function(E){return this.model.dxfs[E]}},{key:"_addStyle",value:function(E){var A=this.map.style.toXml(E),z=this.index.style[A];return z===void 0&&(z=this.index.style[A]=this.model.styles.length,this.model.styles.push(A)),z}},{key:"_addNumFmtStr",value:function(E){var A=p.getDefaultFmtId(E);if(A!==void 0||(A=this.index.numFmt[E],A!==void 0))return A;A=this.index.numFmt[E]=N+this.model.numFmts.length;var z=this.map.numFmt.toXml({id:A,formatCode:E});return this.model.numFmts.push(z),A}},{key:"_addFont",value:function(E){var A=this.map.font.toXml(E),z=this.index.font[A];return z===void 0&&(z=this.index.font[A]=this.model.fonts.length,this.model.fonts.push(A)),z}},{key:"_addBorder",value:function(E){var A=this.map.border.toXml(E),z=this.index.border[A];return z===void 0&&(z=this.index.border[A]=this.model.borders.length,this.model.borders.push(A)),z}},{key:"_addFill",value:function(E){var A=this.map.fill.toXml(E),z=this.index.fill[A];return z===void 0&&(z=this.index.fill[A]=this.model.fills.length,this.model.fills.push(A)),z}}]),R}(a);L.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"},L.STATIC_XFORMS={cellStyles:new r({tag:"cellStyles",$:{count:1},c:[{tag:"cellStyle",$:{name:"Normal",xfId:0,builtinId:0}}]}),dxfs:new r({tag:"dxfs",$:{count:0}}),tableStyles:new r({tag:"tableStyles",$:{count:0,defaultTableStyle:"TableStyleMedium2",defaultPivotStyle:"PivotStyleLight16"}}),extLst:new r({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 F=function(M){w(R,M);var D=y(R);function R(){var P;return m(this,R),P=D.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 b(R,[{key:"parseStream",value:function(E){return E.autodrain(),Promise.resolve()}},{key:"addStyleModel",value:function(E,A){switch(A){case v.ValueType.Date:return this.dateStyleId;default:return 0}}},{key:"getStyleModel",value:function(){return{}}},{key:"dateStyleId",get:function(){if(!this._dateStyleId){var E={numFmtId:p.getDefaultFmtId("mm-dd-yy")};this._dateStyleId=this.model.styles.length,this.model.styles.push(E)}return this._dateStyleId}}]),R}(L);L.Mock=F,x.exports=L},{"../../../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,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.model=i,n}return b(t,[{key:"render",value:function(n,o){if(o=o||this.model,o===!0)n.leafNode("u");else{var p=t.Attributes[o];p&&n.leafNode("u",p)}}},{key:"parseOpen",value:function(n){n.name==="u"&&(this.model=n.attributes.val||!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"u"}}]),t}(v);c.Attributes={single:{},double:{val:"double"},singleAccounting:{val:"singleAccounting"},doubleAccounting:{val:"doubleAccounting"}},x.exports=c},{"../base-xform":31}],136:[function(e,x,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"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(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("./filter-column-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={filterColumn:new c},n}return b(i,[{key:"prepare",value:function(o){var p=this;o.columns.forEach(function(O,C){p.map.filterColumn.prepare(O,{index:C})})}},{key:"render",value:function(o,p){var O=this;return o.openNode(this.tag,{ref:p.autoFilterRef}),p.columns.forEach(function(C){O.map.filterColumn.render(o,C)}),o.closeNode(),!0}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;switch(o.name){case this.tag:return this.model={autoFilterRef:o.attributes.ref,columns:[]},!0;default:if(this.parser=this.map[o.name],this.parser)return this.parseOpen(o),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(o)))}}},{key:"parseText",value:function(o){this.parser&&this.parser.parseText(o)}},{key:"parseClose",value:function(o){if(this.parser)return this.parser.parseClose(o)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;switch(o){case this.tag:return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(o))}}},{key:"tag",get:function(){return"autoFilter"}}]),i}(v);x.exports=a},{"../base-xform":31,"./filter-column-xform":137}],137:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"prepare",value:function(n,o){n.colId=o.index.toString()}},{key:"render",value:function(n,o){return n.leafNode(this.tag,{colId:o.colId,hiddenButton:o.filterButton?"0":"1"}),!0}},{key:"parseOpen",value:function(n){if(n.name===this.tag){var o=n.attributes;return this.model={filterButton:o.hiddenButton==="0"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"filterColumn"}}]),t}(v);x.exports=c},{"../base-xform":31}],138:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"prepare",value:function(n,o){n.id=o.index+1}},{key:"render",value:function(n,o){return n.leafNode(this.tag,{id:o.id.toString(),name:o.name,totalsRowLabel:o.totalsRowLabel,totalsRowFunction:o.totalsRowFunction,dxfId:o.dxfId}),!0}},{key:"parseOpen",value:function(n){if(n.name===this.tag){var o=n.attributes;return this.model={name:o.name,totalsRowLabel:o.totalsRowLabel,totalsRowFunction:o.totalsRowFunction,dxfId:o.dxfId},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableColumn"}}]),t}(v);x.exports=c},{"../base-xform":31}],139:[function(e,x,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){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 s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){return n.leafNode(this.tag,{name:o.theme?o.theme:void 0,showFirstColumn:o.showFirstColumn?"1":"0",showLastColumn:o.showLastColumn?"1":"0",showRowStripes:o.showRowStripes?"1":"0",showColumnStripes:o.showColumnStripes?"1":"0"}),!0}},{key:"parseOpen",value:function(n){if(n.name===this.tag){var o=n.attributes;return this.model={theme:o.name?o.name:null,showFirstColumn:o.showFirstColumn==="1",showLastColumn:o.showLastColumn==="1",showRowStripes:o.showRowStripes==="1",showColumnStripes:o.showColumnStripes==="1"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableStyleInfo"}}]),t}(v);x.exports=c},{"../base-xform":31}],140:[function(e,x,_){function u(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(L){return typeof L}:u=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},u(C)}function m(C,N){var L=Object.keys(C);if(Object.getOwnPropertySymbols){var F=Object.getOwnPropertySymbols(C);N&&(F=F.filter(function(M){return Object.getOwnPropertyDescriptor(C,M).enumerable})),L.push.apply(L,F)}return L}function g(C){for(var N=1;N"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 a(C){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},a(C)}var r=e("../../../utils/xml-stream"),t=e("../base-xform"),i=e("../list-xform"),n=e("./auto-filter-xform"),o=e("./table-column-xform"),p=e("./table-style-info-xform"),O=function(C){h(L,C);var N=d(L);function L(){var F;return w(this,L),F=N.call(this),F.map={autoFilter:new n,tableColumns:new i({tag:"tableColumns",count:!0,empty:!0,childXform:new o}),tableStyleInfo:new p},F}return y(L,[{key:"prepare",value:function(M,D){this.map.autoFilter.prepare(M),this.map.tableColumns.prepare(M.columns,D)}},{key:"render",value:function(M,D){M.openXml(r.StdDocAttributes),M.openNode(this.tag,g(g({},L.TABLE_ATTRIBUTES),{},{id:D.id,name:D.name,displayName:D.displayName||D.name,ref:D.tableRef,totalsRowCount:D.totalsRow?"1":void 0,totalsRowShown:D.totalsRow?void 0:"1",headerRowCount:D.headerRow?"1":"0"})),this.map.autoFilter.render(M,D),this.map.tableColumns.render(M,D.columns),this.map.tableStyleInfo.render(M,D.style),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;var D=M.name,R=M.attributes;switch(D){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 D=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){D.model.columns[P].filterButton=R.filterButton})),this.model.style=this.map.tableStyleInfo.model,!1;default:return!0}}},{key:"reconcile",value:function(M,D){M.columns.forEach(function(R){R.dxfId!==void 0&&(R.style=D.styles.getDxfStyle(R.dxfId))})}},{key:"tag",get:function(){return"table"}}]),L}(t);O.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"},x.exports=O},{"../../../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,x,_){(function(u,m){function g($,U,I,j,B,V,te){try{var ie=$[V](te),ce=ie.value}catch(be){I(be);return}ie.done?U(ce):Promise.resolve(ce).then(j,B)}function b($){return function(){var U=this,I=arguments;return new Promise(function(j,B){var V=$.apply(U,I);function te(ce){g(V,j,B,te,ie,"next",ce)}function ie(ce){g(V,j,B,te,ie,"throw",ce)}te(void 0)})}}function w($,U){if(!($ instanceof U))throw new TypeError("Cannot call a class as a function")}function f($,U){for(var I=0;I=1)){oe.next=6;break}return ce=te.substr(ie+1),be=te.substr(0,ie),oe.next=6,new Promise(function(J,Q){var he=new a;he.on("finish",function(){V.mediaIndex[te]=V.media.length,V.mediaIndex[be]=V.media.length;var ke={type:"image",name:be,extension:ce,buffer:he.toBuffer()};V.media.push(ke),J()}),B.on("error",function(ke){Q(ke)}),B.pipe(he)});case 6:case"end":return oe.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processDrawingEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){var ie,ce;return regeneratorRuntime.wrap(function(_e){for(;;)switch(_e.prev=_e.next){case 0:return ie=new D,_e.next=3,ie.parseStream(B);case 3:ce=_e.sent,V.drawings[te]=ce;case 5:case"end":return _e.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processDrawingRelsEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){var ie,ce;return regeneratorRuntime.wrap(function(_e){for(;;)switch(_e.prev=_e.next){case 0:return ie=new C,_e.next=3,ie.parseStream(B);case 3:ce=_e.sent,V.drawingRels[te]=ce;case 5:case"end":return _e.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processVmlDrawingEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){var ie,ce;return regeneratorRuntime.wrap(function(_e){for(;;)switch(_e.prev=_e.next){case 0:return ie=new E,_e.next=3,ie.parseStream(B);case 3:ce=_e.sent,V.vmlDrawings["../drawings/".concat(te,".vml")]=ce;case 5:case"end":return _e.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processThemeEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){return regeneratorRuntime.wrap(function(ce){for(;;)switch(ce.prev=ce.next){case 0:return ce.next=2,new Promise(function(be,_e){var oe=new a;B.on("error",_e),oe.on("error",_e),oe.on("finish",function(){V.themes[te]=oe.read().toString(),be()}),B.pipe(oe)});case 2:case"end":return ce.stop()}},j)}));function I(j,B,V){return U.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 U=b(regeneratorRuntime.mark(function j(B,V){var te,ie,ce,be,_e,oe,J,Q;return regeneratorRuntime.wrap(function(ke){for(;;)switch(ke.prev=ke.next){case 0:!B[Symbol.asyncIterator]&&B.pipe&&(B=B.pipe(new v)),te=[],ie=!0,ce=!1,ke.prev=4,_e=h(B);case 6:return ke.next=8,_e.next();case 8:return oe=ke.sent,ie=oe.done,ke.next=12,oe.value;case 12:if(J=ke.sent,ie){ke.next=19;break}Q=J,te.push(Q);case 16:ie=!0,ke.next=6;break;case 19:ke.next=25;break;case 21:ke.prev=21,ke.t0=ke.catch(4),ce=!0,be=ke.t0;case 25:if(ke.prev=25,ke.prev=26,!(!ie&&_e.return!=null)){ke.next=30;break}return ke.next=30,_e.return();case 30:if(ke.prev=30,!ce){ke.next=33;break}throw be;case 33:return ke.finish(30);case 34:return ke.finish(25);case 35:return ke.abrupt("return",this.load(m.concat(te),V));case 36:case"end":return ke.stop()}},j,this,[[4,21,25,35],[26,,30,34]])}));function I(j,B){return U.apply(this,arguments)}return I}()},{key:"load",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V){var te,ie,ce,be,_e,oe,J,Q,he,ke,re,se,Ce,q,G,Z,fe;return regeneratorRuntime.wrap(function(ge){for(;;)switch(ge.prev=ge.next){case 0:return V&&V.base64?te=m.from(B.toString(),"base64"):te=B,ie={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},ge.next=4,d.loadAsync(te);case 4:ce=ge.sent,be=0,_e=Object.values(ce.files);case 6:if(!(be<_e.length)){ge.next=126;break}if(oe=_e[be],oe.dir){ge.next=123;break}if(J=oe.name,J[0]==="/"&&(J=J.substr(1)),Q=void 0,!(J.match(/xl\/media\//)||J.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/))){ge.next=21;break}return Q=new v,ge.t0=Q,ge.next=17,oe.async("nodebuffer");case 17:ge.t1=ge.sent,ge.t0.write.call(ge.t0,ge.t1),ge.next=36;break;case 21:if(Q=new v({writableObjectMode:!0,readableObjectMode:!0}),he=void 0,!u.browser){ge.next=31;break}return ge.t2=n,ge.next=27,oe.async("nodebuffer");case 27:ge.t3=ge.sent,he=(0,ge.t2)(ge.t3),ge.next=34;break;case 31:return ge.next=33,oe.async("string");case 33:he=ge.sent;case 34:for(ke=16384,re=0;re0&&(Q=new t,ce.render(Q,J),B.append(Q.xml,{name:"xl/comments".concat(J.id,".xml")}),Q=new t,be.render(Q,J),B.append(Q.xml,{name:"xl/drawings/vmlDrawing".concat(J.id,".vml")}))});case 5:case"end":return oe.stop()}},j)}));function I(j,B){return U.apply(this,arguments)}return I}()},{key:"_finalize",value:function(I){var j=this;return new Promise(function(B,V){I.on("finish",function(){B(j)}),I.on("error",V),I.finalize()})}},{key:"prepareModel",value:function(I,j){I.creator=I.creator||"ExcelJS",I.lastModifiedBy=I.lastModifiedBy||"ExcelJS",I.created=I.created||new Date,I.modified=I.modified||new Date,I.useSharedStrings=j.useSharedStrings!==void 0?j.useSharedStrings:!0,I.useStyles=j.useStyles!==void 0?j.useStyles:!0,I.sharedStrings=new O,I.styles=I.useStyles?new o(!0):new o.Mock;var B=new F,V=new M;B.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 ie=0;I.tables=[],I.worksheets.forEach(function(ce){ce.tables.forEach(function(be){ie++,be.target="table".concat(ie,".xml"),be.id=ie,I.tables.push(be)}),V.prepare(ce,te)})}},{key:"write",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V){var te,ie;return regeneratorRuntime.wrap(function(be){for(;;)switch(be.prev=be.next){case 0:return V=V||{},te=this.workbook.model,ie=new c.ZipWriter(V.zip),ie.pipe(B),this.prepareModel(te,V),be.next=7,this.addContentTypes(ie,te);case 7:return be.next=9,this.addOfficeRels(ie,te);case 9:return be.next=11,this.addWorkbookRels(ie,te);case 11:return be.next=13,this.addWorksheets(ie,te);case 13:return be.next=15,this.addSharedStrings(ie,te);case 15:return be.next=17,this.addDrawings(ie,te);case 17:return be.next=19,this.addTables(ie,te);case 19:return be.next=21,Promise.all([this.addThemes(ie,te),this.addStyles(ie,te)]);case 21:return be.next=23,this.addMedia(ie,te);case 23:return be.next=25,Promise.all([this.addApp(ie,te),this.addCore(ie,te)]);case 25:return be.next=27,this.addWorkbook(ie,te);case 27:return be.abrupt("return",this._finalize(ie));case 28:case"end":return be.stop()}},j,this)}));function I(j,B){return U.apply(this,arguments)}return I}()},{key:"writeFile",value:function(I,j){var B=this,V=l.createWriteStream(I);return new Promise(function(te,ie){V.on("finish",function(){te()}),V.on("error",function(ce){ie(ce)}),B.write(V,j).then(function(){V.end()})})}},{key:"writeBuffer",value:function(){var U=b(regeneratorRuntime.mark(function j(B){var V;return regeneratorRuntime.wrap(function(ie){for(;;)switch(ie.prev=ie.next){case 0:return V=new a,ie.next=3,this.write(V,B);case 3:return ie.abrupt("return",V.read());case 4:case"end":return ie.stop()}},j,this)}));function I(j){return U.apply(this,arguments)}return I}()}]),$}();W.RelType=e("./rel-type"),x.exports=W}).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,x,_){x.exports=` + `},{}],143:[function(e,x,_){(function(u){function m(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(n){return typeof n}:m=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},m(t)}function g(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function b(t,i){for(var n=0;n"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 v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},v(t)}Object.defineProperty(_,"__esModule",{value:!0}),_.CsvFormatterStream=void 0;var c=e("stream"),a=e("./formatter"),r=function(t){f(n,t);var i=h(n);function n(o){var p;return g(this,n),p=i.call(this,{writableObjectMode:o.objectMode}),p.hasWrittenBOM=!1,p.formatterOptions=o,p.rowFormatter=new a.RowFormatter(o),p.hasWrittenBOM=!o.writeBOM,p}return w(n,[{key:"transform",value:function(p){return this.rowFormatter.rowTransform=p,this}},{key:"_transform",value:function(p,O,C){var N=this,L=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(p,function(F,M){return F?(L=!0,C(F)):(M&&M.forEach(function(D){N.push(u.from(D,"utf8"))}),L=!0,C())})}catch(F){if(L)throw F;C(F)}}},{key:"_flush",value:function(p){var O=this;this.rowFormatter.finish(function(C,N){return C?p(C):(N&&N.forEach(function(L){O.push(u.from(L,"utf8"))}),p())})}}]),n}(c.Transform);_.CsvFormatterStream=r}).call(this,e("buffer").Buffer)},{"./formatter":147,buffer:216,stream:506}],144:[function(e,x,_){function u(g,b){if(!(g instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(_,"__esModule",{value:!0}),_.FormatterOptions=void 0;var m=function g(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};u(this,g);var w;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,b||{}),typeof(b==null?void 0:b.quoteHeaders)>"u"&&(this.quoteHeaders=this.quoteColumns),(b==null?void 0:b.quote)===!0?this.quote='"':(b==null?void 0:b.quote)===!1&&(this.quote=""),typeof(b==null?void 0:b.escape)!="string"&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&((w=b.writeHeaders)!==null&&w!==void 0?w:!0),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote="".concat(this.escape).concat(this.quote)};_.FormatterOptions=m},{}],145:[function(e,x,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s1&&arguments[1]!==void 0?arguments[1]:{},r=[],t=new y.Writable({write:function(n,o,p){r.push(n),p()}});return new Promise(function(i,n){t.on("error",n).on("finish",function(){return i(u.concat(r))}),_.write(c,a).pipe(t)})},_.writeToString=function(c,a){return _.writeToBuffer(c,a).then(function(r){return r.toString()})},_.writeToPath=function(c,a,r){var t=h.createWriteStream(c,{encoding:"utf8"});return _.write(a,r).pipe(t)}}).call(this,e("buffer").Buffer)},{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,buffer:216,fs:215,stream:506,util:525}],149:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.isSyncTransform=void 0,_.isSyncTransform=function(u){return u.length===1}},{}],150:[function(e,x,_){(function(u){function m(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(C){return typeof C}:m=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},m(p)}function g(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function b(p,O){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 a(p){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},a(p)}Object.defineProperty(_,"__esModule",{value:!0}),_.CsvParserStream=void 0;var r=e("string_decoder"),t=e("stream"),i=e("./transforms"),n=e("./parser"),o=function(p){h(C,p);var O=d(C);function C(N){var L;return g(this,C),L=O.call(this,{objectMode:N.objectMode}),L.lines="",L.rowCount=0,L.parsedRowCount=0,L.parsedLineCount=0,L.endEmitted=!1,L.headersEmitted=!1,L.parserOptions=N,L.parser=new n.Parser(N),L.headerTransformer=new i.HeaderTransformer(N),L.decoder=new r.StringDecoder(N.encoding),L.rowTransformerValidator=new i.RowTransformerValidator,L}return w(C,[{key:"transform",value:function(L){return this.rowTransformerValidator.rowTransform=L,this}},{key:"validate",value:function(L){return this.rowTransformerValidator.rowValidator=L,this}},{key:"emit",value:function(L){var F;if(L==="end")return this.endEmitted||(this.endEmitted=!0,f(a(C.prototype),"emit",this).call(this,"end",this.rowCount)),!1;for(var M=arguments.length,D=new Array(M>1?M-1:0),R=1;R=D||M.hasHitRowLimit)return F();if(M.parsedLineCount+=1,M.shouldSkipLine)return A();var z=L[E];M.rowCount+=1,M.parsedRowCount+=1;var W=M.rowCount;return M.transformRow(z,function($,U){if($)return M.rowCount-=1,A($);if(!U)return A(new Error("expected transform result"));if(!U.isValid)M.emit("data-invalid",U.row,W,U.reason);else if(U.row)return M.pushRow(U.row,A);return A()})};R(0)}},{key:"transformRow",value:function(L,F){var M=this;try{this.headerTransformer.transform(L,function(D,R){return D?F(D):R?R.isValid?R.row?M.shouldEmitRows?M.rowTransformerValidator.transformAndValidate(R.row,F):M.skipRow(F):(M.rowCount-=1,M.parsedRowCount-=1,F(null,{row:null,isValid:!0})):M.shouldEmitRows?F(null,{isValid:!1,row:L}):M.skipRow(F):F(new Error("Expected result from header transform"))})}catch(D){F(D)}}},{key:"checkAndEmitHeaders",value:function(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}},{key:"skipRow",value:function(L){return this.rowCount-=1,L(null,{row:null,isValid:!0})}},{key:"pushRow",value:function(L,F){try{this.parserOptions.objectMode?this.push(L):this.push(JSON.stringify(L)),F()}catch(M){F(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}(t.Transform);_.CsvParserStream=o}).call(this,e("timers").setImmediate)},{"./parser":162,"./transforms":165,stream:506,string_decoder:520,timers:521}],151:[function(e,x,_){function u(f,y){if(!(f instanceof y))throw new TypeError("Cannot call a class as a function")}var m=function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(_,"__esModule",{value:!0}),_.ParserOptions=void 0;var g=m(e("lodash.escaperegexp")),b=m(e("lodash.isnil")),w=function f(y){u(this,f);var h;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,y||{}),this.delimiter.length>1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=g.default(this.delimiter),this.escapeChar=(h=this.escape)!==null&&h!==void 0?h:this.quote,this.supportsComments=!b.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter,")")),this.maxRows>0&&(this.limitRows=!0)};_.ParserOptions=w},{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(e,x,_){var u=Object.create?function(s,v,c,a){a===void 0&&(a=c),Object.defineProperty(s,a,{enumerable:!0,get:function(){return v[c]}})}:function(s,v,c,a){a===void 0&&(a=c),s[a]=v[c]},m=Object.create?function(s,v){Object.defineProperty(s,"default",{enumerable:!0,value:v})}:function(s,v){s.default=v},g=function(s){if(s&&s.__esModule)return s;var v={};if(s!=null)for(var c in s)c!=="default"&&Object.hasOwnProperty.call(s,c)&&u(v,s,c);return m(v,s),v},b=function(s,v){for(var c in s)c!=="default"&&!v.hasOwnProperty(c)&&u(v,s,c)};Object.defineProperty(_,"__esModule",{value:!0}),_.parseString=_.parseFile=_.parseStream=_.parse=void 0;var w=g(e("fs")),f=e("stream"),y=e("./ParserOptions"),h=e("./CsvParserStream");b(e("./types"),_);var l=e("./CsvParserStream");Object.defineProperty(_,"CsvParserStream",{enumerable:!0,get:function(){return l.CsvParserStream}});var d=e("./ParserOptions");Object.defineProperty(_,"ParserOptions",{enumerable:!0,get:function(){return d.ParserOptions}}),_.parse=function(s){return new h.CsvParserStream(new y.ParserOptions(s))},_.parseStream=function(s,v){return s.pipe(new h.CsvParserStream(new y.ParserOptions(v)))},_.parseFile=function(s){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return w.createReadStream(s).pipe(new h.CsvParserStream(new y.ParserOptions(v)))},_.parseString=function(s,v){var c=new f.Readable;return c.push(s),c.push(null),c.pipe(new h.CsvParserStream(new y.ParserOptions(v)))}},{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,fs:215,stream:506}],153:[function(e,x,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;sthis.cursor}},{key:"nextNonSpaceToken",get:function(){var l=this.lineFromCursor,d=this.parserOptions.NEXT_TOKEN_REGEXP;if(l.search(d)===-1)return null;var s=d.exec(l);if(s==null)return null;var v=s[1],c=this.cursor+(s.index||0);return new b.Token({token:v,startCursor:c,endCursor:c+v.length-1})}},{key:"nextCharacterToken",get:function(){var l=this.cursor,d=this.lineLength;return d<=l?null:new b.Token({token:this.line[l],startCursor:l,endCursor:l})}},{key:"lineFromCursor",get:function(){return this.line.substr(this.cursor)}}]),y}();_.Scanner=f},{"./Token":156}],156:[function(e,x,_){function u(w,f){if(!(w instanceof f))throw new TypeError("Cannot call a class as a function")}function m(w,f){for(var y=0;ythis.headersLength){if(!c.strictColumnHandling)throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(v.length));return{row:v,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(v.length)}}return c.strictColumnHandling&&v.length1});throw new Error("Duplicate headers found ".concat(JSON.stringify(t)))}this.headers=v,this.receivedHeaders=!0,this.headersLength=((c=this.headers)===null||c===void 0?void 0:c.length)||0}}]),d}();_.HeaderTransformer=l},{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(e,x,_){function u(h,l){if(!(h instanceof l))throw new TypeError("Cannot call a class as a function")}function m(h,l){for(var d=0;d>6],a=(v&32)===0;if((v&31)===31){var r=v;for(v=0;(r&128)===128;){if(r=d.readUInt8(s),d.isError(r))return r;v<<=7,v|=r&127}}else v&=31;var t=w.tag[v];return{cls:c,primitive:a,tag:v,tagStr:t}}function l(d,s,v){var c=d.readUInt8(v);if(d.isError(c))return c;if(!s&&c===128)return null;if(!(c&128))return c;var a=c&127;if(a>4)return d.error("length octect is too long");c=0;for(var r=0;r=256;i>>=8)t++;var n=m.alloc(1+1+t);n[0]=a,n[1]=128|t;for(var o=1+t,p=c.length;p>0;o--,p>>=8)n[o]=p&255;return this._createEncoderBuffer([n,c])},f.prototype._encodeStr=function(d,s){if(s==="bitstr")return this._createEncoderBuffer([d.unused|0,d.data]);if(s==="bmpstr"){for(var v=m.alloc(d.length*2),c=0;c=40)return this.reporter.error("Second objid identifier OOB");d.splice(0,2,d[0]*40+d[1])}for(var r=0,t=0;t=128;i>>=7)r++}for(var n=m.alloc(r),o=n.length-1,p=d.length-1;p>=0;p--){var O=d[p];for(n[o--]=O&127;(O>>=7)>0;)n[o--]=128|O&127}return this._createEncoderBuffer(n)};function y(l){return l<10?"0"+l:l}f.prototype._encodeTime=function(d,s){var v,c=new Date(d);return s==="gentime"?v=[y(c.getUTCFullYear()),y(c.getUTCMonth()+1),y(c.getUTCDate()),y(c.getUTCHours()),y(c.getUTCMinutes()),y(c.getUTCSeconds()),"Z"].join(""):s==="utctime"?v=[y(c.getUTCFullYear()%100),y(c.getUTCMonth()+1),y(c.getUTCDate()),y(c.getUTCHours()),y(c.getUTCMinutes()),y(c.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+s+" time is not supported yet"),this._encodeStr(v,"octstr")},f.prototype._encodeNull=function(){return this._createEncoderBuffer("")},f.prototype._encodeInt=function(d,s){if(typeof d=="string"){if(!s)return this.reporter.error("String int or enum given, but no values map");if(!s.hasOwnProperty(d))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(d));d=s[d]}if(typeof d!="number"&&!m.isBuffer(d)){var v=d.toArray();!d.sign&&v[0]&128&&v.unshift(0),d=m.from(v)}if(m.isBuffer(d)){var c=d.length;d.length===0&&c++;var a=m.alloc(c);return d.copy(a),d.length===0&&(a[0]=0),this._createEncoderBuffer(a)}if(d<128)return this._createEncoderBuffer(d);if(d<256)return this._createEncoderBuffer([0,d]);for(var r=1,t=d;t>=256;t>>=8)r++;for(var i=new Array(r),n=i.length-1;n>=0;n--)i[n]=d&255,d>>=8;return i[0]&128&&i.unshift(0),this._createEncoderBuffer(m.from(i))},f.prototype._encodeBool=function(d){return this._createEncoderBuffer(d?255:0)},f.prototype._use=function(d,s){return typeof d=="function"&&(d=d(s)),d._getEncoder("der").tree},f.prototype._skipDefault=function(d,s,v){var c=this._baseState,a;if(c.default===null)return!1;var r=d.join();if(c.defaultBuffer===void 0&&(c.defaultBuffer=this._encodeValue(c.default,s,v).join()),r.length!==c.defaultBuffer.length)return!1;for(a=0;a=31?v.error("Multi-octet tag encoding unsupported"):(d||(c|=32),c|=b.tagClassByName[s||"universal"]<<6,c)}},{"../base/node":171,"../constants/der":173,inherits:387,"safer-buffer":495}],179:[function(e,x,_){var u=_;u.der=e("./der"),u.pem=e("./pem")},{"./der":178,"./pem":180}],180:[function(e,x,_){var u=e("inherits"),m=e("./der");function g(b){m.call(this,b),this.enc="pem"}u(g,m),x.exports=g,g.prototype.encode=function(w,f){for(var y=m.prototype.encode.call(this,w),h=y.toString("base64"),l=["-----BEGIN "+f.label+"-----"],d=0;d0?R:P},f.min=function(R,P){return R.cmp(P)<0?R:P},f.prototype._init=function(R,P,E){if(typeof R=="number")return this._initNumber(R,P,E);if(u(R)==="object")return this._initArray(R,P,E);P==="hex"&&(P=16),b(P===(P|0)&&P>=2&&P<=36),R=R.toString().replace(/\s+/g,"");var A=0;R[0]==="-"&&A++,P===16?this._parseHex(R,A):this._parseBase(R,P,A),R[0]==="-"&&(this.negative=1),this.strip(),E==="le"&&this._initArray(this.toArray(),P,E)},f.prototype._initNumber=function(R,P,E){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):(b(R<9007199254740992),this.words=[R&67108863,R/67108864&67108863,1],this.length=3),E==="le"&&this._initArray(this.toArray(),P,E)},f.prototype._initArray=function(R,P,E){if(b(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 A=0;A=0;A-=3)W=R[A]|R[A-1]<<8|R[A-2]<<16,this.words[z]|=W<<$&67108863,this.words[z+1]=W>>>26-$&67108863,$+=24,$>=26&&($-=26,z++);else if(E==="le")for(A=0,z=0;A>>26-$&67108863,$+=24,$>=26&&($-=26,z++);return this.strip()};function h(D,R,P){for(var E=0,A=Math.min(D.length,P),z=R;z=49&&W<=54?E|=W-49+10:W>=17&&W<=22?E|=W-17+10:E|=W&15}return E}f.prototype._parseHex=function(R,P){this.length=Math.ceil((R.length-P)/6),this.words=new Array(this.length);for(var E=0;E=P;E-=6)z=h(R,E,E+6),this.words[A]|=z<>>26-W&4194303,W+=24,W>=26&&(W-=26,A++);E+6!==P&&(z=h(R,P,E+6),this.words[A]|=z<>>26-W&4194303),this.strip()};function l(D,R,P,E){for(var A=0,z=Math.min(D.length,P),W=R;W=49?A+=$-49+10:$>=17?A+=$-17+10:A+=$}return A}f.prototype._parseBase=function(R,P,E){this.words=[0],this.length=1;for(var A=0,z=1;z<=67108863;z*=P)A++;A--,z=z/P|0;for(var W=R.length-E,$=W%A,U=Math.min(W,W-$)+E,I=0,j=E;j1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},f.prototype.inspect=function(){return(this.red?""};var d=["","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"],s=[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],v=[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];f.prototype.toString=function(R,P){R=R||10,P=P|0||1;var E;if(R===16||R==="hex"){E="";for(var A=0,z=0,W=0;W>>24-A&16777215,z!==0||W!==this.length-1?E=d[6-U.length]+U+E:E=U+E,A+=2,A>=26&&(A-=26,W--)}for(z!==0&&(E=z.toString(16)+E);E.length%P!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}if(R===(R|0)&&R>=2&&R<=36){var I=s[R],j=v[R];E="";var B=this.clone();for(B.negative=0;!B.isZero();){var V=B.modn(j).toString(R);B=B.idivn(j),B.isZero()?E=V+E:E=d[I-V.length]+V+E}for(this.isZero()&&(E="0"+E);E.length%P!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}b(!1,"Base should be between 2 and 36")},f.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&&b(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-R:R},f.prototype.toJSON=function(){return this.toString(16)},f.prototype.toBuffer=function(R,P){return b(typeof y<"u"),this.toArrayLike(y,R,P)},f.prototype.toArray=function(R,P){return this.toArrayLike(Array,R,P)},f.prototype.toArrayLike=function(R,P,E){var A=this.byteLength(),z=E||Math.max(1,A);b(A<=z,"byte array longer than desired length"),b(z>0,"Requested array length <= 0"),this.strip();var W=P==="le",$=new R(z),U,I,j=this.clone();if(W){for(I=0;!j.isZero();I++)U=j.andln(255),j.iushrn(8),$[I]=U;for(;I=4096&&(E+=13,P>>>=13),P>=64&&(E+=7,P>>>=7),P>=8&&(E+=4,P>>>=4),P>=2&&(E+=2,P>>>=2),E+P},f.prototype._zeroBits=function(R){if(R===0)return 26;var P=R,E=0;return P&8191||(E+=13,P>>>=13),P&127||(E+=7,P>>>=7),P&15||(E+=4,P>>>=4),P&3||(E+=2,P>>>=2),P&1||E++,E},f.prototype.bitLength=function(){var R=this.words[this.length-1],P=this._countBits(R);return(this.length-1)*26+P};function c(D){for(var R=new Array(D.bitLength()),P=0;P>>A}return R}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var R=0,P=0;PR.length?this.clone().ior(R):R.clone().ior(this)},f.prototype.uor=function(R){return this.length>R.length?this.clone().iuor(R):R.clone().iuor(this)},f.prototype.iuand=function(R){var P;this.length>R.length?P=R:P=this;for(var E=0;ER.length?this.clone().iand(R):R.clone().iand(this)},f.prototype.uand=function(R){return this.length>R.length?this.clone().iuand(R):R.clone().iuand(this)},f.prototype.iuxor=function(R){var P,E;this.length>R.length?(P=this,E=R):(P=R,E=this);for(var A=0;AR.length?this.clone().ixor(R):R.clone().ixor(this)},f.prototype.uxor=function(R){return this.length>R.length?this.clone().iuxor(R):R.clone().iuxor(this)},f.prototype.inotn=function(R){b(typeof R=="number"&&R>=0);var P=Math.ceil(R/26)|0,E=R%26;this._expand(P),E>0&&P--;for(var A=0;A0&&(this.words[A]=~this.words[A]&67108863>>26-E),this.strip()},f.prototype.notn=function(R){return this.clone().inotn(R)},f.prototype.setn=function(R,P){b(typeof R=="number"&&R>=0);var E=R/26|0,A=R%26;return this._expand(E+1),P?this.words[E]=this.words[E]|1<R.length?(E=this,A=R):(E=R,A=this);for(var z=0,W=0;W>>26;for(;z!==0&&W>>26;if(this.length=E.length,z!==0)this.words[this.length]=z,this.length++;else if(E!==this)for(;WR.length?this.clone().iadd(R):R.clone().iadd(this)},f.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 E=this.cmp(R);if(E===0)return this.negative=0,this.length=1,this.words[0]=0,this;var A,z;E>0?(A=this,z=R):(A=R,z=this);for(var W=0,$=0;$>26,this.words[$]=P&67108863;for(;W!==0&&$>26,this.words[$]=P&67108863;if(W===0&&$>>26,B=U&67108863,V=Math.min(I,R.length-1),te=Math.max(0,I-D.length+1);te<=V;te++){var ie=I-te|0;A=D.words[ie]|0,z=R.words[te]|0,W=A*z+B,j+=W/67108864|0,B=W&67108863}P.words[I]=B|0,U=j|0}return U!==0?P.words[I]=U|0:P.length--,P.strip()}var r=function(R,P,E){var A=R.words,z=P.words,W=E.words,$=0,U,I,j,B=A[0]|0,V=B&8191,te=B>>>13,ie=A[1]|0,ce=ie&8191,be=ie>>>13,_e=A[2]|0,oe=_e&8191,J=_e>>>13,Q=A[3]|0,he=Q&8191,ke=Q>>>13,re=A[4]|0,se=re&8191,Ce=re>>>13,q=A[5]|0,G=q&8191,Z=q>>>13,fe=A[6]|0,we=fe&8191,ge=fe>>>13,je=A[7]|0,Ze=je&8191,nt=je>>>13,ut=A[8]|0,ot=ut&8191,Ue=ut>>>13,Ve=A[9]|0,Qe=Ve&8191,tt=Ve>>>13,ae=z[0]|0,Re=ae&8191,me=ae>>>13,Ee=z[1]|0,pe=Ee&8191,Pe=Ee>>>13,ee=z[2]|0,Xe=ee&8191,it=ee>>>13,K=z[3]|0,Me=K&8191,Le=K>>>13,ue=z[4]|0,Se=ue&8191,Ie=ue>>>13,st=z[5]|0,Ge=st&8191,rt=st>>>13,_t=z[6]|0,wt=_t&8191,Ot=_t>>>13,pt=z[7]|0,ct=pt&8191,At=pt>>>13,Pt=z[8]|0,bt=Pt&8191,Kt=Pt>>>13,Ct=z[9]|0,xt=Ct&8191,Ft=Ct>>>13;E.negative=R.negative^P.negative,E.length=19,U=Math.imul(V,Re),I=Math.imul(V,me),I=I+Math.imul(te,Re)|0,j=Math.imul(te,me);var Lt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,U=Math.imul(ce,Re),I=Math.imul(ce,me),I=I+Math.imul(be,Re)|0,j=Math.imul(be,me),U=U+Math.imul(V,pe)|0,I=I+Math.imul(V,Pe)|0,I=I+Math.imul(te,pe)|0,j=j+Math.imul(te,Pe)|0;var Et=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Et>>>26)|0,Et&=67108863,U=Math.imul(oe,Re),I=Math.imul(oe,me),I=I+Math.imul(J,Re)|0,j=Math.imul(J,me),U=U+Math.imul(ce,pe)|0,I=I+Math.imul(ce,Pe)|0,I=I+Math.imul(be,pe)|0,j=j+Math.imul(be,Pe)|0,U=U+Math.imul(V,Xe)|0,I=I+Math.imul(V,it)|0,I=I+Math.imul(te,Xe)|0,j=j+Math.imul(te,it)|0;var Dr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Dr>>>26)|0,Dr&=67108863,U=Math.imul(he,Re),I=Math.imul(he,me),I=I+Math.imul(ke,Re)|0,j=Math.imul(ke,me),U=U+Math.imul(oe,pe)|0,I=I+Math.imul(oe,Pe)|0,I=I+Math.imul(J,pe)|0,j=j+Math.imul(J,Pe)|0,U=U+Math.imul(ce,Xe)|0,I=I+Math.imul(ce,it)|0,I=I+Math.imul(be,Xe)|0,j=j+Math.imul(be,it)|0,U=U+Math.imul(V,Me)|0,I=I+Math.imul(V,Le)|0,I=I+Math.imul(te,Me)|0,j=j+Math.imul(te,Le)|0;var Or=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Or>>>26)|0,Or&=67108863,U=Math.imul(se,Re),I=Math.imul(se,me),I=I+Math.imul(Ce,Re)|0,j=Math.imul(Ce,me),U=U+Math.imul(he,pe)|0,I=I+Math.imul(he,Pe)|0,I=I+Math.imul(ke,pe)|0,j=j+Math.imul(ke,Pe)|0,U=U+Math.imul(oe,Xe)|0,I=I+Math.imul(oe,it)|0,I=I+Math.imul(J,Xe)|0,j=j+Math.imul(J,it)|0,U=U+Math.imul(ce,Me)|0,I=I+Math.imul(ce,Le)|0,I=I+Math.imul(be,Me)|0,j=j+Math.imul(be,Le)|0,U=U+Math.imul(V,Se)|0,I=I+Math.imul(V,Ie)|0,I=I+Math.imul(te,Se)|0,j=j+Math.imul(te,Ie)|0;var Gr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,U=Math.imul(G,Re),I=Math.imul(G,me),I=I+Math.imul(Z,Re)|0,j=Math.imul(Z,me),U=U+Math.imul(se,pe)|0,I=I+Math.imul(se,Pe)|0,I=I+Math.imul(Ce,pe)|0,j=j+Math.imul(Ce,Pe)|0,U=U+Math.imul(he,Xe)|0,I=I+Math.imul(he,it)|0,I=I+Math.imul(ke,Xe)|0,j=j+Math.imul(ke,it)|0,U=U+Math.imul(oe,Me)|0,I=I+Math.imul(oe,Le)|0,I=I+Math.imul(J,Me)|0,j=j+Math.imul(J,Le)|0,U=U+Math.imul(ce,Se)|0,I=I+Math.imul(ce,Ie)|0,I=I+Math.imul(be,Se)|0,j=j+Math.imul(be,Ie)|0,U=U+Math.imul(V,Ge)|0,I=I+Math.imul(V,rt)|0,I=I+Math.imul(te,Ge)|0,j=j+Math.imul(te,rt)|0;var Nr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,U=Math.imul(we,Re),I=Math.imul(we,me),I=I+Math.imul(ge,Re)|0,j=Math.imul(ge,me),U=U+Math.imul(G,pe)|0,I=I+Math.imul(G,Pe)|0,I=I+Math.imul(Z,pe)|0,j=j+Math.imul(Z,Pe)|0,U=U+Math.imul(se,Xe)|0,I=I+Math.imul(se,it)|0,I=I+Math.imul(Ce,Xe)|0,j=j+Math.imul(Ce,it)|0,U=U+Math.imul(he,Me)|0,I=I+Math.imul(he,Le)|0,I=I+Math.imul(ke,Me)|0,j=j+Math.imul(ke,Le)|0,U=U+Math.imul(oe,Se)|0,I=I+Math.imul(oe,Ie)|0,I=I+Math.imul(J,Se)|0,j=j+Math.imul(J,Ie)|0,U=U+Math.imul(ce,Ge)|0,I=I+Math.imul(ce,rt)|0,I=I+Math.imul(be,Ge)|0,j=j+Math.imul(be,rt)|0,U=U+Math.imul(V,wt)|0,I=I+Math.imul(V,Ot)|0,I=I+Math.imul(te,wt)|0,j=j+Math.imul(te,Ot)|0;var Zr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,U=Math.imul(Ze,Re),I=Math.imul(Ze,me),I=I+Math.imul(nt,Re)|0,j=Math.imul(nt,me),U=U+Math.imul(we,pe)|0,I=I+Math.imul(we,Pe)|0,I=I+Math.imul(ge,pe)|0,j=j+Math.imul(ge,Pe)|0,U=U+Math.imul(G,Xe)|0,I=I+Math.imul(G,it)|0,I=I+Math.imul(Z,Xe)|0,j=j+Math.imul(Z,it)|0,U=U+Math.imul(se,Me)|0,I=I+Math.imul(se,Le)|0,I=I+Math.imul(Ce,Me)|0,j=j+Math.imul(Ce,Le)|0,U=U+Math.imul(he,Se)|0,I=I+Math.imul(he,Ie)|0,I=I+Math.imul(ke,Se)|0,j=j+Math.imul(ke,Ie)|0,U=U+Math.imul(oe,Ge)|0,I=I+Math.imul(oe,rt)|0,I=I+Math.imul(J,Ge)|0,j=j+Math.imul(J,rt)|0,U=U+Math.imul(ce,wt)|0,I=I+Math.imul(ce,Ot)|0,I=I+Math.imul(be,wt)|0,j=j+Math.imul(be,Ot)|0,U=U+Math.imul(V,ct)|0,I=I+Math.imul(V,At)|0,I=I+Math.imul(te,ct)|0,j=j+Math.imul(te,At)|0;var Qt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,U=Math.imul(ot,Re),I=Math.imul(ot,me),I=I+Math.imul(Ue,Re)|0,j=Math.imul(Ue,me),U=U+Math.imul(Ze,pe)|0,I=I+Math.imul(Ze,Pe)|0,I=I+Math.imul(nt,pe)|0,j=j+Math.imul(nt,Pe)|0,U=U+Math.imul(we,Xe)|0,I=I+Math.imul(we,it)|0,I=I+Math.imul(ge,Xe)|0,j=j+Math.imul(ge,it)|0,U=U+Math.imul(G,Me)|0,I=I+Math.imul(G,Le)|0,I=I+Math.imul(Z,Me)|0,j=j+Math.imul(Z,Le)|0,U=U+Math.imul(se,Se)|0,I=I+Math.imul(se,Ie)|0,I=I+Math.imul(Ce,Se)|0,j=j+Math.imul(Ce,Ie)|0,U=U+Math.imul(he,Ge)|0,I=I+Math.imul(he,rt)|0,I=I+Math.imul(ke,Ge)|0,j=j+Math.imul(ke,rt)|0,U=U+Math.imul(oe,wt)|0,I=I+Math.imul(oe,Ot)|0,I=I+Math.imul(J,wt)|0,j=j+Math.imul(J,Ot)|0,U=U+Math.imul(ce,ct)|0,I=I+Math.imul(ce,At)|0,I=I+Math.imul(be,ct)|0,j=j+Math.imul(be,At)|0,U=U+Math.imul(V,bt)|0,I=I+Math.imul(V,Kt)|0,I=I+Math.imul(te,bt)|0,j=j+Math.imul(te,Kt)|0;var Hr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,U=Math.imul(Qe,Re),I=Math.imul(Qe,me),I=I+Math.imul(tt,Re)|0,j=Math.imul(tt,me),U=U+Math.imul(ot,pe)|0,I=I+Math.imul(ot,Pe)|0,I=I+Math.imul(Ue,pe)|0,j=j+Math.imul(Ue,Pe)|0,U=U+Math.imul(Ze,Xe)|0,I=I+Math.imul(Ze,it)|0,I=I+Math.imul(nt,Xe)|0,j=j+Math.imul(nt,it)|0,U=U+Math.imul(we,Me)|0,I=I+Math.imul(we,Le)|0,I=I+Math.imul(ge,Me)|0,j=j+Math.imul(ge,Le)|0,U=U+Math.imul(G,Se)|0,I=I+Math.imul(G,Ie)|0,I=I+Math.imul(Z,Se)|0,j=j+Math.imul(Z,Ie)|0,U=U+Math.imul(se,Ge)|0,I=I+Math.imul(se,rt)|0,I=I+Math.imul(Ce,Ge)|0,j=j+Math.imul(Ce,rt)|0,U=U+Math.imul(he,wt)|0,I=I+Math.imul(he,Ot)|0,I=I+Math.imul(ke,wt)|0,j=j+Math.imul(ke,Ot)|0,U=U+Math.imul(oe,ct)|0,I=I+Math.imul(oe,At)|0,I=I+Math.imul(J,ct)|0,j=j+Math.imul(J,At)|0,U=U+Math.imul(ce,bt)|0,I=I+Math.imul(ce,Kt)|0,I=I+Math.imul(be,bt)|0,j=j+Math.imul(be,Kt)|0,U=U+Math.imul(V,xt)|0,I=I+Math.imul(V,Ft)|0,I=I+Math.imul(te,xt)|0,j=j+Math.imul(te,Ft)|0;var Fr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,U=Math.imul(Qe,pe),I=Math.imul(Qe,Pe),I=I+Math.imul(tt,pe)|0,j=Math.imul(tt,Pe),U=U+Math.imul(ot,Xe)|0,I=I+Math.imul(ot,it)|0,I=I+Math.imul(Ue,Xe)|0,j=j+Math.imul(Ue,it)|0,U=U+Math.imul(Ze,Me)|0,I=I+Math.imul(Ze,Le)|0,I=I+Math.imul(nt,Me)|0,j=j+Math.imul(nt,Le)|0,U=U+Math.imul(we,Se)|0,I=I+Math.imul(we,Ie)|0,I=I+Math.imul(ge,Se)|0,j=j+Math.imul(ge,Ie)|0,U=U+Math.imul(G,Ge)|0,I=I+Math.imul(G,rt)|0,I=I+Math.imul(Z,Ge)|0,j=j+Math.imul(Z,rt)|0,U=U+Math.imul(se,wt)|0,I=I+Math.imul(se,Ot)|0,I=I+Math.imul(Ce,wt)|0,j=j+Math.imul(Ce,Ot)|0,U=U+Math.imul(he,ct)|0,I=I+Math.imul(he,At)|0,I=I+Math.imul(ke,ct)|0,j=j+Math.imul(ke,At)|0,U=U+Math.imul(oe,bt)|0,I=I+Math.imul(oe,Kt)|0,I=I+Math.imul(J,bt)|0,j=j+Math.imul(J,Kt)|0,U=U+Math.imul(ce,xt)|0,I=I+Math.imul(ce,Ft)|0,I=I+Math.imul(be,xt)|0,j=j+Math.imul(be,Ft)|0;var Lr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Lr>>>26)|0,Lr&=67108863,U=Math.imul(Qe,Xe),I=Math.imul(Qe,it),I=I+Math.imul(tt,Xe)|0,j=Math.imul(tt,it),U=U+Math.imul(ot,Me)|0,I=I+Math.imul(ot,Le)|0,I=I+Math.imul(Ue,Me)|0,j=j+Math.imul(Ue,Le)|0,U=U+Math.imul(Ze,Se)|0,I=I+Math.imul(Ze,Ie)|0,I=I+Math.imul(nt,Se)|0,j=j+Math.imul(nt,Ie)|0,U=U+Math.imul(we,Ge)|0,I=I+Math.imul(we,rt)|0,I=I+Math.imul(ge,Ge)|0,j=j+Math.imul(ge,rt)|0,U=U+Math.imul(G,wt)|0,I=I+Math.imul(G,Ot)|0,I=I+Math.imul(Z,wt)|0,j=j+Math.imul(Z,Ot)|0,U=U+Math.imul(se,ct)|0,I=I+Math.imul(se,At)|0,I=I+Math.imul(Ce,ct)|0,j=j+Math.imul(Ce,At)|0,U=U+Math.imul(he,bt)|0,I=I+Math.imul(he,Kt)|0,I=I+Math.imul(ke,bt)|0,j=j+Math.imul(ke,Kt)|0,U=U+Math.imul(oe,xt)|0,I=I+Math.imul(oe,Ft)|0,I=I+Math.imul(J,xt)|0,j=j+Math.imul(J,Ft)|0;var Ur=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Ur>>>26)|0,Ur&=67108863,U=Math.imul(Qe,Me),I=Math.imul(Qe,Le),I=I+Math.imul(tt,Me)|0,j=Math.imul(tt,Le),U=U+Math.imul(ot,Se)|0,I=I+Math.imul(ot,Ie)|0,I=I+Math.imul(Ue,Se)|0,j=j+Math.imul(Ue,Ie)|0,U=U+Math.imul(Ze,Ge)|0,I=I+Math.imul(Ze,rt)|0,I=I+Math.imul(nt,Ge)|0,j=j+Math.imul(nt,rt)|0,U=U+Math.imul(we,wt)|0,I=I+Math.imul(we,Ot)|0,I=I+Math.imul(ge,wt)|0,j=j+Math.imul(ge,Ot)|0,U=U+Math.imul(G,ct)|0,I=I+Math.imul(G,At)|0,I=I+Math.imul(Z,ct)|0,j=j+Math.imul(Z,At)|0,U=U+Math.imul(se,bt)|0,I=I+Math.imul(se,Kt)|0,I=I+Math.imul(Ce,bt)|0,j=j+Math.imul(Ce,Kt)|0,U=U+Math.imul(he,xt)|0,I=I+Math.imul(he,Ft)|0,I=I+Math.imul(ke,xt)|0,j=j+Math.imul(ke,Ft)|0;var vt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(vt>>>26)|0,vt&=67108863,U=Math.imul(Qe,Se),I=Math.imul(Qe,Ie),I=I+Math.imul(tt,Se)|0,j=Math.imul(tt,Ie),U=U+Math.imul(ot,Ge)|0,I=I+Math.imul(ot,rt)|0,I=I+Math.imul(Ue,Ge)|0,j=j+Math.imul(Ue,rt)|0,U=U+Math.imul(Ze,wt)|0,I=I+Math.imul(Ze,Ot)|0,I=I+Math.imul(nt,wt)|0,j=j+Math.imul(nt,Ot)|0,U=U+Math.imul(we,ct)|0,I=I+Math.imul(we,At)|0,I=I+Math.imul(ge,ct)|0,j=j+Math.imul(ge,At)|0,U=U+Math.imul(G,bt)|0,I=I+Math.imul(G,Kt)|0,I=I+Math.imul(Z,bt)|0,j=j+Math.imul(Z,Kt)|0,U=U+Math.imul(se,xt)|0,I=I+Math.imul(se,Ft)|0,I=I+Math.imul(Ce,xt)|0,j=j+Math.imul(Ce,Ft)|0;var Ke=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,U=Math.imul(Qe,Ge),I=Math.imul(Qe,rt),I=I+Math.imul(tt,Ge)|0,j=Math.imul(tt,rt),U=U+Math.imul(ot,wt)|0,I=I+Math.imul(ot,Ot)|0,I=I+Math.imul(Ue,wt)|0,j=j+Math.imul(Ue,Ot)|0,U=U+Math.imul(Ze,ct)|0,I=I+Math.imul(Ze,At)|0,I=I+Math.imul(nt,ct)|0,j=j+Math.imul(nt,At)|0,U=U+Math.imul(we,bt)|0,I=I+Math.imul(we,Kt)|0,I=I+Math.imul(ge,bt)|0,j=j+Math.imul(ge,Kt)|0,U=U+Math.imul(G,xt)|0,I=I+Math.imul(G,Ft)|0,I=I+Math.imul(Z,xt)|0,j=j+Math.imul(Z,Ft)|0;var ve=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(ve>>>26)|0,ve&=67108863,U=Math.imul(Qe,wt),I=Math.imul(Qe,Ot),I=I+Math.imul(tt,wt)|0,j=Math.imul(tt,Ot),U=U+Math.imul(ot,ct)|0,I=I+Math.imul(ot,At)|0,I=I+Math.imul(Ue,ct)|0,j=j+Math.imul(Ue,At)|0,U=U+Math.imul(Ze,bt)|0,I=I+Math.imul(Ze,Kt)|0,I=I+Math.imul(nt,bt)|0,j=j+Math.imul(nt,Kt)|0,U=U+Math.imul(we,xt)|0,I=I+Math.imul(we,Ft)|0,I=I+Math.imul(ge,xt)|0,j=j+Math.imul(ge,Ft)|0;var Fe=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,U=Math.imul(Qe,ct),I=Math.imul(Qe,At),I=I+Math.imul(tt,ct)|0,j=Math.imul(tt,At),U=U+Math.imul(ot,bt)|0,I=I+Math.imul(ot,Kt)|0,I=I+Math.imul(Ue,bt)|0,j=j+Math.imul(Ue,Kt)|0,U=U+Math.imul(Ze,xt)|0,I=I+Math.imul(Ze,Ft)|0,I=I+Math.imul(nt,xt)|0,j=j+Math.imul(nt,Ft)|0;var Be=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Be>>>26)|0,Be&=67108863,U=Math.imul(Qe,bt),I=Math.imul(Qe,Kt),I=I+Math.imul(tt,bt)|0,j=Math.imul(tt,Kt),U=U+Math.imul(ot,xt)|0,I=I+Math.imul(ot,Ft)|0,I=I+Math.imul(Ue,xt)|0,j=j+Math.imul(Ue,Ft)|0;var dt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(dt>>>26)|0,dt&=67108863,U=Math.imul(Qe,xt),I=Math.imul(Qe,Ft),I=I+Math.imul(tt,xt)|0,j=Math.imul(tt,Ft);var St=($+U|0)+((I&8191)<<13)|0;return $=(j+(I>>>13)|0)+(St>>>26)|0,St&=67108863,W[0]=Lt,W[1]=Et,W[2]=Dr,W[3]=Or,W[4]=Gr,W[5]=Nr,W[6]=Zr,W[7]=Qt,W[8]=Hr,W[9]=Fr,W[10]=Lr,W[11]=Ur,W[12]=vt,W[13]=Ke,W[14]=ve,W[15]=Fe,W[16]=Be,W[17]=dt,W[18]=St,$!==0&&(W[19]=$,E.length++),E};Math.imul||(r=a);function t(D,R,P){P.negative=R.negative^D.negative,P.length=D.length+R.length;for(var E=0,A=0,z=0;z>>26)|0,A+=W>>>26,W&=67108863}P.words[z]=$,E=W,W=A}return E!==0?P.words[z]=E:P.length--,P.strip()}function i(D,R,P){var E=new n;return E.mulp(D,R,P)}f.prototype.mulTo=function(R,P){var E,A=this.length+R.length;return this.length===10&&R.length===10?E=r(this,R,P):A<63?E=a(this,R,P):A<1024?E=t(this,R,P):E=i(this,R,P),E};function n(D,R){this.x=D,this.y=R}n.prototype.makeRBT=function(R){for(var P=new Array(R),E=f.prototype._countBits(R)-1,A=0;A>=1;return A},n.prototype.permute=function(R,P,E,A,z,W){for(var $=0;$>>1)z++;return 1<>>13,E[2*W+1]=z&8191,z=z>>>13;for(W=2*P;W>=26,P+=A/67108864|0,P+=z>>>26,this.words[E]=z&67108863}return P!==0&&(this.words[E]=P,this.length++),this},f.prototype.muln=function(R){return this.clone().imuln(R)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(R){var P=c(R);if(P.length===0)return new f(1);for(var E=this,A=0;A=0);var P=R%26,E=(R-P)/26,A=67108863>>>26-P<<26-P,z;if(P!==0){var W=0;for(z=0;z>>26-P}W&&(this.words[z]=W,this.length++)}if(E!==0){for(z=this.length-1;z>=0;z--)this.words[z+E]=this.words[z];for(z=0;z=0);var A;P?A=(P-P%26)/26:A=0;var z=R%26,W=Math.min((R-z)/26,this.length),$=67108863^67108863>>>z<W)for(this.length-=W,I=0;I=0&&(j!==0||I>=A);I--){var B=this.words[I]|0;this.words[I]=j<<26-z|B>>>z,j=B&$}return U&&j!==0&&(U.words[U.length++]=j),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},f.prototype.ishrn=function(R,P,E){return b(this.negative===0),this.iushrn(R,P,E)},f.prototype.shln=function(R){return this.clone().ishln(R)},f.prototype.ushln=function(R){return this.clone().iushln(R)},f.prototype.shrn=function(R){return this.clone().ishrn(R)},f.prototype.ushrn=function(R){return this.clone().iushrn(R)},f.prototype.testn=function(R){b(typeof R=="number"&&R>=0);var P=R%26,E=(R-P)/26,A=1<=0);var P=R%26,E=(R-P)/26;if(b(this.negative===0,"imaskn works only with positive numbers"),this.length<=E)return this;if(P!==0&&E++,this.length=Math.min(E,this.length),P!==0){var A=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},f.prototype.isubn=function(R){if(b(typeof R=="number"),b(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)-(U/67108864|0),this.words[z+E]=W&67108863}for(;z>26,this.words[z+E]=W&67108863;if($===0)return this.strip();for(b($===-1),$=0,z=0;z>26,this.words[z]=W&67108863;return this.negative=1,this.strip()},f.prototype._wordDiv=function(R,P){var E=this.length-R.length,A=this.clone(),z=R,W=z.words[z.length-1]|0,$=this._countBits(W);E=26-$,E!==0&&(z=z.ushln(E),A.iushln(E),W=z.words[z.length-1]|0);var U=A.length-z.length,I;if(P!=="mod"){I=new f(null),I.length=U+1,I.words=new Array(I.length);for(var j=0;j=0;V--){var te=(A.words[z.length+V]|0)*67108864+(A.words[z.length+V-1]|0);for(te=Math.min(te/W|0,67108863),A._ishlnsubmul(z,te,V);A.negative!==0;)te--,A.negative=0,A._ishlnsubmul(z,1,V),A.isZero()||(A.negative^=1);I&&(I.words[V]=te)}return I&&I.strip(),A.strip(),P!=="div"&&E!==0&&A.iushrn(E),{div:I||null,mod:A}},f.prototype.divmod=function(R,P,E){if(b(!R.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var A,z,W;return this.negative!==0&&R.negative===0?(W=this.neg().divmod(R,P),P!=="mod"&&(A=W.div.neg()),P!=="div"&&(z=W.mod.neg(),E&&z.negative!==0&&z.iadd(R)),{div:A,mod:z}):this.negative===0&&R.negative!==0?(W=this.divmod(R.neg(),P),P!=="mod"&&(A=W.div.neg()),{div:A,mod:W.mod}):this.negative&R.negative?(W=this.neg().divmod(R.neg(),P),P!=="div"&&(z=W.mod.neg(),E&&z.negative!==0&&z.isub(R)),{div:W.div,mod:z}):R.length>this.length||this.cmp(R)<0?{div:new f(0),mod:this}:R.length===1?P==="div"?{div:this.divn(R.words[0]),mod:null}:P==="mod"?{div:null,mod:new f(this.modn(R.words[0]))}:{div:this.divn(R.words[0]),mod:new f(this.modn(R.words[0]))}:this._wordDiv(R,P)},f.prototype.div=function(R){return this.divmod(R,"div",!1).div},f.prototype.mod=function(R){return this.divmod(R,"mod",!1).mod},f.prototype.umod=function(R){return this.divmod(R,"mod",!0).mod},f.prototype.divRound=function(R){var P=this.divmod(R);if(P.mod.isZero())return P.div;var E=P.div.negative!==0?P.mod.isub(R):P.mod,A=R.ushrn(1),z=R.andln(1),W=E.cmp(A);return W<0||z===1&&W===0?P.div:P.div.negative!==0?P.div.isubn(1):P.div.iaddn(1)},f.prototype.modn=function(R){b(R<=67108863);for(var P=(1<<26)%R,E=0,A=this.length-1;A>=0;A--)E=(P*E+(this.words[A]|0))%R;return E},f.prototype.idivn=function(R){b(R<=67108863);for(var P=0,E=this.length-1;E>=0;E--){var A=(this.words[E]|0)+P*67108864;this.words[E]=A/R|0,P=A%R}return this.strip()},f.prototype.divn=function(R){return this.clone().idivn(R)},f.prototype.egcd=function(R){b(R.negative===0),b(!R.isZero());var P=this,E=R.clone();P.negative!==0?P=P.umod(R):P=P.clone();for(var A=new f(1),z=new f(0),W=new f(0),$=new f(1),U=0;P.isEven()&&E.isEven();)P.iushrn(1),E.iushrn(1),++U;for(var I=E.clone(),j=P.clone();!P.isZero();){for(var B=0,V=1;!(P.words[0]&V)&&B<26;++B,V<<=1);if(B>0)for(P.iushrn(B);B-- >0;)(A.isOdd()||z.isOdd())&&(A.iadd(I),z.isub(j)),A.iushrn(1),z.iushrn(1);for(var te=0,ie=1;!(E.words[0]&ie)&&te<26;++te,ie<<=1);if(te>0)for(E.iushrn(te);te-- >0;)(W.isOdd()||$.isOdd())&&(W.iadd(I),$.isub(j)),W.iushrn(1),$.iushrn(1);P.cmp(E)>=0?(P.isub(E),A.isub(W),z.isub($)):(E.isub(P),W.isub(A),$.isub(z))}return{a:W,b:$,gcd:E.iushln(U)}},f.prototype._invmp=function(R){b(R.negative===0),b(!R.isZero());var P=this,E=R.clone();P.negative!==0?P=P.umod(R):P=P.clone();for(var A=new f(1),z=new f(0),W=E.clone();P.cmpn(1)>0&&E.cmpn(1)>0;){for(var $=0,U=1;!(P.words[0]&U)&&$<26;++$,U<<=1);if($>0)for(P.iushrn($);$-- >0;)A.isOdd()&&A.iadd(W),A.iushrn(1);for(var I=0,j=1;!(E.words[0]&j)&&I<26;++I,j<<=1);if(I>0)for(E.iushrn(I);I-- >0;)z.isOdd()&&z.iadd(W),z.iushrn(1);P.cmp(E)>=0?(P.isub(E),A.isub(z)):(E.isub(P),z.isub(A))}var B;return P.cmpn(1)===0?B=A:B=z,B.cmpn(0)<0&&B.iadd(R),B},f.prototype.gcd=function(R){if(this.isZero())return R.abs();if(R.isZero())return this.abs();var P=this.clone(),E=R.clone();P.negative=0,E.negative=0;for(var A=0;P.isEven()&&E.isEven();A++)P.iushrn(1),E.iushrn(1);do{for(;P.isEven();)P.iushrn(1);for(;E.isEven();)E.iushrn(1);var z=P.cmp(E);if(z<0){var W=P;P=E,E=W}else if(z===0||E.cmpn(1)===0)break;P.isub(E)}while(!0);return E.iushln(A)},f.prototype.invm=function(R){return this.egcd(R).a.umod(R)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(R){return this.words[0]&R},f.prototype.bincn=function(R){b(typeof R=="number");var P=R%26,E=(R-P)/26,A=1<>>26,$&=67108863,this.words[W]=$}return z!==0&&(this.words[W]=z,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.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 E;if(this.length>1)E=1;else{P&&(R=-R),b(R<=67108863,"Number is too big");var A=this.words[0]|0;E=A===R?0:AR.length)return 1;if(this.length=0;E--){var A=this.words[E]|0,z=R.words[E]|0;if(A!==z){Az&&(P=1);break}}return P},f.prototype.gtn=function(R){return this.cmpn(R)===1},f.prototype.gt=function(R){return this.cmp(R)===1},f.prototype.gten=function(R){return this.cmpn(R)>=0},f.prototype.gte=function(R){return this.cmp(R)>=0},f.prototype.ltn=function(R){return this.cmpn(R)===-1},f.prototype.lt=function(R){return this.cmp(R)===-1},f.prototype.lten=function(R){return this.cmpn(R)<=0},f.prototype.lte=function(R){return this.cmp(R)<=0},f.prototype.eqn=function(R){return this.cmpn(R)===0},f.prototype.eq=function(R){return this.cmp(R)===0},f.red=function(R){return new F(R)},f.prototype.toRed=function(R){return b(!this.red,"Already a number in reduction context"),b(this.negative===0,"red works only with positives"),R.convertTo(this)._forceRed(R)},f.prototype.fromRed=function(){return b(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(R){return this.red=R,this},f.prototype.forceRed=function(R){return b(!this.red,"Already a number in reduction context"),this._forceRed(R)},f.prototype.redAdd=function(R){return b(this.red,"redAdd works only with red numbers"),this.red.add(this,R)},f.prototype.redIAdd=function(R){return b(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,R)},f.prototype.redSub=function(R){return b(this.red,"redSub works only with red numbers"),this.red.sub(this,R)},f.prototype.redISub=function(R){return b(this.red,"redISub works only with red numbers"),this.red.isub(this,R)},f.prototype.redShl=function(R){return b(this.red,"redShl works only with red numbers"),this.red.shl(this,R)},f.prototype.redMul=function(R){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,R),this.red.mul(this,R)},f.prototype.redIMul=function(R){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,R),this.red.imul(this,R)},f.prototype.redSqr=function(){return b(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return b(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return b(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return b(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return b(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(R){return b(this.red&&!R.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,R)};var o={k256:null,p224:null,p192:null,p25519:null};function p(D,R){this.name=D,this.p=new f(R,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}p.prototype._tmp=function(){var R=new f(null);return R.words=new Array(Math.ceil(this.n/13)),R},p.prototype.ireduce=function(R){var P=R,E;do this.split(P,this.tmp),P=this.imulK(P),P=P.iadd(this.tmp),E=P.bitLength();while(E>this.n);var A=E0?P.isub(this.p):P.strip!==void 0?P.strip():P._strip(),P},p.prototype.split=function(R,P){R.iushrn(this.n,0,P)},p.prototype.imulK=function(R){return R.imul(this.k)};function O(){p.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}w(O,p),O.prototype.split=function(R,P){for(var E=4194303,A=Math.min(R.length,9),z=0;z>>22,W=$}W>>>=22,R.words[z-10]=W,W===0&&R.length>10?R.length-=10:R.length-=9},O.prototype.imulK=function(R){R.words[R.length]=0,R.words[R.length+1]=0,R.length+=2;for(var P=0,E=0;E>>=26,R.words[E]=z,P=A}return P!==0&&(R.words[R.length++]=P),R},f._prime=function(R){if(o[R])return o[R];var P;if(R==="k256")P=new O;else if(R==="p224")P=new C;else if(R==="p192")P=new N;else if(R==="p25519")P=new L;else throw new Error("Unknown prime "+R);return o[R]=P,P};function F(D){if(typeof D=="string"){var R=f._prime(D);this.m=R.p,this.prime=R}else b(D.gtn(1),"modulus must be greater than 1"),this.m=D,this.prime=null}F.prototype._verify1=function(R){b(R.negative===0,"red works only with positives"),b(R.red,"red works only with red numbers")},F.prototype._verify2=function(R,P){b((R.negative|P.negative)===0,"red works only with positives"),b(R.red&&R.red===P.red,"red works only with red numbers")},F.prototype.imod=function(R){return this.prime?this.prime.ireduce(R)._forceRed(this):R.umod(this.m)._forceRed(this)},F.prototype.neg=function(R){return R.isZero()?R.clone():this.m.sub(R)._forceRed(this)},F.prototype.add=function(R,P){this._verify2(R,P);var E=R.add(P);return E.cmp(this.m)>=0&&E.isub(this.m),E._forceRed(this)},F.prototype.iadd=function(R,P){this._verify2(R,P);var E=R.iadd(P);return E.cmp(this.m)>=0&&E.isub(this.m),E},F.prototype.sub=function(R,P){this._verify2(R,P);var E=R.sub(P);return E.cmpn(0)<0&&E.iadd(this.m),E._forceRed(this)},F.prototype.isub=function(R,P){this._verify2(R,P);var E=R.isub(P);return E.cmpn(0)<0&&E.iadd(this.m),E},F.prototype.shl=function(R,P){return this._verify1(R),this.imod(R.ushln(P))},F.prototype.imul=function(R,P){return this._verify2(R,P),this.imod(R.imul(P))},F.prototype.mul=function(R,P){return this._verify2(R,P),this.imod(R.mul(P))},F.prototype.isqr=function(R){return this.imul(R,R.clone())},F.prototype.sqr=function(R){return this.mul(R,R)},F.prototype.sqrt=function(R){if(R.isZero())return R.clone();var P=this.m.andln(3);if(b(P%2===1),P===3){var E=this.m.add(new f(1)).iushrn(2);return this.pow(R,E)}for(var A=this.m.subn(1),z=0;!A.isZero()&&A.andln(1)===0;)z++,A.iushrn(1);b(!A.isZero());var W=new f(1).toRed(this),$=W.redNeg(),U=this.m.subn(1).iushrn(1),I=this.m.bitLength();for(I=new f(2*I*I).toRed(this);this.pow(I,U).cmp($)!==0;)I.redIAdd($);for(var j=this.pow(I,A),B=this.pow(R,A.addn(1).iushrn(1)),V=this.pow(R,A),te=z;V.cmp(W)!==0;){for(var ie=V,ce=0;ie.cmp(W)!==0;ce++)ie=ie.redSqr();b(ce=0;z--){for(var j=P.words[z],B=I-1;B>=0;B--){var V=j>>B&1;if(W!==A[0]&&(W=this.sqr(W)),V===0&&$===0){U=0;continue}$<<=1,$|=V,U++,!(U!==E&&(z!==0||B!==0))&&(W=this.mul(W,A[$]),U=0,$=0)}I=26}return W},F.prototype.convertTo=function(R){var P=R.umod(this.m);return P===R?P.clone():P},F.prototype.convertFrom=function(R){var P=R.clone();return P.red=null,P},f.mont=function(R){return new M(R)};function M(D){F.call(this,D),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(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)}w(M,F),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 E=R.imul(P),A=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),z=E.isub(A).iushrn(this.shift),W=z;return z.cmp(this.m)>=0?W=z.isub(this.m):z.cmpn(0)<0&&(W=z.iadd(this.m)),W._forceRed(this)},M.prototype.mul=function(R,P){if(R.isZero()||P.isZero())return new f(0)._forceRed(this);var E=R.mul(P),A=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),z=E.isub(A).iushrn(this.shift),W=z;return z.cmp(this.m)>=0?W=z.isub(this.m):z.cmpn(0)<0&&(W=z.iadd(this.m)),W._forceRed(this)},M.prototype.invm=function(R){var P=this.imod(R._invmp(this.m).mul(this.r2));return P._forceRed(this)}})(typeof x>"u"||x,void 0)},{buffer:185}],182:[function(e,x,_){_.byteLength=h,_.toByteArray=d,_.fromByteArray=c;for(var u=[],m=[],g=typeof Uint8Array<"u"?Uint8Array:Array,b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",w=0,f=b.length;w0)throw new Error("Invalid string. Length must be a multiple of 4");var t=a.indexOf("=");t===-1&&(t=r);var i=t===r?0:4-t%4;return[t,i]}function h(a){var r=y(a),t=r[0],i=r[1];return(t+i)*3/4-i}function l(a,r,t){return(r+t)*3/4-t}function d(a){var r,t=y(a),i=t[0],n=t[1],o=new g(l(a,i,n)),p=0,O=n>0?i-4:i,C;for(C=0;C>16&255,o[p++]=r>>8&255,o[p++]=r&255;return n===2&&(r=m[a.charCodeAt(C)]<<2|m[a.charCodeAt(C+1)]>>4,o[p++]=r&255),n===1&&(r=m[a.charCodeAt(C)]<<10|m[a.charCodeAt(C+1)]<<4|m[a.charCodeAt(C+2)]>>2,o[p++]=r>>8&255,o[p++]=r&255),o}function s(a){return u[a>>18&63]+u[a>>12&63]+u[a>>6&63]+u[a&63]}function v(a,r,t){for(var i,n=[],o=r;oO?O:p+o));return i===1?(r=a[t-1],n.push(u[r>>2]+u[r<<4&63]+"==")):i===2&&(r=(a[t-2]<<8)+a[t-1],n.push(u[r>>10]+u[r>>4&63]+u[r<<2&63]+"=")),n.join("")}},{}],183:[function(e,x,_){function u(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(b){return typeof b}:u=function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},u(m)}(function(m,g){function b(P,E){if(!P)throw new Error(E||"Assertion failed")}function w(P,E){P.super_=E;var A=function(){};A.prototype=E.prototype,P.prototype=new A,P.prototype.constructor=P}function f(P,E,A){if(f.isBN(P))return P;this.negative=0,this.words=null,this.length=0,this.red=null,P!==null&&((E==="le"||E==="be")&&(A=E,E=10),this._init(P||0,E||10,A||"be"))}u(m)==="object"?m.exports=f:g.BN=f,f.BN=f,f.wordSize=26;var y;try{y=e("buffer").Buffer}catch{}f.isBN=function(E){return E instanceof f?!0:E!==null&&u(E)==="object"&&E.constructor.wordSize===f.wordSize&&Array.isArray(E.words)},f.max=function(E,A){return E.cmp(A)>0?E:A},f.min=function(E,A){return E.cmp(A)<0?E:A},f.prototype._init=function(E,A,z){if(typeof E=="number")return this._initNumber(E,A,z);if(u(E)==="object")return this._initArray(E,A,z);A==="hex"&&(A=16),b(A===(A|0)&&A>=2&&A<=36),E=E.toString().replace(/\s+/g,"");var W=0;E[0]==="-"&&W++,A===16?this._parseHex(E,W):this._parseBase(E,A,W),E[0]==="-"&&(this.negative=1),this._strip(),z==="le"&&this._initArray(this.toArray(),A,z)},f.prototype._initNumber=function(E,A,z){E<0&&(this.negative=1,E=-E),E<67108864?(this.words=[E&67108863],this.length=1):E<4503599627370496?(this.words=[E&67108863,E/67108864&67108863],this.length=2):(b(E<9007199254740992),this.words=[E&67108863,E/67108864&67108863,1],this.length=3),z==="le"&&this._initArray(this.toArray(),A,z)},f.prototype._initArray=function(E,A,z){if(b(typeof E.length=="number"),E.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(E.length/3),this.words=new Array(this.length);for(var W=0;W=0;W-=3)U=E[W]|E[W-1]<<8|E[W-2]<<16,this.words[$]|=U<>>26-I&67108863,I+=24,I>=26&&(I-=26,$++);else if(z==="le")for(W=0,$=0;W>>26-I&67108863,I+=24,I>=26&&(I-=26,$++);return this._strip()};function h(P,E,A){for(var z=0,W=Math.min(P.length,A),$=0,U=E;U=49&&I<=54?j=I-49+10:I>=17&&I<=22?j=I-17+10:j=I,z|=j,$|=j}return b(!($&240),"Invalid character in "+P),z}f.prototype._parseHex=function(E,A){this.length=Math.ceil((E.length-A)/6),this.words=new Array(this.length);for(var z=0;z=A;z-=6)$=h(E,z,z+6),this.words[W]|=$<>>26-U&4194303,U+=24,U>=26&&(U-=26,W++);z+6!==A&&($=h(E,A,z+6),this.words[W]|=$<>>26-U&4194303),this._strip()};function l(P,E,A,z){for(var W=0,$=0,U=Math.min(P.length,A),I=E;I=49?$=j-49+10:j>=17?$=j-17+10:$=j,b(j>=0&&$1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{f.prototype[Symbol.for("nodejs.util.inspect.custom")]=s}catch{f.prototype.inspect=s}else f.prototype.inspect=s;function s(){return(this.red?""}var v=["","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"],c=[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],a=[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];f.prototype.toString=function(E,A){E=E||10,A=A|0||1;var z;if(E===16||E==="hex"){z="";for(var W=0,$=0,U=0;U>>24-W&16777215,$!==0||U!==this.length-1?z=v[6-j.length]+j+z:z=j+z,W+=2,W>=26&&(W-=26,U--)}for($!==0&&(z=$.toString(16)+z);z.length%A!==0;)z="0"+z;return this.negative!==0&&(z="-"+z),z}if(E===(E|0)&&E>=2&&E<=36){var B=c[E],V=a[E];z="";var te=this.clone();for(te.negative=0;!te.isZero();){var ie=te.modrn(V).toString(E);te=te.idivn(V),te.isZero()?z=ie+z:z=v[B-ie.length]+ie+z}for(this.isZero()&&(z="0"+z);z.length%A!==0;)z="0"+z;return this.negative!==0&&(z="-"+z),z}b(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var E=this.words[0];return this.length===2?E+=this.words[1]*67108864:this.length===3&&this.words[2]===1?E+=4503599627370496+this.words[1]*67108864:this.length>2&&b(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-E:E},f.prototype.toJSON=function(){return this.toString(16,2)},y&&(f.prototype.toBuffer=function(E,A){return this.toArrayLike(y,E,A)}),f.prototype.toArray=function(E,A){return this.toArrayLike(Array,E,A)};var r=function(E,A){return E.allocUnsafe?E.allocUnsafe(A):new E(A)};f.prototype.toArrayLike=function(E,A,z){this._strip();var W=this.byteLength(),$=z||Math.max(1,W);b(W<=$,"byte array longer than desired length"),b($>0,"Requested array length <= 0");var U=r(E,$),I=A==="le"?"LE":"BE";return this["_toArrayLike"+I](U,W),U},f.prototype._toArrayLikeLE=function(E,A){for(var z=0,W=0,$=0,U=0;$>8&255),z>16&255),U===6?(z>24&255),W=0,U=0):(W=I>>>24,U+=2)}if(z=0&&(E[z--]=I>>8&255),z>=0&&(E[z--]=I>>16&255),U===6?(z>=0&&(E[z--]=I>>24&255),W=0,U=0):(W=I>>>24,U+=2)}if(z>=0)for(E[z--]=W;z>=0;)E[z--]=0},Math.clz32?f.prototype._countBits=function(E){return 32-Math.clz32(E)}:f.prototype._countBits=function(E){var A=E,z=0;return A>=4096&&(z+=13,A>>>=13),A>=64&&(z+=7,A>>>=7),A>=8&&(z+=4,A>>>=4),A>=2&&(z+=2,A>>>=2),z+A},f.prototype._zeroBits=function(E){if(E===0)return 26;var A=E,z=0;return A&8191||(z+=13,A>>>=13),A&127||(z+=7,A>>>=7),A&15||(z+=4,A>>>=4),A&3||(z+=2,A>>>=2),A&1||z++,z},f.prototype.bitLength=function(){var E=this.words[this.length-1],A=this._countBits(E);return(this.length-1)*26+A};function t(P){for(var E=new Array(P.bitLength()),A=0;A>>W&1}return E}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var E=0,A=0;AE.length?this.clone().ior(E):E.clone().ior(this)},f.prototype.uor=function(E){return this.length>E.length?this.clone().iuor(E):E.clone().iuor(this)},f.prototype.iuand=function(E){var A;this.length>E.length?A=E:A=this;for(var z=0;zE.length?this.clone().iand(E):E.clone().iand(this)},f.prototype.uand=function(E){return this.length>E.length?this.clone().iuand(E):E.clone().iuand(this)},f.prototype.iuxor=function(E){var A,z;this.length>E.length?(A=this,z=E):(A=E,z=this);for(var W=0;WE.length?this.clone().ixor(E):E.clone().ixor(this)},f.prototype.uxor=function(E){return this.length>E.length?this.clone().iuxor(E):E.clone().iuxor(this)},f.prototype.inotn=function(E){b(typeof E=="number"&&E>=0);var A=Math.ceil(E/26)|0,z=E%26;this._expand(A),z>0&&A--;for(var W=0;W0&&(this.words[W]=~this.words[W]&67108863>>26-z),this._strip()},f.prototype.notn=function(E){return this.clone().inotn(E)},f.prototype.setn=function(E,A){b(typeof E=="number"&&E>=0);var z=E/26|0,W=E%26;return this._expand(z+1),A?this.words[z]=this.words[z]|1<E.length?(z=this,W=E):(z=E,W=this);for(var $=0,U=0;U>>26;for(;$!==0&&U>>26;if(this.length=z.length,$!==0)this.words[this.length]=$,this.length++;else if(z!==this)for(;UE.length?this.clone().iadd(E):E.clone().iadd(this)},f.prototype.isub=function(E){if(E.negative!==0){E.negative=0;var A=this.iadd(E);return E.negative=1,A._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(E),this.negative=1,this._normSign();var z=this.cmp(E);if(z===0)return this.negative=0,this.length=1,this.words[0]=0,this;var W,$;z>0?(W=this,$=E):(W=E,$=this);for(var U=0,I=0;I<$.length;I++)A=(W.words[I]|0)-($.words[I]|0)+U,U=A>>26,this.words[I]=A&67108863;for(;U!==0&&I>26,this.words[I]=A&67108863;if(U===0&&I>>26,te=j&67108863,ie=Math.min(B,E.length-1),ce=Math.max(0,B-P.length+1);ce<=ie;ce++){var be=B-ce|0;W=P.words[be]|0,$=E.words[ce]|0,U=W*$+te,V+=U/67108864|0,te=U&67108863}A.words[B]=te|0,j=V|0}return j!==0?A.words[B]=j|0:A.length--,A._strip()}var n=function(E,A,z){var W=E.words,$=A.words,U=z.words,I=0,j,B,V,te=W[0]|0,ie=te&8191,ce=te>>>13,be=W[1]|0,_e=be&8191,oe=be>>>13,J=W[2]|0,Q=J&8191,he=J>>>13,ke=W[3]|0,re=ke&8191,se=ke>>>13,Ce=W[4]|0,q=Ce&8191,G=Ce>>>13,Z=W[5]|0,fe=Z&8191,we=Z>>>13,ge=W[6]|0,je=ge&8191,Ze=ge>>>13,nt=W[7]|0,ut=nt&8191,ot=nt>>>13,Ue=W[8]|0,Ve=Ue&8191,Qe=Ue>>>13,tt=W[9]|0,ae=tt&8191,Re=tt>>>13,me=$[0]|0,Ee=me&8191,pe=me>>>13,Pe=$[1]|0,ee=Pe&8191,Xe=Pe>>>13,it=$[2]|0,K=it&8191,Me=it>>>13,Le=$[3]|0,ue=Le&8191,Se=Le>>>13,Ie=$[4]|0,st=Ie&8191,Ge=Ie>>>13,rt=$[5]|0,_t=rt&8191,wt=rt>>>13,Ot=$[6]|0,pt=Ot&8191,ct=Ot>>>13,At=$[7]|0,Pt=At&8191,bt=At>>>13,Kt=$[8]|0,Ct=Kt&8191,xt=Kt>>>13,Ft=$[9]|0,Lt=Ft&8191,Et=Ft>>>13;z.negative=E.negative^A.negative,z.length=19,j=Math.imul(ie,Ee),B=Math.imul(ie,pe),B=B+Math.imul(ce,Ee)|0,V=Math.imul(ce,pe);var Dr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Dr>>>26)|0,Dr&=67108863,j=Math.imul(_e,Ee),B=Math.imul(_e,pe),B=B+Math.imul(oe,Ee)|0,V=Math.imul(oe,pe),j=j+Math.imul(ie,ee)|0,B=B+Math.imul(ie,Xe)|0,B=B+Math.imul(ce,ee)|0,V=V+Math.imul(ce,Xe)|0;var Or=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Or>>>26)|0,Or&=67108863,j=Math.imul(Q,Ee),B=Math.imul(Q,pe),B=B+Math.imul(he,Ee)|0,V=Math.imul(he,pe),j=j+Math.imul(_e,ee)|0,B=B+Math.imul(_e,Xe)|0,B=B+Math.imul(oe,ee)|0,V=V+Math.imul(oe,Xe)|0,j=j+Math.imul(ie,K)|0,B=B+Math.imul(ie,Me)|0,B=B+Math.imul(ce,K)|0,V=V+Math.imul(ce,Me)|0;var Gr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,j=Math.imul(re,Ee),B=Math.imul(re,pe),B=B+Math.imul(se,Ee)|0,V=Math.imul(se,pe),j=j+Math.imul(Q,ee)|0,B=B+Math.imul(Q,Xe)|0,B=B+Math.imul(he,ee)|0,V=V+Math.imul(he,Xe)|0,j=j+Math.imul(_e,K)|0,B=B+Math.imul(_e,Me)|0,B=B+Math.imul(oe,K)|0,V=V+Math.imul(oe,Me)|0,j=j+Math.imul(ie,ue)|0,B=B+Math.imul(ie,Se)|0,B=B+Math.imul(ce,ue)|0,V=V+Math.imul(ce,Se)|0;var Nr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,j=Math.imul(q,Ee),B=Math.imul(q,pe),B=B+Math.imul(G,Ee)|0,V=Math.imul(G,pe),j=j+Math.imul(re,ee)|0,B=B+Math.imul(re,Xe)|0,B=B+Math.imul(se,ee)|0,V=V+Math.imul(se,Xe)|0,j=j+Math.imul(Q,K)|0,B=B+Math.imul(Q,Me)|0,B=B+Math.imul(he,K)|0,V=V+Math.imul(he,Me)|0,j=j+Math.imul(_e,ue)|0,B=B+Math.imul(_e,Se)|0,B=B+Math.imul(oe,ue)|0,V=V+Math.imul(oe,Se)|0,j=j+Math.imul(ie,st)|0,B=B+Math.imul(ie,Ge)|0,B=B+Math.imul(ce,st)|0,V=V+Math.imul(ce,Ge)|0;var Zr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,j=Math.imul(fe,Ee),B=Math.imul(fe,pe),B=B+Math.imul(we,Ee)|0,V=Math.imul(we,pe),j=j+Math.imul(q,ee)|0,B=B+Math.imul(q,Xe)|0,B=B+Math.imul(G,ee)|0,V=V+Math.imul(G,Xe)|0,j=j+Math.imul(re,K)|0,B=B+Math.imul(re,Me)|0,B=B+Math.imul(se,K)|0,V=V+Math.imul(se,Me)|0,j=j+Math.imul(Q,ue)|0,B=B+Math.imul(Q,Se)|0,B=B+Math.imul(he,ue)|0,V=V+Math.imul(he,Se)|0,j=j+Math.imul(_e,st)|0,B=B+Math.imul(_e,Ge)|0,B=B+Math.imul(oe,st)|0,V=V+Math.imul(oe,Ge)|0,j=j+Math.imul(ie,_t)|0,B=B+Math.imul(ie,wt)|0,B=B+Math.imul(ce,_t)|0,V=V+Math.imul(ce,wt)|0;var Qt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,j=Math.imul(je,Ee),B=Math.imul(je,pe),B=B+Math.imul(Ze,Ee)|0,V=Math.imul(Ze,pe),j=j+Math.imul(fe,ee)|0,B=B+Math.imul(fe,Xe)|0,B=B+Math.imul(we,ee)|0,V=V+Math.imul(we,Xe)|0,j=j+Math.imul(q,K)|0,B=B+Math.imul(q,Me)|0,B=B+Math.imul(G,K)|0,V=V+Math.imul(G,Me)|0,j=j+Math.imul(re,ue)|0,B=B+Math.imul(re,Se)|0,B=B+Math.imul(se,ue)|0,V=V+Math.imul(se,Se)|0,j=j+Math.imul(Q,st)|0,B=B+Math.imul(Q,Ge)|0,B=B+Math.imul(he,st)|0,V=V+Math.imul(he,Ge)|0,j=j+Math.imul(_e,_t)|0,B=B+Math.imul(_e,wt)|0,B=B+Math.imul(oe,_t)|0,V=V+Math.imul(oe,wt)|0,j=j+Math.imul(ie,pt)|0,B=B+Math.imul(ie,ct)|0,B=B+Math.imul(ce,pt)|0,V=V+Math.imul(ce,ct)|0;var Hr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,j=Math.imul(ut,Ee),B=Math.imul(ut,pe),B=B+Math.imul(ot,Ee)|0,V=Math.imul(ot,pe),j=j+Math.imul(je,ee)|0,B=B+Math.imul(je,Xe)|0,B=B+Math.imul(Ze,ee)|0,V=V+Math.imul(Ze,Xe)|0,j=j+Math.imul(fe,K)|0,B=B+Math.imul(fe,Me)|0,B=B+Math.imul(we,K)|0,V=V+Math.imul(we,Me)|0,j=j+Math.imul(q,ue)|0,B=B+Math.imul(q,Se)|0,B=B+Math.imul(G,ue)|0,V=V+Math.imul(G,Se)|0,j=j+Math.imul(re,st)|0,B=B+Math.imul(re,Ge)|0,B=B+Math.imul(se,st)|0,V=V+Math.imul(se,Ge)|0,j=j+Math.imul(Q,_t)|0,B=B+Math.imul(Q,wt)|0,B=B+Math.imul(he,_t)|0,V=V+Math.imul(he,wt)|0,j=j+Math.imul(_e,pt)|0,B=B+Math.imul(_e,ct)|0,B=B+Math.imul(oe,pt)|0,V=V+Math.imul(oe,ct)|0,j=j+Math.imul(ie,Pt)|0,B=B+Math.imul(ie,bt)|0,B=B+Math.imul(ce,Pt)|0,V=V+Math.imul(ce,bt)|0;var Fr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,j=Math.imul(Ve,Ee),B=Math.imul(Ve,pe),B=B+Math.imul(Qe,Ee)|0,V=Math.imul(Qe,pe),j=j+Math.imul(ut,ee)|0,B=B+Math.imul(ut,Xe)|0,B=B+Math.imul(ot,ee)|0,V=V+Math.imul(ot,Xe)|0,j=j+Math.imul(je,K)|0,B=B+Math.imul(je,Me)|0,B=B+Math.imul(Ze,K)|0,V=V+Math.imul(Ze,Me)|0,j=j+Math.imul(fe,ue)|0,B=B+Math.imul(fe,Se)|0,B=B+Math.imul(we,ue)|0,V=V+Math.imul(we,Se)|0,j=j+Math.imul(q,st)|0,B=B+Math.imul(q,Ge)|0,B=B+Math.imul(G,st)|0,V=V+Math.imul(G,Ge)|0,j=j+Math.imul(re,_t)|0,B=B+Math.imul(re,wt)|0,B=B+Math.imul(se,_t)|0,V=V+Math.imul(se,wt)|0,j=j+Math.imul(Q,pt)|0,B=B+Math.imul(Q,ct)|0,B=B+Math.imul(he,pt)|0,V=V+Math.imul(he,ct)|0,j=j+Math.imul(_e,Pt)|0,B=B+Math.imul(_e,bt)|0,B=B+Math.imul(oe,Pt)|0,V=V+Math.imul(oe,bt)|0,j=j+Math.imul(ie,Ct)|0,B=B+Math.imul(ie,xt)|0,B=B+Math.imul(ce,Ct)|0,V=V+Math.imul(ce,xt)|0;var Lr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Lr>>>26)|0,Lr&=67108863,j=Math.imul(ae,Ee),B=Math.imul(ae,pe),B=B+Math.imul(Re,Ee)|0,V=Math.imul(Re,pe),j=j+Math.imul(Ve,ee)|0,B=B+Math.imul(Ve,Xe)|0,B=B+Math.imul(Qe,ee)|0,V=V+Math.imul(Qe,Xe)|0,j=j+Math.imul(ut,K)|0,B=B+Math.imul(ut,Me)|0,B=B+Math.imul(ot,K)|0,V=V+Math.imul(ot,Me)|0,j=j+Math.imul(je,ue)|0,B=B+Math.imul(je,Se)|0,B=B+Math.imul(Ze,ue)|0,V=V+Math.imul(Ze,Se)|0,j=j+Math.imul(fe,st)|0,B=B+Math.imul(fe,Ge)|0,B=B+Math.imul(we,st)|0,V=V+Math.imul(we,Ge)|0,j=j+Math.imul(q,_t)|0,B=B+Math.imul(q,wt)|0,B=B+Math.imul(G,_t)|0,V=V+Math.imul(G,wt)|0,j=j+Math.imul(re,pt)|0,B=B+Math.imul(re,ct)|0,B=B+Math.imul(se,pt)|0,V=V+Math.imul(se,ct)|0,j=j+Math.imul(Q,Pt)|0,B=B+Math.imul(Q,bt)|0,B=B+Math.imul(he,Pt)|0,V=V+Math.imul(he,bt)|0,j=j+Math.imul(_e,Ct)|0,B=B+Math.imul(_e,xt)|0,B=B+Math.imul(oe,Ct)|0,V=V+Math.imul(oe,xt)|0,j=j+Math.imul(ie,Lt)|0,B=B+Math.imul(ie,Et)|0,B=B+Math.imul(ce,Lt)|0,V=V+Math.imul(ce,Et)|0;var Ur=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Ur>>>26)|0,Ur&=67108863,j=Math.imul(ae,ee),B=Math.imul(ae,Xe),B=B+Math.imul(Re,ee)|0,V=Math.imul(Re,Xe),j=j+Math.imul(Ve,K)|0,B=B+Math.imul(Ve,Me)|0,B=B+Math.imul(Qe,K)|0,V=V+Math.imul(Qe,Me)|0,j=j+Math.imul(ut,ue)|0,B=B+Math.imul(ut,Se)|0,B=B+Math.imul(ot,ue)|0,V=V+Math.imul(ot,Se)|0,j=j+Math.imul(je,st)|0,B=B+Math.imul(je,Ge)|0,B=B+Math.imul(Ze,st)|0,V=V+Math.imul(Ze,Ge)|0,j=j+Math.imul(fe,_t)|0,B=B+Math.imul(fe,wt)|0,B=B+Math.imul(we,_t)|0,V=V+Math.imul(we,wt)|0,j=j+Math.imul(q,pt)|0,B=B+Math.imul(q,ct)|0,B=B+Math.imul(G,pt)|0,V=V+Math.imul(G,ct)|0,j=j+Math.imul(re,Pt)|0,B=B+Math.imul(re,bt)|0,B=B+Math.imul(se,Pt)|0,V=V+Math.imul(se,bt)|0,j=j+Math.imul(Q,Ct)|0,B=B+Math.imul(Q,xt)|0,B=B+Math.imul(he,Ct)|0,V=V+Math.imul(he,xt)|0,j=j+Math.imul(_e,Lt)|0,B=B+Math.imul(_e,Et)|0,B=B+Math.imul(oe,Lt)|0,V=V+Math.imul(oe,Et)|0;var vt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(vt>>>26)|0,vt&=67108863,j=Math.imul(ae,K),B=Math.imul(ae,Me),B=B+Math.imul(Re,K)|0,V=Math.imul(Re,Me),j=j+Math.imul(Ve,ue)|0,B=B+Math.imul(Ve,Se)|0,B=B+Math.imul(Qe,ue)|0,V=V+Math.imul(Qe,Se)|0,j=j+Math.imul(ut,st)|0,B=B+Math.imul(ut,Ge)|0,B=B+Math.imul(ot,st)|0,V=V+Math.imul(ot,Ge)|0,j=j+Math.imul(je,_t)|0,B=B+Math.imul(je,wt)|0,B=B+Math.imul(Ze,_t)|0,V=V+Math.imul(Ze,wt)|0,j=j+Math.imul(fe,pt)|0,B=B+Math.imul(fe,ct)|0,B=B+Math.imul(we,pt)|0,V=V+Math.imul(we,ct)|0,j=j+Math.imul(q,Pt)|0,B=B+Math.imul(q,bt)|0,B=B+Math.imul(G,Pt)|0,V=V+Math.imul(G,bt)|0,j=j+Math.imul(re,Ct)|0,B=B+Math.imul(re,xt)|0,B=B+Math.imul(se,Ct)|0,V=V+Math.imul(se,xt)|0,j=j+Math.imul(Q,Lt)|0,B=B+Math.imul(Q,Et)|0,B=B+Math.imul(he,Lt)|0,V=V+Math.imul(he,Et)|0;var Ke=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,j=Math.imul(ae,ue),B=Math.imul(ae,Se),B=B+Math.imul(Re,ue)|0,V=Math.imul(Re,Se),j=j+Math.imul(Ve,st)|0,B=B+Math.imul(Ve,Ge)|0,B=B+Math.imul(Qe,st)|0,V=V+Math.imul(Qe,Ge)|0,j=j+Math.imul(ut,_t)|0,B=B+Math.imul(ut,wt)|0,B=B+Math.imul(ot,_t)|0,V=V+Math.imul(ot,wt)|0,j=j+Math.imul(je,pt)|0,B=B+Math.imul(je,ct)|0,B=B+Math.imul(Ze,pt)|0,V=V+Math.imul(Ze,ct)|0,j=j+Math.imul(fe,Pt)|0,B=B+Math.imul(fe,bt)|0,B=B+Math.imul(we,Pt)|0,V=V+Math.imul(we,bt)|0,j=j+Math.imul(q,Ct)|0,B=B+Math.imul(q,xt)|0,B=B+Math.imul(G,Ct)|0,V=V+Math.imul(G,xt)|0,j=j+Math.imul(re,Lt)|0,B=B+Math.imul(re,Et)|0,B=B+Math.imul(se,Lt)|0,V=V+Math.imul(se,Et)|0;var ve=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(ve>>>26)|0,ve&=67108863,j=Math.imul(ae,st),B=Math.imul(ae,Ge),B=B+Math.imul(Re,st)|0,V=Math.imul(Re,Ge),j=j+Math.imul(Ve,_t)|0,B=B+Math.imul(Ve,wt)|0,B=B+Math.imul(Qe,_t)|0,V=V+Math.imul(Qe,wt)|0,j=j+Math.imul(ut,pt)|0,B=B+Math.imul(ut,ct)|0,B=B+Math.imul(ot,pt)|0,V=V+Math.imul(ot,ct)|0,j=j+Math.imul(je,Pt)|0,B=B+Math.imul(je,bt)|0,B=B+Math.imul(Ze,Pt)|0,V=V+Math.imul(Ze,bt)|0,j=j+Math.imul(fe,Ct)|0,B=B+Math.imul(fe,xt)|0,B=B+Math.imul(we,Ct)|0,V=V+Math.imul(we,xt)|0,j=j+Math.imul(q,Lt)|0,B=B+Math.imul(q,Et)|0,B=B+Math.imul(G,Lt)|0,V=V+Math.imul(G,Et)|0;var Fe=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,j=Math.imul(ae,_t),B=Math.imul(ae,wt),B=B+Math.imul(Re,_t)|0,V=Math.imul(Re,wt),j=j+Math.imul(Ve,pt)|0,B=B+Math.imul(Ve,ct)|0,B=B+Math.imul(Qe,pt)|0,V=V+Math.imul(Qe,ct)|0,j=j+Math.imul(ut,Pt)|0,B=B+Math.imul(ut,bt)|0,B=B+Math.imul(ot,Pt)|0,V=V+Math.imul(ot,bt)|0,j=j+Math.imul(je,Ct)|0,B=B+Math.imul(je,xt)|0,B=B+Math.imul(Ze,Ct)|0,V=V+Math.imul(Ze,xt)|0,j=j+Math.imul(fe,Lt)|0,B=B+Math.imul(fe,Et)|0,B=B+Math.imul(we,Lt)|0,V=V+Math.imul(we,Et)|0;var Be=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Be>>>26)|0,Be&=67108863,j=Math.imul(ae,pt),B=Math.imul(ae,ct),B=B+Math.imul(Re,pt)|0,V=Math.imul(Re,ct),j=j+Math.imul(Ve,Pt)|0,B=B+Math.imul(Ve,bt)|0,B=B+Math.imul(Qe,Pt)|0,V=V+Math.imul(Qe,bt)|0,j=j+Math.imul(ut,Ct)|0,B=B+Math.imul(ut,xt)|0,B=B+Math.imul(ot,Ct)|0,V=V+Math.imul(ot,xt)|0,j=j+Math.imul(je,Lt)|0,B=B+Math.imul(je,Et)|0,B=B+Math.imul(Ze,Lt)|0,V=V+Math.imul(Ze,Et)|0;var dt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(dt>>>26)|0,dt&=67108863,j=Math.imul(ae,Pt),B=Math.imul(ae,bt),B=B+Math.imul(Re,Pt)|0,V=Math.imul(Re,bt),j=j+Math.imul(Ve,Ct)|0,B=B+Math.imul(Ve,xt)|0,B=B+Math.imul(Qe,Ct)|0,V=V+Math.imul(Qe,xt)|0,j=j+Math.imul(ut,Lt)|0,B=B+Math.imul(ut,Et)|0,B=B+Math.imul(ot,Lt)|0,V=V+Math.imul(ot,Et)|0;var St=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(St>>>26)|0,St&=67108863,j=Math.imul(ae,Ct),B=Math.imul(ae,xt),B=B+Math.imul(Re,Ct)|0,V=Math.imul(Re,xt),j=j+Math.imul(Ve,Lt)|0,B=B+Math.imul(Ve,Et)|0,B=B+Math.imul(Qe,Lt)|0,V=V+Math.imul(Qe,Et)|0;var Xt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,j=Math.imul(ae,Lt),B=Math.imul(ae,Et),B=B+Math.imul(Re,Lt)|0,V=Math.imul(Re,Et);var lr=(I+j|0)+((B&8191)<<13)|0;return I=(V+(B>>>13)|0)+(lr>>>26)|0,lr&=67108863,U[0]=Dr,U[1]=Or,U[2]=Gr,U[3]=Nr,U[4]=Zr,U[5]=Qt,U[6]=Hr,U[7]=Fr,U[8]=Lr,U[9]=Ur,U[10]=vt,U[11]=Ke,U[12]=ve,U[13]=Fe,U[14]=Be,U[15]=dt,U[16]=St,U[17]=Xt,U[18]=lr,I!==0&&(U[19]=I,z.length++),z};Math.imul||(n=i);function o(P,E,A){A.negative=E.negative^P.negative,A.length=P.length+E.length;for(var z=0,W=0,$=0;$>>26)|0,W+=U>>>26,U&=67108863}A.words[$]=I,z=U,U=W}return z!==0?A.words[$]=z:A.length--,A._strip()}function p(P,E,A){return o(P,E,A)}f.prototype.mulTo=function(E,A){var z,W=this.length+E.length;return this.length===10&&E.length===10?z=n(this,E,A):W<63?z=i(this,E,A):W<1024?z=o(this,E,A):z=p(this,E,A),z},f.prototype.mul=function(E){var A=new f(null);return A.words=new Array(this.length+E.length),this.mulTo(E,A)},f.prototype.mulf=function(E){var A=new f(null);return A.words=new Array(this.length+E.length),p(this,E,A)},f.prototype.imul=function(E){return this.clone().mulTo(E,this)},f.prototype.imuln=function(E){var A=E<0;A&&(E=-E),b(typeof E=="number"),b(E<67108864);for(var z=0,W=0;W>=26,z+=$/67108864|0,z+=U>>>26,this.words[W]=U&67108863}return z!==0&&(this.words[W]=z,this.length++),A?this.ineg():this},f.prototype.muln=function(E){return this.clone().imuln(E)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(E){var A=t(E);if(A.length===0)return new f(1);for(var z=this,W=0;W=0);var A=E%26,z=(E-A)/26,W=67108863>>>26-A<<26-A,$;if(A!==0){var U=0;for($=0;$>>26-A}U&&(this.words[$]=U,this.length++)}if(z!==0){for($=this.length-1;$>=0;$--)this.words[$+z]=this.words[$];for($=0;$=0);var W;A?W=(A-A%26)/26:W=0;var $=E%26,U=Math.min((E-$)/26,this.length),I=67108863^67108863>>>$<<$,j=z;if(W-=U,W=Math.max(0,W),j){for(var B=0;BU)for(this.length-=U,B=0;B=0&&(V!==0||B>=W);B--){var te=this.words[B]|0;this.words[B]=V<<26-$|te>>>$,V=te&I}return j&&V!==0&&(j.words[j.length++]=V),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},f.prototype.ishrn=function(E,A,z){return b(this.negative===0),this.iushrn(E,A,z)},f.prototype.shln=function(E){return this.clone().ishln(E)},f.prototype.ushln=function(E){return this.clone().iushln(E)},f.prototype.shrn=function(E){return this.clone().ishrn(E)},f.prototype.ushrn=function(E){return this.clone().iushrn(E)},f.prototype.testn=function(E){b(typeof E=="number"&&E>=0);var A=E%26,z=(E-A)/26,W=1<=0);var A=E%26,z=(E-A)/26;if(b(this.negative===0,"imaskn works only with positive numbers"),this.length<=z)return this;if(A!==0&&z++,this.length=Math.min(z,this.length),A!==0){var W=67108863^67108863>>>A<=67108864;A++)this.words[A]-=67108864,A===this.length-1?this.words[A+1]=1:this.words[A+1]++;return this.length=Math.max(this.length,A+1),this},f.prototype.isubn=function(E){if(b(typeof E=="number"),b(E<67108864),E<0)return this.iaddn(-E);if(this.negative!==0)return this.negative=0,this.iaddn(E),this.negative=1,this;if(this.words[0]-=E,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var A=0;A>26)-(j/67108864|0),this.words[$+z]=U&67108863}for(;$>26,this.words[$+z]=U&67108863;if(I===0)return this._strip();for(b(I===-1),I=0,$=0;$>26,this.words[$]=U&67108863;return this.negative=1,this._strip()},f.prototype._wordDiv=function(E,A){var z=this.length-E.length,W=this.clone(),$=E,U=$.words[$.length-1]|0,I=this._countBits(U);z=26-I,z!==0&&($=$.ushln(z),W.iushln(z),U=$.words[$.length-1]|0);var j=W.length-$.length,B;if(A!=="mod"){B=new f(null),B.length=j+1,B.words=new Array(B.length);for(var V=0;V=0;ie--){var ce=(W.words[$.length+ie]|0)*67108864+(W.words[$.length+ie-1]|0);for(ce=Math.min(ce/U|0,67108863),W._ishlnsubmul($,ce,ie);W.negative!==0;)ce--,W.negative=0,W._ishlnsubmul($,1,ie),W.isZero()||(W.negative^=1);B&&(B.words[ie]=ce)}return B&&B._strip(),W._strip(),A!=="div"&&z!==0&&W.iushrn(z),{div:B||null,mod:W}},f.prototype.divmod=function(E,A,z){if(b(!E.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var W,$,U;return this.negative!==0&&E.negative===0?(U=this.neg().divmod(E,A),A!=="mod"&&(W=U.div.neg()),A!=="div"&&($=U.mod.neg(),z&&$.negative!==0&&$.iadd(E)),{div:W,mod:$}):this.negative===0&&E.negative!==0?(U=this.divmod(E.neg(),A),A!=="mod"&&(W=U.div.neg()),{div:W,mod:U.mod}):this.negative&E.negative?(U=this.neg().divmod(E.neg(),A),A!=="div"&&($=U.mod.neg(),z&&$.negative!==0&&$.isub(E)),{div:U.div,mod:$}):E.length>this.length||this.cmp(E)<0?{div:new f(0),mod:this}:E.length===1?A==="div"?{div:this.divn(E.words[0]),mod:null}:A==="mod"?{div:null,mod:new f(this.modrn(E.words[0]))}:{div:this.divn(E.words[0]),mod:new f(this.modrn(E.words[0]))}:this._wordDiv(E,A)},f.prototype.div=function(E){return this.divmod(E,"div",!1).div},f.prototype.mod=function(E){return this.divmod(E,"mod",!1).mod},f.prototype.umod=function(E){return this.divmod(E,"mod",!0).mod},f.prototype.divRound=function(E){var A=this.divmod(E);if(A.mod.isZero())return A.div;var z=A.div.negative!==0?A.mod.isub(E):A.mod,W=E.ushrn(1),$=E.andln(1),U=z.cmp(W);return U<0||$===1&&U===0?A.div:A.div.negative!==0?A.div.isubn(1):A.div.iaddn(1)},f.prototype.modrn=function(E){var A=E<0;A&&(E=-E),b(E<=67108863);for(var z=(1<<26)%E,W=0,$=this.length-1;$>=0;$--)W=(z*W+(this.words[$]|0))%E;return A?-W:W},f.prototype.modn=function(E){return this.modrn(E)},f.prototype.idivn=function(E){var A=E<0;A&&(E=-E),b(E<=67108863);for(var z=0,W=this.length-1;W>=0;W--){var $=(this.words[W]|0)+z*67108864;this.words[W]=$/E|0,z=$%E}return this._strip(),A?this.ineg():this},f.prototype.divn=function(E){return this.clone().idivn(E)},f.prototype.egcd=function(E){b(E.negative===0),b(!E.isZero());var A=this,z=E.clone();A.negative!==0?A=A.umod(E):A=A.clone();for(var W=new f(1),$=new f(0),U=new f(0),I=new f(1),j=0;A.isEven()&&z.isEven();)A.iushrn(1),z.iushrn(1),++j;for(var B=z.clone(),V=A.clone();!A.isZero();){for(var te=0,ie=1;!(A.words[0]&ie)&&te<26;++te,ie<<=1);if(te>0)for(A.iushrn(te);te-- >0;)(W.isOdd()||$.isOdd())&&(W.iadd(B),$.isub(V)),W.iushrn(1),$.iushrn(1);for(var ce=0,be=1;!(z.words[0]&be)&&ce<26;++ce,be<<=1);if(ce>0)for(z.iushrn(ce);ce-- >0;)(U.isOdd()||I.isOdd())&&(U.iadd(B),I.isub(V)),U.iushrn(1),I.iushrn(1);A.cmp(z)>=0?(A.isub(z),W.isub(U),$.isub(I)):(z.isub(A),U.isub(W),I.isub($))}return{a:U,b:I,gcd:z.iushln(j)}},f.prototype._invmp=function(E){b(E.negative===0),b(!E.isZero());var A=this,z=E.clone();A.negative!==0?A=A.umod(E):A=A.clone();for(var W=new f(1),$=new f(0),U=z.clone();A.cmpn(1)>0&&z.cmpn(1)>0;){for(var I=0,j=1;!(A.words[0]&j)&&I<26;++I,j<<=1);if(I>0)for(A.iushrn(I);I-- >0;)W.isOdd()&&W.iadd(U),W.iushrn(1);for(var B=0,V=1;!(z.words[0]&V)&&B<26;++B,V<<=1);if(B>0)for(z.iushrn(B);B-- >0;)$.isOdd()&&$.iadd(U),$.iushrn(1);A.cmp(z)>=0?(A.isub(z),W.isub($)):(z.isub(A),$.isub(W))}var te;return A.cmpn(1)===0?te=W:te=$,te.cmpn(0)<0&&te.iadd(E),te},f.prototype.gcd=function(E){if(this.isZero())return E.abs();if(E.isZero())return this.abs();var A=this.clone(),z=E.clone();A.negative=0,z.negative=0;for(var W=0;A.isEven()&&z.isEven();W++)A.iushrn(1),z.iushrn(1);do{for(;A.isEven();)A.iushrn(1);for(;z.isEven();)z.iushrn(1);var $=A.cmp(z);if($<0){var U=A;A=z,z=U}else if($===0||z.cmpn(1)===0)break;A.isub(z)}while(!0);return z.iushln(W)},f.prototype.invm=function(E){return this.egcd(E).a.umod(E)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(E){return this.words[0]&E},f.prototype.bincn=function(E){b(typeof E=="number");var A=E%26,z=(E-A)/26,W=1<>>26,I&=67108863,this.words[U]=I}return $!==0&&(this.words[U]=$,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(E){var A=E<0;if(this.negative!==0&&!A)return-1;if(this.negative===0&&A)return 1;this._strip();var z;if(this.length>1)z=1;else{A&&(E=-E),b(E<=67108863,"Number is too big");var W=this.words[0]|0;z=W===E?0:WE.length)return 1;if(this.length=0;z--){var W=this.words[z]|0,$=E.words[z]|0;if(W!==$){W<$?A=-1:W>$&&(A=1);break}}return A},f.prototype.gtn=function(E){return this.cmpn(E)===1},f.prototype.gt=function(E){return this.cmp(E)===1},f.prototype.gten=function(E){return this.cmpn(E)>=0},f.prototype.gte=function(E){return this.cmp(E)>=0},f.prototype.ltn=function(E){return this.cmpn(E)===-1},f.prototype.lt=function(E){return this.cmp(E)===-1},f.prototype.lten=function(E){return this.cmpn(E)<=0},f.prototype.lte=function(E){return this.cmp(E)<=0},f.prototype.eqn=function(E){return this.cmpn(E)===0},f.prototype.eq=function(E){return this.cmp(E)===0},f.red=function(E){return new D(E)},f.prototype.toRed=function(E){return b(!this.red,"Already a number in reduction context"),b(this.negative===0,"red works only with positives"),E.convertTo(this)._forceRed(E)},f.prototype.fromRed=function(){return b(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(E){return this.red=E,this},f.prototype.forceRed=function(E){return b(!this.red,"Already a number in reduction context"),this._forceRed(E)},f.prototype.redAdd=function(E){return b(this.red,"redAdd works only with red numbers"),this.red.add(this,E)},f.prototype.redIAdd=function(E){return b(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,E)},f.prototype.redSub=function(E){return b(this.red,"redSub works only with red numbers"),this.red.sub(this,E)},f.prototype.redISub=function(E){return b(this.red,"redISub works only with red numbers"),this.red.isub(this,E)},f.prototype.redShl=function(E){return b(this.red,"redShl works only with red numbers"),this.red.shl(this,E)},f.prototype.redMul=function(E){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,E),this.red.mul(this,E)},f.prototype.redIMul=function(E){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,E),this.red.imul(this,E)},f.prototype.redSqr=function(){return b(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return b(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return b(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return b(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return b(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(E){return b(this.red&&!E.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,E)};var O={k256:null,p224:null,p192:null,p25519:null};function C(P,E){this.name=P,this.p=new f(E,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}C.prototype._tmp=function(){var E=new f(null);return E.words=new Array(Math.ceil(this.n/13)),E},C.prototype.ireduce=function(E){var A=E,z;do this.split(A,this.tmp),A=this.imulK(A),A=A.iadd(this.tmp),z=A.bitLength();while(z>this.n);var W=z0?A.isub(this.p):A.strip!==void 0?A.strip():A._strip(),A},C.prototype.split=function(E,A){E.iushrn(this.n,0,A)},C.prototype.imulK=function(E){return E.imul(this.k)};function N(){C.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}w(N,C),N.prototype.split=function(E,A){for(var z=4194303,W=Math.min(E.length,9),$=0;$>>22,U=I}U>>>=22,E.words[$-10]=U,U===0&&E.length>10?E.length-=10:E.length-=9},N.prototype.imulK=function(E){E.words[E.length]=0,E.words[E.length+1]=0,E.length+=2;for(var A=0,z=0;z>>=26,E.words[z]=$,A=W}return A!==0&&(E.words[E.length++]=A),E},f._prime=function(E){if(O[E])return O[E];var A;if(E==="k256")A=new N;else if(E==="p224")A=new L;else if(E==="p192")A=new F;else if(E==="p25519")A=new M;else throw new Error("Unknown prime "+E);return O[E]=A,A};function D(P){if(typeof P=="string"){var E=f._prime(P);this.m=E.p,this.prime=E}else b(P.gtn(1),"modulus must be greater than 1"),this.m=P,this.prime=null}D.prototype._verify1=function(E){b(E.negative===0,"red works only with positives"),b(E.red,"red works only with red numbers")},D.prototype._verify2=function(E,A){b((E.negative|A.negative)===0,"red works only with positives"),b(E.red&&E.red===A.red,"red works only with red numbers")},D.prototype.imod=function(E){return this.prime?this.prime.ireduce(E)._forceRed(this):(d(E,E.umod(this.m)._forceRed(this)),E)},D.prototype.neg=function(E){return E.isZero()?E.clone():this.m.sub(E)._forceRed(this)},D.prototype.add=function(E,A){this._verify2(E,A);var z=E.add(A);return z.cmp(this.m)>=0&&z.isub(this.m),z._forceRed(this)},D.prototype.iadd=function(E,A){this._verify2(E,A);var z=E.iadd(A);return z.cmp(this.m)>=0&&z.isub(this.m),z},D.prototype.sub=function(E,A){this._verify2(E,A);var z=E.sub(A);return z.cmpn(0)<0&&z.iadd(this.m),z._forceRed(this)},D.prototype.isub=function(E,A){this._verify2(E,A);var z=E.isub(A);return z.cmpn(0)<0&&z.iadd(this.m),z},D.prototype.shl=function(E,A){return this._verify1(E),this.imod(E.ushln(A))},D.prototype.imul=function(E,A){return this._verify2(E,A),this.imod(E.imul(A))},D.prototype.mul=function(E,A){return this._verify2(E,A),this.imod(E.mul(A))},D.prototype.isqr=function(E){return this.imul(E,E.clone())},D.prototype.sqr=function(E){return this.mul(E,E)},D.prototype.sqrt=function(E){if(E.isZero())return E.clone();var A=this.m.andln(3);if(b(A%2===1),A===3){var z=this.m.add(new f(1)).iushrn(2);return this.pow(E,z)}for(var W=this.m.subn(1),$=0;!W.isZero()&&W.andln(1)===0;)$++,W.iushrn(1);b(!W.isZero());var U=new f(1).toRed(this),I=U.redNeg(),j=this.m.subn(1).iushrn(1),B=this.m.bitLength();for(B=new f(2*B*B).toRed(this);this.pow(B,j).cmp(I)!==0;)B.redIAdd(I);for(var V=this.pow(B,W),te=this.pow(E,W.addn(1).iushrn(1)),ie=this.pow(E,W),ce=$;ie.cmp(U)!==0;){for(var be=ie,_e=0;be.cmp(U)!==0;_e++)be=be.redSqr();b(_e=0;$--){for(var V=A.words[$],te=B-1;te>=0;te--){var ie=V>>te&1;if(U!==W[0]&&(U=this.sqr(U)),ie===0&&I===0){j=0;continue}I<<=1,I|=ie,j++,!(j!==z&&($!==0||te!==0))&&(U=this.mul(U,W[I]),j=0,I=0)}B=26}return U},D.prototype.convertTo=function(E){var A=E.umod(this.m);return A===E?A.clone():A},D.prototype.convertFrom=function(E){var A=E.clone();return A.red=null,A},f.mont=function(E){return new R(E)};function R(P){D.call(this,P),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(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)}w(R,D),R.prototype.convertTo=function(E){return this.imod(E.ushln(this.shift))},R.prototype.convertFrom=function(E){var A=this.imod(E.mul(this.rinv));return A.red=null,A},R.prototype.imul=function(E,A){if(E.isZero()||A.isZero())return E.words[0]=0,E.length=1,E;var z=E.imul(A),W=z.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),$=z.isub(W).iushrn(this.shift),U=$;return $.cmp(this.m)>=0?U=$.isub(this.m):$.cmpn(0)<0&&(U=$.iadd(this.m)),U._forceRed(this)},R.prototype.mul=function(E,A){if(E.isZero()||A.isZero())return new f(0)._forceRed(this);var z=E.mul(A),W=z.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),$=z.isub(W).iushrn(this.shift),U=$;return $.cmp(this.m)>=0?U=$.isub(this.m):$.cmpn(0)<0&&(U=$.iadd(this.m)),U._forceRed(this)},R.prototype.invm=function(E){var A=this.imod(E._invmp(this.m).mul(this.r2));return A._forceRed(this)}})(typeof x>"u"||x,void 0)},{buffer:185}],184:[function(e,x,_){function u(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(y){return typeof y}:u=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},u(w)}var m;x.exports=function(f){return m||(m=new g(null)),m.generate(f)};function g(w){this.rand=w}if(x.exports.Rand=g,g.prototype.generate=function(f){return this._rand(f)},g.prototype._rand=function(f){if(this.rand.getBytes)return this.rand.getBytes(f);for(var y=new Uint8Array(f),h=0;h"u"?"undefined":u(self))==="object")self.crypto&&self.crypto.getRandomValues?g.prototype._rand=function(f){var y=new Uint8Array(f);return self.crypto.getRandomValues(y),y}:self.msCrypto&&self.msCrypto.getRandomValues?g.prototype._rand=function(f){var y=new Uint8Array(f);return self.msCrypto.getRandomValues(y),y}:(typeof window>"u"?"undefined":u(window))==="object"&&(g.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var b=e("crypto");if(typeof b.randomBytes!="function")throw new Error("Not supported");g.prototype._rand=function(f){return b.randomBytes(f)}}catch{}},{crypto:185}],185:[function(e,x,_){},{}],186:[function(e,x,_){var u=e("safe-buffer").Buffer;function m(h){u.isBuffer(h)||(h=u.from(h));for(var l=h.length/4|0,d=new Array(l),s=0;s>>24]^a[n>>>16&255]^r[o>>>8&255]^t[p&255]^l[F++],C=c[n>>>24]^a[o>>>16&255]^r[p>>>8&255]^t[i&255]^l[F++],N=c[o>>>24]^a[p>>>16&255]^r[i>>>8&255]^t[n&255]^l[F++],L=c[p>>>24]^a[i>>>16&255]^r[n>>>8&255]^t[o&255]^l[F++],i=O,n=C,o=N,p=L;return O=(s[i>>>24]<<24|s[n>>>16&255]<<16|s[o>>>8&255]<<8|s[p&255])^l[F++],C=(s[n>>>24]<<24|s[o>>>16&255]<<16|s[p>>>8&255]<<8|s[i&255])^l[F++],N=(s[o>>>24]<<24|s[p>>>16&255]<<16|s[i>>>8&255]<<8|s[n&255])^l[F++],L=(s[p>>>24]<<24|s[i>>>16&255]<<16|s[n>>>8&255]<<8|s[o&255])^l[F++],O=O>>>0,C=C>>>0,N=N>>>0,L=L>>>0,[O,C,N,L]}var w=[0,1,2,4,8,16,32,64,128,27,54],f=function(){for(var h=new Array(256),l=0;l<256;l++)l<128?h[l]=l<<1:h[l]=l<<1^283;for(var d=[],s=[],v=[[],[],[],[]],c=[[],[],[],[]],a=0,r=0,t=0;t<256;++t){var i=r^r<<1^r<<2^r<<3^r<<4;i=i>>>8^i&255^99,d[a]=i,s[i]=a;var n=h[a],o=h[n],p=h[o],O=h[i]*257^i*16843008;v[0][a]=O<<24|O>>>8,v[1][a]=O<<16|O>>>16,v[2][a]=O<<8|O>>>24,v[3][a]=O,O=p*16843009^o*65537^n*257^a*16843008,c[0][i]=O<<24|O>>>8,c[1][i]=O<<16|O>>>16,c[2][i]=O<<8|O>>>24,c[3][i]=O,a===0?a=r=1:(a=n^h[h[h[p^n]]],r^=h[h[r]])}return{SBOX:d,INV_SBOX:s,SUB_MIX:v,INV_SUB_MIX:c}}();function y(h){this._key=m(h),this._reset()}y.blockSize=4*4,y.keySize=256/8,y.prototype.blockSize=y.blockSize,y.prototype.keySize=y.keySize,y.prototype._reset=function(){for(var h=this._key,l=h.length,d=l+6,s=(d+1)*4,v=[],c=0;c>>24,a=f.SBOX[a>>>24]<<24|f.SBOX[a>>>16&255]<<16|f.SBOX[a>>>8&255]<<8|f.SBOX[a&255],a^=w[c/l|0]<<24):l>6&&c%l===4&&(a=f.SBOX[a>>>24]<<24|f.SBOX[a>>>16&255]<<16|f.SBOX[a>>>8&255]<<8|f.SBOX[a&255]),v[c]=v[c-l]^a}for(var r=[],t=0;t>>24]]^f.INV_SUB_MIX[1][f.SBOX[n>>>16&255]]^f.INV_SUB_MIX[2][f.SBOX[n>>>8&255]]^f.INV_SUB_MIX[3][f.SBOX[n&255]]}this._nRounds=d,this._keySchedule=v,this._invKeySchedule=r},y.prototype.encryptBlockRaw=function(h){return h=m(h),b(h,this._keySchedule,f.SUB_MIX,f.SBOX,this._nRounds)},y.prototype.encryptBlock=function(h){var l=this.encryptBlockRaw(h),d=u.allocUnsafe(16);return d.writeUInt32BE(l[0],0),d.writeUInt32BE(l[1],4),d.writeUInt32BE(l[2],8),d.writeUInt32BE(l[3],12),d},y.prototype.decryptBlock=function(h){h=m(h);var l=h[1];h[1]=h[3],h[3]=l;var d=b(h,this._invKeySchedule,f.INV_SUB_MIX,f.INV_SBOX,this._nRounds),s=u.allocUnsafe(16);return s.writeUInt32BE(d[0],0),s.writeUInt32BE(d[3],4),s.writeUInt32BE(d[2],8),s.writeUInt32BE(d[1],12),s},y.prototype.scrub=function(){g(this._keySchedule),g(this._invKeySchedule),g(this._key)},x.exports.AES=y},{"safe-buffer":494}],187:[function(e,x,_){var u=e("./aes"),m=e("safe-buffer").Buffer,g=e("cipher-base"),b=e("inherits"),w=e("./ghash"),f=e("buffer-xor"),y=e("./incr32");function h(s,v){var c=0;s.length!==v.length&&c++;for(var a=Math.min(s.length,v.length),r=0;r16)return r=this.cache.slice(0,16),this.cache=this.cache.slice(16),r}else if(this.cache.length>=16)return r=this.cache.slice(0,16),this.cache=this.cache.slice(16),r;return null},d.prototype.flush=function(){if(this.cache.length)return this.cache};function s(a){var r=a[15];if(r<1||r>16)throw new Error("unable to decrypt data");for(var t=-1;++t15){var a=this.cache.slice(0,16);return this.cache=this.cache.slice(16),a}return null},s.prototype.flush=function(){for(var a=16-this.cache.length,r=g.allocUnsafe(a),t=-1;++t>>0,0),y.writeUInt32BE(f[1]>>>0,4),y.writeUInt32BE(f[2]>>>0,8),y.writeUInt32BE(f[3]>>>0,12),y}function w(f){this.h=f,this.state=u.alloc(16,0),this.cache=u.allocUnsafe(0)}w.prototype.ghash=function(f){for(var y=-1;++y0;h--)f[h]=f[h]>>>1|(f[h-1]&1)<<31;f[0]=f[0]>>>1,d&&(f[0]=f[0]^225<<24)}this.state=b(y)},w.prototype.update=function(f){this.cache=u.concat([this.cache,f]);for(var y;this.cache.length>=16;)y=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(y)},w.prototype.final=function(f,y){return this.cache.length&&this.ghash(u.concat([this.cache,m],16)),this.ghash(b([0,f,0,y])),this.state},x.exports=w},{"safe-buffer":494}],192:[function(e,x,_){function u(m){for(var g=m.length,b;g--;)if(b=m.readUInt8(g),b===255)m.writeUInt8(0,g);else{b++,m.writeUInt8(b,g);break}}x.exports=u},{}],193:[function(e,x,_){var u=e("buffer-xor");_.encrypt=function(m,g){var b=u(g,m._prev);return m._prev=m._cipher.encryptBlock(b),m._prev},_.decrypt=function(m,g){var b=m._prev;m._prev=g;var w=m._cipher.decryptBlock(g);return u(w,b)}},{"buffer-xor":217}],194:[function(e,x,_){var u=e("safe-buffer").Buffer,m=e("buffer-xor");function g(b,w,f){var y=w.length,h=m(w,b._cache);return b._cache=b._cache.slice(y),b._prev=u.concat([b._prev,f?w:h]),h}_.encrypt=function(b,w,f){for(var y=u.allocUnsafe(0),h;w.length;)if(b._cache.length===0&&(b._cache=b._cipher.encryptBlock(b._prev),b._prev=u.allocUnsafe(0)),b._cache.length<=w.length)h=b._cache.length,y=u.concat([y,g(b,w.slice(0,h),f)]),w=w.slice(h);else{y=u.concat([y,g(b,w,f)]);break}return y}},{"buffer-xor":217,"safe-buffer":494}],195:[function(e,x,_){var u=e("safe-buffer").Buffer;function m(b,w,f){for(var y,h=-1,l=8,d=0,s,v;++h>h%8,b._prev=g(b._prev,f?s:v);return d}function g(b,w){var f=b.length,y=-1,h=u.allocUnsafe(b.length);for(b=u.concat([b,u.from([w])]);++y>7;return h}_.encrypt=function(b,w,f){for(var y=w.length,h=u.allocUnsafe(y),l=-1;++l=0||!l.umod(y.prime1)||!l.umod(y.prime2);)l=new m(g(h));return l}}).call(this,e("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(e,x,_){arguments[4][181][0].apply(_,arguments)},{buffer:185,dup:181}],208:[function(e,x,_){x.exports=e("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(e,x,_){x.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,x,_){x.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,x,_){var u=e("safe-buffer").Buffer,m=e("create-hash"),g=e("readable-stream"),b=e("inherits"),w=e("./sign"),f=e("./verify"),y=e("./algorithms.json");Object.keys(y).forEach(function(v){y[v].id=u.from(y[v].id,"hex"),y[v.toLowerCase()]=y[v]});function h(v){g.Writable.call(this);var c=y[v];if(!c)throw new Error("Unknown message digest");this._hashType=c.hash,this._hash=m(c.hash),this._tag=c.id,this._signType=c.sign}b(h,g.Writable),h.prototype._write=function(c,a,r){this._hash.update(c),r()},h.prototype.update=function(c,a){return typeof c=="string"&&(c=u.from(c,a)),this._hash.update(c),this},h.prototype.sign=function(c,a){this.end();var r=this._hash.digest(),t=w(r,c,this._hashType,this._signType,this._tag);return a?t.toString(a):t};function l(v){g.Writable.call(this);var c=y[v];if(!c)throw new Error("Unknown message digest");this._hash=m(c.hash),this._tag=c.id,this._signType=c.sign}b(l,g.Writable),l.prototype._write=function(c,a,r){this._hash.update(c),r()},l.prototype.update=function(c,a){return typeof c=="string"&&(c=u.from(c,a)),this._hash.update(c),this},l.prototype.verify=function(c,a,r){typeof a=="string"&&(a=u.from(a,r)),this.end();var t=this._hash.digest();return f(a,t,c,this._signType,this._tag)};function d(v){return new h(v)}function s(v){return new l(v)}x.exports={Sign:d,Verify:s,createSign:d,createVerify:s}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(e,x,_){var u=e("safe-buffer").Buffer,m=e("create-hmac"),g=e("browserify-rsa"),b=e("elliptic").ec,w=e("bn.js"),f=e("parse-asn1"),y=e("./curves.json");function h(i,n,o,p,O){var C=f(n);if(C.curve){if(p!=="ecdsa"&&p!=="ecdsa/rsa")throw new Error("wrong private key type");return l(i,C)}else if(C.type==="dsa"){if(p!=="dsa")throw new Error("wrong private key type");return d(i,C,o)}else if(p!=="rsa"&&p!=="ecdsa/rsa")throw new Error("wrong private key type");i=u.concat([O,i]);for(var N=C.modulus.byteLength(),L=[0,1];i.length+L.length+10&&o.ishrn(p),o}function a(i,n){i=c(i,n),i=i.mod(n);var o=u.from(i.toArray());if(o.length=s)throw new Error("invalid sig")}x.exports=f},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(e,x,_){/*! safe-buffer. MIT License. Feross Aboukhadijeh */var u=e("buffer"),m=u.Buffer;function g(w,f){for(var y in w)f[y]=w[y]}m.from&&m.alloc&&m.allocUnsafe&&m.allocUnsafeSlow?x.exports=u:(g(u,_),_.Buffer=b);function b(w,f,y){return m(w,f,y)}b.prototype=Object.create(m.prototype),g(m,b),b.from=function(w,f,y){if(typeof w=="number")throw new TypeError("Argument must not be a number");return m(w,f,y)},b.alloc=function(w,f,y){if(typeof w!="number")throw new TypeError("Argument must be a number");var h=m(w);return f!==void 0?typeof y=="string"?h.fill(f,y):h.fill(f):h.fill(0),h},b.allocUnsafe=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return m(w)},b.allocUnsafeSlow=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return u.SlowBuffer(w)}},{buffer:216}],215:[function(e,x,_){arguments[4][185][0].apply(_,arguments)},{dup:185}],216:[function(e,x,_){(function(h){function m(q){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(Z){return typeof Z}:m=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},m(q)}var g=e("base64-js"),b=e("ieee754");_.Buffer=h,_.SlowBuffer=n,_.INSPECT_MAX_BYTES=50;var w=2147483647;_.kMaxLength=w,h.TYPED_ARRAY_SUPPORT=f(),!h.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 f(){try{var q=new Uint8Array(1);return q.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},q.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}}),Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}});function y(q){if(q>w)throw new RangeError('The value "'+q+'" is invalid for option "size"');var G=new Uint8Array(q);return G.__proto__=h.prototype,G}function h(q,G,Z){if(typeof q=="number"){if(typeof G=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return v(q)}return l(q,G,Z)}typeof Symbol<"u"&&Symbol.species!=null&&h[Symbol.species]===h&&Object.defineProperty(h,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),h.poolSize=8192;function l(q,G,Z){if(typeof q=="string")return c(q,G);if(ArrayBuffer.isView(q))return a(q);if(q==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+m(q));if(se(q,ArrayBuffer)||q&&se(q.buffer,ArrayBuffer))return r(q,G,Z);if(typeof q=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var fe=q.valueOf&&q.valueOf();if(fe!=null&&fe!==q)return h.from(fe,G,Z);var we=t(q);if(we)return we;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof q[Symbol.toPrimitive]=="function")return h.from(q[Symbol.toPrimitive]("string"),G,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+m(q))}h.from=function(q,G,Z){return l(q,G,Z)},h.prototype.__proto__=Uint8Array.prototype,h.__proto__=Uint8Array;function d(q){if(typeof q!="number")throw new TypeError('"size" argument must be of type number');if(q<0)throw new RangeError('The value "'+q+'" is invalid for option "size"')}function s(q,G,Z){return d(q),q<=0?y(q):G!==void 0?typeof Z=="string"?y(q).fill(G,Z):y(q).fill(G):y(q)}h.alloc=function(q,G,Z){return s(q,G,Z)};function v(q){return d(q),y(q<0?0:i(q)|0)}h.allocUnsafe=function(q){return v(q)},h.allocUnsafeSlow=function(q){return v(q)};function c(q,G){if((typeof G!="string"||G==="")&&(G="utf8"),!h.isEncoding(G))throw new TypeError("Unknown encoding: "+G);var Z=o(q,G)|0,fe=y(Z),we=fe.write(q,G);return we!==Z&&(fe=fe.slice(0,we)),fe}function a(q){for(var G=q.length<0?0:i(q.length)|0,Z=y(G),fe=0;fe=w)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+w.toString(16)+" bytes");return q|0}function n(q){return+q!=q&&(q=0),h.alloc(+q)}h.isBuffer=function(G){return G!=null&&G._isBuffer===!0&&G!==h.prototype},h.compare=function(G,Z){if(se(G,Uint8Array)&&(G=h.from(G,G.offset,G.byteLength)),se(Z,Uint8Array)&&(Z=h.from(Z,Z.offset,Z.byteLength)),!h.isBuffer(G)||!h.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(G===Z)return 0;for(var fe=G.length,we=Z.length,ge=0,je=Math.min(fe,we);ge2&&arguments[2]===!0;if(!fe&&Z===0)return 0;for(var we=!1;;)switch(G){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return J(q).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z*2;case"hex":return Z>>>1;case"base64":return ke(q).length;default:if(we)return fe?-1:J(q).length;G=(""+G).toLowerCase(),we=!0}}h.byteLength=o;function p(q,G,Z){var fe=!1;if((G===void 0||G<0)&&(G=0),G>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0,G>>>=0,Z<=G))return"";for(q||(q="utf8");;)switch(q){case"hex":return I(this,G,Z);case"utf8":case"utf-8":return A(this,G,Z);case"ascii":return $(this,G,Z);case"latin1":case"binary":return U(this,G,Z);case"base64":return E(this,G,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,G,Z);default:if(fe)throw new TypeError("Unknown encoding: "+q);q=(q+"").toLowerCase(),fe=!0}}h.prototype._isBuffer=!0;function O(q,G,Z){var fe=q[G];q[G]=q[Z],q[Z]=fe}h.prototype.swap16=function(){var G=this.length;if(G%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Z=0;ZZ&&(G+=" ... "),""},h.prototype.compare=function(G,Z,fe,we,ge){if(se(G,Uint8Array)&&(G=h.from(G,G.offset,G.byteLength)),!h.isBuffer(G))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+m(G));if(Z===void 0&&(Z=0),fe===void 0&&(fe=G?G.length:0),we===void 0&&(we=0),ge===void 0&&(ge=this.length),Z<0||fe>G.length||we<0||ge>this.length)throw new RangeError("out of range index");if(we>=ge&&Z>=fe)return 0;if(we>=ge)return-1;if(Z>=fe)return 1;if(Z>>>=0,fe>>>=0,we>>>=0,ge>>>=0,this===G)return 0;for(var je=ge-we,Ze=fe-Z,nt=Math.min(je,Ze),ut=this.slice(we,ge),ot=G.slice(Z,fe),Ue=0;Ue2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Z=+Z,Ce(Z)&&(Z=we?0:q.length-1),Z<0&&(Z=q.length+Z),Z>=q.length){if(we)return-1;Z=q.length-1}else if(Z<0)if(we)Z=0;else return-1;if(typeof G=="string"&&(G=h.from(G,fe)),h.isBuffer(G))return G.length===0?-1:N(q,G,Z,fe,we);if(typeof G=="number")return G=G&255,typeof Uint8Array.prototype.indexOf=="function"?we?Uint8Array.prototype.indexOf.call(q,G,Z):Uint8Array.prototype.lastIndexOf.call(q,G,Z):N(q,[G],Z,fe,we);throw new TypeError("val must be string, number or Buffer")}function N(q,G,Z,fe,we){var ge=1,je=q.length,Ze=G.length;if(fe!==void 0&&(fe=String(fe).toLowerCase(),fe==="ucs2"||fe==="ucs-2"||fe==="utf16le"||fe==="utf-16le")){if(q.length<2||G.length<2)return-1;ge=2,je/=2,Ze/=2,Z/=2}function nt(Qe,tt){return ge===1?Qe[tt]:Qe.readUInt16BE(tt*ge)}var ut;if(we){var ot=-1;for(ut=Z;utje&&(Z=je-Ze),ut=Z;ut>=0;ut--){for(var Ue=!0,Ve=0;Vewe&&(fe=we)):fe=we;var ge=G.length;fe>ge/2&&(fe=ge/2);for(var je=0;je>>0,isFinite(fe)?(fe=fe>>>0,we===void 0&&(we="utf8")):(we=fe,fe=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var ge=this.length-Z;if((fe===void 0||fe>ge)&&(fe=ge),G.length>0&&(fe<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");we||(we="utf8");for(var je=!1;;)switch(we){case"hex":return L(this,G,Z,fe);case"utf8":case"utf-8":return F(this,G,Z,fe);case"ascii":return M(this,G,Z,fe);case"latin1":case"binary":return D(this,G,Z,fe);case"base64":return R(this,G,Z,fe);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,G,Z,fe);default:if(je)throw new TypeError("Unknown encoding: "+we);we=(""+we).toLowerCase(),je=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function E(q,G,Z){return G===0&&Z===q.length?g.fromByteArray(q):g.fromByteArray(q.slice(G,Z))}function A(q,G,Z){Z=Math.min(q.length,Z);for(var fe=[],we=G;we239?4:ge>223?3:ge>191?2:1;if(we+Ze<=Z){var nt,ut,ot,Ue;switch(Ze){case 1:ge<128&&(je=ge);break;case 2:nt=q[we+1],(nt&192)===128&&(Ue=(ge&31)<<6|nt&63,Ue>127&&(je=Ue));break;case 3:nt=q[we+1],ut=q[we+2],(nt&192)===128&&(ut&192)===128&&(Ue=(ge&15)<<12|(nt&63)<<6|ut&63,Ue>2047&&(Ue<55296||Ue>57343)&&(je=Ue));break;case 4:nt=q[we+1],ut=q[we+2],ot=q[we+3],(nt&192)===128&&(ut&192)===128&&(ot&192)===128&&(Ue=(ge&15)<<18|(nt&63)<<12|(ut&63)<<6|ot&63,Ue>65535&&Ue<1114112&&(je=Ue))}}je===null?(je=65533,Ze=1):je>65535&&(je-=65536,fe.push(je>>>10&1023|55296),je=56320|je&1023),fe.push(je),we+=Ze}return W(fe)}var z=4096;function W(q){var G=q.length;if(G<=z)return String.fromCharCode.apply(String,q);for(var Z="",fe=0;fefe)&&(Z=fe);for(var we="",ge=G;gefe&&(G=fe),Z<0?(Z+=fe,Z<0&&(Z=0)):Z>fe&&(Z=fe),ZZ)throw new RangeError("Trying to access beyond buffer length")}h.prototype.readUIntLE=function(G,Z,fe){G=G>>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=this[G],ge=1,je=0;++je>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=this[G+--Z],ge=1;Z>0&&(ge*=256);)we+=this[G+--Z]*ge;return we},h.prototype.readUInt8=function(G,Z){return G=G>>>0,Z||B(G,1,this.length),this[G]},h.prototype.readUInt16LE=function(G,Z){return G=G>>>0,Z||B(G,2,this.length),this[G]|this[G+1]<<8},h.prototype.readUInt16BE=function(G,Z){return G=G>>>0,Z||B(G,2,this.length),this[G]<<8|this[G+1]},h.prototype.readUInt32LE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),(this[G]|this[G+1]<<8|this[G+2]<<16)+this[G+3]*16777216},h.prototype.readUInt32BE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),this[G]*16777216+(this[G+1]<<16|this[G+2]<<8|this[G+3])},h.prototype.readIntLE=function(G,Z,fe){G=G>>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=this[G],ge=1,je=0;++je=ge&&(we-=Math.pow(2,8*Z)),we},h.prototype.readIntBE=function(G,Z,fe){G=G>>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=Z,ge=1,je=this[G+--we];we>0&&(ge*=256);)je+=this[G+--we]*ge;return ge*=128,je>=ge&&(je-=Math.pow(2,8*Z)),je},h.prototype.readInt8=function(G,Z){return G=G>>>0,Z||B(G,1,this.length),this[G]&128?(255-this[G]+1)*-1:this[G]},h.prototype.readInt16LE=function(G,Z){G=G>>>0,Z||B(G,2,this.length);var fe=this[G]|this[G+1]<<8;return fe&32768?fe|4294901760:fe},h.prototype.readInt16BE=function(G,Z){G=G>>>0,Z||B(G,2,this.length);var fe=this[G+1]|this[G]<<8;return fe&32768?fe|4294901760:fe},h.prototype.readInt32LE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),this[G]|this[G+1]<<8|this[G+2]<<16|this[G+3]<<24},h.prototype.readInt32BE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),this[G]<<24|this[G+1]<<16|this[G+2]<<8|this[G+3]},h.prototype.readFloatLE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),b.read(this,G,!0,23,4)},h.prototype.readFloatBE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),b.read(this,G,!1,23,4)},h.prototype.readDoubleLE=function(G,Z){return G=G>>>0,Z||B(G,8,this.length),b.read(this,G,!0,52,8)},h.prototype.readDoubleBE=function(G,Z){return G=G>>>0,Z||B(G,8,this.length),b.read(this,G,!1,52,8)};function V(q,G,Z,fe,we,ge){if(!h.isBuffer(q))throw new TypeError('"buffer" argument must be a Buffer instance');if(G>we||Gq.length)throw new RangeError("Index out of range")}h.prototype.writeUIntLE=function(G,Z,fe,we){if(G=+G,Z=Z>>>0,fe=fe>>>0,!we){var ge=Math.pow(2,8*fe)-1;V(this,G,Z,fe,ge,0)}var je=1,Ze=0;for(this[Z]=G&255;++Ze>>0,fe=fe>>>0,!we){var ge=Math.pow(2,8*fe)-1;V(this,G,Z,fe,ge,0)}var je=fe-1,Ze=1;for(this[Z+je]=G&255;--je>=0&&(Ze*=256);)this[Z+je]=G/Ze&255;return Z+fe},h.prototype.writeUInt8=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,1,255,0),this[Z]=G&255,Z+1},h.prototype.writeUInt16LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,65535,0),this[Z]=G&255,this[Z+1]=G>>>8,Z+2},h.prototype.writeUInt16BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,65535,0),this[Z]=G>>>8,this[Z+1]=G&255,Z+2},h.prototype.writeUInt32LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,4294967295,0),this[Z+3]=G>>>24,this[Z+2]=G>>>16,this[Z+1]=G>>>8,this[Z]=G&255,Z+4},h.prototype.writeUInt32BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,4294967295,0),this[Z]=G>>>24,this[Z+1]=G>>>16,this[Z+2]=G>>>8,this[Z+3]=G&255,Z+4},h.prototype.writeIntLE=function(G,Z,fe,we){if(G=+G,Z=Z>>>0,!we){var ge=Math.pow(2,8*fe-1);V(this,G,Z,fe,ge-1,-ge)}var je=0,Ze=1,nt=0;for(this[Z]=G&255;++je>0)-nt&255;return Z+fe},h.prototype.writeIntBE=function(G,Z,fe,we){if(G=+G,Z=Z>>>0,!we){var ge=Math.pow(2,8*fe-1);V(this,G,Z,fe,ge-1,-ge)}var je=fe-1,Ze=1,nt=0;for(this[Z+je]=G&255;--je>=0&&(Ze*=256);)G<0&&nt===0&&this[Z+je+1]!==0&&(nt=1),this[Z+je]=(G/Ze>>0)-nt&255;return Z+fe},h.prototype.writeInt8=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,1,127,-128),G<0&&(G=255+G+1),this[Z]=G&255,Z+1},h.prototype.writeInt16LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,32767,-32768),this[Z]=G&255,this[Z+1]=G>>>8,Z+2},h.prototype.writeInt16BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,32767,-32768),this[Z]=G>>>8,this[Z+1]=G&255,Z+2},h.prototype.writeInt32LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,2147483647,-2147483648),this[Z]=G&255,this[Z+1]=G>>>8,this[Z+2]=G>>>16,this[Z+3]=G>>>24,Z+4},h.prototype.writeInt32BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,2147483647,-2147483648),G<0&&(G=4294967295+G+1),this[Z]=G>>>24,this[Z+1]=G>>>16,this[Z+2]=G>>>8,this[Z+3]=G&255,Z+4};function te(q,G,Z,fe,we,ge){if(Z+fe>q.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function ie(q,G,Z,fe,we){return G=+G,Z=Z>>>0,we||te(q,G,Z,4),b.write(q,G,Z,fe,23,4),Z+4}h.prototype.writeFloatLE=function(G,Z,fe){return ie(this,G,Z,!0,fe)},h.prototype.writeFloatBE=function(G,Z,fe){return ie(this,G,Z,!1,fe)};function ce(q,G,Z,fe,we){return G=+G,Z=Z>>>0,we||te(q,G,Z,8),b.write(q,G,Z,fe,52,8),Z+8}h.prototype.writeDoubleLE=function(G,Z,fe){return ce(this,G,Z,!0,fe)},h.prototype.writeDoubleBE=function(G,Z,fe){return ce(this,G,Z,!1,fe)},h.prototype.copy=function(G,Z,fe,we){if(!h.isBuffer(G))throw new TypeError("argument should be a Buffer");if(fe||(fe=0),!we&&we!==0&&(we=this.length),Z>=G.length&&(Z=G.length),Z||(Z=0),we>0&&we=this.length)throw new RangeError("Index out of range");if(we<0)throw new RangeError("sourceEnd out of bounds");we>this.length&&(we=this.length),G.length-Z=0;--je)G[je+Z]=this[je+fe];else Uint8Array.prototype.set.call(G,this.subarray(fe,we),Z);return ge},h.prototype.fill=function(G,Z,fe,we){if(typeof G=="string"){if(typeof Z=="string"?(we=Z,Z=0,fe=this.length):typeof fe=="string"&&(we=fe,fe=this.length),we!==void 0&&typeof we!="string")throw new TypeError("encoding must be a string");if(typeof we=="string"&&!h.isEncoding(we))throw new TypeError("Unknown encoding: "+we);if(G.length===1){var ge=G.charCodeAt(0);(we==="utf8"&&ge<128||we==="latin1")&&(G=ge)}}else typeof G=="number"&&(G=G&255);if(Z<0||this.length>>0,fe=fe===void 0?this.length:fe>>>0,G||(G=0);var je;if(typeof G=="number")for(je=Z;je55295&&Z<57344){if(!we){if(Z>56319){(G-=3)>-1&&ge.push(239,191,189);continue}else if(je+1===fe){(G-=3)>-1&&ge.push(239,191,189);continue}we=Z;continue}if(Z<56320){(G-=3)>-1&&ge.push(239,191,189),we=Z;continue}Z=(we-55296<<10|Z-56320)+65536}else we&&(G-=3)>-1&&ge.push(239,191,189);if(we=null,Z<128){if((G-=1)<0)break;ge.push(Z)}else if(Z<2048){if((G-=2)<0)break;ge.push(Z>>6|192,Z&63|128)}else if(Z<65536){if((G-=3)<0)break;ge.push(Z>>12|224,Z>>6&63|128,Z&63|128)}else if(Z<1114112){if((G-=4)<0)break;ge.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,Z&63|128)}else throw new Error("Invalid code point")}return ge}function Q(q){for(var G=[],Z=0;Z>8,we=Z%256,ge.push(we),ge.push(fe);return ge}function ke(q){return g.toByteArray(_e(q))}function re(q,G,Z,fe){for(var we=0;we=G.length||we>=q.length);++we)G[we+Z]=q[we];return we}function se(q,G){return q instanceof G||q!=null&&q.constructor!=null&&q.constructor.name!=null&&q.constructor.name===G.name}function Ce(q){return q!==q}}).call(this,e("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(e,x,_){(function(u){x.exports=function(g,b){for(var w=Math.min(g.length,b.length),f=new u(w),y=0;ys;)if(v=l[s++],v!=v)return!0}else for(;d>s;s++)if((w||s in l)&&l[s]===y)return w||s||0;return!w&&-1}};x.exports={includes:b(!0),indexOf:b(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(e,x,_){var u=e("../internals/function-bind-context"),m=e("../internals/indexed-object"),g=e("../internals/to-object"),b=e("../internals/to-length"),w=e("../internals/array-species-create"),f=[].push,y=function(h){var l=h==1,d=h==2,s=h==3,v=h==4,c=h==6,a=h==5||c;return function(r,t,i,n){for(var o=g(r),p=m(o),O=u(t,i,3),C=b(p.length),N=0,L=n||w,F=l?L(r,C):d?L(r,0):void 0,M,D;C>N;N++)if((a||N in p)&&(M=p[N],D=O(M,N,o),h)){if(l)F[N]=D;else if(D)switch(h){case 3:return!0;case 5:return M;case 6:return N;case 2:f.call(F,M)}else if(v)return!1}return c?-1:s||v?v:F}};x.exports={forEach:y(0),map:y(1),filter:y(2),some:y(3),every:y(4),find:y(5),findIndex:y(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,x,_){var u=e("../internals/descriptors"),m=e("../internals/fails"),g=e("../internals/has"),b=Object.defineProperty,w={},f=function(y){throw y};x.exports=function(y,h){if(g(w,y))return w[y];h||(h={});var l=[][y],d=g(h,"ACCESSORS")?h.ACCESSORS:!1,s=g(h,0)?h[0]:f,v=g(h,1)?h[1]:void 0;return w[y]=!!l&&!m(function(){if(d&&!u)return!0;var c={length:-1};d?b(c,1,{enumerable:!0,get:f}):c[1]=1,l.call(c,s,v)})}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(e,x,_){var u=e("../internals/is-object"),m=e("../internals/is-array"),g=e("../internals/well-known-symbol"),b=g("species");x.exports=function(w,f){var y;return m(w)&&(y=w.constructor,typeof y=="function"&&(y===Array||m(y.prototype))?y=void 0:u(y)&&(y=y[b],y===null&&(y=void 0))),new(y===void 0?Array:y)(f===0?0:f)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(e,x,_){var u=e("../internals/an-object");x.exports=function(m,g,b,w){try{return w?g(u(b)[0],b[1]):g(b)}catch(y){var f=m.return;throw f!==void 0&&u(f.call(m)),y}}},{"../internals/an-object":223}],229:[function(e,x,_){var u=e("../internals/well-known-symbol"),m=u("iterator"),g=!1;try{var b=0,w={next:function(){return{done:!!b++}},return:function(){g=!0}};w[m]=function(){return this},Array.from(w,function(){throw 2})}catch{}x.exports=function(f,y){if(!y&&!g)return!1;var h=!1;try{var l={};l[m]=function(){return{next:function(){return{done:h=!0}}}},f(l)}catch{}return h}},{"../internals/well-known-symbol":314}],230:[function(e,x,_){var u={}.toString;x.exports=function(m){return u.call(m).slice(8,-1)}},{}],231:[function(e,x,_){var u=e("../internals/to-string-tag-support"),m=e("../internals/classof-raw"),g=e("../internals/well-known-symbol"),b=g("toStringTag"),w=m(function(){return arguments}())=="Arguments",f=function(y,h){try{return y[h]}catch{}};x.exports=u?m:function(y){var h,l,d;return y===void 0?"Undefined":y===null?"Null":typeof(l=f(h=Object(y),b))=="string"?l:w?m(h):(d=m(h))=="Object"&&typeof h.callee=="function"?"Arguments":d}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(e,x,_){var u=e("../internals/has"),m=e("../internals/own-keys"),g=e("../internals/object-get-own-property-descriptor"),b=e("../internals/object-define-property");x.exports=function(w,f){for(var y=m(f),h=b.f,l=g.f,d=0;d=74)&&(f=m.match(/Chrome\/(\d+)/),f&&(y=f[1]))),x.exports=y&&+y},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(e,x,_){x.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/object-get-own-property-descriptor").f,g=e("../internals/create-non-enumerable-property"),b=e("../internals/redefine"),w=e("../internals/set-global"),f=e("../internals/copy-constructor-properties"),y=e("../internals/is-forced");x.exports=function(h,l){var d=h.target,s=h.global,v=h.stat,c,a,r,t,i,n;if(s?a=u:v?a=u[d]||w(d,{}):a=(u[d]||{}).prototype,a)for(r in l){if(i=l[r],h.noTargetGet?(n=m(a,r),t=n&&n.value):t=a[r],c=y(s?r:d+(v?".":"#")+r,h.forced),!c&&t!==void 0){if(typeof i==typeof t)continue;f(i,t)}(h.sham||t&&t.sham)&&g(i,"sham",!0),b(a,r,i,h)}}},{"../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,x,_){x.exports=function(u){try{return!!u()}catch{return!0}}},{}],248:[function(e,x,_){var u=e("../internals/a-function");x.exports=function(m,g,b){if(u(m),g===void 0)return m;switch(b){case 0:return function(){return m.call(g)};case 1:return function(w){return m.call(g,w)};case 2:return function(w,f){return m.call(g,w,f)};case 3:return function(w,f,y){return m.call(g,w,f,y)}}return function(){return m.apply(g,arguments)}}},{"../internals/a-function":219}],249:[function(e,x,_){var u=e("../internals/path"),m=e("../internals/global"),g=function(b){return typeof b=="function"?b:void 0};x.exports=function(b,w){return arguments.length<2?g(u[b])||g(m[b]):u[b]&&u[b][w]||m[b]&&m[b][w]}},{"../internals/global":251,"../internals/path":290}],250:[function(e,x,_){var u=e("../internals/classof"),m=e("../internals/iterators"),g=e("../internals/well-known-symbol"),b=g("iterator");x.exports=function(w){if(w!=null)return w[b]||w["@@iterator"]||m[u(w)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(e,x,_){(function(u){var m=function(g){return g&&g.Math==Math&&g};x.exports=m(typeof globalThis=="object"&&globalThis)||m(typeof window=="object"&&window)||m(typeof self=="object"&&self)||m(typeof u=="object"&&u)||Function("return this")()}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],252:[function(e,x,_){var u={}.hasOwnProperty;x.exports=function(m,g){return u.call(m,g)}},{}],253:[function(e,x,_){x.exports={}},{}],254:[function(e,x,_){var u=e("../internals/global");x.exports=function(m,g){var b=u.console;b&&b.error&&(arguments.length===1?b.error(m):b.error(m,g))}},{"../internals/global":251}],255:[function(e,x,_){var u=e("../internals/get-built-in");x.exports=u("document","documentElement")},{"../internals/get-built-in":249}],256:[function(e,x,_){var u=e("../internals/descriptors"),m=e("../internals/fails"),g=e("../internals/document-create-element");x.exports=!u&&!m(function(){return Object.defineProperty(g("div"),"a",{get:function(){return 7}}).a!=7})},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(e,x,_){var u=e("../internals/fails"),m=e("../internals/classof-raw"),g="".split;x.exports=u(function(){return!Object("z").propertyIsEnumerable(0)})?function(b){return m(b)=="String"?g.call(b,""):Object(b)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(e,x,_){var u=e("../internals/shared-store"),m=Function.toString;typeof u.inspectSource!="function"&&(u.inspectSource=function(g){return m.call(g)}),x.exports=u.inspectSource},{"../internals/shared-store":300}],259:[function(e,x,_){var u=e("../internals/native-weak-map"),m=e("../internals/global"),g=e("../internals/is-object"),b=e("../internals/create-non-enumerable-property"),w=e("../internals/has"),f=e("../internals/shared-key"),y=e("../internals/hidden-keys"),h=m.WeakMap,l,d,s,v=function(o){return s(o)?d(o):l(o,{})},c=function(o){return function(p){var O;if(!g(p)||(O=d(p)).type!==o)throw TypeError("Incompatible receiver, "+o+" required");return O}};if(u){var a=new h,r=a.get,t=a.has,i=a.set;l=function(o,p){return i.call(a,o,p),p},d=function(o){return r.call(a,o)||{}},s=function(o){return t.call(a,o)}}else{var n=f("state");y[n]=!0,l=function(o,p){return b(o,n,p),p},d=function(o){return w(o,n)?o[n]:{}},s=function(o){return w(o,n)}}x.exports={set:l,get:d,has:s,enforce:v,getterFor:c}},{"../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,x,_){var u=e("../internals/well-known-symbol"),m=e("../internals/iterators"),g=u("iterator"),b=Array.prototype;x.exports=function(w){return w!==void 0&&(m.Array===w||b[g]===w)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(e,x,_){var u=e("../internals/classof-raw");x.exports=Array.isArray||function(g){return u(g)=="Array"}},{"../internals/classof-raw":230}],262:[function(e,x,_){var u=e("../internals/fails"),m=/#|\.prototype\./,g=function(h,l){var d=w[b(h)];return d==y?!0:d==f?!1:typeof l=="function"?u(l):!!l},b=g.normalize=function(h){return String(h).replace(m,".").toLowerCase()},w=g.data={},f=g.NATIVE="N",y=g.POLYFILL="P";x.exports=g},{"../internals/fails":247}],263:[function(e,x,_){x.exports=function(u){return typeof u=="object"?u!==null:typeof u=="function"}},{}],264:[function(e,x,_){x.exports=!1},{}],265:[function(e,x,_){var u=e("../internals/is-object"),m=e("../internals/classof-raw"),g=e("../internals/well-known-symbol"),b=g("match");x.exports=function(w){var f;return u(w)&&((f=w[b])!==void 0?!!f:m(w)=="RegExp")}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(e,x,_){var u=e("../internals/an-object"),m=e("../internals/is-array-iterator-method"),g=e("../internals/to-length"),b=e("../internals/function-bind-context"),w=e("../internals/get-iterator-method"),f=e("../internals/call-with-safe-iteration-closing"),y=function(l,d){this.stopped=l,this.result=d},h=x.exports=function(l,d,s,v,c){var a=b(d,s,v?2:1),r,t,i,n,o,p,O;if(c)r=l;else{if(t=w(l),typeof t!="function")throw TypeError("Target is not iterable");if(m(t)){for(i=0,n=g(l.length);n>i;i++)if(o=v?a(u(O=l[i])[0],O[1]):a(l[i]),o&&o instanceof y)return o;return new y(!1)}r=t.call(l)}for(p=r.next;!(O=p.call(r)).done;)if(o=f(r,a,O.value,v),typeof o=="object"&&o&&o instanceof y)return o;return new y(!1)};h.stop=function(l){return new y(!0,l)}},{"../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,x,_){var u=e("../internals/object-get-prototype-of"),m=e("../internals/create-non-enumerable-property"),g=e("../internals/has"),b=e("../internals/well-known-symbol"),w=e("../internals/is-pure"),f=b("iterator"),y=!1,h=function(){return this},l,d,s;[].keys&&(s=[].keys(),"next"in s?(d=u(u(s)),d!==Object.prototype&&(l=d)):y=!0),l==null&&(l={}),!w&&!g(l,f)&&m(l,f,h),x.exports={IteratorPrototype:l,BUGGY_SAFARI_ITERATORS:y}},{"../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,x,_){arguments[4][253][0].apply(_,arguments)},{dup:253}],269:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/object-get-own-property-descriptor").f,g=e("../internals/classof-raw"),b=e("../internals/task").set,w=e("../internals/engine-is-ios"),f=u.MutationObserver||u.WebKitMutationObserver,y=u.process,h=u.Promise,l=g(y)=="process",d=m(u,"queueMicrotask"),s=d&&d.value,v,c,a,r,t,i,n,o;s||(v=function(){var p,O;for(l&&(p=y.domain)&&p.exit();c;){O=c.fn,c=c.next;try{O()}catch(C){throw c?r():a=void 0,C}}a=void 0,p&&p.enter()},l?r=function(){y.nextTick(v)}:f&&!w?(t=!0,i=document.createTextNode(""),new f(v).observe(i,{characterData:!0}),r=function(){i.data=t=!t}):h&&h.resolve?(n=h.resolve(void 0),o=n.then,r=function(){o.call(n,v)}):r=function(){b.call(u,v)}),x.exports=s||function(p){var O={fn:p,next:void 0};a&&(a.next=O),c||(c=O,r()),a=O}},{"../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,x,_){var u=e("../internals/global");x.exports=u.Promise},{"../internals/global":251}],271:[function(e,x,_){var u=e("../internals/fails");x.exports=!!Object.getOwnPropertySymbols&&!u(function(){return!String(Symbol())})},{"../internals/fails":247}],272:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/inspect-source"),g=u.WeakMap;x.exports=typeof g=="function"&&/native code/.test(m(g))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(e,x,_){var u=e("../internals/a-function"),m=function(g){var b,w;this.promise=new g(function(f,y){if(b!==void 0||w!==void 0)throw TypeError("Bad Promise constructor");b=f,w=y}),this.resolve=u(b),this.reject=u(w)};x.exports.f=function(g){return new m(g)}},{"../internals/a-function":219}],274:[function(e,x,_){var u=e("../internals/is-regexp");x.exports=function(m){if(u(m))throw TypeError("The method doesn't accept regular expressions");return m}},{"../internals/is-regexp":265}],275:[function(e,x,_){var u=e("../internals/descriptors"),m=e("../internals/fails"),g=e("../internals/object-keys"),b=e("../internals/object-get-own-property-symbols"),w=e("../internals/object-property-is-enumerable"),f=e("../internals/to-object"),y=e("../internals/indexed-object"),h=Object.assign,l=Object.defineProperty;x.exports=!h||m(function(){if(u&&h({b:1},h(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var d={},s={},v=Symbol(),c="abcdefghijklmnopqrst";return d[v]=7,c.split("").forEach(function(a){s[a]=a}),h({},d)[v]!=7||g(h({},s)).join("")!=c})?function(s,v){for(var c=f(s),a=arguments.length,r=1,t=b.f,i=w.f;a>r;)for(var n=y(arguments[r++]),o=t?g(n).concat(t(n)):g(n),p=o.length,O=0,C;p>O;)C=o[O++],(!u||i.call(n,C))&&(c[C]=n[C]);return c}:h},{"../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,x,_){var u=e("../internals/an-object"),m=e("../internals/object-define-properties"),g=e("../internals/enum-bug-keys"),b=e("../internals/hidden-keys"),w=e("../internals/html"),f=e("../internals/document-create-element"),y=e("../internals/shared-key"),h=">",l="<",d="prototype",s="script",v=y("IE_PROTO"),c=function(){},a=function(o){return l+s+h+o+l+"/"+s+h},r=function(o){o.write(a("")),o.close();var p=o.parentWindow.Object;return o=null,p},t=function(){var o=f("iframe"),p="java"+s+":",O;return o.style.display="none",w.appendChild(o),o.src=String(p),O=o.contentWindow.document,O.open(),O.write(a("document.F=Object")),O.close(),O.F},i,n=function(){try{i=document.domain&&new ActiveXObject("htmlfile")}catch{}n=i?r(i):t();for(var o=g.length;o--;)delete n[d][g[o]];return n()};b[v]=!0,x.exports=Object.create||function(p,O){var C;return p!==null?(c[d]=u(p),C=new c,c[d]=null,C[v]=p):C=n(),O===void 0?C:m(C,O)}},{"../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,x,_){var u=e("../internals/descriptors"),m=e("../internals/object-define-property"),g=e("../internals/an-object"),b=e("../internals/object-keys");x.exports=u?Object.defineProperties:function(f,y){g(f);for(var h=b(y),l=h.length,d=0,s;l>d;)m.f(f,s=h[d++],y[s]);return f}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(e,x,_){var u=e("../internals/descriptors"),m=e("../internals/ie8-dom-define"),g=e("../internals/an-object"),b=e("../internals/to-primitive"),w=Object.defineProperty;_.f=u?w:function(y,h,l){if(g(y),h=b(h,!0),g(l),m)try{return w(y,h,l)}catch{}if("get"in l||"set"in l)throw TypeError("Accessors not supported");return"value"in l&&(y[h]=l.value),y}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(e,x,_){var u=e("../internals/descriptors"),m=e("../internals/object-property-is-enumerable"),g=e("../internals/create-property-descriptor"),b=e("../internals/to-indexed-object"),w=e("../internals/to-primitive"),f=e("../internals/has"),y=e("../internals/ie8-dom-define"),h=Object.getOwnPropertyDescriptor;_.f=u?h:function(d,s){if(d=b(d),s=w(s,!0),y)try{return h(d,s)}catch{}if(f(d,s))return g(!m.f.call(d,s),d[s])}},{"../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,x,_){var u=e("../internals/to-indexed-object"),m=e("../internals/object-get-own-property-names").f,g={}.toString,b=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],w=function(f){try{return m(f)}catch{return b.slice()}};x.exports.f=function(y){return b&&g.call(y)=="[object Window]"?w(y):m(u(y))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(e,x,_){var u=e("../internals/object-keys-internal"),m=e("../internals/enum-bug-keys"),g=m.concat("length","prototype");_.f=Object.getOwnPropertyNames||function(w){return u(w,g)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(e,x,_){_.f=Object.getOwnPropertySymbols},{}],283:[function(e,x,_){var u=e("../internals/has"),m=e("../internals/to-object"),g=e("../internals/shared-key"),b=e("../internals/correct-prototype-getter"),w=g("IE_PROTO"),f=Object.prototype;x.exports=b?Object.getPrototypeOf:function(y){return y=m(y),u(y,w)?y[w]:typeof y.constructor=="function"&&y instanceof y.constructor?y.constructor.prototype:y instanceof Object?f:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(e,x,_){var u=e("../internals/has"),m=e("../internals/to-indexed-object"),g=e("../internals/array-includes").indexOf,b=e("../internals/hidden-keys");x.exports=function(w,f){var y=m(w),h=0,l=[],d;for(d in y)!u(b,d)&&u(y,d)&&l.push(d);for(;f.length>h;)u(y,d=f[h++])&&(~g(l,d)||l.push(d));return l}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(e,x,_){var u=e("../internals/object-keys-internal"),m=e("../internals/enum-bug-keys");x.exports=Object.keys||function(b){return u(b,m)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(e,x,_){var u={}.propertyIsEnumerable,m=Object.getOwnPropertyDescriptor,g=m&&!u.call({1:2},1);_.f=g?function(w){var f=m(this,w);return!!f&&f.enumerable}:u},{}],287:[function(e,x,_){var u=e("../internals/an-object"),m=e("../internals/a-possible-prototype");x.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var g=!1,b={},w;try{w=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,w.call(b,[]),g=b instanceof Array}catch{}return function(y,h){return u(y),m(h),g?w.call(y,h):y.__proto__=h,y}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(e,x,_){var u=e("../internals/descriptors"),m=e("../internals/object-keys"),g=e("../internals/to-indexed-object"),b=e("../internals/object-property-is-enumerable").f,w=function(f){return function(y){for(var h=g(y),l=m(h),d=l.length,s=0,v=[],c;d>s;)c=l[s++],(!u||b.call(h,c))&&v.push(f?[c,h[c]]:h[c]);return v}};x.exports={entries:w(!0),values:w(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(e,x,_){var u=e("../internals/get-built-in"),m=e("../internals/object-get-own-property-names"),g=e("../internals/object-get-own-property-symbols"),b=e("../internals/an-object");x.exports=u("Reflect","ownKeys")||function(f){var y=m.f(b(f)),h=g.f;return h?y.concat(h(f)):y}},{"../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,x,_){var u=e("../internals/global");x.exports=u},{"../internals/global":251}],291:[function(e,x,_){x.exports=function(u){try{return{error:!1,value:u()}}catch(m){return{error:!0,value:m}}}},{}],292:[function(e,x,_){var u=e("../internals/an-object"),m=e("../internals/is-object"),g=e("../internals/new-promise-capability");x.exports=function(b,w){if(u(b),m(w)&&w.constructor===b)return w;var f=g.f(b),y=f.resolve;return y(w),f.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(e,x,_){var u=e("../internals/redefine");x.exports=function(m,g,b){for(var w in g)u(m,w,g[w],b);return m}},{"../internals/redefine":294}],294:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/create-non-enumerable-property"),g=e("../internals/has"),b=e("../internals/set-global"),w=e("../internals/inspect-source"),f=e("../internals/internal-state"),y=f.get,h=f.enforce,l=String(String).split("String");(x.exports=function(d,s,v,c){var a=c?!!c.unsafe:!1,r=c?!!c.enumerable:!1,t=c?!!c.noTargetGet:!1;if(typeof v=="function"&&(typeof s=="string"&&!g(v,"name")&&m(v,"name",s),h(v).source=l.join(typeof s=="string"?s:"")),d===u){r?d[s]=v:b(s,v);return}else a?!t&&d[s]&&(r=!0):delete d[s];r?d[s]=v:m(d,s,v)})(Function.prototype,"toString",function(){return typeof this=="function"&&y(this).source||w(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,x,_){x.exports=function(u){if(u==null)throw TypeError("Can't call method on "+u);return u}},{}],296:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/create-non-enumerable-property");x.exports=function(g,b){try{m(u,g,b)}catch{u[g]=b}return b}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(e,x,_){var u=e("../internals/get-built-in"),m=e("../internals/object-define-property"),g=e("../internals/well-known-symbol"),b=e("../internals/descriptors"),w=g("species");x.exports=function(f){var y=u(f),h=m.f;b&&y&&!y[w]&&h(y,w,{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,x,_){var u=e("../internals/object-define-property").f,m=e("../internals/has"),g=e("../internals/well-known-symbol"),b=g("toStringTag");x.exports=function(w,f,y){w&&!m(w=y?w:w.prototype,b)&&u(w,b,{configurable:!0,value:f})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(e,x,_){var u=e("../internals/shared"),m=e("../internals/uid"),g=u("keys");x.exports=function(b){return g[b]||(g[b]=m(b))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/set-global"),g="__core-js_shared__",b=u[g]||m(g,{});x.exports=b},{"../internals/global":251,"../internals/set-global":296}],301:[function(e,x,_){var u=e("../internals/is-pure"),m=e("../internals/shared-store");(x.exports=function(g,b){return m[g]||(m[g]=b!==void 0?b:{})})("versions",[]).push({version:"3.6.5",mode:u?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(e,x,_){var u=e("../internals/an-object"),m=e("../internals/a-function"),g=e("../internals/well-known-symbol"),b=g("species");x.exports=function(w,f){var y=u(w).constructor,h;return y===void 0||(h=u(y)[b])==null?f:m(h)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/fails"),g=e("../internals/classof-raw"),b=e("../internals/function-bind-context"),w=e("../internals/html"),f=e("../internals/document-create-element"),y=e("../internals/engine-is-ios"),h=u.location,l=u.setImmediate,d=u.clearImmediate,s=u.process,v=u.MessageChannel,c=u.Dispatch,a=0,r={},t="onreadystatechange",i,n,o,p=function(L){if(r.hasOwnProperty(L)){var F=r[L];delete r[L],F()}},O=function(L){return function(){p(L)}},C=function(L){p(L.data)},N=function(L){u.postMessage(L+"",h.protocol+"//"+h.host)};(!l||!d)&&(l=function(F){for(var M=[],D=1;arguments.length>D;)M.push(arguments[D++]);return r[++a]=function(){(typeof F=="function"?F:Function(F)).apply(void 0,M)},i(a),a},d=function(F){delete r[F]},g(s)=="process"?i=function(L){s.nextTick(O(L))}:c&&c.now?i=function(L){c.now(O(L))}:v&&!y?(n=new v,o=n.port2,n.port1.onmessage=C,i=b(o.postMessage,o,1)):u.addEventListener&&typeof postMessage=="function"&&!u.importScripts&&!m(N)&&h.protocol!=="file:"?(i=N,u.addEventListener("message",C,!1)):t in f("script")?i=function(L){w.appendChild(f("script"))[t]=function(){w.removeChild(this),p(L)}}:i=function(L){setTimeout(O(L),0)}),x.exports={set:l,clear:d}},{"../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,x,_){var u=e("../internals/to-integer"),m=Math.max,g=Math.min;x.exports=function(b,w){var f=u(b);return f<0?m(f+w,0):g(f,w)}},{"../internals/to-integer":306}],305:[function(e,x,_){var u=e("../internals/indexed-object"),m=e("../internals/require-object-coercible");x.exports=function(g){return u(m(g))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(e,x,_){var u=Math.ceil,m=Math.floor;x.exports=function(g){return isNaN(g=+g)?0:(g>0?m:u)(g)}},{}],307:[function(e,x,_){var u=e("../internals/to-integer"),m=Math.min;x.exports=function(g){return g>0?m(u(g),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(e,x,_){var u=e("../internals/require-object-coercible");x.exports=function(m){return Object(u(m))}},{"../internals/require-object-coercible":295}],309:[function(e,x,_){var u=e("../internals/is-object");x.exports=function(m,g){if(!u(m))return m;var b,w;if(g&&typeof(b=m.toString)=="function"&&!u(w=b.call(m))||typeof(b=m.valueOf)=="function"&&!u(w=b.call(m))||!g&&typeof(b=m.toString)=="function"&&!u(w=b.call(m)))return w;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(e,x,_){var u=e("../internals/well-known-symbol"),m=u("toStringTag"),g={};g[m]="z",x.exports=String(g)==="[object z]"},{"../internals/well-known-symbol":314}],311:[function(e,x,_){var u=0,m=Math.random();x.exports=function(g){return"Symbol("+String(g===void 0?"":g)+")_"+(++u+m).toString(36)}},{}],312:[function(e,x,_){var u=e("../internals/native-symbol");x.exports=u&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},{"../internals/native-symbol":271}],313:[function(e,x,_){var u=e("../internals/well-known-symbol");_.f=u},{"../internals/well-known-symbol":314}],314:[function(e,x,_){var u=e("../internals/global"),m=e("../internals/shared"),g=e("../internals/has"),b=e("../internals/uid"),w=e("../internals/native-symbol"),f=e("../internals/use-symbol-as-uid"),y=m("wks"),h=u.Symbol,l=f?h:h&&h.withoutSetter||b;x.exports=function(d){return g(y,d)||(w&&g(h,d)?y[d]=h[d]:y[d]=l("Symbol."+d)),y[d]}},{"../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,x,_){var u=e("../internals/export"),m=e("../internals/array-iteration").findIndex,g=e("../internals/add-to-unscopables"),b=e("../internals/array-method-uses-to-length"),w="findIndex",f=!0,y=b(w);w in[]&&Array(1)[w](function(){f=!1}),u({target:"Array",proto:!0,forced:f||!y},{findIndex:function(l){return m(this,l,arguments.length>1?arguments[1]:void 0)}}),g(w)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/array-iteration").find,g=e("../internals/add-to-unscopables"),b=e("../internals/array-method-uses-to-length"),w="find",f=!0,y=b(w);w in[]&&Array(1)[w](function(){f=!1}),u({target:"Array",proto:!0,forced:f||!y},{find:function(l){return m(this,l,arguments.length>1?arguments[1]:void 0)}}),g(w)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/array-includes").includes,g=e("../internals/add-to-unscopables"),b=e("../internals/array-method-uses-to-length"),w=b("indexOf",{ACCESSORS:!0,1:0});u({target:"Array",proto:!0,forced:!w},{includes:function(y){return m(this,y,arguments.length>1?arguments[1]:void 0)}}),g("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(e,x,_){var u=e("../internals/to-indexed-object"),m=e("../internals/add-to-unscopables"),g=e("../internals/iterators"),b=e("../internals/internal-state"),w=e("../internals/define-iterator"),f="Array Iterator",y=b.set,h=b.getterFor(f);x.exports=w(Array,"Array",function(l,d){y(this,{type:f,target:u(l),index:0,kind:d})},function(){var l=h(this),d=l.target,s=l.kind,v=l.index++;return!d||v>=d.length?(l.target=void 0,{value:void 0,done:!0}):s=="keys"?{value:v,done:!1}:s=="values"?{value:d[v],done:!1}:{value:[v,d[v]],done:!1}},"values"),g.Arguments=g.Array,m("keys"),m("values"),m("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,x,_){var u=e("../internals/export");u({target:"Number",stat:!0},{isNaN:function(g){return g!=g}})},{"../internals/export":246}],320:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/object-assign");u({target:"Object",stat:!0,forced:Object.assign!==m},{assign:m})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/to-object"),g=e("../internals/object-keys"),b=e("../internals/fails"),w=b(function(){g(1)});u({target:"Object",stat:!0,forced:w},{keys:function(y){return g(m(y))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/object-to-array").values;u({target:"Object",stat:!0},{values:function(b){return m(b)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/is-pure"),g=e("../internals/global"),b=e("../internals/get-built-in"),w=e("../internals/native-promise-constructor"),f=e("../internals/redefine"),y=e("../internals/redefine-all"),h=e("../internals/set-to-string-tag"),l=e("../internals/set-species"),d=e("../internals/is-object"),s=e("../internals/a-function"),v=e("../internals/an-instance"),c=e("../internals/classof-raw"),a=e("../internals/inspect-source"),r=e("../internals/iterate"),t=e("../internals/check-correctness-of-iteration"),i=e("../internals/species-constructor"),n=e("../internals/task").set,o=e("../internals/microtask"),p=e("../internals/promise-resolve"),O=e("../internals/host-report-errors"),C=e("../internals/new-promise-capability"),N=e("../internals/perform"),L=e("../internals/internal-state"),F=e("../internals/is-forced"),M=e("../internals/well-known-symbol"),D=e("../internals/engine-v8-version"),R=M("species"),P="Promise",E=L.get,A=L.set,z=L.getterFor(P),W=w,$=g.TypeError,U=g.document,I=g.process,j=b("fetch"),B=C.f,V=B,te=c(I)=="process",ie=!!(U&&U.createEvent&&g.dispatchEvent),ce="unhandledrejection",be="rejectionhandled",_e=0,oe=1,J=2,Q=1,he=2,ke,re,se,Ce,q=F(P,function(){var Ue=a(W)!==String(W);if(!Ue&&(D===66||!te&&typeof PromiseRejectionEvent!="function")||m&&!W.prototype.finally)return!0;if(D>=51&&/native code/.test(W))return!1;var Ve=W.resolve(1),Qe=function(ae){ae(function(){},function(){})},tt=Ve.constructor={};return tt[R]=Qe,!(Ve.then(function(){})instanceof Qe)}),G=q||!t(function(Ue){W.all(Ue).catch(function(){})}),Z=function(Ue){var Ve;return d(Ue)&&typeof(Ve=Ue.then)=="function"?Ve:!1},fe=function(Ue,Ve,Qe){if(!Ve.notified){Ve.notified=!0;var tt=Ve.reactions;o(function(){for(var ae=Ve.value,Re=Ve.state==oe,me=0;tt.length>me;){var Ee=tt[me++],pe=Re?Ee.ok:Ee.fail,Pe=Ee.resolve,ee=Ee.reject,Xe=Ee.domain,it,K,Me;try{pe?(Re||(Ve.rejection===he&&Ze(Ue,Ve),Ve.rejection=Q),pe===!0?it=ae:(Xe&&Xe.enter(),it=pe(ae),Xe&&(Xe.exit(),Me=!0)),it===Ee.promise?ee($("Promise-chain cycle")):(K=Z(it))?K.call(it,Pe,ee):Pe(it)):ee(ae)}catch(Le){Xe&&!Me&&Xe.exit(),ee(Le)}}Ve.reactions=[],Ve.notified=!1,Qe&&!Ve.rejection&&ge(Ue,Ve)})}},we=function(Ue,Ve,Qe){var tt,ae;ie?(tt=U.createEvent("Event"),tt.promise=Ve,tt.reason=Qe,tt.initEvent(Ue,!1,!0),g.dispatchEvent(tt)):tt={promise:Ve,reason:Qe},(ae=g["on"+Ue])?ae(tt):Ue===ce&&O("Unhandled promise rejection",Qe)},ge=function(Ue,Ve){n.call(g,function(){var Qe=Ve.value,tt=je(Ve),ae;if(tt&&(ae=N(function(){te?I.emit("unhandledRejection",Qe,Ue):we(ce,Ue,Qe)}),Ve.rejection=te||je(Ve)?he:Q,ae.error))throw ae.value})},je=function(Ue){return Ue.rejection!==Q&&!Ue.parent},Ze=function(Ue,Ve){n.call(g,function(){te?I.emit("rejectionHandled",Ue):we(be,Ue,Ve.value)})},nt=function(Ue,Ve,Qe,tt){return function(ae){Ue(Ve,Qe,ae,tt)}},ut=function(Ue,Ve,Qe,tt){Ve.done||(Ve.done=!0,tt&&(Ve=tt),Ve.value=Qe,Ve.state=J,fe(Ue,Ve,!0))},ot=function(Ue,Ve,Qe,tt){if(!Ve.done){Ve.done=!0,tt&&(Ve=tt);try{if(Ue===Qe)throw $("Promise can't be resolved itself");var ae=Z(Qe);ae?o(function(){var Re={done:!1};try{ae.call(Qe,nt(ot,Ue,Re,Ve),nt(ut,Ue,Re,Ve))}catch(me){ut(Ue,Re,me,Ve)}}):(Ve.value=Qe,Ve.state=oe,fe(Ue,Ve,!1))}catch(Re){ut(Ue,{done:!1},Re,Ve)}}};q&&(W=function(Ve){v(this,W,P),s(Ve),ke.call(this);var Qe=E(this);try{Ve(nt(ot,this,Qe),nt(ut,this,Qe))}catch(tt){ut(this,Qe,tt)}},ke=function(Ve){A(this,{type:P,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:_e,value:void 0})},ke.prototype=y(W.prototype,{then:function(Ve,Qe){var tt=z(this),ae=B(i(this,W));return ae.ok=typeof Ve=="function"?Ve:!0,ae.fail=typeof Qe=="function"&&Qe,ae.domain=te?I.domain:void 0,tt.parent=!0,tt.reactions.push(ae),tt.state!=_e&&fe(this,tt,!1),ae.promise},catch:function(Ue){return this.then(void 0,Ue)}}),re=function(){var Ue=new ke,Ve=E(Ue);this.promise=Ue,this.resolve=nt(ot,Ue,Ve),this.reject=nt(ut,Ue,Ve)},C.f=B=function(Ue){return Ue===W||Ue===se?new re(Ue):V(Ue)},!m&&typeof w=="function"&&(Ce=w.prototype.then,f(w.prototype,"then",function(Ve,Qe){var tt=this;return new W(function(ae,Re){Ce.call(tt,ae,Re)}).then(Ve,Qe)},{unsafe:!0}),typeof j=="function"&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(Ve){return p(W,j.apply(g,arguments))}}))),u({global:!0,wrap:!0,forced:q},{Promise:W}),h(W,P,!1,!0),l(P),se=b(P),u({target:P,stat:!0,forced:q},{reject:function(Ve){var Qe=B(this);return Qe.reject.call(void 0,Ve),Qe.promise}}),u({target:P,stat:!0,forced:m||q},{resolve:function(Ve){return p(m&&this===se?W:this,Ve)}}),u({target:P,stat:!0,forced:G},{all:function(Ve){var Qe=this,tt=B(Qe),ae=tt.resolve,Re=tt.reject,me=N(function(){var Ee=s(Qe.resolve),pe=[],Pe=0,ee=1;r(Ve,function(Xe){var it=Pe++,K=!1;pe.push(void 0),ee++,Ee.call(Qe,Xe).then(function(Me){K||(K=!0,pe[it]=Me,--ee||ae(pe))},Re)}),--ee||ae(pe)});return me.error&&Re(me.value),tt.promise},race:function(Ve){var Qe=this,tt=B(Qe),ae=tt.reject,Re=N(function(){var me=s(Qe.resolve);r(Ve,function(Ee){me.call(Qe,Ee).then(tt.resolve,ae)})});return Re.error&&ae(Re.value),tt.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,x,_){var u=e("../internals/export"),m=e("../internals/to-absolute-index"),g=String.fromCharCode,b=String.fromCodePoint,w=!!b&&b.length!=1;u({target:"String",stat:!0,forced:w},{fromCodePoint:function(y){for(var h=[],l=arguments.length,d=0,s;l>d;){if(s=+arguments[d++],m(s,1114111)!==s)throw RangeError(s+" is not a valid code point");h.push(s<65536?g(s):g(((s-=65536)>>10)+55296,s%1024+56320))}return h.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/not-a-regexp"),g=e("../internals/require-object-coercible"),b=e("../internals/correct-is-regexp-logic");u({target:"String",proto:!0,forced:!b("includes")},{includes:function(f){return!!~String(g(this)).indexOf(m(f),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,x,_){var u=e("../internals/define-well-known-symbol");u("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(e,x,_){var u=e("../internals/export"),m=e("../internals/global"),g=e("../internals/get-built-in"),b=e("../internals/is-pure"),w=e("../internals/descriptors"),f=e("../internals/native-symbol"),y=e("../internals/use-symbol-as-uid"),h=e("../internals/fails"),l=e("../internals/has"),d=e("../internals/is-array"),s=e("../internals/is-object"),v=e("../internals/an-object"),c=e("../internals/to-object"),a=e("../internals/to-indexed-object"),r=e("../internals/to-primitive"),t=e("../internals/create-property-descriptor"),i=e("../internals/object-create"),n=e("../internals/object-keys"),o=e("../internals/object-get-own-property-names"),p=e("../internals/object-get-own-property-names-external"),O=e("../internals/object-get-own-property-symbols"),C=e("../internals/object-get-own-property-descriptor"),N=e("../internals/object-define-property"),L=e("../internals/object-property-is-enumerable"),F=e("../internals/create-non-enumerable-property"),M=e("../internals/redefine"),D=e("../internals/shared"),R=e("../internals/shared-key"),P=e("../internals/hidden-keys"),E=e("../internals/uid"),A=e("../internals/well-known-symbol"),z=e("../internals/well-known-symbol-wrapped"),W=e("../internals/define-well-known-symbol"),$=e("../internals/set-to-string-tag"),U=e("../internals/internal-state"),I=e("../internals/array-iteration").forEach,j=R("hidden"),B="Symbol",V="prototype",te=A("toPrimitive"),ie=U.set,ce=U.getterFor(B),be=Object[V],_e=m.Symbol,oe=g("JSON","stringify"),J=C.f,Q=N.f,he=p.f,ke=L.f,re=D("symbols"),se=D("op-symbols"),Ce=D("string-to-symbol-registry"),q=D("symbol-to-string-registry"),G=D("wks"),Z=m.QObject,fe=!Z||!Z[V]||!Z[V].findChild,we=w&&h(function(){return i(Q({},"a",{get:function(){return Q(this,"a",{value:7}).a}})).a!=7})?function(ae,Re,me){var Ee=J(be,Re);Ee&&delete be[Re],Q(ae,Re,me),Ee&&ae!==be&&Q(be,Re,Ee)}:Q,ge=function(ae,Re){var me=re[ae]=i(_e[V]);return ie(me,{type:B,tag:ae,description:Re}),w||(me.description=Re),me},je=y?function(ae){return typeof ae=="symbol"}:function(ae){return Object(ae)instanceof _e},Ze=function(Re,me,Ee){Re===be&&Ze(se,me,Ee),v(Re);var pe=r(me,!0);return v(Ee),l(re,pe)?(Ee.enumerable?(l(Re,j)&&Re[j][pe]&&(Re[j][pe]=!1),Ee=i(Ee,{enumerable:t(0,!1)})):(l(Re,j)||Q(Re,j,t(1,{})),Re[j][pe]=!0),we(Re,pe,Ee)):Q(Re,pe,Ee)},nt=function(Re,me){v(Re);var Ee=a(me),pe=n(Ee).concat(Qe(Ee));return I(pe,function(Pe){(!w||ot.call(Ee,Pe))&&Ze(Re,Pe,Ee[Pe])}),Re},ut=function(Re,me){return me===void 0?i(Re):nt(i(Re),me)},ot=function(Re){var me=r(Re,!0),Ee=ke.call(this,me);return this===be&&l(re,me)&&!l(se,me)?!1:Ee||!l(this,me)||!l(re,me)||l(this,j)&&this[j][me]?Ee:!0},Ue=function(Re,me){var Ee=a(Re),pe=r(me,!0);if(!(Ee===be&&l(re,pe)&&!l(se,pe))){var Pe=J(Ee,pe);return Pe&&l(re,pe)&&!(l(Ee,j)&&Ee[j][pe])&&(Pe.enumerable=!0),Pe}},Ve=function(Re){var me=he(a(Re)),Ee=[];return I(me,function(pe){!l(re,pe)&&!l(P,pe)&&Ee.push(pe)}),Ee},Qe=function(Re){var me=Re===be,Ee=he(me?se:a(Re)),pe=[];return I(Ee,function(Pe){l(re,Pe)&&(!me||l(be,Pe))&&pe.push(re[Pe])}),pe};if(f||(_e=function(){if(this instanceof _e)throw TypeError("Symbol is not a constructor");var Re=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),me=E(Re),Ee=function(pe){this===be&&Ee.call(se,pe),l(this,j)&&l(this[j],me)&&(this[j][me]=!1),we(this,me,t(1,pe))};return w&&fe&&we(be,me,{configurable:!0,set:Ee}),ge(me,Re)},M(_e[V],"toString",function(){return ce(this).tag}),M(_e,"withoutSetter",function(ae){return ge(E(ae),ae)}),L.f=ot,N.f=Ze,C.f=Ue,o.f=p.f=Ve,O.f=Qe,z.f=function(ae){return ge(A(ae),ae)},w&&(Q(_e[V],"description",{configurable:!0,get:function(){return ce(this).description}}),b||M(be,"propertyIsEnumerable",ot,{unsafe:!0}))),u({global:!0,wrap:!0,forced:!f,sham:!f},{Symbol:_e}),I(n(G),function(ae){W(ae)}),u({target:B,stat:!0,forced:!f},{for:function(ae){var Re=String(ae);if(l(Ce,Re))return Ce[Re];var me=_e(Re);return Ce[Re]=me,q[me]=Re,me},keyFor:function(Re){if(!je(Re))throw TypeError(Re+" is not a symbol");if(l(q,Re))return q[Re]},useSetter:function(){fe=!0},useSimple:function(){fe=!1}}),u({target:"Object",stat:!0,forced:!f,sham:!w},{create:ut,defineProperty:Ze,defineProperties:nt,getOwnPropertyDescriptor:Ue}),u({target:"Object",stat:!0,forced:!f},{getOwnPropertyNames:Ve,getOwnPropertySymbols:Qe}),u({target:"Object",stat:!0,forced:h(function(){O.f(1)})},{getOwnPropertySymbols:function(Re){return O.f(c(Re))}}),oe){var tt=!f||h(function(){var ae=_e();return oe([ae])!="[null]"||oe({a:ae})!="{}"||oe(Object(ae))!="{}"});u({target:"JSON",stat:!0,forced:tt},{stringify:function(Re,me,Ee){for(var pe=[Re],Pe=1,ee;arguments.length>Pe;)pe.push(arguments[Pe++]);if(ee=me,!(!s(me)&&Re===void 0||je(Re)))return d(me)||(me=function(Xe,it){if(typeof ee=="function"&&(it=ee.call(this,Xe,it)),!je(it))return it}),pe[1]=me,oe.apply(null,pe)}})}_e[V][te]||F(_e[V],te,_e[V].valueOf),$(_e,B),P[j]=!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,x,_){(function(u){function m(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(p){return typeof p}:m=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},m(n)}function g(n){return Array.isArray?Array.isArray(n):i(n)==="[object Array]"}_.isArray=g;function b(n){return typeof n=="boolean"}_.isBoolean=b;function w(n){return n===null}_.isNull=w;function f(n){return n==null}_.isNullOrUndefined=f;function y(n){return typeof n=="number"}_.isNumber=y;function h(n){return typeof n=="string"}_.isString=h;function l(n){return m(n)==="symbol"}_.isSymbol=l;function d(n){return n===void 0}_.isUndefined=d;function s(n){return i(n)==="[object RegExp]"}_.isRegExp=s;function v(n){return m(n)==="object"&&n!==null}_.isObject=v;function c(n){return i(n)==="[object Date]"}_.isDate=c;function a(n){return i(n)==="[object Error]"||n instanceof Error}_.isError=a;function r(n){return typeof n=="function"}_.isFunction=r;function t(n){return n===null||typeof n=="boolean"||typeof n=="number"||typeof n=="string"||m(n)==="symbol"||typeof n>"u"}_.isPrimitive=t,_.isBuffer=u.isBuffer;function i(n){return Object.prototype.toString.call(n)}}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(e,x,_){(function(u){var m=e("elliptic"),g=e("bn.js");x.exports=function(h){return new w(h)};var b={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}};b.p224=b.secp224r1,b.p256=b.secp256r1=b.prime256v1,b.p192=b.secp192r1=b.prime192v1,b.p384=b.secp384r1,b.p521=b.secp521r1;function w(y){this.curveType=b[y],this.curveType||(this.curveType={name:y}),this.curve=new m.ec(this.curveType.name),this.keys=void 0}w.prototype.generateKeys=function(y,h){return this.keys=this.curve.genKeyPair(),this.getPublicKey(y,h)},w.prototype.computeSecret=function(y,h,l){h=h||"utf8",u.isBuffer(y)||(y=new u(y,h));var d=this.curve.keyFromPublic(y).getPublic(),s=d.mul(this.keys.getPrivate()).getX();return f(s,l,this.curveType.byteLength)},w.prototype.getPublicKey=function(y,h){var l=this.keys.getPublic(h==="compressed",!0);return h==="hybrid"&&(l[l.length-1]%2?l[0]=7:l[0]=6),f(l,y)},w.prototype.getPrivateKey=function(y){return f(this.keys.getPrivate(),y)},w.prototype.setPublicKey=function(y,h){return h=h||"utf8",u.isBuffer(y)||(y=new u(y,h)),this.keys._importPublic(y),this},w.prototype.setPrivateKey=function(y,h){h=h||"utf8",u.isBuffer(y)||(y=new u(y,h));var l=new g(y);return l=l.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(l),this};function f(y,h,l){Array.isArray(y)||(y=y.toArray());var d=new u(y);if(l&&d.lengthv){var c=d==="rmd160"?new f:y(d);s=c.update(s).digest()}else s.lengthw?h=y(h):h.length"u"?"undefined":u(_))=="object"&&typeof x<"u"?x.exports=g():m.dayjs=g()})(void 0,function(){var m="millisecond",g="second",b="minute",w="hour",f="day",y="week",h="month",l="quarter",d="year",s="date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,c=/\[([^\]]+)]|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,a=function(M,D,R){var P=String(M);return!P||P.length>=D?M:""+Array(D+1-P.length).join(R)+M},r={s:a,z:function(M){var D=-M.utcOffset(),R=Math.abs(D),P=Math.floor(R/60),E=R%60;return(D<=0?"+":"-")+a(P,2,"0")+":"+a(E,2,"0")},m:function F(M,D){if(M.date()"u"?"undefined":u(_))=="object"&&typeof x<"u"?x.exports=g():m.dayjs_plugin_customParseFormat=g()})(void 0,function(){var m,g=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,b=/\d\d/,w=/\d\d?/,f=/\d*[^\s\d-:/()]+/,y=function(c){return function(a){this[c]=+a}},h=[/[+-]\d\d:?\d\d/,function(v){var c,a;(this.zone||(this.zone={})).offset=(c=v.match(/([+-]|\d\d)/g),(a=60*c[1]+ +c[2])===0?0:c[0]==="+"?-a:a)}],l=function(c){var a=m[c];return a&&(a.indexOf?a:a.s.concat(a.f))},d={A:[/[AP]M/,function(v){this.afternoon=v==="PM"}],a:[/[ap]m/,function(v){this.afternoon=v==="pm"}],S:[/\d/,function(v){this.milliseconds=100*+v}],SS:[b,function(v){this.milliseconds=10*+v}],SSS:[/\d{3}/,function(v){this.milliseconds=+v}],s:[w,y("seconds")],ss:[w,y("seconds")],m:[w,y("minutes")],mm:[w,y("minutes")],H:[w,y("hours")],h:[w,y("hours")],HH:[w,y("hours")],hh:[w,y("hours")],D:[w,y("day")],DD:[b,y("day")],Do:[f,function(v){var c=m.ordinal,a=v.match(/\d+/);if(this.day=a[0],c)for(var r=1;r<=31;r+=1)c(r).replace(/\[|\]/g,"")===v&&(this.day=r)}],M:[w,y("month")],MM:[b,y("month")],MMM:[f,function(v){var c=l("months"),a=(l("monthsShort")||c.map(function(r){return r.substr(0,3)})).indexOf(v)+1;if(a<1)throw new Error;this.month=a%12||a}],MMMM:[f,function(v){var c=l("months").indexOf(v)+1;if(c<1)throw new Error;this.month=c%12||c}],Y:[/[+-]?\d+/,y("year")],YY:[b,function(v){v=+v,this.year=v+(v>68?1900:2e3)}],YYYY:[/\d{4}/,y("year")],Z:h,ZZ:h},s=function(c,a,r){try{var t=function(W){for(var $=W.match(g),U=$.length,I=0;I0?n-1:F.getMonth());var P=p||0,E=O||0,A=C||0,z=N||0;return L?new Date(Date.UTC(D,R,M,P,E,A,z+60*L.offset*1e3)):r?new Date(Date.UTC(D,R,M,P,E,A,z)):new Date(D,R,M,P,E,A,z)}catch{return new Date("")}};return function(v,c,a){var r=c.prototype,t=r.parse;r.parse=function(i){var n=i.date,o=i.utc,p=i.args;this.$u=o;var O=p[1];if(typeof O=="string"){var C=p[2]===!0,N=p[3]===!0,L=C||N,F=p[2];N&&(F=p[2]),C||(m=F?a.Ls[F]:this.$locale()),this.$d=s(n,O,o),this.init(),F&&F!==!0&&(this.$L=this.locale(F).$L),L&&n!==this.format(O)&&(this.$d=new Date(""))}else if(O instanceof Array)for(var M=O.length,D=1;D<=M;D+=1){p[1]=O[D-1];var R=a.apply(this,p);if(R.isValid()){this.$d=R.$d,this.$L=R.$L,this.init();break}D===M&&(this.$d=new Date(""))}else t.call(this,i)}}})},{}],338:[function(e,x,_){function u(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(b){return typeof b}:u=function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},u(m)}(function(m,g){(typeof _>"u"?"undefined":u(_))=="object"&&typeof x<"u"?x.exports=g():m.dayjs_plugin_utc=g()})(void 0,function(){return function(m,g,b){var w=new Date().getTimezoneOffset(),f=g.prototype;b.utc=function(c){return new g({date:c,utc:!0,args:arguments})},f.utc=function(){return b(this.toDate(),{locale:this.$L,utc:!0})},f.local=function(){return b(this.toDate(),{locale:this.$L,utc:!1})};var y=f.parse;f.parse=function(c){c.utc&&(this.$u=!0),this.$utils().u(c.$offset)||(this.$offset=c.$offset),y.call(this,c)};var h=f.init;f.init=function(){if(this.$u){var c=this.$d;this.$y=c.getUTCFullYear(),this.$M=c.getUTCMonth(),this.$D=c.getUTCDate(),this.$W=c.getUTCDay(),this.$H=c.getUTCHours(),this.$m=c.getUTCMinutes(),this.$s=c.getUTCSeconds(),this.$ms=c.getUTCMilliseconds()}else h.call(this)};var l=f.utcOffset;f.utcOffset=function(c,a){var r=this.$utils().u;if(r(c))return this.$u?0:r(this.$offset)?l.call(this):this.$offset;var t=Math.abs(c)<=16?60*c:c,i=this;return a?(i.$offset=t,i.$u=c===0,i):(c!==0?(i=this.local().add(t+w,"minute")).$offset=t:i=this.utc(),i)};var d=f.format;f.format=function(c){var a=c||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return d.call(this,a)},f.valueOf=function(){var c=this.$utils().u(this.$offset)?0:this.$offset+w;return this.$d.valueOf()-6e4*c},f.isUTC=function(){return!!this.$u},f.toISOString=function(){return this.toDate().toISOString()},f.toString=function(){return this.toDate().toUTCString()};var s=f.toDate;f.toDate=function(c){return c==="s"&&this.$offset?b(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():s.call(this)};var v=f.diff;f.diff=function(c,a,r){var t=this.local(),i=b(c).local();return v.call(t,i,a,r)}}})},{}],339:[function(e,x,_){_.utils=e("./des/utils"),_.Cipher=e("./des/cipher"),_.DES=e("./des/des"),_.CBC=e("./des/cbc"),_.EDE=e("./des/ede")},{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(e,x,_){var u=e("minimalistic-assert"),m=e("inherits"),g={};function b(f){u.equal(f.length,8,"Invalid IV length"),this.iv=new Array(8);for(var y=0;y0;y--)w+=this._buffer(b,w),f+=this._flushBuffer(h,f);return w+=this._buffer(b,w),h},m.prototype.final=function(b){var w;b&&(w=this.update(b));var f;return this.type==="encrypt"?f=this._finalEncrypt():f=this._finalDecrypt(),w?w.concat(f):f},m.prototype._pad=function(b,w){if(w===0)return!1;for(;w>>1];s=g.r28shl(s,a),v=g.r28shl(v,a),g.pc2(s,v,l.keys,c)}},f.prototype._update=function(l,d,s,v){var c=this._desState,a=g.readUInt32BE(l,d),r=g.readUInt32BE(l,d+4);g.ip(a,r,c.tmp,0),a=c.tmp[0],r=c.tmp[1],this.type==="encrypt"?this._encrypt(c,a,r,c.tmp,0):this._decrypt(c,a,r,c.tmp,0),a=c.tmp[0],r=c.tmp[1],g.writeUInt32BE(s,a,v),g.writeUInt32BE(s,r,v+4)},f.prototype._pad=function(l,d){for(var s=l.length-d,v=d;v>>0,a=O}g.rip(r,a,v,c)},f.prototype._decrypt=function(l,d,s,v,c){for(var a=s,r=d,t=l.keys.length-2;t>=0;t-=2){var i=l.keys[t],n=l.keys[t+1];g.expand(a,l.tmp,0),i^=l.tmp[0],n^=l.tmp[1];var o=g.substitute(i,n),p=g.permute(o),O=a;a=(r^p)>>>0,r=O}g.rip(a,r,v,c)}},{"./cipher":341,"./utils":344,inherits:387,"minimalistic-assert":437}],343:[function(e,x,_){var u=e("minimalistic-assert"),m=e("inherits"),g=e("./cipher"),b=e("./des");function w(y,h){u.equal(h.length,24,"Invalid key length");var l=h.slice(0,8),d=h.slice(8,16),s=h.slice(16,24);y==="encrypt"?this.ciphers=[b.create({type:"encrypt",key:l}),b.create({type:"decrypt",key:d}),b.create({type:"encrypt",key:s})]:this.ciphers=[b.create({type:"decrypt",key:s}),b.create({type:"encrypt",key:d}),b.create({type:"decrypt",key:l})]}function f(y){g.call(this,y);var h=new w(this.type,this.options.key);this._edeState=h}m(f,g),x.exports=f,f.create=function(h){return new f(h)},f.prototype._update=function(h,l,d,s){var v=this._edeState;v.ciphers[0]._update(h,l,d,s),v.ciphers[1]._update(d,s,d,s),v.ciphers[2]._update(d,s,d,s)},f.prototype._pad=b.prototype._pad,f.prototype._unpad=b.prototype._unpad},{"./cipher":341,"./des":342,inherits:387,"minimalistic-assert":437}],344:[function(e,x,_){_.readUInt32BE=function(w,f){var y=w[0+f]<<24|w[1+f]<<16|w[2+f]<<8|w[3+f];return y>>>0},_.writeUInt32BE=function(w,f,y){w[0+y]=f>>>24,w[1+y]=f>>>16&255,w[2+y]=f>>>8&255,w[3+y]=f&255},_.ip=function(w,f,y,h){for(var l=0,d=0,s=6;s>=0;s-=2){for(var v=0;v<=24;v+=8)l<<=1,l|=f>>>v+s&1;for(var v=0;v<=24;v+=8)l<<=1,l|=w>>>v+s&1}for(var s=6;s>=0;s-=2){for(var v=1;v<=25;v+=8)d<<=1,d|=f>>>v+s&1;for(var v=1;v<=25;v+=8)d<<=1,d|=w>>>v+s&1}y[h+0]=l>>>0,y[h+1]=d>>>0},_.rip=function(w,f,y,h){for(var l=0,d=0,s=0;s<4;s++)for(var v=24;v>=0;v-=8)l<<=1,l|=f>>>v+s&1,l<<=1,l|=w>>>v+s&1;for(var s=4;s<8;s++)for(var v=24;v>=0;v-=8)d<<=1,d|=f>>>v+s&1,d<<=1,d|=w>>>v+s&1;y[h+0]=l>>>0,y[h+1]=d>>>0},_.pc1=function(w,f,y,h){for(var l=0,d=0,s=7;s>=5;s--){for(var v=0;v<=24;v+=8)l<<=1,l|=f>>v+s&1;for(var v=0;v<=24;v+=8)l<<=1,l|=w>>v+s&1}for(var v=0;v<=24;v+=8)l<<=1,l|=f>>v+s&1;for(var s=1;s<=3;s++){for(var v=0;v<=24;v+=8)d<<=1,d|=f>>v+s&1;for(var v=0;v<=24;v+=8)d<<=1,d|=w>>v+s&1}for(var v=0;v<=24;v+=8)d<<=1,d|=w>>v+s&1;y[h+0]=l>>>0,y[h+1]=d>>>0},_.r28shl=function(w,f){return w<>>28-f};var u=[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];_.pc2=function(w,f,y,h){for(var l=0,d=0,s=u.length>>>1,v=0;v>>u[v]&1;for(var v=s;v>>u[v]&1;y[h+0]=l>>>0,y[h+1]=d>>>0},_.expand=function(w,f,y){var h=0,l=0;h=(w&1)<<5|w>>>27;for(var d=23;d>=15;d-=4)h<<=6,h|=w>>>d&63;for(var d=11;d>=3;d-=4)l|=w>>>d&63,l<<=6;l|=(w&31)<<1|w>>>31,f[y+0]=h>>>0,f[y+1]=l>>>0};var m=[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];_.substitute=function(w,f){for(var y=0,h=0;h<4;h++){var l=w>>>18-h*6&63,d=m[h*64+l];y<<=4,y|=d}for(var h=0;h<4;h++){var l=f>>>18-h*6&63,d=m[4*64+h*64+l];y<<=4,y|=d}return y>>>0};var g=[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];_.permute=function(w){for(var f=0,y=0;y>>g[y]&1;return f>>>0},_.padSplit=function(w,f,y){for(var h=w.toString(2);h.lengthn;)p.ishrn(1);if(p.isEven()&&p.iadd(f),p.testn(1)||p.iadd(y),o.cmp(y)){if(!o.cmp(h))for(;p.mod(l).cmp(d);)p.iadd(v)}else for(;p.mod(g).cmp(s);)p.iadd(v);if(O=p.shrn(1),r(O)&&r(p)&&t(O)&&t(p)&&w.test(O)&&w.test(p))return p}}},{"bn.js":349,"miller-rabin":435,randombytes:475}],348:[function(e,x,_){x.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,x,_){arguments[4][181][0].apply(_,arguments)},{buffer:185,dup:181}],350:[function(e,x,_){var u=_;u.version=e("../package.json").version,u.utils=e("./elliptic/utils"),u.rand=e("brorand"),u.curve=e("./elliptic/curve"),u.curves=e("./elliptic/curves"),u.ec=e("./elliptic/ec"),u.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,x,_){var u=e("bn.js"),m=e("../utils"),g=m.getNAF,b=m.getJSF,w=m.assert;function f(h,l){this.type=h,this.p=new u(l.p,16),this.red=l.prime?u.red(l.prime):u.mont(this.p),this.zero=new u(0).toRed(this.red),this.one=new u(1).toRed(this.red),this.two=new u(2).toRed(this.red),this.n=l.n&&new u(l.n,16),this.g=l.g&&this.pointFromJSON(l.g,l.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 d=this.n&&this.p.div(this.n);!d||d.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}x.exports=f,f.prototype.point=function(){throw new Error("Not implemented")},f.prototype.validate=function(){throw new Error("Not implemented")},f.prototype._fixedNafMul=function(l,d){w(l.precomputed);var s=l._getDoubles(),v=g(d,1,this._bitLength),c=(1<=r;d--)t=(t<<1)+v[d];a.push(t)}for(var i=this.jpoint(null,null,null),n=this.jpoint(null,null,null),o=c;o>0;o--){for(var r=0;r=0;t--){for(var d=0;t>=0&&a[t]===0;t--)d++;if(t>=0&&d++,r=r.dblp(d),t<0)break;var i=a[t];w(i!==0),l.type==="affine"?i>0?r=r.mixedAdd(c[i-1>>1]):r=r.mixedAdd(c[-i-1>>1].neg()):i>0?r=r.add(c[i-1>>1]):r=r.add(c[-i-1>>1].neg())}return l.type==="affine"?r.toP():r},f.prototype._wnafMulAdd=function(l,d,s,v,c){for(var a=this._wnafT1,r=this._wnafT2,t=this._wnafT3,i=0,n=0;n=1;n-=2){var O=n-1,C=n;if(a[O]!==1||a[C]!==1){t[O]=g(s[O],a[O],this._bitLength),t[C]=g(s[C],a[C],this._bitLength),i=Math.max(t[O].length,i),i=Math.max(t[C].length,i);continue}var N=[d[O],null,null,d[C]];d[O].y.cmp(d[C].y)===0?(N[1]=d[O].add(d[C]),N[2]=d[O].toJ().mixedAdd(d[C].neg())):d[O].y.cmp(d[C].y.redNeg())===0?(N[1]=d[O].toJ().mixedAdd(d[C]),N[2]=d[O].add(d[C].neg())):(N[1]=d[O].toJ().mixedAdd(d[C]),N[2]=d[O].toJ().mixedAdd(d[C].neg()));var L=[-3,-1,-5,-7,0,7,5,1,3],F=b(s[O],s[C]);i=Math.max(F[0].length,i),t[O]=new Array(i),t[C]=new Array(i);for(var M=0;M=0;n--){for(var A=0;n>=0;){for(var z=!0,M=0;M=0&&A++,P=P.dblp(A),n<0)break;for(var M=0;M0?o=r[M][W-1>>1]:W<0&&(o=r[M][-W-1>>1].neg()),o.type==="affine"?P=P.mixedAdd(o):P=P.add(o))}}for(var n=0;n=Math.ceil((l.bitLength()+1)/d.step):!1},y.prototype._getDoubles=function(l,d){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var s=[this],v=this,c=0;c":""},y.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},y.prototype._extDbl=function(){var l=this.x.redSqr(),d=this.y.redSqr(),s=this.z.redSqr();s=s.redIAdd(s);var v=this.curve._mulA(l),c=this.x.redAdd(this.y).redSqr().redISub(l).redISub(d),a=v.redAdd(d),r=a.redSub(s),t=v.redSub(d),i=c.redMul(r),n=a.redMul(t),o=c.redMul(t),p=r.redMul(a);return this.curve.point(i,n,p,o)},y.prototype._projDbl=function(){var l=this.x.redAdd(this.y).redSqr(),d=this.x.redSqr(),s=this.y.redSqr(),v,c,a;if(this.curve.twisted){var r=this.curve._mulA(d),t=r.redAdd(s);if(this.zOne)v=l.redSub(d).redSub(s).redMul(t.redSub(this.curve.two)),c=t.redMul(r.redSub(s)),a=t.redSqr().redSub(t).redSub(t);else{var i=this.z.redSqr(),n=t.redSub(i).redISub(i);v=l.redSub(d).redISub(s).redMul(n),c=t.redMul(r.redSub(s)),a=t.redMul(n)}}else{var r=d.redAdd(s),i=this.curve._mulC(this.z).redSqr(),n=r.redSub(i).redSub(i);v=this.curve._mulC(l.redISub(r)).redMul(n),c=this.curve._mulC(r).redMul(d.redISub(s)),a=r.redMul(n)}return this.curve.point(v,c,a)},y.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},y.prototype._extAdd=function(l){var d=this.y.redSub(this.x).redMul(l.y.redSub(l.x)),s=this.y.redAdd(this.x).redMul(l.y.redAdd(l.x)),v=this.t.redMul(this.curve.dd).redMul(l.t),c=this.z.redMul(l.z.redAdd(l.z)),a=s.redSub(d),r=c.redSub(v),t=c.redAdd(v),i=s.redAdd(d),n=a.redMul(r),o=t.redMul(i),p=a.redMul(i),O=r.redMul(t);return this.curve.point(n,o,O,p)},y.prototype._projAdd=function(l){var d=this.z.redMul(l.z),s=d.redSqr(),v=this.x.redMul(l.x),c=this.y.redMul(l.y),a=this.curve.d.redMul(v).redMul(c),r=s.redSub(a),t=s.redAdd(a),i=this.x.redAdd(this.y).redMul(l.x.redAdd(l.y)).redISub(v).redISub(c),n=d.redMul(r).redMul(i),o,p;return this.curve.twisted?(o=d.redMul(t).redMul(c.redSub(this.curve._mulA(v))),p=r.redMul(t)):(o=d.redMul(t).redMul(c.redSub(v)),p=this.curve._mulC(r).redMul(t)),this.curve.point(n,o,p)},y.prototype.add=function(l){return this.isInfinity()?l:l.isInfinity()?this:this.curve.extended?this._extAdd(l):this._projAdd(l)},y.prototype.mul=function(l){return this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve._wnafMul(this,l)},y.prototype.mulAdd=function(l,d,s){return this.curve._wnafMulAdd(1,[this,d],[l,s],2,!1)},y.prototype.jmulAdd=function(l,d,s){return this.curve._wnafMulAdd(1,[this,d],[l,s],2,!0)},y.prototype.normalize=function(){if(this.zOne)return this;var l=this.z.redInvm();return this.x=this.x.redMul(l),this.y=this.y.redMul(l),this.t&&(this.t=this.t.redMul(l)),this.z=this.curve.one,this.zOne=!0,this},y.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},y.prototype.getX=function(){return this.normalize(),this.x.fromRed()},y.prototype.getY=function(){return this.normalize(),this.y.fromRed()},y.prototype.eq=function(l){return this===l||this.getX().cmp(l.getX())===0&&this.getY().cmp(l.getY())===0},y.prototype.eqXToP=function(l){var d=l.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(d)===0)return!0;for(var s=l.clone(),v=this.curve.redN.redMul(this.z);;){if(s.iadd(this.curve.n),s.cmp(this.curve.p)>=0)return!1;if(d.redIAdd(v),this.x.cmp(d)===0)return!0}},y.prototype.toP=y.prototype.normalize,y.prototype.mixedAdd=y.prototype.add},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],353:[function(e,x,_){var u=_;u.base=e("./base"),u.short=e("./short"),u.mont=e("./mont"),u.edwards=e("./edwards")},{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(e,x,_){var u=e("bn.js"),m=e("inherits"),g=e("./base"),b=e("../utils");function w(y){g.call(this,"mont",y),this.a=new u(y.a,16).toRed(this.red),this.b=new u(y.b,16).toRed(this.red),this.i4=new u(4).toRed(this.red).redInvm(),this.two=new u(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}m(w,g),x.exports=w,w.prototype.validate=function(h){var l=h.normalize().x,d=l.redSqr(),s=d.redMul(l).redAdd(d.redMul(this.a)).redAdd(l),v=s.redSqrt();return v.redSqr().cmp(s)===0};function f(y,h,l){g.BasePoint.call(this,y,"projective"),h===null&&l===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new u(h,16),this.z=new u(l,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}m(f,g.BasePoint),w.prototype.decodePoint=function(h,l){return this.point(b.toArray(h,l),1)},w.prototype.point=function(h,l){return new f(this,h,l)},w.prototype.pointFromJSON=function(h){return f.fromJSON(this,h)},f.prototype.precompute=function(){},f.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},f.fromJSON=function(h,l){return new f(h,l[0],l[1]||h.one)},f.prototype.inspect=function(){return this.isInfinity()?"":""},f.prototype.isInfinity=function(){return this.z.cmpn(0)===0},f.prototype.dbl=function(){var h=this.x.redAdd(this.z),l=h.redSqr(),d=this.x.redSub(this.z),s=d.redSqr(),v=l.redSub(s),c=l.redMul(s),a=v.redMul(s.redAdd(this.curve.a24.redMul(v)));return this.curve.point(c,a)},f.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},f.prototype.diffAdd=function(h,l){var d=this.x.redAdd(this.z),s=this.x.redSub(this.z),v=h.x.redAdd(h.z),c=h.x.redSub(h.z),a=c.redMul(d),r=v.redMul(s),t=l.z.redMul(a.redAdd(r).redSqr()),i=l.x.redMul(a.redISub(r).redSqr());return this.curve.point(t,i)},f.prototype.mul=function(h){for(var l=h.clone(),d=this,s=this.curve.point(null,null),v=this,c=[];l.cmpn(0)!==0;l.iushrn(1))c.push(l.andln(1));for(var a=c.length-1;a>=0;a--)c[a]===0?(d=d.diffAdd(s,v),s=s.dbl()):(s=d.diffAdd(s,v),d=d.dbl());return s},f.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},f.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},f.prototype.eq=function(h){return this.getX().cmp(h.getX())===0},f.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},f.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],355:[function(e,x,_){var u=e("../utils"),m=e("bn.js"),g=e("inherits"),b=e("./base"),w=u.assert;function f(l){b.call(this,"short",l),this.a=new m(l.a,16).toRed(this.red),this.b=new m(l.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(l),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}g(f,b),x.exports=f,f.prototype._getEndomorphism=function(d){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var s,v;if(d.beta)s=new m(d.beta,16).toRed(this.red);else{var c=this._getEndoRoots(this.p);s=c[0].cmp(c[1])<0?c[0]:c[1],s=s.toRed(this.red)}if(d.lambda)v=new m(d.lambda,16);else{var a=this._getEndoRoots(this.n);this.g.mul(a[0]).x.cmp(this.g.x.redMul(s))===0?v=a[0]:(v=a[1],w(this.g.mul(v).x.cmp(this.g.x.redMul(s))===0))}var r;return d.basis?r=d.basis.map(function(t){return{a:new m(t.a,16),b:new m(t.b,16)}}):r=this._getEndoBasis(v),{beta:s,lambda:v,basis:r}}},f.prototype._getEndoRoots=function(d){var s=d===this.p?this.red:m.mont(d),v=new m(2).toRed(s).redInvm(),c=v.redNeg(),a=new m(3).toRed(s).redNeg().redSqrt().redMul(v),r=c.redAdd(a).fromRed(),t=c.redSub(a).fromRed();return[r,t]},f.prototype._getEndoBasis=function(d){for(var s=this.n.ushrn(Math.floor(this.n.bitLength()/2)),v=d,c=this.n.clone(),a=new m(1),r=new m(0),t=new m(0),i=new m(1),n,o,p,O,C,N,L,F=0,M,D;v.cmpn(0)!==0;){var R=c.div(v);M=c.sub(R.mul(v)),D=t.sub(R.mul(a));var P=i.sub(R.mul(r));if(!p&&M.cmp(s)<0)n=L.neg(),o=a,p=M.neg(),O=D;else if(p&&++F===2)break;L=M,c=v,v=M,t=a,a=D,i=r,r=P}C=M.neg(),N=D;var E=p.sqr().add(O.sqr()),A=C.sqr().add(N.sqr());return A.cmp(E)>=0&&(C=n,N=o),p.negative&&(p=p.neg(),O=O.neg()),C.negative&&(C=C.neg(),N=N.neg()),[{a:p,b:O},{a:C,b:N}]},f.prototype._endoSplit=function(d){var s=this.endo.basis,v=s[0],c=s[1],a=c.b.mul(d).divRound(this.n),r=v.b.neg().mul(d).divRound(this.n),t=a.mul(v.a),i=r.mul(c.a),n=a.mul(v.b),o=r.mul(c.b),p=d.sub(t).sub(i),O=n.add(o).neg();return{k1:p,k2:O}},f.prototype.pointFromX=function(d,s){d=new m(d,16),d.red||(d=d.toRed(this.red));var v=d.redSqr().redMul(d).redIAdd(d.redMul(this.a)).redIAdd(this.b),c=v.redSqrt();if(c.redSqr().redSub(v).cmp(this.zero)!==0)throw new Error("invalid point");var a=c.fromRed().isOdd();return(s&&!a||!s&&a)&&(c=c.redNeg()),this.point(d,c)},f.prototype.validate=function(d){if(d.inf)return!0;var s=d.x,v=d.y,c=this.a.redMul(s),a=s.redSqr().redMul(s).redIAdd(c).redIAdd(this.b);return v.redSqr().redISub(a).cmpn(0)===0},f.prototype._endoWnafMulAdd=function(d,s,v){for(var c=this._endoWnafT1,a=this._endoWnafT2,r=0;r":""},y.prototype.isInfinity=function(){return this.inf},y.prototype.add=function(d){if(this.inf)return d;if(d.inf)return this;if(this.eq(d))return this.dbl();if(this.neg().eq(d))return this.curve.point(null,null);if(this.x.cmp(d.x)===0)return this.curve.point(null,null);var s=this.y.redSub(d.y);s.cmpn(0)!==0&&(s=s.redMul(this.x.redSub(d.x).redInvm()));var v=s.redSqr().redISub(this.x).redISub(d.x),c=s.redMul(this.x.redSub(v)).redISub(this.y);return this.curve.point(v,c)},y.prototype.dbl=function(){if(this.inf)return this;var d=this.y.redAdd(this.y);if(d.cmpn(0)===0)return this.curve.point(null,null);var s=this.curve.a,v=this.x.redSqr(),c=d.redInvm(),a=v.redAdd(v).redIAdd(v).redIAdd(s).redMul(c),r=a.redSqr().redISub(this.x.redAdd(this.x)),t=a.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,t)},y.prototype.getX=function(){return this.x.fromRed()},y.prototype.getY=function(){return this.y.fromRed()},y.prototype.mul=function(d){return d=new m(d,16),this.isInfinity()?this:this._hasDoubles(d)?this.curve._fixedNafMul(this,d):this.curve.endo?this.curve._endoWnafMulAdd([this],[d]):this.curve._wnafMul(this,d)},y.prototype.mulAdd=function(d,s,v){var c=[this,s],a=[d,v];return this.curve.endo?this.curve._endoWnafMulAdd(c,a):this.curve._wnafMulAdd(1,c,a,2)},y.prototype.jmulAdd=function(d,s,v){var c=[this,s],a=[d,v];return this.curve.endo?this.curve._endoWnafMulAdd(c,a,!0):this.curve._wnafMulAdd(1,c,a,2,!0)},y.prototype.eq=function(d){return this===d||this.inf===d.inf&&(this.inf||this.x.cmp(d.x)===0&&this.y.cmp(d.y)===0)},y.prototype.neg=function(d){if(this.inf)return this;var s=this.curve.point(this.x,this.y.redNeg());if(d&&this.precomputed){var v=this.precomputed,c=function(r){return r.neg()};s.precomputed={naf:v.naf&&{wnd:v.naf.wnd,points:v.naf.points.map(c)},doubles:v.doubles&&{step:v.doubles.step,points:v.doubles.points.map(c)}}}return s},y.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var d=this.curve.jpoint(this.x,this.y,this.curve.one);return d};function h(l,d,s,v){b.BasePoint.call(this,l,"jacobian"),d===null&&s===null&&v===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new m(0)):(this.x=new m(d,16),this.y=new m(s,16),this.z=new m(v,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}g(h,b.BasePoint),f.prototype.jpoint=function(d,s,v){return new h(this,d,s,v)},h.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var d=this.z.redInvm(),s=d.redSqr(),v=this.x.redMul(s),c=this.y.redMul(s).redMul(d);return this.curve.point(v,c)},h.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},h.prototype.add=function(d){if(this.isInfinity())return d;if(d.isInfinity())return this;var s=d.z.redSqr(),v=this.z.redSqr(),c=this.x.redMul(s),a=d.x.redMul(v),r=this.y.redMul(s.redMul(d.z)),t=d.y.redMul(v.redMul(this.z)),i=c.redSub(a),n=r.redSub(t);if(i.cmpn(0)===0)return n.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var o=i.redSqr(),p=o.redMul(i),O=c.redMul(o),C=n.redSqr().redIAdd(p).redISub(O).redISub(O),N=n.redMul(O.redISub(C)).redISub(r.redMul(p)),L=this.z.redMul(d.z).redMul(i);return this.curve.jpoint(C,N,L)},h.prototype.mixedAdd=function(d){if(this.isInfinity())return d.toJ();if(d.isInfinity())return this;var s=this.z.redSqr(),v=this.x,c=d.x.redMul(s),a=this.y,r=d.y.redMul(s).redMul(this.z),t=v.redSub(c),i=a.redSub(r);if(t.cmpn(0)===0)return i.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var n=t.redSqr(),o=n.redMul(t),p=v.redMul(n),O=i.redSqr().redIAdd(o).redISub(p).redISub(p),C=i.redMul(p.redISub(O)).redISub(a.redMul(o)),N=this.z.redMul(t);return this.curve.jpoint(O,C,N)},h.prototype.dblp=function(d){if(d===0)return this;if(this.isInfinity())return this;if(!d)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var s=this,v=0;v=0)return!1;if(v.redIAdd(a),this.x.cmp(v)===0)return!0}},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return this.z.cmpn(0)===0}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],356:[function(e,x,_){var u=_,m=e("hash.js"),g=e("./curve"),b=e("./utils"),w=b.assert;function f(l){l.type==="short"?this.curve=new g.short(l):l.type==="edwards"?this.curve=new g.edwards(l):this.curve=new g.mont(l),this.g=this.curve.g,this.n=this.curve.n,this.hash=l.hash,w(this.g.validate(),"Invalid curve"),w(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}u.PresetCurve=f;function y(l,d){Object.defineProperty(u,l,{configurable:!0,enumerable:!0,get:function(){var v=new f(d);return Object.defineProperty(u,l,{configurable:!0,enumerable:!0,value:v}),v}})}y("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:m.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),y("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:m.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),y("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:m.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),y("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:m.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"]}),y("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:m.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"]}),y("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:m.sha256,gRed:!1,g:["9"]}),y("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:m.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=e("./precomputed/secp256k1")}catch{h=void 0}y("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:m.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})},{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(e,x,_){function u(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(c){return typeof c}:u=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},u(s)}var m=e("bn.js"),g=e("hmac-drbg"),b=e("../utils"),w=e("../curves"),f=e("brorand"),y=b.assert,h=e("./key"),l=e("./signature");function d(s){if(!(this instanceof d))return new d(s);typeof s=="string"&&(y(w.hasOwnProperty(s),"Unknown curve "+s),s=w[s]),s instanceof w.PresetCurve&&(s={curve:s}),this.curve=s.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=s.curve.g,this.g.precompute(s.curve.n.bitLength()+1),this.hash=s.hash||s.curve.hash}x.exports=d,d.prototype.keyPair=function(v){return new h(this,v)},d.prototype.keyFromPrivate=function(v,c){return h.fromPrivate(this,v,c)},d.prototype.keyFromPublic=function(v,c){return h.fromPublic(this,v,c)},d.prototype.genKeyPair=function(v){v||(v={});var c=new g({hash:this.hash,pers:v.pers,persEnc:v.persEnc||"utf8",entropy:v.entropy||f(this.hash.hmacStrength),entropyEnc:v.entropy&&v.entropyEnc||"utf8",nonce:this.n.toArray()}),a=this.n.byteLength(),r=this.n.sub(new m(2));do{var t=new m(c.generate(a));if(!(t.cmp(r)>0))return t.iaddn(1),this.keyFromPrivate(t)}while(!0)},d.prototype._truncateToN=function(v,c){var a=v.byteLength()*8-this.n.bitLength();return a>0&&(v=v.ushrn(a)),!c&&v.cmp(this.n)>=0?v.sub(this.n):v},d.prototype.sign=function(v,c,a,r){u(a)==="object"&&(r=a,a=null),r||(r={}),c=this.keyFromPrivate(c,a),v=this._truncateToN(new m(v,16));for(var t=this.n.byteLength(),i=c.getPrivate().toArray("be",t),n=v.toArray("be",t),o=new g({hash:this.hash,entropy:i,nonce:n,pers:r.pers,persEnc:r.persEnc||"utf8"}),p=this.n.sub(new m(1)),O=0;;O++){var C=r.k?r.k(O):new m(o.generate(this.n.byteLength()));if(C=this._truncateToN(C,!0),!(C.cmpn(1)<=0||C.cmp(p)>=0)){var N=this.g.mul(C);if(!N.isInfinity()){var L=N.getX(),F=L.umod(this.n);if(F.cmpn(0)!==0){var M=C.invm(this.n).mul(F.mul(c.getPrivate()).iadd(v));if(M=M.umod(this.n),M.cmpn(0)!==0){var D=(N.getY().isOdd()?1:0)|(L.cmp(F)!==0?2:0);return r.canonical&&M.cmp(this.nh)>0&&(M=this.n.sub(M),D^=1),new l({r:F,s:M,recoveryParam:D})}}}}}},d.prototype.verify=function(v,c,a,r){v=this._truncateToN(new m(v,16)),a=this.keyFromPublic(a,r),c=new l(c,"hex");var t=c.r,i=c.s;if(t.cmpn(1)<0||t.cmp(this.n)>=0||i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var n=i.invm(this.n),o=n.mul(v).umod(this.n),p=n.mul(t).umod(this.n);if(!this.curve._maxwellTrick){var O=this.g.mulAdd(o,a.getPublic(),p);return O.isInfinity()?!1:O.getX().umod(this.n).cmp(t)===0}var O=this.g.jmulAdd(o,a.getPublic(),p);return O.isInfinity()?!1:O.eqXToP(t)},d.prototype.recoverPubKey=function(s,v,c,a){y((3&c)===c,"The recovery param is more than two bits"),v=new l(v,a);var r=this.n,t=new m(s),i=v.r,n=v.s,o=c&1,p=c>>1;if(i.cmp(this.curve.p.umod(this.curve.n))>=0&&p)throw new Error("Unable to find sencond key candinate");p?i=this.curve.pointFromX(i.add(this.curve.n),o):i=this.curve.pointFromX(i,o);var O=v.r.invm(r),C=r.sub(t).mul(O).umod(r),N=n.mul(O).umod(r);return this.g.mulAdd(C,i,N)},d.prototype.getKeyRecoveryParam=function(s,v,c,a){if(v=new l(v,a),v.recoveryParam!==null)return v.recoveryParam;for(var r=0;r<4;r++){var t;try{t=this.recoverPubKey(s,v,r)}catch{continue}if(t.eq(c))return r}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,x,_){var u=e("bn.js"),m=e("../utils"),g=m.assert;function b(w,f){this.ec=w,this.priv=null,this.pub=null,f.priv&&this._importPrivate(f.priv,f.privEnc),f.pub&&this._importPublic(f.pub,f.pubEnc)}x.exports=b,b.fromPublic=function(f,y,h){return y instanceof b?y:new b(f,{pub:y,pubEnc:h})},b.fromPrivate=function(f,y,h){return y instanceof b?y:new b(f,{priv:y,privEnc:h})},b.prototype.validate=function(){var f=this.getPublic();return f.isInfinity()?{result:!1,reason:"Invalid public key"}:f.validate()?f.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"}},b.prototype.getPublic=function(f,y){return typeof f=="string"&&(y=f,f=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),y?this.pub.encode(y,f):this.pub},b.prototype.getPrivate=function(f){return f==="hex"?this.priv.toString(16,2):this.priv},b.prototype._importPrivate=function(f,y){this.priv=new u(f,y||16),this.priv=this.priv.umod(this.ec.curve.n)},b.prototype._importPublic=function(f,y){if(f.x||f.y){this.ec.curve.type==="mont"?g(f.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&g(f.x&&f.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(f.x,f.y);return}this.pub=this.ec.curve.decodePoint(f,y)},b.prototype.derive=function(f){return f.mul(this.priv).getX()},b.prototype.sign=function(f,y,h){return this.ec.sign(f,this,y,h)},b.prototype.verify=function(f,y){return this.ec.verify(f,y,this)},b.prototype.inspect=function(){return""}},{"../utils":364,"bn.js":365}],359:[function(e,x,_){var u=e("bn.js"),m=e("../utils"),g=m.assert;function b(l,d){if(l instanceof b)return l;this._importDER(l,d)||(g(l.r&&l.s,"Signature without r or s"),this.r=new u(l.r,16),this.s=new u(l.s,16),l.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=l.recoveryParam)}x.exports=b;function w(){this.place=0}function f(l,d){var s=l[d.place++];if(!(s&128))return s;var v=s&15;if(v===0||v>4)return!1;for(var c=0,a=0,r=d.place;a>>=0;return c<=127?!1:(d.place=r,c)}function y(l){for(var d=0,s=l.length-1;!l[d]&&!(l[d+1]&128)&&d>>3);for(l.push(s|128);--s;)l.push(d>>>(s<<3)&255);l.push(d)}b.prototype.toDER=function(d){var s=this.r.toArray(),v=this.s.toArray();for(s[0]&128&&(s=[0].concat(s)),v[0]&128&&(v=[0].concat(v)),s=y(s),v=y(v);!v[0]&&!(v[1]&128);)v=v.slice(1);var c=[2];h(c,s.length),c=c.concat(s),c.push(2),h(c,v.length);var a=c.concat(v),r=[48];return h(r,a.length),r=r.concat(a),m.encode(r,d)}},{"../utils":364,"bn.js":365}],360:[function(e,x,_){var u=e("hash.js"),m=e("../curves"),g=e("../utils"),b=g.assert,w=g.parseBytes,f=e("./key"),y=e("./signature");function h(d){if(b(d==="ed25519","only tested with ed25519 so far"),!(this instanceof h))return new h(d);var d=m[d].curve;this.curve=d,this.g=d.g,this.g.precompute(d.n.bitLength()+1),this.pointClass=d.point().constructor,this.encodingLength=Math.ceil(d.n.bitLength()/8),this.hash=u.sha512}x.exports=h,h.prototype.sign=function(d,s){d=w(d);var v=this.keyFromSecret(s),c=this.hashInt(v.messagePrefix(),d),a=this.g.mul(c),r=this.encodePoint(a),t=this.hashInt(r,v.pubBytes(),d).mul(v.priv()),i=c.add(t).umod(this.curve.n);return this.makeSignature({R:a,S:i,Rencoded:r})},h.prototype.verify=function(d,s,v){d=w(d),s=this.makeSignature(s);var c=this.keyFromPublic(v),a=this.hashInt(s.Rencoded(),c.pubBytes(),d),r=this.g.mul(s.S()),t=s.R().add(c.pub().mul(a));return t.eq(r)},h.prototype.hashInt=function(){for(var d=this.hash(),s=0;s(a>>1)-1?i=(a>>1)-n:i=n,r.isubn(i)):i=0,c[t]=i,r.iushrn(1)}return c}u.getNAF=w;function f(d,s){var v=[[],[]];d=d.clone(),s=s.clone();for(var c=0,a=0;d.cmpn(-c)>0||s.cmpn(-a)>0;){var r=d.andln(3)+c&3,t=s.andln(3)+a&3;r===3&&(r=-1),t===3&&(t=-1);var i;if(!(r&1))i=0;else{var n=d.andln(7)+c&7;(n===3||n===5)&&t===2?i=-r:i=r}v[0].push(i);var o;if(!(t&1))o=0;else{var n=s.andln(7)+a&7;(n===3||n===5)&&r===2?o=-t:o=t}v[1].push(o),2*c===i+1&&(c=1-c),2*a===o+1&&(a=1-a),d.iushrn(1),s.iushrn(1)}return v}u.getJSF=f;function y(d,s,v){var c="_"+s;d.prototype[s]=function(){return this[c]!==void 0?this[c]:this[c]=v.call(this)}}u.cachedProperty=y;function h(d){return typeof d=="string"?u.toArray(d,"hex"):d}u.parseBytes=h;function l(d){return new m(d,"hex","le")}u.intFromLE=l},{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(e,x,_){arguments[4][181][0].apply(_,arguments)},{buffer:185,dup:181}],366:[function(e,x,_){x.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,x,_){function u(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(R){return typeof R}:u=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},u(M)}var m=Object.create||N,g=Object.keys||L,b=Function.prototype.bind||F;function w(){(!this._events||!Object.prototype.hasOwnProperty.call(this,"_events"))&&(this._events=m(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}x.exports=w,w.EventEmitter=w,w.prototype._events=void 0,w.prototype._maxListeners=void 0;var f=10,y;try{var h={};Object.defineProperty&&Object.defineProperty(h,"x",{value:0}),y=h.x===0}catch{y=!1}y?Object.defineProperty(w,"defaultMaxListeners",{enumerable:!0,get:function(){return f},set:function(D){if(typeof D!="number"||D<0||D!==D)throw new TypeError('"defaultMaxListeners" must be a positive number');f=D}}):w.defaultMaxListeners=f,w.prototype.setMaxListeners=function(D){if(typeof D!="number"||D<0||isNaN(D))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=D,this};function l(M){return M._maxListeners===void 0?w.defaultMaxListeners:M._maxListeners}w.prototype.getMaxListeners=function(){return l(this)};function d(M,D,R){if(D)M.call(R);else for(var P=M.length,E=O(M,P),A=0;A1&&(R=arguments[1]),R instanceof Error)throw R;var U=new Error('Unhandled "error" event. ('+R+")");throw U.context=R,U}if(P=W[D],!P)return!1;var I=typeof P=="function";switch(E=arguments.length,E){case 1:d(P,I,this);break;case 2:s(P,I,this,arguments[1]);break;case 3:v(P,I,this,arguments[1],arguments[2]);break;case 4:c(P,I,this,arguments[1],arguments[2],arguments[3]);break;default:for(A=new Array(E-1),z=1;z0&&z.length>E)){z.warned=!0;var W=new Error("Possible EventEmitter memory leak detected. "+z.length+' "'+String(D)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');W.name="MaxListenersExceededWarning",W.emitter=M,W.type=D,W.count=z.length,(typeof console>"u"?"undefined":u(console))==="object"&&console.warn&&console.warn("%s: %s",W.name,W.message)}return M}w.prototype.addListener=function(D,R){return r(this,D,R,!1)},w.prototype.on=w.prototype.addListener,w.prototype.prependListener=function(D,R){return r(this,D,R,!0)};function t(){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),D=0;D=0;z--)if(P[z]===R||P[z].listener===R){W=P[z].listener,A=z;break}if(A<0)return this;A===0?P.shift():p(P,A),P.length===1&&(E[D]=P[0]),E.removeListener&&this.emit("removeListener",D,W||R)}return this},w.prototype.removeAllListeners=function(D){var R,P,E;if(P=this._events,!P)return this;if(!P.removeListener)return arguments.length===0?(this._events=m(null),this._eventsCount=0):P[D]&&(--this._eventsCount===0?this._events=m(null):delete P[D]),this;if(arguments.length===0){var A=g(P),z;for(E=0;E=0;E--)this.removeListener(D,R[E]);return this};function n(M,D,R){var P=M._events;if(!P)return[];var E=P[D];return E?typeof E=="function"?R?[E.listener||E]:[E]:R?C(E):O(E,E.length):[]}w.prototype.listeners=function(D){return n(this,D,!0)},w.prototype.rawListeners=function(D){return n(this,D,!1)},w.listenerCount=function(M,D){return typeof M.listenerCount=="function"?M.listenerCount(D):o.call(M,D)},w.prototype.listenerCount=o;function o(M){var D=this._events;if(D){var R=D[M];if(typeof R=="function")return 1;if(R)return R.length}return 0}w.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function p(M,D){for(var R=D,P=R+1,E=M.length;P0||y>0;){var v=new m;v.update(s),v.update(b),w&&v.update(w),s=v.digest();var c=0;if(h>0){var a=l.length-h;c=Math.min(h,s.length),s.copy(l,a,0,c),h-=c}if(c0){var r=d.length-y,t=Math.min(y,s.length-c);s.copy(d,r,c,c+t),y-=t}}return s.fill(0),{key:l,iv:d}}x.exports=g},{"md5.js":434,"safe-buffer":494}],369:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0});var u=e("@fast-csv/format");Object.defineProperty(_,"format",{enumerable:!0,get:function(){return u.format}}),Object.defineProperty(_,"write",{enumerable:!0,get:function(){return u.write}}),Object.defineProperty(_,"writeToStream",{enumerable:!0,get:function(){return u.writeToStream}}),Object.defineProperty(_,"writeToBuffer",{enumerable:!0,get:function(){return u.writeToBuffer}}),Object.defineProperty(_,"writeToString",{enumerable:!0,get:function(){return u.writeToString}}),Object.defineProperty(_,"writeToPath",{enumerable:!0,get:function(){return u.writeToPath}}),Object.defineProperty(_,"CsvFormatterStream",{enumerable:!0,get:function(){return u.CsvFormatterStream}}),Object.defineProperty(_,"FormatterOptions",{enumerable:!0,get:function(){return u.FormatterOptions}});var m=e("@fast-csv/parse");Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return m.parse}}),Object.defineProperty(_,"parseString",{enumerable:!0,get:function(){return m.parseString}}),Object.defineProperty(_,"parseStream",{enumerable:!0,get:function(){return m.parseStream}}),Object.defineProperty(_,"parseFile",{enumerable:!0,get:function(){return m.parseFile}}),Object.defineProperty(_,"ParserOptions",{enumerable:!0,get:function(){return m.ParserOptions}}),Object.defineProperty(_,"CsvParserStream",{enumerable:!0,get:function(){return m.CsvParserStream}})},{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(e,x,_){var u=e("safe-buffer").Buffer,m=e("readable-stream").Transform,g=e("inherits");function b(f,y){if(!u.isBuffer(f)&&typeof f!="string")throw new TypeError(y+" must be a string or a buffer")}function w(f){m.call(this),this._block=u.allocUnsafe(f),this._blockSize=f,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}g(w,m),w.prototype._transform=function(f,y,h){var l=null;try{this.update(f,y)}catch(d){l=d}h(l)},w.prototype._flush=function(f){var y=null;try{this.push(this.digest())}catch(h){y=h}f(y)},w.prototype.update=function(f,y){if(b(f,"Data"),this._finalized)throw new Error("Digest already called");u.isBuffer(f)||(f=u.from(f,y));for(var h=this._block,l=0;this._blockOffset+f.length-l>=this._blockSize;){for(var d=this._blockOffset;d0;++s)this._length[s]+=v,v=this._length[s]/4294967296|0,v>0&&(this._length[s]-=4294967296*v);return this},w.prototype._update=function(){throw new Error("_update is not implemented")},w.prototype.digest=function(f){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var y=this._digest();f!==void 0&&(y=y.toString(f)),this._block.fill(0),this._blockOffset=0;for(var h=0;h<4;++h)this._length[h]=0;return y},w.prototype._digest=function(){throw new Error("_digest is not implemented")},x.exports=w},{inherits:387,"readable-stream":491,"safe-buffer":371}],371:[function(e,x,_){arguments[4][214][0].apply(_,arguments)},{buffer:216,dup:214}],372:[function(e,x,_){var u=_;u.utils=e("./hash/utils"),u.common=e("./hash/common"),u.sha=e("./hash/sha"),u.ripemd=e("./hash/ripemd"),u.hmac=e("./hash/hmac"),u.sha1=u.sha.sha1,u.sha256=u.sha.sha256,u.sha224=u.sha.sha224,u.sha384=u.sha.sha384,u.sha512=u.sha.sha512,u.ripemd160=u.ripemd.ripemd160},{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(e,x,_){var u=e("./utils"),m=e("minimalistic-assert");function g(){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}_.BlockHash=g,g.prototype.update=function(w,f){if(w=u.toArray(w,f),this.pending?this.pending=this.pending.concat(w):this.pending=w,this.pendingTotal+=w.length,this.pending.length>=this._delta8){w=this.pending;var y=w.length%this._delta8;this.pending=w.slice(w.length-y,w.length),this.pending.length===0&&(this.pending=null),w=u.join32(w,0,w.length-y,this.endian);for(var h=0;h>>24&255,h[l++]=w>>>16&255,h[l++]=w>>>8&255,h[l++]=w&255}else for(h[l++]=w&255,h[l++]=w>>>8&255,h[l++]=w>>>16&255,h[l++]=w>>>24&255,h[l++]=0,h[l++]=0,h[l++]=0,h[l++]=0,d=8;dthis.blockSize&&(w=new this.Hash().update(w).digest()),m(w.length<=this.blockSize);for(var f=w.length;f>>3}_.g0_256=l;function d(s){return m(s,17)^m(s,19)^s>>>10}_.g1_256=d},{"../utils":383}],383:[function(e,x,_){var u=e("minimalistic-assert"),m=e("inherits");_.inherits=m;function g(P,E){return(P.charCodeAt(E)&64512)!==55296||E<0||E+1>=P.length?!1:(P.charCodeAt(E+1)&64512)===56320}function b(P,E){if(Array.isArray(P))return P.slice();if(!P)return[];var A=[];if(typeof P=="string")if(E){if(E==="hex")for(P=P.replace(/[^a-z0-9]+/ig,""),P.length%2!==0&&(P="0"+P),W=0;W>6|192,A[z++]=$&63|128):g(P,W)?($=65536+(($&1023)<<10)+(P.charCodeAt(++W)&1023),A[z++]=$>>18|240,A[z++]=$>>12&63|128,A[z++]=$>>6&63|128,A[z++]=$&63|128):(A[z++]=$>>12|224,A[z++]=$>>6&63|128,A[z++]=$&63|128)}else for(W=0;W>>24|P>>>8&65280|P<<8&16711680|(P&255)<<24;return E>>>0}_.htonl=f;function y(P,E){for(var A="",z=0;z>>0}return $}_.join32=d;function s(P,E){for(var A=new Array(P.length*4),z=0,W=0;z>>24,A[W+1]=$>>>16&255,A[W+2]=$>>>8&255,A[W+3]=$&255):(A[W+3]=$>>>24,A[W+2]=$>>>16&255,A[W+1]=$>>>8&255,A[W]=$&255)}return A}_.split32=s;function v(P,E){return P>>>E|P<<32-E}_.rotr32=v;function c(P,E){return P<>>32-E}_.rotl32=c;function a(P,E){return P+E>>>0}_.sum32=a;function r(P,E,A){return P+E+A>>>0}_.sum32_3=r;function t(P,E,A,z){return P+E+A+z>>>0}_.sum32_4=t;function i(P,E,A,z,W){return P+E+A+z+W>>>0}_.sum32_5=i;function n(P,E,A,z){var W=P[E],$=P[E+1],U=z+$>>>0,I=(U>>0,P[E+1]=U}_.sum64=n;function o(P,E,A,z){var W=E+z>>>0,$=(W>>0}_.sum64_hi=o;function p(P,E,A,z){var W=E+z;return W>>>0}_.sum64_lo=p;function O(P,E,A,z,W,$,U,I){var j=0,B=E;B=B+z>>>0,j+=B>>0,j+=B<$?1:0,B=B+I>>>0,j+=B>>0}_.sum64_4_hi=O;function C(P,E,A,z,W,$,U,I){var j=E+z+$+I;return j>>>0}_.sum64_4_lo=C;function N(P,E,A,z,W,$,U,I,j,B){var V=0,te=E;te=te+z>>>0,V+=te>>0,V+=te<$?1:0,te=te+I>>>0,V+=te>>0,V+=te>>0}_.sum64_5_hi=N;function L(P,E,A,z,W,$,U,I,j,B){var V=E+z+$+I+B;return V>>>0}_.sum64_5_lo=L;function F(P,E,A){var z=E<<32-A|P>>>A;return z>>>0}_.rotr64_hi=F;function M(P,E,A){var z=P<<32-A|E>>>A;return z>>>0}_.rotr64_lo=M;function D(P,E,A){return P>>>A}_.shr64_hi=D;function R(P,E,A){var z=P<<32-A|E>>>A;return z>>>0}_.shr64_lo=R},{inherits:387,"minimalistic-assert":437}],384:[function(e,x,_){var u=e("hash.js"),m=e("minimalistic-crypto-utils"),g=e("minimalistic-assert");function b(w){if(!(this instanceof b))return new b(w);this.hash=w.hash,this.predResist=!!w.predResist,this.outLen=this.hash.outSize,this.minEntropy=w.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var f=m.toArray(w.entropy,w.entropyEnc||"hex"),y=m.toArray(w.nonce,w.nonceEnc||"hex"),h=m.toArray(w.pers,w.persEnc||"hex");g(f.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(f,y,h)}x.exports=b,b.prototype._init=function(f,y,h){var l=f.concat(y).concat(h);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(f.concat(h||[])),this._reseed=1},b.prototype.generate=function(f,y,h,l){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof y!="string"&&(l=h,h=y,y=null),h&&(h=m.toArray(h,l||"hex"),this._update(h));for(var d=[];d.length>1,s=-7,v=g?w-1:0,c=g?-1:1,a=u[m+v];for(v+=c,f=a&(1<<-s)-1,a>>=-s,s+=h;s>0;f=f*256+u[m+v],v+=c,s-=8);for(y=f&(1<<-s)-1,f>>=-s,s+=b;s>0;y=y*256+u[m+v],v+=c,s-=8);if(f===0)f=1-d;else{if(f===l)return y?NaN:(a?-1:1)*(1/0);y=y+Math.pow(2,b),f=f-d}return(a?-1:1)*y*Math.pow(2,f-b)},_.write=function(u,m,g,b,w,f){var y,h,l,d=f*8-w-1,s=(1<>1,c=w===23?Math.pow(2,-24)-Math.pow(2,-77):0,a=b?0:f-1,r=b?1:-1,t=m<0||m===0&&1/m<0?1:0;for(m=Math.abs(m),isNaN(m)||m===1/0?(h=isNaN(m)?1:0,y=s):(y=Math.floor(Math.log(m)/Math.LN2),m*(l=Math.pow(2,-y))<1&&(y--,l*=2),y+v>=1?m+=c/l:m+=c*Math.pow(2,1-v),m*l>=2&&(y++,l/=2),y+v>=s?(h=0,y=s):y+v>=1?(h=(m*l-1)*Math.pow(2,w),y=y+v):(h=m*Math.pow(2,v-1)*Math.pow(2,w),y=0));w>=8;u[g+a]=h&255,a+=r,h/=256,w-=8);for(y=y<0;u[g+a]=y&255,a+=r,y/=256,d-=8);u[g+a-r]|=t*128}},{}],386:[function(e,x,_){(function(u){var m=u.MutationObserver||u.WebKitMutationObserver,g;if(m){var b=0,w=new m(d),f=u.document.createTextNode("");w.observe(f,{characterData:!0}),g=function(){f.data=b=++b%2}}else if(!u.setImmediate&&typeof u.MessageChannel<"u"){var y=new u.MessageChannel;y.port1.onmessage=d,g=function(){y.port2.postMessage(0)}}else"document"in u&&"onreadystatechange"in u.document.createElement("script")?g=function(){var c=u.document.createElement("script");c.onreadystatechange=function(){d(),c.onreadystatechange=null,c.parentNode.removeChild(c),c=null},u.document.documentElement.appendChild(c)}:g=function(){setTimeout(d,0)};var h,l=[];function d(){h=!0;for(var v,c,a=l.length;a;){for(c=l,l=[],v=-1;++v + * @license MIT + */x.exports=function(g){return g!=null&&(u(g)||m(g)||!!g._isBuffer)};function u(g){return!!g.constructor&&typeof g.constructor.isBuffer=="function"&&g.constructor.isBuffer(g)}function m(g){return typeof g.readFloatLE=="function"&&typeof g.slice=="function"&&u(g.slice(0,0))}},{}],389:[function(e,x,_){var u={}.toString;x.exports=Array.isArray||function(m){return u.call(m)=="[object Array]"}},{}],390:[function(e,x,_){var u=e("./utils"),m=e("./support"),g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";_.encode=function(b){for(var w=[],f,y,h,l,d,s,v,c=0,a=b.length,r=a,t=u.getTypeOf(b)!=="string";c>2,d=(f&3)<<4|y>>4,s=r>1?(y&15)<<2|h>>6:64,v=r>2?h&63:64,w.push(g.charAt(l)+g.charAt(d)+g.charAt(s)+g.charAt(v));return w.join("")},_.decode=function(b){var w,f,y,h,l,d,s,v=0,c=0,a="data:";if(b.substr(0,a.length)===a)throw new Error("Invalid base64 input, it looks like a data url.");b=b.replace(/[^A-Za-z0-9\+\/\=]/g,"");var r=b.length*3/4;if(b.charAt(b.length-1)===g.charAt(64)&&r--,b.charAt(b.length-2)===g.charAt(64)&&r--,r%1!==0)throw new Error("Invalid base64 input, bad content length.");var t;for(m.uint8array?t=new Uint8Array(r|0):t=new Array(r|0);v>4,f=(l&15)<<4|d>>2,y=(d&3)<<6|s,t[c++]=w,d!==64&&(t[c++]=f),s!==64&&(t[c++]=y);return t}},{"./support":419,"./utils":421}],391:[function(e,x,_){var u=e("./external"),m=e("./stream/DataWorker"),b=e("./stream/DataLengthProbe"),g=e("./stream/Crc32Probe"),b=e("./stream/DataLengthProbe");function w(f,y,h,l,d){this.compressedSize=f,this.uncompressedSize=y,this.crc32=h,this.compression=l,this.compressedContent=d}w.prototype={getContentWorker:function(){var y=new m(u.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new b("data_length")),h=this;return y.on("end",function(){if(this.streamInfo.data_length!==h.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),y},getCompressedWorker:function(){return new m(u.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},w.createWorkerFrom=function(f,y,h){return f.pipe(new g).pipe(new b("uncompressedSize")).pipe(y.compressWorker(h)).pipe(new b("compressedSize")).withStreamInfo("compression",y)},x.exports=w},{"./external":395,"./stream/Crc32Probe":414,"./stream/DataLengthProbe":415,"./stream/DataWorker":416}],392:[function(e,x,_){var u=e("./stream/GenericWorker");_.STORE={magic:"\0\0",compressWorker:function(g){return new u("STORE compression")},uncompressWorker:function(){return new u("STORE decompression")}},_.DEFLATE=e("./flate")},{"./flate":396,"./stream/GenericWorker":417}],393:[function(e,x,_){var u=e("./utils");function m(){for(var f,y=[],h=0;h<256;h++){f=h;for(var l=0;l<8;l++)f=f&1?3988292384^f>>>1:f>>>1;y[h]=f}return y}var g=m();function b(f,y,h,l){var d=g,s=l+h;f=f^-1;for(var v=l;v>>8^d[(f^y[v])&255];return f^-1}function w(f,y,h,l){var d=g,s=l+h;f=f^-1;for(var v=l;v>>8^d[(f^y.charCodeAt(v))&255];return f^-1}x.exports=function(y,h){if(typeof y>"u"||!y.length)return 0;var l=u.getTypeOf(y)!=="string";return l?b(h|0,y,y.length,0):w(h|0,y,y.length,0)}},{"./utils":421}],394:[function(e,x,_){_.base64=!1,_.binary=!1,_.dir=!1,_.createFolders=!0,_.date=null,_.compression=null,_.compressionOptions=null,_.comment=null,_.unixPermissions=null,_.dosPermissions=null},{}],395:[function(e,x,_){var u=null;typeof Promise<"u"?u=Promise:u=e("lie"),x.exports={Promise:u}},{lie:425}],396:[function(e,x,_){var u=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",m=e("pako"),g=e("./utils"),b=e("./stream/GenericWorker"),w=u?"uint8array":"array";_.magic="\b\0";function f(y,h){b.call(this,"FlateWorker/"+y),this._pako=null,this._pakoAction=y,this._pakoOptions=h,this.meta={}}g.inherits(f,b),f.prototype.processChunk=function(y){this.meta=y.meta,this._pako===null&&this._createPako(),this._pako.push(g.transformTo(w,y.data),!1)},f.prototype.flush=function(){b.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},f.prototype.cleanUp=function(){b.prototype.cleanUp.call(this),this._pako=null},f.prototype._createPako=function(){this._pako=new m[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var y=this;this._pako.onData=function(h){y.push({data:h,meta:y.meta})}},_.compressWorker=function(y){return new f("Deflate",y)},_.uncompressWorker=function(){return new f("Inflate",{})}},{"./stream/GenericWorker":417,"./utils":421,pako:439}],397:[function(e,x,_){var u=e("../utils"),m=e("../stream/GenericWorker"),g=e("../utf8"),b=e("../crc32"),w=e("../signature"),f=function(a,r){var t="",i;for(i=0;i>>8;return t},y=function(a,r){var t=a;return a||(t=r?16893:33204),(t&65535)<<16},h=function(a,r){return(a||0)&63},l=function(a,r,t,i,n,o){var p=a.file,O=a.compression,C=o!==g.utf8encode,N=u.transformTo("string",o(p.name)),L=u.transformTo("string",g.utf8encode(p.name)),F=p.comment,M=u.transformTo("string",o(F)),D=u.transformTo("string",g.utf8encode(F)),R=L.length!==p.name.length,P=D.length!==F.length,E,A,z="",W="",$="",U=p.dir,I=p.date,j={crc32:0,compressedSize:0,uncompressedSize:0};(!r||t)&&(j.crc32=a.crc32,j.compressedSize=a.compressedSize,j.uncompressedSize=a.uncompressedSize);var B=0;r&&(B|=8),!C&&(R||P)&&(B|=2048);var V=0,te=0;U&&(V|=16),n==="UNIX"?(te=798,V|=y(p.unixPermissions,U)):(te=20,V|=h(p.dosPermissions)),E=I.getUTCHours(),E=E<<6,E=E|I.getUTCMinutes(),E=E<<5,E=E|I.getUTCSeconds()/2,A=I.getUTCFullYear()-1980,A=A<<4,A=A|I.getUTCMonth()+1,A=A<<5,A=A|I.getUTCDate(),R&&(W=f(1,1)+f(b(N),4)+L,z+="up"+f(W.length,2)+W),P&&($=f(1,1)+f(b(M),4)+D,z+="uc"+f($.length,2)+$);var ie="";ie+=` +\0`,ie+=f(B,2),ie+=O.magic,ie+=f(E,2),ie+=f(A,2),ie+=f(j.crc32,4),ie+=f(j.compressedSize,4),ie+=f(j.uncompressedSize,4),ie+=f(N.length,2),ie+=f(z.length,2);var ce=w.LOCAL_FILE_HEADER+ie+N+z,be=w.CENTRAL_FILE_HEADER+f(te,2)+ie+f(M.length,2)+"\0\0\0\0"+f(V,4)+f(i,4)+N+z+M;return{fileRecord:ce,dirRecord:be}},d=function(a,r,t,i,n){var o="",p=u.transformTo("string",n(i));return o=w.CENTRAL_DIRECTORY_END+"\0\0\0\0"+f(a,2)+f(a,2)+f(r,4)+f(t,4)+f(p.length,2)+p,o},s=function(a){var r="";return r=w.DATA_DESCRIPTOR+f(a.crc32,4)+f(a.compressedSize,4)+f(a.uncompressedSize,4),r};function v(c,a,r,t){m.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=a,this.zipPlatform=r,this.encodeFileName=t,this.streamFiles=c,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}u.inherits(v,m),v.prototype.push=function(c){var a=c.meta.percent||0,r=this.entriesCount,t=this._sources.length;this.accumulate?this.contentBuffer.push(c):(this.bytesWritten+=c.data.length,m.prototype.push.call(this,{data:c.data,meta:{currentFile:this.currentFile,percent:r?(a+100*(r-t-1))/r:100}}))},v.prototype.openedSource=function(c){this.currentSourceOffset=this.bytesWritten,this.currentFile=c.file.name;var a=this.streamFiles&&!c.file.dir;if(a){var r=l(c,a,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},v.prototype.closedSource=function(c){this.accumulate=!1;var a=this.streamFiles&&!c.file.dir,r=l(c,a,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),a)this.push({data:s(c),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},v.prototype.flush=function(){for(var c=this.bytesWritten,a=0;a"u")&&(N.binary=!L);var F=o instanceof f&&o.uncompressedSize===0;(F||N.dir||!o||o.length===0)&&(N.base64=!1,N.binary=!0,o="",N.compression="STORE",O="string");var M=null;o instanceof f||o instanceof g?M=o:l.isNode&&l.isStream(o)?M=new d(n,o):M=m.prepareContent(n,o,N.binary,N.optimizedBinaryString,N.base64);var D=new y(n,M,N);this.files[n]=D},v=function(n){n.slice(-1)==="/"&&(n=n.substring(0,n.length-1));var o=n.lastIndexOf("/");return o>0?n.substring(0,o):""},c=function(n){return n.slice(-1)!=="/"&&(n+="/"),n},a=function(n,o){return o=typeof o<"u"?o:w.createFolders,n=c(n),this.files[n]||s.call(this,n,null,{dir:!0,createFolders:o}),this.files[n]};function r(i){return Object.prototype.toString.call(i)==="[object RegExp]"}var t={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(n){var o,p,O;for(o in this.files)this.files.hasOwnProperty(o)&&(O=this.files[o],p=o.slice(this.root.length,o.length),p&&o.slice(0,this.root.length)===this.root&&n(p,O))},filter:function(n){var o=[];return this.forEach(function(p,O){n(p,O)&&o.push(O)}),o},file:function(n,o,p){if(arguments.length===1)if(r(n)){var O=n;return this.filter(function(N,L){return!L.dir&&O.test(N)})}else{var C=this.files[this.root+n];return C&&!C.dir?C:null}else n=this.root+n,s.call(this,n,o,p);return this},folder:function(n){if(!n)return this;if(r(n))return this.filter(function(C,N){return N.dir&&n.test(C)});var o=this.root+n,p=a.call(this,o),O=this.clone();return O.root=p.name,O},remove:function(n){n=this.root+n;var o=this.files[n];if(o||(n.slice(-1)!=="/"&&(n+="/"),o=this.files[n]),o&&!o.dir)delete this.files[n];else for(var p=this.filter(function(C,N){return N.name.slice(0,n.length)===n}),O=0;O=0;--l)if(this.data[l]===w&&this.data[l+1]===f&&this.data[l+2]===y&&this.data[l+3]===h)return l-this.zero;return-1},g.prototype.readAndCheckSignature=function(b){var w=b.charCodeAt(0),f=b.charCodeAt(1),y=b.charCodeAt(2),h=b.charCodeAt(3),l=this.readData(4);return w===l[0]&&f===l[1]&&y===l[2]&&h===l[3]},g.prototype.readData=function(b){if(this.checkOffset(b),b===0)return[];var w=this.data.slice(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},x.exports=g},{"../utils":421,"./DataReader":407}],407:[function(e,x,_){var u=e("../utils");function m(g){this.data=g,this.length=g.length,this.index=0,this.zero=0}m.prototype={checkOffset:function(b){this.checkIndex(this.index+b)},checkIndex:function(b){if(this.length=this.index;f--)w=(w<<8)+this.byteAt(f);return this.index+=b,w},readString:function(b){return u.transformTo("string",this.readData(b))},readData:function(b){},lastIndexOfSignature:function(b){},readAndCheckSignature:function(b){},readDate:function(){var b=this.readInt(4);return new Date(Date.UTC((b>>25&127)+1980,(b>>21&15)-1,b>>16&31,b>>11&31,b>>5&63,(b&31)<<1))}},x.exports=m},{"../utils":421}],408:[function(e,x,_){var u=e("./Uint8ArrayReader"),m=e("../utils");function g(b){u.call(this,b)}m.inherits(g,u),g.prototype.readData=function(b){this.checkOffset(b);var w=this.data.slice(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},x.exports=g},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(e,x,_){var u=e("./DataReader"),m=e("../utils");function g(b){u.call(this,b)}m.inherits(g,u),g.prototype.byteAt=function(b){return this.data.charCodeAt(this.zero+b)},g.prototype.lastIndexOfSignature=function(b){return this.data.lastIndexOf(b)-this.zero},g.prototype.readAndCheckSignature=function(b){var w=this.readData(4);return b===w},g.prototype.readData=function(b){this.checkOffset(b);var w=this.data.slice(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},x.exports=g},{"../utils":421,"./DataReader":407}],410:[function(e,x,_){var u=e("./ArrayReader"),m=e("../utils");function g(b){u.call(this,b)}m.inherits(g,u),g.prototype.readData=function(b){if(this.checkOffset(b),b===0)return new Uint8Array(0);var w=this.data.subarray(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},x.exports=g},{"../utils":421,"./ArrayReader":406}],411:[function(e,x,_){var u=e("../utils"),m=e("../support"),g=e("./ArrayReader"),b=e("./StringReader"),w=e("./NodeBufferReader"),f=e("./Uint8ArrayReader");x.exports=function(y){var h=u.getTypeOf(y);return u.checkSupport(h),h==="string"&&!m.uint8array?new b(y):h==="nodebuffer"?new w(y):m.uint8array?new f(u.transformTo("uint8array",y)):new g(u.transformTo("array",y))}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(e,x,_){_.LOCAL_FILE_HEADER="PK",_.CENTRAL_FILE_HEADER="PK",_.CENTRAL_DIRECTORY_END="PK",_.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",_.ZIP64_CENTRAL_DIRECTORY_END="PK",_.DATA_DESCRIPTOR="PK\x07\b"},{}],413:[function(e,x,_){var u=e("./GenericWorker"),m=e("../utils");function g(b){u.call(this,"ConvertWorker to "+b),this.destType=b}m.inherits(g,u),g.prototype.processChunk=function(b){this.push({data:m.transformTo(this.destType,b.data),meta:b.meta})},x.exports=g},{"../utils":421,"./GenericWorker":417}],414:[function(e,x,_){var u=e("./GenericWorker"),m=e("../crc32"),g=e("../utils");function b(){u.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}g.inherits(b,u),b.prototype.processChunk=function(w){this.streamInfo.crc32=m(w.data,this.streamInfo.crc32||0),this.push(w)},x.exports=b},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(e,x,_){var u=e("../utils"),m=e("./GenericWorker");function g(b){m.call(this,"DataLengthProbe for "+b),this.propName=b,this.withStreamInfo(b,0)}u.inherits(g,m),g.prototype.processChunk=function(b){if(b){var w=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=w+b.data.length}m.prototype.processChunk.call(this,b)},x.exports=g},{"../utils":421,"./GenericWorker":417}],416:[function(e,x,_){var u=e("../utils"),m=e("./GenericWorker"),g=16*1024;function b(w){m.call(this,"DataWorker");var f=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,w.then(function(y){f.dataIsReady=!0,f.data=y,f.max=y&&y.length||0,f.type=u.getTypeOf(y),f.isPaused||f._tickAndRepeat()},function(y){f.error(y)})}u.inherits(b,m),b.prototype.cleanUp=function(){m.prototype.cleanUp.call(this),this.data=null},b.prototype.resume=function(){return m.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,u.delay(this._tickAndRepeat,[],this)),!0):!1},b.prototype._tickAndRepeat=function(){this._tickScheduled=!1,!(this.isPaused||this.isFinished)&&(this._tick(),this.isFinished||(u.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},b.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var w=g,f=null,y=Math.min(this.max,this.index+w);if(this.index>=this.max)return this.end();switch(this.type){case"string":f=this.data.substring(this.index,y);break;case"uint8array":f=this.data.subarray(this.index,y);break;case"array":case"nodebuffer":f=this.data.slice(this.index,y);break}return this.index=y,this.push({data:f,meta:{percent:this.max?this.index/this.max*100:0}})},x.exports=b},{"../utils":421,"./GenericWorker":417}],417:[function(e,x,_){function u(m){this.name=m||"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}u.prototype={push:function(g){this.emit("data",g)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(g){this.emit("error",g)}return!0},error:function(g){return this.isFinished?!1:(this.isPaused?this.generatedError=g:(this.isFinished=!0,this.emit("error",g),this.previous&&this.previous.error(g),this.cleanUp()),!0)},on:function(g,b){return this._listeners[g].push(b),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(g,b){if(this._listeners[g])for(var w=0;w "+g:g}},x.exports=u},{}],418:[function(e,x,_){(function(u){var m=e("../utils"),g=e("./ConvertWorker"),b=e("./GenericWorker"),w=e("../base64"),f=e("../support"),y=e("../external"),h=null;if(f.nodestream)try{h=e("../nodejs/NodejsStreamOutputAdapter")}catch{}function l(c,a,r){switch(c){case"blob":return m.newBlob(m.transformTo("arraybuffer",a),r);case"base64":return w.encode(a);default:return m.transformTo(c,a)}}function d(c,a){var r,t=0,i=null,n=0;for(r=0;r"u")_.blob=!1;else{var m=new ArrayBuffer(0);try{_.blob=new Blob([m],{type:"application/zip"}).size===0}catch{try{var g=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,b=new g;b.append(m),_.blob=b.getBlob("application/zip").size===0}catch{_.blob=!1}}}try{_.nodestream=!!e("readable-stream").Readable}catch{_.nodestream=!1}}).call(this,e("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(e,x,_){for(var u=e("./utils"),m=e("./support"),g=e("./nodejsUtils"),b=e("./stream/GenericWorker"),w=new Array(256),f=0;f<256;f++)w[f]=f>=252?6:f>=248?5:f>=240?4:f>=224?3:f>=192?2:1;w[254]=w[254]=1;var y=function(c){var a,r,t,i,n,o=c.length,p=0;for(i=0;i>>6,a[n++]=128|r&63):r<65536?(a[n++]=224|r>>>12,a[n++]=128|r>>>6&63,a[n++]=128|r&63):(a[n++]=240|r>>>18,a[n++]=128|r>>>12&63,a[n++]=128|r>>>6&63,a[n++]=128|r&63);return a},h=function(c,a){var r;for(a=a||c.length,a>c.length&&(a=c.length),r=a-1;r>=0&&(c[r]&192)===128;)r--;return r<0||r===0?a:r+w[c[r]]>a?r:a},l=function(c){var a,r,t,i,n=c.length,o=new Array(n*2);for(r=0,a=0;a4){o[r++]=65533,a+=i-1;continue}for(t&=i===2?31:i===3?15:7;i>1&&a1){o[r++]=65533;continue}t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|t&1023)}return o.length!==r&&(o.subarray?o=o.subarray(0,r):o.length=r),u.applyFromCharCode(o)};_.utf8encode=function(c){return m.nodebuffer?g.newBufferFrom(c,"utf-8"):y(c)},_.utf8decode=function(c){return m.nodebuffer?u.transformTo("nodebuffer",c).toString("utf-8"):(c=u.transformTo(m.uint8array?"uint8array":"array",c),l(c))};function d(){b.call(this,"utf-8 decode"),this.leftOver=null}u.inherits(d,b),d.prototype.processChunk=function(v){var c=u.transformTo(m.uint8array?"uint8array":"array",v.data);if(this.leftOver&&this.leftOver.length){if(m.uint8array){var a=c;c=new Uint8Array(a.length+this.leftOver.length),c.set(this.leftOver,0),c.set(a,this.leftOver.length)}else c=this.leftOver.concat(c);this.leftOver=null}var r=h(c),t=c;r!==c.length&&(m.uint8array?(t=c.subarray(0,r),this.leftOver=c.subarray(r,c.length)):(t=c.slice(0,r),this.leftOver=c.slice(r,c.length))),this.push({data:_.utf8decode(t),meta:v.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:_.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},_.Utf8DecodeWorker=d;function s(){b.call(this,"utf-8 encode")}u.inherits(s,b),s.prototype.processChunk=function(v){this.push({data:_.utf8encode(v.data),meta:v.meta})},_.Utf8EncodeWorker=s},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(e,x,_){var u=e("./support"),m=e("./base64"),g=e("./nodejsUtils"),b=e("set-immediate-shim"),w=e("./external");function f(c){var a=null;return u.uint8array?a=new Uint8Array(c.length):a=new Array(c.length),h(c,a)}_.newBlob=function(c,a){_.checkSupport("blob");try{return new Blob([c],{type:a})}catch{try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,t=new r;return t.append(c),t.getBlob(a)}catch{throw new Error("Bug : can't construct the Blob.")}}};function y(c){return c}function h(c,a){for(var r=0;r1;)try{return l.stringifyByChunk(c,r,a)}catch{a=Math.floor(a/2)}return l.stringifyByChar(c)}_.applyFromCharCode=d;function s(c,a){for(var r=0;r"u"&&(c[r]=arguments[a][r]);return c},_.prepareContent=function(c,a,r,t,i){var n=w.Promise.resolve(a).then(function(o){var p=u.blob&&(o instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(o))!==-1);return p&&typeof FileReader<"u"?new w.Promise(function(O,C){var N=new FileReader;N.onload=function(L){O(L.target.result)},N.onerror=function(L){C(L.target.error)},N.readAsArrayBuffer(o)}):o});return n.then(function(o){var p=_.getTypeOf(o);return p?(p==="arraybuffer"?o=_.transformTo("uint8array",o):p==="string"&&(i?o=m.decode(o):r&&t!==!0&&(o=f(o))),o):w.Promise.reject(new Error("Can't read the data of '"+c+"'. 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,x,_){var u=e("./reader/readerFor"),m=e("./utils"),g=e("./signature"),b=e("./zipEntry");e("./utf8");var w=e("./support");function f(y){this.files=[],this.loadOptions=y}f.prototype={checkSignature:function(h){if(!this.reader.readAndCheckSignature(h)){this.reader.index-=4;var l=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+m.pretty(l)+", expected "+m.pretty(h)+")")}},isSignature:function(h,l){var d=this.reader.index;this.reader.setIndex(h);var s=this.reader.readString(4),v=s===l;return this.reader.setIndex(d),v},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 h=this.reader.readData(this.zipCommentLength),l=w.uint8array?"uint8array":"array",d=m.transformTo(l,h);this.zipComment=this.loadOptions.decodeFileName(d)},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 h=this.zip64EndOfCentralSize-44,l=0,d,s,v;l1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var h,l;for(h=0;h0)this.isSignature(d,g.CENTRAL_FILE_HEADER)||(this.reader.zero=v);else if(v<0)throw new Error("Corrupted zip: missing "+Math.abs(v)+" bytes.")},prepareReader:function(h){this.reader=u(h)},load:function(h){this.prepareReader(h),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},x.exports=f},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(e,x,_){var u=e("./reader/readerFor"),m=e("./utils"),g=e("./compressedObject"),b=e("./crc32"),w=e("./utf8"),f=e("./compressions"),y=e("./support"),h=0,l=3,d=function(c){for(var a in f)if(f.hasOwnProperty(a)&&f[a].magic===c)return f[a];return null};function s(v,c){this.options=v,this.loadOptions=c}s.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(c){var a,r;if(c.skip(22),this.fileNameLength=c.readInt(2),r=c.readInt(2),this.fileName=c.readData(this.fileNameLength),c.skip(r),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(a=d(this.compressionMethod),a===null)throw new Error("Corrupted zip : compression "+m.pretty(this.compressionMethod)+" unknown (inner file : "+m.transformTo("string",this.fileName)+")");this.decompressed=new g(this.compressedSize,this.uncompressedSize,this.crc32,a,c.readData(this.compressedSize))},readCentralPart:function(c){this.versionMadeBy=c.readInt(2),c.skip(2),this.bitFlag=c.readInt(2),this.compressionMethod=c.readString(2),this.date=c.readDate(),this.crc32=c.readInt(4),this.compressedSize=c.readInt(4),this.uncompressedSize=c.readInt(4);var a=c.readInt(2);if(this.extraFieldsLength=c.readInt(2),this.fileCommentLength=c.readInt(2),this.diskNumberStart=c.readInt(2),this.internalFileAttributes=c.readInt(2),this.externalFileAttributes=c.readInt(4),this.localHeaderOffset=c.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");c.skip(a),this.readExtraFields(c),this.parseZIP64ExtraField(c),this.fileComment=c.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var c=this.versionMadeBy>>8;this.dir=!!(this.externalFileAttributes&16),c===h&&(this.dosPermissions=this.externalFileAttributes&63),c===l&&(this.unixPermissions=this.externalFileAttributes>>16&65535),!this.dir&&this.fileNameStr.slice(-1)==="/"&&(this.dir=!0)},parseZIP64ExtraField:function(c){if(this.extraFields[1]){var a=u(this.extraFields[1].value);this.uncompressedSize===m.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===m.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===m.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===m.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(c){var a=c.index+this.extraFieldsLength,r,t,i;for(this.extraFields||(this.extraFields={});c.index+4"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,h=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,l=y||h||Function("return this")(),d=Object.prototype,s=d.toString,v=l.Symbol,c=v?v.prototype:void 0,a=c?c.toString:void 0;function r(p){if(typeof p=="string")return p;if(i(p))return a?a.call(p):"";var O=p+"";return O=="0"&&1/p==-g?"-0":O}function t(p){return!!p&&m(p)=="object"}function i(p){return m(p)=="symbol"||t(p)&&s.call(p)==b}function n(p){return p==null?"":r(p)}function o(p){return p=n(p),p&&f.test(p)?p.replace(w,"\\$&"):p}x.exports=o}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],427:[function(e,x,_){(function(u){function m(le){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(He){return typeof He}:m=function(He){return He&&typeof Symbol=="function"&&He.constructor===Symbol&&He!==Symbol.prototype?"symbol":typeof He},m(le)}var g=200,b="Expected a function",w="__lodash_hash_undefined__",f=1,y=2,h=1/0,l=9007199254740991,d="[object Arguments]",s="[object Array]",v="[object Boolean]",c="[object Date]",a="[object Error]",r="[object Function]",t="[object GeneratorFunction]",i="[object Map]",n="[object Number]",o="[object Object]",p="[object Promise]",O="[object RegExp]",C="[object Set]",N="[object String]",L="[object Symbol]",F="[object WeakMap]",M="[object ArrayBuffer]",D="[object DataView]",R="[object Float32Array]",P="[object Float64Array]",E="[object Int8Array]",A="[object Int16Array]",z="[object Int32Array]",W="[object Uint8Array]",$="[object Uint8ClampedArray]",U="[object Uint16Array]",I="[object Uint32Array]",j=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,B=/^\w*$/,V=/^\./,te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ie=/[\\^$.*+?()[\]{}|]/g,ce=/\\(\\)?/g,be=/^\[object .+?Constructor\]$/,_e=/^(?:0|[1-9]\d*)$/,oe={};oe[R]=oe[P]=oe[E]=oe[A]=oe[z]=oe[W]=oe[$]=oe[U]=oe[I]=!0,oe[d]=oe[s]=oe[M]=oe[v]=oe[D]=oe[c]=oe[a]=oe[r]=oe[i]=oe[n]=oe[o]=oe[O]=oe[C]=oe[N]=oe[F]=!1;var J=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,Q=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,he=J||Q||Function("return this")(),ke=(typeof _>"u"?"undefined":m(_))=="object"&&_&&!_.nodeType&&_,re=ke&&(typeof x>"u"?"undefined":m(x))=="object"&&x&&!x.nodeType&&x,se=re&&re.exports===ke,Ce=se&&J.process,q=function(){try{return Ce&&Ce.binding("util")}catch{}}(),G=q&&q.isTypedArray;function Z(le,Oe,He,ft){for(var Tt=-1,mt=le?le.length:0;++Tt-1}function Zr(le,Oe){var He=this.__data__,ft=zr(He,le);return ft<0?He.push([le,Oe]):He[ft][1]=Oe,this}Et.prototype.clear=Dr,Et.prototype.delete=Or,Et.prototype.get=Gr,Et.prototype.has=Nr,Et.prototype.set=Zr;function Qt(le){var Oe=-1,He=le?le.length:0;for(this.clear();++Oeir))return!1;var _r=mt.get(le);if(_r&&mt.get(Oe))return _r==Oe;var Tr=-1,wr=!0,Rr=Tt&f?new Ke:void 0;for(mt.set(le,Oe),mt.set(Oe,le);++Tr-1&&le%1==0&&le-1&&le%1==0&&le<=l}function dr(le){var Oe=m(le);return!!le&&(Oe=="object"||Oe=="function")}function Er(le){return!!le&&m(le)=="object"}function Ar(le){return m(le)=="symbol"||Er(le)&&pe.call(le)==L}var pr=G?je(G):Wi;function pn(le){return le==null?"":wa(le)}function mr(le,Oe,He){var ft=le==null?void 0:yi(le,Oe);return ft===void 0?He:ft}function ea(le,Oe){return le!=null&&Yi(le,Oe,dn)}function En(le){return tr(le)?rn(le):Bn(le)}function Yr(le){return le}function ta(le){return er(le)?we(De(le)):xn(le)}x.exports=ht}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],428:[function(e,x,_){function u(y){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(l){return typeof l}:u=function(l){return l&&typeof Symbol=="function"&&l.constructor===Symbol&&l!==Symbol.prototype?"symbol":typeof l},u(y)}var m="[object Boolean]",g=Object.prototype,b=g.toString;function w(y){return y===!0||y===!1||f(y)&&b.call(y)==m}function f(y){return!!y&&u(y)=="object"}x.exports=w},{}],429:[function(e,x,_){(function(u){function m(xe){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(Je){return typeof Je}:m=function(Je){return Je&&typeof Symbol=="function"&&Je.constructor===Symbol&&Je!==Symbol.prototype?"symbol":typeof Je},m(xe)}var g=200,b="__lodash_hash_undefined__",w=1,f=2,y=9007199254740991,h="[object Arguments]",l="[object Array]",d="[object AsyncFunction]",s="[object Boolean]",v="[object Date]",c="[object Error]",a="[object Function]",r="[object GeneratorFunction]",t="[object Map]",i="[object Number]",n="[object Null]",o="[object Object]",p="[object Promise]",O="[object Proxy]",C="[object RegExp]",N="[object Set]",L="[object String]",F="[object Symbol]",M="[object Undefined]",D="[object WeakMap]",R="[object ArrayBuffer]",P="[object DataView]",E="[object Float32Array]",A="[object Float64Array]",z="[object Int8Array]",W="[object Int16Array]",$="[object Int32Array]",U="[object Uint8Array]",I="[object Uint8ClampedArray]",j="[object Uint16Array]",B="[object Uint32Array]",V=/[\\^$.*+?()[\]{}|]/g,te=/^\[object .+?Constructor\]$/,ie=/^(?:0|[1-9]\d*)$/,ce={};ce[E]=ce[A]=ce[z]=ce[W]=ce[$]=ce[U]=ce[I]=ce[j]=ce[B]=!0,ce[h]=ce[l]=ce[R]=ce[s]=ce[P]=ce[v]=ce[c]=ce[a]=ce[t]=ce[i]=ce[o]=ce[C]=ce[N]=ce[L]=ce[D]=!1;var be=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,_e=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,oe=be||_e||Function("return this")(),J=(typeof _>"u"?"undefined":m(_))=="object"&&_&&!_.nodeType&&_,Q=J&&(typeof x>"u"?"undefined":m(x))=="object"&&x&&!x.nodeType&&x,he=Q&&Q.exports===J,ke=he&&be.process,re=function(){try{return ke&&ke.binding&&ke.binding("util")}catch{}}(),se=re&&re.isTypedArray;function Ce(xe,De){for(var Je=-1,ht=xe==null?0:xe.length,Zt=0,Mt=[];++Je-1}function Zr(xe,De){var Je=this.__data__,ht=zr(Je,xe);return ht<0?(++this.size,Je.push([xe,De])):Je[ht][1]=De,this}Et.prototype.clear=Dr,Et.prototype.delete=Or,Et.prototype.get=Gr,Et.prototype.has=Nr,Et.prototype.set=Zr;function Qt(xe){var De=-1,Je=xe==null?0:xe.length;for(this.clear();++Denr))return!1;var ur=Mt.get(xe);if(ur&&Mt.get(De))return ur==De;var Pr=-1,Br=!0,dr=Je&f?new Ke:void 0;for(Mt.set(xe,De),Mt.set(De,xe);++Pr-1&&xe%1==0&&xe-1&&xe%1==0&&xe<=y}function er(xe){var De=m(xe);return xe!=null&&(De=="object"||De=="function")}function ti(xe){return xe!=null&&m(xe)=="object"}var Ji=se?fe(se):dn;function Oa(xe){return ka(xe)?rn(xe):Nn(xe)}function Qi(){return[]}function qi(){return!1}x.exports=On}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],430:[function(e,x,_){(function(u){function m(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(L){return typeof L}:m=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},m(C)}var g="[object AsyncFunction]",b="[object Function]",w="[object GeneratorFunction]",f="[object Null]",y="[object Proxy]",h="[object Undefined]",l=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,d=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,s=l||d||Function("return this")(),v=Object.prototype,c=v.hasOwnProperty,a=v.toString,r=s.Symbol,t=r?r.toStringTag:void 0;function i(C){return C==null?C===void 0?h:f:t&&t in Object(C)?n(C):o(C)}function n(C){var N=c.call(C,t),L=C[t];try{C[t]=void 0;var F=!0}catch{}var M=a.call(C);return F&&(N?C[t]=L:delete C[t]),M}function o(C){return a.call(C)}function p(C){if(!O(C))return!1;var N=i(C);return N==b||N==w||N==g||N==y}function O(C){var N=m(C);return C!=null&&(N=="object"||N=="function")}x.exports=p}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],431:[function(e,x,_){function u(m){return m==null}x.exports=u},{}],432:[function(e,x,_){function u(m){return m===void 0}x.exports=u},{}],433:[function(e,x,_){(function(u){function m(me){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(pe){return typeof pe}:m=function(pe){return pe&&typeof Symbol=="function"&&pe.constructor===Symbol&&pe!==Symbol.prototype?"symbol":typeof pe},m(me)}var g=200,b="__lodash_hash_undefined__",w=1/0,f="[object Function]",y="[object GeneratorFunction]",h=/[\\^$.*+?()[\]{}|]/g,l=/^\[object .+?Constructor\]$/,d=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,s=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,v=d||s||Function("return this")();function c(me,Ee){var pe=me?me.length:0;return!!pe&&t(me,Ee,0)>-1}function a(me,Ee,pe){for(var Pe=-1,ee=me?me.length:0;++Pe-1}function J(me,Ee){var pe=this.__data__,Pe=fe(pe,me);return Pe<0?pe.push([me,Ee]):pe[Pe][1]=Ee,this}ie.prototype.clear=ce,ie.prototype.delete=be,ie.prototype.get=_e,ie.prototype.has=oe,ie.prototype.set=J;function Q(me){var Ee=-1,pe=me?me.length:0;for(this.clear();++Ee=g){var Le=Ee?null:je(me);if(Le)return O(Le);it=!1,ee=n,Me=new q}else Me=Ee?[]:K;e:for(;++Pe56&&(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 s=g.allocUnsafe(16);return s.writeInt32LE(this._a,0),s.writeInt32LE(this._b,4),s.writeInt32LE(this._c,8),s.writeInt32LE(this._d,12),s};function f(s,v){return s<>>32-v}function y(s,v,c,a,r,t,i){return f(s+(v&c|~v&a)+r+t|0,i)+v|0}function h(s,v,c,a,r,t,i){return f(s+(v&a|c&~a)+r+t|0,i)+v|0}function l(s,v,c,a,r,t,i){return f(s+(v^c^a)+r+t|0,i)+v|0}function d(s,v,c,a,r,t,i){return f(s+(c^(v|~a))+r+t|0,i)+v|0}x.exports=w},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(e,x,_){var u=e("bn.js"),m=e("brorand");function g(b){this.rand=b||new m.Rand}x.exports=g,g.create=function(w){return new g(w)},g.prototype._randbelow=function(w){var f=w.bitLength(),y=Math.ceil(f/8);do var h=new u(this.rand.generate(y));while(h.cmp(w)>=0);return h},g.prototype._randrange=function(w,f){var y=f.sub(w);return w.add(this._randbelow(y))},g.prototype.test=function(w,f,y){var h=w.bitLength(),l=u.mont(w),d=new u(1).toRed(l);f||(f=Math.max(1,h/48|0));for(var s=w.subn(1),v=0;!s.testn(v);v++);for(var c=w.shrn(v),a=s.toRed(l),r=!0;f>0;f--){var t=this._randrange(new u(2),s);y&&y(t);var i=t.toRed(l).redPow(c);if(!(i.cmp(d)===0||i.cmp(a)===0)){for(var n=1;n0;f--){var a=this._randrange(new u(2),d),r=w.gcd(a);if(r.cmpn(1)!==0)return r;var t=a.toRed(h).redPow(v);if(!(t.cmp(l)===0||t.cmp(c)===0)){for(var i=1;i>8,s=l&255;d?y.push(d,s):y.push(s)}return y}u.toArray=m;function g(w){return w.length===1?"0"+w:w}u.zero2=g;function b(w){for(var f="",y=0;y0?p.windowBits=-p.windowBits:p.gzip&&p.windowBits>0&&p.windowBits<16&&(p.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new w,this.strm.avail_out=0;var O=u.deflateInit2(this.strm,p.level,p.method,p.windowBits,p.memLevel,p.strategy);if(O!==l)throw new Error(b[O]);if(p.header&&u.deflateSetHeader(this.strm,p.header),p.dictionary){var C;if(typeof p.dictionary=="string"?C=g.string2buf(p.dictionary):f.call(p.dictionary)==="[object ArrayBuffer]"?C=new Uint8Array(p.dictionary):C=p.dictionary,O=u.deflateSetDictionary(this.strm,C),O!==l)throw new Error(b[O]);this._dict_set=!0}}r.prototype.push=function(o,p){var O=this.strm,C=this.options.chunkSize,N,L;if(this.ended)return!1;L=p===~~p?p:p===!0?h:y,typeof o=="string"?O.input=g.string2buf(o):f.call(o)==="[object ArrayBuffer]"?O.input=new Uint8Array(o):O.input=o,O.next_in=0,O.avail_in=O.input.length;do{if(O.avail_out===0&&(O.output=new m.Buf8(C),O.next_out=0,O.avail_out=C),N=u.deflate(O,L),N!==d&&N!==l)return this.onEnd(N),this.ended=!0,!1;(O.avail_out===0||O.avail_in===0&&(L===h||L===s))&&(this.options.to==="string"?this.onData(g.buf2binstring(m.shrinkBuf(O.output,O.next_out))):this.onData(m.shrinkBuf(O.output,O.next_out)))}while((O.avail_in>0||O.avail_out===0)&&N!==d);return L===h?(N=u.deflateEnd(this.strm),this.onEnd(N),this.ended=!0,N===l):(L===s&&(this.onEnd(l),O.avail_out=0),!0)},r.prototype.onData=function(o){this.chunks.push(o)},r.prototype.onEnd=function(o){o===l&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=m.flattenChunks(this.chunks)),this.chunks=[],this.err=o,this.msg=this.strm.msg};function t(o,p){var O=new r(p);if(O.push(o,!0),O.err)throw O.msg||b[O.err];return O.result}function i(o,p){return p=p||{},p.raw=!0,t(o,p)}function n(o,p){return p=p||{},p.gzip=!0,t(o,p)}_.Deflate=r,_.deflate=t,_.deflateRaw=i,_.gzip=n},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(e,x,_){var u=e("./zlib/inflate"),m=e("./utils/common"),g=e("./utils/strings"),b=e("./zlib/constants"),w=e("./zlib/messages"),f=e("./zlib/zstream"),y=e("./zlib/gzheader"),h=Object.prototype.toString;function l(v){if(!(this instanceof l))return new l(v);this.options=m.assign({chunkSize:16384,windowBits:0,to:""},v||{});var c=this.options;c.raw&&c.windowBits>=0&&c.windowBits<16&&(c.windowBits=-c.windowBits,c.windowBits===0&&(c.windowBits=-15)),c.windowBits>=0&&c.windowBits<16&&!(v&&v.windowBits)&&(c.windowBits+=32),c.windowBits>15&&c.windowBits<48&&(c.windowBits&15||(c.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var a=u.inflateInit2(this.strm,c.windowBits);if(a!==b.Z_OK)throw new Error(w[a]);if(this.header=new y,u.inflateGetHeader(this.strm,this.header),c.dictionary&&(typeof c.dictionary=="string"?c.dictionary=g.string2buf(c.dictionary):h.call(c.dictionary)==="[object ArrayBuffer]"&&(c.dictionary=new Uint8Array(c.dictionary)),c.raw&&(a=u.inflateSetDictionary(this.strm,c.dictionary),a!==b.Z_OK)))throw new Error(w[a])}l.prototype.push=function(v,c){var a=this.strm,r=this.options.chunkSize,t=this.options.dictionary,i,n,o,p,O,C=!1;if(this.ended)return!1;n=c===~~c?c:c===!0?b.Z_FINISH:b.Z_NO_FLUSH,typeof v=="string"?a.input=g.binstring2buf(v):h.call(v)==="[object ArrayBuffer]"?a.input=new Uint8Array(v):a.input=v,a.next_in=0,a.avail_in=a.input.length;do{if(a.avail_out===0&&(a.output=new m.Buf8(r),a.next_out=0,a.avail_out=r),i=u.inflate(a,b.Z_NO_FLUSH),i===b.Z_NEED_DICT&&t&&(i=u.inflateSetDictionary(this.strm,t)),i===b.Z_BUF_ERROR&&C===!0&&(i=b.Z_OK,C=!1),i!==b.Z_STREAM_END&&i!==b.Z_OK)return this.onEnd(i),this.ended=!0,!1;a.next_out&&(a.avail_out===0||i===b.Z_STREAM_END||a.avail_in===0&&(n===b.Z_FINISH||n===b.Z_SYNC_FLUSH))&&(this.options.to==="string"?(o=g.utf8border(a.output,a.next_out),p=a.next_out-o,O=g.buf2string(a.output,o),a.next_out=p,a.avail_out=r-p,p&&m.arraySet(a.output,a.output,o,p,0),this.onData(O)):this.onData(m.shrinkBuf(a.output,a.next_out))),a.avail_in===0&&a.avail_out===0&&(C=!0)}while((a.avail_in>0||a.avail_out===0)&&i!==b.Z_STREAM_END);return i===b.Z_STREAM_END&&(n=b.Z_FINISH),n===b.Z_FINISH?(i=u.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===b.Z_OK):(n===b.Z_SYNC_FLUSH&&(this.onEnd(b.Z_OK),a.avail_out=0),!0)},l.prototype.onData=function(v){this.chunks.push(v)},l.prototype.onEnd=function(v){v===b.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=m.flattenChunks(this.chunks)),this.chunks=[],this.err=v,this.msg=this.strm.msg};function d(v,c){var a=new l(c);if(a.push(v,!0),a.err)throw a.msg||w[a.err];return a.result}function s(v,c){return c=c||{},c.raw=!0,d(v,c)}_.Inflate=l,_.inflate=d,_.inflateRaw=s,_.ungzip=d},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(e,x,_){function u(f){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(h){return typeof h}:u=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},u(f)}var m=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function g(f,y){return Object.prototype.hasOwnProperty.call(f,y)}_.assign=function(f){for(var y=Array.prototype.slice.call(arguments,1);y.length;){var h=y.shift();if(h){if(u(h)!=="object")throw new TypeError(h+"must be non-object");for(var l in h)g(h,l)&&(f[l]=h[l])}}return f},_.shrinkBuf=function(f,y){return f.length===y?f:f.subarray?f.subarray(0,y):(f.length=y,f)};var b={arraySet:function(y,h,l,d,s){if(h.subarray&&y.subarray){y.set(h.subarray(l,l+d),s);return}for(var v=0;v=252?6:w>=248?5:w>=240?4:w>=224?3:w>=192?2:1;b[254]=b[254]=1,_.string2buf=function(y){var h,l,d,s,v,c=y.length,a=0;for(s=0;s>>6,h[v++]=128|l&63):l<65536?(h[v++]=224|l>>>12,h[v++]=128|l>>>6&63,h[v++]=128|l&63):(h[v++]=240|l>>>18,h[v++]=128|l>>>12&63,h[v++]=128|l>>>6&63,h[v++]=128|l&63);return h};function f(y,h){if(h<65534&&(y.subarray&&g||!y.subarray&&m))return String.fromCharCode.apply(null,u.shrinkBuf(y,h));for(var l="",d=0;d4){a[d++]=65533,l+=v-1;continue}for(s&=v===2?31:v===3?15:7;v>1&&l1){a[d++]=65533;continue}s<65536?a[d++]=s:(s-=65536,a[d++]=55296|s>>10&1023,a[d++]=56320|s&1023)}return f(a,d)},_.utf8border=function(y,h){var l;for(h=h||y.length,h>y.length&&(h=y.length),l=h-1;l>=0&&(y[l]&192)===128;)l--;return l<0||l===0?h:l+b[y[l]]>h?l:h}},{"./common":442}],444:[function(e,x,_){function u(m,g,b,w){for(var f=m&65535|0,y=m>>>16&65535|0,h=0;b!==0;){h=b>2e3?2e3:b,b-=h;do f=f+g[w++]|0,y=y+f|0;while(--h);f%=65521,y%=65521}return f|y<<16|0}x.exports=u},{}],445:[function(e,x,_){x.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,x,_){function u(){for(var b,w=[],f=0;f<256;f++){b=f;for(var y=0;y<8;y++)b=b&1?3988292384^b>>>1:b>>>1;w[f]=b}return w}var m=u();function g(b,w,f,y){var h=m,l=y+f;b^=-1;for(var d=y;d>>8^h[(b^w[d])&255];return b^-1}x.exports=g},{}],447:[function(e,x,_){var u=e("../utils/common"),m=e("./trees"),g=e("./adler32"),b=e("./crc32"),w=e("./messages"),f=0,y=1,h=3,l=4,d=5,s=0,v=1,c=-2,a=-3,r=-5,t=-1,i=1,n=2,o=3,p=4,O=0,C=2,N=8,L=9,F=15,M=8,D=29,R=256,P=R+1+D,E=30,A=19,z=2*P+1,W=15,$=3,U=258,I=U+$+1,j=32,B=42,V=69,te=73,ie=91,ce=103,be=113,_e=666,oe=1,J=2,Q=3,he=4,ke=3;function re(K,Me){return K.msg=w[Me],Me}function se(K){return(K<<1)-(K>4?9:0)}function Ce(K){for(var Me=K.length;--Me>=0;)K[Me]=0}function q(K){var Me=K.state,Le=Me.pending;Le>K.avail_out&&(Le=K.avail_out),Le!==0&&(u.arraySet(K.output,Me.pending_buf,Me.pending_out,Le,K.next_out),K.next_out+=Le,Me.pending_out+=Le,K.total_out+=Le,K.avail_out-=Le,Me.pending-=Le,Me.pending===0&&(Me.pending_out=0))}function G(K,Me){m._tr_flush_block(K,K.block_start>=0?K.block_start:-1,K.strstart-K.block_start,Me),K.block_start=K.strstart,q(K.strm)}function Z(K,Me){K.pending_buf[K.pending++]=Me}function fe(K,Me){K.pending_buf[K.pending++]=Me>>>8&255,K.pending_buf[K.pending++]=Me&255}function we(K,Me,Le,ue){var Se=K.avail_in;return Se>ue&&(Se=ue),Se===0?0:(K.avail_in-=Se,u.arraySet(Me,K.input,K.next_in,Se,Le),K.state.wrap===1?K.adler=g(K.adler,Me,Se,Le):K.state.wrap===2&&(K.adler=b(K.adler,Me,Se,Le)),K.next_in+=Se,K.total_in+=Se,Se)}function ge(K,Me){var Le=K.max_chain_length,ue=K.strstart,Se,Ie,st=K.prev_length,Ge=K.nice_match,rt=K.strstart>K.w_size-I?K.strstart-(K.w_size-I):0,_t=K.window,wt=K.w_mask,Ot=K.prev,pt=K.strstart+U,ct=_t[ue+st-1],At=_t[ue+st];K.prev_length>=K.good_match&&(Le>>=2),Ge>K.lookahead&&(Ge=K.lookahead);do if(Se=Me,!(_t[Se+st]!==At||_t[Se+st-1]!==ct||_t[Se]!==_t[ue]||_t[++Se]!==_t[ue+1])){ue+=2,Se++;do;while(_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&uest){if(K.match_start=Me,st=Ie,Ie>=Ge)break;ct=_t[ue+st-1],At=_t[ue+st]}}while((Me=Ot[Me&wt])>rt&&--Le!==0);return st<=K.lookahead?st:K.lookahead}function je(K){var Me=K.w_size,Le,ue,Se,Ie,st;do{if(Ie=K.window_size-K.lookahead-K.strstart,K.strstart>=Me+(Me-I)){u.arraySet(K.window,K.window,Me,Me,0),K.match_start-=Me,K.strstart-=Me,K.block_start-=Me,ue=K.hash_size,Le=ue;do Se=K.head[--Le],K.head[Le]=Se>=Me?Se-Me:0;while(--ue);ue=Me,Le=ue;do Se=K.prev[--Le],K.prev[Le]=Se>=Me?Se-Me:0;while(--ue);Ie+=Me}if(K.strm.avail_in===0)break;if(ue=we(K.strm,K.window,K.strstart+K.lookahead,Ie),K.lookahead+=ue,K.lookahead+K.insert>=$)for(st=K.strstart-K.insert,K.ins_h=K.window[st],K.ins_h=(K.ins_h<K.pending_buf_size-5&&(Le=K.pending_buf_size-5);;){if(K.lookahead<=1){if(je(K),K.lookahead===0&&Me===f)return oe;if(K.lookahead===0)break}K.strstart+=K.lookahead,K.lookahead=0;var ue=K.block_start+Le;if((K.strstart===0||K.strstart>=ue)&&(K.lookahead=K.strstart-ue,K.strstart=ue,G(K,!1),K.strm.avail_out===0)||K.strstart-K.block_start>=K.w_size-I&&(G(K,!1),K.strm.avail_out===0))return oe}return K.insert=0,Me===l?(G(K,!0),K.strm.avail_out===0?Q:he):(K.strstart>K.block_start&&(G(K,!1),K.strm.avail_out===0),oe)}function nt(K,Me){for(var Le,ue;;){if(K.lookahead=$&&(K.ins_h=(K.ins_h<=$)if(ue=m._tr_tally(K,K.strstart-K.match_start,K.match_length-$),K.lookahead-=K.match_length,K.match_length<=K.max_lazy_match&&K.lookahead>=$){K.match_length--;do K.strstart++,K.ins_h=(K.ins_h<=$&&(K.ins_h=(K.ins_h<4096)&&(K.match_length=$-1)),K.prev_length>=$&&K.match_length<=K.prev_length){Se=K.strstart+K.lookahead-$,ue=m._tr_tally(K,K.strstart-1-K.prev_match,K.prev_length-$),K.lookahead-=K.prev_length-1,K.prev_length-=2;do++K.strstart<=Se&&(K.ins_h=(K.ins_h<=$&&K.strstart>0&&(Se=K.strstart-1,ue=st[Se],ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se])){Ie=K.strstart+U;do;while(ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&SeK.lookahead&&(K.match_length=K.lookahead)}if(K.match_length>=$?(Le=m._tr_tally(K,1,K.match_length-$),K.lookahead-=K.match_length,K.strstart+=K.match_length,K.match_length=0):(Le=m._tr_tally(K,0,K.window[K.strstart]),K.lookahead--,K.strstart++),Le&&(G(K,!1),K.strm.avail_out===0))return oe}return K.insert=0,Me===l?(G(K,!0),K.strm.avail_out===0?Q:he):K.last_lit&&(G(K,!1),K.strm.avail_out===0)?oe:J}function Ue(K,Me){for(var Le;;){if(K.lookahead===0&&(je(K),K.lookahead===0)){if(Me===f)return oe;break}if(K.match_length=0,Le=m._tr_tally(K,0,K.window[K.strstart]),K.lookahead--,K.strstart++,Le&&(G(K,!1),K.strm.avail_out===0))return oe}return K.insert=0,Me===l?(G(K,!0),K.strm.avail_out===0?Q:he):K.last_lit&&(G(K,!1),K.strm.avail_out===0)?oe:J}function Ve(K,Me,Le,ue,Se){this.good_length=K,this.max_lazy=Me,this.nice_length=Le,this.max_chain=ue,this.func=Se}var Qe;Qe=[new Ve(0,0,0,0,Ze),new Ve(4,4,8,4,nt),new Ve(4,5,16,8,nt),new Ve(4,6,32,32,nt),new Ve(4,4,16,16,ut),new Ve(8,16,32,32,ut),new Ve(8,16,128,128,ut),new Ve(8,32,128,256,ut),new Ve(32,128,258,1024,ut),new Ve(32,258,258,4096,ut)];function tt(K){K.window_size=2*K.w_size,Ce(K.head),K.max_lazy_match=Qe[K.level].max_lazy,K.good_match=Qe[K.level].good_length,K.nice_match=Qe[K.level].nice_length,K.max_chain_length=Qe[K.level].max_chain,K.strstart=0,K.block_start=0,K.lookahead=0,K.insert=0,K.match_length=K.prev_length=$-1,K.match_available=0,K.ins_h=0}function ae(){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=N,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 u.Buf16(z*2),this.dyn_dtree=new u.Buf16((2*E+1)*2),this.bl_tree=new u.Buf16((2*A+1)*2),Ce(this.dyn_ltree),Ce(this.dyn_dtree),Ce(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new u.Buf16(W+1),this.heap=new u.Buf16(2*P+1),Ce(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new u.Buf16(2*P+1),Ce(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 Re(K){var Me;return!K||!K.state?re(K,c):(K.total_in=K.total_out=0,K.data_type=C,Me=K.state,Me.pending=0,Me.pending_out=0,Me.wrap<0&&(Me.wrap=-Me.wrap),Me.status=Me.wrap?B:be,K.adler=Me.wrap===2?0:1,Me.last_flush=f,m._tr_init(Me),s)}function me(K){var Me=Re(K);return Me===s&&tt(K.state),Me}function Ee(K,Me){return!K||!K.state||K.state.wrap!==2?c:(K.state.gzhead=Me,s)}function pe(K,Me,Le,ue,Se,Ie){if(!K)return c;var st=1;if(Me===t&&(Me=6),ue<0?(st=0,ue=-ue):ue>15&&(st=2,ue-=16),Se<1||Se>L||Le!==N||ue<8||ue>15||Me<0||Me>9||Ie<0||Ie>p)return re(K,c);ue===8&&(ue=9);var Ge=new ae;return K.state=Ge,Ge.strm=K,Ge.wrap=st,Ge.gzhead=null,Ge.w_bits=ue,Ge.w_size=1<d||Me<0)return K?re(K,c):c;if(ue=K.state,!K.output||!K.input&&K.avail_in!==0||ue.status===_e&&Me!==l)return re(K,K.avail_out===0?r:c);if(ue.strm=K,Le=ue.last_flush,ue.last_flush=Me,ue.status===B)if(ue.wrap===2)K.adler=0,Z(ue,31),Z(ue,139),Z(ue,8),ue.gzhead?(Z(ue,(ue.gzhead.text?1:0)+(ue.gzhead.hcrc?2:0)+(ue.gzhead.extra?4:0)+(ue.gzhead.name?8:0)+(ue.gzhead.comment?16:0)),Z(ue,ue.gzhead.time&255),Z(ue,ue.gzhead.time>>8&255),Z(ue,ue.gzhead.time>>16&255),Z(ue,ue.gzhead.time>>24&255),Z(ue,ue.level===9?2:ue.strategy>=n||ue.level<2?4:0),Z(ue,ue.gzhead.os&255),ue.gzhead.extra&&ue.gzhead.extra.length&&(Z(ue,ue.gzhead.extra.length&255),Z(ue,ue.gzhead.extra.length>>8&255)),ue.gzhead.hcrc&&(K.adler=b(K.adler,ue.pending_buf,ue.pending,0)),ue.gzindex=0,ue.status=V):(Z(ue,0),Z(ue,0),Z(ue,0),Z(ue,0),Z(ue,0),Z(ue,ue.level===9?2:ue.strategy>=n||ue.level<2?4:0),Z(ue,ke),ue.status=be);else{var st=N+(ue.w_bits-8<<4)<<8,Ge=-1;ue.strategy>=n||ue.level<2?Ge=0:ue.level<6?Ge=1:ue.level===6?Ge=2:Ge=3,st|=Ge<<6,ue.strstart!==0&&(st|=j),st+=31-st%31,ue.status=be,fe(ue,st),ue.strstart!==0&&(fe(ue,K.adler>>>16),fe(ue,K.adler&65535)),K.adler=1}if(ue.status===V)if(ue.gzhead.extra){for(Se=ue.pending;ue.gzindex<(ue.gzhead.extra.length&65535)&&!(ue.pending===ue.pending_buf_size&&(ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),q(K),Se=ue.pending,ue.pending===ue.pending_buf_size));)Z(ue,ue.gzhead.extra[ue.gzindex]&255),ue.gzindex++;ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),ue.gzindex===ue.gzhead.extra.length&&(ue.gzindex=0,ue.status=te)}else ue.status=te;if(ue.status===te)if(ue.gzhead.name){Se=ue.pending;do{if(ue.pending===ue.pending_buf_size&&(ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),q(K),Se=ue.pending,ue.pending===ue.pending_buf_size)){Ie=1;break}ue.gzindexSe&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),Ie===0&&(ue.gzindex=0,ue.status=ie)}else ue.status=ie;if(ue.status===ie)if(ue.gzhead.comment){Se=ue.pending;do{if(ue.pending===ue.pending_buf_size&&(ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),q(K),Se=ue.pending,ue.pending===ue.pending_buf_size)){Ie=1;break}ue.gzindexSe&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),Ie===0&&(ue.status=ce)}else ue.status=ce;if(ue.status===ce&&(ue.gzhead.hcrc?(ue.pending+2>ue.pending_buf_size&&q(K),ue.pending+2<=ue.pending_buf_size&&(Z(ue,K.adler&255),Z(ue,K.adler>>8&255),K.adler=0,ue.status=be)):ue.status=be),ue.pending!==0){if(q(K),K.avail_out===0)return ue.last_flush=-1,s}else if(K.avail_in===0&&se(Me)<=se(Le)&&Me!==l)return re(K,r);if(ue.status===_e&&K.avail_in!==0)return re(K,r);if(K.avail_in!==0||ue.lookahead!==0||Me!==f&&ue.status!==_e){var rt=ue.strategy===n?Ue(ue,Me):ue.strategy===o?ot(ue,Me):Qe[ue.level].func(ue,Me);if((rt===Q||rt===he)&&(ue.status=_e),rt===oe||rt===Q)return K.avail_out===0&&(ue.last_flush=-1),s;if(rt===J&&(Me===y?m._tr_align(ue):Me!==d&&(m._tr_stored_block(ue,0,0,!1),Me===h&&(Ce(ue.head),ue.lookahead===0&&(ue.strstart=0,ue.block_start=0,ue.insert=0))),q(K),K.avail_out===0))return ue.last_flush=-1,s}return Me!==l?s:ue.wrap<=0?v:(ue.wrap===2?(Z(ue,K.adler&255),Z(ue,K.adler>>8&255),Z(ue,K.adler>>16&255),Z(ue,K.adler>>24&255),Z(ue,K.total_in&255),Z(ue,K.total_in>>8&255),Z(ue,K.total_in>>16&255),Z(ue,K.total_in>>24&255)):(fe(ue,K.adler>>>16),fe(ue,K.adler&65535)),q(K),ue.wrap>0&&(ue.wrap=-ue.wrap),ue.pending!==0?s:v)}function Xe(K){var Me;return!K||!K.state?c:(Me=K.state.status,Me!==B&&Me!==V&&Me!==te&&Me!==ie&&Me!==ce&&Me!==be&&Me!==_e?re(K,c):(K.state=null,Me===be?re(K,a):s))}function it(K,Me){var Le=Me.length,ue,Se,Ie,st,Ge,rt,_t,wt;if(!K||!K.state||(ue=K.state,st=ue.wrap,st===2||st===1&&ue.status!==B||ue.lookahead))return c;for(st===1&&(K.adler=g(K.adler,Me,Le,0)),ue.wrap=0,Le>=ue.w_size&&(st===0&&(Ce(ue.head),ue.strstart=0,ue.block_start=0,ue.insert=0),wt=new u.Buf8(ue.w_size),u.arraySet(wt,Me,Le-ue.w_size,ue.w_size,0),Me=wt,Le=ue.w_size),Ge=K.avail_in,rt=K.next_in,_t=K.input,K.avail_in=Le,K.next_in=0,K.input=Me,je(ue);ue.lookahead>=$;){Se=ue.strstart,Ie=ue.lookahead-($-1);do ue.ins_h=(ue.ins_h<>>24,i>>>=L,n-=L,L=N>>>16&255,L===0)E[l++]=N&65535;else if(L&16){F=N&65535,L&=15,L&&(n>>=L,n-=L),n<15&&(i+=P[y++]<>>24,i>>>=L,n-=L,L=N>>>16&255,L&16){if(M=N&65535,L&=15,nv){b.msg="invalid distance too far back",f.mode=u;break e}if(i>>>=L,n-=L,L=l-d,M>L){if(L=M-L,L>a&&f.sane){b.msg="invalid distance too far back",f.mode=u;break e}if(D=0,R=t,r===0){if(D+=c-L,L2;)E[l++]=R[D++],E[l++]=R[D++],E[l++]=R[D++],F-=3;F&&(E[l++]=R[D++],F>1&&(E[l++]=R[D++]))}else{D=l-M;do E[l++]=E[D++],E[l++]=E[D++],E[l++]=E[D++],F-=3;while(F>2);F&&(E[l++]=E[D++],F>1&&(E[l++]=E[D++]))}}else if(L&64){b.msg="invalid distance code",f.mode=u;break e}else{N=p[(N&65535)+(i&(1<>3,y-=F,n-=F<<3,i&=(1<>>24&255)+(pe>>>8&65280)+((pe&65280)<<8)+((pe&255)<<24)}function we(){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 u.Buf16(320),this.work=new u.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(pe){var Pe;return!pe||!pe.state?r:(Pe=pe.state,pe.total_in=pe.total_out=Pe.total=0,pe.msg="",Pe.wrap&&(pe.adler=Pe.wrap&1),Pe.mode=p,Pe.last=0,Pe.havedict=0,Pe.dmax=32768,Pe.head=null,Pe.hold=0,Pe.bits=0,Pe.lencode=Pe.lendyn=new u.Buf32(Ce),Pe.distcode=Pe.distdyn=new u.Buf32(q),Pe.sane=1,Pe.back=-1,v)}function je(pe){var Pe;return!pe||!pe.state?r:(Pe=pe.state,Pe.wsize=0,Pe.whave=0,Pe.wnext=0,ge(pe))}function Ze(pe,Pe){var ee,Xe;return!pe||!pe.state||(Xe=pe.state,Pe<0?(ee=0,Pe=-Pe):(ee=(Pe>>4)+1,Pe<48&&(Pe&=15)),Pe&&(Pe<8||Pe>15))?r:(Xe.window!==null&&Xe.wbits!==Pe&&(Xe.window=null),Xe.wrap=ee,Xe.wbits=Pe,je(pe))}function nt(pe,Pe){var ee,Xe;return pe?(Xe=new we,pe.state=Xe,Xe.window=null,ee=Ze(pe,Pe),ee!==v&&(pe.state=null),ee):r}function ut(pe){return nt(pe,Z)}var ot=!0,Ue,Ve;function Qe(pe){if(ot){var Pe;for(Ue=new u.Buf32(512),Ve=new u.Buf32(32),Pe=0;Pe<144;)pe.lens[Pe++]=8;for(;Pe<256;)pe.lens[Pe++]=9;for(;Pe<280;)pe.lens[Pe++]=7;for(;Pe<288;)pe.lens[Pe++]=8;for(w(y,pe.lens,0,288,Ue,0,pe.work,{bits:9}),Pe=0;Pe<32;)pe.lens[Pe++]=5;w(h,pe.lens,0,32,Ve,0,pe.work,{bits:5}),ot=!1}pe.lencode=Ue,pe.lenbits=9,pe.distcode=Ve,pe.distbits=5}function tt(pe,Pe,ee,Xe){var it,K=pe.state;return K.window===null&&(K.wsize=1<=K.wsize?(u.arraySet(K.window,Pe,ee-K.wsize,K.wsize,0),K.wnext=0,K.whave=K.wsize):(it=K.wsize-K.wnext,it>Xe&&(it=Xe),u.arraySet(K.window,Pe,ee-Xe,it,K.wnext),Xe-=it,Xe?(u.arraySet(K.window,Pe,ee-Xe,Xe,0),K.wnext=Xe,K.whave=K.wsize):(K.wnext+=it,K.wnext===K.wsize&&(K.wnext=0),K.whave>>8&255,ee.check=g(ee.check,Ft,2,0),Se=0,Ie=0,ee.mode=O;break}if(ee.flags=0,ee.head&&(ee.head.done=!1),!(ee.wrap&1)||(((Se&255)<<8)+(Se>>8))%31){pe.msg="incorrect header check",ee.mode=ke;break}if((Se&15)!==o){pe.msg="unknown compression method",ee.mode=ke;break}if(Se>>>=4,Ie-=4,Ct=(Se&15)+8,ee.wbits===0)ee.wbits=Ct;else if(Ct>ee.wbits){pe.msg="invalid window size",ee.mode=ke;break}ee.dmax=1<>8&1),ee.flags&512&&(Ft[0]=Se&255,Ft[1]=Se>>>8&255,ee.check=g(ee.check,Ft,2,0)),Se=0,Ie=0,ee.mode=C;case C:for(;Ie<32;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>8&255,Ft[2]=Se>>>16&255,Ft[3]=Se>>>24&255,ee.check=g(ee.check,Ft,4,0)),Se=0,Ie=0,ee.mode=N;case N:for(;Ie<16;){if(Le===0)break e;Le--,Se+=Xe[K++]<>8),ee.flags&512&&(Ft[0]=Se&255,Ft[1]=Se>>>8&255,ee.check=g(ee.check,Ft,2,0)),Se=0,Ie=0,ee.mode=L;case L:if(ee.flags&1024){for(;Ie<16;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>8&255,ee.check=g(ee.check,Ft,2,0)),Se=0,Ie=0}else ee.head&&(ee.head.extra=null);ee.mode=F;case F:if(ee.flags&1024&&(rt=ee.length,rt>Le&&(rt=Le),rt&&(ee.head&&(Ct=ee.head.extra_len-ee.length,ee.head.extra||(ee.head.extra=new Array(ee.head.extra_len)),u.arraySet(ee.head.extra,Xe,K,rt,Ct)),ee.flags&512&&(ee.check=g(ee.check,Xe,rt,K)),Le-=rt,K+=rt,ee.length-=rt),ee.length))break e;ee.length=0,ee.mode=M;case M:if(ee.flags&2048){if(Le===0)break e;rt=0;do Ct=Xe[K+rt++],ee.head&&Ct&&ee.length<65536&&(ee.head.name+=String.fromCharCode(Ct));while(Ct&&rt>9&1,ee.head.done=!0),pe.adler=ee.check=0,ee.mode=A;break;case P:for(;Ie<32;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=Ie&7,Ie-=Ie&7,ee.mode=J;break}for(;Ie<3;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=1,Ie-=1,Se&3){case 0:ee.mode=W;break;case 1:if(Qe(ee),ee.mode=V,Pe===s){Se>>>=2,Ie-=2;break e}break;case 2:ee.mode=I;break;case 3:pe.msg="invalid block type",ee.mode=ke}Se>>>=2,Ie-=2;break;case W:for(Se>>>=Ie&7,Ie-=Ie&7;Ie<32;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>16^65535)){pe.msg="invalid stored block lengths",ee.mode=ke;break}if(ee.length=Se&65535,Se=0,Ie=0,ee.mode=$,Pe===s)break e;case $:ee.mode=U;case U:if(rt=ee.length,rt){if(rt>Le&&(rt=Le),rt>ue&&(rt=ue),rt===0)break e;u.arraySet(it,Xe,K,rt,Me),Le-=rt,K+=rt,ue-=rt,Me+=rt,ee.length-=rt;break}ee.mode=A;break;case I:for(;Ie<14;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=5,Ie-=5,ee.ndist=(Se&31)+1,Se>>>=5,Ie-=5,ee.ncode=(Se&15)+4,Se>>>=4,Ie-=4,ee.nlen>286||ee.ndist>30){pe.msg="too many length or distance symbols",ee.mode=ke;break}ee.have=0,ee.mode=j;case j:for(;ee.have>>=3,Ie-=3}for(;ee.have<19;)ee.lens[Dr[ee.have++]]=0;if(ee.lencode=ee.lendyn,ee.lenbits=7,Lt={bits:ee.lenbits},xt=w(f,ee.lens,0,19,ee.lencode,0,ee.work,Lt),ee.lenbits=Lt.bits,xt){pe.msg="invalid code lengths set",ee.mode=ke;break}ee.have=0,ee.mode=B;case B:for(;ee.have>>24,ct=Ot>>>16&255,At=Ot&65535,!(pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=pt,Ie-=pt,ee.lens[ee.have++]=At;else{if(At===16){for(Et=pt+2;Ie>>=pt,Ie-=pt,ee.have===0){pe.msg="invalid bit length repeat",ee.mode=ke;break}Ct=ee.lens[ee.have-1],rt=3+(Se&3),Se>>>=2,Ie-=2}else if(At===17){for(Et=pt+3;Ie>>=pt,Ie-=pt,Ct=0,rt=3+(Se&7),Se>>>=3,Ie-=3}else{for(Et=pt+7;Ie>>=pt,Ie-=pt,Ct=0,rt=11+(Se&127),Se>>>=7,Ie-=7}if(ee.have+rt>ee.nlen+ee.ndist){pe.msg="invalid bit length repeat",ee.mode=ke;break}for(;rt--;)ee.lens[ee.have++]=Ct}}if(ee.mode===ke)break;if(ee.lens[256]===0){pe.msg="invalid code -- missing end-of-block",ee.mode=ke;break}if(ee.lenbits=9,Lt={bits:ee.lenbits},xt=w(y,ee.lens,0,ee.nlen,ee.lencode,0,ee.work,Lt),ee.lenbits=Lt.bits,xt){pe.msg="invalid literal/lengths set",ee.mode=ke;break}if(ee.distbits=6,ee.distcode=ee.distdyn,Lt={bits:ee.distbits},xt=w(h,ee.lens,ee.nlen,ee.ndist,ee.distcode,0,ee.work,Lt),ee.distbits=Lt.bits,xt){pe.msg="invalid distances set",ee.mode=ke;break}if(ee.mode=V,Pe===s)break e;case V:ee.mode=te;case te:if(Le>=6&&ue>=258){pe.next_out=Me,pe.avail_out=ue,pe.next_in=K,pe.avail_in=Le,ee.hold=Se,ee.bits=Ie,b(pe,Ge),Me=pe.next_out,it=pe.output,ue=pe.avail_out,K=pe.next_in,Xe=pe.input,Le=pe.avail_in,Se=ee.hold,Ie=ee.bits,ee.mode===A&&(ee.back=-1);break}for(ee.back=0;Ot=ee.lencode[Se&(1<>>24,ct=Ot>>>16&255,At=Ot&65535,!(pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>Pt)],pt=Ot>>>24,ct=Ot>>>16&255,At=Ot&65535,!(Pt+pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=Pt,Ie-=Pt,ee.back+=Pt}if(Se>>>=pt,Ie-=pt,ee.back+=pt,ee.length=At,ct===0){ee.mode=oe;break}if(ct&32){ee.back=-1,ee.mode=A;break}if(ct&64){pe.msg="invalid literal/length code",ee.mode=ke;break}ee.extra=ct&15,ee.mode=ie;case ie:if(ee.extra){for(Et=ee.extra;Ie>>=ee.extra,Ie-=ee.extra,ee.back+=ee.extra}ee.was=ee.length,ee.mode=ce;case ce:for(;Ot=ee.distcode[Se&(1<>>24,ct=Ot>>>16&255,At=Ot&65535,!(pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>Pt)],pt=Ot>>>24,ct=Ot>>>16&255,At=Ot&65535,!(Pt+pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=Pt,Ie-=Pt,ee.back+=Pt}if(Se>>>=pt,Ie-=pt,ee.back+=pt,ct&64){pe.msg="invalid distance code",ee.mode=ke;break}ee.offset=At,ee.extra=ct&15,ee.mode=be;case be:if(ee.extra){for(Et=ee.extra;Ie>>=ee.extra,Ie-=ee.extra,ee.back+=ee.extra}if(ee.offset>ee.dmax){pe.msg="invalid distance too far back",ee.mode=ke;break}ee.mode=_e;case _e:if(ue===0)break e;if(rt=Ge-ue,ee.offset>rt){if(rt=ee.offset-rt,rt>ee.whave&&ee.sane){pe.msg="invalid distance too far back",ee.mode=ke;break}rt>ee.wnext?(rt-=ee.wnext,_t=ee.wsize-rt):_t=ee.wnext-rt,rt>ee.length&&(rt=ee.length),wt=ee.window}else wt=it,_t=Me-ee.offset,rt=ee.length;rt>ue&&(rt=ue),ue-=rt,ee.length-=rt;do it[Me++]=wt[_t++];while(--rt);ee.length===0&&(ee.mode=te);break;case oe:if(ue===0)break e;it[Me++]=ee.length,ue--,ee.mode=te;break;case J:if(ee.wrap){for(;Ie<32;){if(Le===0)break e;Le--,Se|=Xe[K++]<=1&&te[F]===0;F--);if(M>F&&(M=F),F===0)return i[n++]=1<<24|64<<16|0,i[n++]=1<<24|64<<16|0,p.bits=1,0;for(L=1;L0&&(c===w||F!==1))return-1;for(ie[1]=0,C=1;Cg||c===y&&E>b)return 1;for(;;){_e=C-R,o[N]V?(oe=ce[be+o[N]],J=j[B+o[N]]):(oe=32+64,J=0),z=1<>R)+W]=_e<<24|oe<<16|J|0;while(W!==0);for(z=1<>=1;if(z!==0?(A&=z-1,A+=z):A=0,N++,--te[C]===0){if(C===F)break;C=a[r+o[N]]}if(C>M&&(A&U)!==$){for(R===0&&(R=M),I+=L,D=C-R,P=1<g||c===y&&E>b)return 1;$=A&U,i[$]=M<<24|D<<16|I-n|0}}return A!==0&&(i[I+A]=C-R<<24|64<<16|0),p.bits=M,0}},{"../utils/common":442}],452:[function(e,x,_){x.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,x,_){var u=e("../utils/common"),m=4,g=0,b=1,w=2;function f(ae){for(var Re=ae.length;--Re>=0;)ae[Re]=0}var y=0,h=1,l=2,d=3,s=258,v=29,c=256,a=c+1+v,r=30,t=19,i=2*a+1,n=15,o=16,p=7,O=256,C=16,N=17,L=18,F=[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],D=[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,E=new Array((a+2)*2);f(E);var A=new Array(r*2);f(A);var z=new Array(P);f(z);var W=new Array(s-d+1);f(W);var $=new Array(v);f($);var U=new Array(r);f(U);function I(ae,Re,me,Ee,pe){this.static_tree=ae,this.extra_bits=Re,this.extra_base=me,this.elems=Ee,this.max_length=pe,this.has_stree=ae&&ae.length}var j,B,V;function te(ae,Re){this.dyn_tree=ae,this.max_code=0,this.stat_desc=Re}function ie(ae){return ae<256?z[ae]:z[256+(ae>>>7)]}function ce(ae,Re){ae.pending_buf[ae.pending++]=Re&255,ae.pending_buf[ae.pending++]=Re>>>8&255}function be(ae,Re,me){ae.bi_valid>o-me?(ae.bi_buf|=Re<>o-ae.bi_valid,ae.bi_valid+=me-o):(ae.bi_buf|=Re<>>=1,me<<=1;while(--Re>0);return me>>>1}function J(ae){ae.bi_valid===16?(ce(ae,ae.bi_buf),ae.bi_buf=0,ae.bi_valid=0):ae.bi_valid>=8&&(ae.pending_buf[ae.pending++]=ae.bi_buf&255,ae.bi_buf>>=8,ae.bi_valid-=8)}function Q(ae,Re){var me=Re.dyn_tree,Ee=Re.max_code,pe=Re.stat_desc.static_tree,Pe=Re.stat_desc.has_stree,ee=Re.stat_desc.extra_bits,Xe=Re.stat_desc.extra_base,it=Re.stat_desc.max_length,K,Me,Le,ue,Se,Ie,st=0;for(ue=0;ue<=n;ue++)ae.bl_count[ue]=0;for(me[ae.heap[ae.heap_max]*2+1]=0,K=ae.heap_max+1;Kit&&(ue=it,st++),me[Me*2+1]=ue,!(Me>Ee)&&(ae.bl_count[ue]++,Se=0,Me>=Xe&&(Se=ee[Me-Xe]),Ie=me[Me*2],ae.opt_len+=Ie*(ue+Se),Pe&&(ae.static_len+=Ie*(pe[Me*2+1]+Se)));if(st!==0){do{for(ue=it-1;ae.bl_count[ue]===0;)ue--;ae.bl_count[ue]--,ae.bl_count[ue+1]+=2,ae.bl_count[it]--,st-=2}while(st>0);for(ue=it;ue!==0;ue--)for(Me=ae.bl_count[ue];Me!==0;)Le=ae.heap[--K],!(Le>Ee)&&(me[Le*2+1]!==ue&&(ae.opt_len+=(ue-me[Le*2+1])*me[Le*2],me[Le*2+1]=ue),Me--)}}function he(ae,Re,me){var Ee=new Array(n+1),pe=0,Pe,ee;for(Pe=1;Pe<=n;Pe++)Ee[Pe]=pe=pe+me[Pe-1]<<1;for(ee=0;ee<=Re;ee++){var Xe=ae[ee*2+1];Xe!==0&&(ae[ee*2]=oe(Ee[Xe]++,Xe))}}function ke(){var ae,Re,me,Ee,pe,Pe=new Array(n+1);for(me=0,Ee=0;Ee>=7;Ee8?ce(ae,ae.bi_buf):ae.bi_valid>0&&(ae.pending_buf[ae.pending++]=ae.bi_buf),ae.bi_buf=0,ae.bi_valid=0}function Ce(ae,Re,me,Ee){se(ae),Ee&&(ce(ae,me),ce(ae,~me)),u.arraySet(ae.pending_buf,ae.window,Re,me,ae.pending),ae.pending+=me}function q(ae,Re,me,Ee){var pe=Re*2,Pe=me*2;return ae[pe]>1;ee>=1;ee--)G(ae,me,ee);K=Pe;do ee=ae.heap[1],ae.heap[1]=ae.heap[ae.heap_len--],G(ae,me,1),Xe=ae.heap[1],ae.heap[--ae.heap_max]=ee,ae.heap[--ae.heap_max]=Xe,me[K*2]=me[ee*2]+me[Xe*2],ae.depth[K]=(ae.depth[ee]>=ae.depth[Xe]?ae.depth[ee]:ae.depth[Xe])+1,me[ee*2+1]=me[Xe*2+1]=K,ae.heap[1]=K++,G(ae,me,1);while(ae.heap_len>=2);ae.heap[--ae.heap_max]=ae.heap[1],Q(ae,Re),he(me,it,ae.bl_count)}function we(ae,Re,me){var Ee,pe=-1,Pe,ee=Re[0*2+1],Xe=0,it=7,K=4;for(ee===0&&(it=138,K=3),Re[(me+1)*2+1]=65535,Ee=0;Ee<=me;Ee++)Pe=ee,ee=Re[(Ee+1)*2+1],!(++Xe=3&&ae.bl_tree[R[Re]*2+1]===0;Re--);return ae.opt_len+=3*(Re+1)+5+5+4,Re}function Ze(ae,Re,me,Ee){var pe;for(be(ae,Re-257,5),be(ae,me-1,5),be(ae,Ee-4,4),pe=0;pe>>=1)if(Re&1&&ae.dyn_ltree[me*2]!==0)return g;if(ae.dyn_ltree[9*2]!==0||ae.dyn_ltree[10*2]!==0||ae.dyn_ltree[13*2]!==0)return b;for(me=32;me0?(ae.strm.data_type===w&&(ae.strm.data_type=nt(ae)),fe(ae,ae.l_desc),fe(ae,ae.d_desc),ee=je(ae),pe=ae.opt_len+3+7>>>3,Pe=ae.static_len+3+7>>>3,Pe<=pe&&(pe=Pe)):pe=Pe=me+5,me+4<=pe&&Re!==-1?Ue(ae,Re,me,Ee):ae.strategy===m||Pe===pe?(be(ae,(h<<1)+(Ee?1:0),3),Z(ae,E,A)):(be(ae,(l<<1)+(Ee?1:0),3),Ze(ae,ae.l_desc.max_code+1,ae.d_desc.max_code+1,ee+1),Z(ae,ae.dyn_ltree,ae.dyn_dtree)),re(ae),Ee&&se(ae)}function tt(ae,Re,me){return ae.pending_buf[ae.d_buf+ae.last_lit*2]=Re>>>8&255,ae.pending_buf[ae.d_buf+ae.last_lit*2+1]=Re&255,ae.pending_buf[ae.l_buf+ae.last_lit]=me&255,ae.last_lit++,Re===0?ae.dyn_ltree[me*2]++:(ae.matches++,Re--,ae.dyn_ltree[(W[me]+c+1)*2]++,ae.dyn_dtree[ie(Re)*2]++),ae.last_lit===ae.lit_bufsize-1}_._tr_init=ot,_._tr_stored_block=Ue,_._tr_flush_block=Qe,_._tr_tally=tt,_._tr_align=Ve},{"../utils/common":442}],454:[function(e,x,_){function u(){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}x.exports=u},{}],455:[function(e,x,_){x.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,x,_){var u=e("asn1.js");_.certificate=e("./certificate");var m=u.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())});_.RSAPrivateKey=m;var g=u.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});_.RSAPublicKey=g;var b=u.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(w),this.key("subjectPublicKey").bitstr())});_.PublicKey=b;var w=u.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())}),f=u.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(w),this.key("subjectPrivateKey").octstr())});_.PrivateKey=f;var y=u.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())});_.EncryptedPrivateKey=y;var h=u.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())});_.DSAPrivateKey=h,_.DSAparam=u.define("DSAparam",function(){this.int()});var l=u.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())});_.ECPrivateKey=l;var d=u.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});_.signature=u.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"./certificate":457,"asn1.js":167}],457:[function(e,x,_){var u=e("asn1.js"),m=u.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),g=u.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),b=u.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),w=u.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(b),this.key("subjectPublicKey").bitstr())}),f=u.define("RelativeDistinguishedName",function(){this.setof(g)}),y=u.define("RDNSequence",function(){this.seqof(f)}),h=u.define("Name",function(){this.choice({rdnSequence:this.use(y)})}),l=u.define("Validity",function(){this.seq().obj(this.key("notBefore").use(m),this.key("notAfter").use(m))}),d=u.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),s=u.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(b),this.key("issuer").use(h),this.key("validity").use(l),this.key("subject").use(h),this.key("subjectPublicKeyInfo").use(w),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(d).optional())}),v=u.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(s),this.key("signatureAlgorithm").use(b),this.key("signatureValue").bitstr())});x.exports=v},{"asn1.js":167}],458:[function(e,x,_){var u=/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,m=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,g=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,b=e("evp_bytestokey"),w=e("browserify-aes"),f=e("safe-buffer").Buffer;x.exports=function(y,h){var l=y.toString(),d=l.match(u),s;if(d){var c="aes"+d[1],a=f.from(d[2],"hex"),r=f.from(d[3].replace(/[\r\n]/g,""),"base64"),t=b(h,a.slice(0,8),parseInt(d[1],10)).key,i=[],n=w.createDecipheriv(c,t,a);i.push(n.update(r)),i.push(n.final()),s=f.concat(i)}else{var v=l.match(g);s=f.from(v[2].replace(/[\r\n]/g,""),"base64")}var o=l.match(m)[1];return{tag:o,data:s}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(e,x,_){function u(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(v){return typeof v}:u=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},u(d)}var m=e("./asn1"),g=e("./aesid.json"),b=e("./fixProc"),w=e("browserify-aes"),f=e("pbkdf2"),y=e("safe-buffer").Buffer;x.exports=h;function h(d){var s;u(d)==="object"&&!y.isBuffer(d)&&(s=d.passphrase,d=d.key),typeof d=="string"&&(d=y.from(d));var v=b(d,s),c=v.tag,a=v.data,r,t;switch(c){case"CERTIFICATE":t=m.certificate.decode(a,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(t||(t=m.PublicKey.decode(a,"der")),r=t.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return m.RSAPublicKey.decode(t.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return t.subjectPrivateKey=t.subjectPublicKey,{type:"ec",data:t};case"1.2.840.10040.4.1":return t.algorithm.params.pub_key=m.DSAparam.decode(t.subjectPublicKey.data,"der"),{type:"dsa",data:t.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":a=m.EncryptedPrivateKey.decode(a,"der"),a=l(a,s);case"PRIVATE KEY":switch(t=m.PrivateKey.decode(a,"der"),r=t.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return m.RSAPrivateKey.decode(t.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:t.algorithm.curve,privateKey:m.ECPrivateKey.decode(t.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return t.algorithm.params.priv_key=m.DSAparam.decode(t.subjectPrivateKey,"der"),{type:"dsa",params:t.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return m.RSAPublicKey.decode(a,"der");case"RSA PRIVATE KEY":return m.RSAPrivateKey.decode(a,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:m.DSAPrivateKey.decode(a,"der")};case"EC PRIVATE KEY":return a=m.ECPrivateKey.decode(a,"der"),{curve:a.parameters.value,privateKey:a.privateKey};default:throw new Error("unknown key type "+c)}}h.signature=m.signature;function l(d,s){var v=d.algorithm.decrypt.kde.kdeparams.salt,c=parseInt(d.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=g[d.algorithm.decrypt.cipher.algo.join(".")],r=d.algorithm.decrypt.cipher.iv,t=d.subjectPrivateKey,i=parseInt(a.split("-")[1],10)/8,n=f.pbkdf2Sync(s,v,c,i,"sha1"),o=w.createDecipheriv(a,n,r),p=[];return p.push(o.update(t)),p.push(o.final()),y.concat(p)}},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(e,x,_){_.pbkdf2=e("./lib/async"),_.pbkdf2Sync=e("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(e,x,_){(function(u,m){var g=e("safe-buffer").Buffer,b=e("./precondition"),w=e("./default-encoding"),f=e("./sync"),y=e("./to-buffer"),h,l=m.crypto&&m.crypto.subtle,d={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"},s=[];function v(r){if(m.process&&!m.process.browser||!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(s[r]!==void 0)return s[r];h=h||g.alloc(8);var t=c(h,h,10,128,r).then(function(){return!0}).catch(function(){return!1});return s[r]=t,t}function c(r,t,i,n,o){return l.importKey("raw",r,{name:"PBKDF2"},!1,["deriveBits"]).then(function(p){return l.deriveBits({name:"PBKDF2",salt:t,iterations:i,hash:{name:o}},p,n<<3)}).then(function(p){return g.from(p)})}function a(r,t){r.then(function(i){u.nextTick(function(){t(null,i)})},function(i){u.nextTick(function(){t(i)})})}x.exports=function(r,t,i,n,o,p){typeof o=="function"&&(p=o,o=void 0),o=o||"sha1";var O=d[o.toLowerCase()];if(!O||typeof m.Promise!="function")return u.nextTick(function(){var C;try{C=f(r,t,i,n,o)}catch(N){return p(N)}p(null,C)});if(b(i,n),r=y(r,w,"Password"),t=y(t,w,"Salt"),typeof p!="function")throw new Error("No callback provided to pbkdf2");a(v(O).then(function(C){return C?c(r,t,i,n,O):f(r,t,i,n,o)}),p)}}).call(this,e("_process"),typeof Vt<"u"?Vt: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,x,_){(function(u){var m;if(u.browser)m="utf-8";else if(u.version){var g=parseInt(u.version.split(".")[0].slice(1),10);m=g>=6?"utf-8":"binary"}else m="utf-8";x.exports=m}).call(this,e("_process"))},{_process:467}],463:[function(e,x,_){var u=Math.pow(2,30)-1;x.exports=function(m,g){if(typeof m!="number")throw new TypeError("Iterations not a number");if(m<0)throw new TypeError("Bad iterations");if(typeof g!="number")throw new TypeError("Key length not a number");if(g<0||g>u||g!==g)throw new TypeError("Bad key length")}},{}],464:[function(e,x,_){var u=e("create-hash/md5"),m=e("ripemd160"),g=e("sha.js"),b=e("safe-buffer").Buffer,w=e("./precondition"),f=e("./default-encoding"),y=e("./to-buffer"),h=b.alloc(128),l={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function d(c,a,r){var t=s(c),i=c==="sha512"||c==="sha384"?128:64;a.length>i?a=t(a):a.length"u"||!u.version||u.version.indexOf("v0.")===0||u.version.indexOf("v1.")===0&&u.version.indexOf("v1.8.")!==0?x.exports={nextTick:m}:x.exports=u;function m(g,b,w,f){if(typeof g!="function")throw new TypeError('"callback" argument must be a function');var y=arguments.length,h,l;switch(y){case 0:case 1:return u.nextTick(g);case 2:return u.nextTick(function(){g.call(null,b)});case 3:return u.nextTick(function(){g.call(null,b,w)});case 4:return u.nextTick(function(){g.call(null,b,w,f)});default:for(h=new Array(y-1),l=0;l1)for(var n=1;nn||new b(a).cmp(i.modulus)>=0)throw new Error("decryption error");var o;r?o=y(new b(a),i):o=w(a,i);var p=h.alloc(n-o.length);if(o=h.concat([p,o],n),t===4)return l(i,o);if(t===1)return d(i,o,r);if(t===3)return o;throw new Error("unknown padding")};function l(v,c){var a=v.modulus.byteLength(),r=f("sha1").update(h.alloc(0)).digest(),t=r.length;if(c[0]!==0)throw new Error("decryption error");var i=c.slice(1,t+1),n=c.slice(t+1),o=g(i,m(n,t)),p=g(n,m(o,a-t-1));if(s(r,p.slice(0,t)))throw new Error("decryption error");for(var O=t;p[O]===0;)O++;if(p[O++]!==1)throw new Error("decryption error");return p.slice(O)}function d(v,c,a){for(var r=c.slice(0,2),t=2,i=0;c[t++]!==0;)if(t>=c.length){i++;break}var n=c.slice(2,t-1);if((r.toString("hex")!=="0002"&&!a||r.toString("hex")!=="0001"&&a)&&i++,n.length<8&&i++,i)throw new Error("decryption error");return c.slice(t)}function s(v,c){v=h.from(v),c=h.from(c);var a=0,r=v.length;v.length!==c.length&&(a++,r=Math.min(v.length,c.length));for(var t=-1;++t=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return t?h(o,n):y(o,n)};function d(c,a){var r=c.modulus.byteLength(),t=a.length,i=g("sha1").update(l.alloc(0)).digest(),n=i.length,o=2*n;if(t>r-o-2)throw new Error("message too long");var p=l.alloc(r-t-o-2),O=r-n-1,C=m(n),N=w(l.concat([i,p,l.alloc(1,1),a],O),b(C,O)),L=w(C,b(N,n));return new f(l.concat([l.alloc(1),L,N],r))}function s(c,a,r){var t=a.length,i=c.modulus.byteLength();if(t>i-11)throw new Error("message too long");var n;return r?n=l.alloc(i-t-3,255):n=v(i-t-3),new f(l.concat([l.from([0,r?1:2]),n,l.alloc(1),a],i))}function v(c){for(var a=l.allocUnsafe(c),r=0,t=m(c*2),i=0,n;rb)throw new RangeError("requested too many random bytes");var s=f.allocUnsafe(l);if(l>0)if(l>g)for(var v=0;vl||r<0)throw new TypeError("offset must be a uint32");if(r>y||r>t)throw new RangeError("offset out of range")}function s(r,t,i){if(typeof r!="number"||r!==r)throw new TypeError("size must be a number");if(r>l||r<0)throw new TypeError("size must be a uint32");if(r+t>i||r>y)throw new RangeError("buffer too small")}h&&h.getRandomValues||!u.browser?(_.randomFill=v,_.randomFillSync=a):(_.randomFill=g,_.randomFillSync=g);function v(r,t,i,n){if(!f.isBuffer(r)&&!(r instanceof m.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof t=="function")n=t,t=0,i=r.length;else if(typeof i=="function")n=i,i=r.length-t;else if(typeof n!="function")throw new TypeError('"cb" argument must be a function');return d(t,r.length),s(i,t,r.length),c(r,t,i,n)}function c(r,t,i,n){if(u.browser){var o=r.buffer,p=new Uint8Array(o,t,i);if(h.getRandomValues(p),n){u.nextTick(function(){n(null,r)});return}return r}if(n){w(i,function(C,N){if(C)return n(C);N.copy(r,t),n(null,r)});return}var O=w(i);return O.copy(r,t),r}function a(r,t,i){if(typeof t>"u"&&(t=0),!f.isBuffer(r)&&!(r instanceof m.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return d(t,r.length),i===void 0&&(i=r.length-t),s(i,t,r.length),c(r,t,i)}}).call(this,e("_process"),typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{_process:467,randombytes:475,"safe-buffer":494}],477:[function(e,x,_){function u(l){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(s){return typeof s}:u=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},u(l)}function m(l,d){l.prototype=Object.create(d.prototype),l.prototype.constructor=l,l.__proto__=d}var g={};function b(l,d,s){s||(s=Error);function v(a,r,t){return typeof d=="string"?d:d(a,r,t)}var c=function(a){m(r,a);function r(t,i,n){return a.call(this,v(t,i,n))||this}return r}(s);c.prototype.name=s.name,c.prototype.code=l,g[l]=c}function w(l,d){if(Array.isArray(l)){var s=l.length;return l=l.map(function(v){return String(v)}),s>2?"one of ".concat(d," ").concat(l.slice(0,s-1).join(", "),", or ")+l[s-1]:s===2?"one of ".concat(d," ").concat(l[0]," or ").concat(l[1]):"of ".concat(d," ").concat(l[0])}else return"of ".concat(d," ").concat(String(l))}function f(l,d,s){return l.substr(!s||s<0?0:+s,d.length)===d}function y(l,d,s){return(s===void 0||s>l.length)&&(s=l.length),l.substring(s-d.length,s)===d}function h(l,d,s){return typeof s!="number"&&(s=0),s+d.length>l.length?!1:l.indexOf(d,s)!==-1}b("ERR_INVALID_OPT_VALUE",function(l,d){return'The value "'+d+'" is invalid for option "'+l+'"'},TypeError),b("ERR_INVALID_ARG_TYPE",function(l,d,s){var v;typeof d=="string"&&f(d,"not ")?(v="must not be",d=d.replace(/^not /,"")):v="must be";var c;if(y(l," argument"))c="The ".concat(l," ").concat(v," ").concat(w(d,"type"));else{var a=h(l,".")?"property":"argument";c='The "'.concat(l,'" ').concat(a," ").concat(v," ").concat(w(d,"type"))}return c+=". Received type ".concat(u(s)),c},TypeError),b("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),b("ERR_METHOD_NOT_IMPLEMENTED",function(l){return"The "+l+" method is not implemented"}),b("ERR_STREAM_PREMATURE_CLOSE","Premature close"),b("ERR_STREAM_DESTROYED",function(l){return"Cannot call "+l+" after a stream was destroyed"}),b("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),b("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),b("ERR_STREAM_WRITE_AFTER_END","write after end"),b("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),b("ERR_UNKNOWN_ENCODING",function(l){return"Unknown encoding: "+l},TypeError),b("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),x.exports.codes=g},{}],478:[function(e,x,_){(function(u){var m=Object.keys||function(s){var v=[];for(var c in s)v.push(c);return v};x.exports=h;var g=e("./_stream_readable"),b=e("./_stream_writable");e("inherits")(h,g);for(var w=m(b.prototype),f=0;f0)if(typeof se!="string"&&!Z.objectMode&&Object.getPrototypeOf(se)!==f.prototype&&(se=h(se)),q)Z.endEmitted?L(re,new p):E(re,Z,se,!0);else if(Z.ended)L(re,new n);else{if(Z.destroyed)return!1;Z.reading=!1,Z.decoder&&!Ce?(se=Z.decoder.write(se),Z.objectMode||se.length!==0?E(re,Z,se,!1):B(re,Z)):E(re,Z,se,!1)}else q||(Z.reading=!1,B(re,Z))}return!Z.ended&&(Z.length=z?re=z:(re--,re|=re>>>1,re|=re>>>2,re|=re>>>4,re|=re>>>8,re|=re>>>16,re++),re}function $(re,se){return re<=0||se.length===0&&se.ended?0:se.objectMode?1:re!==re?se.flowing&&se.length?se.buffer.head.data.length:se.length:(re>se.highWaterMark&&(se.highWaterMark=W(re)),re<=se.length?re:se.ended?se.length:(se.needReadable=!0,0))}R.prototype.read=function(re){s("read",re),re=parseInt(re,10);var se=this._readableState,Ce=re;if(re!==0&&(se.emittedReadable=!1),re===0&&se.needReadable&&((se.highWaterMark!==0?se.length>=se.highWaterMark:se.length>0)||se.ended))return s("read: emitReadable",se.length,se.ended),se.length===0&&se.ended?Q(this):I(this),null;if(re=$(re,se),re===0&&se.ended)return se.length===0&&Q(this),null;var q=se.needReadable;s("need readable",q),(se.length===0||se.length-re0?G=J(re,se):G=null,G===null?(se.needReadable=se.length<=se.highWaterMark,re=0):(se.length-=re,se.awaitDrain=0),se.length===0&&(se.ended||(se.needReadable=!0),Ce!==re&&se.ended&&Q(this)),G!==null&&this.emit("data",G),G};function U(re,se){if(s("onEofChunk"),!se.ended){if(se.decoder){var Ce=se.decoder.end();Ce&&Ce.length&&(se.buffer.push(Ce),se.length+=se.objectMode?1:Ce.length)}se.ended=!0,se.sync?I(re):(se.needReadable=!1,se.emittedReadable||(se.emittedReadable=!0,j(re)))}}function I(re){var se=re._readableState;s("emitReadable",se.needReadable,se.emittedReadable),se.needReadable=!1,se.emittedReadable||(s("emitReadable",se.flowing),se.emittedReadable=!0,u.nextTick(j,re))}function j(re){var se=re._readableState;s("emitReadable_",se.destroyed,se.length,se.ended),!se.destroyed&&(se.length||se.ended)&&(re.emit("readable"),se.emittedReadable=!1),se.needReadable=!se.flowing&&!se.ended&&se.length<=se.highWaterMark,oe(re)}function B(re,se){se.readingMore||(se.readingMore=!0,u.nextTick(V,re,se))}function V(re,se){for(;!se.reading&&!se.ended&&(se.length1&&ke(q.pipes,re)!==-1)&&!je&&(s("false write response, pause",q.awaitDrain),q.awaitDrain++),Ce.pause())}function ut(Qe){s("onerror",Qe),Ve(),re.removeListener("error",ut),b(re,"error")===0&&L(re,Qe)}M(re,"error",ut);function ot(){re.removeListener("finish",Ue),Ve()}re.once("close",ot);function Ue(){s("onfinish"),re.removeListener("close",ot),Ve()}re.once("finish",Ue);function Ve(){s("unpipe"),Ce.unpipe(re)}return re.emit("pipe",Ce),q.flowing||(s("pipe resume"),Ce.resume()),re};function te(re){return function(){var Ce=re._readableState;s("pipeOnDrain",Ce.awaitDrain),Ce.awaitDrain&&Ce.awaitDrain--,Ce.awaitDrain===0&&b(re,"data")&&(Ce.flowing=!0,oe(re))}}R.prototype.unpipe=function(re){var se=this._readableState,Ce={hasUnpiped:!1};if(se.pipesCount===0)return this;if(se.pipesCount===1)return re&&re!==se.pipes?this:(re||(re=se.pipes),se.pipes=null,se.pipesCount=0,se.flowing=!1,re&&re.emit("unpipe",this,Ce),this);if(!re){var q=se.pipes,G=se.pipesCount;se.pipes=null,se.pipesCount=0,se.flowing=!1;for(var Z=0;Z0,q.flowing!==!1&&this.resume()):re==="readable"&&!q.endEmitted&&!q.readableListening&&(q.readableListening=q.needReadable=!0,q.flowing=!1,q.emittedReadable=!1,s("on readable",q.length,q.reading),q.length?I(this):q.reading||u.nextTick(ce,this)),Ce},R.prototype.addListener=R.prototype.on,R.prototype.removeListener=function(re,se){var Ce=w.prototype.removeListener.call(this,re,se);return re==="readable"&&u.nextTick(ie,this),Ce},R.prototype.removeAllListeners=function(re){var se=w.prototype.removeAllListeners.apply(this,arguments);return(re==="readable"||re===void 0)&&u.nextTick(ie,this),se};function ie(re){var se=re._readableState;se.readableListening=re.listenerCount("readable")>0,se.resumeScheduled&&!se.paused?se.flowing=!0:re.listenerCount("data")>0&&re.resume()}function ce(re){s("readable nexttick read 0"),re.read(0)}R.prototype.resume=function(){var re=this._readableState;return re.flowing||(s("resume"),re.flowing=!re.readableListening,be(this,re)),re.paused=!1,this};function be(re,se){se.resumeScheduled||(se.resumeScheduled=!0,u.nextTick(_e,re,se))}function _e(re,se){s("resume",se.reading),se.reading||re.read(0),se.resumeScheduled=!1,re.emit("resume"),oe(re),se.flowing&&!se.reading&&re.read(0)}R.prototype.pause=function(){return s("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(s("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function oe(re){var se=re._readableState;for(s("flow",se.flowing);se.flowing&&re.read()!==null;);}R.prototype.wrap=function(re){var se=this,Ce=this._readableState,q=!1;re.on("end",function(){if(s("wrapped end"),Ce.decoder&&!Ce.ended){var fe=Ce.decoder.end();fe&&fe.length&&se.push(fe)}se.push(null)}),re.on("data",function(fe){if(s("wrapped data"),Ce.decoder&&(fe=Ce.decoder.write(fe)),!(Ce.objectMode&&fe==null)&&!(!Ce.objectMode&&(!fe||!fe.length))){var we=se.push(fe);we||(q=!0,re.pause())}});for(var G in re)this[G]===void 0&&typeof re[G]=="function"&&(this[G]=function(we){return function(){return re[we].apply(re,arguments)}}(G));for(var Z=0;Z=se.length?(se.decoder?Ce=se.buffer.join(""):se.buffer.length===1?Ce=se.buffer.first():Ce=se.buffer.concat(se.length),se.buffer.clear()):Ce=se.buffer.consume(re,se.decoder),Ce}function Q(re){var se=re._readableState;s("endReadable",se.endEmitted),se.endEmitted||(se.ended=!0,u.nextTick(he,se,re))}function he(re,se){if(s("endReadableNT",re.endEmitted,re.length),!re.endEmitted&&re.length===0&&(re.endEmitted=!0,se.readable=!1,se.emit("end"),re.autoDestroy)){var Ce=se._writableState;(!Ce||Ce.autoDestroy&&Ce.finished)&&se.destroy()}}typeof Symbol=="function"&&(R.from=function(re,se){return N===void 0&&(N=e("./internal/streams/from")),N(R,re,se)});function ke(re,se){for(var Ce=0,q=re.length;Ce-1))throw new C(J);return this._writableState.defaultEncoding=J,this},Object.defineProperty(D.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function E(oe,J,Q){return!oe.objectMode&&oe.decodeStrings!==!1&&typeof J=="string"&&(J=y.from(J,Q)),J}Object.defineProperty(D.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function A(oe,J,Q,he,ke,re){if(!Q){var se=E(J,he,ke);he!==se&&(Q=!0,ke="buffer",he=se)}var Ce=J.objectMode?1:he.length;J.length+=Ce;var q=J.length0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(r){var t={data:r,next:this.head};this.length===0&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var t=this.head,i=""+t.data;t=t.next;)i+=r+t.data;return i}},{key:"concat",value:function(r){if(this.length===0)return h.alloc(0);for(var t=h.allocUnsafe(r>>>0),i=this.head,n=0;i;)v(i.data,t,n),n+=i.data.length,i=i.next;return t}},{key:"consume",value:function(r,t){var i;return ro.length?o.length:r;if(p===o.length?n+=o:n+=o.slice(0,r),r-=p,r===0){p===o.length?(++i,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=o.slice(p));break}++i}return this.length-=i,n}},{key:"_getBuffer",value:function(r){var t=h.allocUnsafe(r),i=this.head,n=1;for(i.data.copy(t),r-=i.data.length;i=i.next;){var o=i.data,p=r>o.length?o.length:r;if(o.copy(t,t.length-r,0,p),r-=p,r===0){p===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(p));break}++n}return this.length-=n,t}},{key:s,value:function(r,t){return d(this,m({},t,{depth:0,customInspect:!1}))}}]),c}()},{buffer:216,util:185}],485:[function(e,x,_){(function(u){function m(h,l){var d=this,s=this._readableState&&this._readableState.destroyed,v=this._writableState&&this._writableState.destroyed;return s||v?(l?l(h):h&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,u.nextTick(f,this,h)):u.nextTick(f,this,h)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(h||null,function(c){!l&&c?d._writableState?d._writableState.errorEmitted?u.nextTick(b,d):(d._writableState.errorEmitted=!0,u.nextTick(g,d,c)):u.nextTick(g,d,c):l?(u.nextTick(b,d),l(c)):u.nextTick(b,d)}),this)}function g(h,l){f(h,l),b(h)}function b(h){h._writableState&&!h._writableState.emitClose||h._readableState&&!h._readableState.emitClose||h.emit("close")}function w(){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 f(h,l){h.emit("error",l)}function y(h,l){var d=h._readableState,s=h._writableState;d&&d.autoDestroy||s&&s.autoDestroy?h.destroy(l):h.emit("error",l)}x.exports={destroy:m,undestroy:w,errorOrDestroy:y}}).call(this,e("_process"))},{_process:467}],486:[function(e,x,_){var u=e("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function m(f){var y=!1;return function(){if(!y){y=!0;for(var h=arguments.length,l=new Array(h),d=0;d0;return h(o,O,C,function(N){i||(i=N),N&&n.forEach(l),!O&&(n.forEach(l),t(i))})});return a.reduce(d)}x.exports=v},{"../../../errors":477,"./end-of-stream":486}],489:[function(e,x,_){var u=e("../../../errors").codes.ERR_INVALID_OPT_VALUE;function m(b,w,f){return b.highWaterMark!=null?b.highWaterMark:w?b[f]:null}function g(b,w,f,y){var h=m(w,y,f);if(h!=null){if(!(isFinite(h)&&Math.floor(h)===h)||h<0){var l=y?f:"highWaterMark";throw new u(l,h)}return Math.floor(h)}return b.objectMode?16:16*1024}x.exports={getHighWaterMark:g}},{"../../../errors":477}],490:[function(e,x,_){x.exports=e("events").EventEmitter},{events:367}],491:[function(e,x,_){_=x.exports=e("./lib/_stream_readable.js"),_.Stream=_,_.Readable=_,_.Writable=e("./lib/_stream_writable.js"),_.Duplex=e("./lib/_stream_duplex.js"),_.Transform=e("./lib/_stream_transform.js"),_.PassThrough=e("./lib/_stream_passthrough.js"),_.finished=e("./lib/internal/streams/end-of-stream.js"),_.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,x,_){function u(g){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(w){return typeof w}:u=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},u(g)}var m=function(g){var b=Object.prototype,w=b.hasOwnProperty,f,y=typeof Symbol=="function"?Symbol:{},h=y.iterator||"@@iterator",l=y.asyncIterator||"@@asyncIterator",d=y.toStringTag||"@@toStringTag";function s(U,I,j){return Object.defineProperty(U,I,{value:j,enumerable:!0,configurable:!0,writable:!0}),U[I]}try{s({},"")}catch{s=function(j,B,V){return j[B]=V}}function v(U,I,j,B){var V=I&&I.prototype instanceof o?I:o,te=Object.create(V.prototype),ie=new z(B||[]);return te._invoke=R(U,j,ie),te}g.wrap=v;function c(U,I,j){try{return{type:"normal",arg:U.call(I,j)}}catch(B){return{type:"throw",arg:B}}}var a="suspendedStart",r="suspendedYield",t="executing",i="completed",n={};function o(){}function p(){}function O(){}var C={};C[h]=function(){return this};var N=Object.getPrototypeOf,L=N&&N(N(W([])));L&&L!==b&&w.call(L,h)&&(C=L);var F=O.prototype=o.prototype=Object.create(C);p.prototype=F.constructor=O,O.constructor=p,p.displayName=s(O,d,"GeneratorFunction");function M(U){["next","throw","return"].forEach(function(I){s(U,I,function(j){return this._invoke(I,j)})})}g.isGeneratorFunction=function(U){var I=typeof U=="function"&&U.constructor;return I?I===p||(I.displayName||I.name)==="GeneratorFunction":!1},g.mark=function(U){return Object.setPrototypeOf?Object.setPrototypeOf(U,O):(U.__proto__=O,s(U,d,"GeneratorFunction")),U.prototype=Object.create(F),U},g.awrap=function(U){return{__await:U}};function D(U,I){function j(te,ie,ce,be){var _e=c(U[te],U,ie);if(_e.type==="throw")be(_e.arg);else{var oe=_e.arg,J=oe.value;return J&&u(J)==="object"&&w.call(J,"__await")?I.resolve(J.__await).then(function(Q){j("next",Q,ce,be)},function(Q){j("throw",Q,ce,be)}):I.resolve(J).then(function(Q){oe.value=Q,ce(oe)},function(Q){return j("throw",Q,ce,be)})}}var B;function V(te,ie){function ce(){return new I(function(be,_e){j(te,ie,be,_e)})}return B=B?B.then(ce,ce):ce()}this._invoke=V}M(D.prototype),D.prototype[l]=function(){return this},g.AsyncIterator=D,g.async=function(U,I,j,B,V){V===void 0&&(V=Promise);var te=new D(v(U,I,j,B),V);return g.isGeneratorFunction(I)?te:te.next().then(function(ie){return ie.done?ie.value:te.next()})};function R(U,I,j){var B=a;return function(te,ie){if(B===t)throw new Error("Generator is already running");if(B===i){if(te==="throw")throw ie;return $()}for(j.method=te,j.arg=ie;;){var ce=j.delegate;if(ce){var be=P(ce,j);if(be){if(be===n)continue;return be}}if(j.method==="next")j.sent=j._sent=j.arg;else if(j.method==="throw"){if(B===a)throw B=i,j.arg;j.dispatchException(j.arg)}else j.method==="return"&&j.abrupt("return",j.arg);B=t;var _e=c(U,I,j);if(_e.type==="normal"){if(B=j.done?i:r,_e.arg===n)continue;return{value:_e.arg,done:j.done}}else _e.type==="throw"&&(B=i,j.method="throw",j.arg=_e.arg)}}}function P(U,I){var j=U.iterator[I.method];if(j===f){if(I.delegate=null,I.method==="throw"){if(U.iterator.return&&(I.method="return",I.arg=f,P(U,I),I.method==="throw"))return n;I.method="throw",I.arg=new TypeError("The iterator does not provide a 'throw' method")}return n}var B=c(j,U.iterator,I.arg);if(B.type==="throw")return I.method="throw",I.arg=B.arg,I.delegate=null,n;var V=B.arg;if(!V)return I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,n;if(V.done)I[U.resultName]=V.value,I.next=U.nextLoc,I.method!=="return"&&(I.method="next",I.arg=f);else return V;return I.delegate=null,n}M(F),s(F,d,"Generator"),F[h]=function(){return this},F.toString=function(){return"[object Generator]"};function E(U){var I={tryLoc:U[0]};1 in U&&(I.catchLoc=U[1]),2 in U&&(I.finallyLoc=U[2],I.afterLoc=U[3]),this.tryEntries.push(I)}function A(U){var I=U.completion||{};I.type="normal",delete I.arg,U.completion=I}function z(U){this.tryEntries=[{tryLoc:"root"}],U.forEach(E,this),this.reset(!0)}g.keys=function(U){var I=[];for(var j in U)I.push(j);return I.reverse(),function B(){for(;I.length;){var V=I.pop();if(V in U)return B.value=V,B.done=!1,B}return B.done=!0,B}};function W(U){if(U){var I=U[h];if(I)return I.call(U);if(typeof U.next=="function")return U;if(!isNaN(U.length)){var j=-1,B=function V(){for(;++j=0;--V){var te=this.tryEntries[V],ie=te.completion;if(te.tryLoc==="root")return B("end");if(te.tryLoc<=this.prev){var ce=w.call(te,"catchLoc"),be=w.call(te,"finallyLoc");if(ce&&be){if(this.prev=0;--B){var V=this.tryEntries[B];if(V.tryLoc<=this.prev&&w.call(V,"finallyLoc")&&this.prev=0;--j){var B=this.tryEntries[j];if(B.finallyLoc===I)return this.complete(B.completion,B.afterLoc),A(B),n}},catch:function(I){for(var j=this.tryEntries.length-1;j>=0;--j){var B=this.tryEntries[j];if(B.tryLoc===I){var V=B.completion;if(V.type==="throw"){var te=V.arg;A(B)}return te}}throw new Error("illegal catch attempt")},delegateYield:function(I,j,B){return this.delegate={iterator:W(I),resultName:j,nextLoc:B},this.method==="next"&&(this.arg=f),n}},g}((typeof x>"u"?"undefined":u(x))==="object"?x.exports:{});try{regeneratorRuntime=m}catch{Function("r","regeneratorRuntime = r")(m)}},{}],493:[function(e,x,_){var u=e("buffer").Buffer,m=e("inherits"),g=e("hash-base"),b=new Array(16),w=[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],f=[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],y=[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],h=[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],l=[0,1518500249,1859775393,2400959708,2840853838],d=[1352829926,1548603684,1836072691,2053994217,0];function s(){g.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}m(s,g),s.prototype._update=function(){for(var n=b,o=0;o<16;++o)n[o]=this._block.readInt32LE(o*4);for(var p=this._a|0,O=this._b|0,C=this._c|0,N=this._d|0,L=this._e|0,F=this._a|0,M=this._b|0,D=this._c|0,R=this._d|0,P=this._e|0,E=0;E<80;E+=1){var A,z;E<16?(A=c(p,O,C,N,L,n[w[E]],l[0],y[E]),z=i(F,M,D,R,P,n[f[E]],d[0],h[E])):E<32?(A=a(p,O,C,N,L,n[w[E]],l[1],y[E]),z=t(F,M,D,R,P,n[f[E]],d[1],h[E])):E<48?(A=r(p,O,C,N,L,n[w[E]],l[2],y[E]),z=r(F,M,D,R,P,n[f[E]],d[2],h[E])):E<64?(A=t(p,O,C,N,L,n[w[E]],l[3],y[E]),z=a(F,M,D,R,P,n[f[E]],d[3],h[E])):(A=i(p,O,C,N,L,n[w[E]],l[4],y[E]),z=c(F,M,D,R,P,n[f[E]],d[4],h[E])),p=L,L=N,N=v(C,10),C=O,O=A,F=P,P=R,R=v(D,10),D=M,M=z}var W=this._b+C+R|0;this._b=this._c+N+P|0,this._c=this._d+L+F|0,this._d=this._e+p+M|0,this._e=this._a+O+D|0,this._a=W},s.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 n=u.alloc?u.alloc(20):new u(20);return n.writeInt32LE(this._a,0),n.writeInt32LE(this._b,4),n.writeInt32LE(this._c,8),n.writeInt32LE(this._d,12),n.writeInt32LE(this._e,16),n};function v(n,o){return n<>>32-o}function c(n,o,p,O,C,N,L,F){return v(n+(o^p^O)+N+L|0,F)+C|0}function a(n,o,p,O,C,N,L,F){return v(n+(o&p|~o&O)+N+L|0,F)+C|0}function r(n,o,p,O,C,N,L,F){return v(n+((o|~p)^O)+N+L|0,F)+C|0}function t(n,o,p,O,C,N,L,F){return v(n+(o&O|p&~O)+N+L|0,F)+C|0}function i(n,o,p,O,C,N,L,F){return v(n+(o^(p|~O))+N+L|0,F)+C|0}x.exports=s},{buffer:216,"hash-base":370,inherits:387}],494:[function(e,x,_){var u=e("buffer"),m=u.Buffer;function g(w,f){for(var y in w)f[y]=w[y]}m.from&&m.alloc&&m.allocUnsafe&&m.allocUnsafeSlow?x.exports=u:(g(u,_),_.Buffer=b);function b(w,f,y){return m(w,f,y)}g(m,b),b.from=function(w,f,y){if(typeof w=="number")throw new TypeError("Argument must not be a number");return m(w,f,y)},b.alloc=function(w,f,y){if(typeof w!="number")throw new TypeError("Argument must be a number");var h=m(w);return f!==void 0?typeof y=="string"?h.fill(f,y):h.fill(f):h.fill(0),h},b.allocUnsafe=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return m(w)},b.allocUnsafeSlow=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return u.SlowBuffer(w)}},{buffer:216}],495:[function(e,x,_){(function(u){function m(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(d){return typeof d}:m=function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},m(h)}var g=e("buffer"),b=g.Buffer,w={},f;for(f in g)g.hasOwnProperty(f)&&(f==="SlowBuffer"||f==="Buffer"||(w[f]=g[f]));var y=w.Buffer={};for(f in b)b.hasOwnProperty(f)&&(f==="allocUnsafe"||f==="allocUnsafeSlow"||(y[f]=b[f]));if(w.Buffer.prototype=b.prototype,(!y.from||y.from===Uint8Array.from)&&(y.from=function(h,l,d){if(typeof h=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+m(h));if(h&&typeof h.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+m(h));return b(h,l,d)}),y.alloc||(y.alloc=function(h,l,d){if(typeof h!="number")throw new TypeError('The "size" argument must be of type number. Received type '+m(h));if(h<0||h>=2*(1<<30))throw new RangeError('The value "'+h+'" is invalid for option "size"');var s=b(h);return!l||l.length===0?s.fill(0):typeof d=="string"?s.fill(l,d):s.fill(l),s}),!w.kStringMaxLength)try{w.kStringMaxLength=u.binding("buffer").kStringMaxLength}catch{}w.constants||(w.constants={MAX_LENGTH:w.kMaxLength},w.kStringMaxLength&&(w.constants.MAX_STRING_LENGTH=w.kStringMaxLength)),x.exports=w}).call(this,e("_process"))},{_process:467,buffer:216}],496:[function(e,x,_){function u(vt,Ke){var ve;if(typeof Symbol>"u"||vt[Symbol.iterator]==null){if(Array.isArray(vt)||(ve=h(vt))||Ke&&vt&&typeof vt.length=="number"){ve&&(vt=ve);var Fe=0,Be=function(){};return{s:Be,n:function(){return Fe>=vt.length?{done:!0}:{done:!1,value:vt[Fe++]}},e:function(gr){throw gr},f:Be}}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 dt=!0,St=!1,Xt;return{s:function(){ve=vt[Symbol.iterator]()},n:function(){var gr=ve.next();return dt=gr.done,gr},e:function(gr){St=!0,Xt=gr},f:function(){try{!dt&&ve.return!=null&&ve.return()}finally{if(St)throw Xt}}}}function m(vt){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(ve){return typeof ve}:m=function(ve){return ve&&typeof Symbol=="function"&&ve.constructor===Symbol&&ve!==Symbol.prototype?"symbol":typeof ve},m(vt)}function g(vt,Ke){if(!(vt instanceof Ke))throw new TypeError("Cannot call a class as a function")}function b(vt,Ke){for(var ve=0;vevt.length)&&(Ke=vt.length);for(var ve=0,Fe=new Array(Ke);ve",lt:"<",quot:'"',apos:"'"},P=-1,E=-2,A=0,z=1,W=2,$=3,U=4,I=5,j=6,B=7,V=8,te=9,ie=10,ce=11,be=12,_e=13,oe=14,J=15,Q=16,he=17,ke=18,re=19,se=20,Ce=21,q=22,G=23,Z=24,fe=25,we=26,ge=27,je=28,Ze=29,nt=30,ut=31,ot=32,Ue=33,Ve=34,Qe=35,tt=36,ae=37,Re=38,me=39,Ee=40,pe=41,Pe=42,ee=43,Xe=44,it=9,K=10,Me=13,Le=32,ue=33,Se=34,Ie=38,st=39,Ge=45,rt=47,_t=59,wt=60,Ot=61,pt=62,ct=63,At=91,Pt=93,bt=133,Kt=8232,Ct=function(Ke){return Ke===Se||Ke===st},xt=[Se,st],Ft=[].concat(xt,[At,pt]),Lt=[].concat(xt,[wt,Pt]),Et=[Ot,ct].concat(f(o)),Dr=[].concat(f(o),[pt,Ie,wt]);function Or(vt,Ke,ve){switch(Ke){case"xml":ve!==F&&vt.fail("xml prefix must be bound to ".concat(F,"."));break;case"xmlns":ve!==M&&vt.fail("xmlns prefix must be bound to ".concat(M,"."));break}switch(ve){case M:vt.fail(Ke===""?"the default namespace may not be set to ".concat(ve,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(M,"."));break;case F:switch(Ke){case"xml":break;case"":vt.fail("the default namespace may not be set to ".concat(ve,"."));break;default:vt.fail("may not assign the xml namespace to another prefix.")}break}}function Gr(vt,Ke){for(var ve=0,Fe=Object.keys(Ke);ve0&&(Be+=":"),Be+="".concat(this.line,":").concat(this.column)),Be.length>0&&(Be+=": "),new Error(Be+ve)}},{key:"fail",value:function(ve){var Fe=this.makeError(ve),Be=this.errorHandler;if(Be===void 0)throw Fe;return Be(Fe),this}},{key:"write",value:function(ve){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var Fe=!1;ve===null?(Fe=!0,ve=""):m(ve)==="object"&&(ve=ve.toString()),this.carriedFromPrevious!==void 0&&(ve="".concat(this.carriedFromPrevious).concat(ve),this.carriedFromPrevious=void 0);var Be=ve.length,dt=ve.charCodeAt(Be-1);!Fe&&(dt===Me||dt>=55296&&dt<=56319)&&(this.carriedFromPrevious=ve[Be-1],Be--,ve=ve.slice(0,Be));var St=this.stateTable;for(this.chunk=ve,this.i=0;this.i=ve.length)return P;var Be=ve.charCodeAt(Fe);if(this.column++,Be<55296){if(Be>=Le||Be===it)return Be;switch(Be){case K:return this.line++,this.column=0,this.positionAtNewLine=this.position,K;case Me:return ve.charCodeAt(Fe+1)===K&&(this.i=Fe+2),this.line++,this.column=0,this.positionAtNewLine=this.position,E;default:return this.fail("disallowed character."),Be}}if(Be>56319)return Be>=57344&&Be<=65533||this.fail("disallowed character."),Be;var dt=65536+(Be-55296)*1024+(ve.charCodeAt(Fe+1)-56320);return this.i=Fe+2,dt>1114111&&this.fail("disallowed character."),dt}},{key:"getCode11",value:function(){var ve=this.chunk,Fe=this.i;if(this.prevI=Fe,this.i=Fe+1,Fe>=ve.length)return P;var Be=ve.charCodeAt(Fe);if(this.column++,Be<55296){if(Be>31&&Be<127||Be>159&&Be!==Kt||Be===it)return Be;switch(Be){case K:return this.line++,this.column=0,this.positionAtNewLine=this.position,K;case Me:{var dt=ve.charCodeAt(Fe+1);(dt===K||dt===bt)&&(this.i=Fe+2)}case bt:case Kt:return this.line++,this.column=0,this.positionAtNewLine=this.position,E;default:return this.fail("disallowed character."),Be}}if(Be>56319)return Be>=57344&&Be<=65533||this.fail("disallowed character."),Be;var St=65536+(Be-55296)*1024+(ve.charCodeAt(Fe+1)-56320);return this.i=Fe+2,St>1114111&&this.fail("disallowed character."),St}},{key:"getCodeNorm",value:function(){var ve=this.getCode();return ve===E?K:ve}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(ve){for(var Fe=this.i,Be=this.chunk;;){var dt=this.getCode(),St=dt===E,Xt=St?K:dt;if(Xt===P||ve.includes(Xt))return this.text+=Be.slice(Fe,this.prevI),Xt;St&&(this.text+="".concat(Be.slice(Fe,this.prevI),` +`),Fe=this.i)}}},{key:"captureToChar",value:function(ve){for(var Fe=this.i,Be=this.chunk;;){var dt=this.getCode();switch(dt){case E:this.text+="".concat(Be.slice(Fe,this.prevI),` +`),Fe=this.i,dt=K;break;case P:return this.text+=Be.slice(Fe),!1}if(dt===ve)return this.text+=Be.slice(Fe,this.prevI),!0}}},{key:"captureNameChars",value:function(){for(var ve=this.chunk,Fe=this.i;;){var Be=this.getCode();if(Be===P)return this.name+=ve.slice(Fe),P;if(!n(Be))return this.name+=ve.slice(Fe,this.prevI),Be===E?K:Be}}},{key:"skipSpaces",value:function(){for(;;){var ve=this.getCodeNorm();if(ve===P||!r(ve))return ve}}},{key:"setXMLVersion",value:function(ve){this.currentXMLVersion=ve,ve==="1.0"?(this.isChar=t,this.getCode=this.getCode10):(this.isChar=O,this.getCode=this.getCode11)}},{key:"sBegin",value:function(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=z}},{key:"sBeginWhitespace",value:function(){var ve=this.i,Fe=this.skipSpaces();switch(this.prevI!==ve&&(this.xmlDeclPossible=!1),Fe){case wt: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=_e,this.xmlDeclPossible=!1}}},{key:"sDoctype",value:function(){var ve,Fe=this.captureTo(Ft);switch(Fe){case pt:{(ve=this.doctypeHandler)===null||ve===void 0||ve.call(this,this.text),this.text="",this.state=_e,this.doctype=!0;break}case P:break;default:this.text+=String.fromCodePoint(Fe),Fe===At?this.state=U:Ct(Fe)&&(this.state=$,this.q=Fe)}}},{key:"sDoctypeQuote",value:function(){var ve=this.q;this.captureToChar(ve)&&(this.text+=String.fromCodePoint(ve),this.q=null,this.state=W)}},{key:"sDTD",value:function(){var ve=this.captureTo(Lt);ve!==P&&(this.text+=String.fromCodePoint(ve),ve===Pt?this.state=W:ve===wt?this.state=j:Ct(ve)&&(this.state=I,this.q=ve))}},{key:"sDTDQuoted",value:function(){var ve=this.q;this.captureToChar(ve)&&(this.text+=String.fromCodePoint(ve),this.state=U,this.q=null)}},{key:"sDTDOpenWaka",value:function(){var ve=this.getCodeNorm();switch(this.text+=String.fromCodePoint(ve),ve){case ue:this.state=B,this.openWakaBang="";break;case ct:this.state=ce;break;default:this.state=U}}},{key:"sDTDOpenWakaBang",value:function(){var ve=String.fromCodePoint(this.getCodeNorm()),Fe=this.openWakaBang+=ve;this.text+=ve,Fe!=="-"&&(this.state=Fe==="--"?V:U,this.openWakaBang="")}},{key:"sDTDComment",value:function(){this.captureToChar(Ge)&&(this.text+="-",this.state=te)}},{key:"sDTDCommentEnding",value:function(){var ve=this.getCodeNorm();this.text+=String.fromCodePoint(ve),this.state=ve===Ge?ie:V}},{key:"sDTDCommentEnded",value:function(){var ve=this.getCodeNorm();this.text+=String.fromCodePoint(ve),ve===pt?this.state=U:(this.fail("malformed comment."),this.state=V)}},{key:"sDTDPI",value:function(){this.captureToChar(ct)&&(this.text+="?",this.state=be)}},{key:"sDTDPIEnding",value:function(){var ve=this.getCodeNorm();this.text+=String.fromCodePoint(ve),ve===pt&&(this.state=U)}},{key:"sText",value:function(){this.tags.length!==0?this.handleTextInRoot():this.handleTextOutsideRoot()}},{key:"sEntity",value:function(){var ve=this.i,Fe=this.chunk;e:for(;;)switch(this.getCode()){case E:this.entity+="".concat(Fe.slice(ve,this.prevI),` +`),ve=this.i;break;case _t:{var Be=this.entityReturnState,dt=this.entity+Fe.slice(ve,this.prevI);this.state=Be;var St=void 0;dt===""?(this.fail("empty entity name."),St="&;"):(St=this.parseEntity(dt),this.entity=""),(Be!==_e||this.textHandler!==void 0)&&(this.text+=St);break e}case P:this.entity+=Fe.slice(ve);break e}}},{key:"sOpenWaka",value:function(){var ve=this.getCode();if(i(ve))this.state=Ve,this.unget(),this.xmlDeclPossible=!1;else switch(ve){case rt:this.state=ee,this.xmlDeclPossible=!1;break;case ue:this.state=Q,this.openWakaBang="",this.xmlDeclPossible=!1;break;case ct:this.state=G;break;default:this.fail("disallowed character in tag name"),this.state=_e,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=se,this.openWakaBang="";break;case"--":this.state=he,this.openWakaBang="";break;case"DOCTYPE":this.state=W,(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(Ge)&&(this.state=ke)}},{key:"sCommentEnding",value:function(){var ve,Fe=this.getCodeNorm();Fe===Ge?(this.state=re,(ve=this.commentHandler)===null||ve===void 0||ve.call(this,this.text),this.text=""):(this.text+="-".concat(String.fromCodePoint(Fe)),this.state=he)}},{key:"sCommentEnded",value:function(){var ve=this.getCodeNorm();ve!==pt?(this.fail("malformed comment."),this.text+="--".concat(String.fromCodePoint(ve)),this.state=he):this.state=_e}},{key:"sCData",value:function(){this.captureToChar(Pt)&&(this.state=Ce)}},{key:"sCDataEnding",value:function(){var ve=this.getCodeNorm();ve===Pt?this.state=q:(this.text+="]".concat(String.fromCodePoint(ve)),this.state=se)}},{key:"sCDataEnding2",value:function(){var ve,Fe=this.getCodeNorm();switch(Fe){case pt:{(ve=this.cdataHandler)===null||ve===void 0||ve.call(this,this.text),this.text="",this.state=_e;break}case Pt:this.text+="]";break;default:this.text+="]]".concat(String.fromCodePoint(Fe)),this.state=se}}},{key:"sPIFirstChar",value:function(){var ve=this.getCodeNorm();this.nameStartCheck(ve)?(this.piTarget+=String.fromCodePoint(ve),this.state=Z):ve===ct||r(ve)?(this.fail("processing instruction without a target."),this.state=ve===ct?we:fe):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(ve),this.state=Z)}},{key:"sPIRest",value:function(){for(var ve=this.chunk,Fe=this.i;;){var Be=this.getCodeNorm();if(Be===P){this.piTarget+=ve.slice(Fe);return}if(!this.nameCheck(Be)){this.piTarget+=ve.slice(Fe,this.prevI);var dt=Be===ct;dt||r(Be)?this.piTarget==="xml"?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=dt?Ue:ge):this.state=dt?we:fe:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(Be));break}}}},{key:"sPIBody",value:function(){if(this.text.length===0){var ve=this.getCodeNorm();ve===ct?this.state=we:r(ve)||(this.text=String.fromCodePoint(ve))}else this.captureToChar(ct)&&(this.state=we)}},{key:"sPIEnding",value:function(){var ve,Fe=this.getCodeNorm();if(Fe===pt){var Be=this.piTarget;Be.toLowerCase()==="xml"&&this.fail("the XML declaration must appear at the start of the document."),(ve=this.piHandler)===null||ve===void 0||ve.call(this,{target:Be,body:this.text}),this.piTarget=this.text="",this.state=_e}else Fe===ct?this.text+="?":(this.text+="?".concat(String.fromCodePoint(Fe)),this.state=fe);this.xmlDeclPossible=!1}},{key:"sXMLDeclNameStart",value:function(){var ve=this.skipSpaces();if(ve===ct){this.state=Ue;return}ve!==P&&(this.state=je,this.name=String.fromCodePoint(ve))}},{key:"sXMLDeclName",value:function(){var ve=this.captureTo(Et);if(ve===ct){this.state=Ue,this.name+=this.text,this.text="",this.fail("XML declaration is incomplete.");return}if(r(ve)||ve===Ot){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=ve===Ot?nt:Ze}}},{key:"sXMLDeclEq",value:function(){var ve=this.getCodeNorm();if(ve===ct){this.state=Ue,this.fail("XML declaration is incomplete.");return}r(ve)||(ve!==Ot&&this.fail("value required."),this.state=nt)}},{key:"sXMLDeclValueStart",value:function(){var ve=this.getCodeNorm();if(ve===ct){this.state=Ue,this.fail("XML declaration is incomplete.");return}r(ve)||(Ct(ve)?this.q=ve:(this.fail("value must be quoted."),this.q=Le),this.state=ut)}},{key:"sXMLDeclValue",value:function(){var ve=this.captureTo([this.q,ct]);if(ve===ct){this.state=Ue,this.text="",this.fail("XML declaration is incomplete.");return}if(ve!==P){var Fe=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];var Be=Fe;this.xmlDecl.version=Be,/^1\.[0-9]+$/.test(Be)?this.opt.forceXMLVersion||this.setXMLVersion(Be):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(Fe)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=Fe;break;case"standalone":Fe!=="yes"&&Fe!=="no"&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=Fe;break}this.name="",this.state=ot}}},{key:"sXMLDeclSeparator",value:function(){var ve=this.getCodeNorm();if(ve===ct){this.state=Ue;return}r(ve)||(this.fail("whitespace required."),this.unget()),this.state=ge}},{key:"sXMLDeclEnding",value:function(){var ve,Fe=this.getCodeNorm();Fe===pt?(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."),(ve=this.xmldeclHandler)===null||ve===void 0||ve.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=_e):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}},{key:"sOpenTag",value:function(){var ve,Fe=this.captureNameChars();if(Fe!==P){var Be=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=Be.ns=Object.create(null)),(ve=this.openTagStartHandler)===null||ve===void 0||ve.call(this,Be),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),Fe){case pt:this.openTag();break;case rt:this.state=Qe;break;default:r(Fe)||this.fail("disallowed character in tag name."),this.state=tt}}}},{key:"sOpenTagSlash",value:function(){this.getCode()===pt?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=tt)}},{key:"sAttrib",value:function(){var ve=this.skipSpaces();ve!==P&&(i(ve)?(this.unget(),this.state=ae):ve===pt?this.openTag():ve===rt?this.state=Qe:this.fail("disallowed character in attribute name."))}},{key:"sAttribName",value:function(){var ve=this.captureNameChars();ve===Ot?this.state=me:r(ve)?this.state=Re:ve===pt?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):ve!==P&&this.fail("disallowed character in attribute name.")}},{key:"sAttribNameSawWhite",value:function(){var ve=this.skipSpaces();switch(ve){case P:return;case Ot:this.state=me;break;default:this.fail("attribute without value."),this.text="",this.name="",ve===pt?this.openTag():i(ve)?(this.unget(),this.state=ae):(this.fail("disallowed character in attribute name."),this.state=tt)}}},{key:"sAttribValue",value:function(){var ve=this.getCodeNorm();Ct(ve)?(this.q=ve,this.state=Ee):r(ve)||(this.fail("unquoted attribute value."),this.state=Pe,this.unget())}},{key:"sAttribValueQuoted",value:function(){for(var ve=this.q,Fe=this.chunk,Be=this.i;;)switch(this.getCode()){case ve:this.pushAttrib(this.name,this.text+Fe.slice(Be,this.prevI)),this.name=this.text="",this.q=null,this.state=pe;return;case Ie:this.text+=Fe.slice(Be,this.prevI),this.state=oe,this.entityReturnState=Ee;return;case K:case E:case it:this.text+="".concat(Fe.slice(Be,this.prevI)," "),Be=this.i;break;case wt:this.text+=Fe.slice(Be,this.prevI),this.fail("disallowed character.");return;case P:this.text+=Fe.slice(Be);return}}},{key:"sAttribValueClosed",value:function(){var ve=this.getCodeNorm();r(ve)?this.state=tt:ve===pt?this.openTag():ve===rt?this.state=Qe:i(ve)?(this.fail("no whitespace between attributes."),this.unget(),this.state=ae):this.fail("disallowed character in attribute name.")}},{key:"sAttribValueUnquoted",value:function(){var ve=this.captureTo(Dr);switch(ve){case Ie:this.state=oe,this.entityReturnState=Pe;break;case wt: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="",ve===pt?this.openTag():this.state=tt}}},{key:"sCloseTag",value:function(){var ve=this.captureNameChars();ve===pt?this.closeTag():r(ve)?this.state=Xe:ve!==P&&this.fail("disallowed character in closing tag.")}},{key:"sCloseTagSawWhite",value:function(){switch(this.skipSpaces()){case pt:this.closeTag();break;case P:break;default:this.fail("disallowed character in closing tag.")}}},{key:"handleTextInRoot",value:function(){var ve=this.i,Fe=this.forbiddenState,Be=this.chunk,dt=this.textHandler;e:for(;;)switch(this.getCode()){case wt:{if(this.state=J,dt!==void 0){var St=this.text,Xt=Be.slice(ve,this.prevI);St.length!==0?(dt(St+Xt),this.text=""):Xt.length!==0&&dt(Xt)}Fe=Qt;break e}case Ie:this.state=oe,this.entityReturnState=_e,dt!==void 0&&(this.text+=Be.slice(ve,this.prevI)),Fe=Qt;break e;case Pt:switch(Fe){case Qt:Fe=Hr;break;case Hr:Fe=Fr;break;case Fr:break;default:throw new Error("impossible state")}break;case pt:Fe===Fr&&this.fail('the string "]]>" is disallowed in char data.'),Fe=Qt;break;case E:dt!==void 0&&(this.text+="".concat(Be.slice(ve,this.prevI),` +`)),ve=this.i,Fe=Qt;break;case P:dt!==void 0&&(this.text+=Be.slice(ve));break e;default:Fe=Qt}this.forbiddenState=Fe}},{key:"handleTextOutsideRoot",value:function(){var ve=this.i,Fe=this.chunk,Be=this.textHandler,dt=!1;e:for(;;){var St=this.getCode();switch(St){case wt:{if(this.state=J,Be!==void 0){var Xt=this.text,lr=Fe.slice(ve,this.prevI);Xt.length!==0?(Be(Xt+lr),this.text=""):lr.length!==0&&Be(lr)}break e}case Ie:this.state=oe,this.entityReturnState=_e,Be!==void 0&&(this.text+=Fe.slice(ve,this.prevI)),dt=!0;break e;case E:Be!==void 0&&(this.text+="".concat(Fe.slice(ve,this.prevI),` +`)),ve=this.i;break;case P:Be!==void 0&&(this.text+=Fe.slice(ve));break e;default:r(St)||(dt=!0)}}dt&&(!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(ve,Fe){var Be,dt=this.qname(ve),St=dt.prefix,Xt=dt.local,lr={name:ve,prefix:St,local:Xt,value:Fe};if(this.attribList.push(lr),(Be=this.attributeHandler)===null||Be===void 0||Be.call(this,lr),St==="xmlns"){var gr=Fe.trim();this.currentXMLVersion==="1.0"&&gr===""&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[Xt]=gr,Or(this,Xt,gr)}else if(ve==="xmlns"){var rn=Fe.trim();this.topNS[""]=rn,Or(this,"",rn)}}},{key:"pushAttribPlain",value:function(ve,Fe){var Be,dt={name:ve,value:Fe};this.attribList.push(dt),(Be=this.attributeHandler)===null||Be===void 0||Be.call(this,dt)}},{key:"end",value:function(){var ve,Fe;this.sawRoot||this.fail("document must contain a root element.");for(var Be=this.tags;Be.length>0;){var dt=Be.pop();this.fail("unclosed tag: ".concat(dt.name))}this.state!==A&&this.state!==_e&&this.fail("unexpected end.");var St=this.text;return St.length!==0&&((ve=this.textHandler)===null||ve===void 0||ve.call(this,St),this.text=""),this._closed=!0,(Fe=this.endHandler)===null||Fe===void 0||Fe.call(this),this._init(),this}},{key:"resolve",value:function(ve){var Fe,Be,dt=this.topNS[ve];if(dt!==void 0)return dt;for(var St=this.tags,Xt=St.length-1;Xt>=0;Xt--)if(dt=St[Xt].ns[ve],dt!==void 0)return dt;return dt=this.ns[ve],dt!==void 0?dt:(Be=(Fe=this.opt).resolvePrefix)===null||Be===void 0?void 0:Be.call(Fe,ve)}},{key:"qname",value:function(ve){var Fe=ve.indexOf(":");if(Fe===-1)return{prefix:"",local:ve};var Be=ve.slice(Fe+1),dt=ve.slice(0,Fe);return(dt===""||Be===""||Be.includes(":"))&&this.fail("malformed name: ".concat(ve,".")),{prefix:dt,local:Be}}},{key:"processAttribsNS",value:function(){var ve,Fe=this.attribList,Be=this.tag;{var dt=this.qname(Be.name),St=dt.prefix,Xt=dt.local;Be.prefix=St,Be.local=Xt;var lr=Be.uri=(ve=this.resolve(St))!==null&&ve!==void 0?ve:"";St!==""&&(St==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),lr===""&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(St),".")),Be.uri=St))}if(Fe.length!==0){var gr=Be.attributes,rn=new Set,zr=u(Fe),pi;try{for(zr.s();!(pi=zr.n()).done;){var Wr=pi.value,Dn=Wr.name,cn=Wr.prefix,yi=Wr.local,hn=void 0,dn=void 0;cn===""?(hn=Dn==="xmlns"?M:"",dn=Dn):(hn=this.resolve(cn),hn===void 0&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(cn),".")),hn=cn),dn="{".concat(hn,"}").concat(yi)),rn.has(dn)&&this.fail("duplicate attribute: ".concat(dn,".")),rn.add(dn),Wr.uri=hn,gr[Dn]=Wr}}catch(Nn){zr.e(Nn)}finally{zr.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var ve=this.attribList,Fe=this.tag.attributes,Be=u(ve),dt;try{for(Be.s();!(dt=Be.n()).done;){var St=dt.value,Xt=St.name,lr=St.value;Fe[Xt]!==void 0&&this.fail("duplicate attribute: ".concat(Xt,".")),Fe[Xt]=lr}}catch(gr){Be.e(gr)}finally{Be.f()}this.attribList=[]}},{key:"openTag",value:function(){var ve;this.processAttribs();var Fe=this.tags,Be=this.tag;Be.isSelfClosing=!1,(ve=this.openTagHandler)===null||ve===void 0||ve.call(this,Be),Fe.push(Be),this.state=_e,this.name=""}},{key:"openSelfClosingTag",value:function(){var ve,Fe,Be;this.processAttribs();var dt=this.tags,St=this.tag;St.isSelfClosing=!0,(ve=this.openTagHandler)===null||ve===void 0||ve.call(this,St),(Fe=this.closeTagHandler)===null||Fe===void 0||Fe.call(this,St);var Xt=this.tag=(Be=dt[dt.length-1])!==null&&Be!==void 0?Be:null;Xt===null&&(this.closedRoot=!0),this.state=_e,this.name=""}},{key:"closeTag",value:function(){var ve=this.tags,Fe=this.name;if(this.state=_e,this.name="",Fe===""){this.fail("weird empty close tag."),this.text+="";return}for(var Be=this.closeTagHandler,dt=ve.length;dt-- >0;){var St=this.tag=ve.pop();if(this.topNS=St.ns,Be==null||Be(St),St.name===Fe)break;this.fail("unexpected close tag.")}dt===0?this.closedRoot=!0:dt<0&&(this.fail("unmatched closing tag: ".concat(Fe,".")),this.text+=""))}},{key:"parseEntity",value:function(ve){if(ve[0]!=="#"){var Fe=this.ENTITIES[ve];return Fe!==void 0?Fe:(this.fail(this.isName(ve)?"undefined entity.":"disallowed character in entity name."),"&".concat(ve,";"))}var Be=NaN;return ve[1]==="x"&&/^#x[0-9a-f]+$/i.test(ve)?Be=parseInt(ve.slice(2),16):/^#[0-9]+$/.test(ve)&&(Be=parseInt(ve.slice(1),10)),this.isChar(Be)?String.fromCodePoint(Be):(this.fail("malformed character entity."),"&".concat(ve,";"))}},{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}}]),vt}();_.SaxesParser=Ur},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(e,x,_){(function(u){x.exports=typeof u=="function"?u:function(){var g=[].slice.apply(arguments);g.splice(1,0,0),setTimeout.apply(null,g)}}).call(this,e("timers").setImmediate)},{timers:521}],498:[function(e,x,_){var u=e("safe-buffer").Buffer;function m(g,b){this._block=u.alloc(g),this._finalSize=b,this._blockSize=g,this._len=0}m.prototype.update=function(g,b){typeof g=="string"&&(b=b||"utf8",g=u.from(g,b));for(var w=this._block,f=this._blockSize,y=g.length,h=this._len,l=0;l=this._finalSize&&(this._update(this._block),this._block.fill(0));var w=this._len*8;if(w<=4294967295)this._block.writeUInt32BE(w,this._blockSize-4);else{var f=(w&4294967295)>>>0,y=(w-f)/4294967296;this._block.writeUInt32BE(y,this._blockSize-8),this._block.writeUInt32BE(f,this._blockSize-4)}this._update(this._block);var h=this._hash();return g?h.toString(g):h},m.prototype._update=function(){throw new Error("_update must be implemented by subclass")},x.exports=m},{"safe-buffer":494}],499:[function(e,x,_){var u=x.exports=function(g){g=g.toLowerCase();var b=u[g];if(!b)throw new Error(g+" is not supported (we accept pull requests)");return new b};u.sha=e("./sha"),u.sha1=e("./sha1"),u.sha224=e("./sha224"),u.sha256=e("./sha256"),u.sha384=e("./sha384"),u.sha512=e("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(e,x,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[1518500249,1859775393,-1894007588,-899497514],w=new Array(80);function f(){this.init(),this._w=w,m.call(this,64,56)}u(f,m),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function y(d){return d<<5|d>>>27}function h(d){return d<<30|d>>>2}function l(d,s,v,c){return d===0?s&v|~s&c:d===2?s&v|s&c|v&c:s^v^c}f.prototype._update=function(d){for(var s=this._w,v=this._a|0,c=this._b|0,a=this._c|0,r=this._d|0,t=this._e|0,i=0;i<16;++i)s[i]=d.readInt32BE(i*4);for(;i<80;++i)s[i]=s[i-3]^s[i-8]^s[i-14]^s[i-16];for(var n=0;n<80;++n){var o=~~(n/20),p=y(v)+l(o,c,a,r)+t+s[n]+b[o]|0;t=r,r=a,a=h(c),c=v,v=p}this._a=v+this._a|0,this._b=c+this._b|0,this._c=a+this._c|0,this._d=r+this._d|0,this._e=t+this._e|0},f.prototype._hash=function(){var d=g.allocUnsafe(20);return d.writeInt32BE(this._a|0,0),d.writeInt32BE(this._b|0,4),d.writeInt32BE(this._c|0,8),d.writeInt32BE(this._d|0,12),d.writeInt32BE(this._e|0,16),d},x.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(e,x,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[1518500249,1859775393,-1894007588,-899497514],w=new Array(80);function f(){this.init(),this._w=w,m.call(this,64,56)}u(f,m),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function y(s){return s<<1|s>>>31}function h(s){return s<<5|s>>>27}function l(s){return s<<30|s>>>2}function d(s,v,c,a){return s===0?v&c|~v&a:s===2?v&c|v&a|c&a:v^c^a}f.prototype._update=function(s){for(var v=this._w,c=this._a|0,a=this._b|0,r=this._c|0,t=this._d|0,i=this._e|0,n=0;n<16;++n)v[n]=s.readInt32BE(n*4);for(;n<80;++n)v[n]=y(v[n-3]^v[n-8]^v[n-14]^v[n-16]);for(var o=0;o<80;++o){var p=~~(o/20),O=h(c)+d(p,a,r,t)+i+v[o]+b[p]|0;i=t,t=r,r=l(a),a=c,c=O}this._a=c+this._a|0,this._b=a+this._b|0,this._c=r+this._c|0,this._d=t+this._d|0,this._e=i+this._e|0},f.prototype._hash=function(){var s=g.allocUnsafe(20);return s.writeInt32BE(this._a|0,0),s.writeInt32BE(this._b|0,4),s.writeInt32BE(this._c|0,8),s.writeInt32BE(this._d|0,12),s.writeInt32BE(this._e|0,16),s},x.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(e,x,_){var u=e("inherits"),m=e("./sha256"),g=e("./hash"),b=e("safe-buffer").Buffer,w=new Array(64);function f(){this.init(),this._w=w,g.call(this,64,56)}u(f,m),f.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},f.prototype._hash=function(){var y=b.allocUnsafe(28);return y.writeInt32BE(this._a,0),y.writeInt32BE(this._b,4),y.writeInt32BE(this._c,8),y.writeInt32BE(this._d,12),y.writeInt32BE(this._e,16),y.writeInt32BE(this._f,20),y.writeInt32BE(this._g,24),y},x.exports=f},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(e,x,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[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],w=new Array(64);function f(){this.init(),this._w=w,m.call(this,64,56)}u(f,m),f.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 y(c,a,r){return r^c&(a^r)}function h(c,a,r){return c&a|r&(c|a)}function l(c){return(c>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10)}function d(c){return(c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7)}function s(c){return(c>>>7|c<<25)^(c>>>18|c<<14)^c>>>3}function v(c){return(c>>>17|c<<15)^(c>>>19|c<<13)^c>>>10}f.prototype._update=function(c){for(var a=this._w,r=this._a|0,t=this._b|0,i=this._c|0,n=this._d|0,o=this._e|0,p=this._f|0,O=this._g|0,C=this._h|0,N=0;N<16;++N)a[N]=c.readInt32BE(N*4);for(;N<64;++N)a[N]=v(a[N-2])+a[N-7]+s(a[N-15])+a[N-16]|0;for(var L=0;L<64;++L){var F=C+d(o)+y(o,p,O)+b[L]+a[L]|0,M=l(r)+h(r,t,i)|0;C=O,O=p,p=o,o=n+F|0,n=i,i=t,t=r,r=F+M|0}this._a=r+this._a|0,this._b=t+this._b|0,this._c=i+this._c|0,this._d=n+this._d|0,this._e=o+this._e|0,this._f=p+this._f|0,this._g=O+this._g|0,this._h=C+this._h|0},f.prototype._hash=function(){var c=g.allocUnsafe(32);return c.writeInt32BE(this._a,0),c.writeInt32BE(this._b,4),c.writeInt32BE(this._c,8),c.writeInt32BE(this._d,12),c.writeInt32BE(this._e,16),c.writeInt32BE(this._f,20),c.writeInt32BE(this._g,24),c.writeInt32BE(this._h,28),c},x.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(e,x,_){var u=e("inherits"),m=e("./sha512"),g=e("./hash"),b=e("safe-buffer").Buffer,w=new Array(160);function f(){this.init(),this._w=w,g.call(this,128,112)}u(f,m),f.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},f.prototype._hash=function(){var y=b.allocUnsafe(48);function h(l,d,s){y.writeInt32BE(l,s),y.writeInt32BE(d,s+4)}return h(this._ah,this._al,0),h(this._bh,this._bl,8),h(this._ch,this._cl,16),h(this._dh,this._dl,24),h(this._eh,this._el,32),h(this._fh,this._fl,40),y},x.exports=f},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(e,x,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[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],w=new Array(160);function f(){this.init(),this._w=w,m.call(this,128,112)}u(f,m),f.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 y(t,i,n){return n^t&(i^n)}function h(t,i,n){return t&i|n&(t|i)}function l(t,i){return(t>>>28|i<<4)^(i>>>2|t<<30)^(i>>>7|t<<25)}function d(t,i){return(t>>>14|i<<18)^(t>>>18|i<<14)^(i>>>9|t<<23)}function s(t,i){return(t>>>1|i<<31)^(t>>>8|i<<24)^t>>>7}function v(t,i){return(t>>>1|i<<31)^(t>>>8|i<<24)^(t>>>7|i<<25)}function c(t,i){return(t>>>19|i<<13)^(i>>>29|t<<3)^t>>>6}function a(t,i){return(t>>>19|i<<13)^(i>>>29|t<<3)^(t>>>6|i<<26)}function r(t,i){return t>>>0>>0?1:0}f.prototype._update=function(t){for(var i=this._w,n=this._ah|0,o=this._bh|0,p=this._ch|0,O=this._dh|0,C=this._eh|0,N=this._fh|0,L=this._gh|0,F=this._hh|0,M=this._al|0,D=this._bl|0,R=this._cl|0,P=this._dl|0,E=this._el|0,A=this._fl|0,z=this._gl|0,W=this._hl|0,$=0;$<32;$+=2)i[$]=t.readInt32BE($*4),i[$+1]=t.readInt32BE($*4+4);for(;$<160;$+=2){var U=i[$-30],I=i[$-15*2+1],j=s(U,I),B=v(I,U);U=i[$-2*2],I=i[$-2*2+1];var V=c(U,I),te=a(I,U),ie=i[$-7*2],ce=i[$-7*2+1],be=i[$-16*2],_e=i[$-16*2+1],oe=B+ce|0,J=j+ie+r(oe,B)|0;oe=oe+te|0,J=J+V+r(oe,te)|0,oe=oe+_e|0,J=J+be+r(oe,_e)|0,i[$]=J,i[$+1]=oe}for(var Q=0;Q<160;Q+=2){J=i[Q],oe=i[Q+1];var he=h(n,o,p),ke=h(M,D,R),re=l(n,M),se=l(M,n),Ce=d(C,E),q=d(E,C),G=b[Q],Z=b[Q+1],fe=y(C,N,L),we=y(E,A,z),ge=W+q|0,je=F+Ce+r(ge,W)|0;ge=ge+we|0,je=je+fe+r(ge,we)|0,ge=ge+Z|0,je=je+G+r(ge,Z)|0,ge=ge+oe|0,je=je+J+r(ge,oe)|0;var Ze=se+ke|0,nt=re+he+r(Ze,se)|0;F=L,W=z,L=N,z=A,N=C,A=E,E=P+ge|0,C=O+je+r(E,P)|0,O=p,P=R,p=o,R=D,o=n,D=M,M=ge+Ze|0,n=je+nt+r(M,ge)|0}this._al=this._al+M|0,this._bl=this._bl+D|0,this._cl=this._cl+R|0,this._dl=this._dl+P|0,this._el=this._el+E|0,this._fl=this._fl+A|0,this._gl=this._gl+z|0,this._hl=this._hl+W|0,this._ah=this._ah+n+r(this._al,M)|0,this._bh=this._bh+o+r(this._bl,D)|0,this._ch=this._ch+p+r(this._cl,R)|0,this._dh=this._dh+O+r(this._dl,P)|0,this._eh=this._eh+C+r(this._el,E)|0,this._fh=this._fh+N+r(this._fl,A)|0,this._gh=this._gh+L+r(this._gl,z)|0,this._hh=this._hh+F+r(this._hl,W)|0},f.prototype._hash=function(){var t=g.allocUnsafe(64);function i(n,o,p){t.writeInt32BE(n,p),t.writeInt32BE(o,p+4)}return i(this._ah,this._al,0),i(this._bh,this._bl,8),i(this._ch,this._cl,16),i(this._dh,this._dl,24),i(this._eh,this._el,32),i(this._fh,this._fl,40),i(this._gh,this._gl,48),i(this._hh,this._hl,56),t},x.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(e,x,_){x.exports=g;var u=e("events").EventEmitter,m=e("inherits");m(g,u),g.Readable=e("readable-stream/readable.js"),g.Writable=e("readable-stream/writable.js"),g.Duplex=e("readable-stream/duplex.js"),g.Transform=e("readable-stream/transform.js"),g.PassThrough=e("readable-stream/passthrough.js"),g.Stream=g;function g(){u.call(this)}g.prototype.pipe=function(b,w){var f=this;function y(a){b.writable&&b.write(a)===!1&&f.pause&&f.pause()}f.on("data",y);function h(){f.readable&&f.resume&&f.resume()}b.on("drain",h),!b._isStdio&&(!w||w.end!==!1)&&(f.on("end",d),f.on("close",s));var l=!1;function d(){l||(l=!0,b.end())}function s(){l||(l=!0,typeof b.destroy=="function"&&b.destroy())}function v(a){if(c(),u.listenerCount(this,"error")===0)throw a}f.on("error",v),b.on("error",v);function c(){f.removeListener("data",y),b.removeListener("drain",h),f.removeListener("end",d),f.removeListener("close",s),f.removeListener("error",v),b.removeListener("error",v),f.removeListener("end",c),f.removeListener("close",c),b.removeListener("close",c)}return f.on("end",c),f.on("close",c),b.on("close",c),b.emit("pipe",f),b}},{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,x,_){x.exports=e("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(e,x,_){var u=e("process-nextick-args"),m=Object.keys||function(v){var c=[];for(var a in v)c.push(a);return c};x.exports=l;var g=Object.create(e("core-util-is"));g.inherits=e("inherits");var b=e("./_stream_readable"),w=e("./_stream_writable");g.inherits(l,b);for(var f=m(w.prototype),y=0;y0?(typeof Q!="string"&&!se.objectMode&&Object.getPrototypeOf(Q)!==h.prototype&&(Q=d(Q)),ke?se.endEmitted?J.emit("error",new Error("stream.unshift() after end event")):N(J,se,Q,!0):se.ended?J.emit("error",new Error("stream.push() after EOF")):(se.reading=!1,se.decoder&&!he?(Q=se.decoder.write(Q),se.objectMode||Q.length!==0?N(J,se,Q,!1):z(J,se)):N(J,se,Q,!1))):ke||(se.reading=!1)}return F(se)}function N(J,Q,he,ke){Q.flowing&&Q.length===0&&!Q.sync?(J.emit("data",he),J.read(0)):(Q.length+=Q.objectMode?1:he.length,ke?Q.buffer.unshift(he):Q.buffer.push(he),Q.needReadable&&E(J)),z(J,Q)}function L(J,Q){var he;return!s(Q)&&typeof Q!="string"&&Q!==void 0&&!J.objectMode&&(he=new TypeError("Invalid non-string/buffer chunk")),he}function F(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=D(J)),J<=Q.length?J:Q.ended?Q.length:(Q.needReadable=!0,0))}O.prototype.read=function(J){a("read",J),J=parseInt(J,10);var Q=this._readableState,he=J;if(J!==0&&(Q.emittedReadable=!1),J===0&&Q.needReadable&&(Q.length>=Q.highWaterMark||Q.ended))return a("read: emitReadable",Q.length,Q.ended),Q.length===0&&Q.ended?be(this):E(this),null;if(J=R(J,Q),J===0&&Q.ended)return Q.length===0&&be(this),null;var ke=Q.needReadable;a("need readable",ke),(Q.length===0||Q.length-J0?re=V(J,Q):re=null,re===null?(Q.needReadable=!0,J=0):Q.length-=J,Q.length===0&&(Q.ended||(Q.needReadable=!0),he!==J&&Q.ended&&be(this)),re!==null&&this.emit("data",re),re};function P(J,Q){if(!Q.ended){if(Q.decoder){var he=Q.decoder.end();he&&he.length&&(Q.buffer.push(he),Q.length+=Q.objectMode?1:he.length)}Q.ended=!0,E(J)}}function E(J){var Q=J._readableState;Q.needReadable=!1,Q.emittedReadable||(a("emitReadable",Q.flowing),Q.emittedReadable=!0,Q.sync?g.nextTick(A,J):A(J))}function A(J){a("emit readable"),J.emit("readable"),B(J)}function z(J,Q){Q.readingMore||(Q.readingMore=!0,g.nextTick(W,J,Q))}function W(J,Q){for(var he=Q.length;!Q.reading&&!Q.flowing&&!Q.ended&&Q.length1&&oe(ke.pipes,J)!==-1)&&!Z&&(a("false write response, pause",he._readableState.awaitDrain),he._readableState.awaitDrain++,we=!0),he.pause())}function je(ot){a("onerror",ot),ut(),J.removeListener("error",je),f(J,"error")===0&&J.emit("error",ot)}o(J,"error",je);function Ze(){J.removeListener("finish",nt),ut()}J.once("close",Ze);function nt(){a("onfinish"),J.removeListener("close",Ze),ut()}J.once("finish",nt);function ut(){a("unpipe"),he.unpipe(J)}return J.emit("pipe",he),ke.flowing||(a("pipe resume"),he.resume()),J};function $(J){return function(){var Q=J._readableState;a("pipeOnDrain",Q.awaitDrain),Q.awaitDrain&&Q.awaitDrain--,Q.awaitDrain===0&&f(J,"data")&&(Q.flowing=!0,B(J))}}O.prototype.unpipe=function(J){var Q=this._readableState,he={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,he),this);if(!J){var ke=Q.pipes,re=Q.pipesCount;Q.pipes=null,Q.pipesCount=0,Q.flowing=!1;for(var se=0;se=Q.length?(Q.decoder?he=Q.buffer.join(""):Q.buffer.length===1?he=Q.buffer.head.data:he=Q.buffer.concat(Q.length),Q.buffer.clear()):he=te(J,Q.buffer,Q.decoder),he}function te(J,Q,he){var ke;return Jse.length?se.length:J;if(Ce===se.length?re+=se:re+=se.slice(0,J),J-=Ce,J===0){Ce===se.length?(++ke,he.next?Q.head=he.next:Q.head=Q.tail=null):(Q.head=he,he.data=se.slice(Ce));break}++ke}return Q.length-=ke,re}function ce(J,Q){var he=h.allocUnsafe(J),ke=Q.head,re=1;for(ke.data.copy(he),J-=ke.data.length;ke=ke.next;){var se=ke.data,Ce=J>se.length?se.length:J;if(se.copy(he,he.length-J,0,Ce),J-=Ce,J===0){Ce===se.length?(++re,ke.next?Q.head=ke.next:Q.head=Q.tail=null):(Q.head=ke,ke.data=se.slice(Ce));break}++re}return Q.length-=re,he}function be(J){var Q=J._readableState;if(Q.length>0)throw new Error('"endReadable()" called on non-empty stream');Q.endEmitted||(Q.ended=!0,g.nextTick(_e,Q,J))}function _e(J,Q){!J.endEmitted&&J.length===0&&(J.endEmitted=!0,Q.readable=!1,Q.emit("end"))}function oe(J,Q){for(var he=0,ke=J.length;he-1?g:b.nextTick,y;o.WritableState=i;var h=Object.create(e("core-util-is"));h.inherits=e("inherits");var l={deprecate:e("util-deprecate")},d=e("./internal/streams/stream"),s=e("safe-buffer").Buffer,v=m.Uint8Array||function(){};function c(j){return s.from(j)}function a(j){return s.isBuffer(j)||j instanceof v}var r=e("./internal/streams/destroy");h.inherits(o,d);function t(){}function i(j,B){y=y||e("./_stream_duplex"),j=j||{};var V=B instanceof y;this.objectMode=!!j.objectMode,V&&(this.objectMode=this.objectMode||!!j.writableObjectMode);var te=j.highWaterMark,ie=j.writableHighWaterMark,ce=this.objectMode?16:16*1024;te||te===0?this.highWaterMark=te:V&&(ie||ie===0)?this.highWaterMark=ie:this.highWaterMark=ce,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 be=j.decodeStrings===!1;this.decodeStrings=!be,this.defaultEncoding=j.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(_e){D(B,_e)},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 w(this)}i.prototype.getBuffer=function(){for(var B=this.bufferedRequest,V=[];B;)V.push(B),B=B.next;return V},function(){try{Object.defineProperty(i.prototype,"buffer",{get:l.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var n;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(n=Function.prototype[Symbol.hasInstance],Object.defineProperty(o,Symbol.hasInstance,{value:function(B){return n.call(this,B)?!0:this!==o?!1:B&&B._writableState instanceof i}})):n=function(B){return B instanceof this};function o(j){if(y=y||e("./_stream_duplex"),!n.call(o,this)&&!(this instanceof y))return new o(j);this._writableState=new i(j,this),this.writable=!0,j&&(typeof j.write=="function"&&(this._write=j.write),typeof j.writev=="function"&&(this._writev=j.writev),typeof j.destroy=="function"&&(this._destroy=j.destroy),typeof j.final=="function"&&(this._final=j.final)),d.call(this)}o.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function p(j,B){var V=new Error("write after end");j.emit("error",V),b.nextTick(B,V)}function O(j,B,V,te){var ie=!0,ce=!1;return V===null?ce=new TypeError("May not write null values to stream"):typeof V!="string"&&V!==void 0&&!B.objectMode&&(ce=new TypeError("Invalid non-string/buffer chunk")),ce&&(j.emit("error",ce),b.nextTick(te,ce),ie=!1),ie}o.prototype.write=function(j,B,V){var te=this._writableState,ie=!1,ce=!te.objectMode&&a(j);return ce&&!s.isBuffer(j)&&(j=c(j)),typeof B=="function"&&(V=B,B=null),ce?B="buffer":B||(B=te.defaultEncoding),typeof V!="function"&&(V=t),te.ended?p(this,V):(ce||O(this,te,j,V))&&(te.pendingcb++,ie=N(this,te,ce,j,B,V)),ie},o.prototype.cork=function(){var j=this._writableState;j.corked++},o.prototype.uncork=function(){var j=this._writableState;j.corked&&(j.corked--,!j.writing&&!j.corked&&!j.finished&&!j.bufferProcessing&&j.bufferedRequest&&E(this,j))},o.prototype.setDefaultEncoding=function(B){if(typeof B=="string"&&(B=B.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((B+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+B);return this._writableState.defaultEncoding=B,this};function C(j,B,V){return!j.objectMode&&j.decodeStrings!==!1&&typeof B=="string"&&(B=s.from(B,V)),B}Object.defineProperty(o.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function N(j,B,V,te,ie,ce){if(!V){var be=C(B,te,ie);te!==be&&(V=!0,ie="buffer",te=be)}var _e=B.objectMode?1:te.length;B.length+=_e;var oe=B.length0?this.tail.next=h:this.head=h,this.tail=h,++this.length},w.prototype.unshift=function(y){var h={data:y,next:this.head};this.length===0&&(this.tail=h),this.head=h,++this.length},w.prototype.shift=function(){if(this.length!==0){var y=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,y}},w.prototype.clear=function(){this.head=this.tail=null,this.length=0},w.prototype.join=function(y){if(this.length===0)return"";for(var h=this.head,l=""+h.data;h=h.next;)l+=y+h.data;return l},w.prototype.concat=function(y){if(this.length===0)return m.alloc(0);if(this.length===1)return this.head.data;for(var h=m.allocUnsafe(y>>>0),l=this.head,d=0;l;)b(l.data,h,d),d+=l.data.length,l=l.next;return h},w}(),g&&g.inspect&&g.inspect.custom&&(x.exports.prototype[g.inspect.custom]=function(){var w=g.inspect({length:this.length});return this.constructor.name+" "+w})},{"safe-buffer":494,util:185}],514:[function(e,x,_){var u=e("process-nextick-args");function m(w,f){var y=this,h=this._readableState&&this._readableState.destroyed,l=this._writableState&&this._writableState.destroyed;return h||l?(f?f(w):w&&(!this._writableState||!this._writableState.errorEmitted)&&u.nextTick(b,this,w),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(w||null,function(d){!f&&d?(u.nextTick(b,y,d),y._writableState&&(y._writableState.errorEmitted=!0)):f&&f(d)}),this)}function g(){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 b(w,f){w.emit("error",f)}x.exports={destroy:m,undestroy:g}},{"process-nextick-args":466}],515:[function(e,x,_){arguments[4][490][0].apply(_,arguments)},{dup:490,events:367}],516:[function(e,x,_){x.exports=e("./readable").PassThrough},{"./readable":517}],517:[function(e,x,_){_=x.exports=e("./lib/_stream_readable.js"),_.Stream=_,_.Readable=_,_.Writable=e("./lib/_stream_writable.js"),_.Duplex=e("./lib/_stream_duplex.js"),_.Transform=e("./lib/_stream_transform.js"),_.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,x,_){x.exports=e("./readable").Transform},{"./readable":517}],519:[function(e,x,_){x.exports=e("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(e,x,_){var u=e("safe-buffer").Buffer,m=u.isEncoding||function(n){switch(n=""+n,n&&n.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 g(n){if(!n)return"utf8";for(var o;;)switch(n){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 n;default:if(o)return;n=(""+n).toLowerCase(),o=!0}}function b(n){var o=g(n);if(typeof o!="string"&&(u.isEncoding===m||!m(n)))throw new Error("Unknown encoding: "+n);return o||n}_.StringDecoder=w;function w(n){this.encoding=b(n);var o;switch(this.encoding){case"utf16le":this.text=v,this.end=c,o=4;break;case"utf8":this.fillLast=l,o=4;break;case"base64":this.text=a,this.end=r,o=3;break;default:this.write=t,this.end=i;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=u.allocUnsafe(o)}w.prototype.write=function(n){if(n.length===0)return"";var o,p;if(this.lastNeed){if(o=this.fillLast(n),o===void 0)return"";p=this.lastNeed,this.lastNeed=0}else p=0;return p>5===6?2:n>>4===14?3:n>>3===30?4:n>>6===2?-1:-2}function y(n,o,p){var O=o.length-1;if(O=0?(C>0&&(n.lastNeed=C-1),C):--O=0?(C>0&&(n.lastNeed=C-2),C):--O=0?(C>0&&(C===2?C=0:n.lastNeed=C-3),C):0))}function h(n,o,p){if((o[0]&192)!==128)return n.lastNeed=0,"�";if(n.lastNeed>1&&o.length>1){if((o[1]&192)!==128)return n.lastNeed=1,"�";if(n.lastNeed>2&&o.length>2&&(o[2]&192)!==128)return n.lastNeed=2,"�"}}function l(n){var o=this.lastTotal-this.lastNeed,p=h(this,n);if(p!==void 0)return p;if(this.lastNeed<=n.length)return n.copy(this.lastChar,o,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);n.copy(this.lastChar,o,0,n.length),this.lastNeed-=n.length}function d(n,o){var p=y(this,n,o);if(!this.lastNeed)return n.toString("utf8",o);this.lastTotal=p;var O=n.length-(p-this.lastNeed);return n.copy(this.lastChar,0,O),n.toString("utf8",o,O)}function s(n){var o=n&&n.length?this.write(n):"";return this.lastNeed?o+"�":o}function v(n,o){if((n.length-o)%2===0){var p=n.toString("utf16le",o);if(p){var O=p.charCodeAt(p.length-1);if(O>=55296&&O<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=n[n.length-2],this.lastChar[1]=n[n.length-1],p.slice(0,-1)}return p}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=n[n.length-1],n.toString("utf16le",o,n.length-1)}function c(n){var o=n&&n.length?this.write(n):"";if(this.lastNeed){var p=this.lastTotal-this.lastNeed;return o+this.lastChar.toString("utf16le",0,p)}return o}function a(n,o){var p=(n.length-o)%3;return p===0?n.toString("base64",o):(this.lastNeed=3-p,this.lastTotal=3,p===1?this.lastChar[0]=n[n.length-1]:(this.lastChar[0]=n[n.length-2],this.lastChar[1]=n[n.length-1]),n.toString("base64",o,n.length-p))}function r(n){var o=n&&n.length?this.write(n):"";return this.lastNeed?o+this.lastChar.toString("base64",0,3-this.lastNeed):o}function t(n){return n.toString(this.encoding)}function i(n){return n&&n.length?this.write(n):""}},{"safe-buffer":494}],521:[function(e,x,_){(function(u,m){var g=e("process/browser.js").nextTick,b=Function.prototype.apply,w=Array.prototype.slice,f={},y=0;_.setTimeout=function(){return new h(b.call(setTimeout,window,arguments),clearTimeout)},_.setInterval=function(){return new h(b.call(setInterval,window,arguments),clearInterval)},_.clearTimeout=_.clearInterval=function(l){l.close()};function h(l,d){this._id=l,this._clearFn=d}h.prototype.unref=h.prototype.ref=function(){},h.prototype.close=function(){this._clearFn.call(window,this._id)},_.enroll=function(l,d){clearTimeout(l._idleTimeoutId),l._idleTimeout=d},_.unenroll=function(l){clearTimeout(l._idleTimeoutId),l._idleTimeout=-1},_._unrefActive=_.active=function(l){clearTimeout(l._idleTimeoutId);var d=l._idleTimeout;d>=0&&(l._idleTimeoutId=setTimeout(function(){l._onTimeout&&l._onTimeout()},d))},_.setImmediate=typeof u=="function"?u:function(l){var d=y++,s=arguments.length<2?!1:w.call(arguments,1);return f[d]=!0,g(function(){f[d]&&(s?l.apply(null,s):l.call(null),_.clearImmediate(d))}),d},_.clearImmediate=typeof m=="function"?m:function(l){delete f[l]}}).call(this,e("timers").setImmediate,e("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(e,x,_){(function(u){x.exports=m;function m(b,w){if(g("noDeprecation"))return b;var f=!1;function y(){if(!f){if(g("throwDeprecation"))throw new Error(w);g("traceDeprecation")?console.trace(w):console.warn(w),f=!0}return b.apply(this,arguments)}return y}function g(b){try{if(!u.localStorage)return!1}catch{return!1}var w=u.localStorage[b];return w==null?!1:String(w).toLowerCase()==="true"}}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],523:[function(e,x,_){typeof Object.create=="function"?x.exports=function(m,g){m.super_=g,m.prototype=Object.create(g.prototype,{constructor:{value:m,enumerable:!1,writable:!0,configurable:!0}})}:x.exports=function(m,g){m.super_=g;var b=function(){};b.prototype=g.prototype,m.prototype=new b,m.prototype.constructor=m}},{}],524:[function(e,x,_){function u(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(b){return typeof b}:u=function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},u(m)}x.exports=function(g){return g&&u(g)==="object"&&typeof g.copy=="function"&&typeof g.fill=="function"&&typeof g.readUInt8=="function"}},{}],525:[function(e,x,_){(function(u,m){function g(I){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?g=function(B){return typeof B}:g=function(B){return B&&typeof Symbol=="function"&&B.constructor===Symbol&&B!==Symbol.prototype?"symbol":typeof B},g(I)}var b=/%[sdj%]/g;_.format=function(I){if(!C(I)){for(var j=[],B=0;B=te)return be;switch(be){case"%s":return String(V[B++]);case"%d":return Number(V[B++]);case"%j":try{return JSON.stringify(V[B++])}catch{return"[Circular]"}default:return be}}),ce=V[B];B=3&&(B.depth=arguments[2]),arguments.length>=4&&(B.colors=arguments[3]),n(j)?B.showHidden=j:j&&_._extend(B,j),L(B.showHidden)&&(B.showHidden=!1),L(B.depth)&&(B.depth=2),L(B.colors)&&(B.colors=!1),L(B.customInspect)&&(B.customInspect=!0),B.colors&&(B.stylize=h),s(B,I,B.depth)}_.inspect=y,y.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]},y.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function h(I,j){var B=y.styles[j];return B?"\x1B["+y.colors[B][0]+"m"+I+"\x1B["+y.colors[B][1]+"m":I}function l(I,j){return I}function d(I){var j={};return I.forEach(function(B,V){j[B]=!0}),j}function s(I,j,B){if(I.customInspect&&j&&P(j.inspect)&&j.inspect!==_.inspect&&!(j.constructor&&j.constructor.prototype===j)){var V=j.inspect(B,I);return C(V)||(V=s(I,V,B)),V}var te=v(I,j);if(te)return te;var ie=Object.keys(j),ce=d(ie);if(I.showHidden&&(ie=Object.getOwnPropertyNames(j)),R(j)&&(ie.indexOf("message")>=0||ie.indexOf("description")>=0))return c(j);if(ie.length===0){if(P(j)){var be=j.name?": "+j.name:"";return I.stylize("[Function"+be+"]","special")}if(F(j))return I.stylize(RegExp.prototype.toString.call(j),"regexp");if(D(j))return I.stylize(Date.prototype.toString.call(j),"date");if(R(j))return c(j)}var _e="",oe=!1,J=["{","}"];if(i(j)&&(oe=!0,J=["[","]"]),P(j)){var Q=j.name?": "+j.name:"";_e=" [Function"+Q+"]"}if(F(j)&&(_e=" "+RegExp.prototype.toString.call(j)),D(j)&&(_e=" "+Date.prototype.toUTCString.call(j)),R(j)&&(_e=" "+c(j)),ie.length===0&&(!oe||j.length==0))return J[0]+_e+J[1];if(B<0)return F(j)?I.stylize(RegExp.prototype.toString.call(j),"regexp"):I.stylize("[Object]","special");I.seen.push(j);var he;return oe?he=a(I,j,B,ce,ie):he=ie.map(function(ke){return r(I,j,B,ce,ke,oe)}),I.seen.pop(),t(he,_e,J)}function v(I,j){if(L(j))return I.stylize("undefined","undefined");if(C(j)){var B="'"+JSON.stringify(j).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return I.stylize(B,"string")}if(O(j))return I.stylize(""+j,"number");if(n(j))return I.stylize(""+j,"boolean");if(o(j))return I.stylize("null","null")}function c(I){return"["+Error.prototype.toString.call(I)+"]"}function a(I,j,B,V,te){for(var ie=[],ce=0,be=j.length;ce-1&&(ie?be=be.split(` +`).map(function(oe){return" "+oe}).join(` +`).substr(2):be=` +`+be.split(` +`).map(function(oe){return" "+oe}).join(` +`))):be=I.stylize("[Circular]","special")),L(ce)){if(ie&&te.match(/^\d+$/))return be;ce=JSON.stringify(""+te),ce.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(ce=ce.substr(1,ce.length-2),ce=I.stylize(ce,"name")):(ce=ce.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),ce=I.stylize(ce,"string"))}return ce+": "+be}function t(I,j,B){var V=I.reduce(function(te,ie){return ie.indexOf(` +`)>=0,te+ie.replace(/\u001b\[\d\d?m/g,"").length+1},0);return V>60?B[0]+(j===""?"":j+` + `)+" "+I.join(`, + `)+" "+B[1]:B[0]+j+" "+I.join(", ")+" "+B[1]}function i(I){return Array.isArray(I)}_.isArray=i;function n(I){return typeof I=="boolean"}_.isBoolean=n;function o(I){return I===null}_.isNull=o;function p(I){return I==null}_.isNullOrUndefined=p;function O(I){return typeof I=="number"}_.isNumber=O;function C(I){return typeof I=="string"}_.isString=C;function N(I){return g(I)==="symbol"}_.isSymbol=N;function L(I){return I===void 0}_.isUndefined=L;function F(I){return M(I)&&A(I)==="[object RegExp]"}_.isRegExp=F;function M(I){return g(I)==="object"&&I!==null}_.isObject=M;function D(I){return M(I)&&A(I)==="[object Date]"}_.isDate=D;function R(I){return M(I)&&(A(I)==="[object Error]"||I instanceof Error)}_.isError=R;function P(I){return typeof I=="function"}_.isFunction=P;function E(I){return I===null||typeof I=="boolean"||typeof I=="number"||typeof I=="string"||g(I)==="symbol"||typeof I>"u"}_.isPrimitive=E,_.isBuffer=e("./support/isBuffer");function A(I){return Object.prototype.toString.call(I)}function z(I){return I<10?"0"+I.toString(10):I.toString(10)}var W=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function $(){var I=new Date,j=[z(I.getHours()),z(I.getMinutes()),z(I.getSeconds())].join(":");return[I.getDate(),W[I.getMonth()],j].join(" ")}_.log=function(){console.log("%s - %s",$(),_.format.apply(_,arguments))},_.inherits=e("inherits"),_._extend=function(I,j){if(!j||!M(j))return I;for(var B=Object.keys(j),V=B.length;V--;)I[B[V]]=j[B[V]];return I};function U(I,j){return Object.prototype.hasOwnProperty.call(I,j)}}).call(this,e("_process"),typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{"./support/isBuffer":524,_process:467,inherits:523}],526:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),Object.defineProperty(_,"v1",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(_,"v3",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(_,"v4",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(_,"v5",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(_,"NIL",{enumerable:!0,get:function(){return w.default}}),Object.defineProperty(_,"version",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(_,"validate",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(_,"stringify",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return l.default}});var u=d(e("./v1.js")),m=d(e("./v3.js")),g=d(e("./v4.js")),b=d(e("./v5.js")),w=d(e("./nil.js")),f=d(e("./version.js")),y=d(e("./validate.js")),h=d(e("./stringify.js")),l=d(e("./parse.js"));function d(s){return s&&s.__esModule?s:{default:s}}},{"./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,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;function u(a){if(typeof a=="string"){var r=unescape(encodeURIComponent(a));a=new Uint8Array(r.length);for(var t=0;t>5]>>>n%32&255,p=parseInt(i.charAt(o>>>4&15)+i.charAt(o&15),16);r.push(p)}return r}function g(a){return(a+64>>>9<<4)+14+1}function b(a,r){a[r>>5]|=128<>5]|=(a[i/8]&255)<>16)+(r>>16)+(t>>16);return i<<16|t&65535}function y(a,r){return a<>>32-r}function h(a,r,t,i,n,o){return f(y(f(f(r,a),f(i,o)),n),t)}function l(a,r,t,i,n,o,p){return h(r&t|~r&i,a,r,n,o,p)}function d(a,r,t,i,n,o,p){return h(r&i|t&~i,a,r,n,o,p)}function s(a,r,t,i,n,o,p){return h(r^t^i,a,r,n,o,p)}function v(a,r,t,i,n,o,p){return h(t^(r|~i),a,r,n,o,p)}var c=u;_.default=c},{}],528:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u="00000000-0000-0000-0000-000000000000";_.default=u},{}],529:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=m(e("./validate.js"));function m(w){return w&&w.__esModule?w:{default:w}}function g(w){if(!(0,u.default)(w))throw TypeError("Invalid UUID");var f,y=new Uint8Array(16);return y[0]=(f=parseInt(w.slice(0,8),16))>>>24,y[1]=f>>>16&255,y[2]=f>>>8&255,y[3]=f&255,y[4]=(f=parseInt(w.slice(9,13),16))>>>8,y[5]=f&255,y[6]=(f=parseInt(w.slice(14,18),16))>>>8,y[7]=f&255,y[8]=(f=parseInt(w.slice(19,23),16))>>>8,y[9]=f&255,y[10]=(f=parseInt(w.slice(24,36),16))/1099511627776&255,y[11]=f/4294967296&255,y[12]=f>>>24&255,y[13]=f>>>16&255,y[14]=f>>>8&255,y[15]=f&255,y}var b=g;_.default=b},{"./validate.js":539}],530:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=/^(?:[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;_.default=u},{}],531:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=g;var u=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),m=new Uint8Array(16);function g(){if(!u)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return u(m)}},{}],532:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;function u(w,f,y,h){switch(w){case 0:return f&y^~f&h;case 1:return f^y^h;case 2:return f&y^f&h^y&h;case 3:return f^y^h}}function m(w,f){return w<>>32-f}function g(w){var f=[1518500249,1859775393,2400959708,3395469782],y=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof w=="string"){var h=unescape(encodeURIComponent(w));w=[];for(var l=0;l>>0;L=N,N=C,C=m(O,30)>>>0,O=p,p=D}y[0]=y[0]+p>>>0,y[1]=y[1]+O>>>0,y[2]=y[2]+C>>>0,y[3]=y[3]+N>>>0,y[4]=y[4]+L>>>0}return[y[0]>>24&255,y[0]>>16&255,y[0]>>8&255,y[0]&255,y[1]>>24&255,y[1]>>16&255,y[1]>>8&255,y[1]&255,y[2]>>24&255,y[2]>>16&255,y[2]>>8&255,y[2]&255,y[3]>>24&255,y[3]>>16&255,y[3]>>8&255,y[3]&255,y[4]>>24&255,y[4]>>16&255,y[4]>>8&255,y[4]&255]}var b=g;_.default=b},{}],533:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=m(e("./validate.js"));function m(y){return y&&y.__esModule?y:{default:y}}for(var g=[],b=0;b<256;++b)g.push((b+256).toString(16).substr(1));function w(y){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,l=(g[y[h+0]]+g[y[h+1]]+g[y[h+2]]+g[y[h+3]]+"-"+g[y[h+4]]+g[y[h+5]]+"-"+g[y[h+6]]+g[y[h+7]]+"-"+g[y[h+8]]+g[y[h+9]]+"-"+g[y[h+10]]+g[y[h+11]]+g[y[h+12]]+g[y[h+13]]+g[y[h+14]]+g[y[h+15]]).toLowerCase();if(!(0,u.default)(l))throw TypeError("Stringified UUID is invalid");return l}var f=w;_.default=f},{"./validate.js":539}],534:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=g(e("./rng.js")),m=g(e("./stringify.js"));function g(d){return d&&d.__esModule?d:{default:d}}var b,w,f=0,y=0;function h(d,s,v){var c=s&&v||0,a=s||new Array(16);d=d||{};var r=d.node||b,t=d.clockseq!==void 0?d.clockseq:w;if(r==null||t==null){var i=d.random||(d.rng||u.default)();r==null&&(r=b=[i[0]|1,i[1],i[2],i[3],i[4],i[5]]),t==null&&(t=w=(i[6]<<8|i[7])&16383)}var n=d.msecs!==void 0?d.msecs:Date.now(),o=d.nsecs!==void 0?d.nsecs:y+1,p=n-f+(o-y)/1e4;if(p<0&&d.clockseq===void 0&&(t=t+1&16383),(p<0||n>f)&&d.nsecs===void 0&&(o=0),o>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");f=n,y=o,w=t,n+=122192928e5;var O=((n&268435455)*1e4+o)%4294967296;a[c++]=O>>>24&255,a[c++]=O>>>16&255,a[c++]=O>>>8&255,a[c++]=O&255;var C=n/4294967296*1e4&268435455;a[c++]=C>>>8&255,a[c++]=C&255,a[c++]=C>>>24&15|16,a[c++]=C>>>16&255,a[c++]=t>>>8|128,a[c++]=t&255;for(var N=0;N<6;++N)a[c+N]=r[N];return s||(0,m.default)(a)}var l=h;_.default=l},{"./rng.js":531,"./stringify.js":533}],535:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=g(e("./v35.js")),m=g(e("./md5.js"));function g(f){return f&&f.__esModule?f:{default:f}}var b=(0,u.default)("v3",48,m.default),w=b;_.default=w},{"./md5.js":527,"./v35.js":536}],536:[function(e,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=y,_.URL=_.DNS=void 0;var u=g(e("./stringify.js")),m=g(e("./parse.js"));function g(h){return h&&h.__esModule?h:{default:h}}function b(h){h=unescape(encodeURIComponent(h));for(var l=[],d=0;d=b&&l<=55295||l===m||l===g||l===u||l>=57344&&l<=65533||l>=65536&&l<=1114111}_.isChar=w;function f(l){return l===b||l===m||l===g||l===u}_.isS=f;function y(l){return l>=65&&l<=90||l>=97&&l<=122||l===58||l===95||l===8204||l===8205||l>=192&&l<=214||l>=216&&l<=246||l>=248&&l<=767||l>=880&&l<=893||l>=895&&l<=8191||l>=8304&&l<=8591||l>=11264&&l<=12271||l>=12289&&l<=55295||l>=63744&&l<=64975||l>=65008&&l<=65533||l>=65536&&l<=983039}_.isNameStartChar=y;function h(l){return y(l)||l>=48&&l<=57||l===45||l===46||l===183||l>=768&&l<=879||l>=8255&&l<=8256}_.isNameChar=h},{}],542:[function(e,x,_){/** + * 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(_,"__esModule",{value:!0}),_.CHAR="-퟿-�𐀀-􏿿",_.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",_.S=` \r +`,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.RESTRICTED_CHAR_RE=new RegExp("^["+_.RESTRICTED_CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");var u=9,m=10,g=13,b=32;_.S_LIST=[b,m,g,u];function w(s){return s>=1&&s<=55295||s>=57344&&s<=65533||s>=65536&&s<=1114111}_.isChar=w;function f(s){return s>=1&&s<=8||s===11||s===12||s>=14&&s<=31||s>=127&&s<=132||s>=134&&s<=159}_.isRestrictedChar=f;function y(s){return s===9||s===10||s===13||s>31&&s<127||s===133||s>159&&s<=55295||s>=57344&&s<=65533||s>=65536&&s<=1114111}_.isCharAndNotRestricted=y;function h(s){return s===b||s===m||s===g||s===u}_.isS=h;function l(s){return s>=65&&s<=90||s>=97&&s<=122||s===58||s===95||s===8204||s===8205||s>=192&&s<=214||s>=216&&s<=246||s>=248&&s<=767||s>=880&&s<=893||s>=895&&s<=8191||s>=8304&&s<=8591||s>=11264&&s<=12271||s>=12289&&s<=55295||s>=63744&&s<=64975||s>=65008&&s<=65533||s>=65536&&s<=983039}_.isNameStartChar=l;function d(s){return l(s)||s>=48&&s<=57||s===45||s===46||s===183||s>=768&&s<=879||s>=8255&&s<=8256}_.isNameChar=d},{}],543:[function(e,x,_){/** + * Character class utilities for XML NS 1.0 edition 3. + * + * @author Louis-Dominique Dubeau + * @license MIT + * @copyright Louis-Dominique Dubeau + */Object.defineProperty(_,"__esModule",{value:!0}),_.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NC_NAME_CHAR="-"+_.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.NC_NAME_START_CHAR_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]$","u"),_.NC_NAME_CHAR_RE=new RegExp("^["+_.NC_NAME_CHAR+"]$","u"),_.NC_NAME_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]["+_.NC_NAME_CHAR+"]*$","u");function u(g){return g>=65&&g<=90||g===95||g>=97&&g<=122||g>=192&&g<=214||g>=216&&g<=246||g>=248&&g<=767||g>=880&&g<=893||g>=895&&g<=8191||g>=8204&&g<=8205||g>=8304&&g<=8591||g>=11264&&g<=12271||g>=12289&&g<=55295||g>=63744&&g<=64975||g>=65008&&g<=65533||g>=65536&&g<=983039}_.isNCNameStartChar=u;function m(g){return u(g)||g===45||g===46||g>=48&&g<=57||g===183||g>=768&&g<=879||g>=8255&&g<=8256}_.isNCNameChar=m},{}]},{},[15])(15)})})(kg);function Qo(X){return Qo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(k){return typeof k}:function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},Qo(X)}var Og=/^\s+/,Eg=/\s+$/;function Rt(X,k){if(X=X||"",k=k||{},X instanceof Rt)return X;if(!(this instanceof Rt))return new Rt(X,k);var e=Tg(X);this._originalInput=X,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=k.format||e.format,this._gradientType=k.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}Rt.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 k=this.toRgb();return(k.r*299+k.g*587+k.b*114)/1e3},getLuminance:function(){var k=this.toRgb(),e,x,_,u,m,g;return e=k.r/255,x=k.g/255,_=k.b/255,e<=.03928?u=e/12.92:u=Math.pow((e+.055)/1.055,2.4),x<=.03928?m=x/12.92:m=Math.pow((x+.055)/1.055,2.4),_<=.03928?g=_/12.92:g=Math.pow((_+.055)/1.055,2.4),.2126*u+.7152*m+.0722*g},setAlpha:function(k){return this._a=xc(k),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var k=Jl(this._r,this._g,this._b);return{h:k.h*360,s:k.s,v:k.v,a:this._a}},toHsvString:function(){var k=Jl(this._r,this._g,this._b),e=Math.round(k.h*360),x=Math.round(k.s*100),_=Math.round(k.v*100);return this._a==1?"hsv("+e+", "+x+"%, "+_+"%)":"hsva("+e+", "+x+"%, "+_+"%, "+this._roundA+")"},toHsl:function(){var k=Yl(this._r,this._g,this._b);return{h:k.h*360,s:k.s,l:k.l,a:this._a}},toHslString:function(){var k=Yl(this._r,this._g,this._b),e=Math.round(k.h*360),x=Math.round(k.s*100),_=Math.round(k.l*100);return this._a==1?"hsl("+e+", "+x+"%, "+_+"%)":"hsla("+e+", "+x+"%, "+_+"%, "+this._roundA+")"},toHex:function(k){return Ql(this._r,this._g,this._b,k)},toHexString:function(k){return"#"+this.toHex(k)},toHex8:function(k){return Ag(this._r,this._g,this._b,this._a,k)},toHex8String:function(k){return"#"+this.toHex8(k)},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(yr(this._r,255)*100)+"%",g:Math.round(yr(this._g,255)*100)+"%",b:Math.round(yr(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(yr(this._r,255)*100)+"%, "+Math.round(yr(this._g,255)*100)+"%, "+Math.round(yr(this._b,255)*100)+"%)":"rgba("+Math.round(yr(this._r,255)*100)+"%, "+Math.round(yr(this._g,255)*100)+"%, "+Math.round(yr(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:Ug[Ql(this._r,this._g,this._b,!0)]||!1},toFilter:function(k){var e="#"+ql(this._r,this._g,this._b,this._a),x=e,_=this._gradientType?"GradientType = 1, ":"";if(k){var u=Rt(k);x="#"+ql(u._r,u._g,u._b,u._a)}return"progid:DXImageTransform.Microsoft.gradient("+_+"startColorstr="+e+",endColorstr="+x+")"},toString:function(k){var e=!!k;k=k||this._format;var x=!1,_=this._a<1&&this._a>=0,u=!e&&_&&(k==="hex"||k==="hex6"||k==="hex3"||k==="hex4"||k==="hex8"||k==="name");return u?k==="name"&&this._a===0?this.toName():this.toRgbString():(k==="rgb"&&(x=this.toRgbString()),k==="prgb"&&(x=this.toPercentageRgbString()),(k==="hex"||k==="hex6")&&(x=this.toHexString()),k==="hex3"&&(x=this.toHexString(!0)),k==="hex4"&&(x=this.toHex8String(!0)),k==="hex8"&&(x=this.toHex8String()),k==="name"&&(x=this.toName()),k==="hsl"&&(x=this.toHslString()),k==="hsv"&&(x=this.toHsvString()),x||this.toHexString())},clone:function(){return Rt(this.toString())},_applyModification:function(k,e){var x=k.apply(null,[this].concat([].slice.call(e)));return this._r=x._r,this._g=x._g,this._b=x._b,this.setAlpha(x._a),this},lighten:function(){return this._applyModification(Ng,arguments)},brighten:function(){return this._applyModification(Fg,arguments)},darken:function(){return this._applyModification(Bg,arguments)},desaturate:function(){return this._applyModification(Mg,arguments)},saturate:function(){return this._applyModification(Ig,arguments)},greyscale:function(){return this._applyModification(Dg,arguments)},spin:function(){return this._applyModification(jg,arguments)},_applyCombination:function(k,e){return k.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(Xg,arguments)},complement:function(){return this._applyCombination(Lg,arguments)},monochromatic:function(){return this._applyCombination(Hg,arguments)},splitcomplement:function(){return this._applyCombination(zg,arguments)},triad:function(){return this._applyCombination(ec,[3])},tetrad:function(){return this._applyCombination(ec,[4])}};Rt.fromRatio=function(X,k){if(Qo(X)=="object"){var e={};for(var x in X)X.hasOwnProperty(x)&&(x==="a"?e[x]=X[x]:e[x]=$a(X[x]));X=e}return Rt(X,k)};function Tg(X){var k={r:0,g:0,b:0},e=1,x=null,_=null,u=null,m=!1,g=!1;return typeof X=="string"&&(X=Kg(X)),Qo(X)=="object"&&(ci(X.r)&&ci(X.g)&&ci(X.b)?(k=Rg(X.r,X.g,X.b),m=!0,g=String(X.r).substr(-1)==="%"?"prgb":"rgb"):ci(X.h)&&ci(X.s)&&ci(X.v)?(x=$a(X.s),_=$a(X.v),k=Pg(X.h,x,_),m=!0,g="hsv"):ci(X.h)&&ci(X.s)&&ci(X.l)&&(x=$a(X.s),u=$a(X.l),k=Cg(X.h,x,u),m=!0,g="hsl"),X.hasOwnProperty("a")&&(e=X.a)),e=xc(e),{ok:m,format:X.format||g,r:Math.min(255,Math.max(k.r,0)),g:Math.min(255,Math.max(k.g,0)),b:Math.min(255,Math.max(k.b,0)),a:e}}function Rg(X,k,e){return{r:yr(X,255)*255,g:yr(k,255)*255,b:yr(e,255)*255}}function Yl(X,k,e){X=yr(X,255),k=yr(k,255),e=yr(e,255);var x=Math.max(X,k,e),_=Math.min(X,k,e),u,m,g=(x+_)/2;if(x==_)u=m=0;else{var b=x-_;switch(m=g>.5?b/(2-x-_):b/(x+_),x){case X:u=(k-e)/b+(k1&&(y-=1),y<1/6?w+(f-w)*6*y:y<1/2?f:y<2/3?w+(f-w)*(2/3-y)*6:w}if(k===0)x=_=u=e;else{var g=e<.5?e*(1+k):e+k-e*k,b=2*e-g;x=m(b,g,X+1/3),_=m(b,g,X),u=m(b,g,X-1/3)}return{r:x*255,g:_*255,b:u*255}}function Jl(X,k,e){X=yr(X,255),k=yr(k,255),e=yr(e,255);var x=Math.max(X,k,e),_=Math.min(X,k,e),u,m,g=x,b=x-_;if(m=x===0?0:b/x,x==_)u=0;else{switch(x){case X:u=(k-e)/b+(k>1)+720)%360;--k;)x.h=(x.h+_)%360,u.push(Rt(x));return u}function Hg(X,k){k=k||6;for(var e=Rt(X).toHsv(),x=e.h,_=e.s,u=e.v,m=[],g=1/k;k--;)m.push(Rt({h:x,s:_,v:u})),u=(u+g)%1;return m}Rt.mix=function(X,k,e){e=e===0?0:e||50;var x=Rt(X).toRgb(),_=Rt(k).toRgb(),u=e/100,m={r:(_.r-x.r)*u+x.r,g:(_.g-x.g)*u+x.g,b:(_.b-x.b)*u+x.b,a:(_.a-x.a)*u+x.a};return Rt(m)};Rt.readability=function(X,k){var e=Rt(X),x=Rt(k);return(Math.max(e.getLuminance(),x.getLuminance())+.05)/(Math.min(e.getLuminance(),x.getLuminance())+.05)};Rt.isReadable=function(X,k,e){var x=Rt.readability(X,k),_,u;switch(u=!1,_=Gg(e),_.level+_.size){case"AAsmall":case"AAAlarge":u=x>=4.5;break;case"AAlarge":u=x>=3;break;case"AAAsmall":u=x>=7;break}return u};Rt.mostReadable=function(X,k,e){var x=null,_=0,u,m,g,b;e=e||{},m=e.includeFallbackColors,g=e.level,b=e.size;for(var w=0;w_&&(_=u,x=Rt(k[w]));return Rt.isReadable(X,x,{level:g,size:b})||!m?x:(e.includeFallbackColors=!1,Rt.mostReadable(X,["#fff","#000"],e))};var bf=Rt.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"},Ug=Rt.hexNames=Wg(bf);function Wg(X){var k={};for(var e in X)X.hasOwnProperty(e)&&(k[X[e]]=e);return k}function xc(X){return X=parseFloat(X),(isNaN(X)||X<0||X>1)&&(X=1),X}function yr(X,k){$g(X)&&(X="100%");var e=Vg(X);return X=Math.min(k,Math.max(0,parseFloat(X))),e&&(X=parseInt(X*k,10)/100),Math.abs(X-k)<1e-6?1:X%k/parseFloat(k)}function es(X){return Math.min(1,Math.max(0,X))}function wn(X){return parseInt(X,16)}function $g(X){return typeof X=="string"&&X.indexOf(".")!=-1&&parseFloat(X)===1}function Vg(X){return typeof X=="string"&&X.indexOf("%")!=-1}function $n(X){return X.length==1?"0"+X:""+X}function $a(X){return X<=1&&(X=X*100+"%"),X}function Sc(X){return Math.round(parseFloat(X)*255).toString(16)}function tc(X){return wn(X)/255}var Wn=function(){var X="[-\\+]?\\d+%?",k="[-\\+]?\\d*\\.\\d+%?",e="(?:"+k+")|(?:"+X+")",x="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?",_="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?";return{CSS_UNIT:new RegExp(e),rgb:new RegExp("rgb"+x),rgba:new RegExp("rgba"+_),hsl:new RegExp("hsl"+x),hsla:new RegExp("hsla"+_),hsv:new RegExp("hsv"+x),hsva:new RegExp("hsva"+_),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 ci(X){return!!Wn.CSS_UNIT.exec(X)}function Kg(X){X=X.replace(Og,"").replace(Eg,"").toLowerCase();var k=!1;if(bf[X])X=bf[X],k=!0;else if(X=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var e;return(e=Wn.rgb.exec(X))?{r:e[1],g:e[2],b:e[3]}:(e=Wn.rgba.exec(X))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=Wn.hsl.exec(X))?{h:e[1],s:e[2],l:e[3]}:(e=Wn.hsla.exec(X))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=Wn.hsv.exec(X))?{h:e[1],s:e[2],v:e[3]}:(e=Wn.hsva.exec(X))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=Wn.hex8.exec(X))?{r:wn(e[1]),g:wn(e[2]),b:wn(e[3]),a:tc(e[4]),format:k?"name":"hex8"}:(e=Wn.hex6.exec(X))?{r:wn(e[1]),g:wn(e[2]),b:wn(e[3]),format:k?"name":"hex"}:(e=Wn.hex4.exec(X))?{r:wn(e[1]+""+e[1]),g:wn(e[2]+""+e[2]),b:wn(e[3]+""+e[3]),a:tc(e[4]+""+e[4]),format:k?"name":"hex8"}:(e=Wn.hex3.exec(X))?{r:wn(e[1]+""+e[1]),g:wn(e[2]+""+e[2]),b:wn(e[3]+""+e[3]),format:k?"name":"hex"}:!1}function Gg(X){var k,e;return X=X||{level:"AA",size:"small"},k=(X.level||"AA").toUpperCase(),e=(X.size||"small").toLowerCase(),k!=="AA"&&k!=="AAA"&&(k="AA"),e!=="small"&&e!=="large"&&(e="small"),{level:k,size:e}}var ga={},Zg={get exports(){return ga},set exports(X){ga=X}};/** + * @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(X,k){(function(){var e,x="4.17.21",_=200,u="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",m="Expected a function",g="Invalid `variable` option passed into `_.template`",b="__lodash_hash_undefined__",w=500,f="__lodash_placeholder__",y=1,h=2,l=4,d=1,s=2,v=1,c=2,a=4,r=8,t=16,i=32,n=64,o=128,p=256,O=512,C=30,N="...",L=800,F=16,M=1,D=2,R=3,P=1/0,E=9007199254740991,A=17976931348623157e292,z=0/0,W=4294967295,$=W-1,U=W>>>1,I=[["ary",o],["bind",v],["bindKey",c],["curry",r],["curryRight",t],["flip",O],["partial",i],["partialRight",n],["rearg",p]],j="[object Arguments]",B="[object Array]",V="[object AsyncFunction]",te="[object Boolean]",ie="[object Date]",ce="[object DOMException]",be="[object Error]",_e="[object Function]",oe="[object GeneratorFunction]",J="[object Map]",Q="[object Number]",he="[object Null]",ke="[object Object]",re="[object Promise]",se="[object Proxy]",Ce="[object RegExp]",q="[object Set]",G="[object String]",Z="[object Symbol]",fe="[object Undefined]",we="[object WeakMap]",ge="[object WeakSet]",je="[object ArrayBuffer]",Ze="[object DataView]",nt="[object Float32Array]",ut="[object Float64Array]",ot="[object Int8Array]",Ue="[object Int16Array]",Ve="[object Int32Array]",Qe="[object Uint8Array]",tt="[object Uint8ClampedArray]",ae="[object Uint16Array]",Re="[object Uint32Array]",me=/\b__p \+= '';/g,Ee=/\b(__p \+=) '' \+/g,pe=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Pe=/&(?:amp|lt|gt|quot|#39);/g,ee=/[&<>"']/g,Xe=RegExp(Pe.source),it=RegExp(ee.source),K=/<%-([\s\S]+?)%>/g,Me=/<%([\s\S]+?)%>/g,Le=/<%=([\s\S]+?)%>/g,ue=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Se=/^\w*$/,Ie=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,st=/[\\^$.*+?()[\]{}|]/g,Ge=RegExp(st.source),rt=/^\s+/,_t=/\s/,wt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ot=/\{\n\/\* \[wrapped with (.+)\] \*/,pt=/,? & /,ct=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,At=/[()=,{}\[\]\/\s]/,Pt=/\\(\\)?/g,bt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Kt=/\w*$/,Ct=/^[-+]0x[0-9a-f]+$/i,xt=/^0b[01]+$/i,Ft=/^\[object .+?Constructor\]$/,Lt=/^0o[0-7]+$/i,Et=/^(?:0|[1-9]\d*)$/,Dr=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Or=/($^)/,Gr=/['\n\r\u2028\u2029\\]/g,Nr="\\ud800-\\udfff",Zr="\\u0300-\\u036f",Qt="\\ufe20-\\ufe2f",Hr="\\u20d0-\\u20ff",Fr=Zr+Qt+Hr,Lr="\\u2700-\\u27bf",Ur="a-z\\xdf-\\xf6\\xf8-\\xff",vt="\\xac\\xb1\\xd7\\xf7",Ke="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",ve="\\u2000-\\u206f",Fe=" \\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",Be="A-Z\\xc0-\\xd6\\xd8-\\xde",dt="\\ufe0e\\ufe0f",St=vt+Ke+ve+Fe,Xt="['’]",lr="["+Nr+"]",gr="["+St+"]",rn="["+Fr+"]",zr="\\d+",pi="["+Lr+"]",Wr="["+Ur+"]",Dn="[^"+Nr+St+zr+Lr+Ur+Be+"]",cn="\\ud83c[\\udffb-\\udfff]",yi="(?:"+rn+"|"+cn+")",hn="[^"+Nr+"]",dn="(?:\\ud83c[\\udde6-\\uddff]){2}",Nn="[\\ud800-\\udbff][\\udc00-\\udfff]",Fn="["+Be+"]",Hi="\\u200d",Ui="(?:"+Wr+"|"+Dn+")",Wi="(?:"+Fn+"|"+Dn+")",ei="(?:"+Xt+"(?:d|ll|m|re|s|t|ve))?",Bn="(?:"+Xt+"(?:D|LL|M|RE|S|T|VE))?",$i=yi+"?",Vi="["+dt+"]?",xn="(?:"+Hi+"(?:"+[hn,dn,Nn].join("|")+")"+Vi+$i+")*",wa="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ki="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Gi=Vi+$i+xn,xa="(?:"+[pi,dn,Nn].join("|")+")"+Gi,Sa="(?:"+[hn+rn+"?",rn,dn,Nn,lr].join("|")+")",Sn=RegExp(Xt,"g"),Zi=RegExp(rn,"g"),Ri=RegExp(cn+"(?="+cn+")|"+Sa+Gi,"g"),jn=RegExp([Fn+"?"+Wr+"+"+ei+"(?="+[gr,Fn,"$"].join("|")+")",Wi+"+"+Bn+"(?="+[gr,Fn+Ui,"$"].join("|")+")",Fn+"?"+Ui+"+"+ei,Fn+"+"+Bn,Ki,wa,zr,xa].join("|"),"g"),ka=RegExp("["+Hi+Nr+Fr+dt+"]"),kn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,On=["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"],Yi=-1,rr={};rr[nt]=rr[ut]=rr[ot]=rr[Ue]=rr[Ve]=rr[Qe]=rr[tt]=rr[ae]=rr[Re]=!0,rr[j]=rr[B]=rr[je]=rr[te]=rr[Ze]=rr[ie]=rr[be]=rr[_e]=rr[J]=rr[Q]=rr[ke]=rr[Ce]=rr[q]=rr[G]=rr[we]=!1;var er={};er[j]=er[B]=er[je]=er[Ze]=er[te]=er[ie]=er[nt]=er[ut]=er[ot]=er[Ue]=er[Ve]=er[J]=er[Q]=er[ke]=er[Ce]=er[q]=er[G]=er[Z]=er[Qe]=er[tt]=er[ae]=er[Re]=!0,er[be]=er[_e]=er[we]=!1;var ti={À:"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"},Ji={"&":"&","<":"<",">":">",'"':""","'":"'"},Oa={"&":"&","<":"<",">":">",""":'"',"'":"'"},Qi={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},qi=parseFloat,xe=parseInt,De=typeof Vt=="object"&&Vt&&Vt.Object===Object&&Vt,Je=typeof self=="object"&&self&&self.Object===Object&&self,ht=De||Je||Function("return this")(),Zt=k&&!k.nodeType&&k,Mt=Zt&&!0&&X&&!X.nodeType&&X,fr=Mt&&Mt.exports===Zt,nr=fr&&De.process,tr=function(){try{var Ne=Mt&&Mt.require&&Mt.require("util").types;return Ne||nr&&nr.binding&&nr.binding("util")}catch{}}(),ur=tr&&tr.isArrayBuffer,Pr=tr&&tr.isDate,Br=tr&&tr.isMap,dr=tr&&tr.isRegExp,Er=tr&&tr.isSet,Ar=tr&&tr.isTypedArray;function pr(Ne,Ye,$e){switch($e.length){case 0:return Ne.call(Ye);case 1:return Ne.call(Ye,$e[0]);case 2:return Ne.call(Ye,$e[0],$e[1]);case 3:return Ne.call(Ye,$e[0],$e[1],$e[2])}return Ne.apply(Ye,$e)}function pn(Ne,Ye,$e,gt){for(var Bt=-1,ar=Ne==null?0:Ne.length;++Bt-1}function le(Ne,Ye,$e){for(var gt=-1,Bt=Ne==null?0:Ne.length;++gt-1;);return $e}function Af(Ne,Ye){for(var $e=Ne.length;$e--&&wr(Ye,Ne[$e],0)>-1;);return $e}function Tc(Ne,Ye){for(var $e=Ne.length,gt=0;$e--;)Ne[$e]===Ye&&++gt;return gt}var Rc=yn(ti),Cc=yn(Ji);function Pc(Ne){return"\\"+Qi[Ne]}function Ac(Ne,Ye){return Ne==null?e:Ne[Ye]}function ra(Ne){return ka.test(Ne)}function Mc(Ne){return kn.test(Ne)}function Ic(Ne){for(var Ye,$e=[];!(Ye=Ne.next()).done;)$e.push(Ye.value);return $e}function rs(Ne){var Ye=-1,$e=Array(Ne.size);return Ne.forEach(function(gt,Bt){$e[++Ye]=[Bt,gt]}),$e}function Mf(Ne,Ye){return function($e){return Ne(Ye($e))}}function bi(Ne,Ye){for(var $e=-1,gt=Ne.length,Bt=0,ar=[];++$e-1}function _h(S,T){var H=this.__data__,Y=co(H,S);return Y<0?(++this.size,H.push([S,T])):H[Y][1]=T,this}ri.prototype.clear=vh,ri.prototype.delete=mh,ri.prototype.get=bh,ri.prototype.has=gh,ri.prototype.set=_h;function ni(S){var T=-1,H=S==null?0:S.length;for(this.clear();++T=T?S:T)),S}function Pn(S,T,H,Y,ne,ye){var Te,Ae=T&y,ze=T&h,qe=T&l;if(H&&(Te=ne?H(S,Y,ne,ye):H(S)),Te!==e)return Te;if(!vr(S))return S;var et=jt(S);if(et){if(Te=kd(S),!Ae)return nn(S,Te)}else{var at=Vr(S),yt=at==_e||at==oe;if(ki(S))return pu(S,Ae);if(at==ke||at==j||yt&&!ne){if(Te=ze||yt?{}:Iu(S),!Ae)return ze?dd(S,Fh(Te,S)):hd(S,Wf(Te,S))}else{if(!er[at])return ne?S:{};Te=Od(S,at,Ae)}}ye||(ye=new zn);var kt=ye.get(S);if(kt)return kt;ye.set(S,Te),fl(S)?S.forEach(function(Nt){Te.add(Pn(Nt,T,H,Nt,S,ye))}):ol(S)&&S.forEach(function(Nt,Gt){Te.set(Gt,Pn(Nt,T,H,Gt,S,ye))});var Dt=qe?ze?Rs:Ts:ze?on:jr,Wt=et?e:Dt(S);return mr(Wt||S,function(Nt,Gt){Wt&&(Gt=Nt,Nt=S[Gt]),Ma(Te,Gt,Pn(Nt,T,H,Gt,S,ye))}),Te}function Bh(S){var T=jr(S);return function(H){return $f(H,S,T)}}function $f(S,T,H){var Y=H.length;if(S==null)return!Y;for(S=cr(S);Y--;){var ne=H[Y],ye=T[ne],Te=S[ne];if(Te===e&&!(ne in S)||!ye(Te))return!1}return!0}function Vf(S,T,H){if(typeof S!="function")throw new Rn(m);return La(function(){S.apply(e,H)},T)}function Ia(S,T,H,Y){var ne=-1,ye=ta,Te=!0,Ae=S.length,ze=[],qe=T.length;if(!Ae)return ze;H&&(T=Oe(T,vn(H))),Y?(ye=le,Te=!1):T.length>=_&&(ye=Ea,Te=!1,T=new Ai(T));e:for(;++nene?0:ne+H),Y=Y===e||Y>ne?ne:Ut(Y),Y<0&&(Y+=ne),Y=H>Y?0:ll(Y);H0&&H(Ae)?T>1?Xr(Ae,T-1,H,Y,ne):He(ne,Ae):Y||(ne[ne.length]=Ae)}return ne}var us=_u(),Zf=_u(!0);function Kn(S,T){return S&&us(S,T,jr)}function ls(S,T){return S&&Zf(S,T,jr)}function po(S,T){return Yr(T,function(H){return fi(S[H])})}function Ii(S,T){T=xi(T,S);for(var H=0,Y=T.length;S!=null&&HT}function zh(S,T){return S!=null&&sr.call(S,T)}function Xh(S,T){return S!=null&&T in cr(S)}function Hh(S,T,H){return S>=$r(T,H)&&S=120&&et.length>=120)?new Ai(Te&&et):e}et=S[0];var at=-1,yt=Ae[0];e:for(;++at-1;)Ae!==S&&io.call(Ae,ze,1),io.call(S,ze,1);return S}function ou(S,T){for(var H=S?T.length:0,Y=H-1;H--;){var ne=T[H];if(H==Y||ne!==ye){var ye=ne;si(ne)?io.call(S,ne,1):_s(S,ne)}}return S}function ms(S,T){return S+so(zf()*(T-S+1))}function td(S,T,H,Y){for(var ne=-1,ye=Ir(oo((T-S)/(H||1)),0),Te=$e(ye);ye--;)Te[Y?ye:++ne]=S,S+=H;return Te}function bs(S,T){var H="";if(!S||T<1||T>E)return H;do T%2&&(H+=S),T=so(T/2),T&&(S+=S);while(T);return H}function $t(S,T){return Ns(Fu(S,T,sn),S+"")}function rd(S){return Uf(da(S))}function nd(S,T){var H=da(S);return Oo(H,Mi(T,0,H.length))}function Fa(S,T,H,Y){if(!vr(S))return S;T=xi(T,S);for(var ne=-1,ye=T.length,Te=ye-1,Ae=S;Ae!=null&&++nene?0:ne+T),H=H>ne?ne:H,H<0&&(H+=ne),ne=T>H?0:H-T>>>0,T>>>=0;for(var ye=$e(ne);++Y>>1,Te=S[ye];Te!==null&&!bn(Te)&&(H?Te<=T:Te=_){var qe=T?null:md(S);if(qe)return Ya(qe);Te=!1,ne=Ea,ze=new Ai}else ze=T?[]:Ae;e:for(;++Y=Y?S:An(S,T,H)}var du=Gc||function(S){return ht.clearTimeout(S)};function pu(S,T){if(T)return S.slice();var H=S.length,Y=Nf?Nf(H):new S.constructor(H);return S.copy(Y),Y}function ks(S){var T=new S.constructor(S.byteLength);return new ro(T).set(new ro(S)),T}function fd(S,T){var H=T?ks(S.buffer):S.buffer;return new S.constructor(H,S.byteOffset,S.byteLength)}function ud(S){var T=new S.constructor(S.source,Kt.exec(S));return T.lastIndex=S.lastIndex,T}function ld(S){return Aa?cr(Aa.call(S)):{}}function yu(S,T){var H=T?ks(S.buffer):S.buffer;return new S.constructor(H,S.byteOffset,S.length)}function vu(S,T){if(S!==T){var H=S!==e,Y=S===null,ne=S===S,ye=bn(S),Te=T!==e,Ae=T===null,ze=T===T,qe=bn(T);if(!Ae&&!qe&&!ye&&S>T||ye&&Te&&ze&&!Ae&&!qe||Y&&Te&&ze||!H&&ze||!ne)return 1;if(!Y&&!ye&&!qe&&S=Ae)return ze;var qe=H[Y];return ze*(qe=="desc"?-1:1)}}return S.index-T.index}function mu(S,T,H,Y){for(var ne=-1,ye=S.length,Te=H.length,Ae=-1,ze=T.length,qe=Ir(ye-Te,0),et=$e(ze+qe),at=!Y;++Ae1?H[ne-1]:e,Te=ne>2?H[2]:e;for(ye=S.length>3&&typeof ye=="function"?(ne--,ye):e,Te&&en(H[0],H[1],Te)&&(ye=ne<3?e:ye,ne=1),T=cr(T);++Y-1?ne[ye?T[Te]:Te]:e}}function Su(S){return oi(function(T){var H=T.length,Y=H,ne=Cn.prototype.thru;for(S&&T.reverse();Y--;){var ye=T[Y];if(typeof ye!="function")throw new Rn(m);if(ne&&!Te&&So(ye)=="wrapper")var Te=new Cn([],!0)}for(Y=Te?Y:H;++Y1&&qt.reverse(),et&&zeAe))return!1;var qe=ye.get(S),et=ye.get(T);if(qe&&et)return qe==T&&et==S;var at=-1,yt=!0,kt=H&s?new Ai:e;for(ye.set(S,T),ye.set(T,S);++at1?"& ":"")+T[Y],T=T.join(H>2?", ":" "),S.replace(wt,`{ +/* [wrapped with `+T+`] */ +`)}function Td(S){return jt(S)||Fi(S)||!!(jf&&S&&S[jf])}function si(S,T){var H=typeof S;return T=T??E,!!T&&(H=="number"||H!="symbol"&&Et.test(S))&&S>-1&&S%1==0&&S0){if(++T>=L)return arguments[0]}else T=0;return S.apply(e,arguments)}}function Oo(S,T){var H=-1,Y=S.length,ne=Y-1;for(T=T===e?Y:T;++H1?S[T-1]:e;return H=typeof H=="function"?(S.pop(),H):e,Gu(S,H)});function Zu(S){var T=de(S);return T.__chain__=!0,T}function jp(S,T){return T(S),S}function Eo(S,T){return T(S)}var Lp=oi(function(S){var T=S.length,H=T?S[0]:0,Y=this.__wrapped__,ne=function(ye){return fs(ye,S)};return T>1||this.__actions__.length||!(Y instanceof Yt)||!si(H)?this.thru(ne):(Y=Y.slice(H,+H+(T?1:0)),Y.__actions__.push({func:Eo,args:[ne],thisArg:e}),new Cn(Y,this.__chain__).thru(function(ye){return T&&!ye.length&&ye.push(e),ye}))});function zp(){return Zu(this)}function Xp(){return new Cn(this.value(),this.__chain__)}function Hp(){this.__values__===e&&(this.__values__=ul(this.value()));var S=this.__index__>=this.__values__.length,T=S?e:this.__values__[this.__index__++];return{done:S,value:T}}function Up(){return this}function Wp(S){for(var T,H=this;H instanceof lo;){var Y=Hu(H);Y.__index__=0,Y.__values__=e,T?ne.__wrapped__=Y:T=Y;var ne=Y;H=H.__wrapped__}return ne.__wrapped__=S,T}function $p(){var S=this.__wrapped__;if(S instanceof Yt){var T=S;return this.__actions__.length&&(T=new Yt(this)),T=T.reverse(),T.__actions__.push({func:Eo,args:[Fs],thisArg:e}),new Cn(T,this.__chain__)}return this.thru(Fs)}function Vp(){return cu(this.__wrapped__,this.__actions__)}var Kp=bo(function(S,T,H){sr.call(S,H)?++S[H]:ii(S,H,1)});function Gp(S,T,H){var Y=jt(S)?En:jh;return H&&en(S,T,H)&&(T=e),Y(S,It(T,3))}function Zp(S,T){var H=jt(S)?Yr:Gf;return H(S,It(T,3))}var Yp=xu(Uu),Jp=xu(Wu);function Qp(S,T){return Xr(To(S,T),1)}function qp(S,T){return Xr(To(S,T),P)}function e0(S,T,H){return H=H===e?1:Ut(H),Xr(To(S,T),H)}function Yu(S,T){var H=jt(S)?mr:_i;return H(S,It(T,3))}function Ju(S,T){var H=jt(S)?ea:Kf;return H(S,It(T,3))}var t0=bo(function(S,T,H){sr.call(S,H)?S[H].push(T):ii(S,H,[T])});function r0(S,T,H,Y){S=an(S)?S:da(S),H=H&&!Y?Ut(H):0;var ne=S.length;return H<0&&(H=Ir(ne+H,0)),Mo(S)?H<=ne&&S.indexOf(T,H)>-1:!!ne&&wr(S,T,H)>-1}var n0=$t(function(S,T,H){var Y=-1,ne=typeof T=="function",ye=an(S)?$e(S.length):[];return _i(S,function(Te){ye[++Y]=ne?pr(T,Te,H):Da(Te,T,H)}),ye}),i0=bo(function(S,T,H){ii(S,H,T)});function To(S,T){var H=jt(S)?Oe:eu;return H(S,It(T,3))}function a0(S,T,H,Y){return S==null?[]:(jt(T)||(T=T==null?[]:[T]),H=Y?e:H,jt(H)||(H=H==null?[]:[H]),iu(S,T,H))}var o0=bo(function(S,T,H){S[H?0:1].push(T)},function(){return[[],[]]});function s0(S,T,H){var Y=jt(S)?ft:Vn,ne=arguments.length<3;return Y(S,It(T,4),H,ne,_i)}function f0(S,T,H){var Y=jt(S)?Tt:Vn,ne=arguments.length<3;return Y(S,It(T,4),H,ne,Kf)}function u0(S,T){var H=jt(S)?Yr:Gf;return H(S,Po(It(T,3)))}function l0(S){var T=jt(S)?Uf:rd;return T(S)}function c0(S,T,H){(H?en(S,T,H):T===e)?T=1:T=Ut(T);var Y=jt(S)?Ih:nd;return Y(S,T)}function h0(S){var T=jt(S)?Dh:ad;return T(S)}function d0(S){if(S==null)return 0;if(an(S))return Mo(S)?na(S):S.length;var T=Vr(S);return T==J||T==q?S.size:ps(S).length}function p0(S,T,H){var Y=jt(S)?mt:od;return H&&en(S,T,H)&&(T=e),Y(S,It(T,3))}var y0=$t(function(S,T){if(S==null)return[];var H=T.length;return H>1&&en(S,T[0],T[1])?T=[]:H>2&&en(T[0],T[1],T[2])&&(T=[T[0]]),iu(S,Xr(T,1),[])}),Ro=Zc||function(){return ht.Date.now()};function v0(S,T){if(typeof T!="function")throw new Rn(m);return S=Ut(S),function(){if(--S<1)return T.apply(this,arguments)}}function Qu(S,T,H){return T=H?e:T,T=S&&T==null?S.length:T,ai(S,o,e,e,e,e,T)}function qu(S,T){var H;if(typeof T!="function")throw new Rn(m);return S=Ut(S),function(){return--S>0&&(H=T.apply(this,arguments)),S<=1&&(T=e),H}}var js=$t(function(S,T,H){var Y=v;if(H.length){var ne=bi(H,ca(js));Y|=i}return ai(S,Y,T,H,ne)}),el=$t(function(S,T,H){var Y=v|c;if(H.length){var ne=bi(H,ca(el));Y|=i}return ai(T,Y,S,H,ne)});function tl(S,T,H){T=H?e:T;var Y=ai(S,r,e,e,e,e,e,T);return Y.placeholder=tl.placeholder,Y}function rl(S,T,H){T=H?e:T;var Y=ai(S,t,e,e,e,e,e,T);return Y.placeholder=rl.placeholder,Y}function nl(S,T,H){var Y,ne,ye,Te,Ae,ze,qe=0,et=!1,at=!1,yt=!0;if(typeof S!="function")throw new Rn(m);T=In(T)||0,vr(H)&&(et=!!H.leading,at="maxWait"in H,ye=at?Ir(In(H.maxWait)||0,T):ye,yt="trailing"in H?!!H.trailing:yt);function kt(Sr){var Hn=Y,li=ne;return Y=ne=e,qe=Sr,Te=S.apply(li,Hn),Te}function Dt(Sr){return qe=Sr,Ae=La(Gt,T),et?kt(Sr):Te}function Wt(Sr){var Hn=Sr-ze,li=Sr-qe,xl=T-Hn;return at?$r(xl,ye-li):xl}function Nt(Sr){var Hn=Sr-ze,li=Sr-qe;return ze===e||Hn>=T||Hn<0||at&&li>=ye}function Gt(){var Sr=Ro();if(Nt(Sr))return qt(Sr);Ae=La(Gt,Wt(Sr))}function qt(Sr){return Ae=e,yt&&Y?kt(Sr):(Y=ne=e,Te)}function gn(){Ae!==e&&du(Ae),qe=0,Y=ze=ne=Ae=e}function tn(){return Ae===e?Te:qt(Ro())}function _n(){var Sr=Ro(),Hn=Nt(Sr);if(Y=arguments,ne=this,ze=Sr,Hn){if(Ae===e)return Dt(ze);if(at)return du(Ae),Ae=La(Gt,T),kt(ze)}return Ae===e&&(Ae=La(Gt,T)),Te}return _n.cancel=gn,_n.flush=tn,_n}var m0=$t(function(S,T){return Vf(S,1,T)}),b0=$t(function(S,T,H){return Vf(S,In(T)||0,H)});function g0(S){return ai(S,O)}function Co(S,T){if(typeof S!="function"||T!=null&&typeof T!="function")throw new Rn(m);var H=function(){var Y=arguments,ne=T?T.apply(this,Y):Y[0],ye=H.cache;if(ye.has(ne))return ye.get(ne);var Te=S.apply(this,Y);return H.cache=ye.set(ne,Te)||ye,Te};return H.cache=new(Co.Cache||ni),H}Co.Cache=ni;function Po(S){if(typeof S!="function")throw new Rn(m);return function(){var T=arguments;switch(T.length){case 0:return!S.call(this);case 1:return!S.call(this,T[0]);case 2:return!S.call(this,T[0],T[1]);case 3:return!S.call(this,T[0],T[1],T[2])}return!S.apply(this,T)}}function _0(S){return qu(2,S)}var w0=sd(function(S,T){T=T.length==1&&jt(T[0])?Oe(T[0],vn(It())):Oe(Xr(T,1),vn(It()));var H=T.length;return $t(function(Y){for(var ne=-1,ye=$r(Y.length,H);++ne=T}),Fi=Jf(function(){return arguments}())?Jf:function(S){return br(S)&&sr.call(S,"callee")&&!Bf.call(S,"callee")},jt=$e.isArray,F0=ur?vn(ur):Wh;function an(S){return S!=null&&Ao(S.length)&&!fi(S)}function xr(S){return br(S)&&an(S)}function B0(S){return S===!0||S===!1||br(S)&&qr(S)==te}var ki=Jc||Ys,j0=Pr?vn(Pr):$h;function L0(S){return br(S)&&S.nodeType===1&&!za(S)}function z0(S){if(S==null)return!0;if(an(S)&&(jt(S)||typeof S=="string"||typeof S.splice=="function"||ki(S)||ha(S)||Fi(S)))return!S.length;var T=Vr(S);if(T==J||T==q)return!S.size;if(ja(S))return!ps(S).length;for(var H in S)if(sr.call(S,H))return!1;return!0}function X0(S,T){return Na(S,T)}function H0(S,T,H){H=typeof H=="function"?H:e;var Y=H?H(S,T):e;return Y===e?Na(S,T,e,H):!!Y}function zs(S){if(!br(S))return!1;var T=qr(S);return T==be||T==ce||typeof S.message=="string"&&typeof S.name=="string"&&!za(S)}function U0(S){return typeof S=="number"&&Lf(S)}function fi(S){if(!vr(S))return!1;var T=qr(S);return T==_e||T==oe||T==V||T==se}function al(S){return typeof S=="number"&&S==Ut(S)}function Ao(S){return typeof S=="number"&&S>-1&&S%1==0&&S<=E}function vr(S){var T=typeof S;return S!=null&&(T=="object"||T=="function")}function br(S){return S!=null&&typeof S=="object"}var ol=Br?vn(Br):Kh;function W0(S,T){return S===T||ds(S,T,Ps(T))}function $0(S,T,H){return H=typeof H=="function"?H:e,ds(S,T,Ps(T),H)}function V0(S){return sl(S)&&S!=+S}function K0(S){if(Pd(S))throw new Bt(u);return Qf(S)}function G0(S){return S===null}function Z0(S){return S==null}function sl(S){return typeof S=="number"||br(S)&&qr(S)==Q}function za(S){if(!br(S)||qr(S)!=ke)return!1;var T=no(S);if(T===null)return!0;var H=sr.call(T,"constructor")&&T.constructor;return typeof H=="function"&&H instanceof H&&qa.call(H)==$c}var Xs=dr?vn(dr):Gh;function Y0(S){return al(S)&&S>=-E&&S<=E}var fl=Er?vn(Er):Zh;function Mo(S){return typeof S=="string"||!jt(S)&&br(S)&&qr(S)==G}function bn(S){return typeof S=="symbol"||br(S)&&qr(S)==Z}var ha=Ar?vn(Ar):Yh;function J0(S){return S===e}function Q0(S){return br(S)&&Vr(S)==we}function q0(S){return br(S)&&qr(S)==ge}var ey=xo(ys),ty=xo(function(S,T){return S<=T});function ul(S){if(!S)return[];if(an(S))return Mo(S)?Ln(S):nn(S);if(Ta&&S[Ta])return Ic(S[Ta]());var T=Vr(S),H=T==J?rs:T==q?Ya:da;return H(S)}function ui(S){if(!S)return S===0?S:0;if(S=In(S),S===P||S===-P){var T=S<0?-1:1;return T*A}return S===S?S:0}function Ut(S){var T=ui(S),H=T%1;return T===T?H?T-H:T:0}function ll(S){return S?Mi(Ut(S),0,W):0}function In(S){if(typeof S=="number")return S;if(bn(S))return z;if(vr(S)){var T=typeof S.valueOf=="function"?S.valueOf():S;S=vr(T)?T+"":T}if(typeof S!="string")return S===0?S:+S;S=Cf(S);var H=xt.test(S);return H||Lt.test(S)?xe(S.slice(2),H?2:8):Ct.test(S)?z:+S}function cl(S){return Gn(S,on(S))}function ry(S){return S?Mi(Ut(S),-E,E):S===0?S:0}function or(S){return S==null?"":mn(S)}var ny=ua(function(S,T){if(ja(T)||an(T)){Gn(T,jr(T),S);return}for(var H in T)sr.call(T,H)&&Ma(S,H,T[H])}),hl=ua(function(S,T){Gn(T,on(T),S)}),Io=ua(function(S,T,H,Y){Gn(T,on(T),S,Y)}),iy=ua(function(S,T,H,Y){Gn(T,jr(T),S,Y)}),ay=oi(fs);function oy(S,T){var H=fa(S);return T==null?H:Wf(H,T)}var sy=$t(function(S,T){S=cr(S);var H=-1,Y=T.length,ne=Y>2?T[2]:e;for(ne&&en(T[0],T[1],ne)&&(Y=1);++H1),ye}),Gn(S,Rs(S),H),Y&&(H=Pn(H,y|h|l,bd));for(var ne=T.length;ne--;)_s(H,T[ne]);return H});function Oy(S,T){return pl(S,Po(It(T)))}var Ey=oi(function(S,T){return S==null?{}:qh(S,T)});function pl(S,T){if(S==null)return{};var H=Oe(Rs(S),function(Y){return[Y]});return T=It(T),au(S,H,function(Y,ne){return T(Y,ne[0])})}function Ty(S,T,H){T=xi(T,S);var Y=-1,ne=T.length;for(ne||(ne=1,S=e);++YT){var Y=S;S=T,T=Y}if(H||S%1||T%1){var ne=zf();return $r(S+ne*(T-S+qi("1e-"+((ne+"").length-1))),T)}return ms(S,T)}var jy=la(function(S,T,H){return T=T.toLowerCase(),S+(H?ml(T):T)});function ml(S){return Ws(or(S).toLowerCase())}function bl(S){return S=or(S),S&&S.replace(Dr,Rc).replace(Zi,"")}function Ly(S,T,H){S=or(S),T=mn(T);var Y=S.length;H=H===e?Y:Mi(Ut(H),0,Y);var ne=H;return H-=T.length,H>=0&&S.slice(H,ne)==T}function zy(S){return S=or(S),S&&it.test(S)?S.replace(ee,Cc):S}function Xy(S){return S=or(S),S&&Ge.test(S)?S.replace(st,"\\$&"):S}var Hy=la(function(S,T,H){return S+(H?"-":"")+T.toLowerCase()}),Uy=la(function(S,T,H){return S+(H?" ":"")+T.toLowerCase()}),Wy=wu("toLowerCase");function $y(S,T,H){S=or(S),T=Ut(T);var Y=T?na(S):0;if(!T||Y>=T)return S;var ne=(T-Y)/2;return wo(so(ne),H)+S+wo(oo(ne),H)}function Vy(S,T,H){S=or(S),T=Ut(T);var Y=T?na(S):0;return T&&Y>>0,H?(S=or(S),S&&(typeof T=="string"||T!=null&&!Xs(T))&&(T=mn(T),!T&&ra(S))?Si(Ln(S),0,H):S.split(T,H)):[]}var qy=la(function(S,T,H){return S+(H?" ":"")+Ws(T)});function ev(S,T,H){return S=or(S),H=H==null?0:Mi(Ut(H),0,S.length),T=mn(T),S.slice(H,H+T.length)==T}function tv(S,T,H){var Y=de.templateSettings;H&&en(S,T,H)&&(T=e),S=or(S),T=Io({},T,Y,Ru);var ne=Io({},T.imports,Y.imports,Ru),ye=jr(ne),Te=ts(ne,ye),Ae,ze,qe=0,et=T.interpolate||Or,at="__p += '",yt=ns((T.escape||Or).source+"|"+et.source+"|"+(et===Le?bt:Or).source+"|"+(T.evaluate||Or).source+"|$","g"),kt="//# sourceURL="+(sr.call(T,"sourceURL")?(T.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Yi+"]")+` +`;S.replace(yt,function(Nt,Gt,qt,gn,tn,_n){return qt||(qt=gn),at+=S.slice(qe,_n).replace(Gr,Pc),Gt&&(Ae=!0,at+=`' + +__e(`+Gt+`) + +'`),tn&&(ze=!0,at+=`'; +`+tn+`; +__p += '`),qt&&(at+=`' + +((__t = (`+qt+`)) == null ? '' : __t) + +'`),qe=_n+Nt.length,Nt}),at+=`'; +`;var Dt=sr.call(T,"variable")&&T.variable;if(!Dt)at=`with (obj) { +`+at+` +} +`;else if(At.test(Dt))throw new Bt(g);at=(ze?at.replace(me,""):at).replace(Ee,"$1").replace(pe,"$1;"),at="function("+(Dt||"obj")+`) { +`+(Dt?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(Ae?", __e = _.escape":"")+(ze?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+at+`return __p +}`;var Wt=_l(function(){return ar(ye,kt+"return "+at).apply(e,Te)});if(Wt.source=at,zs(Wt))throw Wt;return Wt}function rv(S){return or(S).toLowerCase()}function nv(S){return or(S).toUpperCase()}function iv(S,T,H){if(S=or(S),S&&(H||T===e))return Cf(S);if(!S||!(T=mn(T)))return S;var Y=Ln(S),ne=Ln(T),ye=Pf(Y,ne),Te=Af(Y,ne)+1;return Si(Y,ye,Te).join("")}function av(S,T,H){if(S=or(S),S&&(H||T===e))return S.slice(0,If(S)+1);if(!S||!(T=mn(T)))return S;var Y=Ln(S),ne=Af(Y,Ln(T))+1;return Si(Y,0,ne).join("")}function ov(S,T,H){if(S=or(S),S&&(H||T===e))return S.replace(rt,"");if(!S||!(T=mn(T)))return S;var Y=Ln(S),ne=Pf(Y,Ln(T));return Si(Y,ne).join("")}function sv(S,T){var H=C,Y=N;if(vr(T)){var ne="separator"in T?T.separator:ne;H="length"in T?Ut(T.length):H,Y="omission"in T?mn(T.omission):Y}S=or(S);var ye=S.length;if(ra(S)){var Te=Ln(S);ye=Te.length}if(H>=ye)return S;var Ae=H-na(Y);if(Ae<1)return Y;var ze=Te?Si(Te,0,Ae).join(""):S.slice(0,Ae);if(ne===e)return ze+Y;if(Te&&(Ae+=ze.length-Ae),Xs(ne)){if(S.slice(Ae).search(ne)){var qe,et=ze;for(ne.global||(ne=ns(ne.source,or(Kt.exec(ne))+"g")),ne.lastIndex=0;qe=ne.exec(et);)var at=qe.index;ze=ze.slice(0,at===e?Ae:at)}}else if(S.indexOf(mn(ne),Ae)!=Ae){var yt=ze.lastIndexOf(ne);yt>-1&&(ze=ze.slice(0,yt))}return ze+Y}function fv(S){return S=or(S),S&&Xe.test(S)?S.replace(Pe,Bc):S}var uv=la(function(S,T,H){return S+(H?" ":"")+T.toUpperCase()}),Ws=wu("toUpperCase");function gl(S,T,H){return S=or(S),T=H?e:T,T===e?Mc(S)?zc(S):hr(S):S.match(T)||[]}var _l=$t(function(S,T){try{return pr(S,e,T)}catch(H){return zs(H)?H:new Bt(H)}}),lv=oi(function(S,T){return mr(T,function(H){H=Zn(H),ii(S,H,js(S[H],S))}),S});function cv(S){var T=S==null?0:S.length,H=It();return S=T?Oe(S,function(Y){if(typeof Y[1]!="function")throw new Rn(m);return[H(Y[0]),Y[1]]}):[],$t(function(Y){for(var ne=-1;++neE)return[];var H=W,Y=$r(S,W);T=It(T),S-=W;for(var ne=mi(Y,T);++H0||T<0)?new Yt(H):(S<0?H=H.takeRight(-S):S&&(H=H.drop(S)),T!==e&&(T=Ut(T),H=T<0?H.dropRight(-T):H.take(T-S)),H)},Yt.prototype.takeRightWhile=function(S){return this.reverse().takeWhile(S).reverse()},Yt.prototype.toArray=function(){return this.take(W)},Kn(Yt.prototype,function(S,T){var H=/^(?:filter|find|map|reject)|While$/.test(T),Y=/^(?:head|last)$/.test(T),ne=de[Y?"take"+(T=="last"?"Right":""):T],ye=Y||/^find/.test(T);ne&&(de.prototype[T]=function(){var Te=this.__wrapped__,Ae=Y?[1]:arguments,ze=Te instanceof Yt,qe=Ae[0],et=ze||jt(Te),at=function(Gt){var qt=ne.apply(de,He([Gt],Ae));return Y&&yt?qt[0]:qt};et&&H&&typeof qe=="function"&&qe.length!=1&&(ze=et=!1);var yt=this.__chain__,kt=!!this.__actions__.length,Dt=ye&&!yt,Wt=ze&&!kt;if(!ye&&et){Te=Wt?Te:new Yt(this);var Nt=S.apply(Te,Ae);return Nt.__actions__.push({func:Eo,args:[at],thisArg:e}),new Cn(Nt,yt)}return Dt&&Wt?S.apply(this,Ae):(Nt=this.thru(at),Dt?Y?Nt.value()[0]:Nt.value():Nt)})}),mr(["pop","push","shift","sort","splice","unshift"],function(S){var T=Ja[S],H=/^(?:push|sort|unshift)$/.test(S)?"tap":"thru",Y=/^(?:pop|shift)$/.test(S);de.prototype[S]=function(){var ne=arguments;if(Y&&!this.__chain__){var ye=this.value();return T.apply(jt(ye)?ye:[],ne)}return this[H](function(Te){return T.apply(jt(Te)?Te:[],ne)})}}),Kn(Yt.prototype,function(S,T){var H=de[T];if(H){var Y=H.name+"";sr.call(sa,Y)||(sa[Y]=[]),sa[Y].push({name:T,func:H})}}),sa[go(e,c).name]=[{name:"wrapper",func:e}],Yt.prototype.clone=fh,Yt.prototype.reverse=uh,Yt.prototype.value=lh,de.prototype.at=Lp,de.prototype.chain=zp,de.prototype.commit=Xp,de.prototype.next=Hp,de.prototype.plant=Wp,de.prototype.reverse=$p,de.prototype.toJSON=de.prototype.valueOf=de.prototype.value=Vp,de.prototype.first=de.prototype.head,Ta&&(de.prototype[Ta]=Up),de},ia=Xc();Mt?((Mt.exports=ia)._=ia,Zt._=ia):ht._=ia}).call(Vt)})(Zg,ga);function kc(X){X=X.replace("#","");for(var k=X.match(/../g),e=0;e<3;e++)k[e]=parseInt(k[e],16);return k}function Oc(X,k,e){for(var x=[X.toString(16),k.toString(16),e.toString(16)],_=0;_<3;_++)x[_].length==1&&(x[_]="0"+x[_]);return"#"+x.join("")}function Yg(X,k){for(var e=kc(X),x=0;x<3;x++)e[x]=Math.floor(e[x]*(1-k));return Oc(e[0],e[1],e[2])}function Jg(X,k){for(var e=kc(X),x=0;x<3;x++)e[x]=Math.floor((255-e[x])*k+e[x]);return Oc(e[0],e[1],e[2])}const rf=["#FFFFFF","#000000","#BFBFBF","#323232","#4472C4","#ED7D31","#A5A5A5","#FFC000","#5B9BD5","#71AD47"],nf=["#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 Qg=80,qg=24;function v1(X,k={}){return e1(Zv(X),k)}function e1(X,k){return new Promise(function(e,x){const _=new XMLHttpRequest;_.open(k.method||"GET",X,!0),_.responseType=k.responseType||"arraybuffer",_.onload=function(){_.status===200?e(_.response):x(_.status)},_.onerror=function(){x(_.status)},_.withCredentials=k.withCredentials||!1,k.headers&&Object.keys(k.headers).forEach(function(u){_.setRequestHeader(u,k.headers[u])}),_.send(k.body)})}function m1(X){try{return new mf.Workbook().xlsx.load(X)}catch(k){return console.warn(k),Promise.reject(k)}}function t1(X,k,e){for(let x=0;x<(X.columns||[]).length;x++)k.cols[x.toString()]={},X.columns[x].width?k.cols[x.toString()].width=X.columns[x].width*6+(e.widthOffset||0):k.cols[x.toString()].width=Qg+(e.widthOffset||0);k.cols.len=Math.max(Object.keys(k.cols).length,e.minColLength||0)}function r1(X){const{numFmt:k,value:e,type:x}=X;switch(x){case 2:if(X.style.numFmt){if(X.style.numFmt.endsWith("%")){let _=X.style.numFmt.match(/\.(\d+)%/);return _?(e*100).toFixed(_[1].length)+"%":e*100+"%"}else if(/(#(,#+)?)?0(\.0+)?/.test(X.style.numFmt)){let _=X.style.numFmt.match(/\.(\d+)(_|;)/);_?_=_[1].length:_=0;let u=e.toFixed(_)+"";if(X.style.numFmt.includes("#,##")){u=u.split(".");let m=u[0].split("").reverse(),g=[];for(let b=0;b9?"#C7C9CC":typeof k>"u"?rf[X]:k>0?Jg(rf[X],k):Yg(rf[X],Math.abs(k))}function n1(X){X.style=ga.cloneDeep(X.style);let k=null;X.style.fill&&X.style.fill.fgColor&&(X.style.fill.fgColor.argb?k=af(X.style.fill.fgColor.argb):X.style.fill.fgColor.hasOwnProperty("theme")?k=of(X.style.fill.fgColor.theme,X.style.fill.fgColor.tint):X.style.fill.fgColor.indexed?k=nf[X.style.fill.fgColor.indexed]||"#C7C9CC":k="#C7C9CC"),k&&(X.style.bgcolor=k);let e=null;if(X.style.font&&X.style.font.color&&(X.style.font.color.argb?e=af(X.style.font.color.argb):X.style.font.color.hasOwnProperty("theme")?e=of(X.style.font.color.theme,X.style.font.color.tint):X.style.font.color.indexed?e=nf[X.style.font.color.indexed]||"#000000":e="#000000"),e&&(X.style.color=e),X.style.alignment&&(X.style.alignment.horizontal&&(X.style.align=X.style.alignment.horizontal),X.style.alignment.vertical&&(X.style.valign=X.style.alignment.vertical)),X.style.alignment&&X.style.alignment.wrapText&&(X.style.textwrap=!0),X.style.border){let x={};Object.keys(X.style.border).forEach(_=>{let u=X.style.border[_],m="#000000";typeof u.color=="string"?m=u.color:u.color&&(u.color.argb?m=af(u.color.argb):u.color.hasOwnProperty("theme")?m=of(u.color.theme,u.color.tint):u.color.indexed&&(m=nf[u.color.indexed])),x[_]=[u.style||"thin",m]}),X.style.border2={...X.style.border},X.style.border=x}return X.style}function b1(X,k){let e=[];return X.eachSheet(x=>{let _={name:x.name,styles:[],rows:{},cols:{},merges:[],media:[]},u=[];for(let m in x._merges){_.merges.push(x._merges[m].shortRange);let g={};g.startAddress=x._merges[m].tl,g.endAddress=x._merges[m].br,g.YRange=x._merges[m].model.bottom-x._merges[m].model.top,g.XRange=x._merges[m].model.right-x._merges[m].model.left,u.push(g)}t1(x,_,k),(x._rows||[]).forEach((m,g)=>{_.rows[g]={cells:{}},m.height?_.rows[g].height=m.height+(k.heightOffset||0):_.rows[g].height=qg+(k.heightOffset||0),(m._cells||[]).forEach((b,w)=>{_.rows[g].cells[w]={};let f=ga.find(u,function(y){return y.startAddress==b._address});f&&b.master.address!=f.startAddress||(f&&(_.rows[g].cells[w].merge=[f.YRange,f.XRange]),_.rows[g].cells[w].text=r1(b),_.styles.push(n1(b)),_.rows[g].cells[w].style=_.styles.length-1)})}),_._media&&(_.media=_._media),_.rows.len=Math.max(Object.keys(_.rows).length,100),e.push(_)}),{workbookData:e,workbookSource:X,medias:X.media||[]}}let Uo=[];function g1(X,k,e,x){e&&e._media.length&&e._media.forEach(_=>{let{imageId:u,range:m,type:g}=_;if(g==="image"){let b=i1(e,m,x);a1(X,u,k[u],b)}})}let Wo=60,$o=25,sf=80,ff=24,Jn=window.devicePixelRatio;function i1(X,k,e){var r,t,i,n,o,p,O,C,N,L,F,M,D,R;let{tl:x={},br:_={}}=k,{nativeCol:u,nativeColOff:m,nativeRow:g,nativeRowOff:b}=x,w=Wo,f=$o;for(let P=0;P{let u=0,m=0,g=_.width,b=_.height,w=x.x,f=x.y,y=x.width,h=x.height,l=y/g,d=h/b;if(w{})}function o1(X,k){return new Promise((e,x)=>{if(Uo[X])return e(Uo[X]);const{buffer:_,extension:u}=k.buffer;let m=new Blob([_],{type:"image/"+u}),g=URL.createObjectURL(m),b=new Image;b.src=g,b.onload=function(){e(b),Uo[X]=b},b.onerror=function(w){x(w)}})}function w1(X){if(X){let k=X.querySelectorAll("input");for(let e of k)e&&!e.readOnly&&(e.readOnly=!0);document.activeElement&&document.activeElement.blur()}}export{xg as S,g1 as a,m1 as b,_1 as c,v1 as g,ga as l,w1 as r,b1 as t}; diff --git a/examples/dist/assets/index-11290fb6.js b/examples/dist/assets/index-11290fb6.js new file mode 100644 index 0000000..0832308 --- /dev/null +++ b/examples/dist/assets/index-11290fb6.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 A=O[1];P(T,O),bt(T)?T.every(F=>F.length<=1)&&A():T.length<=1&&A()},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 A=w[x];A&&fo(t,A)&&A.el._leaveCb&&A.el._leaveCb(),P(O,[T])},enter(T){let O=u,A=s,F=d;if(!n.isMounted)if(a)O=y||u,A=b||s,F=C||d;else return;let N=!1;const M=T._enterCb=L=>{N||(N=!0,L?P(F,[T]):P(A,[T]),k.delayedLeave&&k.delayedLeave(),T._enterCb=void 0)};O?S(O,[T,M]):M()},leave(T,O){const A=String(t.key);if(T._enterCb&&T._enterCb(!0),n.isUnmounting)return O();P(c,[T]);let F=!1;const N=T._leaveCb=M=>{F||(F=!0,O(),M?P(p,[T]):P(h,[T]),T._leaveCb=void 0,w[A]===t&&delete w[A])};w[A]=t,f?S(f,[T,N]):N()},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:A,inheritAttrs:F,components:N,directives:M,filters:L}=e;if(s&&y5(s,r,null,t.appContext.config.unwrapInjectedRef),i)for(const E in i){const I=i[E];St(I)&&(r[E]=I.bind(n))}if(a){const E=a.call(n,n);Gt(E)&&(t.data=xt(E))}if(Gv=!0,o)for(const E in o){const I=o[E],R=St(I)?I.bind(n,n):St(I.get)?I.get.bind(n,n):br,K=!St(I)&&St(I.set)?I.set.bind(n):br,V=B({get:R,set:K});Object.defineProperty(r,E,{enumerable:!0,configurable:!0,get:()=>V.value,set:q=>V.value=q})}if(l)for(const E in l)BS(l[E],r,n,E);if(u){const E=St(u)?u.call(n):u;Reflect.ownKeys(E).forEach(I=>{at(I,E[I])})}d&&c1(d,t,"c");function _(E,I){bt(I)?I.forEach(R=>E(R.bind(n))):I&&E(I.bind(n))}if(_(ld,c),_(Ge,f),_(ag,h),_(wn,p),_(od,g),_($S,y),_(f5,T),_(d5,S),_(c5,k),_(ut,C),_(_n,w),_(s5,O),bt(A))if(A.length){const E=t.exposed||(t.exposed={});A.forEach(I=>{Object.defineProperty(E,I,{get:()=>n[I],set:R=>n[I]=R})})}else t.exposed||(t.exposed={});P&&t.render===br&&(t.render=P),F!=null&&(t.inheritAttrs=F),N&&(t.components=N),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=(U,H,Z,re=null,ae=null,se=null,me=!1,ue=null,oe=!!H.dynamicChildren)=>{if(U===H)return;U&&!fo(U,H)&&(re=X(U),q(U,ae,se,!0),U=null),H.patchFlag===-2&&(oe=!1,H.dynamicChildren=null);const{type:te,ref:de,shapeFlag:ve}=H;switch(te){case Wa:y(U,H,Z,re);break;case qn:b(U,H,Z,re);break;case Pf:U==null&&C(H,Z,re,me);break;case et:N(U,H,Z,re,ae,se,me,ue,oe);break;default:ve&1?P(U,H,Z,re,ae,se,me,ue,oe):ve&6?M(U,H,Z,re,ae,se,me,ue,oe):(ve&64||ve&128)&&te.process(U,H,Z,re,ae,se,me,ue,oe,ee)}de!=null&&ae&&Qv(de,U&&U.ref,se,H||U,!H)},y=(U,H,Z,re)=>{if(U==null)r(H.el=l(H.children),Z,re);else{const ae=H.el=U.el;H.children!==U.children&&s(ae,H.children)}},b=(U,H,Z,re)=>{U==null?r(H.el=u(H.children||""),Z,re):H.el=U.el},C=(U,H,Z,re)=>{[U.el,U.anchor]=p(U.children,H,Z,re,U.el,U.anchor)},x=({el:U,anchor:H},Z,re)=>{let ae;for(;U&&U!==H;)ae=f(U),r(U,Z,re),U=ae;r(H,Z,re)},w=({el:U,anchor:H})=>{let Z;for(;U&&U!==H;)Z=f(U),a(U),U=Z;a(H)},P=(U,H,Z,re,ae,se,me,ue,oe)=>{me=me||H.type==="svg",U==null?S(H,Z,re,ae,se,me,ue,oe):O(U,H,ae,se,me,ue,oe)},S=(U,H,Z,re,ae,se,me,ue)=>{let oe,te;const{type:de,props:ve,shapeFlag:be,transition:Pe,dirs:Ae}=U;if(oe=U.el=i(U.type,se,ve&&ve.is,ve),be&8?d(oe,U.children):be&16&&T(U.children,oe,null,re,ae,se&&de!=="foreignObject",me,ue),Ae&&Za(U,null,re,"created"),ve){for(const we in ve)we!=="value"&&!Ss(we)&&o(oe,we,null,ve[we],se,U.children,re,ae,W);"value"in ve&&o(oe,"value",null,ve.value),(te=ve.onVnodeBeforeMount)&&$r(te,re,U)}k(oe,U,U.scopeId,me,re),Ae&&Za(U,null,re,"beforeMount");const De=(!ae||ae&&!ae.pendingBranch)&&Pe&&!Pe.persisted;De&&Pe.beforeEnter(oe),r(oe,H,Z),((te=ve&&ve.onVnodeMounted)||De||Ae)&&Rn(()=>{te&&$r(te,re,U),De&&Pe.enter(oe),Ae&&Za(U,null,re,"mounted")},ae)},k=(U,H,Z,re,ae)=>{if(Z&&h(U,Z),re)for(let se=0;se{for(let te=oe;te{const ue=H.el=U.el;let{patchFlag:oe,dynamicChildren:te,dirs:de}=H;oe|=U.patchFlag&16;const ve=U.props||Ht,be=H.props||Ht;let Pe;Z&&Ja(Z,!1),(Pe=be.onVnodeBeforeUpdate)&&$r(Pe,Z,H,U),de&&Za(H,U,Z,"beforeUpdate"),Z&&Ja(Z,!0);const Ae=ae&&H.type!=="foreignObject";if(te?A(U.dynamicChildren,te,ue,Z,re,Ae,se):me||I(U,H,ue,null,Z,re,Ae,se,!1),oe>0){if(oe&16)F(ue,H,ve,be,Z,re,ae);else if(oe&2&&ve.class!==be.class&&o(ue,"class",null,be.class,ae),oe&4&&o(ue,"style",ve.style,be.style,ae),oe&8){const De=H.dynamicProps;for(let we=0;we{Pe&&$r(Pe,Z,H,U),de&&Za(H,U,Z,"updated")},re)},A=(U,H,Z,re,ae,se,me)=>{for(let ue=0;ue{if(Z!==re){if(Z!==Ht)for(const ue in Z)!Ss(ue)&&!(ue in re)&&o(U,ue,Z[ue],null,me,H.children,ae,se,W);for(const ue in re){if(Ss(ue))continue;const oe=re[ue],te=Z[ue];oe!==te&&ue!=="value"&&o(U,ue,te,oe,me,H.children,ae,se,W)}"value"in re&&o(U,"value",Z.value,re.value)}},N=(U,H,Z,re,ae,se,me,ue,oe)=>{const te=H.el=U?U.el:l(""),de=H.anchor=U?U.anchor:l("");let{patchFlag:ve,dynamicChildren:be,slotScopeIds:Pe}=H;Pe&&(ue=ue?ue.concat(Pe):Pe),U==null?(r(te,Z,re),r(de,Z,re),T(H.children,Z,de,ae,se,me,ue,oe)):ve>0&&ve&64&&be&&U.dynamicChildren?(A(U.dynamicChildren,be,Z,ae,se,me,ue),(H.key!=null||ae&&H===ae.subTree)&&ug(U,H,!0)):I(U,H,Z,de,ae,se,me,ue,oe)},M=(U,H,Z,re,ae,se,me,ue,oe)=>{H.slotScopeIds=ue,U==null?H.shapeFlag&512?ae.ctx.activate(H,Z,re,me,oe):L(H,Z,re,ae,se,me,oe):D(U,H,oe)},L=(U,H,Z,re,ae,se,me)=>{const ue=U.component=K5(U,re,ae);if(ad(U)&&(ue.ctx.renderer=ee),H5(ue),ue.asyncDep){if(ae&&ae.registerDep(ue,_),!U.el){const oe=ue.subTree=v(qn);b(null,oe,H,Z)}return}_(ue,U,H,Z,ae,se,me)},D=(U,H,Z)=>{const re=H.component=U.component;if(n5(U,H,Z))if(re.asyncDep&&!re.asyncResolved){E(re,H,Z);return}else re.next=H,XT(re.update),re.update();else H.el=U.el,re.vnode=H},_=(U,H,Z,re,ae,se,me)=>{const ue=()=>{if(U.isMounted){let{next:de,bu:ve,u:be,parent:Pe,vnode:Ae}=U,De=de,we;Ja(U,!1),de?(de.el=Ae.el,E(U,de,me)):de=Ae,ve&&bf(ve),(we=de.props&&de.props.onVnodeBeforeUpdate)&&$r(we,Pe,de,Ae),Ja(U,!0);const he=Cf(U),Oe=U.subTree;U.subTree=he,g(Oe,he,c(Oe.el),X(Oe),U,ae,se),de.el=he.el,De===null&&r5(U,he.el),be&&Rn(be,ae),(we=de.props&&de.props.onVnodeUpdated)&&Rn(()=>$r(we,Pe,de,Ae),ae)}else{let de;const{el:ve,props:be}=H,{bm:Pe,m:Ae,parent:De}=U,we=Pl(H);if(Ja(U,!1),Pe&&bf(Pe),!we&&(de=be&&be.onVnodeBeforeMount)&&$r(de,De,H),Ja(U,!0),ve&&ne){const he=()=>{U.subTree=Cf(U),ne(ve,U.subTree,U,ae,null)};we?H.type.__asyncLoader().then(()=>!U.isUnmounted&&he()):he()}else{const he=U.subTree=Cf(U);g(null,he,Z,re,U,ae,se),H.el=he.el}if(Ae&&Rn(Ae,ae),!we&&(de=be&&be.onVnodeMounted)){const he=H;Rn(()=>$r(de,De,he),ae)}(H.shapeFlag&256||De&&Pl(De.vnode)&&De.vnode.shapeFlag&256)&&U.a&&Rn(U.a,ae),U.isMounted=!0,H=Z=re=null}},oe=U.effect=new Gp(ue,()=>tg(te),U.scope),te=U.update=()=>oe.run();te.id=U.uid,Ja(U,!0),te()},E=(U,H,Z)=>{H.component=U;const re=U.vnode.props;U.vnode=H,U.next=null,S5(U,H.props,re,Z),O5(U,H.children,Z),Bi(),i1(),ji()},I=(U,H,Z,re,ae,se,me,ue,oe=!1)=>{const te=U&&U.children,de=U?U.shapeFlag:0,ve=H.children,{patchFlag:be,shapeFlag:Pe}=H;if(be>0){if(be&128){K(te,ve,Z,re,ae,se,me,ue,oe);return}else if(be&256){R(te,ve,Z,re,ae,se,me,ue,oe);return}}Pe&8?(de&16&&W(te,ae,se),ve!==te&&d(Z,ve)):de&16?Pe&16?K(te,ve,Z,re,ae,se,me,ue,oe):W(te,ae,se,!0):(de&8&&d(Z,""),Pe&16&&T(ve,Z,re,ae,se,me,ue,oe))},R=(U,H,Z,re,ae,se,me,ue,oe)=>{U=U||ci,H=H||ci;const te=U.length,de=H.length,ve=Math.min(te,de);let be;for(be=0;bede?W(U,ae,se,!0,!1,ve):T(H,Z,re,ae,se,me,ue,oe,ve)},K=(U,H,Z,re,ae,se,me,ue,oe)=>{let te=0;const de=H.length;let ve=U.length-1,be=de-1;for(;te<=ve&&te<=be;){const Pe=U[te],Ae=H[te]=oe?Ea(H[te]):Lr(H[te]);if(fo(Pe,Ae))g(Pe,Ae,Z,null,ae,se,me,ue,oe);else break;te++}for(;te<=ve&&te<=be;){const Pe=U[ve],Ae=H[be]=oe?Ea(H[be]):Lr(H[be]);if(fo(Pe,Ae))g(Pe,Ae,Z,null,ae,se,me,ue,oe);else break;ve--,be--}if(te>ve){if(te<=be){const Pe=be+1,Ae=Pebe)for(;te<=ve;)q(U[te],ae,se,!0),te++;else{const Pe=te,Ae=te,De=new Map;for(te=Ae;te<=be;te++){const ge=H[te]=oe?Ea(H[te]):Lr(H[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){q(ge,ae,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,H[we])){ke=we;break}ke===void 0?q(ge,ae,se,!0):(fe[ke-Ae]=te+1,ke>=Ce?Ce=ke:Ee=!0,g(ge,H[ke],Z,null,ae,se,me,ue,oe),he++)}const pe=Ee?_5(fe):ci;for(we=pe.length-1,te=Oe-1;te>=0;te--){const ge=Ae+te,ke=H[ge],Ie=ge+1{const{el:se,type:me,transition:ue,children:oe,shapeFlag:te}=U;if(te&6){V(U.component.subTree,H,Z,re);return}if(te&128){U.suspense.move(H,Z,re);return}if(te&64){me.move(U,H,Z,ee);return}if(me===et){r(se,H,Z);for(let ve=0;veue.enter(se),ae);else{const{leave:ve,delayLeave:be,afterLeave:Pe}=ue,Ae=()=>r(se,H,Z),De=()=>{ve(se,()=>{Ae(),Pe&&Pe()})};be?be(se,Ae,De):De()}else r(se,H,Z)},q=(U,H,Z,re=!1,ae=!1)=>{const{type:se,props:me,ref:ue,children:oe,dynamicChildren:te,shapeFlag:de,patchFlag:ve,dirs:be}=U;if(ue!=null&&Qv(ue,null,Z,U,!0),de&256){H.ctx.deactivate(U);return}const Pe=de&1&&be,Ae=!Pl(U);let De;if(Ae&&(De=me&&me.onVnodeBeforeUnmount)&&$r(De,H,U),de&6)j(U.component,Z,re);else{if(de&128){U.suspense.unmount(Z,re);return}Pe&&Za(U,null,H,"beforeUnmount"),de&64?U.type.remove(U,H,Z,ae,ee,re):te&&(se!==et||ve>0&&ve&64)?W(te,H,Z,!1,!0):(se===et&&ve&384||!ae&&de&16)&&W(oe,H,Z),re&&G(U)}(Ae&&(De=me&&me.onVnodeUnmounted)||Pe)&&Rn(()=>{De&&$r(De,H,U),Pe&&Za(U,null,H,"unmounted")},Z)},G=U=>{const{type:H,el:Z,anchor:re,transition:ae}=U;if(H===et){z(Z,re);return}if(H===Pf){w(U);return}const se=()=>{a(Z),ae&&!ae.persisted&&ae.afterLeave&&ae.afterLeave()};if(U.shapeFlag&1&&ae&&!ae.persisted){const{leave:me,delayLeave:ue}=ae,oe=()=>me(Z,se);ue?ue(U.el,se,oe):oe()}else se()},z=(U,H)=>{let Z;for(;U!==H;)Z=f(U),a(U),U=Z;a(H)},j=(U,H,Z)=>{const{bum:re,scope:ae,update:se,subTree:me,um:ue}=U;re&&bf(re),ae.stop(),se&&(se.active=!1,q(me,U,H,Z)),ue&&Rn(ue,H),Rn(()=>{U.isUnmounted=!0},H),H&&H.pendingBranch&&!H.isUnmounted&&U.asyncDep&&!U.asyncResolved&&U.suspenseId===H.pendingId&&(H.deps--,H.deps===0&&H.resolve())},W=(U,H,Z,re=!1,ae=!1,se=0)=>{for(let me=se;meU.shapeFlag&6?X(U.component.subTree):U.shapeFlag&128?U.suspense.next():f(U.anchor||U.el),J=(U,H,Z)=>{U==null?H._vnode&&q(H._vnode,null,null,!0):g(H._vnode||null,U,H,null,null,null,Z),i1(),TS(),H._vnode=U},ee={p:g,um:q,m:V,r:G,mt:L,mc:T,pc:I,pbc:A,n:X,o:t};let le,ne;return e&&([le,ne]=e(ee)),{render:J,hydrate:le,createApp:M5(J,le)}}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=(A,F)=>{C&16&&d(x,A,F,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,A=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,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 F=e.target=Zv(e.props,p);F&&zu(e,F,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 B=(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 N in t)N in e3||(e[N]=t[N]);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=(N,M,L)=>{Oa(N,M?d:l),Oa(N,M?s:i),L&&L()},A=(N,M)=>{N._isLeaving=!1,Oa(N,c),Oa(N,h),Oa(N,f),M&&M()},F=N=>(M,L)=>{const D=N?k:C,_=()=>O(M,N,L);eo(D,[M,_]),T1(()=>{Oa(M,N?u:o),na(M,N?d:l),O1(D)||M1(M,r,g,_)})};return pn(e,{onBeforeEnter(N){eo(b,[N]),na(N,o),na(N,i)},onBeforeAppear(N){eo(S,[N]),na(N,u),na(N,s)},onEnter:F(!1),onAppear:F(!0),onLeave(N,M){N._isLeaving=!0;const L=()=>A(N,M);na(N,c),r3(),na(N,f),T1(()=>{N._isLeaving&&(Oa(N,c),na(N,h),O1(w)||M1(N,r,y,L))}),eo(w,[N,L])},onEnterCancelled(N){O(N,!1),eo(x,[N])},onAppearCancelled(N){O(N,!0),eo(T,[N])},onLeaveCancelled(N){A(N),eo(P,[N])}})}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){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===null)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 $(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=ie({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=ie({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=B(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=B(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=B(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 Y=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={},$(S,"".concat(d,"-normal"),h===z3),$(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:Y.any,description:Y.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=ie({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=ie({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=B(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,A){return(A.substr(0,5)==="data-"||A.substr(0,5)==="aria-"||A==="role")&&(O[A]=r[A]),O},{}),T=v("div",m({class:ce(S,w,$({},"".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=ie({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=B(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,A=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(N){var M;d(N),(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(N){typeof k>"u"||(N?(i.set(k,N),P(N,A)):i.delete(k))}},null):v(dE,A,{default:function(){return[typeof O=="function"?O({prefixCls:h}):O]}})}),b=(f={},$(f,h,1),$(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=ie({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;--R){var K=this.tryEntries[R],V=K.completion;if(K.tryLoc==="root")return I("end");if(K.tryLoc<=this.prev){var q=o.call(K,"catchLoc"),G=o.call(K,"finallyLoc");if(q&&G){if(this.prev=0;--I){var R=this.tryEntries[I];if(R.tryLoc<=this.prev&&o.call(R,"finallyLoc")&&this.prev=0;--E){var I=this.tryEntries[E];if(I.finallyLoc===_)return this.complete(I.completion,I.afterLoc),F(I),p}},catch:function(_){for(var E=this.tryEntries.length-1;E>=0;--E){var I=this.tryEntries[E];if(I.tryLoc===_){var R=I.completion;if(R.type==="throw"){var K=R.arg;F(I)}return K}}throw new Error("illegal catch attempt")},delegateYield:function(_,E,I){return this.delegate={iterator:M(_),resultName:E,nextLoc:I},this.method==="next"&&(this.arg=void 0),p}},r}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),$({},"".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:B(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=ie({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=B(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=B(function(){return n.getPrefixCls(t,e.prefixCls)}),a=B(function(){var C;return(C=e.direction)!==null&&C!==void 0?C:n.direction}),o=B(function(){return n.getPrefixCls()}),i=B(function(){return n.autoInsertSpaceInButton}),l=B(function(){return n.renderEmpty}),u=B(function(){return n.space}),s=B(function(){return n.pageHeader}),d=B(function(){return n.form}),c=B(function(){return e.getTargetContainer||n.getTargetContainer}),f=B(function(){return e.getPopupContainer||n.getPopupContainer}),h=B(function(){var C;return(C=e.dropdownMatchSelectWidth)!==null&&C!==void 0?C:n.dropdownMatchSelectWidth}),p=B(function(){return(e.virtual===void 0?n.virtual!==!1:e.virtual!==!1)&&h.value!==!1}),g=B(function(){return e.size||n.componentSize}),y=B(function(){var C;return e.autocomplete||((C=n.input)===null||C===void 0?void 0:C.autocomplete)}),b=B(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(F){var N=Pb.exec(F.toString());if(N){var M=document.getElementById(N[1]);if(M){var L=Sb(M,O);LF.top?N:F});return A.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(),A=Kg(O,!0),F=Pb.exec(S);if(F){var N=document.getElementById(F[1]);if(N){var M=Sb(N,O),L=A+M;L-=T!==void 0?T:k||0,h.animating=!0,Hg(L,{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,A=ce("".concat(O,"-ink-ball"),{visible:p.value}),F=ce(e.wrapperClass,"".concat(O,"-wrapper"),$({},"".concat(O,"-rtl"),d.value==="rtl")),N=ce(O,$({},"".concat(O,"-fixed"),!k&&!T)),M=m({maxHeight:S?"calc(100vh - ".concat(S,"px)"):"100vh"},e.wrapperStyle),L=v("div",{class:F,style:M,ref:f},[v("div",{class:N},[v("div",{class:"".concat(O,"-ink")},[v("span",{class:A,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[L]}}):L}}});var h_=function(){return{prefixCls:String,href:String,title:Y.any,target:String}};const S4=ie({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"),$({},"".concat(b,"-link-active"),x)),P=ce("".concat(b,"-link-title"),$({},"".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_=ie({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=B(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&&(G=v("div",{class:"".concat(L,"-content")},[G]));var z=ce(L,a.class,u.value),j=p.value||!e.visible,W=j?Ya(T.value.name,T.value):{};return v(Nn,m(m({ref:l},W),{},{onBeforeEnter:O}),{default:function(){return!D||e.visible?gn(v(L$,{target:P(),key:"popup",ref:i,monitorWindowResize:!0,disabled:A.value,align:M,onAlign:k},{default:function(){return v("div",m(m({class:z,onMouseenter:_,onMouseleave:E,onMousedown:_1(K,["capture"])},$({},nn?"onTouchstartPassive":"onTouchstart",_1(R,["capture"]))),{},{style:q}),[G])}}),[[Tr,p.value]]):null}})}}}),j$=ie({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:B(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:B(function(){return!1}),inTriggerContext:!1});return{shouldRender:B(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const Th=ie({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:Y.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=ie({compatConfig:{MODE:3},name:"Trigger",mixins:[Vo],inheritAttrs:!1,props:{action:Y.oneOfType([Y.string,Y.arrayOf(Y.string)]).def([]),showAction:Y.any.def([]),hideAction:Y.any.def([]),getPopupClassNameFromAlign:Y.any.def(W$),onPopupVisibleChange:Function,afterPopupVisibleChange:Y.func.def(lC),popup:Y.any,popupStyle:{type:Object,default:void 0},prefixCls:Y.string.def("rc-trigger-popup"),popupClassName:Y.string.def(""),popupPlacement:String,builtinPlacements:Y.object,popupTransitionName:String,popupAnimation:Y.any,mouseEnterDelay:Y.number.def(0),mouseLeaveDelay:Y.number.def(.1),zIndex:Number,focusDelay:Y.number.def(0),blurDelay:Y.number.def(.15),getPopupContainer:Function,getDocument:Y.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:Y.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=B(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$=ie({name:"SelectTrigger",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:Y.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:Y.oneOfType([Number,Boolean]).def(!0),popupElement:Y.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function},setup:function(e,n){var r=n.slots,a=n.attrs,o=n.expose,i=B(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,A=c.getPopupContainer,F=c.getTriggerDOMNode,N=c.onPopupVisibleChange,M=c.onPopupMouseEnter,L="".concat(p,"-dropdown"),D=g;k&&(D=k({menuNode:g,props:e}));var _=T?"".concat(L,"-").concat(T):O,E=m({minWidth:"".concat(S,"px")},b);return typeof P=="number"?E.width="".concat(P,"px"):P&&(E.width="".concat(S,"px")),v(Ui,m(m({},e),{},{showAction:N?["click"]:[],hideAction:N?["click"]:[],popupPlacement:w||(x==="rtl"?"bottomRight":"bottomLeft"),builtinPlacements:i.value,prefixCls:L,popupTransitionName:_,popupAlign:h,popupVisible:f,getPopupContainer:A,popupClassName:ce(y,$({},"".concat(L,"-empty"),d)),popupStyle:E,getTriggerDOMNode:F,onPopupVisibleChange:N}),{default:r.default,popup:function(){return v("div",{ref:l,onMouseenter:M},[D])}})}}});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:Y.any,customizeIconProps:Y.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:Y.any,prefixCls:String,id:String,inputElement:Y.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:Y.oneOfType([Y.number,Y.string]),attrs:Y.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=ie({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,A=e.attrs,F=u||gn(v("input",null,null),[[Yi]]),N=F.props||{},M=N.onKeydown,L=N.onInput,D=N.onFocus,_=N.onBlur,E=N.onMousedown,I=N.onCompositionstart,R=N.onCompositionend,K=N.style;return F=Ct(F,pt(m(m(m({type:"search"},N),{},{id:l,ref:O,disabled:s,tabindex:d,autocomplete:f||"off",autofocus:c,class:ce("".concat(i,"-selection-search-input"),(a=F)===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},A),{},{value:h?g:"",readonly:!h,unselectable:h?null:"on",style:m(m({},K),{},{opacity:h?null:0}),onKeydown:function(q){y(q),M&&M(q)},onMousedown:function(q){b(q),E&&E(q)},onInput:function(q){C(q),L&&L(q)},onCompositionstart:function(q){w(q),I&&I(q)},onCompositionend:function(q){P(q),R&&R(q)},onPaste:x,onFocus:function(){clearTimeout(n),D&&D(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 q=arguments.length,G=new Array(q),z=0;z