@flyfish-group/file-viewer 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -30
- package/dist/components/3MFLoader.js +1 -0
- package/dist/components/AMFLoader.js +1 -0
- package/dist/components/ArchiveViewer.js +1 -0
- package/dist/components/AudioViewer.js +1 -0
- package/dist/components/CadViewer.js +1 -1
- package/dist/components/CodeViewer.js +1 -1
- package/dist/components/ColladaLoader.js +1 -0
- package/dist/components/DrawingViewer.js +1 -0
- package/dist/components/EdaViewer.js +1 -0
- package/dist/components/EmailViewer.js +1 -0
- package/dist/components/EpubViewer.js +1 -0
- package/dist/components/FBXLoader.js +1 -0
- package/dist/components/GLTFLoader.js +1 -0
- package/dist/components/ImageViewer.js +1 -1
- package/dist/components/KMZLoader.js +1 -0
- package/dist/components/MarkdownViewer.js +1 -1
- package/dist/components/ModelViewer.js +26885 -0
- package/dist/components/OBJLoader.js +1 -0
- package/dist/components/OfdViewer.js +1 -1
- package/dist/components/PCDLoader.js +1 -0
- package/dist/components/PLYLoader.js +1 -0
- package/dist/components/PdfView.js +30722 -1
- package/dist/components/PptxRender.js +1 -1
- package/dist/components/STLLoader.js +1 -0
- package/dist/components/TDSLoader.js +1 -0
- package/dist/components/USDLoader.js +1 -0
- package/dist/components/UmdViewer.js +2 -0
- package/dist/components/VRMLLoader.js +1 -0
- package/dist/components/VTKLoader.js +1 -0
- package/dist/components/XYZLoader.js +1 -0
- package/dist/components/XlsxTable.js +1 -1
- package/dist/components/___vite-browser-external_commonjs-proxy.js +1 -0
- package/dist/components/_commonjs-dynamic-modules.js +1 -0
- package/dist/components/_commonjsHelpers.js +1 -1
- package/dist/components/ar-SA-G6X2FPQ2.js +1 -0
- package/dist/components/arc.js +1 -0
- package/dist/components/architecture-7EHR7CIX.js +1 -0
- package/dist/components/architectureDiagram-3BPJPVTR.js +1 -0
- package/dist/components/az-AZ-76LH7QW2.js +1 -0
- package/dist/components/bg-BG-XCXSNQG7.js +1 -0
- package/dist/components/blockDiagram-GPEHLZMM.js +1 -0
- package/dist/components/bn-BD-2XOGV67Q.js +1 -0
- package/dist/components/c4Diagram-AAUBKEIU.js +1 -0
- package/dist/components/ca-ES-6MX7JW3Y.js +1 -0
- package/dist/components/cfb.js +1 -0
- package/dist/components/channel.js +1 -0
- package/dist/components/chunk-2J33WTMH.js +1 -0
- package/dist/components/chunk-4BX2VUAB.js +1 -0
- package/dist/components/chunk-55IACEB6.js +1 -0
- package/dist/components/chunk-727SXJPM.js +1 -0
- package/dist/components/chunk-AQP2D5EJ.js +1 -0
- package/dist/components/chunk-EIO257PC.js +1722 -0
- package/dist/components/chunk-FMBD7UC4.js +1 -0
- package/dist/components/chunk-ND2GUHAM.js +1 -0
- package/dist/components/chunk-QZHKN3VN.js +1 -0
- package/dist/components/classDiagram-4FO5ZUOK.js +1 -0
- package/dist/components/classDiagram-v2-Q7XG4LA2.js +1 -0
- package/dist/components/cose-bilkent-S5V4N54A.js +1 -0
- package/dist/components/cs-CZ-2BRQDIVT.js +1 -0
- package/dist/components/cytoscape.esm.js +1 -0
- package/dist/components/da-DK-5WZEPLOC.js +1 -0
- package/dist/components/dagre-BM42HDAG.js +1 -0
- package/dist/components/de-DE-XR44H4JA.js +1 -0
- package/dist/components/defaultLocale.js +1 -0
- package/dist/components/diagram-2AECGRRQ.js +1 -0
- package/dist/components/diagram-5GNKFQAL.js +1 -0
- package/dist/components/diagram-KO2AKTUF.js +1 -0
- package/dist/components/diagram-LMA3HP47.js +1 -0
- package/dist/components/diagram-OG6HWLK6.js +1 -0
- package/dist/components/directory-open-01563666.js +1 -0
- package/dist/components/directory-open-4ed118d0.js +1 -0
- package/dist/components/docx-preview.js +2 -2
- package/dist/components/el-GR-BZB4AONW.js +1 -0
- package/dist/components/en-B4ZKOASM.js +1 -0
- package/dist/components/erDiagram-TEJ5UH35.js +1 -0
- package/dist/components/es-ES-U4NZUMDT.js +1 -0
- package/dist/components/eu-ES-A7QVB2H4.js +1 -0
- package/dist/components/eventmodeling-FCH6USID.js +1 -0
- package/dist/components/fa-IR-HGAKTJCU.js +1 -0
- package/dist/components/fflate.module.js +1 -0
- package/dist/components/fi-FI-Z5N7JZ37.js +1 -0
- package/dist/components/file-open-002ab408.js +1 -0
- package/dist/components/file-open-7c801643.js +1 -0
- package/dist/components/file-save-3189631c.js +1 -0
- package/dist/components/file-save-745eba88.js +1 -0
- package/dist/components/flowDiagram-I6XJVG4X.js +1 -0
- package/dist/components/fr-FR-RHASNOE6.js +1 -0
- package/dist/components/ganttDiagram-6RSMTGT7.js +1 -0
- package/dist/components/gitGraph-WXDBUCRP.js +1 -0
- package/dist/components/gitGraphDiagram-PVQCEYII.js +1 -0
- package/dist/components/gl-ES-HMX3MZ6V.js +1 -0
- package/dist/components/graph.js +1 -0
- package/dist/components/he-IL-6SHJWFNN.js +1 -0
- package/dist/components/hi-IN-IWLTKZ5I.js +1 -0
- package/dist/components/hu-HU-A5ZG7DT2.js +1 -0
- package/dist/components/id-ID-SAP4L64H.js +1 -0
- package/dist/components/image-GAAHSSAO.js +1 -0
- package/dist/components/image-blob-reduce.esm.js +2 -0
- package/dist/components/index.js +23989 -1
- package/dist/components/index10.js +1 -0
- package/dist/components/index11.js +1 -0
- package/dist/components/index12.js +1 -0
- package/dist/components/index13.js +1 -0
- package/dist/components/index14.js +1 -0
- package/dist/components/index15.js +1 -0
- package/dist/components/index16.js +1 -0
- package/dist/components/index17.js +1 -0
- package/dist/components/index18.js +1 -0
- package/dist/components/index19.js +1 -0
- package/dist/components/index2.js +1 -1
- package/dist/components/index20.js +1 -0
- package/dist/components/index21.js +2 -0
- package/dist/components/index22.js +1 -0
- package/dist/components/index23.js +1 -0
- package/dist/components/index24.js +1 -0
- package/dist/components/index3.js +1 -0
- package/dist/components/index4.js +1 -0
- package/dist/components/index5.js +1 -0
- package/dist/components/index6.js +1 -0
- package/dist/components/index7.js +1 -0
- package/dist/components/index8.js +1 -0
- package/dist/components/index9.js +1 -0
- package/dist/components/info-J43DQDTF.js +1 -0
- package/dist/components/infoDiagram-5YYISTIA.js +1 -0
- package/dist/components/init.js +1 -0
- package/dist/components/ishikawaDiagram-YF4QCWOH.js +1 -0
- package/dist/components/it-IT-JPQ66NNP.js +1 -0
- package/dist/components/ja-JP-DBVTYXUO.js +1 -0
- package/dist/components/journeyDiagram-JHISSGLW.js +1 -0
- package/dist/components/jszip.min.js +1 -1
- package/dist/components/kaa-6HZHGXH3.js +1 -0
- package/dist/components/kab-KAB-ZGHBKWFO.js +1 -0
- package/dist/components/kanban-definition-UN3LZRKU.js +1 -0
- package/dist/components/katex.js +1 -0
- package/dist/components/kk-KZ-P5N5QNE5.js +1 -0
- package/dist/components/km-KH-HSX4SM5Z.js +1 -0
- package/dist/components/ko-KR-MTYHY66A.js +1 -0
- package/dist/components/ku-TR-6OUDTVRD.js +1 -0
- package/dist/components/layout.js +1 -0
- package/dist/components/libarchive.js +6 -0
- package/dist/components/linear.js +1 -0
- package/dist/components/lt-LT-XHIRWOB4.js +1 -0
- package/dist/components/lv-LV-5QDEKY6T.js +1 -0
- package/dist/components/mermaid-parser.core.js +14 -0
- package/dist/components/mindmap-definition-RKZ34NQL.js +1 -0
- package/dist/components/mr-IN-CRQNXWMA.js +1 -0
- package/dist/components/my-MM-5M5IBNSE.js +1 -0
- package/dist/components/nb-NO-T6EIAALU.js +1 -0
- package/dist/components/nestedRender.js +1 -0
- package/dist/components/nl-NL-IS3SIHDZ.js +1 -0
- package/dist/components/nn-NO-6E72VCQL.js +1 -0
- package/dist/components/oc-FR-POXYY2M6.js +1 -0
- package/dist/components/ofd.js +1 -1
- package/dist/components/ordinal.js +1 -0
- package/dist/components/pa-IN-N4M65BXN.js +1 -0
- package/dist/components/packet-YPE3B663.js +1 -0
- package/dist/components/percentages-BXMCSKIN.js +1 -0
- package/dist/components/pica.js +1 -0
- package/dist/components/pie-LRSECV5Y.js +1 -0
- package/dist/components/pie.js +1 -0
- package/dist/components/pieDiagram-4H26LBE5.js +1 -0
- package/dist/components/pl-PL-T2D74RX3.js +1 -0
- package/dist/components/postal-mime.js +1 -0
- package/dist/components/pt-BR-5N22H2LF.js +1 -0
- package/dist/components/pt-PT-UZXXM6DQ.js +1 -0
- package/dist/components/quadrantDiagram-W4KKPZXB.js +1 -0
- package/dist/components/radar-GUYGQ44K.js +1 -0
- package/dist/components/requirementDiagram-4Y6WPE33.js +1 -0
- package/dist/components/ro-RO-JPDTUUEW.js +1 -0
- package/dist/components/rough.esm.js +1 -0
- package/dist/components/roundRect.js +1 -0
- package/dist/components/ru-RU-B4JR7IUQ.js +1 -0
- package/dist/components/sankeyDiagram-5OEKKPKP.js +1 -0
- package/dist/components/sequenceDiagram-3UESZ5HK.js +1 -0
- package/dist/components/si-LK-N5RQ5JYF.js +1 -0
- package/dist/components/sk-SK-C5VTKIMK.js +1 -0
- package/dist/components/sl-SI-NN7IZMDC.js +1 -0
- package/dist/components/stateDiagram-AJRCARHV.js +1 -0
- package/dist/components/stateDiagram-v2-BHNVJYJU.js +1 -0
- package/dist/components/subset-shared.chunk.js +1 -0
- package/dist/components/subset-worker.chunk.js +1 -0
- package/dist/components/sv-SE-XGPEYMSR.js +1 -0
- package/dist/components/ta-IN-2NMHFXQM.js +1 -0
- package/dist/components/th-TH-HPSO5L25.js +1 -0
- package/dist/components/time.js +1 -0
- package/dist/components/timeline-definition-PNZ67QCA.js +1 -0
- package/dist/components/tr-TR-DEFEU3FU.js +1 -0
- package/dist/components/transform.js +1 -0
- package/dist/components/treeView-BLDUP644.js +1 -0
- package/dist/components/treemap-LRROVOQU.js +1 -0
- package/dist/components/uk-UA-QMV73CPH.js +1 -0
- package/dist/components/vennDiagram-CIIHVFJN.js +1 -0
- package/dist/components/vi-VN-M7AON7JQ.js +1 -0
- package/dist/components/wardley-L42UT6IY.js +1 -0
- package/dist/components/wardleyDiagram-YWT4CUSO.js +1 -0
- package/dist/components/worker-bundle.js +1 -0
- package/dist/components/worker-ref.js +1 -1
- package/dist/components/xychartDiagram-2RQKCTM6.js +1 -0
- package/dist/components/zh-CN-LNUGB5OW.js +1 -0
- package/dist/components/zh-HK-E62DVLB3.js +1 -0
- package/dist/components/zh-TW-RAJ6MFWO.js +1 -0
- package/dist/index.d.ts +74 -3
- package/dist/index.mjs +1 -1
- package/dist/package/index.d.ts +10 -3
- package/dist/style.css +11 -11
- package/dist/worker/pptx.worker.js +1 -1
- package/package.json +17 -3
- package/dist/index.umd.js +0 -7
- package/dist/worker/pdf.worker.js +0 -1
- package/dist/worker/sheet.worker.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const bH=b;(function(n,o){const bd=b,p=n();while(!![]){try{const r=parseInt(bd(0x137))/0x1+parseInt(bd(0x109))/0x2*(parseInt(bd(0x158))/0x3)+-parseInt(bd(0x17b))/0x4*(-parseInt(bd(0x3b6))/0x5)+-parseInt(bd(0x313))/0x6*(parseInt(bd(0x303))/0x7)+parseInt(bd(0x403))/0x8*(parseInt(bd(0x305))/0x9)+-parseInt(bd(0x3f8))/0xa*(parseInt(bd(0x12d))/0xb)+-parseInt(bd(0x112))/0xc*(parseInt(bd(0x1ef))/0xd);if(r===o)break;else p['push'](p['shift']());}catch(s){p['push'](p['shift']());}}}(a,0x7df52));var ps=Object['defineProperty'],Cs=Object['defineProperties'],ys=Object['getOwnPropertyDescriptors'],Ft=Object['getOwnPropertySymbols'],si=Object['prototype']['hasOwnProperty'],oi=Object['prototype']['propertyIsEnumerable'],ii=(n,o,p)=>o in n?ps(n,o,{'enumerable':!0x0,'configurable':!0x0,'writable':!0x0,'value':p}):n[o]=p,M=(n,o)=>{for(var p in o||(o={}))si['call'](o,p)&&ii(n,p,o[p]);if(Ft){for(var p of Ft(o))oi['call'](o,p)&&ii(n,p,o[p]);}return n;},Y=(n,o)=>Cs(n,ys(o)),Kt=(n,o)=>{const bf=b;var p={};for(var s in n)si['call'](n,s)&&o['indexOf'](s)<0x0&&(p[s]=n[s]);if(n!=null&&Ft){for(var s of Ft(n))o['indexOf'](s)<0x0&&oi[bf(0x38e)](n,s)&&(p[s]=n[s]);}return p;},X=(n,o,p)=>new Promise((u,v)=>{const bg=b;var w=A=>{try{z(p['next'](A));}catch(B){v(B);}},x=A=>{try{z(p['throw'](A));}catch(B){v(B);}},z=A=>A[bg(0x26c)]?u(A['value']):Promise['resolve'](A['value'])['then'](w,x);z((p=p['apply'](n,o))['next']());});import{ref as c,onUnmounted as d,defineComponent as e,computed as f,watch as g,onMounted as i,onBeforeUnmount as j,nextTick as k}from'vue';import{r as l}from'./worker-ref.js';import{n as m}from'./index.js';const Os=p=>{const bh=b,u=c(!0x0),v=p(),w={'emit':(B,C)=>{u['value']=!0x0,v==null||v['postMessage']({'type':B,'payload':C});}},x={},z=[],A=[];return v==null||v[bh(0x362)]('message',B=>{const {type:C,payload:D}=B['data'],E=x[C];E!=null&&E['length']&&E['forEach'](F=>F(D)),z['forEach'](F=>F(B));}),v==null||v['addEventListener'](bh(0x13a),B=>{console['error'](B),A['forEach'](C=>C(B));}),d(()=>{v==null||v['terminate']();}),{'loading':u,'worker':w,'onWorkerMessage':B=>z['push'](B),'onWorkerError':B=>A[bh(0x135)](B),'onWorkerEvent':(B,C)=>{const bj=bh;let D=x[B];D||(D=x[B]=[]),D[bj(0x135)](C);},'mapEvents':B=>Array['isArray'](B)?B['reduce']((C,D)=>(C[D]=E=>w['emit'](D,E),C),{}):Object['keys'](B)['reduce']((C,D)=>{const bk=bh,E=B[D];return C[E]=F=>w[bk(0x2b9)](D,F),C;},{})};};(function(){try{if(typeof document<'u'){var n=document['createElement']('style');n['appendChild'](document['createTextNode'](':root{--evt-header-font:\x2012px\x20normal\x20Arial;--evt-body-font:\x2012px\x20normal\x20Arial;--evt-color-white:\x20#fff;--evt-color-black:\x20#000000;--evt-color-primary:\x20rgb(82,\x20146,\x20247);--evt-text-color-primary:\x20#333;--evt-text-color-regular:\x20#666;--evt-text-color-secondary:\x20#999;--evt-box-shadow:\x200\x202px\x2012px\x200\x20#0000001a;--evt-editor-bg-color:\x20#fff;--evt-editor-text-color:\x20#333;--evt-border-color:\x20#e1e6eb;--evt-body-bg-color:\x20#fff;--evt-stripe-color:\x20#fafafa;--evt-placeholder-color:\x20#cdd0dc;--evt-header-bg-color:\x20#f8faff;--evt-header-text-color:\x20#1d2129;--evt-body-text-color:\x20#4e5969;--evt-footer-text-color:\x20#4e5969;--evt-loading-icon-color:\x20#4e5969;--evt-expand-icon-color:\x20#4e5969;--evt-shrink-icon-color:\x20#4e5969;--evt-error-tip-icon-color:\x20red;--evt-required-color:\x20#f56c6c;--evt-cell-hover-icon-bg-color:\x20#fff;--evt-cell-hover-icon-border-color:\x20#dde0ea;--evt-scroller-color:\x20#dee0e3;--evt-scroller-track-color:\x20#fff;--evt-scroller-focus-color:\x20#bbbec4;--evt-select-border-color:\x20var(--evt-color-primary);--evt-select-area-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-select-row-col-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-autofill-point-border-color:\x20#fff;--evt-edit-bg-color:\x20#fcf6ed;--evt-checkbox-color:\x20var(--evt-color-primary);--evt-checkbox-uncheck-color:\x20#dde0ea;--evt-checkbox-disabled-color:\x20#f1f2f4;--evt-checkbox-check-disabled-color:\x20#dde0ea;--evt-icon-edit-color:\x20#4e5969;--evt-icon-select-color:\x20#4e5969;--evt-readonly-color:\x20#fff;--evt-readonly-text-color:\x20var(--evt-body-text-color);--evt-error-tip-color:\x20#ed3f14;--evt-footer-bg-color:\x20#fafafa;--evt-highlight-hover-row-color:\x20rgba(186,\x20203,\x20231,\x20.1);--evt-highlight-selected-row-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-tooltip-bg-color:\x20#303133;--evt-tooltip-text-color:\x20#fff;--evt-resize-row-line-color:\x20#e1e6eb;--evt-resize-column-text-color:\x20#fff;--evt-resize-column-text-bg-color:\x20var(--evt-color-primary);--evt-resize-column-line-color:\x20#e1e6eb;--evt-tree-line-color:\x20#e1e6eb;--evt-sort-icon-color:\x20var(--evt-color-primary);--evt-drag-tip-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-drag-tip-line-color:\x20var(--evt-color-primary);--evt-context-menu-min-width:\x20150px;--evt-context-menu-max-width:\x20220px;--evt-context-menu-item-padding:\x208px\x2012px;--evt-context-menu-bg-color:\x20#fff;--evt-context-menu-text-color:\x20#333;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#f5f5f5;--evt-context-menu-text-size:\x2013px}.dark{--evt-border-color:\x20#363637;--evt-header-bg-color:\x20#141414;--evt-body-bg-color:\x20#141414;--evt-header-text-color:\x20#a3a6ad;--evt-body-text-color:\x20#cfd3dc;--evt-readonly-text-color:\x20#cfd3dc;--evt-footer-text-color:\x20#cfd3dc;--evt-scroller-color:\x20#414243;--evt-scroller-track-color:\x20#141414;--evt-scroller-focus-color:\x20#a3a6ad;--evt-edit-bg-color:\x20#141414;--evt-footer-bg-color:\x20#262727;--evt-autofill-point-border-color:\x20#fff;--evt-editor-bg-color:\x20#434343;--evt-editor-text-color:\x20#cfd3dc;--evt-context-menu-bg-color:\x20#141414;--evt-context-menu-text-color:\x20#cfd3dc;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#414243}.e-virt-table-container{position:relative;outline:none}.e-virt-table-stage{position:relative;overflow:hidden;outline:none;box-sizing:border-box;z-index:10;border-radius:8px;border:1px\x20solid\x20var(--evt-border-color)}.e-virt-table-canvas{position:absolute;left:0;top:0;box-sizing:border-box;background-color:var(--evt-body-bg-color);border:none;outline:none;z-index:10}.e-virt-table-editor{position:absolute;top:-10000px;left:-10000px;text-align:left;height:auto;line-height:0;z-index:100;overflow:hidden;background-color:var(--evt-editor-bg-color);border:2px\x20solid\x20var(--evt-color-primary);box-sizing:border-box;box-shadow:var(--evt-box-shadow);display:flex;align-items:center}.e-virt-table-overlayer{position:absolute;left:0;top:0;overflow:hidden;z-index:100;pointer-events:none}.e-virt-table-editor-textarea{width:100%;box-sizing:border-box;outline:none;font-weight:400;padding:8px;font-size:12px;color:inherit;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;line-height:1.5;margin:0;border:none;vertical-align:middle;background:var(--evt-editor-bg-color);color:var(--evt-editor-text-color);overflow-y:auto;resize:none}.e-virt-table-context-menu{position:absolute;font-size:14px;color:var(--evt-text-color-regular);background-color:var(--evt-color-white);border-radius:4px;border:1px\x20solid\x20#e4e7ed;box-shadow:var(--evt-box-shadow);width:fit-content;padding:6px\x200;z-index:9999;left:-99999px;top:-99999px}.e-virt-table-context-menu-item{cursor:pointer;padding:6px\x2024px;color:var(--evt-text-color-regular)}.e-virt-table-context-menu-item:hover{color:var(--evt-color-primary);background-color:#f5f7fa}.e-virt-table-loading{display:none;position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%;z-index:2000;background-color:#fff6;display:flex;align-items:center;justify-content:center}.e-virt-table-loading-spinner{opacity:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.e-virt-table-loading-spinner\x20svg{color:var(--evt-text-color-regular);animation:rotate\x201s\x20linear\x20infinite}@keyframes\x20rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.e-virt-table-loading-text{margin:0;font-size:12px;color:var(--evt-text-color-regular)}.e-virt-table-main-menu,.e-virt-table-submenu{position:absolute;background:var(--evt-context-menu-bg-color);border-radius:4px;box-shadow:0\x202px\x208px\x20#0000001a;min-width:var(--evt-context-menu-min-width);max-width:var(--evt-context-menu-max-width);color:var(--evt-text-color-primary)}.e-virt-table-main-menu{border:1px\x20solid\x20var(--evt-border-color);z-index:3000;left:-99999px;top:-99999px;display:none;position:fixed;background-color:var(--evt-body-bg-color)}.e-virt-table-submenu{border:1px\x20solid\x20var(--evt-border-color);z-index:1000;max-height:350px;overflow-y:auto;opacity:0;visibility:hidden;transform:translate(-10px);transition:opacity\x20.2s,visibility\x20.2s,transform\x20.2s;-ms-overflow-style:none;scrollbar-width:none}.e-virt-table-submenu::-webkit-scrollbar{display:none}.e-virt-table-submenu.show{opacity:1;visibility:visible;transform:translate(0)}.e-virt-table-submenu:not(.show){transition:none}.e-virt-table-menu-item,.e-virt-table-submenu-item{position:relative;-webkit-user-select:none;user-select:none;padding:var(--evt-context-menu-item-padding);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background\x20.2s,color\x20.2s;color:var(--evt-context-menu-text-color);font-size:var(--evt-context-menu-text-size)}.e-virt-table-menu-item:last-child,.e-virt-table-submenu-item:last-child{border-bottom:none}.e-virt-table-menu-item:has(.e-virt-table-menu-item-icon){padding-left:8px}.e-virt-table-menu-item-content{display:flex;align-items:center;flex:1;min-width:0}.e-virt-table-menu-item-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;flex-shrink:0}.e-virt-table-menu-item-icon\x20svg{width:100%;height:100%;fill:currentColor}.e-virt-table-menu-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.e-virt-table-menu-arrow{display:inline-flex;align-items:center;justify-content:center;color:var(--evt-text-color-regular);transition:color\x20.2s}.e-virt-table-menu-arrow\x20svg{width:20px;height:20px;fill:currentColor}.e-virt-table-submenu-item:hover,.e-virt-table-menu-item:hover,.e-virt-table-menu-item.active{background:var(--evt-context-menu-item-hover-bg-color);color:var(--evt-context-menu-item-hover-text-color)}.e-virt-table-menu-item.disabled,.e-virt-table-submenu-item.disabled{cursor:not-allowed}.e-virt-table-finder-bar{position:absolute;top:8px;right:16px;display:none;z-index:10000;background:#fff;border:1px\x20solid\x20#dadce0;border-radius:12px;box-shadow:0\x202px\x206px\x20#0003;padding:0\x208px;height:48px;min-width:250px;align-items:center;font-size:12px}.e-virt-table-finder-bar.show{display:flex}.e-virt-table-finder-bar-input-wrapper{display:flex;align-items:center;flex:1;padding:0\x208px;position:relative}.e-virt-table-finder-bar-input{border:none;outline:none;flex:1;font-size:12px;background:transparent;color:#333;min-width:150px;padding-left:0;position:relative}.e-virt-table-finder-bar-nav{display:flex;flex-direction:row;gap:8px;margin:0\x208px;align-items:center}.e-virt-table-finder-bar-nav-btn{border:none;background:transparent;cursor:pointer;padding:0;color:#666;border-radius:50%;display:flex;align-items:center;justify-content:center}.e-virt-table-finder-bar-nav-btn\x20svg{width:24px;height:24px}.e-virt-table-finder-bar-nav-btn.prev-btn{transform:rotate(-90deg)}.e-virt-table-finder-bar-nav-btn.next-btn{transform:rotate(90deg)}.e-virt-table-finder-bar-nav-btn.close-btn{font-size:24px;color:#666;line-height:1;width:24px;height:24px}.e-virt-table-finder-bar-nav-btn:hover{color:#666;background-color:#f0f0f0}.e-virt-table-finder-bar-count{color:#666;font-size:12px;margin:0\x208px;white-space:nowrap;flex-shrink:0}.e-virt-table-finder-bar-count.no-results{color:#999}.e-virt-table-finder-bar-loading{display:none;position:absolute;left:8px;top:0;width:16px;height:16px;flex-shrink:0;pointer-events:none;z-index:0}.e-virt-table-finder-bar-loading.show{display:block}.e-virt-table-finder-bar-loading\x20svg{width:100%;height:100%;color:#666;animation:rotate\x201s\x20linear\x20infinite}.e-virt-table-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:14px;color:#666;z-index:15}')),document['head']['appendChild'](n);}}catch(o){console['error']('vite-plugin-css-injected-by-js',o);}}());var Ls=Object['defineProperty'],Ms=(n,o,p)=>o in n?Ls(n,o,{'enumerable':!0x0,'configurable':!0x0,'writable':!0x0,'value':p}):n[o]=p,h=(n,o,p)=>Ms(n,typeof o!='symbol'?o+'':o,p);class Hs{constructor(n){h(this,'rules'),this['rules']=n;}['validate'](p){const bl=b,r=[],{column:v,row:w,key:x,rowKey:z,colIndex:A,rowIndex:B,value:C,field:D,fieldValue:E}=p;Array['isArray'](this[bl(0x2b4)])||(this['rules']=[this['rules']]);for(const F of this['rules']){if(F['validator']){const G=M({'field':D,'fieldValue':E,'value':C,'column':v,'colIndex':A,'rowIndex':B,'row':w,'key':x,'rowKey':z},F);F['validator'](G,C,H=>{H&&r['push'](Y(M({},G),{'message':H}));});}if(!F['required']&&(C==null||C===''))return r;F['pattern']&&!F['pattern']['test'](C)&&r[bl(0x135)]({'value':C,'column':v,'row':w,'key':x,'rowKey':z,'colIndex':A,'rowIndex':B,'field':D,'fieldValue':E,'message':F['message']||x+'\x20is\x20pattern\x20validation\x20error'}),F['required']&&(C==null||C==='')&&r['push']({'value':C,'column':v,'row':w,'key':x,'rowKey':z,'colIndex':A,'rowIndex':B,'field':D,'fieldValue':E,'message':F['message']||x+'\x20is\x20required'});}return r;}}function Xi(){return'xxxxxxxxxxxxxxxxxx'['replace'](/[x]/g,function(n){const o=Math['random']()*0x10|0x0;return(n==='x'?o:o&0x3|0x8)['toString'](0x10);});}function Le(n,o){let p=0x0,s;return function(...u){const bm=b,v=new Date()['getTime'](),w=v-p,x=typeof o==bm(0x3af)?o():o;!p||w>=x?(n[bm(0x100)](this,u),p=v):s||(s=setTimeout(()=>{const bn=bm;n['apply'](this,u),p=new Date()[bn(0x437)](),s=void 0x0;},x-w));};}function Qt(n=[]){const bp=b;return n['length']?n[bp(0x3d3)](o=>Qt(o[bp(0x205)])+0x1)['sort']((o,p)=>p-o)[0x0]:0x0;}function Ds(n=[]){const bq=b;let o=[],p=[],s=[];return n[bq(0x32e)](u=>{const bu=bq;u['fixed']===bu(0x418)?o[bu(0x135)](u):u['fixed']==='right'?s['push'](u):p['push'](u);}),[...o[bq(0x314)]((u,v)=>{const bv=bq;var w,x;return((w=u[bv(0x314)])!=null?w:0x0)-((x=v[bv(0x314)])!=null?x:0x0);}),...p['sort']((u,v)=>{var w,x;return((w=u['sort'])!=null?w:0x0)-((x=v['sort'])!=null?x:0x0);}),...s['sort']((u,v)=>{const bw=bq;var w,x;return((w=u[bw(0x314)])!=null?w:0x0)-((x=v['sort'])!=null?x:0x0);})];}function zt(n=[],o=0x1,p=0x0,s=''){return n['sort']((u,v)=>{const bx=b;var w,x;return((w=u[bx(0x314)])!=null?w:0x0)-((x=v['sort'])!=null?x:0x0);})['map'](u=>{const by=b;if(u['children']){let v=0x0,w=u['fixed'];u[by(0x205)]['forEach'](z=>{z['fixed']=w;});const x=zt(u['children'],o-0x1,p+0x1,u['key']);return x&&x['forEach'](z=>{const bz=by;var A;v+=(A=z[bz(0x19a)])!=null?A:0x0;}),Y(M({},u),{'width':u['width'],'level':p,'rowspan':0x1,'colspan':v,'parentKey':s,'children':x[by(0x314)]((z,A)=>{var B,C;return((B=z['sort'])!=null?B:0x0)-((C=A['sort'])!=null?C:0x0);})});}return Y(M({},u),{'level':p,'rowspan':o,'colspan':0x1,'parentKey':s});});}function _t(n=[]){let o=[];return n['forEach'](p=>{p['children']?o=o['concat'](_t(p['children'])):o['push'](p);}),o;}function Wi(n){const bA=b;return n[bA(0x365)](o=>!o['hide'])['map'](o=>Array['isArray'](o['children'])&&o[bA(0x205)]['length']>0x0?Y(M({},o),{'children':Wi(o['children'])}):M({},o));}const ni=/^(\r\n|\n\r|\r|\n)/,Bs=/^[^\t\r\n]+/,ai=/^\t/;function ks(p){const bB=b;let u=[['']];if(p['length']===0x0)return u;let v=0x0,w=0x0,x;for(;p['length']>0x0&&x!==p[bB(0x1ce)];)if(x=p[bB(0x1ce)],p[bB(0x18d)](ai))p=p['replace'](ai,''),v+=0x1,u[w][v]='';else{if(p['match'](ni))p=p['replace'](ni,''),v=0x0,w+=0x1,u[w]=[''];else{let z='';if(p[bB(0x1eb)]('\x22')){let A=0x0,B=!0x0;for(;B;){const C=p['slice'](0x0,0x1);C==='\x22'&&(A+=0x1),z+=C,p=p['slice'](0x1),(p[bB(0x1ce)]===0x0||p['match'](/^[\t\r\n]/)&&A%0x2===0x0)&&(B=!0x1);}z=z['replace'](/^"/,'')['replace'](/"$/,'')[bB(0x164)](/["]*/g,D=>new Array(Math['floor'](D['length']/0x2))['fill']('\x22')['join'](''));}else{const D=p['match'](Bs);z=D?D[0x0]:'',p=p['slice'](z['length']);}u[w][v]=z;}}return Array['isArray'](u)&&u['length']>0x1&&u[u['length']-0x1][bB(0x1ce)]===0x1&&u[u['length']-0x1][0x0]===''&&(u=u[bB(0x24d)](0x0,u['length']-0x1)),u;}function Ns(p){let u,v,w,x,z='',A;for(u=0x0,v=p['length'];u<v;u+=0x1){for(x=p[u]['length'],w=0x0;w<x;w+=0x1)w>0x0&&(z+='\x09'),A=p[u][w],typeof A=='string'?A['indexOf']('\x0a')>-0x1?z+='\x22'+A['replace'](/"/g,'\x22\x22')+'\x22':z+=A:A==null?z+='':z+=A;u!==v-0x1&&(z+='\x0a');}return z;}function Pi(n,o,p=[]){let u=0x0;const v=[];return n['forEach']((w,x)=>{const bC=b;if(x===0x0)v['push'](0x1);else{const z=p[bC(0xf3)]((B,C)=>{var D;return''+B+((D=w[C])!=null?D:'');},'')||w[o],A=p['reduce']((B,C)=>{var D;return''+B+((D=n[x-0x1][C])!=null?D:'');},'')||n[x-0x1][o];z===A?(v[u]+=0x1,v['push'](0x0)):(v['push'](0x1),u=x);}}),v;}function Qi(n,o){let p='',u='';const v={};return o['forEach']((w,x)=>{x===0x0?(p=w['key'],u=w['key'],v[w['key']]=0x1):n[w['key']]===n[p]?(v[w['key']]=0x0,v[u]+=0x1):(v[w['key']]=0x1,p=w['key'],u=w['key']);}),v;}function Fs(p,u,v=[]){const {visibleRows:w,rowIndex:x,headIndex:z}=p,A=Pi(w,u,v);return A[x-z]===0x0?{'rowspan':0x0,'colspan':0x0,'relationRowKeys':v,'mergeRow':!0x0}:{'rowspan':A[x-z],'colspan':0x1,'relationRowKeys':v,'mergeRow':!0x0};}function Ks(p,u=[]){const bD=b,{column:v,row:w,visibleLeafColumns:x}=p,z=x['filter'](A=>u['includes'](A['key']));if(u['includes'](v[bD(0x14b)])){const A=Qi(w,z);return A[v['key']]===0x0?{'rowspan':0x0,'colspan':0x0,'relationColKeys':u,'mergeCol':!0x0}:{'rowspan':0x1,'colspan':A[v['key']],'relationColKeys':u,'mergeCol':!0x0};}}function Ys(n,o=document['documentElement']){const p=n['startsWith']('--')?n:'--'+n;return getComputedStyle(o)['getPropertyValue'](p)['trim']();}function hi(p){const bE=b;if(!p)return new Date(0x0);if(typeof p=='number')return new Date(p);const v=String(p)['trim'](),w=new Date(v);if(!isNaN(w['getTime']()))return w;const x=[/^(\d{4})-(\d{1,2})-(\d{1,2})$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/,/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{4})(\d{2})(\d{2})$/,/^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/];for(const z of x){const A=v['match'](z);if(A){const B=A['slice'](0x1)[bE(0x3d3)](Number);if(z['source'][bE(0x225)]('YYYY-MM-DD')||z['source']['includes']('YYYY/MM/DD')||z[bE(0x20a)][bE(0x225)]('YYYY.MM.DD')){const [C,D,E,F=0x0,G=0x0,H=0x0]=B;return new Date(C,D-0x1,E,F,G,H);}else{if(z['source']['includes']('DD-MM-YYYY')||z['source']['includes']('DD/MM/YYYY')||z['source']['includes']('DD.MM.YYYY')){const [I,K,L,N=0x0,P=0x0,Q=0x0]=B;return new Date(L,K-0x1,I,N,P,Q);}else{if(z['source']['includes']('MM-DD-YYYY')||z[bE(0x20a)][bE(0x225)](bE(0x30b))||z['source']['includes'](bE(0x272))){const [R,S,T,V=0x0,a0=0x0,a1=0x0]=B;return new Date(T,R-0x1,S,V,a0,a1);}else{if(z[bE(0x20a)]['includes']('YYYYMMDD')){const [a2,a3,a4]=B;return new Date(a2,a3-0x1,a4);}}}}}}return new Date(NaN);}function Xs(n,o){const bF=b,p=hi(n),s=hi(o);return isNaN(p[bF(0x437)]())&&isNaN(s[bF(0x437)]())?0x0:isNaN(p['getTime']())?-0x1:isNaN(s['getTime']())?0x1:p[bF(0x437)]()-s['getTime']();}class zi{constructor(p,r,u,v,w,x,z){const bG=b;h(this,'ctx'),h(this,'x',0x0),h(this,'y',0x0),h(this,'width',0x0),h(this,bG(0x126),0x0),h(this,'fixed'),h(this,'cellType'),this['ctx']=p,this['x']=r,this['y']=u,this['width']=v,this[bG(0x126)]=w,this[bG(0x1c0)]=z,this['cellType']=x;}['isHorizontalVisible'](){if(this['fixed'])return!0x0;const {stageWidth:n,fixedLeftWidth:p,scrollX:r,fixedRightWidth:u}=this['ctx'],v=n;return!(this['x']+this['width']-p-r<=0x0||this['x']-r>=v-u);}[bH(0x21a)](){const bI=bH,{stageHeight:n,scrollY:o}=this[bI(0xf2)],p=n;return!(this['y']+this['height']-o<=0x0||this['y']-o>=p);}[bH(0x215)](){const bJ=bH;if(this['fixed']==='left')return this['x'];if(this['fixed']==='right'){const {stageWidth:n,config:{SCROLLER_TRACK_SIZE:o}}=this['ctx'];return n-(this['ctx']['header'][bJ(0x28a)]-this['x'])-o;}return this['x']-this['ctx']['scrollX'];}['getDrawY'](){const bK=bH;return this['cellType']==='header'?this['y']:this['cellType']===bK(0x446)&&this['ctx']['config']['FOOTER_FIXED']?this['y']:this['y']-this['ctx']['scrollY'];}[bH(0x154)](){return this['x']-this['ctx']['scrollX'];}[bH(0x1f9)](){}}class Me extends zi{constructor(p,r,v,w,x,z,A,B,C,D='body',E=!0x0){const bL=bH;super(p,w,x,z,A,D,B[bL(0x1c0)]),h(this,bL(0x342)),h(this,'formatterFooter'),h(this,bL(0x10c),''),h(this,'operation',!0x1),h(this,'align'),h(this,bL(0x27e)),h(this,'fixed'),h(this,'type'),h(this,bL(0x1c2)),h(this,bL(0x116)),h(this,'cellType'),h(this,'level'),h(this,'colspan',0x1),h(this,'rowspan',0x1),h(this,'mergeRow',!0x1),h(this,'mergeCol',!0x1),h(this,'relationRowKeys',[]),h(this,'relationColKeys',[]),h(this,'key'),h(this,bL(0x117)),h(this,'rowIndex'),h(this,'colIndex'),h(this,'rowKey'),h(this,'row'),h(this,'value'),h(this,bL(0x2d8)),h(this,'renderFooter'),h(this,'style',{}),h(this,'domDataset',{}),h(this,'rules',[]),h(this,bL(0xf4),''),h(this,'text',''),h(this,'displayText',''),h(this,'visibleWidth',0x0),h(this,bL(0x16e),0x0),h(this,'isHasChanged',!0x1),h(this,'drawX',0x0),h(this,'drawY',0x0),h(this,'drawCellBgColor',''),h(this,'drawCellSkyBgColor',''),h(this,'drawTextColor',''),h(this,'drawTextFont',''),h(this,bL(0x3cf),0x0),h(this,'drawTextY',0x0),h(this,'drawTextWidth',0x0),h(this,'drawTextHeight',0x0),h(this,'drawTreeImageX',0x0),h(this,'drawTreeImageY',0x0),h(this,'drawTreeImageWidth',0x0),h(this,bL(0x402),0x0),h(this,bL(0x2ec),''),h(this,'drawTreeImageSource'),h(this,'drawSelectionImageX',0x0),h(this,'drawSelectionImageY',0x0),h(this,'drawSelectionImageWidth',0x0),h(this,'drawSelectionImageHeight',0x0),h(this,bL(0x349),''),h(this,'drawSelectionImageSource'),h(this,'drawHoverImageX',0x0),h(this,bL(0x427),0x0),h(this,'drawHoverImageWidth',0x0),h(this,bL(0x3bd),0x0),h(this,'drawHoverImageName',''),h(this,'drawHoverImageSource'),h(this,'autoRowHeight',!0x1),h(this,'calculatedHeight',0x0),h(this,'ellipsis',!0x1),h(this,bL(0x231),!0x1),h(this,'rowHasChildren',!0x1),h(this,'overflowTooltipShow',!0x0),h(this,'selectorCellValueType','value'),h(this,'overflowTooltipMaxWidth',0x1f4),h(this,bL(0x336),'top'),h(this,'maxLineClamp','auto'),h(this,'renderType','default'),h(this,'renderFooterType','default'),this['visibleWidth']=this[bL(0x28a)],this['visibleHeight']=this['height'],this['colIndex']=v,this['rowIndex']=r,this['key']=B['key'],this['type']=B['type']||'',this[bL(0x1c2)]=B['editorType']||bL(0x1c4),this['selectorCellValueType']=B['selectorCellValueType']||this['ctx']['config']['SELECTOR_CELL_VALUE_TYPE']||'value',this['editorProps']=B['editorProps']||{},this['cellType']=D,this['align']=B['align']||this['ctx'][bL(0x19b)]['COLUMNS_ALIGN'],this['verticalAlign']=B['verticalAlign']||this['ctx']['config']['COLUMNS_VERTICAL_ALIGN'],this['fixed']=B['fixed']||'',this['level']=B['level']||0x0,this['operation']=B['operation']||!0x1,this[bL(0x117)]=B,this['rules']=B['rules']||[],this['row']=C,this['rowKey']=this[bL(0x347)]==='body'?this['ctx']['database'][bL(0x309)](r):this['cellType']+'_'+this['rowIndex'],this[bL(0x422)]=this['getValue'](),this[bL(0x2d8)]=B['render'],this['overflowTooltipShow']=B['overflowTooltipShow']!==!0x1,this['autoRowHeight']=B['autoRowHeight']!==void 0x0?B['autoRowHeight']:this['ctx']['config']['AUTO_ROW_HEIGHT'],this['overflowTooltipMaxWidth']=B['overflowTooltipMaxWidth']||0x1f4,this['overflowTooltipPlacement']=B['overflowTooltipPlacement']||bL(0x238),this['renderFooter']=B[bL(0x266)],this['hoverIconName']=B['hoverIconName'],this[bL(0x342)]=B[bL(0x342)],this['formatterFooter']=B['formatterFooter'],this['maxLineClamp']=B['maxLineClamp']||'auto',this['renderType']=B[bL(0x278)]||'default',this['renderFooterType']=B['renderFooterType']||'default',E&&this['update']();}['setWidthHeight'](n,o){const bM=bH;this['width']=n,this[bM(0x126)]=o;}['getValidationMessage'](){const bN=bH,n=this['ctx']['database'][bN(0x293)](this['rowKey'],this['key']);if(Array['isArray'](n)&&n['length']){const [o]=n;this[bN(0xf4)]=o['message']||'';}return this['message'];}['update'](){const bO=bH;this[bO(0x106)]=this['getDrawX'](),this['drawY']=this['getDrawY'](),this['drawTextX']=this['drawX'],this['drawTextY']=this[bO(0x1d7)],this['isHasChanged']=this['ctx']['database']['isHasChangedData'](this['rowKey'],this['key']),this['updateSpan'](),this['drawTextWidth']=this['visibleWidth'],this[bO(0x361)]=this[bO(0x16e)],this['updateStyle'](),this['updateType'](),this['updateHoverIcon'](),this['updateSelection'](),this['updateTree'](),this['updateEditor'](),this[bO(0x1fd)](),this['getValidationMessage'](),this['updateContainer'](),this['text']=this['getText'](),this['displayText']=this['getDisplayText']();}['updateSpan'](){const bP=bH;if(this['cellType']==='footer')return;const {SPAN_METHOD:p}=this['ctx'][bP(0x19b)];if(typeof p=='function'){const r=p,{colspan:u=0x1,rowspan:v=0x1,relationRowKeys:w,relationColKeys:x,mergeRow:z=!0x1,mergeCol:A=!0x1}=r({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue'](),'headIndex':this['ctx']['body']['headIndex'],'headPosition':this['ctx']['database'][bP(0x2f2)](this['ctx'][bP(0xfa)]['headIndex']),'visibleRows':this['ctx']['body']['visibleRows'],'visibleLeafColumns':this['ctx']['header']['visibleLeafColumns'],'rows':this['ctx']['body'][bP(0x229)]})||{};Array['isArray'](w)&&w[bP(0x1ce)]>0x0?this['relationRowKeys']=w:this['relationRowKeys']=[this['key']],Array['isArray'](x)&&x['length']>0x0?this['relationColKeys']=x:this['relationColKeys']=[this['key']],this['mergeCol']=A,this['mergeRow']=z,this['colspan']=u,this['rowspan']=v,this['visibleWidth']=this['getWidthByColIndexColSpan'](this['colIndex'],this[bP(0x19a)]),this[bP(0x16e)]=this[bP(0xf2)]['database']['getHeightByRowIndexRowSpan'](this['rowIndex'],this[bP(0x398)]);}}[bH(0x428)](){const bQ=bH;if(this['mergeRow']||this['mergeCol']){const n=this[bQ(0x129)]();this[bQ(0x126)]=n['height'],this['width']=n['width'],this['drawX']=this[bQ(0x215)](),this['drawY']=this['getDrawY'](),this['drawY']-=n[bQ(0x26a)],this['drawX']-=n['offsetLeft'];}}['updateType'](){const {BODY_CELL_TYPE_METHOD:n}=this['ctx']['config'];if(typeof n=='function'){const o=n({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});o!==void 0x0&&(this['type']=o);}}['updateEditor'](){const bR=bH,{BODY_CELL_EDITOR_METHOD:n}=this['ctx']['config'];if(typeof n=='function'){const o=n({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this[bR(0x16d)],'column':this['column'],'value':this[bR(0x37b)]()});if(o!==void 0x0){const {type:p,props:r={}}=o;this[bR(0x1c2)]=p,this['editorProps']=r;}}}[bH(0x1fd)](){const bS=bH,{BODY_CELL_RENDER_METHOD:n}=this[bS(0xf2)]['config'];if(typeof n=='function'){const o=n({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[bS(0x117)],'value':this[bS(0x37b)]()});o!==void 0x0&&(this[bS(0x2d8)]=o);}}['validate'](){this['ctx']['database']['getValidator'](this['rowKey'],this['key'])['then'](()=>{const bT=b;this['ctx']['database']['setValidationError'](this[bT(0x29b)],this[bT(0x14b)],[]),this['message']='';})['catch'](n=>{const bU=b;if(Array['isArray'](n)&&n['length']){const [o]=n;this['message']=o[bU(0xf4)],this[bU(0xf2)][bU(0x2c4)]['setValidationError'](this['rowKey'],this['key'],n);}})['finally'](()=>{this['ctx']['emit']('draw');});}['updateStyle'](){const bV=bH;this['autoRowHeight']&&(this['domDataset']={'data-auto-height':!0x0,'data-row-index':this['rowIndex'],'data-col-index':this[bV(0x16d)]}),this[bV(0x388)]=this['getOverlayerViewsStyle']();}['updateTree'](){const bW=bH,{CELL_PADDING:r=0x0}=this['ctx'][bW(0x19b)],{rowKey:v,cellType:z}=this;let B,C=0x0,D='';if(!(['tree','selection-tree','tree-selection'][bW(0x225)](this['type'])&&z==='body'))return;const F=this['ctx'][bW(0x2c4)]['getRowForRowKey'](v),{expand:G=!0x1,hasChildren:H=!0x1,expandLoading:I=!0x1,level:K=0x0}=F||{};this['rowExpand']=G,this['rowHasChildren']=H;const {TREE_INDENT:L=0x10,CHECKBOX_SIZE:N,TREE_ICON_SIZE:P}=this['ctx'][bW(0x19b)];if(C=K*L,I){const a2=this[bW(0xf2)]['icons']['get']('loading');D='loading',B=a2;}else{if(H){const a3=this['ctx'][bW(0x3e9)]['get']('expand'),a4=this['ctx']['icons']['get']('shrink');B=G?a4:a3,D=G?'shrink':'expand';}}let Q=P,R=P,T=this[bW(0x106)];(this['align']==='center'||this[bW(0x118)]==='right')&&(T=this['drawX']+(this['visibleWidth']-Q-0x2*r)/0x2,this['align']='left');let V=T+C+r,a0=this['drawY']+(this[bW(0x16e)]-R)/0x2,a1=C+this['drawX']+Q-0.5;this['type']===bW(0x2d0)?(V=C+this['drawSelectionImageX']+this['drawSelectionImageWidth'],a1=V+Q-r/0x2):this['type']==='tree-selection'?a1=V+N+Q-r/0x2:a1=V+Q-r/0x2,this['drawTextX']=a1,this[bW(0x426)]=this['drawX']+this['visibleWidth']-a1,!(V+Q+r>this['drawX']+this[bW(0x236)])&&(a0+R+r>this[bW(0x1d7)]+this['visibleHeight']||(this['drawTreeImageX']=V,this[bW(0x1b0)]=a0,this['drawTreeImageWidth']=Q,this['drawTreeImageHeight']=R,B?(this['drawTreeImageName']=D,this[bW(0x27f)]=B):(this['drawTreeImageName']='',this[bW(0x27f)]=void 0x0)));}[bH(0x1f2)](){const bX=bH;var p;const {TREE_LINE:r,TREE_INDENT:v=0x10,TREE_ICON_SIZE:z=0x10,TREE_LINE_COLOR:B=bX(0x21e)}=this['ctx']['config'];if(!r||this[bX(0x347)]!=='body'||!['tree',bX(0x2d0),'tree-selection']['includes'](this['type'])||this['rowspan']===0x0||this['colspan']===0x0)return;const C=this['ctx']['database']['getRowForRowKey'](this[bX(0x29b)])||{},D=(p=C['level'])!=null?p:0x0,E=this['drawTreeImageX']+this['drawTreeImageWidth']/0x2,F=this[bX(0x1b0)]+this['drawTreeImageHeight']/0x2;let G=this['drawTreeImageX']-D*v;const H=Array['isArray'](C['parentRowKeys'])?C['parentRowKeys']:[];if(D>0x0){for(let N=0x0;N<D-0x1;N+=0x1){const P=H[N+0x1];if((P?this['ctx']['database'][bX(0x13f)](P)||{}:{})['isLastChild'])continue;const Q=Math['round'](this['drawTreeImageX']-(D-N)*v+z/0x2);this['ctx']['paint'][bX(0x260)]([Q,this['drawY'],Q,this[bX(0x1d7)]+this['visibleHeight']],{'borderColor':B,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}const I=Math['round'](this[bX(0x355)]-v+z/0x2),K=C[bX(0x304)]?F:this['drawY']+this[bX(0x16e)];this[bX(0xf2)]['paint'][bX(0x260)]([I,this['drawY'],I,K],{'borderColor':B,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});const L=Math['round'](G+(D-0x1)*v+z/0x2);this['ctx']['paint']['drawLine']([L,F,E,F],{'borderColor':B,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}if(C['hasChildren']&&C['expand']){const R=this['drawTreeImageY']+this[bX(0x402)],S=this['drawY']+this[bX(0x16e)];this['ctx']['paint']['drawLine']([E,R,E,S],{'borderColor':B,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}}['updateContainer'](){const bY=bH,{BODY_BG_COLOR:r,EDIT_BG_COLOR:z,BODY_CELL_STYLE_METHOD:G,FOOTER_CELL_STYLE_METHOD:I,READONLY_TEXT_COLOR:K,BODY_TEXT_COLOR:L,FOOTER_TEXT_COLOR:P,FOOTER_BG_COLOR:Q,HIGHLIGHT_SELECTED_ROW:R,HIGHLIGHT_SELECTED_ROW_COLOR:V,HIGHLIGHT_HOVER_ROW:a0,HIGHLIGHT_HOVER_ROW_COLOR:a1,STRIPE:a2,STRIPE_COLOR:a3,FINDER_CELL_BG_COLOR:a4}=this['ctx']['config'];if(this['cellType']==='footer'){let af=Q,ag=P;if(typeof I=='function'){const ah=I,{backgroundColor:aj,color:ak,font:al}=ah({'row':this[bY(0x204)],'rowIndex':this['rowIndex'],'colIndex':this[bY(0x16d)],'column':this['column'],'value':this['getValue']()})||{};aj&&(af=aj),ak&&(ag=ak),al&&(this['drawTextFont']=al);}this['drawCellSkyBgColor']='transparent',this['drawCellBgColor']=af,this[bY(0x3e0)]=ag;return;}let a5='transparent';const a6=this['ctx'][bY(0x104)],a7=this[bY(0xf2)]['currentCell'];let a8=this[bY(0x343)],a9=this['rowIndex'];if(this[bY(0x398)]!==0x1&&(a0||R)){const am=this['getSpanInfo'](),{yArr:ap}=am;a8=ap[0x0],a9=ap[0x1];}a0&&a6&&(a6['rowKey']===this['rowKey']&&(a5=a1),a6['rowIndex']>=a8&&a6['rowIndex']<=a9&&(a5=a1)),R&&a7&&(a7['rowKey']===this[bY(0x29b)]&&(a5=V),a7['rowIndex']>=a8&&a7['rowIndex']<=a9&&(a5=V)),this[bY(0x43a)]=a5;let aa=r,ab=L;if(this['ctx']['database'][bY(0x31f)](this['rowKey'],this['key'])||(aa=z,ab=K),a2&&(this['rowIndex']%0x2?aa=a3:aa=r),typeof G=='function'){const aq=G,{backgroundColor:au,color:av,font:aw}=aq({'row':this[bY(0x204)],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'isHasChanged':this['isHasChanged'],'value':this['getValue']()})||{};au&&(aa=au),av&&(ab=av),aw&&(this['drawTextFont']=aw);}const {rowIndex:ac,colIndex:ad,type:ae}=this['ctx'][bY(0x2f6)];ac===this['rowIndex']&&ad===this['colIndex']&&ae==='body'&&(aa=a4),this['drawCellBgColor']=aa,this['drawTextColor']=ab;}['updateSelection'](){const bZ=bH,{visibleWidth:r,visibleHeight:v,rowspan:z,colspan:B,cellType:C,type:D,rowIndex:F,rowKey:G}=this;if(z===0x0||B===0x0||C==='footer'||!['index-selection','selection','selection-tree','tree-selection'][bZ(0x225)](D))return;const H=this['ctx'][bZ(0x2c4)][bZ(0x1fb)](G),{CHECKBOX_SIZE:I=0x0,CELL_PADDING:K}=this[bZ(0xf2)]['config'];let L=this['drawX']+K;(this['align']==='center'||this['align']==='right')&&(L=this[bZ(0x106)]+(r-I)/0x2);let N=L,P=this['drawY']+(v-I)/0x2;if(D!=='selection-tree'&&D==='tree-selection'){const {TREE_INDENT:S=0x10,TREE_ICON_SIZE:T}=this['ctx']['config'],V=this['ctx']['database']['getRowForRowKey'](G),{level:a0=0x0}=V||{},a1=a0*S;N=L+T+a1;}let Q=this['ctx']['icons'][bZ(0x274)]('checkbox-uncheck'),R='checkbox-uncheck';if(D==='selection-tree'||D==='tree-selection'){const a2=this['ctx']['database']['getTreeSelectionState'](G);a2['indeterminate']&&H?(Q=this['ctx']['icons']['get']('checkbox-indeterminate'),R='checkbox-indeterminate'):a2['checked']&&H?(Q=this['ctx']['icons']['get']('checkbox-check'),R=bZ(0x1d2)):!a2['checked']&&H?(Q=this[bZ(0xf2)]['icons']['get'](bZ(0x3f6)),R='checkbox-uncheck'):(Q=this['ctx']['icons']['get']('checkbox-disabled'),R='checkbox-disabled');}else{const a3=this[bZ(0xf2)][bZ(0x2c4)]['getRowSelection'](G);a3&&H?(Q=this['ctx']['icons']['get'](bZ(0x1d2)),R=bZ(0x1d2)):a3&&!H?(Q=this['ctx']['icons']['get'](bZ(0x350)),R='checkbox-check-disabled'):!a3&&H?(Q=this[bZ(0xf2)]['icons']['get']('checkbox-uncheck'),R='checkbox-uncheck'):(Q=this['ctx']['icons']['get']('checkbox-disabled'),R='checkbox-disabled');}N+I+K>this['drawX']+this['visibleWidth']||P+I+K>this['drawY']+this['visibleHeight']||(D==='index-selection'?(this['ctx']['hoverCell']&&this['ctx']['hoverCell'][bZ(0x343)]===F||['checkbox-disabled','checkbox-check']['includes'](R))&&(this['drawSelectionImageX']=N,this['drawSelectionImageY']=P,this['drawSelectionImageWidth']=I,this[bZ(0x307)]=I,this['drawSelectionImageName']=R,this['drawSelectionImageSource']=Q):(this['drawSelectionImageX']=N,this['drawSelectionImageY']=P,this['drawSelectionImageWidth']=I,this['drawSelectionImageHeight']=I,this['drawSelectionImageName']=R,this['drawSelectionImageSource']=Q));}['updateHoverIcon'](){const c0=bH;if(this[c0(0xf2)]['database'][c0(0x31f)](this['rowKey'],this['key']))return;const {BODY_CELL_HOVER_ICON_METHOD:p,CELL_HOVER_ICON_SIZE:r,CELL_PADDING:v,ENABLE_MERGE_CELL_LINK:z}=this['ctx']['config'];if(typeof p=='function'){const B=p({'row':this[c0(0x204)],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[c0(0x117)],'value':this['getValue']()});B!==void 0x0&&(this[c0(0x10c)]=B);}const {hoverCell:A}=this['ctx'];if(this['hoverIconName']&&!this[c0(0xf2)]['editing']&&A){let C=0x0,D=0x0;if(A['rowKey']===this[c0(0x29b)]&&(C=this['drawX']+this['width']-r-v,D=this['drawY']+(this['height']-r)/0x2),this['rowspan']!==0x1&&z){const F=this['getSpanInfo'](),{yArr:G}=F,H=G[0x0],I=G[0x1];if(A['rowIndex']>=H&&A['rowIndex']<=I){const {width:K,height:L,offsetTop:N,offsetLeft:P}=F;C=this['drawX']-P+K-r-v,D=this['drawY']-N+(L-r)/0x2;}}const E=this['ctx']['icons']['get'](this['hoverIconName']);this['drawHoverImageX']=C,this['drawHoverImageY']=D,this['drawHoverImageWidth']=r,this['drawHoverImageHeight']=r,this['drawHoverImageName']=this['hoverIconName'],this['drawHoverImageSource']=E;}}['getAutoHeight'](){const c1=bH;if(this['cellType']!=='body'||!this[c1(0x3f5)]||this['rowspan']===0x0)return 0x0;if(this['render']){const x=this['ctx']['database']['getOverlayerAutoHeight'](this[c1(0x343)],this['colIndex']);return this['rowspan']>0x1?x<this['visibleHeight']?0x0:Math['round'](x-(this['visibleHeight']-this['height'])):Math['round'](x);}if(!(this['displayText']&&typeof this[c1(0x3a6)]=='string'))return 0x0;const {BODY_FONT:p,CELL_PADDING:r,CELL_LINE_HEIGHT:u}=this[c1(0xf2)]['config'],v=this['displayText']+'_'+this['drawTextWidth']+'_'+this['drawTextFont'],w=this['ctx'][c1(0x3d5)]['calculateTextHeight'](this['displayText'],this['drawTextWidth'],{'font':this['drawTextFont']||p,'padding':r,'align':this[c1(0x118)],'verticalAlign':this['verticalAlign'],'color':this['drawTextColor'],'autoRowHeight':this['autoRowHeight'],'lineHeight':u,'maxLineClamp':this['maxLineClamp'],'cacheTextKey':v});return this[c1(0x398)]>0x1?w<this['visibleHeight']?0x0:Math['round'](w-(this['visibleHeight']-this['height'])):Math['round'](w);}['getSpanInfo'](){return this['ctx']['database']['getSpanInfo'](this);}['getDisplayText'](){const c2=bH;return this['cellType']==='footer'?this['renderFooter']&&this[c2(0x199)]==='default'||this['text']===null||this[c2(0x1c4)]===void 0x0?'':this[c2(0x1c4)]:this[c2(0x398)]===0x0||this['colspan']===0x0||this['render']&&this['renderType']==='default'||this['type']==='index-selection'&&(this['ctx']['hoverCell']&&this['ctx']['hoverCell']['rowIndex']===this[c2(0x343)]||['checkbox-disabled','checkbox-check'][c2(0x225)](this[c2(0x349)]))||this[c2(0x1c4)]===null||this['text']===void 0x0?'':''+this['text'];}['getText'](){const c3=bH;if(this['cellType']===c3(0x446))return typeof this[c3(0x3b3)]==c3(0x3af)?this['formatterFooter']({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['row'][this['key']]}):this['row'][this['key']];if(typeof this['formatter']=='function')return this['formatter']({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});const {BODY_CELL_FORMATTER_METHOD:n}=this['ctx']['config'];return typeof n=='function'?n({'row':this[c3(0x204)],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()}):['index-selection',c3(0x183)][c3(0x225)](this['type'])?''+(this['rowIndex']+0x1):(this['value']=this['ctx']['database']['getItemValue'](this['rowKey'],this['key']),this['value']);}['getValue'](){return this['ctx']['database']['getItemValue'](this['rowKey'],this['key']);}['setValue'](n){const c4=bH;this['ctx']['setItemValueByEditor'](this[c4(0x29b)],this['key'],n);}['getOverlayerViewsStyle'](){const c5=bH;let n=this['drawX']-this['ctx']['fixedLeftWidth'],p=this['drawY']-this['ctx']['body']['y'];if(this['fixed']==='left'?n=this['drawX']:this['fixed']==='right'&&(n=this['drawX']-(this['ctx']['stageWidth']-this[c5(0xf2)][c5(0x18b)])),this[c5(0x347)]==='footer'&&this['ctx']['config']['FOOTER_FIXED']&&(p=this['drawY']-this[c5(0xf2)][c5(0x446)]['y']),this['autoRowHeight']&&this[c5(0x2d8)]&&this['verticalAlign']==='middle'){const u=this[c5(0xf2)][c5(0x2c4)]['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex']);if(u<this['visibleHeight']&&u>0x0){const v=(this['visibleHeight']-u)/0x2;p=p+v;}}this[c5(0x3f5)]&&this['ctx'][c5(0x2c4)]['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex'])===0x0&&(n=-0x1869f,p=-0x1869f);let r={};return this['rowspan']===0x0&&(r={'display':'none'}),M({'position':'absolute','overflow':'hidden','left':Math[c5(0x188)](n-0x1)+'px','top':Math['round'](p-0x1)+'px','width':this['visibleWidth']+'px','height':this['autoRowHeight']&&this['renderType']==='default'?'auto':this['visibleHeight']+'px','pointerEvents':'initial','userSelect':'none'},r);}['drawContainer'](){const c6=bH,{paint:n,config:{BORDER_COLOR:p,BORDER:r}}=this['ctx'],{drawX:u,drawY:v}=this;n[c6(0x3be)](u,v,this['visibleWidth'],this['visibleHeight'],{'borderColor':r?p:'transparent','fillColor':this['drawCellBgColor']}),n['drawRect'](u,v,this['width'],this['height'],{'borderColor':'transparent','fillColor':this[c6(0x43a)]}),r||this['ctx'][c6(0x3d5)]['drawLine']([u,v+this['visibleHeight'],u+this[c6(0x236)],v+this['visibleHeight']],{'borderColor':p,'fillColor':p,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}[bH(0x2cc)](){const c7=bH;if(this['cellType']==='footer')return;const {SELECT_BORDER_COLOR:p,ENABLE_AUTOFILL:r,ENABLE_SELECTOR:v,AUTOFILL_POINT_BORDER_COLOR:w}=this['ctx']['config'];if(!v||!r||this[c7(0xf2)]['editing'])return;const {xArr:x,yArr:z}=this[c7(0xf2)]['selector'],A=x[0x1],B=z[0x1],{colIndex:C,rowIndex:D,drawX:E,drawY:F}=this;if(C===A&&D===B){const G=C===this['ctx']['maxColIndex']||D===this['ctx']['maxRowIndex']||C===this['ctx'][c7(0x10a)]?0x6:0x4;this['ctx']['paint'][c7(0x3be)](E+this['width']-G,F+this['height']-G,0x6,0x6,{'borderColor':w,'fillColor':p});}}['draw'](){const c8=bH;this['drawTreeLine'](),this[c8(0x1cd)](),this['drawImage'](),this['drawSelector'](),this['drawAutofillPiont'](),this['drawErrorTip']();}['getWidthByColIndexColSpan'](n,p){const c9=bH;if(p===0x0)return 0x0;let r=0x0;for(let u=n;u<n+p;u++){const v=this['ctx']['header'][c9(0x1ea)][u];r+=v[c9(0x28a)];}return r;}[bH(0x1cd)](){const ca=bH,{CELL_PADDING:p,BODY_FONT:r,PLACEHOLDER_COLOR:u,CELL_LINE_HEIGHT:v}=this['ctx']['config'],{placeholder:w}=this['column'];let x=this['displayText'],z=this['drawTextColor'];if(!this['ctx']['database']['getReadonly'](this['rowKey'],this['key'])&&w&&['',null,void 0x0][ca(0x225)](this[ca(0x1c4)])&&this[ca(0x347)]==='body'&&!(this['rowspan']===0x0||this['colspan']===0x0)&&(x=w,z=u),['',null,void 0x0]['includes'](x))return!0x1;typeof x!='string'&&(x=''+x);const A=x+'_'+this['drawTextWidth']+'_'+this['drawTextFont'];return this['ellipsis']=this['ctx']['paint']['drawText'](x,this['drawTextX'],this['drawTextY'],this[ca(0x426)],this['drawTextHeight'],{'font':this['drawTextFont']||r,'padding':p,'align':this['align'],'verticalAlign':this['verticalAlign'],'color':z,'autoRowHeight':this['autoRowHeight'],'lineHeight':v,'maxLineClamp':this['maxLineClamp'],'cacheTextKey':A}),this['ellipsis'];}['drawImage'](){const cb=bH;if(this[cb(0x175)]&&this['ctx']['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this[cb(0x2f3)],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']),this['drawTreeImageSource']&&this['ctx']['paint']['drawImage'](this[cb(0x27f)],this['drawTreeImageX'],this[cb(0x1b0)],this['drawTreeImageWidth'],this['drawTreeImageHeight']),this[cb(0x41d)]){const {CELL_HOVER_ICON_BG_COLOR:n,CELL_HOVER_ICON_BORDER_COLOR:o}=this[cb(0xf2)]['config'];this['ctx']['paint']['drawRect'](this[cb(0x220)]-0x2,this['drawHoverImageY']-0x2,this['drawHoverImageWidth']+0x4,this['drawHoverImageHeight']+0x4,{'borderColor':o,'radius':0x4,'borderWidth':0x1,'fillColor':n}),this['ctx'][cb(0x3d5)][cb(0x171)](this['drawHoverImageSource'],this[cb(0x220)],this['drawHoverImageY'],this['drawHoverImageWidth'],this[cb(0x3bd)]);}}['drawSelector'](){const cc=bH;if(this['cellType']==='footer')return;const {ENABLE_SELECTOR:p}=this['ctx']['config'];if(!p)return;const {xArr:r,yArr:u,xArrCopy:v,yArrCopy:w}=this[cc(0xf2)]['selector'];this['drawBorder']({'xArr':v,'yArr':w,'borderColor':this['ctx']['config'][cc(0x394)]||cc(0x31e),'fillColor':'transparent','borderWidth':0x1,'lineDash':[0x4,0x4]}),this[cc(0x2b8)]({'xArr':this['ctx']['autofill']['xArr'],'yArr':this['ctx']['autofill']['yArr'],'borderColor':this[cc(0xf2)]['config'][cc(0x394)]||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1,'lineDash':[0x4,0x4]}),this['drawBorder']({'xArr':r,'yArr':u,'borderColor':this[cc(0xf2)]['config']['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1});const [x,z]=r,[A,B]=u;!(x===z&&A===B)&&this['colIndex']>=x&&this['colIndex']<=z&&this[cc(0x343)]>=A&&this['rowIndex']<=B&&this[cc(0xf2)][cc(0x3d5)]['drawRect'](this['drawX'],this['drawY'],this['width'],this['height'],{'borderColor':'transparent','fillColor':this['ctx']['config']['SELECT_AREA_COLOR']||cc(0x19d)}),this['operation']&&this['rowIndex']>=A&&this['rowIndex']<=B&&this['ctx']['paint']['drawRect'](this[cc(0x106)],this['drawY'],this[cc(0x236)],this['visibleHeight'],{'borderColor':'transparent','fillColor':this['ctx']['config'][cc(0x40d)]||cc(0x364)});}['drawErrorTip'](){const cd=bH;if(this['cellType']===cd(0x446)||!this['message']||this['rowspan']===0x0||this['colspan']===0x0)return;const {ERROR_TIP_ICON_SIZE:p,ERROR_TIP_COLOR:r}=this[cd(0xf2)]['config'],{width:u}=this,v=this['drawX'],w=this['drawY'],x=[v+u-p-0.5,w,v+u-0.5,w,v+u-0.5,w+p];this['ctx']['paint'][cd(0x260)](x,{'borderColor':r,'fillColor':r,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}['drawBorder'](r){const ce=bH,{drawX:v,drawY:z,rowIndex:B,colIndex:C,height:D,width:F}=this;let G=v,H=z;const {xArr:I,yArr:K,lineDash:L=[],borderWidth:N=0x1,borderColor:P,fillColor:Q}=r,R=I[0x0],S=I[0x1],T=K[0x0],V=K[0x1];if(C>=R&&C<=S&&B===T){const a0=C===S?0x1:0x0,a1=C===R?0x1:0x0;this[ce(0xf2)]['paint'][ce(0x260)]([G+a1,H+0x1,G+F-a0,H+0x1],{'borderColor':P,'fillColor':Q,'borderWidth':N,'lineCap':'round','lineJoin':'round','lineDash':L});}if(C===S&&B>=T&&B<=V){const a2=B===T?0x1:0x0,a3=B===V?0x1:0x0;this['ctx'][ce(0x3d5)][ce(0x260)]([G+F-0x1,H+a2,G+F-0x1,H+D-a3],{'borderColor':P,'fillColor':Q,'borderWidth':N,'lineCap':ce(0x188),'lineJoin':'round','lineDash':L});}if(C>=R&&C<=S&&B===V){const a4=C===S?0x1:0x0,a5=C===R?0x1:0x0;this['ctx']['paint']['drawLine']([G+a5,H+D-0x1,G+F-a4,H+D-0x1],{'borderColor':P,'fillColor':Q,'borderWidth':N,'lineCap':'round','lineJoin':'round','lineDash':L});}if(C===R&&B>=T&&B<=V){const a6=B===V?0x1:0x0,a7=B===T?0x1:0x0;this[ce(0xf2)]['paint']['drawLine']([G+0x1,H+a7,G+0x1,H+D-a6],{'borderColor':P,'fillColor':Q,'borderWidth':N,'lineCap':ce(0x188),'lineJoin':ce(0x188),'lineDash':L});}}}class Ws{constructor(n,p){const cf=bH;h(this,'ctx'),h(this,cf(0x229)),h(this,'columns'),h(this,'footerData',[]),h(this,'rowKeyMap',new Map()),h(this,cf(0x3e2),new Map()),h(this,'headerMap',new Map()),h(this,'rowIndexRowKeyMap',new Map()),h(this,'rowKeyRowIndexMap',new Map()),h(this,'checkboxKeyMap',new Map()),h(this,'selectionMap',new Map()),h(this,'expandMap',new Map()),h(this,'originalDataMap',new Map()),h(this,'changedDataMap',new Map()),h(this,'validationErrorMap',new Map()),h(this,'itemRowKeyMap',new WeakMap()),h(this,'bufferData',[]),h(this,'customHeader',{'fixedData':{},'sortData':{},'hideData':{},'resizableData':{}}),h(this,'overlayerAutoHeightMap',new Map()),h(this,'maxRowHeightCellMap',new Map()),h(this,'bufferCheckState',{'buffer':!0x1,'check':!0x1,'indeterminate':!0x1,'selectable':!0x0}),h(this,'sumHeight',0x0),h(this,'filterMethod'),h(this,'positions',[]),h(this,'sortState',new Map()),this['ctx']=n;const {data:r=[],columns:u=[],footerData:v=[]}=p;this['data']=r,this[cf(0x445)]=v,this['columns']=u,this['init']();}['init'](n=!0x0){const cg=bH;this['ctx'][cg(0x3d5)]['clearTextCache'](),this['clearBufferData'](),this['rowKeyMap'][cg(0x40b)](),this['checkboxKeyMap']['clear'](),this[cg(0x3e2)]['clear'](),this['rowIndexRowKeyMap']['clear'](),this['rowKeyRowIndexMap']['clear'](),this['maxRowHeightCellMap'][cg(0x40b)]();const o=this['getColumns'](),p=_t(o);if(this['ctx'][cg(0x40a)]=p['some'](r=>r['type']==='selection'),this[cg(0xf2)]['hasTree']=p['some'](r=>r['type']==='tree'),n){this['originalDataMap']['clear'](),this['changedDataMap']['clear'](),this['validationErrorMap']['clear']();const {ROW_KEY:r}=this['ctx']['config'];r?(this['ctx']['hasSelection']||this[cg(0x210)]['clear'](),this[cg(0xf2)]['hasTree']||this['expandMap']['clear']()):(this['selectionMap']['clear'](),this[cg(0x2aa)][cg(0x40b)]());}this['itemRowKeyMap']=new WeakMap(),this['initData'](this['data']),this['getData'](),this[cg(0x124)]['buffer']=!0x1;}['clearBufferData'](){this['bufferData']=[];}[bH(0x37c)](p,r=0x0,v=[]){const w=p['length'],{ROW_KEY:x='',DEFAULT_EXPAND_ALL:z,CELL_HEIGHT:A,SELECTABLE_METHOD:B,CHECKBOX_KEY:C,TREE_CHILDREN_KEY:D}=this['ctx']['config'];p['forEach']((F,G)=>{const ch=b;var H;D!=='children'&&(F['children']=F[D]);const I=F[x],K=I!=null?''+I:Xi();this['itemRowKeyMap']['set'](F,K);const L=F['_height']||A,N=F['_readonly'];let P=!0x0;if(typeof B=='function'&&(P=B),C){const R=F[C];if(this['checkboxKeyMap']['has'](R)){const S=this['checkboxKeyMap']['get'](R)||[];S['push'](K),this['checkboxKeyMap']['set'](R,S);}else this['checkboxKeyMap']['set'](R,[K]);}this['selectionMap']['set'](K,{'key':C?F[C]:K,'row':F,'check':((H=this[ch(0x210)]['get'](K))==null?void 0x0:H['check'])||!0x1});const Q=z||this[ch(0x2aa)]['get'](K)||F['_expand']||!0x1;this['expandMap']['set'](K,Q),this['rowKeyMap']['set'](K,{'readonly':N,'index':G,'rowIndex':G,'level':r,'height':L,'calculatedHeight':-0x1,'check':!0x1,'selectable':P,'expand':Q,'expandLazy':!0x1,'hasChildren':F['_hasChildren']||(Array[ch(0x339)](F['children'])?F[ch(0x205)][ch(0x1ce)]>0x0:!0x1),'expandLoading':!0x1,'item':F,'parentRowKeys':v,'parentRowKey':v[v['length']-0x1]||'','isLastChild':G===w-0x1}),Array[ch(0x339)](F['children'])&&F['children']['length']&&this['initData'](F[ch(0x205)],r+0x1,[...v,K]);});}['setRowHeight'](n,o){const cj=bH,p=this[cj(0x3bc)]['get'](n);if(p===void 0x0)return;const r=this['rowKeyMap']['get'](p);r['height']=o,r['item'][cj(0x333)]=o,this['clearBufferData']();}['setBatchRowHeight'](n){n['forEach'](({rowIndex:p,height:r})=>{const ck=b,u=this[ck(0x3bc)]['get'](p);if(u){const v=this['rowKeyMap']['get'](u);v['height']=r,v['item']['_height']=r;}}),this['clearBufferData']();}['setBatchCalculatedRowHeight'](n){return n['every'](({height:o,rowIndex:p})=>this['getPositionForRowIndex'](p)['calculatedHeight']===o)?!0x1:(n['forEach'](({rowIndex:p,height:r})=>{const cl=b,u=this['rowIndexRowKeyMap']['get'](p);if(u){const v=this['rowKeyMap'][cl(0x274)](u),{height:w=-0x1}=this['getMaxRowHeightItem'](u)||{};v['calculatedHeight']=Math['max'](r,w);}}),this['clearBufferData'](),this['getData'](),!0x0);}['getAllRowsData'](){let n=[];const o=p=>{const cm=b;p[cm(0x32e)](r=>{n['push'](r),Array['isArray'](r['children'])&&o(r['children']);});};return o(this['data']),n;}[bH(0x37f)](n){const o=p=>p['map'](r=>{const cn=b;var v,z,B,C,D,E,F,G;const H=r['children']&&Array[cn(0x339)](r['children'])?o(r['children']):void 0x0,I={'hide':(z=(v=this['customHeader'])==null?void 0x0:v['hideData'])==null?void 0x0:z[r['key']],'fixed':(C=(B=this['customHeader'])==null?void 0x0:B['fixedData'])==null?void 0x0:C[r[cn(0x14b)]],'sort':(E=(D=this['customHeader'])==null?void 0x0:D['sortData'])==null?void 0x0:E[r['key']],'width':(G=(F=this['customHeader'])==null?void 0x0:F['resizableData'])==null?void 0x0:G[r['key']]},K={};for(const [N,P]of Object['entries'](I))P!==void 0x0&&(K[N]=P);const L=H&&H['every'](Q=>Q['hide']);return M(Y(M({},r),{'children':H,'hide':L||(typeof r['hide']=='function'?r['hide'](r):r['hide'])}),K);});return o(n);}['getColumns'](){return this['generateColumns'](this['columns']);}['setColumns'](n){this['columns']=n,this['clearBufferData']();}['setData'](n){const cp=bH;this['data']=n,this[cp(0x181)]();}['getData'](){const cq=bH;if(this['bufferData']['length']>0x0)return{'data':this['bufferData'],'sumHeight':this['sumHeight'],'positions':this[cq(0x2c5)]};let n=[],p=0x0;this['sumHeight']=0x0,this['positions']=[];const r=v=>{v['forEach'](w=>{const cu=b;n['push'](w);const x=this['itemRowKeyMap'][cu(0x274)](w),{expand:z,hasChildren:A,height:B,calculatedHeight:C}=this['rowKeyMap']['get'](x),D=this['sumHeight'],E=Math['max'](C,B);this['sumHeight']+=E,this['rowIndexRowKeyMap']['set'](p,x),this['rowKeyRowIndexMap']['set'](x,p),this['positions']['push']({'top':D,'height':E,'bottom':this['sumHeight'],'calculatedHeight':C}),p+=0x1,z&&A&&r(w['children']);});};this[cq(0x3bc)]['clear'](),this[cq(0x1cc)]['clear']();let u=this[cq(0x229)];if(typeof this['filterMethod']=='function'&&(u=this['filterMethod'](u)),this['sortState']['size']){const v=Array['from'](this[cq(0x201)]['entries']())['sort']((w,x)=>w[0x1]['timestamp']-x[0x1]['timestamp']);u=this[cq(0x358)](u,v);}return r(u),this['bufferData']=n,{'data':n,'sumHeight':this['sumHeight'],'positions':this['positions']};}['setFooterData'](n){this['footerData']=n;}['getFooterData'](){return this['footerData'];}['setFilterMethod'](n){const cv=bH;this[cv(0x26f)]=n;}['clearFilterMethod'](){this['filterMethod']=void 0x0;}['getSortState'](n){return this['sortState']['get'](n)||{'direction':'none','timestamp':0x0};}[bH(0x2a7)](n,o){const cw=bH,p=Date['now']();this['ctx']['config']['SORT_STRICTLY']&&this['sortState']['clear'](),o==='none'?this[cw(0x201)]['delete'](n):this['sortState'][cw(0x119)](n,{'direction':o,'timestamp':p}),this[cw(0xf2)]['emit']('sortChange',this['sortState']),this['clearBufferData'](),this['ctx']['emit'](cw(0x329));}['clearSort'](){const cx=bH;this[cx(0x201)]['clear'](),this['ctx'][cx(0x2b9)]('sortChange',this['sortState']),this['clearBufferData'](),this[cx(0xf2)][cx(0x2b9)]('draw');}['sortDataRecursive'](p,r){const cy=bH;let u=[...p];for(const [v,{direction:w}]of r){if(w==='none')continue;const x=this['getColumnByKey'](v);!x||!x['column']['sortBy']||(u=this['applySingleColumnSort'](u,v,w,x['column']['sortBy']));}return u[cy(0x3d3)](z=>(z['children']&&Array['isArray'](z['children'])&&(z['children']=this['sortDataRecursive'](z['children'],r)),z));}['applySingleColumnSort'](n,o,p,r){return n['sort']((v,w)=>{const cz=b,x=v[o],z=w[o];let A=0x0;if(typeof r=='function')A=r(v,w);else{if(r===cz(0x3fd)){const B=Number(x)||0x0,C=Number(z)||0x0;A=B-C;}else{if(r==='string'){const D=String(x||''),E=String(z||'');A=D['localeCompare'](E);}else r==='date'&&(A=Xs(x,z));}}return p==='asc'?A:-A;});}['expandItem'](n,o=!0x1){const cA=bH,p=this['rowKeyMap']['get'](n);p['expand']=o,this['expandMap'][cA(0x119)](n,o),this['clearBufferData'](),this[cA(0xf2)][cA(0x2b9)]('draw');}['setExpandRowKeys'](n,o=!0x0){this['expandMap']['clear'](),n['forEach'](p=>{const cB=b,r=this['rowKeyMap']['get'](p);this['expandMap'][cB(0x119)](p,o),r['expand']=o;}),this['clearBufferData'](),this['ctx']['emit']('draw');}[bH(0x327)](){let n=[];return this['rowKeyMap']['forEach']((o,p)=>{const cC=b;o[cC(0x261)]&&n['push'](p);}),n;}['expandAll'](n){const cD=bH;this['expandMap'][cD(0x40b)](),this[cD(0x380)]['forEach'](o=>{o['expand']=n,this['expandMap']['set'](o['key'],n);}),this['clearBufferData'](),this['ctx']['emit']('draw');}['expandLoading'](n,o=!0x1){const cE=bH,p=this[cE(0x380)]['get'](n);p[cE(0x214)]=o,this['clearBufferData'](),this['ctx']['emit']('draw');}[bH(0x1f8)](n,o){const cF=bH,p=this['rowKeyMap']['get'](n);p['expand']=!0x0,this['expandMap']['set'](n,!0x0),p['expandLazy']=!0x0,p['item']['children']=o,this[cF(0x37c)](p['item']['children'],p['level']+0x1),this['clearBufferData']();}['getIsExpandLoading'](n){const cG=bH;return this[cG(0x380)]['get'](n)['expandLoading'];}['getIsExpandLazy'](n){return this['rowKeyMap']['get'](n)['expandLazy'];}['getIsExpand'](n){const cH=bH;return this['rowKeyMap']['get'](n)[cH(0x261)];}['getRowForRowKey'](n){const cI=bH;return this[cI(0x380)]['get'](n);}[bH(0x19c)](n){const cJ=bH,o=this['getRowKeyForRowIndex'](n);return this['rowKeyMap'][cJ(0x274)](o);}[bH(0x309)](n){const cK=bH;return this[cK(0x3bc)]['get'](n)||'';}['getRowKeyByItem'](n){return this['itemRowKeyMap']['get'](n);}['getRowIndexForRowKey'](n){const cL=bH;return this[cL(0x1cc)]['get'](n);}['getItemValueForRowIndexAndColIndex'](n,o){const cM=bH;if(!(this[cM(0x3bc)][cM(0x2e6)](n)&&this['colIndexKeyMap']['get'](o)))return null;const p=this['rowIndexRowKeyMap']['get'](n),r=this['colIndexKeyMap']['get'](o);return p===void 0x0||r===void 0x0?null:{'rowKey':p,'key':r,'value':this['getItemValue'](p,r)};}['getItemValue'](n,o){const cN=bH,p=this[cN(0x380)]['get'](n);return p&&p['item']?p[cN(0x16c)][o]===void 0x0?null:p[cN(0x16c)][o]:null;}['batchSetItemValue'](n,o=!0x1,p=!0x0,r='none'){return X(this,null,function*(){const cP=b;let v=[],x=p;const z=new Set();let A=[],B=n['map'](G=>{const cO=b,{rowKey:H,key:I}=G;let K=G['value'],L=K;const N=this['getRowDataItemForRowKey'](H),P=this['getItemValue'](H,I),Q=this['getVirtualBodyCellByKey'](H,I);return(Q==null?void 0x0:Q['type'])==='number'&&(['',void 0x0,null][cO(0x225)](K)?L=null:/^-?\d+(\.\d+)?$/['test'](''+K)?L=Number(K):(L=P,A[cO(0x135)](Y(M({},G),{'value':L,'oldValue':P,'row':N})))),Y(M({},G),{'value':L,'oldValue':P,'row':N});});if(B=B['filter'](G=>!A['some'](H=>G['rowKey']===H['rowKey']&&G['key']===H['key'])),A['length']){const G={'code':'ERR_BATCH_SET_NUMBER_VALUE','message':'Assignment\x20failed,\x20not\x20a\x20numeric\x20type','data':A};this['ctx']['emit'](cP(0x13a),G);}if(B=B['filter'](H=>H['oldValue']!==H[cP(0x422)]),!B[cP(0x1ce)])return;const {BEFORE_VALUE_CHANGE_METHOD:C}=this['ctx'][cP(0x19b)];r===cP(0x2fc)&&typeof C=='function'&&(B=yield C(B),x=!0x1),B['forEach'](H=>{const cQ=cP,{value:I,rowKey:K,key:L}=H,N=this[cQ(0x3a7)](K,L);z['add'](K),this['setItemValue'](K,L,I,!0x1,!0x1,!0x1,x),v['push']({'rowKey':K,'key':L,'oldValue':N,'newValue':I});});let D=[];z['forEach'](H=>{const cR=cP;D[cR(0x135)](this['ctx']['database']['getRowDataItemForRowKey'](H));});const E=B['map'](({rowKey:H,key:I})=>this['getValidator'](H,I));Promise['all'](E)[cP(0x12e)](()=>{const cS=cP;this[cS(0x348)]['size']===0x0&&this['changedDataMap']['size']>0x0&&this[cS(0xf2)]['emit']('validateChangedData',this['getChangedData']());});const F=B['map'](H=>{const cT=cP,I=!!this[cT(0x293)](H['rowKey'],H['key'])[cT(0x1ce)];return Y(M({},H),{'errorTip':I});});this[cP(0xf2)]['emit']('change',F,D),o&&this['ctx']['history']['pushState']({'changeList':v,'scrollX':this['ctx']['scrollX'],'scrollY':this['ctx'][cP(0x1d4)],'type':'multiple'}),this['ctx']['emit']('draw');});}['setItemValue'](p,r,u,v=!0x1,w=!0x1,x=!0x1,z=!0x0){return X(this,null,function*(){const cU=b;if(!this['rowKeyMap']['has'](p))return{};const {item:A}=this['rowKeyMap']['get'](p);let B=A[r],C=u;if(z&&this['ctx']['database']['getReadonly'](p,r))return{'oldValue':B,'newValue':B};A[r]!==null&&typeof A[r]=='object'&&(B=JSON['parse'](JSON['stringify'](A[r])));const D=p+'_'+r;this['originalDataMap']['has'](D)||this['originalDataMap']['set'](D,B);const E=this['originalDataMap']['get'](D),F=this['getRowDataItemForRowKey'](p);if(x){const G=this['getVirtualBodyCellByKey'](p,r);if((G==null?void 0x0:G['type'])==='number'){if(['',void 0x0,null]['includes'](u))C=null;else{if(/^-?\d+(\.\d+)?$/[cU(0x3ad)](''+u))C=Number(u);else{C=B;const I={'code':'ERR_SET_NUMBER_VALUE','message':cU(0x12f),'data':[{'rowKey':p,'key':r,'value':C,'oldValue':B,'row':F}]};this['ctx'][cU(0x2b9)](cU(0x13a),I);}}}if(C===B)return{'oldValue':B,'newValue':B};let H=[{'rowKey':p,'key':r,'value':C,'oldValue':B,'row':F}];this[cU(0x2d7)](H,v,!0x1),this['ctx']['emit']('editChange',{'rowKey':p,'key':r,'oldValue':B,'value':C,'originalValue':E,'row':F});}else this['changedDataMap'][cU(0x119)](D,C),A[r]=C;return this['ctx']['hasEvent']('iterationChange')&&this['ctx']['emit']('iterationChange',{'rowKey':p,'key':r,'oldValue':B,'value':C,'originalValue':this['originalDataMap']['get'](D),'row':F}),w&&this[cU(0xf2)]['emit']('draw'),{'oldValue':B,'newValue':C};});}['getRowDataItemForRowKey'](n){if(!this['rowKeyMap']['has'](n))return{};const {item:o}=this['rowKeyMap']['get'](n);return o;}['setRowSelectionByCheckboxKey'](n,p){const {CHECKBOX_KEY:r}=this['ctx']['config'];if(r){if(!this['rowKeyMap']['has'](n))return!0x1;const {item:u}=this['rowKeyMap']['get'](n),v=u[r];this['checkboxKeyMap']['has'](v)&&(this['checkboxKeyMap']['get'](v)||[])['forEach'](w=>{const cV=b,x=this['selectionMap'][cV(0x274)](w);x&&(x['check']=p);});}}[bH(0x257)](n,p){const cW=bH,r=this['rowKeyMap']['get'](n),u=this['selectionMap'][cW(0x274)](n);if(!u)return;p===cW(0x2d0)||p==='tree-selection'?this['toggleTreeSelection'](n):(u[cW(0x256)]=!u['check'],this['setRowSelectionByCheckboxKey'](n,u['check'])),this['ctx'][cW(0x2b9)]('toggleRowSelection',r);const v=this['getSelectionRows']();this['ctx']['emit']('selectionChange',v),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['toggleTreeSelection'](n){const cX=bH,o=this['getTreeSelectionState'](n),p=this['ctx']['config']['TREE_SELECT_MODE'];if(p==='auto')o['checked']&&!o[cX(0x344)]?(this['clearTreeSelectionRecursive'](n),this['setRowSelection'](n,!0x1,!0x1)):(this[cX(0x179)](n),this['setRowSelection'](n,!0x0,!0x1));else{if(p==='cautious')o['checked']&&!o['indeterminate']?(this['clearTreeSelectionRecursive'](n),this['setRowSelection'](n,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](n),this['setRowSelection'](n,!0x0,!0x1));else{if(p==='strictly'){const r=this['selectionMap']['get'](n);r&&(r['check']=!r['check'],this[cX(0x1e3)](n,r[cX(0x256)]));}}}this['ctx'][cX(0x2b9)]('selectionChange',this['getSelectionRows']()),this[cX(0xf2)][cX(0x2b9)]('draw');}['selectTreeSelectionRecursive'](n){const cY=bH;this[cY(0x189)](n)['forEach'](o=>{this['setRowSelectionByParent'](o,!0x0),this['selectTreeSelectionRecursive'](o);});}['clearTreeSelectionRecursive'](n){this['getTreeChildren'](n)['forEach'](o=>{const cZ=b;this['setRowSelectionByParent'](o,!0x1),this[cZ(0x310)](o);});}[bH(0x353)](p){const d0=bH,r=this['getTreeParent'](p);if(!r)return;const u=this['getTreeChildren'](r)['map'](A=>this[d0(0x210)]['get'](A)),v=u['filter'](A=>A==null?void 0x0:A['check'])['length'],w=u['length'];let x=!0x1;w>0x0&&(v===0x0?x=!0x1:v===w||this['ctx']['config']['TREE_SELECT_MODE']==='auto'?x=!0x0:this['ctx'][d0(0x19b)]['TREE_SELECT_MODE']===d0(0x444)&&(x=!0x1));const z=this['selectionMap']['get'](r);z&&z['check']!==x&&(z[d0(0x256)]=x,this[d0(0x1e3)](r,x),this['updateParentTreeSelection'](r));}['setRowSelection'](n,o,p=!0x0){const d1=bH,r=this['selectionMap']['get'](n);r&&(r['check']=o,this['setRowSelectionByCheckboxKey'](n,r['check']),this[d1(0xf2)]['emit']('setRowSelection',o,r[d1(0x204)]),(this['ctx']['config']['TREE_SELECT_MODE']===d1(0x25a)||this[d1(0xf2)]['config']['TREE_SELECT_MODE']==='cautious')&&this['updateParentTreeSelection'](n),p&&(this['bufferCheckState'][d1(0x168)]=!0x1,this[d1(0xf2)]['emit']('draw')));}['setRowSelectionByParent'](n,o){const d2=bH,p=this['selectionMap'][d2(0x274)](n);p&&(p['check']=o,this['setRowSelectionByCheckboxKey'](n,p['check']));}['getSelectionRows'](){let n=[];return this['selectionMap']['forEach'](o=>{o['check']&&n['push'](o['row']);}),n;}['getRowSelection'](n){const d3=bH,o=this['selectionMap']['get'](n);return o?o[d3(0x256)]:!0x1;}['getTreeSelectionState'](p){const d4=bH;if(!this['getRowForRowKey'](p))return{'checked':!0x1,'indeterminate':!0x1};const r=this['selectionMap'][d4(0x274)](p),v=(r==null?void 0x0:r['check'])||!0x1;if(this['getTreeChildren'](p)['length']===0x0)return{'checked':v,'indeterminate':!0x1};let w=!0x1,x=v;if(this[d4(0xf2)]['config']['TREE_SELECT_MODE']==='auto'){const z=E=>{const d5=d4,F=this['getTreeChildren'](E);let G=[];for(const H of F)G[d5(0x135)](H),G['push'](...z(H));return G;},A=z(p)['map'](E=>this['selectionMap']['get'](E)),B=A['filter'](E=>E==null?void 0x0:E[d4(0x256)])['length'],C=A['length'],D=B>0x0;w=D&&B!==C,x=v||D,v&&C>0x0&&B===0x0&&(x=!0x1,w=!0x1);}else{if(this['ctx']['config'][d4(0x3c7)]==='cautious'){const E=L=>{const d6=d4,N=this['getTreeChildren'](L);let P=[];for(const Q of N)P[d6(0x135)](Q),P['push'](...E(Q));return P;},F=E(p)[d4(0x3d3)](L=>this['selectionMap']['get'](L)),G=F[d4(0x365)](L=>L==null?void 0x0:L['check'])['length'],H=F['length'],I=G>0x0,K=G===H;w=I&&!K,x=v||K,v&&H>0x0&&G===0x0&&(x=!0x1,w=!0x1);}else this['ctx'][d4(0x19b)]['TREE_SELECT_MODE']==='strictly'&&(w=!0x1,x=v);}return{'checked':x,'indeterminate':w};}['getTreeChildren'](n){const d7=bH,o=this['getRowForRowKey'](n);if(!o||!o['item']||!o[d7(0x16c)]['children'])return[];const p=[],r=u=>{const d8=d7;for(const v of u){const w=this['getRowKeyByItem'](v);w&&p['push'](w),v['children']&&v[d8(0x205)]['length']>0x0&&r(v['children']);}};return r(o['item']['children']),p;}['getTreeParent'](n){const o=(p,r)=>{for(const u of p){const v=this['getRowKeyByItem'](u);if(u['children'])for(const w of u['children']){if(this['getRowKeyByItem'](w)===r)return v;const x=o(u['children'],r);if(x)return x;}}return null;};return o(this['data'],n);}[bH(0x1fb)](n){const {selectable:o,item:p,rowIndex:r}=this['rowKeyMap']['get'](n);return typeof o=='function'?o({'row':p,'rowIndex':r}):o;}['toggleAllSelection'](){const d9=bH;this['ctx']['config']['TREE_SELECT_MODE']==='auto'||this[d9(0xf2)]['config'][d9(0x3c7)]==='cautious'?this['rowKeyMap']['forEach']((p,r)=>{const da=d9;let u=p['selectable'];if(typeof u=='function'&&(u=u({'row':p['item'],'rowIndex':p['rowIndex']})),u){const v=this[da(0x210)]['get'](r);v&&(v['check']=!0x0,this['setRowSelectionByCheckboxKey'](r,!0x0));}}):this[d9(0x380)]['forEach']((o,p)=>{const db=d9;let r=o['selectable'];typeof r==db(0x3af)&&(r=r({'row':o['item'],'rowIndex':o['rowIndex']})),r&&this['setRowSelection'](p,!0x0,!0x1);});const n=this[d9(0x169)]();this['ctx']['emit']('toggleAllSelection',n),this['ctx'][d9(0x2b9)]('selectionChange',n),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit'](d9(0x329));}[bH(0x192)](n=!0x1){const dc=bH,o=this['ctx']['config'][dc(0x3c7)]==='auto'||this[dc(0xf2)]['config']['TREE_SELECT_MODE']===dc(0x444);n?o?this['rowKeyMap']['forEach']((r,u)=>{const dd=dc,v=this[dd(0x210)]['get'](u);v&&(v['check']=!0x1,this[dd(0x1e3)](u,!0x1));}):this['rowKeyMap']['forEach']((r,u)=>{this['setRowSelection'](u,!0x1,!0x1);}):(this['selectionMap']['clear'](),this[dc(0x380)]['forEach']((r,u)=>{const de=dc;this['selectionMap'][de(0x119)](u,{'check':!0x1,'row':r['item'],'key':u});}));const p=this['getSelectionRows']();this[dc(0xf2)][dc(0x2b9)]('clearSelection'),this[dc(0xf2)][dc(0x2b9)]('selectionChange',p),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}[bH(0x340)](){const df=bH,p=this[df(0x124)],{buffer:r}=p,v=Kt(p,['buffer']);if(r)return v;const w=this['rowKeyMap']['size'];let x=0x0,z=0x0;const A=this['selectionMap']['size'],B=Array['from'](this['selectionMap'][df(0x2b7)]())['some'](G=>G['check']);this['rowKeyMap'][df(0x32e)]((G,H)=>{const dg=df;var I;(I=this['selectionMap']['get'](H))!=null&&I['check']&&(x+=0x1);let K=G['selectable'];typeof K=='function'&&(K=K({'row':G[dg(0x16c)],'rowIndex':G['rowIndex']})),K&&(z+=0x1);});const C=A>w&&x===0x0&&B,D=z&&z>x&&x>0x0||C,E=z!==0x0,F=!!z&&z===x;return this['bufferCheckState']={'buffer':!0x0,'check':F,'indeterminate':D,'selectable':E},{'check':F,'indeterminate':D,'selectable':E};}['updateColIndexKeyMap'](n=[]){this['colIndexKeyMap']['clear'](),n['forEach'](o=>{const dh=b;this['colIndexKeyMap']['set'](o['colIndex'],o[dh(0x14b)]);});}['getColumnByColIndex'](n){var o;const p=this['colIndexKeyMap']['get'](n);if(p&&this['headerMap']['has'](p))return(o=this['headerMap']['get'](p))==null?void 0x0:o['column'];}['getColumnByKey'](n){const o=this['headerMap']['get'](n);if(o)return o;}['getColIndexForKey'](n){const dj=bH;var o;if(n&&this['headerMap']['has'](n))return(o=this['headerMap'][dj(0x274)](n))==null?void 0x0:o['colIndex'];}['getColHeaderByIndex'](n){const dk=bH,o=this[dk(0x3e2)][dk(0x274)](n);if(o&&this['headerMap']['has'](o))return this['headerMap']['get'](o);}[bH(0x1b4)](){let n=[];return this['changedDataMap']['forEach']((p,r)=>{const dl=b,u=this[dl(0xfb)]['get'](r),v=r['split']('_')[0x0],w=r['split']('_')[0x1];u!==p&&n['push']({'rowKey':v,'colKey':w,'originalValue':u,'row':this['ctx']['database']['getRowDataItemForRowKey'](v),'value':p});}),n;}['getChangedRows'](){const dm=bH,n=new Set();this['changedDataMap'][dm(0x32e)]((p,r)=>{const dn=dm,u=this['originalDataMap']['get'](r),v=r['split']('_')[0x0];u!==p&&n[dn(0x2e3)](v);});let o=[];return n['forEach'](p=>{const dp=dm;o[dp(0x135)](this['ctx']['database']['getRowDataItemForRowKey'](p));}),o;}['isHasChangedData'](n,p){const dq=bH,r=n+'_'+p;if(!this['changedDataMap']['has'](r))return!0x1;const u=this[dq(0xfb)]['get'](r),v=this['changedDataMap']['get'](r);return u!==v;}['getPositionForRowIndex'](n){return n<this['positions']['length']?this['positions'][n]:{'height':0x0,'top':0x0,'bottom':0x0,'calculatedHeight':0x0};}['setHeader'](n,o){return n?(this['headerMap']['set'](n,o),!0x0):!0x1;}['getReadonly'](p,r){const du=bH,{DISABLED:u}=this['ctx']['config'];if(u)return!0x0;const v=this['rowKeyMap']['get'](p),w=this['headerMap']['get'](r);if(!v||!w)return!0x0;const x=v['readonly'],z=w['readonly'],{BODY_CELL_READONLY_METHOD:A}=this[du(0xf2)]['config'];if(typeof A=='function'&&w){const B=A({'row':v['item'],'rowIndex':v['rowIndex'],'colIndex':w['colIndex'],'column':w['column'],'value':this['getItemValue'](p,r)});if(B!==void 0x0)return B;}return z||x;}['clearValidate'](){this['validationErrorMap']['clear']();}['hasValidationError'](){const dv=bH;return this[dv(0x348)]['size']!==0x0;}['getValidator'](n,o){return this['ctx']['database']['getReadonly'](n,o)?new Promise(p=>{p([]);}):new Promise(p=>{const dw=b,r=this['rowKeyMap']['get'](n),v=this['headerMap']['get'](o),{BODY_CELL_RULES_METHOD:w}=this['ctx'][dw(0x19b)];if(r===void 0x0||v===void 0x0)return p([]);const x=v['column'];let z=x['rules'];if(typeof w=='function'){const A=w({'row':r[dw(0x16c)],'rowIndex':r['rowIndex'],'colIndex':v['colIndex'],'column':x,'value':this['getItemValue'](n,o)});A&&(z=A);}if(z){const B={'row':r['item'],'rowIndex':r['rowIndex'],'colIndex':v['colIndex'],'column':x,'key':o,'rowKey':n,'value':this['getItemValue'](n,o),'field':o,'fieldValue':this['getItemValue'](n,o)},C=new Hs(z)[dw(0x3fe)](B);this['setValidationError'](n,o,C),p(C);}else this[dw(0x12b)](n,o),p([]);});}['getHeightByRowIndexRowSpan'](n,p){const dx=bH;let r=0x0;for(let u=0x0;u<p;u++){const v=this[dx(0x2c5)][n+u];v&&(r+=v['height']);}return r;}['getSpanInfo'](r){const dy=bH,{rowIndex:z,key:G,rowKey:I,row:K,value:L,colIndex:N,relationRowKeys:P,relationColKeys:Q,rowspan:R,height:V,width:a0,colspan:a1,mergeRow:a2,mergeCol:a3}=r;if(R===0x1&&a1===0x1)return{'xArr':[N,N],'yArr':[z,z],'rowspan':R,'colspan':a1,'height':V,'width':a0,'offsetTop':0x0,'offsetLeft':0x0,'dataList':[{'rowKey':I,'key':G,'row':K,'value':L}]};let a4=z,a5=z,a6=N,a7=N,a8=[],a9=0x0,aa=0x0,ab=0x0,ac=0x0;if(R!==0x1&&a2){ac=a0;const ad=P['reduce']((ae,af)=>{var ag;const ah=(ag=this['getItemValue'](I,af))!=null?ag:'';return''+ae+ah;},'');for(let ae=z-0x1;ae>=0x0;ae--){const af=this['rowIndexRowKeyMap']['get'](ae)||'',ag=P[dy(0xf3)]((ah,aj)=>{var ak;const al=(ak=this['getItemValue'](af,aj))!=null?ak:'';return''+ah+al;},'');if(ad===ag)a4=ae;else break;}for(let ah=z;ah<=this['ctx']['maxRowIndex'];ah++){const aj=this['rowIndexRowKeyMap']['get'](ah)||'',ak=P[dy(0xf3)]((al,am)=>{var ap;const aq=(ap=this['getItemValue'](aj,am))!=null?ap:'';return''+al+aq;},'');if(ad===ak)a5=ah;else break;}for(let al=a4;al<z;al++){const {height:am}=this[dy(0x2c5)][al];a9+=am;}for(let ap=a4;ap<=a5;ap++){const {height:aq}=this['positions'][ap];ab+=aq;const au=this[dy(0x3bc)][dy(0x274)](ap)||'',{item:av}=this['rowKeyMap']['get'](au),aw=this[dy(0x3a7)](au,G);a8['push']({'rowKey':au,'key':G,'value':aw,'row':av});}}if(a1!==0x1&&a3){ab=V;for(let ax=N-0x1;ax>=0x0;ax--){const ay=this['getColumnByColIndex'](ax);if(!ay)break;const az=this[dy(0x3a7)](I,G),aA=this['getItemValue'](I,ay['key']);if(az===aA&&Q['includes'](ay['key']))a6=ax;else break;}for(let aB=N;aB<=this['ctx'][dy(0x178)];aB++){const aC=this[dy(0x407)](aB);if(!aC)break;const aD=this['getItemValue'](I,G),aE=this['getItemValue'](I,aC['key']);if(aD===aE&&Q['includes'](aC['key']))a7=aB;else break;}for(let aF=a6;aF<N;aF++){const aG=this['getColumnByColIndex'](aF);if(!aG)break;aa+=aG['width']||0x64;}for(let aH=a6;aH<=a7;aH++){const aI=this[dy(0x407)](aH);if(!aI)break;ac+=aI[dy(0x28a)]||0x64,a8[dy(0x135)]({'rowKey':I,'key':aI['key'],'value':this[dy(0x3a7)](I,aI[dy(0x14b)]),'row':K});}}return{'xArr':[a6,a7],'yArr':[a4,a5],'rowspan':R,'colspan':a1,'height':ab,'width':ac,'offsetTop':a9,'offsetLeft':aa,'dataList':a8};}['setValidationErrorByRowKey'](p,r,u){const dz=bH,v=p+'_'+r,w=this[dz(0x13f)](p),x=w==null?void 0x0:w['rowIndex'],z=this['getColumnByKey'](r);if(!p||!z||!w)return;const A=this['getItemValue'](p,r),B=[{'key':r,'rowKey':p,'rowIndex':x,'colIndex':z['colIndex'],'column':z['column'],'row':w,'value':A,'message':u,'field':r,'fieldValue':A}];this['validationErrorMap']['set'](v,B);}['setValidationError'](n,o,p){const dA=bH,r=n+'_'+o;this[dA(0x348)][dA(0x119)](r,p);}['clearValidationError'](n,o){const dB=bH,p=n+'_'+o;this['validationErrorMap'][dB(0x2e6)](p)&&this['validationErrorMap']['delete'](p);}['getValidationError'](n,o){const p=n+'_'+o;return this['validationErrorMap']['get'](p)||[];}['getVirtualBodyCell'](n,p,r=!0x0){const u=this['getColumnByColIndex'](p),v=this['getRowForRowIndex'](n);return!u||!v?void 0x0:new Me(this['ctx'],n,p,0x0,0x0,0x0,0x0,u,v['item'],'body',r);}['getVirtualBodyCellByKey'](n,o){const dC=bH,p=this['getRowIndexForRowKey'](n),r=this['getColIndexForKey'](o);if(!(p===void 0x0||r===void 0x0))return this[dC(0x1a1)](p,r);}['hasMergeCell'](p,r){let u=!0x1;for(let v=r[0x0];v<=r[0x1];v++)for(let w=p[0x0];w<=p[0x1];w++){const x=this['getVirtualBodyCell'](v,w);if(x&&(x['rowspan']!==0x1||x['colspan']!==0x1)){u=!0x0;break;}}return u;}['calculateMaxTreeDepth'](n,o=0x0){let p=o;return n['forEach'](r=>{const dD=b;if(Array['isArray'](r[dD(0x205)])&&r['children'][dD(0x1ce)]>0x0){const u=this['calculateMaxTreeDepth'](r['children'],o+0x1);p=Math['max'](p,u);}}),p;}['setOverlayerAutoHeightMap'](n){this['overlayerAutoHeightMap']=n;}[bH(0x267)](){return this['overlayerAutoHeightMap'];}[bH(0x3ca)](n,o){const p=n+'_'+o;return this['overlayerAutoHeightMap']['get'](p)||0x0;}['setCustomHeader'](n,o=!0x1){const dE=bH;if(['fixedData','sortData',dE(0x143),'resizableData']['forEach'](p=>{const dF=dE,r=n[p];r!==void 0x0&&(this[dF(0x2c7)][p]=r);}),!o){const p=this['clearCustomHeaderInvalidValues'](this['columns']);this['ctx']['emit']('customHeaderChange',p);}}['resetCustomHeader'](){const dG=bH;this['customHeader']={},this[dG(0xf2)]['emit'](dG(0x162)),this['ctx'][dG(0x2b9)]('customHeaderChange',this[dG(0x2c7)]);}['getCustomHeader'](){return this['customHeader'];}['setCustomHeaderResizableData'](n,o){let {resizableData:p={}}=this['customHeader'];p[n]=o,this['setCustomHeader']({'resizableData':p});}[bH(0x2b3)](n,o){const dH=bH;let {hideData:p={}}=this['customHeader'];n['forEach'](r=>{p[r]=o;}),this[dH(0x11b)]({'hideData':p}),this['ctx']['emit']('resetHeader');}['setCustomHeaderFixedData'](n,o){let {fixedData:p={}}=this['customHeader'];n['forEach'](r=>{p[r]=o;}),this['setCustomHeader']({'fixedData':p}),this['ctx']['emit']('resetHeader');}['clearCustomHeaderInvalidValues'](n){const o=(r,u={})=>{r['forEach'](v=>{const dI=b;v[dI(0x205)]&&v['children']['length']>0x0&&o(v['children'],u);const w=(x,z)=>{var A,B;const C=(A=this['customHeader'][x])==null?void 0x0:A[v['key']];C!==void 0x0&&C!==z&&(u[x]||(u[x]={}),u[x][v['key']]=C,x==='fixedData'&&!C&&!z&&((B=u[x])==null||delete B[v['key']]));};w('fixedData',v['fixed']),w('sortData',v['sort']),w('hideData',v['hide']),w('resizableData',v['width']);});};let p={};return o(n,p),p;}['setMaxRowHeightItem'](n,o,p){this['maxRowHeightCellMap']['set'](n,{'key':o,'height':p});}['getMaxRowHeightItem'](n){const dJ=bH;return this['maxRowHeightCellMap'][dJ(0x274)](n);}['clearChangeData'](){this['changedDataMap']['clear']();}}class Ps{constructor(n){const dK=bH;h(this,dK(0xf2)),h(this,'history',[]),h(this,'historyIndex',-0x1),this['ctx']=n,this['init']();}['init'](){this['ctx']['on']('keydown',n=>{const dL=b;if(!this['ctx']['editing']){if(n['ctrlKey']&&!n['shiftKey']&&n['code']==='KeyZ'||n[dL(0x2c1)]&&!n['shiftKey']&&n['code']==='KeyZ'){n[dL(0x34b)](),this[dL(0xf2)]['clearSelector'](),this['ctx']['clearAutofill'](),this[dL(0x1bd)]();return;}if(n['ctrlKey']&&n[dL(0x308)]==='KeyY'||n[dL(0x2f9)]&&n[dL(0x18f)]&&n['code']==='KeyZ'||n[dL(0x2c1)]&&n['shiftKey']&&n['code']===dL(0x228)){n[dL(0x34b)](),this['ctx']['clearSelector'](),this[dL(0xf2)]['clearAutofill'](),this['forwardState']();return;}}});}['pushState'](n){const dM=bH,{HISTORY_NUM:o=0x0,ENABLE_HISTORY:p}=this['ctx']['config'];p&&(this['history']['push'](n),this['history'][dM(0x1ce)]>o&&this[dM(0x2a2)][dM(0x24f)](0x0,0x1),this['historyIndex']=this['history']['length']-0x1);}['backState'](){const dN=bH;if(this['historyIndex']>=0x0){const {changeList:n,scrollX:o,scrollY:p}=this['history'][this['historyIndex']],r=n[dN(0x3d3)](u=>({'rowKey':u['rowKey'],'key':u['key'],'value':u['oldValue'],'row':{}}));this['ctx']['setScroll'](o,p),this['ctx']['database'][dN(0x2d7)](r,!0x1,!0x1,'back'),this['historyIndex']-=0x1;}}['forwardState'](){const dO=bH;if(this[dO(0x103)]<this['history']['length']-0x1){this[dO(0x103)]+=0x1;const {changeList:n}=this['history'][this['historyIndex']],o=n['map'](p=>({'rowKey':p['rowKey'],'key':p['key'],'value':p['newValue'],'row':{}}));this[dO(0xf2)]['database']['batchSetItemValue'](o,!0x1,!0x1,'forward');}}['clear'](){this['history']=[],this['historyIndex']=-0x1;}}class Qs{constructor(n){h(this,'eventTasks',new Set()),h(this,'ctx'),this['ctx']=n,this['init']();}['init'](){const dP=bH;this['bind'](window,'resize',this['handleResize']['bind'](this)),this['bind'](window,'mouseup',this['handleMouseUp']['bind'](this)),this[dP(0x382)](window,'mousemove',this['handleMousemove']['bind'](this)),this[dP(0x382)](window,'blur',this['handleOutsideMousedown']['bind'](this)),this['bind'](window,dP(0x33b),this['handleOutsideMousedown']['bind'](this)),this[dP(0x382)](this['ctx']['stageElement'],'click',this[dP(0x38a)]['bind'](this)),this['bind'](window,dP(0x37a),this['handleKeydown']['bind'](this)),this['bind'](this['ctx']['stageElement'],'wheel',this[dP(0x3c6)]['bind'](this),{'passive':!0x1}),this['bind'](this[dP(0xf2)]['stageElement'],'touchstart',this['handleTouchstart'][dP(0x382)](this),{'passive':!0x1}),this[dP(0x382)](this['ctx']['stageElement'],'touchend',this['handleTouchend']['bind'](this)),this['bind'](this['ctx']['stageElement'],'touchmove',this['handleTouchmove']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx']['stageElement'],'contextmenu',this['handleContextMenu']['bind'](this)),this[dP(0x382)](this['ctx']['stageElement'],'mousedown',this['handleMouseDown']['bind'](this)),this['bind'](this['ctx']['stageElement'],dP(0x22b),this[dP(0x23d)]['bind'](this)),this[dP(0x382)](this['ctx']['stageElement'],'mouseover',this['handleMouseover']['bind'](this)),this['bind'](this['ctx']['stageElement'],'mouseout',this['handleMouseout']['bind'](this)),this[dP(0x382)](document,'selectionchange',this[dP(0x1d6)]['bind'](this));}[bH(0x1d6)](){const dQ=bH;this['ctx']['domSelectionStr']='';const n=window[dQ(0x22c)]();n&&n['toString']()&&(this[dQ(0xf2)]['domSelectionStr']=n['toString']());}['clearDomSelection'](){const n=window['getSelection']();n&&!n['isCollapsed']&&n['removeAllRanges']();}[bH(0x3a3)](){Array['from'](this['eventTasks'])['forEach'](({target:n,name:o,fn:p,options:r})=>{this['unbind'](n,o,p,r);}),this['eventTasks']['clear']();}['handleResize'](n){const dR=bH;this['ctx']['emit'](dR(0x162),n),this['ctx']['emit']('resize',n);}['handleMouseDown'](n){const dS=bH;this['clearDomSelection'](),n['button']===0x0&&(this['ctx'][dS(0x33b)]=!0x0),this['ctx']['emit']('mousedown',n);}['handleMousemove'](n){const dT=bH,p=n,r=this['ctx']['containerElement'][dT(0x413)](),u=p['clientX']-r['left'],v=p['clientY']-r['top'];this['ctx'][dT(0x2b5)]=u,this['ctx']['mouseY']=v,this['ctx']['emit']('mousemove',n);}['handleMouseUp'](n){const dU=bH;n['button']===0x0&&(this['ctx']['mousedown']=!0x1),this[dU(0xf2)]['emit']('mouseup',n);}['handleClick'](n){this['ctx']['emit']('click',n);}[bH(0x3f7)](n){const dV=bH,{ENABLE_KEYBOARD:o}=this[dV(0xf2)]['config'];o&&this[dV(0xf2)]['isTarget'](n)&&(this['ctx']['dragHeaderIng']||this[dV(0xf2)]['emit']('keydown',n));}['handleWheel'](n){this['ctx']['emit']('wheel',n);}['handleTouchstart'](n){const dW=bH;this['ctx'][dW(0x2b9)]('touchstart',n);}['handleTouchend'](n){const dX=bH;this[dX(0xf2)]['emit']('touchend',n);}[bH(0x246)](n){this['ctx']['emit']('touchmove',n);}['handleContextMenu'](n){n['preventDefault'](),this['ctx']['emit']('contextMenu',n);}['handleMouseover'](n){const dY=bH;this[dY(0xf2)]['isMouseoverTargetContainer']=!0x0,this['ctx']['emit']('mouseover',n);}[bH(0x11c)](n){this['ctx']['isMouseoverTargetContainer']=!0x1,this['ctx']['emit']('mouseout',n);}['handleDblclick'](n){this['ctx']['emit']('dblclick',n);}['handleOutsideMousedown'](n){const dZ=bH;this['ctx']['selector']['enable']&&(n['target']instanceof Window||n['target']instanceof Node&&!this['ctx'][dZ(0x1f0)][dZ(0x244)](n['target']))&&this['ctx']['emit']('outsideMousedown',n);}[bH(0x382)](n,o,p,r){n['addEventListener'](o,p,r),this['eventTasks']['add']({'target':n,'name':o,'fn':p,'options':r});}['unbind'](n,p,r,u){n['removeEventListener'](p,r,u);for(const v of this['eventTasks'])if(v['target']===n&&v['name']===p&&v['fn']===r){this['eventTasks']['delete'](v);break;}}}class zs{constructor(){h(this,'events',new Map());}['has'](n){return this['events']['has'](n);}['on'](n,o){const p=this['events']['get'](n)||[];p['push'](o),this['events']['set'](n,p);}[bH(0x1c3)](n,o){const p=(...r)=>{o(...r),this['off'](n,p);};return this['on'](n,p),this;}['off'](n,o){const e0=bH,p=this[e0(0x2e9)][e0(0x274)](n);if(p){const r=p['indexOf'](o);r>=0x0&&(p['splice'](r,0x1),p['length']===0x0?this['events']['delete'](n):this[e0(0x2e9)]['set'](n,p));}}[bH(0x2b9)](n,...o){const p=this['events']['get'](n);p&&p['forEach'](r=>{r(...o);});}['destroy'](){this['events']['clear']();}}class Gs{constructor(n){h(this,'ctx'),h(this,'textCacheMap',new Map());const o=n['getContext']('2d');if(!o)throw new Error('canvas\x20context\x20not\x20found');this['ctx']=o;}['clearTextCache'](){this['textCacheMap']['clear']();}['scale'](n){const e1=bH;this[e1(0xf2)]['setTransform'](0x1,0x0,0x0,0x1,0x0,0x0),this['ctx']['scale'](n,n);}[bH(0x441)](){const e2=bH;this[e2(0xf2)]['save']();}['restore'](){this['ctx']['restore']();}['translate'](n,o){this['ctx']['translate'](n,o);}['setCursor'](n='default'){this['ctx']['canvas']['style']['cursor']=n;}['clear'](n=0x0,o=0x0,p,r){const e3=bH;this[e3(0xf2)][e3(0x1a4)](n,o,p||this['ctx']['canvas']['width'],r||this['ctx']['canvas']['height']);}['drawShadow'](p,r,v,w,x){const e4=bH,{fillColor:z,side:A,shadowWidth:B,colorStart:C,colorEnd:D}=x;this['ctx']['save'](),z&&(this['ctx']['fillStyle']=z,this['ctx']['fillRect'](p,r,v,w));let E;switch(A){case'left':E=this['ctx']['createLinearGradient'](p-B,r,p,r),E['addColorStop'](0x0,C),E['addColorStop'](0x1,D),this['ctx']['fillStyle']=E,this['ctx']['fillRect'](p-B,r,B,w);break;case'right':E=this[e4(0xf2)][e4(0x41b)](p+v,r,p+v+B,r),E['addColorStop'](0x0,C),E[e4(0x1c6)](0x1,D),this['ctx']['fillStyle']=E,this['ctx'][e4(0x16f)](p+v,r,B,w);break;case e4(0x238):E=this['ctx']['createLinearGradient'](p,r-B,p,r),E['addColorStop'](0x0,C),E['addColorStop'](0x1,D),this['ctx']['fillStyle']=E,this[e4(0xf2)]['fillRect'](p,r-B,v,B);break;case e4(0x17f):E=this['ctx']['createLinearGradient'](p,r+w,p,r+w+B),E['addColorStop'](0x0,C),E[e4(0x1c6)](0x1,D),this['ctx']['fillStyle']=E,this['ctx']['fillRect'](p,r+w,v,B);break;default:console[e4(0x13a)]('Invalid\x20side\x20specified\x20for\x20shadow');break;}this['ctx']['restore']();}[bH(0x260)](p,r){const e5=bH;var u;if(p['length']<0x4||p['length']%0x2!==0x0)throw new Error('A\x20valid\x20array\x20of\x20points\x20is\x20required\x20to\x20draw\x20a\x20line');this['ctx']['save']();const {borderColor:v='black',borderWidth:w=0x1}=r;this[e5(0xf2)][e5(0x111)](),this['ctx']['moveTo'](p[0x0]-0.5,p[0x1]-0.5);for(let x=0x2;x<p['length'];x+=0x2)this['ctx']['lineTo'](p[x]-0.5,p[x+0x1]-0.5);this['ctx']['strokeStyle']=v,this['ctx']['lineWidth']=w,r['lineDash']&&(this[e5(0xf2)]['lineDashOffset']=(u=r['lineDashOffset'])!=null?u:0x0,this[e5(0xf2)]['setLineDash'](r[e5(0x43c)])),r['fillColor']&&(this[e5(0xf2)]['fillStyle']=r[e5(0x23c)],this['ctx']['fill']()),r['borderColor']&&(this['ctx']['strokeStyle']=r['borderColor']),this['ctx'][e5(0x2ab)](),this[e5(0xf2)]['closePath'](),this['ctx']['restore']();}['drawImage'](n,p,r,u,v){this['ctx']['save'](),this['ctx']['drawImage'](n,p,r,u,v),this['ctx']['restore']();}['drawRect'](p,r,v,w,{borderWidth:x=0x1,borderColor:z,fillColor:A,radius:B=0x0}={}){const e6=bH;if(this['ctx']['save'](),this[e6(0xf2)][e6(0x111)](),A!==void 0x0&&(this['ctx']['fillStyle']=A),z!==void 0x0&&(this[e6(0xf2)]['lineWidth']=x,this['ctx']['strokeStyle']=z),B===0x0)this['ctx'][e6(0x25e)](p-0.5,r-0.5,v,w);else{const [C,D,E,F]=typeof B==e6(0x3fd)?[B,B,B,B]:B;this[e6(0xf2)]['moveTo'](p+C,r),this['ctx'][e6(0x11f)](p+v,r,p+v,r+D,D),this['ctx'][e6(0x11f)](p+v,r+w,p+v-E,r+w,E),this['ctx'][e6(0x11f)](p,r+w,p,r+w-F,F),this['ctx']['arcTo'](p,r,p+C,r,C);}A!==void 0x0&&this['ctx']['fill'](),z!==void 0x0&&this['ctx']['stroke'](),this['ctx']['restore']();}['drawText'](r='',z,G,I,K,L={}){const e7=bH;var P;this[e7(0xf2)]['save']();const {font:Q=e7(0x1b3),align:R='center',color:V='#495060',padding:a0=0x0,verticalAlign:a1='middle',maxLineClamp:a2=0x1,autoRowHeight:a3=!0x1,offsetLeft:a4=0x0,offsetRight:a5=0x0}=L;if(this['ctx']['font']=Q,this['ctx']['fillStyle']=V,this['ctx'][e7(0x30f)]=R,['',null,void 0x0]['includes'](r))return this['ctx']['restore'](),!0x1;const a6=parseInt(((P=Q[e7(0x18d)](/\d+/))==null?void 0x0:P[0x0])||'12')*(L[e7(0x1a5)]||1.2),a7=I-a0*0x2-a4-a5;let a8=!0x1;const a9=Math['round']((K-0x2*a0)/a6);let aa=this['wrapText'](r,a7,L['cacheTextKey']),ab=Math['min'](aa[e7(0x1ce)],Math[e7(0xf9)](a9,0x1));a2==='auto'&&a3?ab=aa['length']:typeof a2=='number'&&a2<ab&&a2!==0x1?ab=a2:(a2===0x1&&(aa=[r],ab=0x1),a2===e7(0x25a)&&a9===0x1&&(aa=[r],ab=0x1));let ac=G+a0;const ad=Math[e7(0x188)](ab*a6);a1==='middle'?ac=G+(K-ad)/0x2:a1===e7(0x17f)&&(ac=G+K-ad-a0);let ae=z+a0+a4;R==='center'?ae=z+I/0x2:R===e7(0x1b9)&&(ae=z+I-a0-a5);for(let af=0x0;af<aa['length'];af++){const ag=aa[af],ah=ac+af*a6;if(this[e7(0xf2)]['textBaseline']=e7(0x238),af===ab-0x1){const aj=aa['slice'](af)['join'](''),{_text:ak,ellipsis:al}=this['handleEllipsis'](aj,I,a0,Q);this['ctx'][e7(0x430)](ak,ae,ah),a8=al;break;}this[e7(0xf2)]['fillText'](ag,ae,ah);}if(L['textCallback']&&aa[e7(0x1ce)]){const am=aa['reduce']((aw,ax)=>Math['max'](aw,this['ctx']['measureText'](ax)['width']),0x0),ap=Math['round'](am);let aq=ae,au=ae+ap;R===e7(0x33e)?(aq=ae-ap/0x2,au=ae+ap/0x2):R==='right'&&(aq=ae-ap,au=ae);const av={'x':ae,'y':ac,'width':ap,'height':ad,'left':aq,'right':au,'top':ac,'bottom':ac+ad};L['textCallback'](av);}return this['ctx']['restore'](),a8;}['wrapText'](p,r,v=''){const e8=bH;if(!p)return[''];if(v&&this['textCacheMap']['has'](v))return this['textCacheMap']['get'](v)||[''];const w=[],x=p[e8(0x3b2)]('\x0a');for(const A of x){if(A===''){w['push']('');continue;}const B=A['split']('');let C='';for(const D of B){const E=C+D;this['ctx']['measureText'](E)['width']<=r?C=E:C?(w['push'](C),C=D):(w['push'](D),C='');}C&&w[e8(0x135)](C);}const z=w['length']>0x0?w:[''];return v&&this['textCacheMap']['set'](v,z),z;}['calculateTextHeight'](p='',r,v={}){const e9=bH;var z;const {font:A='12px\x20Arial',padding:B=0x0,align:C=e9(0x33e),color:D='#495060',maxLineClamp:E=0x1,cacheTextKey:F=''}=v;this['ctx']['save'](),this['ctx']['font']=A,this['ctx'][e9(0x1ee)]=D,this['ctx'][e9(0x30f)]=C;const G=parseInt(((z=A['match'](/\d+/))==null?void 0x0:z[0x0])||'12'),H=G*(v['lineHeight']||1.2),I=r-B*0x2,K=this['wrapText'](p,I,F);let L=0x1;return E==='auto'?L=K['length']:K['length']>E?L=E:L=K['length'],this['ctx']['restore'](),Math[e9(0xf9)](Math[e9(0x299)](L*H+B*0x2),Math[e9(0x299)](G+B*0x2));}['handleEllipsis'](p,r,v=0x0,w='12px\x20Arial'){const ea=bH;this['ctx'][ea(0x441)]();let x=!0x1,z=p;if(this['ctx']['font']=w,p==null||p==='')return this['ctx']['restore'](),{'_text':'','ellipsis':x};const A=this['ctx']['measureText']('...')['width'];if(r<=A+v*0x2)return this[ea(0xf2)]['restore'](),{'_text':'','ellipsis':!0x0};const B=this['ctx']['measureText'](p)['width'],C=r-v*0x2;if(B&&B>=C){x=!0x0;let D=0x0;for(let E=0x0;E<p['length'];E++)if(D+=this[ea(0xf2)]['measureText'](p[E])['width'],D>=C-A){z=p['slice'](0x0,E)+'...',x=!0x0;break;}}return this['ctx']['restore'](),{'_text':z,'ellipsis':x};}}class li{constructor(n){const eb=bH;h(this,eb(0x1ff),{}),h(this,eb(0x37d),'e-virt-table'),h(this,'ICONS',[]),h(this,'ROW_KEY',''),h(this,'DISABLED',!0x1),h(this,'HEADER_FONT','12px\x20normal\x20Arial'),h(this,eb(0x185),'12px\x20normal\x20Arial'),h(this,'BORDER',!0x0),h(this,eb(0x132),!0x1),h(this,'STRIPE_COLOR','#fafafa'),h(this,'BORDER_COLOR','#e1e6eb'),h(this,'HEIGHT',0x0),h(this,'PLACEHOLDER_COLOR','#CDD0DC'),h(this,'EMPTY_BODY_HEIGHT',0x78),h(this,'EMPTY_CUSTOM_STYLE',{}),h(this,eb(0x306),'只允许输入数字'),h(this,'EMPTY_TEXT',eb(0x26d)),h(this,eb(0x11e),'加载中...'),h(this,'MAX_HEIGHT',0x3e8),h(this,eb(0x1ed),0x8),h(this,eb(0x2c9),!0x1),h(this,'OFFSET_HEIGHT',0x0),h(this,'HEADER_HEIGHT',0x24),h(this,'ENABLE_HEADER_STICKY',!0x1),h(this,'HEADER_BG_COLOR','#F8FAFF'),h(this,eb(0x172),eb(0x29d)),h(this,'HEADER_TEXT_COLOR','#1D2129'),h(this,'REQUIRED_COLOR','#F56C6C'),h(this,'BODY_TEXT_COLOR','#4E5969'),h(this,'FOOTER_TEXT_COLOR','#4E5969'),h(this,'LOADING_ICON_SVG',''),h(this,'LOADING_ICON_COLOR','#4E5969'),h(this,'EXPAND_ICON_SVG',''),h(this,'SHRINK_ICON_SVG',''),h(this,'EXPAND_ICON_COLOR','#4E5969'),h(this,'SHRINK_ICON_COLOR','#4E5969'),h(this,eb(0x3ab),'red'),h(this,'ERROR_TIP_ICON_SIZE',0x6),h(this,'COLUMNS_ALIGN','left'),h(this,'COLUMNS_VERTICAL_ALIGN','middle'),h(this,'EXPAND_LAZY',!0x0),h(this,eb(0x203),!0x1),h(this,'CELL_WIDTH',0x64),h(this,'CELL_HEIGHT',0x24),h(this,'CELL_PADDING',0x8),h(this,'CELL_HOVER_ICON_SIZE',0xe),h(this,eb(0x3b9),'#fff'),h(this,'CELL_HOVER_ICON_BORDER_COLOR','#DDE0EA'),h(this,eb(0x148),0xe),h(this,'SCROLLER_SIZE',0x8),h(this,'SCROLLER_COLOR','#dee0e3'),h(this,'SCROLLER_TRACK_COLOR',eb(0x2e1)),h(this,'SCROLLER_FOCUS_COLOR','#bbbec4'),h(this,'SELECT_BORDER_COLOR','rgb(82,146,247)'),h(this,eb(0x1af),'rgba(82,146,247,0.1)'),h(this,'SELECT_ROW_COL_BG_COLOR','transparent'),h(this,'AUTOFILL_POINT_BORDER_COLOR','#fff'),h(this,eb(0x101),'#fcf6ed'),h(this,'CHECKBOX_KEY',''),h(this,'CHECKBOX_COLOR','rgb(82,146,247)'),h(this,'FINDER_CELL_BG_COLOR','rgb(255,229,144)'),h(this,'ENABLE_FINDER',!0x0),h(this,'CHECKBOX_SIZE',0x14),h(this,eb(0x15b),''),h(this,'CHECKBOX_DISABLED_COLOR',eb(0x40f)),h(this,eb(0x152),''),h(this,'CHECKBOX_UNCHECK_SVG',''),h(this,'CHECKBOX_UNCHECK_COLOR','#DDE0EA'),h(this,'CHECKBOX_INDETERMINATE_SVG',''),h(this,'CHECKBOX_CHECK_DISABLED_SVG',''),h(this,'CHECKBOX_CHECK_DISABLED_COLOR','#DDE0EA'),h(this,eb(0x27d),''),h(this,'ICON_EDIT_COLOR',eb(0x1e9)),h(this,'ICON_SELECT_SVG',''),h(this,'ICON_SELECT_COLOR','#4E5969'),h(this,'SORT_STRICTLY',!0x0),h(this,'SORT_ASC_ICON_SVG',''),h(this,'SORT_DESC_ICON_SVG',''),h(this,'SORTABLE_ICON_SVG',''),h(this,'SORT_ICON_COLOR','rgb(82,146,247)'),h(this,'READONLY_COLOR',eb(0x2e1)),h(this,'READONLY_TEXT_COLOR','#4E5969'),h(this,'ERROR_TIP_COLOR','#ED3F14'),h(this,eb(0x3b4),'#fafafa'),h(this,'FOOTER_FIXED',!0x0),h(this,'FOOTER_POSITION','bottom'),h(this,eb(0x1da),0x24),h(this,'ENABLE_SELECTOR',!0x0),h(this,'TREE_SELECT_MODE','auto'),h(this,eb(0x3f4),'children'),h(this,eb(0x235),0x14),h(this,eb(0x270),0x14),h(this,eb(0x32f),!0x1),h(this,eb(0x265),'#e1e6eb'),h(this,eb(0x3cb),!0x1),h(this,'ENABLE_EDIT_CLICK_SELECTOR',!0x0),h(this,'SELECTOR_AREA_MIN_X',0x0),h(this,'SELECTOR_AREA_MAX_X_OFFSET',0x0),h(this,'SELECTOR_AREA_MAX_X',0x0),h(this,'SELECTOR_AREA_MIN_Y',0x0),h(this,eb(0x20e),0x0),h(this,'SELECTOR_AREA_MAX_Y_OFFSET',0x0),h(this,eb(0x248),'value'),h(this,'ENABLE_AUTO_THEME',!0x0),h(this,'ENABLE_SELECTOR_SINGLE',!0x1),h(this,'ENABLE_SELECTOR_SPAN_COL',!0x0),h(this,'ENABLE_SELECTOR_SPAN_ROW',!0x0),h(this,'ENABLE_SELECTOR_ALL_ROWS',!0x0),h(this,'ENABLE_SELECTOR_ALL_COLS',!0x0),h(this,'ENABLE_MERGE_CELL_LINK',!0x1),h(this,'ENABLE_AUTOFILL',!0x1),h(this,'ENABLE_AUTOFILL_SPAN_COL',!0x0),h(this,'ENABLE_AUTOFILL_SPAN_ROW',!0x0),h(this,'ENABLE_CONTEXT_MENU',!0x1),h(this,'ENABLE_HEADER_CONTEXT_MENU',!0x1),h(this,'ENABLE_COPY',!0x0),h(this,'ENABLE_PASTER',!0x0),h(this,'ENABLE_RESIZE_ROW',!0x0),h(this,eb(0x35c),!0x0),h(this,'RESIZE_ROW_LINE_COLOR','#e1e6eb'),h(this,eb(0x42d),eb(0x21e)),h(this,eb(0x1fc),!0x0),h(this,'RESIZE_COLUMN_TEXT_COLOR','#fff'),h(this,eb(0x38d),'rgb(82,146,247)'),h(this,'RESIZE_ROW_MIN_HEIGHT',0x24),h(this,'RESIZE_COLUMN_MIN_WIDTH',0x28),h(this,'DRAG_TIP_BG_COLOR',eb(0x19d)),h(this,'DRAG_TIP_LINE_COLOR','rgb(82,146,247)'),h(this,'ENABLE_KEYBOARD',!0x0),h(this,'ENABLE_HISTORY',!0x1),h(this,eb(0x2e8),!0x0),h(this,'HISTORY_NUM',0x32),h(this,eb(0x400),!0x1),h(this,'HIGHLIGHT_HOVER_ROW_COLOR','rgba(186,203,231,0.1)'),h(this,'HIGHLIGHT_SELECTED_ROW',!0x1),h(this,eb(0x2cf),'rgba(82,146,247,0.1)'),h(this,'TOOLTIP_BG_COLOR','#303133'),h(this,'TOOLTIP_TEXT_COLOR','#fff'),h(this,'TOOLTIP_ZINDEX',0xbb8),h(this,'TOOLTIP_CUSTOM_STYLE',{}),h(this,eb(0x15e),[{'label':'复制','value':eb(0x275)},{'label':'剪切','value':'cut'},{'label':'粘贴','value':'paste'},{'label':'清空选中内容','value':eb(0x2de)}]),h(this,'CUSTOM_BODY_CONTEXT_MENU',[]),h(this,'HEADER_CONTEXT_MENU',[{'label':'左固定','value':'fixedLeft'},{'label':'右固定','value':'fixedRight'},{'label':'取消固定','value':'fixedNone'},{'label':'隐藏','value':'hide'},{'label':'显示','value':'visible'},{'label':eb(0x3d4),'value':'resetHeader'}]),h(this,'CUSTOM_HEADER_CONTEXT_MENU',[]),h(this,'CELL_LINE_HEIGHT',1.3),h(this,'AUTO_ROW_HEIGHT',!0x1),h(this,'ENABLE_DRAG_COLUMN',!0x1),h(this,'HEADER_CELL_STYLE_METHOD'),h(this,eb(0x1d9)),h(this,'FOOTER_CELL_STYLE_METHOD'),h(this,'BODY_CELL_READONLY_METHOD'),h(this,'BODY_CELL_FORMATTER_METHOD'),h(this,'BODY_CELL_RULES_METHOD'),h(this,'BODY_CELL_TYPE_METHOD'),h(this,'BODY_CELL_EDITOR_METHOD'),h(this,'BODY_CELL_RENDER_METHOD'),h(this,'BODY_CELL_HOVER_ICON_METHOD'),h(this,eb(0x22a)),h(this,'SELECTABLE_METHOD'),h(this,'EXPAND_LAZY_METHOD'),h(this,'BEFORE_VALUE_CHANGE_METHOD'),h(this,'BEFORE_PASTE_DATA_METHOD'),h(this,'BEFORE_AUTOFILL_DATA_METHOD'),h(this,'BEFORE_SET_SELECTOR_METHOD'),h(this,eb(0x2c8)),h(this,'BEFORE_HEADER_CONTEXT_MENU_METHOD'),h(this,'BEFORE_BODY_CONTEXT_MENU_METHOD'),h(this,'BEFORE_COPY_METHOD'),this['_config']=n,this['updateCssVar']();}['init'](n){this['_config']=n,this['updateCssVar']();}['updateCssVar'](){const ed=bH;let n={};Object['keys'](this)['forEach'](o=>{const ec=b;if(o['endsWith'](ec(0x408))||o['endsWith'](ec(0x2cd))){const p='--evt-'+o[ec(0x3ac)]()[ec(0x164)](/_/g,'-'),r=Ys(p);r&&(n[o]=r);}}),Object['assign'](this,n,this[ed(0x1ff)]);}}const Gt='<svg\x20t=\x221724122015492\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224237\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M401.472\x20316.992l159.04\x20217.664L591.488\x20512l-30.976-22.656-159.04\x20217.728q-2.24\x203.008-3.84\x206.464-1.6\x203.456-2.496\x207.104-0.896\x203.648-1.024\x207.424-0.192\x203.84\x200.384\x207.552\x200.64\x203.712\x201.92\x207.296\x201.28\x203.52\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992\x203.072\x202.24\x206.464\x203.84\x203.456\x201.6\x207.168\x202.496\x203.648\x200.896\x207.424\x201.024\x203.776\x200.192\x207.488-0.448\x203.776-0.576\x207.296-1.856\x203.584-1.28\x206.784-3.264\x203.2-1.92\x206.016-4.48\x202.816-2.56\x205.056-5.632l159.04-217.728q3.584-4.928\x205.504-10.752\x201.92-5.76\x201.92-11.904\x200-6.08-1.92-11.904-1.92-5.76-5.504-10.752L463.488\x20271.68q-2.24-3.072-5.056-5.632-2.752-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.52-1.28-7.296-1.856-3.712-0.576-7.488-0.448-3.84\x200.192-7.424\x201.088-3.712\x200.896-7.168\x202.496-3.392\x201.6-6.4\x203.84-3.136\x202.176-5.696\x204.992-2.56\x202.752-4.48\x206.016-1.984\x203.2-3.264\x206.784-1.28\x203.52-1.92\x207.296-0.576\x203.712-0.384\x207.488\x200.128\x203.84\x201.024\x207.488\x200.896\x203.648\x202.496\x207.04\x201.6\x203.456\x203.84\x206.528z\x20m30.976-61.056q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.24-3.52\x201.408-6.656\x203.52-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.232\x201.408\x203.456\x203.52\x206.592\x202.112\x203.2\x204.8\x205.824\x202.688\x202.688\x205.76\x204.8\x203.2\x202.112\x206.72\x203.52\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.656\x201.472-3.52\x202.24-7.232\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.456-3.52-6.592-2.112-3.2-4.8-5.824-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.52-3.52-1.472-7.232-2.24Q436.224\x20256\x20432.448\x20256z\x20m0\x20435.392q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.176-3.52\x201.472-6.656\x203.584-3.2\x202.112-5.824\x204.736-2.688\x202.688-4.8\x205.824-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.76\x202.688\x202.752\x205.76\x204.8\x203.2\x202.112\x206.72\x203.584\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.472\x206.592-3.584\x203.2-2.048\x205.824-4.736\x202.688-2.688\x204.8-5.824\x202.112-3.2\x203.52-6.656\x201.472-3.456\x202.24-7.168\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.52-3.52-6.656-2.112-3.136-4.8-5.76-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704z\x22\x20p-id=\x224238\x22></path></svg>',ci='<svg\x20t=\x221722595535853\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M640\x20128H384c-170.496\x200-256\x2085.504-256\x20256v256c0\x20170.496\x2085.504\x20256\x20256\x20256h256c170.496\x200\x20256-85.504\x20256-256V384c0-170.496-85.504-256-256-256z\x20m67.584\x20302.592c-2.048\x204.608-4.608\x208.704-8.192\x2012.288L506.88\x20634.88c-3.584\x203.584-7.68\x206.144-12.288\x208.192-4.608\x202.048-9.728\x203.072-14.848\x203.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848\x200-2.56\x200-5.12\x201.024-7.68\x200.512-2.56\x201.024-5.12\x202.048-7.168\x201.024-2.56\x202.048-4.608\x203.584-6.656\x201.536-2.048\x203.072-4.096\x204.608-5.632\x201.536-2.048\x203.584-3.584\x205.632-4.608\x202.048-1.536\x204.096-2.56\x206.656-3.584\x202.56-1.024\x204.608-1.536\x207.168-2.048\x202.56-0.512\x205.12-0.512\x207.68-0.512\x205.12\x200\x2010.24\x201.024\x2014.848\x203.072\x204.608\x202.048\x208.704\x204.608\x2012.288\x208.192l69.12\x2068.608L645.12\x20389.12c3.584-3.584\x207.68-6.144\x2012.288-8.192\x204.608-2.048\x209.728-3.072\x2014.848-3.072\x202.56\x200\x205.12\x200\x207.68\x200.512s5.12\x201.024\x207.168\x202.048c2.56\x201.024\x204.608\x202.048\x206.656\x203.584\x202.048\x201.536\x204.096\x203.072\x205.632\x204.608\x201.536\x201.536\x203.584\x203.584\x204.608\x205.632\x201.536\x202.048\x202.56\x204.096\x203.584\x206.656\x201.024\x202.56\x201.536\x204.608\x202.048\x207.168\x200.512\x202.56\x201.024\x205.12\x201.024\x207.68\x200\x205.12-1.024\x2010.24-3.072\x2014.848z\x22\x20p-id=\x224552\x22></path></svg>',di=bH(0x1ad),He=bH(0x194),Vs=He['replace']('fill=\x22currentColor\x22\x20p-id=\x222016\x22','fill=\x22#bec4c7\x22\x20p-id=\x222016\x22'),Us=He['replace']('fill=\x22currentColor\x22\x20p-id=\x222015\x22',bH(0x42a)),Gi='<svg\x20t=\x221724133395728\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x222893\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M512\x20226.8476541a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304692c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497779v122.20814825a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778v-122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497779\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304692z\x20m0\x20407.36049415a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304691c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497778v122.20814827a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497776\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497776v-122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304691zM797.1523459\x20512a19.82487759\x2019.82487759\x200\x200\x201-5.70304692\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497779\x205.70304693h-122.20814825a19.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304693h122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497779\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304692\x2014.66497778z\x20m-407.36049415\x200a19.82487759\x2019.82487759\x200\x200\x201-5.70304691\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693h-122.20814827a19.82487759\x2019.82487759\x200\x200\x201-14.66497776-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497776-5.70304693h122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304691\x2014.66497778zM310.22076878\x20310.22076878a21.29137537\x2021.29137537\x200\x200\x201\x2014.66497779-5.70304693c5.51294514\x200\x2010.18401235\x201.90101585\x2014.01320099\x205.70304693l86.55052591\x2086.57768347a20.91117183\x2020.91117183\x200\x200\x201\x205.73020449\x2014.31193182\x2019.28172983\x2019.28172983\x200\x200\x201-6.05609289\x2014.013201\x2019.11878565\x2019.11878565\x200\x200\x201-14.013201\x206.05609289\x2020.96548698\x2020.96548698\x200\x200\x201-14.31193182-5.70304692L310.22076878\x20338.87178998a19.06447114\x2019.06447114\x200\x200\x201-5.70304693-14.01320099c0-5.54010272\x201.90101585-10.42842865\x205.70304693-14.66497778z\x20m288.32975775\x20288.32975775a19.79772001\x2019.79772001\x200\x200\x201\x2014.3390894-6.35482371c5.29568642\x200\x2010.04822572\x202.11827457\x2014.31193182\x206.38198066l86.57768347\x2086.55052651c3.80203107\x203.80203107\x205.70304692\x208.47309828\x205.70304691\x2014.01320102a19.55330372\x2019.55330372\x200\x200\x201-6.05609225\x2014.31193182\x2019.66193339\x2019.66193339\x200\x200\x201-14.31193245\x206.05609288\x2019.01015661\x2019.01015661\x200\x200\x201-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001\x2019.79772001\x200\x200\x201-6.38198129-14.31193245c0-5.29568642\x202.11827457-10.07538268\x206.38198129-14.33908939zM713.77923122\x20310.22076878c3.80203107\x204.26370672\x205.70304692\x209.15203265\x205.70304693\x2014.66497779s-1.90101585\x2010.18401235-5.70304693\x2014.01320099l-86.57768347\x2086.55052591a20.91117183\x2020.91117183\x200\x200\x201-14.31193182\x205.73020449\x2019.28172983\x2019.28172983\x200\x200\x201-14.013201-6.05609289\x2019.11878565\x2019.11878565\x200\x200\x201-6.05609289-14.013201c0-5.29568642\x201.90101585-10.07538268\x205.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107\x208.50025585-5.70304692\x2014.01320099-5.70304693\x205.54010272\x200\x2010.40127108\x201.90101585\x2014.66497779\x205.70304693zM425.44947347\x20598.57768347a19.79772001\x2019.79772001\x200\x200\x201\x206.35482371\x2014.33908939c0\x205.29568642-2.11827457\x2010.04822572-6.38198066\x2014.31193245L338.89894756\x20713.77923122a19.06447114\x2019.06447114\x200\x200\x201-14.01320099\x205.70304693\x2019.55330372\x2019.55330372\x200\x200\x201-14.31193245-6.05609227\x2019.68909035\x2019.68909035\x200\x200\x201-6.05609227-14.31193245\x2019.01015661\x2019.01015661\x200\x200\x201\x205.70304693-14.01320099l86.57768347-86.55052591a19.79772001\x2019.79772001\x200\x200\x201\x2014.31193182-6.38198129c5.29568642\x200\x2010.07538268\x202.11827457\x2014.3390894\x206.38198129z\x22\x20fill=\x22#000000\x22\x20fill-opacity=\x22.65\x22\x20p-id=\x222894\x22></path></svg>';class Js{constructor(n){const ef=bH;h(this,ef(0xf2)),h(this,'list',[{'name':'loading','configName':'LOADING_ICON_SVG','configColorName':'LOADING_ICON_COLOR','svg':Gi,'color':'#4E5969'},{'name':ef(0x261),'configName':ef(0x26e),'configColorName':'EXPAND_ICON_COLOR','svg':Gt,'color':'#4E5969'},{'name':'shrink','configName':'SHRINK_ICON_SVG','configColorName':'SHRINK_ICON_COLOR','svg':di,'color':ef(0x1e9)},{'name':'checkbox-uncheck','configName':ef(0x20f),'configColorName':'CHECKBOX_UNCHECK_COLOR','svg':'<svg\x20t=\x221722595639920\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224708\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20p-id=\x224709\x22></path></svg>','color':''},{'name':'checkbox-check','configName':'CHECKBOX_CHECK_SVG','configColorName':'CHECKBOX_COLOR','svg':ci,'color':'rgb(82,146,247)'},{'name':'checkbox-indeterminate','configName':'CHECKBOX_INDETERMINATE_SVG','configColorName':'CHECKBOX_COLOR','svg':'<svg\x20t=\x221722595280953\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224394\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20384v256q0\x2012.608\x201.28\x2025.088\x201.216\x2012.544\x203.648\x2024.832\x202.432\x2012.352\x206.08\x2024.384t8.448\x2023.68q4.864\x2011.584\x2010.752\x2022.72\x205.952\x2011.072\x2012.928\x2021.504\x207.04\x2010.496\x2014.976\x2020.224\x208\x209.728\x2016.896\x2018.56\x208.896\x208.96\x2018.56\x2016.896\x209.728\x208\x2020.224\x2014.976\x2010.432\x207.04\x2021.504\x2012.928\x2011.136\x205.888\x2022.72\x2010.688\x2011.648\x204.864\x2023.68\x208.512\x2012.032\x203.648\x2024.32\x206.08\x2012.352\x202.432\x2024.896\x203.712Q371.392\x20896\x20384\x20896h256q12.608\x200\x2025.088-1.28\x2012.544-1.216\x2024.832-3.648\x2012.352-2.432\x2024.384-6.08t23.68-8.512q11.584-4.8\x2022.72-10.688\x2011.072-5.952\x2021.504-12.928\x2010.496-7.04\x2020.224-14.976\x209.728-8\x2018.56-16.896\x208.96-8.832\x2016.896-18.56\x208-9.728\x2014.976-20.224\x207.04-10.432\x2012.928-21.504\x205.888-11.136\x2010.688-22.72\x204.864-11.648\x208.512-23.68\x203.648-12.032\x206.08-24.32\x202.432-12.352\x203.712-24.896Q896\x20652.608\x20896\x20640V384q0-12.608-1.28-25.088-1.216-12.544-3.648-24.832-2.432-12.352-6.08-24.384t-8.512-23.68q-4.8-11.584-10.688-22.72-5.952-11.072-12.928-21.504-7.04-10.496-14.976-20.224-8-9.664-16.896-18.56-8.832-8.96-18.56-16.896-9.728-8-20.224-14.976-10.432-7.04-21.504-12.928-11.136-5.888-22.72-10.752-11.648-4.8-23.68-8.448-12.032-3.648-24.32-6.08-12.352-2.432-24.896-3.712Q652.608\x20128\x20640\x20128H384q-12.608\x200-25.088\x201.28-12.544\x201.216-24.832\x203.648-12.352\x202.432-24.384\x206.08t-23.68\x208.448q-11.584\x204.864-22.72\x2010.752-11.072\x205.952-21.504\x2012.928-10.496\x207.04-20.224\x2014.976-9.664\x208-18.56\x2016.896-8.96\x208.896-16.896\x2018.56-8\x209.728-14.976\x2020.224-7.04\x2010.432-12.928\x2021.504-5.888\x2011.136-10.752\x2022.72-4.8\x2011.648-8.448\x2023.68-3.648\x2012.032-6.08\x2024.32-2.432\x2012.352-3.712\x2024.896Q128\x20371.392\x20128\x20384z\x20m566.016\x20166.336H330.112a38.4\x2038.4\x200\x200\x201\x200-76.8h363.904a38.4\x2038.4\x200\x200\x201\x200\x2076.8z\x22\x20p-id=\x224395\x22></path></svg>','color':'rgb(82,146,247)'},{'name':'checkbox-check-disabled','configName':'CHECKBOX_CHECK_DISABLED_SVG','svg':ci,'color':'#DDE0EA'},{'name':'checkbox-disabled','configName':'CHECKBOX_DISABLED_SVG','configColorName':'CHECKBOX_DISABLED_COLOR','svg':'<svg\x20t=\x221722595946663\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224865\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x22\x20p-id=\x224866\x22></path><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20fill=\x22#DDE0EA\x22\x20p-id=\x224867\x22></path></svg>','color':'#F1F2F4'},{'name':'icon-edit','configName':ef(0x27d),'configColorName':'ICON_EDIT_COLOR','svg':'<svg\x20t=\x221744798692576\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x226606\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M855.296\x20894.528H168.768v-76.8h686.528v76.8z\x20m38.4-38.4q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.824\x204.8-3.2\x202.112-6.656\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.52-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.76\x204.736\x202.752\x202.688\x204.864\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488z\x20m-686.528\x200q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.76\x204.8-3.2\x202.112-6.72\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.456-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.824\x204.736\x202.688\x202.688\x204.8\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488zM652.032\x20211.2l-369.92\x20370.368v89.344h90.048l369.664-369.856L652.032\x20211.2z\x20m-54.4-54.272q22.528-22.528\x2054.4-22.528\x2031.808\x200\x2054.336\x2022.528l89.792\x2089.856q22.464\x2022.464\x2022.464\x2054.272t-22.464\x2054.272l-369.664\x20369.856q-22.464\x2022.528-54.336\x2022.528H282.24q-31.808\x200-54.336-22.528-22.464-22.464-22.464-54.272V581.568q0-31.808\x2022.4-54.272l369.92-370.368z\x22\x20p-id=\x226607\x22></path></svg>','color':'#4E5969'},{'name':'icon-select','configName':'ICON_SELECT_SVG','configColorName':'ICON_SELECT_COLOR','svg':di,'color':'#4E5969'},{'name':'sort-asc','configName':'SORT_ASC_ICON_SVG','configColorName':'SORT_ICON_COLOR','svg':Vs,'color':'rgb(82,146,247)'},{'name':'sort-desc','configName':ef(0x3c2),'configColorName':'SORT_ICON_COLOR','svg':Us,'color':'rgb(82,146,247)'},{'name':'sort-default','configName':'SORTABLE_ICON_SVG','svg':He,'color':'#bec4c7'}]),h(this,'icons',new Map()),this['ctx']=n,this['init']();}['init'](){return X(this,null,function*(){const eg=b,p=[];for(let r=0x0;r<this['list'][eg(0x1ce)];r++){const u=this['list'][r];let v=u['color'],w=u['svg'];if(u['configColorName']){const z=this['ctx']['config'][u['configColorName']];z&&(v=z);}if(u['configName']){const A=this['ctx']['config'][u['configName']];A&&(w=A);}const x=this['createImageFromSVG'](w,v)['then'](B=>{const eh=eg;this[eh(0x3e9)]['set'](u[eh(0x411)],B);});p[eg(0x135)](x);}for(let B=0x0;B<this['ctx'][eg(0x19b)][eg(0x128)]['length'];B++){const C=this['ctx']['config']['ICONS'][B];let D=C['color'];const E=this['createImageFromSVG'](C[eg(0x2f5)],D,C['isBlob'])['then'](F=>{this['icons']['set'](C['name'],F);});p[eg(0x135)](E);}yield Promise['all'](p),this['ctx'][eg(0x2b9)]('draw');});}['createImageFromSVG'](n,o,p=!0x1){return X(this,null,function*(){const ei=b,r=new DOMParser()['parseFromString'](n,'image/svg+xml')['documentElement'];o&&r['querySelectorAll']('*')['forEach'](w=>{const x=w['getAttribute']('fill');(x==='currentColor'||x===null)&&w['setAttribute']('fill',o);});const u=new Image();let v='';if(p){const w=new Blob([new XMLSerializer()['serializeToString'](r)],{'type':'image/svg+xml'});v=URL[ei(0x1be)](w);}else v=ei(0x1ac)+encodeURIComponent(new XMLSerializer()['serializeToString'](r));return u['src']=v,new Promise((x,z)=>{const ej=ei;u['onerror']=()=>z(new Error(ej(0x153)+n)),u['onload']=()=>{x(u);};});});}['get'](n){return this['icons']['get'](n);}['getSvg'](n){const ek=bH;return this[ek(0x23f)]['find'](o=>o['name']===n);}}class Ce extends zi{constructor(p,r,u,v,w,x,z){const el=bH;super(p,u,v,w,x,'header',z[el(0x1c0)]),h(this,'align'),h(this,'hideHeaderSelection',!0x1),h(this,'verticalAlign','middle'),h(this,el(0x1c0)),h(this,'minWidth'),h(this,'maxWidth'),h(this,'widthFillDisable'),h(this,'type'),h(this,'operation',!0x1),h(this,'editorType'),h(this,'level'),h(this,'text'),h(this,el(0x3bf),!0x1),h(this,'displayText',''),h(this,el(0x19a)),h(this,'rowspan'),h(this,'row'),h(this,'key'),h(this,'required',!0x1),h(this,'readonly',!0x1),h(this,el(0x2d3),!0x1),h(this,el(0x431),!0x0),h(this,'children',[]),h(this,el(0x117)),h(this,'colIndex'),h(this,'rowKey'),h(this,'rules'),h(this,'hasChildren'),h(this,'render'),h(this,'style',{}),h(this,'drawX',0x0),h(this,'drawY',0x0),h(this,'sortIconName','sort-default'),h(this,'sortAscIconName',el(0x234)),h(this,'sortDescIconName','sort-desc'),h(this,'visibleWidth',0x0),h(this,'visibleHeight',0x0),h(this,'maxLineClampHeader','auto'),h(this,'domDataset',{}),h(this,'drawTextX',0x0),h(this,'drawTextY',0x0),h(this,el(0x426),0x0),h(this,'drawTextHeight',0x0),h(this,el(0x3b0),''),h(this,el(0x3e0),''),h(this,'drawTextFont',''),h(this,el(0x1db),0x0),h(this,'drawSelectionImageY',0x0),h(this,'drawSelectionImageWidth',0x0),h(this,'drawSelectionImageHeight',0x0),h(this,'drawSelectionImageName',''),h(this,el(0x175)),h(this,'drawSortImageX',0x0),h(this,'drawSortImageY',0x0),h(this,'drawSortImageWidth',0x0),h(this,el(0x1e2),0x0),h(this,'drawSortImageName',''),h(this,'drawSortImageSource'),h(this,'renderHeaderType','default'),this[el(0xf2)]=p,this['x']=u,this['y']=v,this[el(0x28a)]=w,this['height']=x,this['visibleWidth']=w,this['visibleHeight']=x,this['colIndex']=r,this[el(0x14b)]=z['key'],this[el(0x39a)]=z['minWidth'],this['maxWidth']=z['maxWidth'],this['hide']=(typeof z['hide']==el(0x3af)?z['hide'](z):z['hide'])||!0x1,this['type']=z['type']||'',this['editorType']=z['editorType']||'text',this[el(0x331)]=z[el(0x331)]||!0x1,this['align']=z['headerAlign']||z['align']||this[el(0xf2)][el(0x19b)]['COLUMNS_ALIGN'],this['verticalAlign']=z['headerVerticalAlign']||z[el(0x27e)]||this['ctx']['config']['COLUMNS_VERTICAL_ALIGN'],this['fixed']=z['fixed']||'',this['level']=z[el(0x13d)]||0x0,this['operation']=z['operation']||!0x1,this['text']=z[el(0x381)],this['column']=z,this[el(0x19a)]=z['colspan']||0x1,this['widthFillDisable']=z[el(0x33d)]||!0x1,this['rowspan']=z['rowspan']||0x1,this['rules']=z['rules'],this['readonly']=z[el(0x2ef)]||!0x1,this[el(0x1b2)]=z['required']||!0x1,this['sortIconName']=z['sortIconName']||'sort-default',this['sortAscIconName']=z['sortAscIconName']||'sort-asc',this['sortDescIconName']=z['sortDescIconName']||'sort-desc',this['rowKey']=Xi(),this['overflowTooltipShow']=z[el(0x2ff)]!==!0x1,this['hasChildren']=z['children']&&z['children']['length']>0x0||!0x1,this['render']=z['renderHeader'],this['maxLineClampHeader']=z['maxLineClampHeader']||'auto',this[el(0x43d)]=z[el(0x43d)]||'default';}['isVerticalVisible'](){const em=bH,{stageHeight:n}=this['ctx'],o=n;return!(this['y']+this[em(0x126)]<=0x0||this['y']>=o);}['updateStyle'](){this['style']=this['getOverlayerViewsStyle']();}['updateContainer'](){const ep=bH,{HEADER_CELL_STYLE_METHOD:p,HEADER_BG_COLOR:r,HEADER_TEXT_COLOR:v}=this['ctx']['config'];let w=r,x=v;if(typeof p=='function'){const B=p,{backgroundColor:C,color:D,font:E}=B({'colIndex':this['colIndex'],'column':this['column']})||{};C&&(w=C),D&&(x=D),E&&(this['drawTextFont']=E);}const {colKey:z,type:A}=this[ep(0xf2)]['finderBar'];A===ep(0x289)&&z===this['key']&&(w=this[ep(0xf2)]['config']['FINDER_CELL_BG_COLOR']),this[ep(0x3b0)]=w,this['drawTextColor']=x;}['update'](){const eq=bH;this['updateContainer'](),this['displayText']=this[eq(0xfc)](),this['drawX']=this['getDrawX'](),this['drawY']=this['getDrawY'](),this['drawTextX']=this['drawX'],this[eq(0x3a1)]=this['drawY'],this['drawTextWidth']=this['width'],this['drawTextHeight']=this['height'],this['updateStyle']();}['draw'](){this['drawEdge'](),this['drawSelection'](),this['drawText'](),this['drawBg'](),this['drawSortIcon']();}[bH(0x354)](){const eu=bH,{paint:n,config:{BORDER_COLOR:o,BORDER:p}}=this['ctx'];n['drawRect'](this['drawX'],this[eu(0x1d7)],this['width'],this['height'],{'borderColor':p?o:'transparent','fillColor':this[eu(0x3b0)]});}['drawText'](){const ev=bH,{paint:n,config:{HEADER_FONT:p,CELL_PADDING:r,REQUIRED_COLOR:u}}=this['ctx'],v=this['displayText']+'_'+this['drawTextWidth']+'_'+this[ev(0x195)];this['ellipsis']=n['drawText'](this['displayText'],this['drawTextX'],this['drawTextY'],this['drawTextWidth'],this['drawTextHeight'],{'font':this['drawTextFont']||p,'padding':r,'color':this['drawTextColor'],'align':this['align'],'verticalAlign':this['verticalAlign'],'maxLineClamp':this['maxLineClampHeader'],'offsetRight':this['column']['sortBy']?0x10:0x0,'offsetLeft':this['required']?0xc:0x0,'cacheTextKey':v,'textCallback':w=>{const ew=ev;this['column']['sortBy']&&(this[ew(0x159)]=w['right']+0x4,this['drawSortImageY']=w[ew(0x238)]+(w['height']-0x10)/0x2),this[ew(0x1b2)]&&n['drawText']('*',w['left']-0x12,w['top']+(w['height']-0xc)/0x2,0x18,0x18,{'color':u,'font':'18px\x20Arial','align':'center','verticalAlign':'middle','padding':0x0});}});}[bH(0x36a)](){const ex=bH;if(this['ctx']['dragHeaderIng'])return;const {ENABLE_SELECTOR:p,ENABLE_SELECTOR_SINGLE:r}=this['ctx']['config'];let u=-0x1,v=-0x1;if(this['ctx']['focusCellHeader']&&(u=this['ctx']['focusCellHeader']['colIndex'],v=this['ctx']['focusCellHeader']['colIndex']+this['ctx']['focusCellHeader'][ex(0x19a)]-0x1),p&&!r){const {xArr:x}=this['ctx']['selector'];u=x[0x0],v=x[0x1];}const w=this['colspan']+this[ex(0x16d)]-0x1;this['colIndex']>=u&&this['colIndex']<=v&&w<=v&&this[ex(0xf2)]['paint']['drawRect'](this['drawX'],this['drawY'],this[ex(0x28a)],this['height'],{'borderColor':'transparent','fillColor':this['ctx'][ex(0x19b)]['SELECT_ROW_COL_BG_COLOR']||'transparent'});}['drawSelection'](){const ey=bH;if(!this['hideHeaderSelection']&&['index-selection',ey(0x3aa),'selection-tree','tree-selection']['includes'](this['type'])){const {indeterminate:p,check:r,selectable:u}=this['ctx']['database']['getCheckedState'](),{CHECKBOX_SIZE:v=0x0,CELL_PADDING:w}=this['ctx'][ey(0x19b)];let x=this[ey(0x106)]+(this['width']-v)/0x2,z=this['drawY']+(this[ey(0x126)]-v)/0x2;this['drawTextX']=x+v-w/0x2,this[ey(0x426)]=this['drawX']+this['visibleWidth']-this['drawTextX'],(this['align']==='left'||this[ey(0x118)]==='right')&&(x=this['drawX']+w,this[ey(0x3cf)]=x+v-w/0x2,this['drawTextWidth']=this['drawX']+this[ey(0x236)]-this['drawTextX']),this[ey(0x27e)]==='top'?z=this['drawY']+w/0x2:this['verticalAlign']==='bottom'&&(z=this[ey(0x1d7)]+this[ey(0x126)]-v-w/0x2);let A=this['ctx'][ey(0x3e9)]['get']('checkbox-uncheck'),B=ey(0x3f6);p?(A=this['ctx']['icons']['get']('checkbox-indeterminate'),B='checkbox-indeterminate'):r&&u?(A=this['ctx']['icons']['get']('checkbox-check'),B=ey(0x1d2)):r&&!u?(A=this['ctx']['icons']['get']('checkbox-check-disabled'),B=ey(0x350)):!r&&u?(A=this[ey(0xf2)]['icons']['get']('checkbox-uncheck'),B='checkbox-uncheck'):(A=this['ctx']['icons']['get']('checkbox-disabled'),B='checkbox-disabled'),A&&(this['drawSelectionImageX']=x,this['drawSelectionImageY']=z,this['drawSelectionImageWidth']=v,this['drawSelectionImageHeight']=v,this['drawSelectionImageName']=B,this[ey(0x175)]=A,this[ey(0xf2)]['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this['drawSelectionImageY'],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']));}}['drawSortIcon'](){const ez=bH;if(!this['column'][ez(0x24a)])return;const n=0x10;let o=this['sortIconName'];const p=this['ctx'][ez(0x2c4)]['getSortState'](this['key']);p['direction']==='asc'?o=this[ez(0x2da)]:p['direction']===ez(0x1c8)&&(o=this['sortDescIconName']);const r=this[ez(0xf2)]['icons']['get'](o);r&&(this['drawSortImageWidth']=n,this['drawSortImageHeight']=n,this['drawSortImageName']=o,this['drawSortImageSource']=r,this['ctx']['paint']['drawImage'](this['drawSortImageSource'],this['drawSortImageX'],this['drawSortImageY'],this['drawSortImageWidth'],this['drawSortImageHeight']));}['getText'](){const eA=bH;return this['render']&&this['renderHeaderType']===eA(0x1c5)||['',null,void 0x0]['includes'](this['text'])?'':''+this['text'];}['getOverlayerViewsStyle'](){const eB=bH;let n='';return this['fixed']==='left'?n=this['drawX']+'px':this['fixed']===eB(0x1b9)?n=this[eB(0x106)]-(this[eB(0xf2)]['stageWidth']-this['ctx']['fixedRightWidth'])+'px':n=this['drawX']-this['ctx']['fixedLeftWidth']+'px',{'position':'absolute','overflow':eB(0x30d),'left':n,'top':this['drawY']+0x1+'px','width':this['width']+'px','height':this[eB(0x126)]-0x2+'px','pointerEvents':'initial','userSelect':'none'};}}class Zs{constructor(n){const eC=bH;h(this,'ctx'),h(this,'visibleHoverCell'),h(this,'resizeObserver'),h(this,eC(0x3ae)),this['ctx']=n,this['init']();}['init'](){const eE=bH;this['resizeObserver']=new ResizeObserver(n=>{const eD=b;this[eD(0xf2)][eD(0x2b9)]('resetHeader'),this['ctx'][eD(0x2b9)]('resizeObserver',n),this[eD(0xf2)]['emit']('containerResize',this['ctx'][eD(0x1f0)]);}),this[eE(0x3f9)][eE(0x42b)](this['ctx']['containerElement']),this['mutationObserver']=new MutationObserver(n=>{const eF=eE;for(const o of n)o[eF(0x3c8)]==='attributes'&&o['attributeName']===eF(0x211)&&(this['ctx'][eF(0x19b)]['updateCssVar'](),this['ctx']['emit'](eF(0x329)));}),this[eE(0xf2)]['config']['ENABLE_AUTO_THEME']&&this['mutationObserver']['observe'](document['documentElement'],{'attributes':!0x0,'attributeFilter':['class']}),this['ctx']['on']('mousedown',p=>{const eG=eE;if(this['isBusy'](p))return;const {offsetY:r,offsetX:v}=this[eG(0xf2)]['getOffset'](p),w=r,x=v,{body:{height:z,visibleHeight:A,visibleWidth:B,y:C}}=this['ctx'],D=Math[eG(0x24e)](z,A);x>0x0&&x<B&&w>C&&w<C+D||this['ctx']['emit']('mousedownBodyOutside',p),p['button']===0x0&&(this['handleHeaderEvent'](x,w,this[eG(0xf2)][eG(0x289)]['renderCellHeaders'],E=>{const eH=eG;this['ctx']['focusCellHeader']=E,this['ctx']['focusCell']=void 0x0,this['ctx']['emit'](eH(0x20c),E,p);}),this[eG(0x2c2)](x,w,this['ctx']['body']['renderRows'],E=>{const eI=eG;this[eI(0xf2)]['setFocusCell'](E),this['ctx']['focusCellHeader']=void 0x0,this['ctx'][eI(0x2b9)]('cellMousedown',E,p);}));}),this[eE(0xf2)]['on']('mouseup',n=>{const eJ=eE;if(n['button']!==0x0||this['isBusy'](n))return;const {offsetY:p,offsetX:r}=this['ctx']['getOffset'](n),u=p,v=r;this['handleHeaderEvent'](v,u,this['ctx']['header']['renderCellHeaders'],w=>{this['ctx']['focusCellHeader']=w,this['ctx']['emit']('cellHeaderMouseup',w,n);}),this['handleBodyEvent'](v,u,this['ctx'][eJ(0xfa)]['renderRows'],w=>{const eK=eJ;this['ctx'][eK(0x121)](w),this[eK(0xf2)]['emit']('cellMouseup',w,n);});}),this['ctx']['on']('click',n=>{const eL=eE;if(n[eL(0x283)]!==0x0||this[eL(0x110)](n))return;const o=this['ctx']['getOffset'](n)['offsetY'],p=this['ctx']['getOffset'](n)['offsetX'];this[eL(0x38c)](p,o,this[eL(0xf2)][eL(0x289)]['renderCellHeaders'],r=>{this['ctx']['clickCellHeader']=r,this['ctx']['emit']('cellHeaderClick',r,n),this['selectionClick'](r,n),this['sortClick'](r,n);}),this[eL(0x2c2)](p,o,this['ctx']['body'][eL(0x318)],r=>{const eM=eL;this['ctx']['clickCell']=r,this['ctx'][eM(0x2b9)]('cellClick',r,n),this['selectionClick'](r,n),this['treeClick'](r,n);},!0x0),this['handleBodyEvent'](p,o,this['ctx']['body']['renderRows'],r=>{const eN=eL;this[eN(0x368)](r);},!0x1);}),this[eE(0xf2)]['on']('dblclick',n=>{const eO=eE;if(n['button']!==0x0||this['isBusy'](n))return;const o=this[eO(0xf2)]['getOffset'](n)['offsetY'],p=this[eO(0xf2)][eO(0x34e)](n)['offsetX'];this['handleHeaderEvent'](p,o,this['ctx']['header']['renderCellHeaders'],r=>{this['ctx']['emit']('cellHeaderDblclick',r,n);}),this['handleBodyEvent'](p,o,this[eO(0xf2)]['body']['renderRows'],r=>{const eP=eO;this['ctx'][eP(0x191)]=r,this['ctx']['emit'](eP(0x2d4),r,n);});}),this['ctx']['on']('contextMenu',n=>{const eQ=eE;if(this[eQ(0x110)](n))return;const {offsetY:p,offsetX:r}=this['ctx']['getOffset'](n),u=p,v=r;this['handleHeaderEvent'](v,u,this['ctx']['header']['renderCellHeaders'],w=>{this['ctx']['emit']('cellHeaderContextMenuClick',w,n);}),this[eQ(0x2c2)](v,u,this['ctx'][eQ(0xfa)][eQ(0x318)],w=>{this['ctx']['emit']('cellContextMenuClick',w,n);});}),this['ctx']['on'](eE(0x155),n=>{const eR=eE;!this['ctx']['containerElement']['contains'](n['relatedTarget'])&&this['ctx']['hoverCell']!==void 0x0&&(this['ctx'][eR(0x2dc)]=void 0x0,this['ctx']['hoverCell']=void 0x0,this['ctx'][eR(0x2b9)]('draw'));}),this['ctx']['on']('mousemove',n=>{const eS=eE;if(this['isBusy'](n))return;this['ctx']['isPointer']=!0x1,this['ctx']['stageElement'][eS(0x388)]['cursor']==='pointer'&&(this['ctx']['stageElement']['style']['cursor']='default');const o=this['ctx']['getOffset'](n)[eS(0x12a)],p=this[eS(0xf2)]['getOffset'](n)[eS(0x213)];this['handleHeaderEvent'](p,o,this['ctx']['header']['renderCellHeaders'],r=>{const eT=eS;this['ctx']['emit'](eT(0x177),r,n),this['ctx']['hoverCellHeader']&&this['ctx']['hoverCellHeader']!==r&&this[eT(0xf2)]['emit']('cellHeaderMouseleave',this['ctx']['hoverCellHeader'],n),this['imageEnterAndLeave'](r,n),this[eT(0xf2)]['hoverCellHeader']!==r&&(this['ctx']['hoverCellHeader']=r,this['visibleHoverCell']=void 0x0,this[eT(0xf2)]['emit']('cellHeaderHoverChange',r,n));}),this['handleBodyEvent'](p,o,this['ctx']['body']['renderRows'],r=>{const eU=eS;this['imageEnterAndLeave'](r,n),this['visibleHoverCell']!==r&&(this['ctx']['emit']('visibleCellMouseleave',r,n),this['visibleHoverCell']=r,this['ctx'][eU(0x2af)]=void 0x0,this[eU(0xf2)][eU(0x2b9)]('visibleCellHoverChange',r,n));},!0x0),this['handleBodyEvent'](p,o,this['ctx']['body']['renderRows'],r=>{const eV=eS;var u;this[eV(0x392)](r,n),this['ctx']['emit']('cellMouseenter',r,n),this['ctx'][eV(0x104)]&&this['ctx'][eV(0x104)]!==r&&this['ctx']['emit']('cellMouseleave',r,n),this['ctx'][eV(0x104)]!==r&&(((u=this['ctx']['hoverCell'])==null?void 0x0:u['rowKey'])!==r[eV(0x29b)]&&(this['ctx'][eV(0x104)]=r,this['ctx']['hoverRow']=this[eV(0xf2)]['body']['renderRows']['find'](v=>v['rowKey']===r['rowKey']),this['ctx']['emit']('rowHoverChange',this['ctx'][eV(0x2dc)],r,n),this['ctx']['emit']('draw')),this[eV(0xf2)]['hoverCell']=r,this['ctx'][eV(0x2b9)]('cellHoverChange',r,n));}),this[eS(0x35a)](p,o,this[eS(0xf2)]['footer'][eS(0x318)],r=>{const eW=eS;this['ctx']['emit']('cellFooterMouseenter',r,n),this['ctx'][eW(0x104)]&&this[eW(0xf2)]['hoverCell']!==r&&this['ctx'][eW(0x2b9)]('cellFooterMouseleave',r,n),this['ctx'][eW(0x2b9)](eW(0x223),r,n);});});}['hoverIconClick'](n){const eX=bH;n['hoverIconName']&&this['ctx']['isPointer']&&!this['ctx'][eX(0x3dd)]&&this['ctx']['emit']('hoverIconClick',n);}['selectionClick'](p,r){const eY=bH;if(!(['selection','index-selection','selection-tree',eY(0xf5)]['includes'](p['type'])&&this['ctx']['isPointer']))return;const {offsetY:u,offsetX:v}=this['ctx']['getOffset'](r),w=u,x=v;if(this[eY(0x2b2)](x,w,p['drawSelectionImageX'],p[eY(0x2f3)],p[eY(0x1dc)],p['drawSelectionImageHeight'])){if(p instanceof Ce)p[eY(0x349)]==='checkbox-uncheck'||p['drawSelectionImageName']==='checkbox-indeterminate'?this[eY(0xf2)][eY(0x2c4)]['toggleAllSelection']():p['drawSelectionImageName']==='checkbox-check'&&this[eY(0xf2)]['database']['clearSelection'](!0x0);else{if(!this['ctx']['database']['getRowSelectable'](p[eY(0x29b)]))return;this['ctx']['database'][eY(0x257)](p['rowKey'],p['type']);}}}['treeClick'](p,r){const eZ=bH;if(!([eZ(0x161),'selection-tree','tree-selection']['includes'](p['type'])&&this['ctx']['isPointer']))return;const {offsetY:v,offsetX:w}=this['ctx']['getOffset'](r),x=v,z=w;if(!this[eZ(0x2b2)](z,x,p['drawTreeImageX'],p['drawTreeImageY'],p['drawTreeImageWidth'],p['drawTreeImageHeight']))return;const A=this['ctx'][eZ(0x2c4)]['getRowForRowKey'](p['rowKey']),{expand:B=!0x1,expandLazy:C=!0x1}=A||{},{EXPAND_LAZY:D,EXPAND_LAZY_METHOD:E}=this['ctx']['config'];if(D&&E&&!B&&!C)typeof E=='function'&&(this['ctx']['database']['expandLoading'](p['rowKey'],!0x0),E({'row':p['row'],'rowIndex':p[eZ(0x343)],'colIndex':p['colIndex'],'column':p['column'],'value':p['getValue']()})['then'](F=>{const f0=eZ;this['ctx']['database']['setExpandChildren'](p[f0(0x29b)],F),this[f0(0xf2)][f0(0x2c4)]['expandLoading'](p['rowKey'],!0x1),this[f0(0xf2)]['emit'](f0(0x20d),this['ctx']['database']['getExpandRowKeys']());})['catch'](F=>{this['ctx']['database']['expandLoading'](p['rowKey'],!0x1),console['error'](F);}));else{const F=this['ctx']['database'][eZ(0x2fe)](p['rowKey']);this['ctx']['database']['expandItem'](p['rowKey'],!F),this['ctx']['emit']('expandChange',this['ctx'][eZ(0x2c4)]['getExpandRowKeys']());}}['sortClick'](p,r){const f1=bH,{offsetY:u,offsetX:v}=this['ctx']['getOffset'](r),w=u,x=v;if(!this['isInsideElement'](x,w,p[f1(0x159)],p['drawSortImageY'],p['drawSortImageWidth'],p['drawSortImageHeight']))return;const z=this['ctx']['database']['getSortState'](p['key']);let A;z['direction']===f1(0x2fc)?A='asc':z['direction']==='asc'?A=f1(0x1c8):A='none',this['ctx']['database']['setSortState'](p['key'],A);}['imageEnterAndLeave'](p,r){const f2=bH,{offsetY:u,offsetX:v}=this['ctx']['getOffset'](r),w=u,x=v;if(p instanceof Ce){if(p['drawSelectionImageSource']&&this['isInsideElement'](x,w,p['drawSelectionImageX'],p['drawSelectionImageY'],p['drawSelectionImageWidth'],p[f2(0x307)])){this[f2(0xf2)][f2(0x207)]['style']['cursor']='pointer',this[f2(0xf2)]['isPointer']=!0x0;return;}if(p[f2(0x3fc)]&&this['isInsideElement'](x,w,p[f2(0x159)],p['drawSortImageY'],p['drawSortImageWidth'],p['drawSortImageHeight'])){this['ctx']['stageElement'][f2(0x388)]['cursor']='pointer',this['ctx'][f2(0x2cb)]=!0x0;return;}}if(p instanceof Me){if(p['drawSelectionImageSource']&&this[f2(0x2b2)](x,w,p['drawSelectionImageX'],p['drawSelectionImageY'],p['drawSelectionImageWidth'],p[f2(0x307)])){this['ctx']['stageElement'][f2(0x388)]['cursor']='pointer',this['ctx']['isPointer']=!0x0,this['ctx']['database'][f2(0x1fb)](p['rowKey'])||(this['ctx'][f2(0x207)][f2(0x388)]['cursor']='not-allowed');return;}if(p['drawHoverImageSource']&&this['isInsideElement'](x,w,p[f2(0x220)],p['drawHoverImageY'],p['drawHoverImageWidth'],p['drawHoverImageHeight'])){this['ctx']['stageElement']['style']['cursor']='pointer',this['ctx']['isPointer']=!0x0;return;}if(p['drawTreeImageSource']&&this['isInsideElement'](x,w,p['drawTreeImageX'],p['drawTreeImageY'],p['drawTreeImageWidth'],p['drawTreeImageHeight'])){this['ctx']['stageElement']['style']['cursor']='pointer',this[f2(0xf2)]['isPointer']=!0x0;return;}}}[bH(0x2b2)](p,r,u,v,w,x){return p>u&&p<u+w&&r>v&&r<v+x;}['isBusy'](p){const f3=bH,{offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),v=r,w=u;if(this[f3(0xf2)]['loading']||!this['ctx']['isTarget'](p)||this[f3(0xf2)]['stageElement']['style']['cursor']==='row-resize'||this['ctx']['stageElement'][f3(0x388)][f3(0x36e)]==='col-resize'||this['ctx']['columnResizing']||this['ctx']['rowResizing'])return!0x0;const {SCROLLER_TRACK_SIZE:x}=this['ctx']['config'];return!!(this[f3(0xf2)]['scrollerMove']||this['ctx'][f3(0x374)]||v>this[f3(0xf2)]['stageHeight']-x||w>this['ctx']['stageWidth']-x);}[bH(0x2c2)](p,r,v,w,x=!0x1){const f4=bH;if(this[f4(0x150)](r))for(const z of v){const A=z['fixedCells'][f4(0x1e4)](z['noFixedCells']);for(const B of A){const C=B['getDrawX'](),D=B[f4(0x315)]();if(x){if(p>C&&p<C+B['visibleWidth']&&r>D&&r<D+B['visibleHeight']){w(B);return;}}else{if(p>C&&p<C+B['width']&&r>D&&r<D+B['height']){w(B);return;}}}}}['handleHeaderEvent'](p,r,u,v){for(const w of u){const x=w['getDrawX'](),z=w['getDrawY']();if(p>x&&p<x+w['width']&&r>z&&r<z+w['height']){v(w);return;}}}['handleFooterEvent'](p,r,v,w,x=!0x1){const f5=bH;for(const z of v){const A=z['fixedCells']['concat'](z[f5(0x3e5)]);for(const B of A){const C=B['getDrawX'](),D=B[f5(0x315)]();if(x){if(p>C&&p<C+B['visibleWidth']&&r>D&&r<D+B['visibleHeight']){w(B);return;}}else{if(p>C&&p<C+B['width']&&r>D&&r<D+B['height']){w(B);return;}}}}}['isInsideBody'](n){return n>this['ctx']['body']['y']&&n<this['ctx']['body']['y']+this['ctx']['body']['visibleHeight'];}[bH(0x3a3)](){const f6=bH;this['resizeObserver']['unobserve'](this['ctx'][f6(0x207)]),this['mutationObserver'][f6(0x31c)]();}}class js{constructor(p,r){const f7=bH;h(this,f7(0x28b)),h(this,'eventBrowser'),h(this,'eventTable'),h(this,'containerElement'),h(this,f7(0x207)),h(this,f7(0x202)),h(this,'overlayerElement'),h(this,'editorElement'),h(this,'emptyElement'),h(this,'contextMenuElement'),h(this,'loadingElement'),h(this,'stageWidth',0x0),h(this,'stageHeight',0x0),h(this,'paint'),h(this,'icons'),h(this,'domSelectionStr',''),h(this,'isMouseoverTargetContainer',!0x1),h(this,'mousedown',!0x1),h(this,'isPointer',!0x1),h(this,'isEmpty',!0x1),h(this,'rowResizing',!0x1),h(this,'columnResizing',!0x1),h(this,'scrollerMove',!0x1),h(this,'scrollerFocus',!0x1),h(this,'autofillMove',!0x1),h(this,'selectorMove',!0x1),h(this,'disableHoverIconClick',!0x1),h(this,'selectColsIng',!0x1),h(this,'selectRowsIng',!0x1),h(this,'dragHeaderIng',!0x1),h(this,'finding',!0x1),h(this,'contextMenuIng',!0x1),h(this,f7(0x338),!0x1),h(this,'loading',!0x1),h(this,'onlyMergeCell',!0x1),h(this,f7(0x102),!0x1),h(this,'hasSelection',!0x1),h(this,'hasTree',!0x1),h(this,'scrollY',0x0),h(this,'scrollX',0x0),h(this,'fixedLeftWidth',0x0),h(this,'fixedRightWidth',0x0),h(this,'lastCenterColIndex',0x0),h(this,f7(0x178),0x0),h(this,'maxRowIndex',0x0),h(this,'hoverRow'),h(this,'clickCell'),h(this,'focusCell'),h(this,'currentCell'),h(this,f7(0x104)),h(this,'clickCellHeader'),h(this,'focusCellHeader'),h(this,'hoverCellHeader'),h(this,'mouseX',0x0),h(this,'mouseY',0x0),h(this,'body',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'headIndex':0x0,'tailIndex':0x0,'visibleRows':[],'renderRows':[],'data':[]}),h(this,'footer',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'renderRows':[]}),h(this,'header',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'visibleLeafColumns':[],'leafCellHeaders':[],'allCellHeaders':[],'renderLeafCellHeaders':[],'renderCellHeaders':[],'fixedLeftCellHeaders':[],'fixedRightCellHeaders':[],'renderCenterCellHeaders':[]}),h(this,'selector',{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1],'xArrCopy':[-0x1,-0x1],'yArrCopy':[-0x1,-0x1]}),h(this,f7(0x2a9),{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]}),h(this,f7(0x2f6),{'text':'','rowIndex':-0x1,'colIndex':-0x1,'type':'body'}),h(this,'database'),h(this,f7(0x2a2)),h(this,'config');const {containerElement:v,stageElement:w,canvasElement:x,overlayerElement:z,editorElement:A,emptyElement:B,loadingElement:C,contextMenuElement:D}=p;this[f7(0x1f0)]=v,w['tabIndex']=0x0,this['stageElement']=w,this['canvasElement']=x,this['overlayerElement']=z,this['editorElement']=A,this['emptyElement']=B,this[f7(0x3c5)]=C,this['contextMenuElement']=D,this['config']=new li(r['config']||{}),this['eventBus']=new zs(),this['eventBrowser']=new Qs(this),this['eventTable']=new Zs(this),this['paint']=new Gs(this['canvasElement']),this['database']=new Ws(this,r),this[f7(0x2a2)]=new Ps(this),this['icons']=new Js(this);}['setConfig'](n){const f8=bH;this[f8(0x19b)]=new li(n);}['setItemValueByEditor'](p,r,u,v=!0x0,w=!0x0,x=!0x0){const f9=bH;if(this['config']['ENABLE_MERGE_CELL_LINK']){const z=this['database'][f9(0x3ff)](p,r);if(z&&(z[f9(0x39f)]||z[f9(0x15c)])){const {dataList:A}=z['getSpanInfo'](),B=A[f9(0x3d3)](C=>Y(M({},C),{'value':u}));this['database'][f9(0x2d7)](B,v,x);return;}}this['database']['setItemValue'](p,r,u,v,w,!0x0,x);}['batchSetItemValueByEditor'](n,o=!0x0,p=!0x0){const fa=bH;if(this['config'][fa(0x3d9)]){const r=[];n['forEach'](v=>{const fb=fa,w=this['database']['getRowIndexForRowKey'](v['rowKey']),x=this['database']['getColIndexForKey'](v['key']);if(w===void 0x0||x===void 0x0)return;const z=this['database'][fb(0x1a1)](w,x);if(z){const {dataList:A}=z['getSpanInfo'](),B=A[fb(0x3d3)](C=>Y(M({},C),{'value':v[fb(0x422)]}));r['push'](...B);}}),this['database']['batchSetItemValue'](r,o,p);}else this['database'][fa(0x2d7)](n,o,p);}[bH(0x121)](n){const fc=bH;var o;if(this['focusCell']!==n){if(((o=this['focusCell'])==null?void 0x0:o['rowKey'])!==n[fc(0x29b)]){this['currentCell']=n,this['emit']('rowFocusChange',n);const p={'rowIndex':n[fc(0x343)],'rowKey':n['rowKey'],'row':n['row']};this['emit']('currentRowChange',p);}this['focusCell']=n,this['emit']('cellFocusChange',n);}}['clearSelector'](){this['selector']['enable']=!0x1,this['selector']['xArr']=[-0x1,-0x1],this['selector']['yArr']=[-0x1,-0x1],this['emit']('clearSelector');}['clearSelectorCopy'](){const fd=bH;this[fd(0x3f0)]['xArrCopy']=[-0x1,-0x1],this['selector']['yArrCopy']=[-0x1,-0x1];}['clearAutofill'](){this['autofill']={'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]};}['getSelectedData'](){const ff=bH,p=[],r=this[ff(0x3f0)]['yArr'],v=this['selector']['xArr'];let w='';for(let x=0x0;x<=r[0x1]-r[0x0];x++){const z=[];for(let A=0x0;A<=v[0x1]-v[0x0];A++){const B=x+r[0x0],C=A+v[0x0],D=this['database']['getVirtualBodyCell'](B,C);D&&(D['selectorCellValueType']==='displayText'?z['push'](D['displayText']):z[ff(0x135)](D['getValue']()));}w+=z[ff(0x2a6)]('\x09')+'\x0d',p[ff(0x135)](z);}return w=w?w['replace'](/\r$/,''):'\x20',{'xArr':v,'yArr':r,'text':w,'value':p};}['setScroll'](p,r){const fg=bH;let u=Math['floor'](p);const v=this['body']['width']-this['body']['visibleWidth'];u<0x0?u=0x0:u>v&&(u=v);let w=Math['floor'](r),x=this['body']['height']-this['body']['visibleHeight'];this['config'][fg(0x32b)]||(x=this['body']['height']+this['footer'][fg(0x126)]-this[fg(0xfa)]['visibleHeight']),w<0x0?w=0x0:w>x&&(w=x),this['emit']('setScroll',u,w);}['setScrollX'](n){const fh=bH;let o=Math['floor'](n);const p=this['body'][fh(0x28a)]-this['body']['visibleWidth'];o<0x0?o=0x0:o>p&&(o=p),this['emit'](fh(0x2a4),o);}['setScrollY'](n){const fj=bH;let o=Math['floor'](n),p=0x0;this['config']['FOOTER_FIXED']||(p=this[fj(0x446)]['height']);const r=this['body']['height']-this['body']['visibleHeight']+p;o<0x0?o=0x0:o>r&&(o=r),this['emit']('setScrollY',o);}[bH(0x370)](n){const fk=bH;this[fk(0x2b9)]('startAdjustPosition',n);}['stopAdjustPosition'](){this['emit']('stopAdjustPosition');}['isTarget'](n){return!!this['containerElement']['contains'](n['target']);}['getOffset'](n){const fl=bH,{left:o,top:p}=this[fl(0x1f0)][fl(0x413)]();return{'offsetX':n['clientX']-o,'offsetY':n['clientY']-p};}[bH(0x3a5)](n){const fm=bH;return this['eventBus'][fm(0x2e6)](n);}['on'](n,o){this['eventBus']['on'](n,o);}[bH(0x1c3)](n,o){this['eventBus']['once'](n,o);}['off'](n,o){this['eventBus']['off'](n,o);}['emit'](n,...o){this['eventBus']['emit'](n,...o);}['destroy'](){const fn=bH;this[fn(0x1bb)]['destroy'](),this['eventBrowser']['destroy'](),this['eventBus']['destroy']();}}class ui{constructor(n,o){const fp=bH;h(this,'ctx'),h(this,'type'),h(this,'isFocus',!0x1),h(this,'trackX',0x0),h(this,'trackY',0x0),h(this,'trackWidth',0x0),h(this,fp(0x297),0x0),h(this,'splitPoints',[]),h(this,'barX',0x0),h(this,'barY',0x0),h(this,'barWidth',0x0),h(this,'barHeight',0x0),h(this,'distance',0x0),h(this,'visibleDistance',0x0),h(this,'clientX',0x0),h(this,'clientY',0x0),h(this,'dragStart',0x0),h(this,'isDragging',!0x1),h(this,fp(0x300),0x0),this['ctx']=n,this['type']=o,this[fp(0x3c8)]==='vertical'?this['scroll']=this['ctx']['scrollY']:this['scroll']=this['ctx']['scrollX'];}['onWheel'](n){this['updateScroll'](n);}['onTouchmove'](p){const fq=bH,{clientY:r,clientX:u}=p['touches'][0x0],v=r-this['clientY'],w=u-this['clientX'];let x=0x0;this['type']==='vertical'?(x=Math['max'](0x0,Math['min'](this['dragStart']-v,this['distance'])),this['hasScrollbar']()&&!(x===0x0&&v>0x0||x===this['distance']&&v<0x0)&&p['preventDefault']()):this['type']==='horizontal'&&(x=Math['max'](0x0,Math[fq(0x24e)](this[fq(0x146)]-w,this[fq(0x1b6)]))),this['scroll']=x;}['onTouchstart'](n){const fu=bH,{clientY:o,clientX:p}=n['touches'][0x0];this['clientX']=p,this['clientY']=o,this[fu(0x146)]=this['scroll'];}[bH(0x1ae)](p){const fv=bH;if(!(p['target']instanceof Element)||!this['ctx']['isTarget'](p))return;if(this['ctx'][fv(0x207)]['style']['cursor']==='row-resize'||this['ctx'][fv(0x207)][fv(0x388)][fv(0x36e)]==='col-resize')return!0x0;const {offsetX:r,offsetY:u,clientX:v,clientY:w}=p;if(!(v==this['clientX']&&w==this['clientY'])){if(this['isOnScrollbar'](r,u))this['clientX']=v,this[fv(0x14d)]=w,this['isDragging']=!0x0,this['ctx'][fv(0x197)]=!0x0,this['isFocus']=!0x0,this[fv(0x146)]=this['scroll'],p['preventDefault']();else{if(this[fv(0x281)](r,u)){let x=0x0;this['type']==='vertical'?x=(u-this['ctx']['header']['height']-this[fv(0x18c)]/0x2)/(this['visibleDistance']-this['barHeight'])*this['distance']:x=(r-this['barWidth']/0x2)/(this['visibleDistance']-this['barWidth'])*this['distance'],this['scroll']=Math['max'](0x0,Math[fv(0x24e)](x,this[fv(0x1b6)]));}}}}[bH(0x439)](){const fw=bH;this['isDragging']=!0x1,this['isFocus']=!0x1,this['clientX']=0x0,this[fw(0x14d)]=0x0;}[bH(0x41a)](p){const fx=bH,{offsetX:r,offsetY:u,clientX:v,clientY:w,buttons:x}=p;if(this['isOnScrollbar'](r,u)&&p['target']===this['ctx']['canvasElement']?this['isFocus']=!0x0:this['isFocus']=!0x1,x===0x0||v==this[fx(0x2c3)]&&w==this['clientY'])return;let z=0x0;if(this['type']==='horizontal'?z=v-this[fx(0x2c3)]:z=w-this[fx(0x14d)],this['isDragging']&&z!==0x0){let A=0x0;this[fx(0x3c8)]==='vertical'?A=this['dragStart']+z/(this['visibleDistance']-this['barHeight'])*this['distance']:A=this['dragStart']+z/(this['visibleDistance']-this['barWidth'])*this['distance'],this[fx(0x300)]=Math['max'](0x0,Math['min'](A,this['distance']));}}['isPointInElement'](p,r,u,v,w,x){return p>=u&&p<=u+w&&r>=v&&r<=v+x;}[bH(0x2ee)](){return this['type']==='vertical'?this['barHeight']>0x0:this['type']==='horizontal'?this['barWidth']>0x0:!0x1;}['isOnScrollbar'](n,o){const fy=bH;return this[fy(0x319)](n,o,this['barX'],this['barY'],this['barWidth'],this['barHeight']);}['isOnTrack'](n,o){const fz=bH;return this['isPointInElement'](n,o,this['trackX'],this[fz(0x14e)],this['trackWidth'],this[fz(0x297)]);}['updateScroll'](n){const fA=bH,o=n['deltaX'],p=n['deltaY'];this['type']==='vertical'&&n['shiftKey']===!0x1?(this['hasScrollbar']()&&!(this['scroll']===0x0&&p<0x0||this[fA(0x300)]===this['distance']&&p>0x0)&&n['preventDefault'](),this['scroll']=Math['max'](0x0,Math[fA(0x24e)](this['scroll']+p,this['distance']))):this['type']==='horizontal'&&(n['shiftKey']?this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+p,this['distance'])):this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+o,this['distance'])));}['updatedSize'](){const fB=bH,{body:p,header:r,stageHeight:v,stageWidth:z,config:{SCROLLER_TRACK_SIZE:A=0x0,SCROLLER_SIZE:B=0x0,BORDER:C}}=this[fB(0xf2)],D=z,E=v,F=r['height'],G=r[fB(0x28a)],H=p['height'],I=this['ctx']['footer']['height'];if(this['type']==='vertical'){this['visibleDistance']=E-A-F,this[fB(0x1b6)]=H-this['visibleDistance']+I,this['trackX']=D-A,this['trackY']=0x0,this[fB(0x341)]=[this['trackX'],F,this['trackX']+A,F],this['trackWidth']=A,this['trackHeight']=E,this['barX']=this['trackX']-0x1+(A-B)/0x2,this['barWidth']=B;const K=this['distance']?this['visibleDistance']/(H+I):0x0;let L=Math['floor'](K*this['visibleDistance']);L<0x1e?L=0x1e:L>this['visibleDistance']&&(L=0x0),this[fB(0x18c)]=L,this['barY']=F+this['scroll']/this[fB(0x1b6)]*(this['visibleDistance']-this['barHeight']),this['scroll']=Math['max'](0x0,Math['min'](this['scroll'],this['distance']));}else{this['visibleDistance']=D-A,this[fB(0x1b6)]=G-this['visibleDistance'],this['splitPoints']=[D-A,E-A,D-A,E];const N=C?0x0:0.5;this['trackX']=0x0,this['trackY']=E-A+N,this['trackWidth']=D,this[fB(0x297)]=A;const P=this['distance']?this['visibleDistance']/G:0x0;let Q=Math['floor'](P*this['visibleDistance']);this['barY']=this['trackY']-0x1+(A-B)/0x2,Q<0x1e?Q=0x1e:Q>=this[fB(0x245)]&&(Q=0x0),this['barWidth']=Q,this['barHeight']=B,this['barX']=this['scroll']/this['distance']*(this['visibleDistance']-this['barWidth']),this['scroll']=Math['max'](0x0,Math['min'](this['scroll'],this['distance']));}}['draw'](){const fC=bH,{config:{SCROLLER_FOCUS_COLOR:p,SCROLLER_COLOR:r,BORDER_COLOR:u,BORDER:v,SCROLLER_TRACK_COLOR:w}}=this['ctx'];this['updatedSize']();let x=u;v||(x='transparent'),this['ctx']['paint']['drawRect'](this['trackX'],this[fC(0x14e)],this['trackWidth'],this['trackHeight'],{'borderColor':x,'fillColor':w}),this['ctx']['paint']['drawRect'](this[fC(0x2a1)],this['barY'],this['barWidth'],this[fC(0x18c)],{'fillColor':this['isFocus']||this['isDragging']?p:r,'radius':0x4}),this['splitPoints']['length']>0x0&&this['ctx'][fC(0x3d5)]['drawLine'](this['splitPoints'],{'borderColor':x,'borderWidth':0x1}),this['ctx']['scrollerFocus']=this['isFocus'];}}class qs{constructor(n){const fD=bH;h(this,'ctx'),h(this,'verticalScrollbar'),h(this,'horizontalScrollbar'),h(this,'mousedownHeader',!0x1),h(this,'adjustPositionX',''),h(this,'adjustPositionY',''),h(this,'timerX',0x0),h(this,fD(0x406),0x0),this['ctx']=n,this['verticalScrollbar']=new ui(n,'vertical'),this['horizontalScrollbar']=new ui(n,'horizontal'),this['ctx']['on']('wheel',o=>this['onWheel'](o)),this[fD(0xf2)]['on']('mousedown',o=>this['onMouseDown'](o)),this['ctx']['on']('mousemove',o=>this['onMouseMove'](o)),this['ctx']['on']('mouseup',()=>this['onMouseUp']()),this['ctx']['on']('touchmove',o=>this[fD(0x15f)](o)),this['ctx']['on']('touchstart',o=>{const fE=fD;this[fE(0x31a)](o);}),this['ctx']['on']('setScroll',(o,p)=>{const fF=fD;this[fF(0x1bf)](o,p);}),this['ctx']['on']('setScrollX',o=>{this['setScrollX'](o);}),this['ctx']['on']('setScrollY',o=>{this['setScrollY'](o);}),this['ctx']['on'](fD(0x138),(o,p)=>{this['scrollToIndex'](o,p);}),this['ctx']['on']('cellHeaderMousedown',()=>{const fG=fD;this[fG(0x3d8)]=!0x0;}),this['ctx']['on']('startAdjustPosition',o=>{this['startAdjustPosition'](o);}),this['ctx']['on']('stopAdjustPosition',()=>{this['stopAdjustPosition']();});}['onWheel'](n){const fH=bH;this['verticalScrollbar'][fH(0x25d)](n),this['horizontalScrollbar']['onWheel'](n),this['draw']();}['onTouchmove'](n){const fI=bH;this['verticalScrollbar']['onTouchmove'](n),this[fI(0x22d)]['onTouchmove'](n),this['draw']();}['onTouchstart'](n){this['verticalScrollbar']['onTouchstart'](n),this['horizontalScrollbar']['onTouchstart'](n),this['draw']();}['onMouseDown'](n){const fJ=bH;this['verticalScrollbar']['onMouseDown'](n),this[fJ(0x22d)]['onMouseDown'](n),this['draw']();}['onMouseMove'](n){const fK=bH;this[fK(0x3eb)]['onMouseMove'](n),this['horizontalScrollbar']['onMouseMove'](n),this['draw']();}['onMouseUp'](){const fL=bH;this['mousedownHeader']=!0x1,this['verticalScrollbar']['onMouseUp'](),this['horizontalScrollbar']['onMouseUp'](),this['ctx'][fL(0x197)]=!0x1;}['draw'](){const fM=bH;this[fM(0x3eb)][fM(0x329)](),this['horizontalScrollbar'][fM(0x329)]();const n=Math[fM(0x299)](this['horizontalScrollbar']['scroll']),o=Math['floor'](this[fM(0x3eb)]['scroll']);(n!==this['ctx']['scrollX']||o!==this['ctx'][fM(0x1d4)])&&(this['ctx']['emit']('onScroll',n,o),n!==this['ctx']['scrollX']&&this[fM(0xf2)]['emit']('onScrollX',n),o!==this['ctx']['scrollY']&&this['ctx']['emit']('onScrollY',o),this['ctx']['scrollX']=n,this['ctx']['scrollY']=o,this['ctx']['emit']('draw'));}['setScroll'](n,o){const fN=bH;this['horizontalScrollbar']['scroll']=n,this['verticalScrollbar'][fN(0x300)]=o,this['ctx']['emit']('draw'),this['ctx'][fN(0x2b9)]('onScroll',n,o);}['setScrollX'](n){const fO=bH;this['horizontalScrollbar'][fO(0x300)]=n,this['ctx']['emit']('draw');}[bH(0x174)](n){this['verticalScrollbar']['scroll']=n,this['ctx']['emit']('draw');}[bH(0x3a2)](n){const fP=bH,{header:o}=this['ctx'],p=o['leafCellHeaders'][fP(0x227)](r=>r['key']===n);p&&this['setScrollX'](p['x']-o['visibleWidth']/0x2);}['scrollToColIndex'](n){const fQ=bH,{header:o}=this['ctx'],p=o['leafCellHeaders']['find'](r=>r['colIndex']===n);p&&this[fQ(0x2a4)](p['x']-o['visibleWidth']/0x2);}['scrollToRowIndex'](n){const fR=bH,{body:o,database:p}=this[fR(0xf2)],{top:r}=p['getPositionForRowIndex'](n);this['setScrollY'](r-o['visibleHeight']/0x2);}['scrollToIndex'](n,o){this['scrollToRowIndex'](n),this['scrollToColIndex'](o);}['scrollToRowKey'](n){const fS=bH,{body:p,database:r}=this['ctx'],u=r['getRowIndexForRowKey'](n);if(u===void 0x0)return;const {top:v}=r['getPositionForRowIndex'](u);this[fS(0x174)](v-p['visibleHeight']/0x2);}['startAdjustPosition'](p){const fT=bH;var r,u;const {offsetX:v,offsetY:w}=this['ctx']['getOffset'](p);let x='',z='';if(((r=this['ctx']['focusCell'])==null?void 0x0:r['fixed'])!=='left'&&v<this['ctx']['fixedLeftWidth']?x=fT(0x418):((u=this['ctx']['focusCell'])==null?void 0x0:u['fixed'])!==fT(0x1b9)&&v>this['ctx']['body']['visibleWidth']-this['ctx']['fixedRightWidth']?x=fT(0x1b9):(x='',this['stopAdjustPosition'](!0x0,!0x1)),!this['mousedownHeader']&&w<this['ctx']['header'][fT(0x16e)]?z='top':w>this['ctx'][fT(0x289)]['visibleHeight']+this['ctx']['body'][fT(0x16e)]?z='bottom':(z='',this['stopAdjustPosition'](!0x1,!0x0)),x&&this['adjustPositionX']!==x){this['adjustPositionX']=x;let A=0xa*(x==='left'?-0x1:0x1);this['timerX']&&(clearInterval(this[fT(0x404)]),this[fT(0x404)]=0x0),this['timerX']=setInterval(()=>{const fU=fT;A*=1.5;const {scrollX:B}=this['ctx'],C=B+A;(C<0x0||C>this[fU(0xf2)][fU(0xfa)]['width'])&&(clearInterval(this['timerX']),this['timerX']=0x0),this[fU(0xf2)]['setScrollX'](C);},0x64);}if(z&&this['adjustPositionY']!==z){this['adjustPositionY']=z;let B=0xa*(z==='top'?-0x1:0x1);this['timerY']&&(clearInterval(this['timerY']),this['timerY']=0x0),this['timerY']=setInterval(()=>{const fV=fT;B*=1.5;const {scrollY:C}=this['ctx'],D=C+B;(D<0x0||D>this[fV(0xf2)]['body']['height'])&&(clearInterval(this['timerY']),this[fV(0x406)]=0x0),this['ctx']['setScrollY'](D);},0x64);}}['stopAdjustPosition'](n=!0x0,o=!0x0){const fW=bH;n&&(this['adjustPositionX']='',this['timerX']&&(clearInterval(this['timerX']),this['timerX']=0x0)),o&&(this['adjustPositionY']='',this['timerY']&&(clearInterval(this['timerY']),this[fW(0x406)]=0x0));}}class $s{constructor(n,o){const fX=bH;h(this,'root'),h(this,'key'),h(this,'childrenKey'),this['root']=n,this['key']=(o==null?void 0x0:o['key'])||'key',this['childrenKey']=(o==null?void 0x0:o[fX(0x3a0)])||'children';}['getTree'](){return this['root'];}['treeMove'](p,r,v){const fY=bH,w=this[fY(0x433)](this['root'],p[this['key']]);if(!w)throw new Error('Source\x20node\x20not\x20found');const {parent:x,index:z,node:A}=w;if(x){const E=x[this['childrenKey']];E['splice'](z,0x1),E['length']===0x0&&delete x[this[fY(0x3a0)]];}else this['root']['splice'](z,0x1);const B=this['findNodeWithParent'](this['root'],r[this['key']]);if(!B)throw new Error(fY(0x28d));const {parent:C,index:D}=B;v==='before'?C?C[this['childrenKey']]['splice'](D,0x0,A):this['root']['splice'](D,0x0,A):v==='after'&&(C?C[this['childrenKey']]['splice'](D+0x1,0x0,A):this['root']['splice'](D+0x1,0x0,A));}['findNodeWithParent'](p,r,u=null){for(let v=0x0;v<p['length'];v++){const w=p[v];if(w[this['key']]===r)return{'parent':u,'index':v,'node':w};if(w[this['childrenKey']]){const x=this['findNodeWithParent'](w[this['childrenKey']],r,w);if(x)return x;}}return null;}}class to{constructor(n){const fZ=bH;h(this,'ctx'),h(this,'x',0x0),h(this,'y',0x0),h(this,'width',0x0),h(this,'height',0x0),h(this,'resizeTarget',null),h(this,'dragTarget',null),h(this,'dragingCell'),h(this,'dragCellDiff',0x0),h(this,'resizeNum',0x0),h(this,fZ(0x285),!0x1),h(this,'clientX',0x0),h(this,'resizeDiff',0x0),h(this,'columnIndex',0x0),h(this,'isMouseDown',!0x1),h(this,'columns'),h(this,fZ(0x1ab)),h(this,'visibleLeafColumns',[]),h(this,'visibleHeight',0x0),h(this,'visibleWidth',0x0),h(this,'allCellHeaders',[]),h(this,'leafCellHeaders',[]),h(this,fZ(0x2a8),[]),h(this,'fixedLeftCellHeaders',[]),h(this,fZ(0x15d),[]),h(this,'fixedRightCellHeaders',[]),h(this,'renderCenterCellHeaders',[]),h(this,'renderFixedCellHeaders',[]),this['ctx']=n,this[fZ(0xf2)]['on']('resetHeader',Le(()=>{this['init'](),this['ctx']['clearSelector'](),this['ctx']['emit']('draw');},0x64)),this['init'](),this['initResizeColumn'](),this['initDragColumn']();}['init'](p=!0x1){const g0=bH,{config:{HEADER_HEIGHT:r,SCROLLER_TRACK_SIZE:v}}=this['ctx'];if(!p){const E=this['ctx']['database']['getColumns']();this['columns']=E;}this[g0(0x29e)]=[],this['leafCellHeaders']=[],this['fixedLeftCellHeaders']=[],this['fixedRightCellHeaders']=[],this['centerCellHeaders']=[],this['visibleColumns']=Wi(this['columns']);const w=Qt(this[g0(0x1ab)]),x=_t(this['visibleColumns']);this['height']=r*w,this['visibleHeight']=this['height'],this['width']=x['reduce']((F,G)=>{const H=G['width']||0x64,{maxWidth:I,minWidth:K}=G;return I&&H>I?F+I:K&&H<K?F+K:F+H;},0x0),this[g0(0x290)]=0x0,this['resizeNum']=0x0;const z=Ds(zt(this['visibleColumns'],w));this[g0(0x2d8)](z,0x0),this['ctx']['database']['updateColIndexKeyMap'](this['leafCellHeaders']);const A=this['ctx']['containerElement'][g0(0x413)]();this['resizeNum']>0x0?this['ctx'][g0(0x326)]=Math['floor'](A['width']):this['ctx'][g0(0x326)]=Math['min'](Math[g0(0x299)](this['width']+v),Math[g0(0x299)](A[g0(0x28a)])),this['ctx'][g0(0x207)][g0(0x388)]['width']=this['ctx']['stageWidth']+'px',this['visibleWidth']=this['ctx'][g0(0x326)]-v;const B=this['visibleWidth']-this['width'];if(this['resizeNum']&&B>0x0){const F=Math['floor'](B/this['resizeNum']*0x64)/0x64;this['resizeAllColumn'](F);}const C=this['fixedLeftCellHeaders']['filter'](G=>!G[g0(0x247)]);this['ctx']['fixedLeftWidth']=C['reduce']((G,H)=>G+H['width'],0x0);const D=this[g0(0x233)][g0(0x365)](G=>!G['hasChildren']);this['ctx']['fixedRightWidth']=D[g0(0xf3)]((G,H)=>G+H['width'],v),this['ctx']['maxColIndex']=this['leafCellHeaders']['length']-0x1,this[g0(0xf2)][g0(0x289)]['x']=this['x'],this['ctx']['header']['y']=this['y'],this[g0(0xf2)]['header'][g0(0x28a)]=this['width'],this['ctx']['header']['height']=this[g0(0x126)],this['ctx']['header']['allCellHeaders']=this['allCellHeaders'],this['ctx'][g0(0x289)]['visibleWidth']=this['visibleWidth'],this['ctx']['header'][g0(0x16e)]=this[g0(0x16e)];}['initResizeColumn'](){this['ctx']['on']('mousedown',n=>{const g1=b;this['ctx'][g1(0x19b)]['ENABLE_RESIZE_COLUMN']&&this[g1(0xf2)]['isTarget'](n)&&(this['clientX']=n['clientX'],this['resizeTarget']?(this[g1(0x285)]=!0x0,this['ctx'][g1(0x33c)]=!0x0):this[g1(0x285)]=!0x1,this[g1(0x294)]=!0x0);}),this['ctx']['on']('mouseup',()=>{const g2=b;this['ctx'][g2(0x19b)]['ENABLE_RESIZE_COLUMN']&&(this[g2(0x294)]=!0x1,this[g2(0x239)]!==0x0&&this['resizeTarget']&&this['resizeColumn'](this['resizeTarget'],this['resizeDiff']),this['resizeTarget']=null,this[g2(0x285)]=!0x1,this['isMouseDown']=!0x1,this['ctx']['columnResizing']=!0x1,this['clientX']=0x0,this['resizeDiff']=0x0);}),this['ctx']['on']('mousemove',p=>{const g3=b;if(!this['ctx']['config'][g3(0x35c)]||this['ctx']['editing'])return;const {stageWidth:r,config:{RESIZE_COLUMN_MIN_WIDTH:v}}=this['ctx'];if(this['isResizing']&&this['resizeTarget']){const w=this[g3(0x20b)][g3(0x28a)],x=this[g3(0x20b)][g3(0x39a)],z=this[g3(0x20b)]['maxWidth'];let A=p[g3(0x2c3)]-this['clientX'];A+w<v&&(A=-(w-v)),x&&A+w<x&&(A=-(w-x)),z&&A+w>z&&(A=z-w),this[g3(0x239)]=A,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this['isMouseDown'])return;if(p[g3(0x213)]<0x0||p['offsetX']>this['visibleWidth']){this['ctx']['stageElement'][g3(0x388)][g3(0x36e)]==='col-resize'&&(this[g3(0xf2)]['stageElement']['style']['cursor']='default');return;}this['ctx']['stageElement']['style'][g3(0x36e)]==='col-resize'&&(this['ctx']['stageElement']['style']['cursor']='default');const B=[...this['renderFixedCellHeaders'],...this['renderCenterCellHeaders']];for(const C of B){const {offsetX:D,offsetY:E}=this['ctx']['getOffset'](p),F=D,G=E,H=C['getDrawX'](),I=C['getDrawY']();if(F>H+C['width']-0x5&&F<H+C[g3(0x28a)]+0x4&&F<r-0x4&&G>I){const K=C['colIndex']+C['colspan']-0x1,L=this['leafCellHeaders']['find'](N=>N[g3(0x16d)]===K);if(!L||!L['fixed']&&this[g3(0xf2)]['stageWidth']-this['ctx'][g3(0x18b)]<H+C['width'])return;this['ctx']['isTarget'](p)&&E<=this['height']&&(this['ctx']['stageElement']['style'][g3(0x36e)]='col-resize',this[g3(0x20b)]=L);}}}});}['initDragColumn'](){const g4=bH;this['ctx']['on'](g4(0x20c),n=>{const g5=g4;this['ctx'][g5(0x19b)]['ENABLE_DRAG_COLUMN']&&(n[g5(0x117)]['dragDisabled']||(this[g5(0x237)]===n?(this['ctx']['dragHeaderIng']=!0x0,this['dragCellDiff']=this['ctx']['mouseX']-n['drawX'],this['ctx']['stageElement'][g5(0x388)]['cursor']='grabbing'):(this['dragTarget']=n,this['ctx']['dragHeaderIng']=!0x1)));}),this['ctx']['on']('cellMousedown',()=>{const g6=g4;this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(this[g6(0x237)]=null,this['ctx']['dragHeaderIng']=!0x1);}),this[g4(0xf2)]['on']('mouseup',()=>{const g7=g4;if(this[g7(0xf2)][g7(0x19b)]['ENABLE_DRAG_COLUMN']){if(this[g7(0x292)]&&this[g7(0x237)]){const p=(B,C={})=>(B['forEach']((D,E)=>{D['children']&&p(D['children'],C),C[D['key']]=E;}),C),r=this['ctx'][g7(0x2c4)]['getColumns'](),u=zt(r,Qt(r)),v=new $s(u,{'key':g7(0x14b),'childrenKey':'children'}),w=this['dragTarget'][g7(0x16d)]>this['dragingCell']['colIndex']?'before':'after';v['treeMove'](this['dragTarget']['column'],this[g7(0x292)][g7(0x117)],w);const x=v['getTree'](),z=p(x);this[g7(0xf2)][g7(0x2c4)][g7(0x11b)]({'sortData':z}),this['init']();const A={'source':this['dragTarget'],'target':this['dragingCell'],'columns':u};this['ctx'][g7(0x2b9)]('columnDragChange',A);}this['ctx']['dragHeaderIng']&&this[g7(0x237)]&&(this['ctx']['dragHeaderIng']=!0x1,this['dragTarget']=null,this['dragingCell']=void 0x0,this['dragCellDiff']=0x0,this[g7(0xf2)]['clearSelector'](),this['ctx']['focusCellHeader']=void 0x0,this[g7(0xf2)][g7(0x207)]['style']['cursor']='default',this['ctx']['emit']('draw'));}}),this['ctx']['on'](g4(0x269),n=>{const g8=g4;this[g8(0xf2)]['config']['ENABLE_DRAG_COLUMN']&&(!this[g8(0xf2)]['dragHeaderIng']||!this['dragTarget']||(this['dragTarget'][g8(0x1c0)]||this['ctx']['startAdjustPosition'](n),this['ctx']['emit']('draw')));}),this['ctx']['on']('cellHoverChange',n=>{const g9=g4;this[g9(0xf2)]['config']['ENABLE_DRAG_COLUMN']&&(n['column']['dragDisabled']||(this['dragingCell']=this['getDragCellHeader'](n['colIndex'])));}),this['ctx']['on']('cellHeaderHoverChange',n=>{const ga=g4;this[ga(0xf2)]['config'][ga(0x36c)]&&(n['column']['dragDisabled']||(this['dragingCell']=this['getDragCellHeader'](n['colIndex'])));});}[bH(0x415)](p){const gb=bH;if(!this['dragTarget']||!this['ctx']['dragHeaderIng'])return;const {column:{parentKey:r},key:u,level:v,fixed:w}=this['dragTarget'],x=this['allCellHeaders']['find'](z=>z['key']!==u&&z[gb(0x1c0)]===w&&z['column']['level']===v&&z['column']['parentKey']===r&&z['colIndex']<=p&&z['colIndex']+z['colspan']-0x1>=p);if(this['ctx']['dragHeaderIng']){const z=x?gb(0x324):gb(0x208);this['ctx']['stageElement']['style']['cursor']=z;}return x;}['resizeColumn'](p,r){const gc=bH,u=x=>{x['forEach'](z=>{if(z['children']&&z['children']['length']>0x0&&u(z['children']),z['key']===p['key']){const A=z['width']||0x64;z['width']=A+r;}});};u(this['columns']);let v=0x0;if(this['width']<this['visibleWidth']){const x=this[gc(0x236)]-this['width'];v=Math['floor'](x/this['resizeNum']*0x64)/0x64,this['resizeAllColumn'](v);}const w=p['width']+r+v;this['ctx']['emit']('resizeColumnChange',{'colIndex':p['colIndex'],'key':p[gc(0x14b)],'oldWidth':p['width'],'width':w,'column':p['column'],'columns':this['columns']}),this['ctx']['database']['setCustomHeaderResizableData'](p['key'],w),this['init'](!0x0),this[gc(0xf2)]['emit']('draw');}['resizeAllColumn'](p){const gd=bH;if(p===0x0)return;const r=new Map();let u=!0x0;for(const w of this['allCellHeaders'])if(w[gd(0x33d)])r['set'](w['key'],w['width']);else{const x=w[gd(0x28a)]+p*w['colspan'];r['set'](w[gd(0x14b)],x),x<this['ctx']['config']['RESIZE_COLUMN_MIN_WIDTH']&&(u=!0x1);}if(!u)return;const v=z=>{z['forEach'](A=>{const ge=b;r[ge(0x2e6)](A['key'])&&(A[ge(0x28a)]=r['get'](A['key'])),A['children']&&A['children']['length']>0x0&&v(A['children']);});};v(this['columns']),this[gd(0x181)](!0x0),this[gd(0xf2)]['emit']('draw');}['getCustomHeader'](){const gf=bH,n=this[gf(0xf2)][gf(0x2c4)][gf(0x212)](),o=this['ctx'][gf(0x2c4)]['getCustomHeader'](),{sortData:p={}}=o;return Object['keys'](p)['length']===0x0?{'columns':n,'customHeader':o}:{'columns':zt(n,Qt(n)),'customHeader':o};}['render'](p,r){const gg=bH,v=p[gg(0x1ce)];let w=r;const {HEADER_HEIGHT:x=0x0}=this['ctx']['config'];for(let z=0x0;z<v;z++){const A=p[z],B=x*(A['rowspan']||0x0),C=x*(A[gg(0x13d)]||0x0);let {minWidth:D,maxWidth:E}=A,F=A['width']||0x64;D&&F<D&&(F=D),E&&F>E&&(F=E),A['children']&&(F=_t(A['children'])['reduce']((H,I)=>H+((I==null?void 0x0:I['width'])||0x64),0x0));const G=new Ce(this[gg(0xf2)],this['columnIndex'],w,C,F,B,A);this['ctx']['database']['setHeader'](A['key'],G),this['allCellHeaders']['push'](G),A[gg(0x205)]||(this['leafCellHeaders']['push'](G),G[gg(0x117)][gg(0x33d)]||this['resizeNum']++),A['fixed']==='left'?this['fixedLeftCellHeaders'][gg(0x135)](G):A['fixed']==='right'?this['fixedRightCellHeaders']['push'](G):this['centerCellHeaders']['push'](G),!A['children']&&this[gg(0x290)]++,A['children']&&this[gg(0x2d8)](A[gg(0x205)],w),w+=F;}}['drawTipLine'](){const gh=bH;if(this['isResizing']&&this['resizeTarget']){const {stageHeight:p,config:{RESIZE_COLUMN_LINE_COLOR:r,RESIZE_COLUMN_TEXT_COLOR:v,RESIZE_COLUMN_TEXT_BG_COLOR:w,ENABLE_RESIZE_COLUMN_TEXT:x}}=this['ctx'],z=this['resizeTarget']['getDrawX'](),A=this['resizeTarget']['width'],B=z+A+this['resizeDiff']-0.5,C=[B-0.5,0x0,B-0.5,p];if(this['ctx']['paint'][gh(0x260)](C,{'borderColor':r}),x){const D=Math[gh(0x299)](A+this['resizeDiff'])+'px',E=0x2d,F=0x18;this[gh(0xf2)][gh(0x3d5)]['drawRect'](B+E/0x2,this['ctx']['mouseY']-F/0x2,E,F,{'fillColor':w,'borderWidth':0x0,'borderColor':'transparent'}),this['ctx']['paint']['drawText'](D,B+E/0x2,this[gh(0xf2)]['mouseY']-F/0x2,E,F+0x2,{'padding':0x0,'color':v,'align':'center','verticalAlign':'middle'});}}}['drawDragTip'](){const gj=bH;if(this[gj(0x237)]&&this['ctx']['dragHeaderIng']){const {DRAG_TIP_BG_COLOR:p,DRAG_TIP_LINE_COLOR:r}=this['ctx']['config'],v=this['dragTarget']['width'];if(this['ctx']['paint'][gj(0x3be)](this['ctx']['mouseX']-this['dragCellDiff'],this[gj(0x16e)],v,this[gj(0xf2)][gj(0xfa)]['visibleHeight'],{'fillColor':p,'borderWidth':0x0,'borderColor':'transparent'}),this['dragingCell']){const {drawX:w,drawY:x,visibleWidth:z,colIndex:A}=this['dragingCell'];let B=w,C=x;A>this['dragTarget']['colIndex']&&(B=w+z),A===0x0&&(B=B+0x1),A===this['ctx']['maxColIndex']&&(B=B-0x1);const D=[B,C,B,this['ctx'][gj(0x279)]],E=[B-0x4,C,B+0x4,C,B,C+0x6,B-0x4,C];this['ctx']['paint']['drawLine'](E,{'borderColor':r,'borderWidth':1.2,'fillColor':r}),this[gj(0xf2)]['paint']['drawLine'](D,{'borderColor':r,'borderWidth':1.2});}}}['drawFixedShadow'](){const gk=bH,{fixedLeftWidth:p,fixedRightWidth:r,scrollX:u,header:v,stageWidth:w,config:{HEADER_BG_COLOR:x,SCROLLER_TRACK_SIZE:z}}=this['ctx'];if(u>0x0&&p!==0x0&&this['ctx']['paint']['drawShadow'](this['x'],this['y'],p,this['height'],{'fillColor':x,'side':'right','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':'rgba(0,0,0,0)'}),u<Math['floor'](v['width']-w-0x1)&&r!==z){const A=v['width']-(this['x']+this['width'])+w-r;this['ctx']['paint']['drawShadow'](A,this['y'],r,this[gk(0x126)],{'fillColor':x,'side':'left','shadowWidth':0x4,'colorStart':gk(0x43e),'colorEnd':'rgba(0,0,0,0.1)'});}}['update'](){const gl=bH,n=[],o=[],p=[];if(this[gl(0x15d)]['length']){const r=this['centerCellHeaders'][this['centerCellHeaders']['length']-0x1];this['ctx'][gl(0x10a)]=r['colIndex'];}this['centerCellHeaders']['forEach'](u=>{u['isHorizontalVisible']()&&u['isVerticalVisible']()&&(o['push'](u),u['hasChildren']||n['push'](u));}),this[gl(0x363)]['forEach'](u=>{const gm=gl;p[gm(0x135)](u),u['hasChildren']||n['push'](u);}),this['fixedRightCellHeaders']['forEach'](u=>{p['push'](u),u['hasChildren']||n['push'](u);}),this['renderCenterCellHeaders']=o,this['renderFixedCellHeaders']=p,this['renderLeafCellHeaders']=n['sort']((u,v)=>u['x']-v['x']),this[gl(0x19e)]=this['renderLeafCellHeaders']['map'](u=>u['column']),this['ctx']['header']['visibleLeafColumns']=this['visibleLeafColumns'],this['ctx']['header']['leafCellHeaders']=this[gl(0x1ea)],this[gl(0xf2)]['header']['renderLeafCellHeaders']=this['renderLeafCellHeaders'],this['ctx'][gl(0x289)]['renderCellHeaders']=this['renderFixedCellHeaders']['concat'](this['renderCenterCellHeaders']);}['drawBottomLine'](){const gp=bH,{stageWidth:n,config:{BORDER_COLOR:o}}=this['ctx'],p=[0x0,this['height'],n,this[gp(0x126)]];this['ctx'][gp(0x3d5)]['drawLine'](p,{'borderColor':o,'borderWidth':0x1});}[bH(0x329)](){const gq=bH;this['renderCenterCellHeaders']['forEach'](n=>{n['update'](),n['draw']();}),this['drawFixedShadow'](),this['renderFixedCellHeaders']['forEach'](n=>{n['update'](),n['draw']();}),this['drawBottomLine'](),this['drawTipLine'](),this[gq(0x3df)]();}}class Vi{constructor(p,r,u=0x0,v=0x0,w=0x0,x=0x0,z,A='body'){const gu=bH;h(this,'ctx'),h(this,'x',0x0),h(this,'y',0x0),h(this,gu(0x28a),0x0),h(this,'height'),h(this,'cells',[]),h(this,'fixedCells',[]),h(this,'noFixedCells',[]),h(this,gu(0x1a9),[]),h(this,'rowIndex',0x0),h(this,'rowKey',''),h(this,'rowType',gu(0xfa)),h(this,'data'),h(this,'calculatedHeight',-0x1),this['ctx']=p,this['x']=u,this['y']=v,this[gu(0x28a)]=w,this[gu(0x126)]=x,this['rowIndex']=r,this['rowKey']=p['database']['getRowKeyForRowIndex'](r)||'',this['rowType']=A,this['data']=z,this['update']();}[bH(0x34c)](){const gw=bH,{header:n}=this['ctx'],p=[],r=[],u=[],v=[];n['renderLeafCellHeaders']['forEach'](w=>{const gv=b,x=new Me(this[gv(0xf2)],this['rowIndex'],w[gv(0x16d)],w['x'],this['y'],w['width'],this['height'],w['column'],this['data'],this['rowType']);x['fixed']?r['push'](x):u['push'](x),p['push'](x),x['autoRowHeight']&&v['push'](x);}),this[gw(0x376)]=p,this[gw(0x1a9)]=v,this['fixedCells']=r,this['noFixedCells']=u;}['updateCalculatedHeight'](){const gx=bH,n=this[gx(0x1a9)][gx(0x3d3)](p=>{const gy=gx,r=p['getAutoHeight'](),{key:u,height:v=-0x1}=this['ctx']['database'][gy(0x3ea)](this[gy(0x29b)])||{};return r>v?this['ctx']['database']['setMaxRowHeightItem'](this['rowKey'],p['key'],r):p['key']===u&&r<v&&this['ctx']['database']['setMaxRowHeightItem'](this['rowKey'],p['key'],r),r;});return this['calculatedHeight']=n['length']?Math[gx(0xf9)](...n):-0x1,this['calculatedHeight'];}['drawCenter'](){const gz=bH;this[gz(0x3e5)]['forEach'](n=>{n['draw']();});}[bH(0x145)](){const gA=bH;this[gA(0x1d3)]['forEach'](n=>{n['draw']();});}['drawContainer'](){this['noFixedCells']['forEach'](n=>{const gB=b;n[gB(0x13c)]();});}[bH(0x3c4)](){this['fixedCells']['forEach'](n=>{n['drawContainer']();});}}class eo{constructor(n){const gC=bH;h(this,'resizeTarget',null),h(this,gC(0x294),!0x1),h(this,gC(0x239),0x0),h(this,'clientY',0x0),h(this,'ctx'),h(this,'x',0x0),h(this,'y',0x0),h(this,'width',0x0),h(this,gC(0x126),0x0),h(this,gC(0x144),0x0),h(this,gC(0x34f),0x0),h(this,'isResizing',!0x1),h(this,'renderRows',[]),h(this,'visibleRows',[]),h(this,gC(0x16e),0x0),h(this,'visibleWidth',0x0),h(this,'containerRect'),h(this,'data',[]),this['ctx']=n,this['init'](),this['initResizeRow']();}[bH(0x181)](){const gD=bH,{canvasElement:r,header:z,footer:B,database:F,config:{FOOTER_FIXED:G,SCROLLER_TRACK_SIZE:H=0x0,HEIGHT:I,EMPTY_BODY_HEIGHT:K=0x0,MAX_HEIGHT:L=0x0,ENABLE_OFFSET_HEIGHT:N=0x0,OFFSET_HEIGHT:P=0x0,FOOTER_POSITION:Q}}=this['ctx'];if(!z[gD(0x28a)])return;this['x']=0x0,Q==='top'&&G?this['y']=z['height']+B['height']:this['y']=z['height'];const {data:R,sumHeight:V}=F['getData']();this['height']=V,this[gD(0x229)]=R,this['width']=z['width'],this['visibleWidth']=this['ctx']['stageWidth']-H;const a0=this['ctx']['footer']['height'];this['ctx']['isEmpty']=!this['data'][gD(0x1ce)],!this[gD(0x229)]['length']&&!I?this[gD(0x126)]=K:!this[gD(0x229)]['length']&&I&&(this['height']=I-z[gD(0x126)]-a0-H);let a1=this['height']+z['height']+H;a1+=a0;let a2=a1;const a3=window['innerHeight'],{top:a4}=this[gD(0x16a)]||this['ctx'][gD(0x1f0)]['getBoundingClientRect']();if(a3>a4&&N&&!I){const ac=a3-a4-P;ac>z[gD(0x126)]+H?a2=ac:a1>L&&(a2=L);}else this['data']['length']&&I?a2=I:this['data']['length']&&L&&a1>L&&(a2=L);a2>0x0&&(this['ctx']['stageHeight']=Math['floor'](a2),this['ctx'][gD(0x207)]['style']['height']=this['ctx']['stageHeight']+'px');let a5=this['ctx']['stageHeight']-z['height']-H;G?this['visibleHeight']=a5-a0:this['visibleHeight']=a5,this['data']['length']||(this[gD(0x126)]=this[gD(0x16e)]),this[gD(0xf2)]['body']['x']=this['x'],this['ctx'][gD(0xfa)]['y']=this['y'],this[gD(0xf2)]['body']['width']=this['width'],this['ctx'][gD(0xfa)]['height']=this['height'],this['ctx'][gD(0xfa)]['visibleWidth']=this['visibleWidth'],this['ctx']['body']['visibleHeight']=this[gD(0x16e)],this['ctx']['body']['data']=R;const a6=window['devicePixelRatio']||0x1,a7=this['ctx']['stageWidth']*a6,a8=this['ctx']['stageHeight']*a6;r['width']=Math['round'](a7),r['height']=Math['round'](a8);const a9=this[gD(0x229)]['length']?'not-empty':'empty';this['ctx']['emit']('emptyChange',{'isEmpty':a9,'type':a9,'headerHeight':z['height'],'bodyHeight':this['height'],'footerHeight':a0,'width':this['width'],'height':this['data']['length']?0x0:K+a0});const aa=Math['round'](r['width']/a6*0x2710)/0x2710,ab=Math['round'](r['height']/a6*0x2710)/0x2710;this['ctx']['canvasElement']['setAttribute']('style','height:'+ab+'px;width:'+aa+gD(0x420)),this['ctx']['paint']['scale'](a6);}['initResizeRow'](){const gE=bH;this[gE(0xf2)]['on']('resize',()=>{const gF=gE;this[gF(0xf2)]['config']['ENABLE_RESIZE_ROW']&&(this['containerRect']=this['ctx']['containerElement']['getBoundingClientRect']());}),this[gE(0xf2)]['on']('resizeObserver',()=>{const gG=gE;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this['containerRect']=this['ctx'][gG(0x1f0)]['getBoundingClientRect']());}),this['ctx']['on']('mouseup',()=>{const gH=gE;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this[gH(0x294)]=!0x1,this['resizeDiff']!==0x0&&this['resizeTarget']&&this['resizeRow'](this['resizeTarget'],this['resizeDiff']),this['resizeTarget']=null,this['resizeDiff']=0x0,this['isResizing']=!0x1,setTimeout(()=>{const gI=gH;this[gI(0xf2)]['rowResizing']=!0x1;},0x0),this['clientY']=0x0);}),this['ctx']['on']('mousedown',n=>{const gJ=gE;this['ctx']['config'][gJ(0xed)]&&this[gJ(0xf2)]['isTarget'](n)&&(this['clientY']=n['clientY'],this['resizeTarget']?(this['isResizing']=!0x0,this['ctx']['rowResizing']=!0x0):(this['isResizing']=!0x1,this['ctx']['rowResizing']=!0x1),this['isMouseDown']=!0x0);}),this['ctx']['on']('mousemove',p=>{const gK=gE;if(!this['ctx']['config']['ENABLE_RESIZE_ROW']||this['ctx'][gK(0x338)])return;const {offsetY:r,offsetX:v}=this['ctx']['getOffset'](p),w=r,x=v,z=p[gK(0x14d)],{stageHeight:A,scrollY:B,config:{RESIZE_ROW_MIN_HEIGHT:C=0x0}}=this['ctx'];if(this[gK(0x285)]&&this['resizeTarget']){const D=this['resizeTarget'][gK(0x126)];let E=z-this['clientY'];const {calculatedHeight:F}=this['resizeTarget'],G=F===-0x1?C:F;E+D<G&&(E=-(D-G)),this['resizeDiff']=E,this['ctx']['emit'](gK(0x329));}else{if(this['resizeTarget']=null,this['isMouseDown'])return;if(x<0x0||x>this['ctx'][gK(0xfa)][gK(0x236)]||w<0x0||w>this['ctx']['header']['visibleHeight']+this['ctx'][gK(0xfa)]['visibleHeight']){this['ctx'][gK(0x207)]['style']['cursor']==='row-resize'&&(this[gK(0xf2)]['stageElement']['style'][gK(0x36e)]='default');return;}if(this['ctx']['stageElement']['style']['cursor']===gK(0x377))return;this['ctx'][gK(0x207)]['style']['cursor']==='row-resize'&&(this['ctx'][gK(0x207)]['style'][gK(0x36e)]='default');for(let H=0x0;H<this[gK(0x318)]['length'];H++){const I=this['renderRows'][H];if(w>I['y']-B+I['height']-1.5&&w<I['y']-B+I['height']+1.5&&w<A-0x4)for(let K=0x0;K<I['cells']['length'];K++){const L=I['cells'][K];x>L['drawX']+0xa&&x<L['drawX']+L['width']-0xa&&L['rowspan']===0x1&&(this[gK(0xf2)]['stageElement']['style']['cursor']=gK(0x2f7),this['resizeTarget']=I);}}}});}['resizeRow'](p,r){const {rowIndex:u,height:v,rowKey:w,data:x}=p;this['ctx']['database']['setRowHeight'](u,v+r),this['init'](),this['ctx']['emit']('draw'),this['ctx']['emit']('resizeRowChange',{'rowIndex':u,'oldHeight':v,'height':v+r,'rowKey':w,'row':x,'data':this['data']});}['drawTipLine'](){const gL=bH;if(this['isResizing']&&this['resizeTarget']){const {stageWidth:p,scrollY:r,config:{RESIZE_ROW_LINE_COLOR:u}}=this[gL(0xf2)],v=this['resizeTarget']['y']-r,w=this['resizeTarget']['height'],x=v+w+this['resizeDiff']-0.5,z=[0x0,x-0.5,p,x-0.5];this[gL(0xf2)][gL(0x3d5)]['drawLine'](z,{'borderColor':u,'borderWidth':0x1});}}[bH(0x425)](){const gM=bH,{fixedLeftWidth:p,fixedRightWidth:r,scrollX:u,header:v,stageWidth:w,config:{HEADER_BG_COLOR:x,SCROLLER_TRACK_SIZE:z}}=this['ctx'];if(u>0x0&&p!==0x0&&!this[gM(0xf2)]['isEmpty']&&this['ctx']['paint']['drawShadow'](this['x'],this['y'],p,this['height'],{'fillColor':x,'side':'right','shadowWidth':0x4,'colorStart':gM(0x3e8),'colorEnd':'rgba(0,0,0,0)'}),u<Math['floor'](v[gM(0x28a)]-w-0x1)&&r!==z&&!this['ctx']['isEmpty']){const A=v[gM(0x28a)]-(this['x']+this['width'])+w-r;this[gM(0xf2)][gM(0x3d5)]['drawShadow'](A,this['y'],r,this['height'],{'fillColor':x,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['binarySearch'](p,r){let u=0x0,v=p['length']-0x1,w=-0x1;for(;u<=v;){let x=Math['floor']((u+v)/0x2),z=p[x]['bottom'];if(z===r)return x;z<r?u=x+0x1:(w=x,v=x-0x1);}return w;}['update'](){const gN=bH;this['init']();const {header:p,database:r,scrollY:v,config:{CELL_HEIGHT:z}}=this['ctx'],A=v,{data:B,positions:C}=r[gN(0x173)]();this[gN(0xf2)][gN(0x151)]=B['length']-0x1;let D=this['binarySearch'](C,A),E=this['binarySearch'](C,A+this['visibleHeight']);if(E===-0x1&&(E=this['ctx']['maxRowIndex']),D===-0x1&&E===this['ctx']['maxRowIndex']){const G=Math['floor'](this['visibleHeight']/z);D=this['ctx'][gN(0x151)]-G;}this[gN(0x144)]=Math['max'](0x0,D),this['tailIndex']=Math[gN(0x24e)](this['ctx']['maxRowIndex'],E+0x1),this['visibleRows']=B['slice'](this[gN(0x144)],this[gN(0x34f)]+0x1),this['ctx']['body']['headIndex']=this['headIndex'],this['ctx']['body']['tailIndex']=this['tailIndex'],this['ctx']['body'][gN(0x34a)]=this['visibleRows'];const F=[];for(let H=0x0;H<this['visibleRows'][gN(0x1ce)];H++){const I=this['headIndex']+H,K=this['visibleRows'][H],{height:L,top:N}=this['ctx']['database']['getPositionForRowIndex'](I),P=new Vi(this['ctx'],I,0x0,N+this['y'],p[gN(0x28a)],L,K);F[gN(0x135)](P);}this['renderRows']=F,this['ctx']['body']['renderRows']=F;}['updateAutoHeight'](){const gO=bH,n=this['ctx']['body'][gO(0x318)];if(!n['some'](p=>p['calculatedHeightCells']['length']>0x0))return!0x1;n['forEach'](p=>{p['updateCalculatedHeight']();});const o=n['map'](p=>({'height':p['calculatedHeight'],'rowIndex':p['rowIndex']}));return this['ctx']['database']['setBatchCalculatedRowHeight'](o);}['draw'](){const gQ=bH;this['renderRows']['forEach'](n=>{n['drawContainer']();}),this['renderRows']['forEach'](n=>{const gP=b;n[gP(0x125)]();}),this[gQ(0x425)](),this['renderRows']['forEach'](n=>{const gR=gQ;n[gR(0x3c4)]();}),this[gQ(0x318)]['forEach'](n=>{n['drawFixed']();}),this['drawTipLine']();}}class io{constructor(n){const gS=bH;h(this,'ctx'),h(this,'renderRows',[]),h(this,'data',[]),h(this,'x',0x0),h(this,'y',0x0),h(this,'width',0x0),h(this,'height',0x0),h(this,'visibleWidth',0x0),h(this,'visibleHeight',0x0),this[gS(0xf2)]=n,this[gS(0x181)]();}['init'](){const gT=bH;this['data']=this['ctx']['database'][gT(0x328)]();const {header:p,body:r,config:{CELL_FOOTER_HEIGHT:u,FOOTER_FIXED:v,SCROLLER_TRACK_SIZE:w,FOOTER_POSITION:x}}=this['ctx'];this['width']=p['width'],this['visibleWidth']=p['visibleWidth'],this['height']=this['data'][gT(0xf3)](z=>z+u,0x0),this['visibleHeight']=this['height'],v?x==='top'?this['y']=this[gT(0xf2)][gT(0x289)]['height']:this['y']=this['ctx']['stageHeight']-this['height']-w:this['y']=r['y']+r[gT(0x126)],this['ctx']['footer']['x']=this['x'],this['ctx']['footer']['y']=this['y'],this['ctx']['footer']['height']=this['height'],this['ctx']['footer'][gT(0x28a)]=this[gT(0x28a)],this['ctx']['footer']['visibleWidth']=this['visibleWidth'],this['ctx']['footer'][gT(0x16e)]=this['visibleHeight'];}['drawFixedShadow'](){const gU=bH,{fixedLeftWidth:p,fixedRightWidth:r,scrollX:u,header:v,stageWidth:w,config:{HEADER_BG_COLOR:x,SCROLLER_TRACK_SIZE:z}}=this[gU(0xf2)];let A=this['y'];if(this['ctx'][gU(0x19b)][gU(0x32b)]||(A=this['y']-this['ctx']['scrollY']),u>0x0&&p!==0x0&&this['ctx'][gU(0x3d5)]['drawShadow'](this['x'],A,p,this['height'],{'fillColor':x,'side':'right','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':'rgba(0,0,0,0)'}),u<Math['floor'](v['width']-w-0x1)&&r!==z){const B=v['width']-(this['x']+this[gU(0x28a)])+w-r;this[gU(0xf2)][gU(0x3d5)]['drawShadow'](B,A,r,this['height'],{'fillColor':x,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['update'](){const gV=bH;this['init']();const {CELL_FOOTER_HEIGHT:n}=this['ctx']['config'];let o=this['y'];const p=[];this[gV(0x229)]['forEach']((r,u)=>{const v=new Vi(this['ctx'],u,0x0,o,this['width'],n,r,'footer');o+=n,p['push'](v);}),this[gV(0x318)]=p,this['ctx']['footer']['renderRows']=this['renderRows'];}['drawTopLine'](){const gW=bH,{stageWidth:n,config:{BORDER_COLOR:o}}=this['ctx'],p=[0x0,this['y'],n,this['y']];this[gW(0xf2)]['paint']['drawLine'](p,{'borderColor':o,'borderWidth':0x1});}['draw'](){const gX=bH;this['renderRows']['forEach'](n=>{n['drawContainer']();}),this['renderRows']['forEach'](n=>{n['drawCenter']();}),this[gX(0x425)](),this[gX(0x318)]['forEach'](n=>{n['drawFixedContainer']();}),this[gX(0x318)]['forEach'](n=>{n['drawFixed']();}),this['drawTopLine']();}}class so{constructor(n){const gY=bH;h(this,gY(0x334),!0x1),h(this,'isMultipleRow',!0x1),h(this,'ctx'),this['ctx']=n,this['init']();}[bH(0x181)](){const gZ=bH;this['ctx']['on']('setMoveFocus',n=>{this['moveFocus'](n);}),this['ctx']['on'](gZ(0x269),Le(n=>{const h0=gZ;var o;(o=this['ctx']['focusCellHeader'])!=null&&o[h0(0x1c0)]||!this['ctx']['dragHeaderIng']&&this[h0(0xf2)]['selectorMove']&&this[h0(0xf2)]['startAdjustPosition'](n);},0x64)),this['ctx']['on']('cellHoverChange',n=>{const h1=gZ;if(!this[h1(0xf2)]['autofillMove']){if(n['operation']){this['selectRows'](n,!0x1);return;}this[h1(0x251)]||this['mouseenter']();}}),this['ctx']['on']('cellClick',()=>{const h2=gZ;this[h2(0x27a)]();}),this['ctx']['on']('cellMousedown',(n,o)=>{const h3=gZ;if(!(!this['ctx']['isTarget'](o)||this['ctx']['stageElement']['style'][h3(0x36e)]==='pointer'||this['ctx']['isPointer']||this['ctx']['stageElement']['style'][h3(0x36e)]==='crosshair')){if(n['operation']){this['isMultipleRow']=!0x0,this['selectRows'](n);return;}window['getComputedStyle'](o['target'])['userSelect']!==h3(0x1c4)&&o[h3(0x34b)](),this['isMultipleRow']=!0x1,this['click'](o[h3(0x18f)]),this['ctx']['emit']('selectorClick',n);}}),this['ctx']['on'](gZ(0x2fd),()=>{this['ctx']['selectorMove']=!0x1,this['ctx']['stopAdjustPosition'](),setTimeout(()=>{this['ctx']['disableHoverIconClick']=!0x1;},0x0);}),this[gZ(0xf2)]['on'](gZ(0x10f),n=>{this['ctx']['mousedown']&&this['selectCols'](n);}),this[gZ(0xf2)]['on']('cellHoverChange',n=>{this['ctx']['mousedown']&&this['selectCols'](n);}),this['ctx']['on']('cellHeaderMousedown',(n,o)=>{const h4=gZ;this['ctx']['stageElement']['style']['cursor']==='pointer'||this[h4(0xf2)]['isPointer']||(window[h4(0x295)](o['target'])['userSelect']!=='text'&&o['preventDefault'](),this['ctx']['clearSelector'](),n['operation']?this['selectAll']():this['selectCols'](n));}),this['ctx']['on'](gZ(0x37a),n=>{const h5=gZ;if(!this[h5(0xf2)][h5(0x338)]&&!this['ctx'][h5(0x412)]){if(n[h5(0x2f9)]&&n[h5(0x308)]==='KeyV'||n['metaKey']&&n['code']==='KeyV'){this['paste']();return;}if(n['ctrlKey']&&n['code']===h5(0x3fb)||n['metaKey']&&n['code']==='KeyC'){this['copy'](),this['isCut']=!0x1;return;}if(n['ctrlKey']&&n['code']==='KeyX'||n['metaKey']&&n['code']==='KeyX'){this['isCut']=!0x0,this['copy']();return;}if((n['ctrlKey']&&n['code']==='KeyA'||n['metaKey']&&n['code']===h5(0x320))&&(n['preventDefault'](),this['selectAll']()),n[h5(0x308)]===h5(0x170)||n['shiftKey']&&n['code']==='Tab'){n[h5(0x34b)](),this['moveFocus']('LEFT');return;}if(n['code']===h5(0x2dd)){n['preventDefault'](),this['moveFocus'](h5(0x2f0));return;}if(n['code']==='ArrowRight'||n['code']==='Tab'){n['preventDefault'](),this['moveFocus']('RIGHT');return;}if(n[h5(0x308)]==='ArrowDown'){n['preventDefault'](),this['moveFocus']('BOTTOM');return;}if(n[h5(0x308)]==='Delete'||n['code']===h5(0x3ef)){n['preventDefault']();const {xArr:o,yArr:p}=this['ctx'][h5(0x3f0)];this['clearSelectedData'](o,p);return;}}}),this['ctx']['on']('contextMenuClearSelected',()=>{const {xArr:n,yArr:o}=this['ctx']['selector'];this['clearSelectedData'](n,o);}),this['ctx']['on'](gZ(0x25c),()=>{this['copy']();}),this[gZ(0xf2)]['on'](gZ(0x14f),()=>{const h6=gZ;this[h6(0x206)]();}),this['ctx']['on']('contextMenuCut',()=>{this['isCut']=!0x0,this['copy']();}),this['ctx']['on'](gZ(0x176),n=>{const h7=gZ;this[h7(0xf2)][h7(0x121)](n),this['click'](),this['adjustBoundaryPosition']();}),this['ctx']['on']('selectCols',n=>{const h8=gZ;this[h8(0x2ce)](n);});}[bH(0x218)](r,v){const h9=bH;if(this[h9(0xf2)]['dragHeaderIng'])return;const {ENABLE_SELECTOR_SPAN_COL:z,ENABLE_SELECTOR_SPAN_ROW:B}=this['ctx'][h9(0x19b)];let C=r,D=v;if(!B){const [F]=D;D=[F,F];}if(!z){const [G]=C;C=[G,G];}if(JSON['stringify'](this['ctx']['selector']['xArr'])!==JSON['stringify'](C)||JSON['stringify'](this['ctx'][h9(0x3f0)]['yArr'])!==JSON['stringify'](D)){this[h9(0xf2)]['mousedown']&&(this['ctx']['selectorMove']=!0x0,this['ctx']['disableHoverIconClick']=!0x0),this[h9(0xf2)]['selector'][h9(0x3c9)]=!0x0;const {SELECTOR_AREA_MIN_X:H,SELECTOR_AREA_MAX_X:I,SELECTOR_AREA_MIN_Y:K,SELECTOR_AREA_MAX_Y:L,SELECTOR_AREA_MAX_X_OFFSET:N,SELECTOR_AREA_MAX_Y_OFFSET:P}=this['ctx']['config'],Q=H,R=I||this['ctx']['maxColIndex']-N,T=K,V=L||this['ctx'][h9(0x151)]-P;let [a0,a1]=C,[a2,a3]=D;if(a0<Q||a1>R||a2<T||a3>V)return;if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']){const a5=this['adjustMergeCells'](C,D);a2=a5['yArr'][0x0],a3=a5['yArr'][0x1],a0=a5[h9(0x16b)][0x0],a1=a5['xArr'][0x1],this['ctx']['onlyMergeCell']=a5['onlyMergeCell'];}a0===a1&&a2===a3?this['ctx']['selectOnlyOne']=!0x0:this['ctx']['selectOnlyOne']=!0x1,C=[Math['max'](Q,a0),Math['min'](R,a1)],D=[Math['max'](T,a2),Math['min'](V,a3)];const {BEFORE_SET_SELECTOR_METHOD:a4}=this['ctx']['config'];if(typeof a4=='function'){const a6=a4({'focusCell':this['ctx']['focusCell'],'xArr':C,'yArr':D});if(!a6)return;C=a6['xArr'],D=a6['yArr'];}this[h9(0xf2)][h9(0x3f0)][h9(0x16b)]=C,this[h9(0xf2)]['selector']['yArr']=D,a3===this['ctx']['maxRowIndex']&&a2===0x0?this['ctx']['selectColsIng']=!0x0:this['ctx']['selectColsIng']=!0x1,a1===this['ctx']['maxColIndex']&&a0===0x0?this['ctx']['selectRowsIng']=!0x0:this['ctx']['selectRowsIng']=!0x1,this['ctx']['emit']('setSelector',this['ctx']['selector']),this[h9(0xf2)][h9(0x2b9)]('drawView');}}['adjustMergeCells'](p,r){const ha=bH;var v;const [z,B]=r,[C,D]=p;if(B===this['ctx']['maxRowIndex']&&z===0x0||D===this['ctx']['maxColIndex']&&C===0x0)return{'xArr':p,'yArr':r,'onlyMergeCell':!0x1};let F=[],G=[];for(let P=0x0;P<=r[0x1]-r[0x0];P++)for(let Q=0x0;Q<=p[0x1]-p[0x0];Q++){const R=P+r[0x0],S=Q+p[0x0],T=this['ctx']['database']['getVirtualBodyCell'](R,S);T&&((R===z||R===B)&&F[ha(0x135)](T),(S===C||S===D)&&G[ha(0x135)](T));}const H=F['reduce']((V,a0)=>{const hb=ha,{yArr:a1}=a0['getSpanInfo'](),[a2,a3]=a1;return V[hb(0x321)]=Math[hb(0x24e)](V['minY'],a2),V['maxY']=Math['max'](V['maxY'],a3),V;},{'minY':z,'maxY':B}),I=G[ha(0xf3)]((V,a0)=>{const {xArr:a1}=a0['getSpanInfo'](),[a2,a3]=a1;return V['minX']=Math['min'](V['minX'],a2),V['maxX']=Math['max'](V['maxX'],a3),V;},{'minX':C,'maxX':D}),K=[I['minX'],I['maxX']],L=[H['minY'],H['maxY']];let N=!0x1;if(I[ha(0x29a)]!==I['maxX']||H['minY']!==H['maxY']){const V=JSON['stringify'](K)+JSON[ha(0x3dc)](L),a0=(v=this['ctx']['focusCell'])==null?void 0x0:v['getSpanInfo']();N=(a0&&JSON[ha(0x3dc)](a0['xArr'])+JSON['stringify'](a0['yArr']))===V;}return{'xArr':K,'yArr':L,'onlyMergeCell':N};}['selectCols'](p){const hc=bH;if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE']||!this['ctx'][hc(0x19b)][hc(0x217)]||this['ctx'][hc(0x1a8)]||this['ctx']['columnResizing']||this['ctx']['editing'])return;const {SELECTOR_AREA_MIN_Y:r,SELECTOR_AREA_MAX_Y:u,SELECTOR_AREA_MAX_Y_OFFSET:v}=this[hc(0xf2)]['config'],w=r,x=u||this[hc(0xf2)][hc(0x151)]-v;if(this['ctx'][hc(0x1e1)]){const {colIndex:z}=this['ctx']['focusCellHeader'];if(this['ctx']['clearSelector'](),this['ctx'][hc(0x33b)]&&p[hc(0x16d)]>=z){const A=[z,p['colIndex']+p['colspan']-0x1],B=[w,x];this['setSelector'](A,B);}else{const C=[p['colIndex'],z+p['colspan']-0x1],D=[w,x];this['setSelector'](C,D);}}}['selectAll'](){const hd=bH;if(this['ctx']['autofillMove']||this['ctx'][hd(0x338)])return;const {ENABLE_SELECTOR_ALL_ROWS:p,ENABLE_SELECTOR_ALL_COLS:r}=this[hd(0xf2)][hd(0x19b)];if(p&&r){const {SELECTOR_AREA_MIN_X:v,SELECTOR_AREA_MAX_X:x,SELECTOR_AREA_MIN_Y:z,SELECTOR_AREA_MAX_Y:A,SELECTOR_AREA_MAX_X_OFFSET:B,SELECTOR_AREA_MAX_Y_OFFSET:C}=this['ctx']['config'],D=v,E=x||this[hd(0xf2)]['maxColIndex']-B,F=z,G=A||this['ctx'][hd(0x151)]-C,H=[D,E],I=[F,G];this['setSelector'](H,I);}}[bH(0x2ea)](p,r=!0x0){const he=bH;if(this['ctx'][he(0x19b)]['ENABLE_SELECTOR_SINGLE']||!this['ctx']['config'][he(0xee)]||this['ctx']['autofillMove']||this[he(0xf2)]['editing'])return;const {SELECTOR_AREA_MIN_X:v,SELECTOR_AREA_MAX_X:w,SELECTOR_AREA_MAX_X_OFFSET:x}=this['ctx']['config'],z=w||this['ctx'][he(0x178)]-x,A=v;if(r){this[he(0xf2)]['setFocusCell'](p);const B=[A,z],C=[p[he(0x343)],p['rowIndex']];this['setSelector'](B,C);}if(this['ctx']['focusCell']&&this['ctx']['mousedown']){const {rowIndex:D}=this['ctx'][he(0x130)];if(p['rowIndex']>=D){const E=[A,z],F=[D,p[he(0x343)]];this['setSelector'](E,F);}else{const G=[A,z],H=[p['rowIndex'],D];this['setSelector'](G,H);}}}['mouseenter'](){const hf=bH;if(this[hf(0xf2)]['config']['ENABLE_SELECTOR_SINGLE']||this['ctx']['editing'])return;const {mousedown:p,focusCell:r,hoverCell:v}=this['ctx'];if(p&&r&&v){const {rowIndex:w,colIndex:x}=r,z=Math['min'](v['colIndex'],x),A=Math[hf(0xf9)](v['colIndex'],x),B=Math['min'](v['rowIndex'],w),C=Math['max'](v['rowIndex'],w),D=[z,A],E=[B,C];this['setSelector'](D,E);}}['click'](p=!0x1){const hg=bH,{focusCell:r,clickCell:v}=this['ctx'];if(r&&this['isInSettingRange'](r[hg(0x343)],r['colIndex'])){if(this[hg(0xf2)]['selector']['enable']=!0x0,v&&p){if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE'])return;const {colIndex:w,rowIndex:x}=v,{colIndex:z,rowIndex:A}=r,B=Math['min'](z,w),C=Math['max'](z,w),D=Math[hg(0x24e)](A,x),E=Math['max'](A,x),F=[B,C],G=[D,E];this['setSelector'](F,G);}else{this['ctx'][hg(0x2b9)]('cellSelectedClick',r);const H=[r[hg(0x16d)],r[hg(0x16d)]],I=[r[hg(0x343)],r['rowIndex']];this['setSelector'](H,I);}}}['clearCopyLine'](){this['ctx']['selector']['xArrCopy']=[-0x1,-0x1],this['ctx']['selector']['yArrCopy']=[-0x1,-0x1];}['getCell'](n,o){const hh=bH,p=this['ctx']['body']['renderRows']['find'](r=>r[hh(0x343)]===n);return p==null?void 0x0:p['cells']['find'](r=>r['colIndex']===o);}['copy'](){const hj=bH;if(!this['ctx']['config']['ENABLE_COPY']||this['ctx']['domSelectionStr'])return;let {value:p,xArr:r,yArr:u}=this[hj(0xf2)]['getSelectedData']();if(this[hj(0xf2)]['config'][hj(0x3d9)]&&this[hj(0xf2)][hj(0x2c4)]['hasMergeCell'](r,u)){if(this['ctx']['onlyMergeCell']&&this['ctx']['focusCell']){const x=this['ctx']['focusCell'];p=[[x['getValue']()]],r=[x['colIndex'],x[hj(0x16d)]],u=[x['rowIndex'],x['rowIndex']];}else{const z={'code':hj(0x36f),'message':'Merged\x20cells\x20cannot\x20span\x20copy\x20data'};this['ctx']['hasEvent']('error')?this['ctx']['emit']('error',z):alert(z['message']);return;}}const {BEFORE_COPY_METHOD:v}=this['ctx'][hj(0x19b)];if(typeof v=='function'){const A=v({'focusCell':this['ctx']['focusCell'],'data':p,'xArr':r,'yArr':u});if(!A)return;p=A['data'];}const w=Ns(p);navigator['clipboard']?navigator['clipboard']['writeText'](w)['then'](()=>{const hk=hj;this['ctx']['selector']['xArrCopy']=this[hk(0xf2)][hk(0x3f0)]['xArr'][hk(0x24d)](),this['ctx']['selector']['yArrCopy']=this[hk(0xf2)]['selector']['yArr']['slice'](),this['ctx']['emit']('copyChange',{'xArr':this['ctx']['selector']['xArrCopy'],'yArr':this['ctx']['selector']['yArrCopy'],'data':p}),this[hk(0xf2)]['emit'](hk(0x329));})[hj(0x21b)](B=>console['error']('Copy\x20Failure:',B)):console['error']('current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API');}['clearSelectedData'](p,r,v=!0x1,x=null){const hl=bH;let z=[];const A=new Set();for(let C=0x0;C<=r[0x1]-r[0x0];C++)for(let D=0x0;D<=p[0x1]-p[0x0];D++){const E=C+r[0x0],F=D+p[0x0],G=this['ctx']['database']['getItemValueForRowIndexAndColIndex'](E,F);if(G){const {rowKey:H,key:I}=G;this['ctx']['database']['getReadonly'](H,I)||(A['add'](H),z['push']({'rowKey':H,'key':I,'value':x,'row':{}}));}}if(!z['length'])return[];if(v)return z;this[hl(0xf2)]['database']['batchSetItemValue'](z,!0x0);let B=[];return A['forEach'](K=>{B['push'](this['ctx']['database']['getRowDataItemForRowKey'](K));}),this['ctx']['emit']('clearSelectedDataChange',z,B),z;}['paste'](){const hm=bH;if(!navigator['clipboard']){console['error']('current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API');return;}const {ENABLE_PASTER:n}=this['ctx']['config'];if(this[hm(0xf2)]['selector']['enable']&&n){const o=this['ctx']['selector']['yArr'][0x0],p=this['ctx']['selector']['xArr'][0x0],r=new Set();navigator['clipboard']['readText']()[hm(0x12e)](u=>X(this,null,function*(){const hn=hm;let z=ks(u);const B=[p,p+z[0x0]['length']-0x1],F=[o,o+z[hn(0x1ce)]-0x1],[G,H]=F,[I,K]=B,L=H-this['ctx']['maxRowIndex'],N=K-this['ctx'][hn(0x178)];(L>0x0||N>0x0)&&this[hn(0xf2)]['emit'](hn(0x18a),{'maxY':H,'maxX':K,'minY':G,'minX':I,'overflowRowCount':L,'overflowColCount':N,'textArr':z});const P=z['length']===0x1&&z[0x0]['length']===0x1;if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx']['database']['hasMergeCell'](B,F)&&!P){const a0={'code':'ERR_MERGED_CELLS_PASTE','message':'Merged\x20cells\x20cannot\x20span\x20paste\x20data'};this['ctx']['hasEvent'](hn(0x13a))?this['ctx']['emit']('error',a0):alert(a0['message']);return;}let Q=[];for(let a1=0x0;a1<=z['length']-0x1;a1++){const a2=z[a1]['length'];for(let a3=0x0;a3<=a2-0x1;a3++){const a4=a1+o,a5=a3+p,a6=z[a1][a3],a7=this['ctx']['database'][hn(0x3da)](a4,a5);if(a7){const {rowKey:a8,key:a9}=a7;this['ctx']['database']['getReadonly'](a8,a9)||(r['add'](a8),Q[hn(0x135)]({'rowKey':a8,'key':a9,'value':a6,'row':{}}));}}}if(this['isCut']){const aa=this['clearSelectedData'](this['ctx']['selector'][hn(0x22e)],this[hn(0xf2)]['selector'][hn(0x316)],!0x0),ab=Q['map'](ac=>ac['rowKey']+'-'+ac[hn(0x14b)]);aa[hn(0x32e)](ac=>{ab['includes'](ac['rowKey']+'-'+ac['key'])||Q['unshift'](ac);}),this['isCut']=!0x1;}if(!Q['length'])return;const {BEFORE_PASTE_DATA_METHOD:R}=this['ctx']['config'];if(typeof R=='function'){const ac=R,ad=Q['map'](ae=>({'rowKey':ae['rowKey'],'key':ae['key'],'value':ae['value'],'oldValue':this[hn(0xf2)]['database']['getItemValue'](ae['rowKey'],ae['key']),'row':this['ctx']['database']['getRowDataItemForRowKey'](ae['rowKey'])}));if(Q=yield ac(ad,B,F,z),Q&&!Q['length'])return;}this['clearCopyLine'](),this['ctx']['batchSetItemValueByEditor'](Q,!0x0);let V=[];r['forEach'](ae=>{const hp=hn;V[hp(0x135)](this['ctx'][hp(0x2c4)][hp(0x36b)](ae));}),this[hn(0xf2)]['emit']('pasteChange',Q,V),this['ctx']['emit']('draw');}))['catch'](u=>{const hq=hm;console[hq(0x13a)]('Failed\x20to\x20get\x20the\x20clipboard\x20content:',u);});}}['moveFocus'](p){const hu=bH;if(this['ctx']['editing'])return;const {focusCell:r}=this['ctx'];if(!r)return;let {colIndex:v=0x0,rowIndex:w=0x0}=r;const x=0x0,z=0x0,A=this['ctx'][hu(0x178)],B=this[hu(0xf2)]['maxRowIndex'];switch(p){case hu(0x167):v>x&&v--;break;case'TOP':w>z&&w--;break;case'RIGHT':v<A&&v++;break;case'BOTTOM':w<B&&w++;break;}const C=[v,v],D=[w,w],E=this[hu(0x2d1)](w,v);E&&(E[hu(0x209)]||this['isInSettingRange'](E['rowIndex'],E['colIndex'])&&(this['ctx']['setFocusCell'](E),this['setSelector'](C,D),this['adjustBoundaryPosition'](),this['ctx']['emit']('moveFocus',E),this['ctx'][hu(0x2b9)](hu(0x329))));}['isInSettingRange'](p,r){const hv=bH,{SELECTOR_AREA_MIN_X:v,SELECTOR_AREA_MAX_X:w,SELECTOR_AREA_MIN_Y:x,SELECTOR_AREA_MAX_Y:z,SELECTOR_AREA_MAX_X_OFFSET:A,SELECTOR_AREA_MAX_Y_OFFSET:B}=this['ctx'][hv(0x19b)],C=v,D=w||this['ctx'][hv(0x178)]-A,E=x,F=z||this['ctx']['maxRowIndex']-B;return!(r<C||r>D||p<E||p>F);}[bH(0x27a)](){const {stageHeight:r,stageWidth:z,focusCell:B,fixedRightWidth:F,fixedLeftWidth:G,header:H,footer:I,body:K,scrollX:L,scrollY:N,config:{SCROLLER_TRACK_SIZE:P,FOOTER_FIXED:Q,FOOTER_POSITION:R,ENABLE_MERGE_CELL_LINK:V}}=this['ctx'];if(!B)return;V&&this['ctx']['onlyMergeCell']&&B['updateSpanInfo']();const {drawX:a0,drawY:a1,width:a2,height:a3,fixed:a4}=B,a5=G-a0+0x1,a6=B['drawX']+a2-(z-F)+0x1;let a7=H['height']-a1,a8=a3;a8>K['visibleHeight']&&(a8=K['visibleHeight']);let a9=0x0;Q&&(R==='top'?a7=H['height']+I['height']-a1:a9=I['visibleHeight']);const aa=a1+a8-(r-a9-P);let ab=L,ac=N;a6>0x0&&!a4?ab=Math['floor'](L+a6):a5>0x0&&!a4&&(ab=Math['floor'](L-a5)),a7>0x0?ac=Math['floor'](N-a7):aa>0x0&&(ac=Math['floor'](N+aa)),(Math['abs'](L-ab)>2.5||Math['abs'](N-ac)>2.5)&&this['ctx']['setScroll'](ab,ac);}['destroy'](){}}class oo{constructor(n){const hw=bH;h(this,hw(0xf2)),h(this,'maxColRowCell'),this[hw(0xf2)]=n,this['init']();}['init'](){this['ctx']['on']('mousemove',p=>{const hx=b;if(this[hx(0xf2)]['stageElement']['style']['cursor']==='crosshair'&&(this[hx(0xf2)]['stageElement']['style']['cursor']='default'),this['ctx'][hx(0x338)]||!this['ctx'][hx(0x130)]||!this['maxColRowCell'])return;const {offsetX:r,offsetY:v}=this['ctx']['getOffset'](p),{colIndex:w,rowIndex:x,drawX:z,drawY:A,width:B,height:C}=this['maxColRowCell'],D=0x6,E=w===this['ctx']['maxColIndex']||x===this['ctx']['maxRowIndex']?0x0:0x2,F=z+B-D+E,G=A+C-D+E;r>F&&v>G&&r<F+D&&v<G+D&&(this['ctx'][hx(0x207)][hx(0x388)][hx(0x36e)]='crosshair'),this['ctx']['autofillMove']&&this['ctx']['startAdjustPosition'](p);}),this['ctx']['on']('cellMouseenter',p=>{const hy=b,{xArr:r,yArr:u}=this['ctx']['selector'],v=r[0x1],w=u[0x1],{colIndex:x,rowIndex:z}=p;this[hy(0xf2)][hy(0x19b)][hy(0x317)]&&x===v&&z===w&&(this['maxColRowCell']=p),this['mouseenter'](p);}),this['ctx']['on']('mousedown',()=>{const hz=b;this[hz(0xf2)]['stageElement']['style'][hz(0x36e)]==='crosshair'&&this['setMousedown']();}),this['ctx']['on']('mouseup',()=>{const hA=b;this[hA(0x360)](),this['ctx']['stopAdjustPosition']();});}['isAutofillIng'](){const hB=bH,{xArr:n,yArr:o}=this['ctx']['selector'];return!(JSON['stringify'](this['ctx']['autofill'][hB(0x16b)])===JSON[hB(0x3dc)](n)&&JSON['stringify'](this['ctx']['autofill']['yArr'])===JSON['stringify'](o));}['setMousedown'](){const hC=bH;this['ctx'][hC(0x2a9)][hC(0x3c9)]=!0x0,this['ctx']['autofillMove']=!0x0,this['ctx']['disableHoverIconClick']=!0x0;}['setMouseUp'](){const hD=bH;this[hD(0xf2)]['autofill']['enable']&&(this['isAutofillIng']()&&this['autofillData'](),this['ctx']['autofill']['enable']=!0x1,this[hD(0xf2)][hD(0x1a8)]=!0x1,this[hD(0xf2)][hD(0x2a9)]['xArr']=[-0x1,-0x1],this['ctx']['autofill']['yArr']=[-0x1,-0x1],setTimeout(()=>{this['ctx']['disableHoverIconClick']=!0x1;},0x0));}['setAutofill'](r,z){const hE=bH,{ENABLE_AUTOFILL:B,ENABLE_AUTOFILL_SPAN_COL:C,ENABLE_AUTOFILL_SPAN_ROW:F}=this['ctx']['config'];if(!B)return;let G=r,H=z;const I=this['ctx']['selector']['xArr'],K=this['ctx']['selector']['yArr'];if(!(!F&&JSON['stringify'](K)!==JSON['stringify'](H))&&!(!C&&JSON['stringify'](I)!==JSON['stringify'](G))&&(JSON['stringify'](this[hE(0xf2)]['autofill']['xArr'])!==JSON['stringify'](G)||JSON['stringify'](this['ctx']['autofill']['yArr'])!==JSON[hE(0x3dc)](H))){const {SELECTOR_AREA_MIN_X:L,SELECTOR_AREA_MAX_X:N,SELECTOR_AREA_MIN_Y:P,SELECTOR_AREA_MAX_Y:Q,SELECTOR_AREA_MAX_X_OFFSET:R,SELECTOR_AREA_MAX_Y_OFFSET:V}=this['ctx'][hE(0x19b)],a0=L,a1=N||this['ctx']['maxColIndex']-R,a2=P,a3=Q||this['ctx']['maxRowIndex']-V;let [a4,a5]=G,[a6,a7]=H;if(a4<a0||a6<a2)return;G=[Math[hE(0xf9)](a0,a4),Math['min'](a1,a5)],H=[Math['max'](a2,a6),Math['min'](a3,a7)];const {BEFORE_SET_AUTOFILL_METHOD:a8}=this['ctx'][hE(0x19b)];if(typeof a8=='function'){const a9=a8({'focusCell':this['ctx']['focusCell'],'xArr':G,'yArr':H});if(!a9)return;G=a9['xArr'],H=a9['yArr'];}this['ctx'][hE(0x2a9)]['xArr']=G,this['ctx']['autofill']['yArr']=H,this[hE(0xf2)]['emit']('setAutofill',this['ctx']['autofill']),this['ctx']['emit']('draw');}}['autofillData'](){return X(this,null,function*(){const hF=b,r=new Set(),v=this['ctx']['getSelectedData'](),z=new Map();for(let N=0x0;N<=v['yArr'][0x1]-v['yArr'][0x0];N++)for(let P=0x0;P<=v['xArr'][0x1]-v['xArr'][0x0];P++){const Q=N+v['yArr'][0x0],R=P+v['xArr'][0x0];z['set'](Q+'-'+R,!0x0);}const {value:B}=v,C=B[0x0]['length'],D=B['length'],F=this[hF(0xf2)]['autofill'][hF(0x16b)],G=this['ctx'][hF(0x2a9)]['yArr'],H=C===0x1&&D===0x1;if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx']['database']['hasMergeCell'](F,G)&&!H){const S={'code':'ERR_MERGED_CELLS_AUTOFILL','message':'Merged\x20cells\x20cannot\x20span\x20autofill\x20data'};this['ctx']['hasEvent']('error')?this['ctx']['emit']('error',S):alert(S['message']);return;}let I=[];for(let T=0x0;T<=G[0x1]-G[0x0];T++)for(let V=0x0;V<=F[0x1]-F[0x0];V++){const a0=V+F[0x0],a1=T+G[0x0],a2=B[T%D][V%C],a3=this['ctx']['database']['getItemValueForRowIndexAndColIndex'](a1,a0),a4=a1+'-'+a0;if(a3&&!z[hF(0x2e6)](a4)){const {rowKey:a5,key:a6}=a3;this['ctx']['database']['getReadonly'](a5,a6)||(r['add'](a5),I['push']({'rowKey':a5,'key':a6,'value':a2,'row':{}}));}}if(!I['length'])return;this['ctx']['selector']['xArr']=this['ctx']['autofill'][hF(0x16b)],this['ctx']['selector']['yArr']=this['ctx'][hF(0x2a9)]['yArr'];const {BEFORE_AUTOFILL_DATA_METHOD:K}=this['ctx']['config'];if(typeof K==hF(0x3af)){const a7=K,a8=I[hF(0x3d3)](a9=>({'rowKey':a9[hF(0x29b)],'key':a9['key'],'value':a9['value'],'oldValue':this['ctx'][hF(0x2c4)]['getItemValue'](a9[hF(0x29b)],a9['key']),'row':this[hF(0xf2)][hF(0x2c4)]['getRowDataItemForRowKey'](a9['rowKey'])}));if(I=yield a7(a8,F,G),I&&!I['length'])return;}this['ctx']['batchSetItemValueByEditor'](I,!0x0);let L=[];r['forEach'](a9=>{const hG=hF;L['push'](this['ctx']['database'][hG(0x36b)](a9));}),this['ctx']['emit']('autofillChange',I,L),this['ctx']['emit']('draw');});}['mouseenter'](p){const hH=bH;if([hH(0x183),'selection','index-selection'][hH(0x225)](p['type']))return;const {selector:r,autofill:u}=this['ctx'];if(this[hH(0xf2)]['mousedown']&&r['enable']&&u['enable']){const {rowIndex:v,colIndex:w}=p,x=r['xArr'][hH(0x24d)](),z=r['yArr']['slice']();v>=r['yArr'][0x0]&&v<=r['yArr'][0x1]?w>r['xArr'][0x1]?x['splice'](0x1,0x1,w):w<r['xArr'][0x0]&&x[hH(0x24f)](0x0,0x1,w):v>r[hH(0x35d)][0x1]?z['splice'](0x1,0x1,v):v<r['yArr'][0x0]&&z['splice'](0x0,0x1,v),this[hH(0x255)](x,z);}}['destroy'](){}}const yt=Math['min'],wt=Math['max'],Vt=Math['round'],Yt=Math['floor'],it=n=>({'x':n,'y':n}),ro={'left':'right','right':'left','bottom':'top','top':'bottom'};function ye(n,o,p){return wt(n,yt(o,p));}function Lt(n,o){return typeof n=='function'?n(o):n;}function mt(n){const hI=bH;return n[hI(0x3b2)]('-')[0x0];}function Mt(n){const hJ=bH;return n[hJ(0x3b2)]('-')[0x1];}function Ui(n){return n==='x'?'y':'x';}function De(n){return n==='y'?'height':'width';}function dt(n){const o=n[0x0];return o==='t'||o==='b'?'y':'x';}function Be(n){return Ui(dt(n));}function no(p,u,v){const hK=bH;v===void 0x0&&(v=!0x1);const w=Mt(p),x=Be(p),z=De(x);let A=x==='x'?w===(v?'end':hK(0x242))?'right':'left':w===hK(0x242)?'bottom':'top';return u['reference'][z]>u['floating'][z]&&(A=Ut(A)),[A,Ut(A)];}function ao(n){const o=Ut(n);return[be(n),o,be(o)];}function be(n){return n['includes']('start')?n['replace']('start','end'):n['replace']('end','start');}const gi=['left','right'],fi=['right','left'],ho=['top','bottom'],lo=['bottom',bH(0x238)];function co(n,o,p){const hL=bH;switch(n){case'top':case'bottom':return p?o?fi:gi:o?gi:fi;case hL(0x418):case'right':return o?ho:lo;default:return[];}}function uo(n,p,u,v){const hM=bH,w=Mt(n);let x=co(mt(n),u==='start',v);return w&&(x=x[hM(0x3d3)](z=>z+'-'+w),p&&(x=x['concat'](x['map'](be)))),x;}function Ut(n){const o=mt(n);return ro[o]+n['slice'](o['length']);}function go(n){return M({'top':0x0,'right':0x0,'bottom':0x0,'left':0x0},n);}function Ji(n){return typeof n!='number'?go(n):{'top':n,'right':n,'bottom':n,'left':n};}function Jt(n){const {x:o,y:p,width:u,height:v}=n;return{'width':u,'height':v,'top':p,'left':o,'right':o+u,'bottom':p+v,'x':o,'y':p};}function xi(p,v,w){const hN=bH;let {reference:x,floating:z}=p;const A=dt(v),B=Be(v),C=De(B),D=mt(v),E=A==='y',F=x['x']+x['width']/0x2-z['width']/0x2,G=x['y']+x['height']/0x2-z['height']/0x2,H=x[C]/0x2-z[C]/0x2;let I;switch(D){case'top':I={'x':F,'y':x['y']-z[hN(0x126)]};break;case'bottom':I={'x':F,'y':x['y']+x['height']};break;case hN(0x1b9):I={'x':x['x']+x['width'],'y':G};break;case hN(0x418):I={'x':x['x']-z['width'],'y':G};break;default:I={'x':x['x'],'y':x['y']};}switch(Mt(v)){case hN(0x242):I[B]-=H*(w&&E?-0x1:0x1);break;case'end':I[B]+=H*(w&&E?-0x1:0x1);break;}return I;}function fo(n,o){return X(this,null,function*(){const hO=b;var p;o===void 0x0&&(o={});const {x:v,y:z,platform:B,rects:C,elements:D,strategy:F}=n,{boundary:G='clippingAncestors',rootBoundary:H='viewport',elementContext:I=hO(0x1de),altBoundary:K=!0x1,padding:L=0x0}=Lt(o,n),N=Ji(L),P=D[K?I==='floating'?hO(0x396):'floating':I],Q=Jt(yield B[hO(0x375)]({'element':(p=yield B['isElement']==null?void 0x0:B['isElement'](P))==null||p?P:P['contextElement']||(yield B['getDocumentElement']==null?void 0x0:B['getDocumentElement'](D['floating'])),'boundary':G,'rootBoundary':H,'strategy':F})),R=I==='floating'?{'x':v,'y':z,'width':C['floating']['width'],'height':C[hO(0x1de)][hO(0x126)]}:C[hO(0x396)],S=yield B['getOffsetParent']==null?void 0x0:B['getOffsetParent'](D['floating']),T=(yield B['isElement']==null?void 0x0:B['isElement'](S))?(yield B[hO(0x216)]==null?void 0x0:B['getScale'](S))||{'x':0x1,'y':0x1}:{'x':0x1,'y':0x1},V=Jt(B['convertOffsetParentRelativeRectToViewportRelativeRect']?yield B[hO(0x409)]({'elements':D,'rect':R,'offsetParent':S,'strategy':F}):R);return{'top':(Q['top']-V[hO(0x238)]+N['top'])/T['y'],'bottom':(V[hO(0x17f)]-Q['bottom']+N['bottom'])/T['y'],'left':(Q['left']-V['left']+N['left'])/T['x'],'right':(V[hO(0x1b9)]-Q['right']+N['right'])/T['x']};});}const xo=0x32,wo=(n,o,p)=>X(void 0x0,null,function*(){const hP=bH,{placement:v=hP(0x17f),strategy:z=hP(0x241),middleware:B=[],platform:C}=p,D=C['detectOverflow']?C:Y(M({},C),{'detectOverflow':fo}),F=yield C['isRTL']==null?void 0x0:C[hP(0x378)](o);let G=yield C['getElementRects']({'reference':n,'floating':o,'strategy':z}),{x:H,y:I}=xi(G,v,F),K=v,L=0x0;const N={};for(let P=0x0;P<B['length'];P++){const Q=B[P];if(!Q)continue;const {name:R,fn:T}=Q,{x:V,y:a0,data:a1,reset:a2}=yield T({'x':H,'y':I,'initialPlacement':v,'placement':K,'strategy':z,'middlewareData':N,'rects':G,'platform':D,'elements':{'reference':n,'floating':o}});H=V!=null?V:H,I=a0!=null?a0:I,N[R]=M(M({},N[R]),a1),a2&&L<xo&&(L++,typeof a2=='object'&&(a2['placement']&&(K=a2['placement']),a2['rects']&&(G=a2['rects']===!0x0?yield C[hP(0x28c)]({'reference':n,'floating':o,'strategy':z}):a2[hP(0x149)]),{x:H,y:I}=xi(G,K,F)),P=-0x1);}return{'x':H,'y':I,'placement':K,'strategy':z,'middlewareData':N};}),mo=n=>({'name':bH(0x302),'options':n,'fn'(o){return X(this,null,function*(){const hQ=b,{x:t,y:I,placement:L,rects:P,platform:Q,elements:R,middlewareData:V}=o,{element:a0,padding:a1=0x0}=Lt(n,o)||{};if(a0==null)return{};const a2=Ji(a1),a3={'x':t,'y':I},a4=Be(L),a5=De(a4),a6=yield Q[hQ(0x356)](a0),a7=a4==='y',a8=a7?'top':hQ(0x418),a9=a7?hQ(0x17f):'right',aa=a7?'clientHeight':'clientWidth',ab=P['reference'][a5]+P['reference'][a4]-a3[a4]-P['floating'][a5],ac=a3[a4]-P[hQ(0x396)][a4],ad=yield Q[hQ(0x2e0)]==null?void 0x0:Q['getOffsetParent'](a0);let ae=ad?ad[aa]:0x0;(!ae||!(yield Q[hQ(0x2ac)]==null?void 0x0:Q[hQ(0x2ac)](ad)))&&(ae=R['floating'][aa]||P['floating'][a5]);const af=ab/0x2-ac/0x2,ag=ae/0x2-a6[a5]/0x2-0x1,ah=yt(a2[a8],ag),aj=yt(a2[a9],ag),ak=ah,al=ae-a6[a5]-aj,am=ae/0x2-a6[a5]/0x2+af,ap=ye(ak,am,al),aq=!V[hQ(0x302)]&&Mt(L)!=null&&am!==ap&&P[hQ(0x396)][a5]/0x2-(am<ak?ah:aj)-a6[a5]/0x2<0x0,au=aq?am<ak?am-ak:am-al:0x0;return{[a4]:a3[a4]+au,'data':M({[a4]:ap,'centerOffset':am-ap-au},aq&&{'alignmentOffset':au}),'reset':aq};});}}),Ao=function(n){return n===void 0x0&&(n={}),{'name':'flip','options':n,'fn'(o){return X(this,null,function*(){const hR=b;var t,I;const {placement:L,middlewareData:P,rects:Q,initialPlacement:R,platform:a0,elements:a1}=o,a2=Lt(n,o),{mainAxis:a3=!0x0,crossAxis:a4=!0x0,fallbackPlacements:a5,fallbackStrategy:a6='bestFit',fallbackAxisSideDirection:a7='none',flipAlignment:a8=!0x0}=a2,a9=Kt(a2,['mainAxis','crossAxis',hR(0x345),'fallbackStrategy','fallbackAxisSideDirection','flipAlignment']);if((t=P['arrow'])!=null&&t['alignmentOffset'])return{};const aa=mt(L),ab=dt(R),ac=mt(R)===R,ad=yield a0['isRTL']==null?void 0x0:a0['isRTL'](a1['floating']),ae=a5||(ac||!a8?[Ut(R)]:ao(R)),af=a7!=='none';!a5&&af&&ae[hR(0x135)](...uo(R,a8,a7,ad));const ag=[R,...ae],ah=yield a0['detectOverflow'](o,a9),aj=[];let ak=((I=P['flip'])==null?void 0x0:I['overflows'])||[];if(a3&&aj[hR(0x135)](ah[aa]),a4){const aq=no(L,Q,ad);aj['push'](ah[aq[0x0]],ah[aq[0x1]]);}if(ak=[...ak,{'placement':L,'overflows':aj}],!aj['every'](au=>au<=0x0)){var al,am;const au=(((al=P['flip'])==null?void 0x0:al['index'])||0x0)+0x1,av=ag[au];if(av&&(!(a4==='alignment'&&ab!==dt(av))||ak['every'](ax=>dt(ax['placement'])===ab?ax['overflows'][0x0]>0x0:!0x0)))return{'data':{'index':au,'overflows':ak},'reset':{'placement':av}};let aw=(am=ak['filter'](ax=>ax['overflows'][0x0]<=0x0)['sort']((ax,ay)=>ax['overflows'][0x1]-ay[hR(0x1df)][0x1])[0x0])==null?void 0x0:am[hR(0x156)];if(!aw)switch(a6){case'bestFit':{var ap;const ax=(ap=ak['filter'](ay=>{const hS=hR;if(af){const az=dt(ay[hS(0x156)]);return az===ab||az==='y';}return!0x0;})['map'](ay=>[ay['placement'],ay['overflows'][hR(0x365)](az=>az>0x0)['reduce']((az,aA)=>az+aA,0x0)])[hR(0x314)]((ay,az)=>ay[0x1]-az[0x1])[0x0])==null?void 0x0:ap[0x0];ax&&(aw=ax);break;}case'initialPlacement':aw=R;break;}if(L!==aw)return{'reset':{'placement':aw}};}return{};});}};},Eo=new Set(['left',bH(0x238)]);function po(n,o){return X(this,null,function*(){const {placement:p,platform:v,elements:x}=n,z=yield v['isRTL']==null?void 0x0:v['isRTL'](x['floating']),A=mt(p),B=Mt(p),C=dt(p)==='y',D=Eo['has'](A)?-0x1:0x1,E=z&&C?-0x1:0x1,F=Lt(o,n);let {mainAxis:G,crossAxis:H,alignmentAxis:I}=typeof F=='number'?{'mainAxis':F,'crossAxis':0x0,'alignmentAxis':null}:{'mainAxis':F['mainAxis']||0x0,'crossAxis':F['crossAxis']||0x0,'alignmentAxis':F['alignmentAxis']};return B&&typeof I=='number'&&(H=B==='end'?I*-0x1:I),C?{'x':H*E,'y':G*D}:{'x':G*D,'y':H*E};});}const Co=function(n){return n===void 0x0&&(n=0x0),{'name':'offset','options':n,'fn'(o){return X(this,null,function*(){const hT=b;var p,t;const {x:u,y:v,placement:w,middlewareData:x}=o,z=yield po(o,n);return w===((p=x['offset'])==null?void 0x0:p['placement'])&&(t=x[hT(0x302)])!=null&&t['alignmentOffset']?{}:{'x':u+z['x'],'y':v+z['y'],'data':Y(M({},z),{'placement':w})};});}};},yo=function(n){return n===void 0x0&&(n={}),{'name':'shift','options':n,'fn'(o){return X(this,null,function*(){const hU=b,{x:t,y:v,placement:z,platform:B}=o,C=Lt(n,o),{mainAxis:D=!0x0,crossAxis:F=!0x1,limiter:G={'fn':T=>{let {x:V,y:a0}=T;return{'x':V,'y':a0};}}}=C,H=Kt(C,['mainAxis','crossAxis',hU(0x3e4)]),I={'x':t,'y':v},K=yield B['detectOverflow'](o,H),L=dt(mt(z)),N=Ui(L);let P=I[N],Q=I[L];if(D){const T=N==='y'?'top':hU(0x418),V=N==='y'?'bottom':'right',a0=P+K[T],a1=P-K[V];P=ye(a0,P,a1);}if(F){const a2=L==='y'?hU(0x238):'left',a3=L==='y'?hU(0x17f):hU(0x1b9),a4=Q+K[a2],a5=Q-K[a3];Q=ye(a4,Q,a5);}const R=G['fn'](Y(M({},o),{[N]:P,[L]:Q}));return Y(M({},R),{'data':{'x':R['x']-t,'y':R['y']-v,'enabled':{[N]:D,[L]:F}}});});}};};function ee(){return typeof window<'u';}function vt(n){const hV=bH;return Zi(n)?(n[hV(0x276)]||'')['toLowerCase']():'#document';}function J(n){var o;return(n==null||(o=n['ownerDocument'])==null?void 0x0:o['defaultView'])||window;}function ot(n){const hW=bH;var o;return(o=(Zi(n)?n['ownerDocument']:n[hW(0x1e0)])||window['document'])==null?void 0x0:o[hW(0x182)];}function Zi(n){return ee()?n instanceof Node||n instanceof J(n)['Node']:!0x1;}function tt(n){const hX=bH;return ee()?n instanceof Element||n instanceof J(n)[hX(0x259)]:!0x1;}function ht(n){return ee()?n instanceof HTMLElement||n instanceof J(n)['HTMLElement']:!0x1;}function wi(n){return!ee()||typeof ShadowRoot>'u'?!0x1:n instanceof ShadowRoot||n instanceof J(n)['ShadowRoot'];}function Ht(n){const hY=bH,{overflow:o,overflowX:p,overflowY:u,display:v}=et(n);return/auto|scroll|overlay|hidden|clip/[hY(0x3ad)](o+u+p)&&v!=='inline'&&v!=='contents';}function bo(n){const hZ=bH;return/^(table|td|th)$/[hZ(0x3ad)](vt(n));}function ie(n){const i0=bH;try{if(n['matches'](':popover-open'))return!0x0;}catch(o){}try{return n[i0(0x24b)](i0(0x442));}catch(p){return!0x1;}}const vo=/transform|translate|scale|rotate|perspective|filter/,Io=/paint|layout|strict|content/,xt=n=>!!n&&n!=='none';let fe;function ke(n){const i1=bH,o=tt(n)?et(n):n;return xt(o['transform'])||xt(o['translate'])||xt(o['scale'])||xt(o[i1(0x2c0)])||xt(o['perspective'])||!Ne()&&(xt(o[i1(0x2fa)])||xt(o[i1(0x365)]))||vo['test'](o[i1(0x33a)]||'')||Io['test'](o['contain']||'');}function Ro(n){let o=gt(n);for(;ht(o)&&!bt(o);){if(ke(o))return o;if(ie(o))return null;o=gt(o);}return null;}function Ne(){return fe==null&&(fe=typeof CSS<'u'&&CSS['supports']&&CSS['supports']('-webkit-backdrop-filter','none')),fe;}function bt(n){return/^(html|body|#document)$/['test'](vt(n));}function et(n){return J(n)['getComputedStyle'](n);}function se(n){const i2=bH;return tt(n)?{'scrollLeft':n[i2(0x10b)],'scrollTop':n['scrollTop']}:{'scrollLeft':n['scrollX'],'scrollTop':n['scrollY']};}function gt(n){const i3=bH;if(vt(n)==='html')return n;const o=n['assignedSlot']||n[i3(0x390)]||wi(n)&&n['host']||ot(n);return wi(o)?o['host']:o;}function ji(n){const o=gt(n);return bt(o)?n['ownerDocument']?n['ownerDocument']['body']:n['body']:ht(o)&&Ht(o)?o:ji(o);}function Ot(p,u,v){var w;u===void 0x0&&(u=[]),v===void 0x0&&(v=!0x0);const x=ji(p),z=x===((w=p['ownerDocument'])==null?void 0x0:w['body']),A=J(x);if(z){const B=ve(A);return u['concat'](A,A['visualViewport']||[],Ht(x)?x:[],B&&v?Ot(B):[]);}else return u['concat'](x,Ot(x,[],v));}function ve(n){const i4=bH;return n[i4(0x1c7)]&&Object[i4(0x35b)](n['parent'])?n['frameElement']:null;}function qi(p){const i5=bH,u=et(p);let v=parseFloat(u[i5(0x28a)])||0x0,w=parseFloat(u[i5(0x126)])||0x0;const x=ht(p),z=x?p[i5(0x322)]:v,A=x?p['offsetHeight']:w,B=Vt(v)!==z||Vt(w)!==A;return B&&(v=z,w=A),{'width':v,'height':w,'$':B};}function Fe(n){return tt(n)?n:n['contextElement'];}function Ct(p){const u=Fe(p);if(!ht(u))return it(0x1);const v=u['getBoundingClientRect'](),{width:w,height:x,$:z}=qi(u);let A=(z?Vt(v['width']):v['width'])/w,B=(z?Vt(v['height']):v['height'])/x;return(!A||!Number['isFinite'](A))&&(A=0x1),(!B||!Number['isFinite'](B))&&(B=0x1),{'x':A,'y':B};}const To=it(0x0);function $i(n){const i6=bH,o=J(n);return!Ne()||!o['visualViewport']?To:{'x':o['visualViewport'][i6(0x32c)],'y':o['visualViewport']['offsetTop']};}function So(n,o,p){return o===void 0x0&&(o=!0x1),!p||o&&p!==J(n)?!0x1:o;}function At(p,v,z,B){const i7=bH;v===void 0x0&&(v=!0x1),z===void 0x0&&(z=!0x1);const C=p[i7(0x413)](),D=Fe(p);let F=it(0x1);v&&(B?tt(B)&&(F=Ct(B)):F=Ct(p));const G=So(D,z,B)?$i(D):it(0x0);let H=(C['left']+G['x'])/F['x'],I=(C['top']+G['y'])/F['y'],K=C['width']/F['x'],L=C['height']/F['y'];if(D){const N=J(D),P=B&&tt(B)?J(B):B;let Q=N,R=ve(Q);for(;R&&B&&P!==Q;){const S=Ct(R),T=R['getBoundingClientRect'](),V=et(R),a0=T[i7(0x418)]+(R['clientLeft']+parseFloat(V['paddingLeft']))*S['x'],a1=T[i7(0x238)]+(R['clientTop']+parseFloat(V['paddingTop']))*S['y'];H*=S['x'],I*=S['y'],K*=S['x'],L*=S['y'],H+=a0,I+=a1,Q=J(R),R=ve(Q);}}return Jt({'width':K,'height':L,'x':H,'y':I});}function oe(n,o){const i8=bH,p=se(n)['scrollLeft'];return o?o['left']+p:At(ot(n))[i8(0x418)]+p;}function ts(n,o){const i9=bH,p=n['getBoundingClientRect'](),u=p[i9(0x418)]+o['scrollLeft']-oe(n,p),v=p[i9(0x238)]+o['scrollTop'];return{'x':u,'y':v};}function _o(p){const ia=bH;let {elements:v,rect:w,offsetParent:x,strategy:z}=p;const A=z===ia(0x1c0),B=ot(x),C=v?ie(v['floating']):!0x1;if(x===B||C&&A)return w;let D={'scrollLeft':0x0,'scrollTop':0x0},E=it(0x1);const F=it(0x0),G=ht(x);if((G||!G&&!A)&&((vt(x)!=='body'||Ht(B))&&(D=se(x)),G)){const I=At(x);E=Ct(x),F['x']=I['x']+x['clientLeft'],F['y']=I['y']+x['clientTop'];}const H=B&&!G&&!A?ts(B,D):it(0x0);return{'width':w['width']*E['x'],'height':w['height']*E['y'],'x':w['x']*E['x']-D['scrollLeft']*E['x']+F['x']+H['x'],'y':w['y']*E['y']-D['scrollTop']*E['y']+F['y']+H['y']};}function Oo(n){const ib=bH;return Array[ib(0x337)](n['getClientRects']());}function Lo(p){const ic=bH,u=ot(p),v=se(p),w=p['ownerDocument']['body'],x=wt(u[ic(0x105)],u['clientWidth'],w['scrollWidth'],w['clientWidth']),z=wt(u[ic(0x41c)],u['clientHeight'],w['scrollHeight'],w['clientHeight']);let A=-v['scrollLeft']+oe(p);const B=-v['scrollTop'];return et(w)[ic(0x268)]===ic(0x287)&&(A+=wt(u[ic(0x2f1)],w['clientWidth'])-x),{'width':x,'height':z,'x':A,'y':B};}const mi=0x19;function Mo(p,v){const id=bH,x=J(p),z=ot(p),A=x['visualViewport'];let B=z['clientWidth'],C=z['clientHeight'],D=0x0,E=0x0;if(A){B=A['width'],C=A['height'];const G=Ne();(!G||G&&v==='fixed')&&(D=A['offsetLeft'],E=A['offsetTop']);}const F=oe(z);if(F<=0x0){const H=z['ownerDocument'],I=H['body'],K=getComputedStyle(I),L=H[id(0x3ce)]==='CSS1Compat'&&parseFloat(K['marginLeft'])+parseFloat(K['marginRight'])||0x0,N=Math['abs'](z['clientWidth']-I['clientWidth']-L);N<=mi&&(B-=N);}else F<=mi&&(B+=F);return{'width':B,'height':C,'x':D,'y':E};}function Ho(p,u){const ig=bH,v=At(p,!0x0,u==='fixed'),w=v['top']+p[ig(0x157)],x=v[ig(0x418)]+p['clientLeft'],z=ht(p)?Ct(p):it(0x1),A=p['clientWidth']*z['x'],B=p['clientHeight']*z['y'],C=x*z['x'],D=w*z['y'];return{'width':A,'height':B,'x':C,'y':D};}function Ai(n,o,p){let u;if(o==='viewport')u=Mo(n,p);else{if(o==='document')u=Lo(ot(n));else{if(tt(o))u=Ho(o,p);else{const v=$i(n);u={'x':o['x']-v['x'],'y':o['y']-v['y'],'width':o['width'],'height':o['height']};}}}return Jt(u);}function es(n,o){const p=gt(n);return p===o||!tt(p)||bt(p)?!0x1:et(p)['position']==='fixed'||es(p,o);}function Do(p,u){const ih=bH,v=u['get'](p);if(v)return v;let w=Ot(p,[],!0x1)['filter'](B=>tt(B)&&vt(B)!=='body'),x=null;const z=et(p)['position']==='fixed';let A=z?gt(p):p;for(;tt(A)&&!bt(A);){const B=et(A),C=ke(A);!C&&B['position']==='fixed'&&(x=null),(z?!C&&!x:!C&&B['position']==='static'&&x&&(x['position']==='absolute'||x['position']==='fixed')||Ht(A)&&!C&&es(p,A))?w=w['filter'](D=>D!==A):x=B,A=gt(A);}return u[ih(0x119)](p,w),w;}function Bo(p){const ij=bH;let {element:v,boundary:w,rootBoundary:x,strategy:z}=p;const A=[...w===ij(0x1aa)?ie(v)?[]:Do(v,this['_c']):[]['concat'](w),x],B=Ai(v,A[0x0],z);let C=B['top'],D=B['right'],E=B['bottom'],F=B[ij(0x418)];for(let G=0x1;G<A['length'];G++){const H=Ai(v,A[G],z);C=wt(H[ij(0x238)],C),D=yt(H['right'],D),E=yt(H['bottom'],E),F=wt(H['left'],F);}return{'width':D-F,'height':E-C,'x':F,'y':C};}function ko(n){const {width:o,height:p}=qi(n);return{'width':o,'height':p};}function No(p,v,w){const ik=bH,x=ht(v),z=ot(v),A=w==='fixed',B=At(p,!0x0,A,v);let C={'scrollLeft':0x0,'scrollTop':0x0};const D=it(0x0);function E(){D['x']=oe(z);}if(x||!x&&!A){if((vt(v)!=='body'||Ht(z))&&(C=se(v)),x){const I=At(v,!0x0,A,v);D['x']=I['x']+v['clientLeft'],D['y']=I['y']+v[ik(0x157)];}else z&&E();}A&&!x&&z&&E();const F=z&&!x&&!A?ts(z,C):it(0x0),G=B['left']+C['scrollLeft']-D['x']-F['x'],H=B[ik(0x238)]+C['scrollTop']-D['y']-F['y'];return{'x':G,'y':H,'width':B['width'],'height':B[ik(0x126)]};}function xe(n){const il=bH;return et(n)[il(0x21c)]==='static';}function Ei(n,o){const im=bH;if(!ht(n)||et(n)['position']==='fixed')return null;if(o)return o(n);let p=n[im(0x389)];return ot(n)===p&&(p=p['ownerDocument'][im(0xfa)]),p;}function is(n,o){const p=J(n);if(ie(n))return p;if(!ht(n)){let v=gt(n);for(;v&&!bt(v);){if(tt(v)&&!xe(v))return v;v=gt(v);}return p;}let u=Ei(n,o);for(;u&&bo(u)&&xe(u);)u=Ei(u,o);return u&&bt(u)&&xe(u)&&!ke(u)?p:u||Ro(n)||p;}const Fo=function(n){return X(this,null,function*(){const ip=b,o=this['getOffsetParent']||is,p=this[ip(0x356)],s=yield p(n[ip(0x1de)]);return{'reference':No(n['reference'],yield o(n['floating']),n['strategy']),'floating':{'x':0x0,'y':0x0,'width':s[ip(0x28a)],'height':s['height']}};});};function Ko(n){return et(n)['direction']==='rtl';}const Yo={'convertOffsetParentRelativeRectToViewportRelativeRect':_o,'getDocumentElement':ot,'getClippingRect':Bo,'getOffsetParent':is,'getElementRects':Fo,'getClientRects':Oo,'getDimensions':ko,'getScale':Ct,'isElement':tt,'isRTL':Ko};function ss(n,o){const iq=bH;return n['x']===o['x']&&n['y']===o['y']&&n['width']===o[iq(0x28a)]&&n['height']===o['height'];}function a(){const mN=['navigateNext','imageEnterAndLeave','getFooter','SELECT_BORDER_COLOR','contextMenuEl','reference','getColumnByKey','rowspan','%,\x20','minWidth','arrowEl','options','contextMenu','e-virt-table-finder-bar-input-wrapper','mergeRow','childrenKey','drawTextY','scrollToColkey','destroy','maxWidth','hasEvent','displayText','getItemValue','totalRows','fixedRight','selection','ERROR_TIP_ICON_COLOR','toLocaleLowerCase','test','mutationObserver','function','drawCellBgColor','#202124','split','formatterFooter','FOOTER_BG_COLOR','event','1175xAHOKH','innerText','toString','CELL_HOVER_ICON_BG_COLOR','setAttribute','charAt','rowIndexRowKeyMap','drawHoverImageHeight','drawRect','hide','module','backgroundColor','SORT_DESC_ICON_SVG','getCellValue','drawFixedContainer','loadingElement','handleWheel','TREE_SELECT_MODE','type','enable','getOverlayerAutoHeight','ENABLE_EDIT_SINGLE_CLICK','getHeader','col','compatMode','drawTextX','currentIndex','loading-kicker','6a5acd','map','恢复默认','paint','platform','editCell','mousedownHeader','ENABLE_MERGE_CELL_LINK','getItemValueForRowIndexAndColIndex','drawView','stringify','disableHoverIconClick','click','drawDragTip','drawTextColor','f0fff0','colIndexKeyMap','index-selection','limiter','noFixedCells','endRow','canvas','rgba(0,0,0,0.1)','icons','getMaxRowHeightItem','verticalScrollbar','exports','wordBreak','resetCustomHeader','Backspace','selector','#ffffff','totalCols','updateCount','TREE_CHILDREN_KEY','autoRowHeight','checkbox-uncheck','handleKeydown','20tMMZwm','resizeObserver','cearFinderBar','KeyC','drawSortImageSource','number','validate','getVirtualBodyCellByKey','HIGHLIGHT_HOVER_ROW','_ok','drawTreeImageHeight','1672sBDRiW','timerX','mouseenter','timerY','getColumnByColIndex','_COLOR','convertOffsetParentRelativeRectToViewportRelativeRect','hasSelection','clear','clearEditor','SELECT_ROW_COL_BG_COLOR','contextMenuElement','#F1F2F4','show','name','finding','getBoundingClientRect','arerMapsEqual','getDragCellHeader','000','scrollToRowkey','left','toHslString','onMouseMove','createLinearGradient','scrollHeight','drawHoverImageSource','4169e1','_submenu','px;','names','value','00ff7f','assign','drawFixedShadow','drawTextWidth','drawHoverImageY','updateSpanInfo','horizontalAlign','fill=\x22#bec4c7\x22\x20p-id=\x222015\x22','observe','cellCache','RESIZE_COLUMN_LINE_COLOR','getContainer','intersectionRatio','fillText','overflowTooltipShow','eee8aa','findNodeWithParent','setFilterMethod','a9a9a9','Delete','getTime','break-all','onMouseUp','drawCellSkyBgColor','clearSelectedData','lineDash','renderHeaderType','rgba(0,0,0,0)','cellTarget','66cdaa','save',':modal','startRow','cautious','footerData','footer','trim','getBrightness','exec','wrapText','cancel','ENABLE_RESIZE_ROW','ENABLE_SELECTOR_ALL_COLS','outsideMousedown','doneEditByInput','maxHeight','ctx','reduce','message','tree-selection','activeElement','border-box','2f4f4f','max','body','originalDataMap','getText','symbol','getValidator','toRgb','apply','EDIT_BG_COLOR','selectOnlyOne','historyIndex','hoverCell','scrollWidth','drawX','00ced1','getAttribute','3590FRlRfj','lastCenterColIndex','scrollLeft','hoverIconName','colWidth','clearValidate','cellHeaderHoverChange','isBusy','beginPath','1068oHXsRw','f5f5f5','span','block','editorProps','column','align','set','startEditByInput','setCustomHeader','handleMouseout','ffc0cb','LOADING_TEXT','arcTo','_originalInput','setFocusCell','cellFooterMouseleave','toLowerCase','bufferCheckState','drawCenter','height','ffa07a','ICONS','getSpanInfo','offsetY','clearValidationError','entries','2602919aqNfRE','then','Assignment\x20failed,\x20not\x20a\x20numeric\x20type','focusCell','cleanupSubmenuRecursively','STRIPE','[\x5cs|\x5c(]+(','altKey','push','rgb(','225118VKyPfD','scrollToIndex','ceil','error','enter','drawContainer','level','empty','getRowForRowKey','hasOwnProperty','loadConfig','clip','hideData','headIndex','drawFixed','dragStart','bdb76b','SCROLLER_TRACK_SIZE','rects','scrollToRowIndex','key','f0f','clientY','trackY','contextMenuPaste','isInsideBody','maxRowIndex','CHECKBOX_CHECK_SVG','Failed\x20to\x20load\x20image:','getLeftFixedX','mouseout','placement','clientTop','1374iHGcmi','drawSortImageX','onClick','CHECKBOX_DISABLED_SVG','mergeCol','centerCellHeaders','CONTEXT_MENU','onTouchmove','borderRight','tree','resetHeader','e-virt-table-editor-textarea','replace','progid:DXImageTransform.Microsoft.gradient(','right-start','LEFT','buffer','getSelectionRows','containerRect','xArr','item','colIndex','visibleHeight','fillRect','ArrowLeft','drawImage','BODY_BG_COLOR','getData','setScrollY','drawSelectionImageSource','setSelectorCell','cellHeaderMouseenter','maxColIndex','selectTreeSelectionRecursive','87ceeb','13444JsXqRn','animationFrameId','」...','getChangedRows','bottom','meta','init','documentElement','index','__k','BODY_FONT','div','.e-virt-table-menu-item,\x20.e-virt-table-submenu-item','round','getTreeChildren','onPastedDataOverflow','fixedRightWidth','barHeight','match','e-virt-table-menu-item','shiftKey','isInteger','clickCell','clearSelection','focus','<svg\x20t=\x221755138507987\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x225079\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M512\x20938.688a42.688\x2042.688\x200\x200\x201-35.072-18.432l-192-277.312A42.56\x2042.56\x200\x200\x201\x20320\x20576h384a42.752\x2042.752\x200\x200\x201\x2035.072\x2066.944l-192\x20277.312a42.688\x2042.688\x200\x200\x201-35.072\x2018.432\x22\x20fill=\x22currentColor\x22\x20p-id=\x222016\x22></path><path\x20d=\x22M704\x20448H320a42.752\x2042.752\x200\x200\x201-35.072-66.944l192-277.312c16-23.04\x2054.208-23.04\x2070.144\x200l192\x20277.312A42.56\x2042.56\x200\x200\x201\x20704\x20448\x22\x20fill=\x22currentColor\x22\x20p-id=\x222015\x22></path></svg>','drawTextFont','100%','scrollerMove','isCustom','renderFooterType','colspan','config','getRowForRowIndex','rgba(82,146,247,0.1)','visibleLeafColumns','loadingEl','e6e6fa','getVirtualBodyCell','middle','#5f6368','clearRect','lineHeight','setCustomHeaderFixedData','filterColumns','autofillMove','calculatedHeightCells','clippingAncestors','visibleColumns','data:image/svg+xml;charset=utf-8,','<svg\x20t=\x221724122044148\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M707.648\x20401.28L489.28\x20560.704l22.656\x2030.976\x2022.656-30.976L316.16\x20401.216q-3.072-2.24-6.464-3.84-3.456-1.536-7.104-2.432-3.712-0.896-7.488-1.088-3.776-0.128-7.488\x200.448-3.776\x200.64-7.296\x201.92-3.584\x201.28-6.784\x203.2-3.2\x201.984-6.016\x204.544-2.816\x202.56-5.056\x205.632-2.176\x203.072-3.84\x206.464-1.536\x203.456-2.432\x207.104-0.896\x203.712-1.088\x207.488-0.128\x203.776\x200.448\x207.488\x200.64\x203.776\x201.92\x207.296\x201.28\x203.584\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992l218.368\x20159.552q4.928\x203.584\x2010.752\x205.504\x205.76\x201.92\x2011.904\x201.92\x206.08\x200\x2011.904-1.92\x205.76-1.92\x2010.752-5.504l218.368-159.552q3.008-2.24\x205.568-4.992\x202.56-2.816\x204.544-6.016\x201.92-3.2\x203.264-6.784\x201.28-3.52\x201.92-7.296\x200.576-3.712\x200.384-7.488-0.128-3.84-1.024-7.488-0.896-3.648-2.496-7.04-1.6-3.456-3.84-6.528-2.24-3.072-4.992-5.632-2.816-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.584-1.28-7.296-1.856-3.712-0.64-7.488-0.448-3.84\x200.192-7.488\x201.088-3.648\x200.896-7.04\x202.496-3.456\x201.536-6.528\x203.84z\x20m61.056\x2030.976q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.472-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.72-3.584-3.456-1.408-7.168-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.656\x203.584-3.136\x202.112-5.76\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.584\x206.656-1.408\x203.52-2.176\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.176\x207.168\x201.472\x203.52\x203.584\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.168-2.176\x203.52-1.408\x206.656-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.048-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x20m-436.736\x200q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.408-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.592\x203.584-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.24\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.24\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x22\x20p-id=\x224552\x22></path></svg>','onMouseDown','SELECT_AREA_COLOR','drawTreeImageY','overflowTooltipMaxWidth','required','12px\x20Arial','getChangedData','rowHeightCache','distance','countEl','../worker/sheet.worker.js','right','c0c0c0','eventTable','onScrollY','backState','createObjectURL','setScroll','fixed','cleanupAllSubmenus','editorType','once','text','default','addColorStop','parent','desc','isComposing','editor','nextBtn','rowKeyRowIndexMap','drawText','length','editorEl','px\x20','ff4500','checkbox-check','fixedCells','scrollY','top-start','selectionchange','drawY','-5px','BODY_CELL_STYLE_METHOD','CELL_FOOTER_HEIGHT','drawSelectionImageX','drawSelectionImageWidth','sheet-loading-summary','floating','overflows','document','focusCellHeader','drawSortImageHeight','setRowSelectionByCheckboxKey','concat','errorMessage','createMenu','prevBtn','fontStyle','#4E5969','leafCellHeaders','startsWith','doLayout','BORDER_RADIUS','fillStyle','33878BnrUDy','containerElement','font','drawTreeLine','closest','hex','Argument\x20to\x20polyad\x20must\x20be\x20a\x20positive\x20number','searchResults','Loaded','setExpandChildren','getRightFixedX','tooltip','getRowSelectable','ENABLE_RESIZE_COLUMN_TEXT','updateRender','compositionend','_config','daa520','sortState','canvasElement','DEFAULT_EXPAND_ALL','row','children','paste','stageElement','not-allowed','operation','source','resizeTarget','cellHeaderMousedown','expandChange','SELECTOR_AREA_MAX_Y','CHECKBOX_UNCHECK_SVG','selectionMap','class','getColumns','offsetX','expandLoading','getDrawX','getScale','ENABLE_SELECTOR_ALL_ROWS','setSelector','emptyEl','isVerticalVisible','catch','position','floatingEl','#e1e6eb','_applyCombination','drawHoverImageX','Loading','DISABLED','cellFooterHoverChange','getValidations','includes','initSearchData','find','KeyZ','data','SPAN_METHOD','dblclick','getSelection','horizontalScrollbar','xArrCopy','toolbar','hsla(','rowExpand','borderLeft','fixedRightCellHeaders','sort-asc','TREE_INDENT','visibleWidth','dragTarget','top','resizeDiff','data-menu','className','fillColor','handleDblclick','createContainer','list','flex-end','absolute','start','#000','contains','visibleDistance','handleTouchmove','hasChildren','SELECTOR_CELL_VALUE_TYPE','8a2be2','sortBy','matches','doneEdit','slice','min','splice','dc143c','isMultipleRow','getBody','active','statusSummary','setAutofill','check','toggleRowSelection','querySelectorAll','Element','auto','zIndex','contextMenuCopy','onWheel','rect','setRowSelection','drawLine','expand','selectorArrStr','borderTop','currentDOMTreeMenu','TREE_LINE_COLOR','renderFooter','getOverlayerAutoHeightMap','direction','mousemove','offsetTop','loadedWindows','done','暂无数据','EXPAND_ICON_SVG','filterMethod','TREE_ICON_SIZE','ffa500','MM.DD.YYYY','Home','get','copy','nodeName','removeMenuItem','renderType','stageHeight','adjustBoundaryPosition','appendChild','scroller','ICON_EDIT_SVG','verticalAlign','drawTreeImageSource','handleMouseEvent','isOnTrack','hideLoading','button','input','isResizing','toHexString','rtl','createElement','header','width','eventBus','getElementRects','Target\x20node\x20not\x20found','CSS_UNIT','faf0e6','columnIndex','contentEl','dragingCell','getValidationError','isMouseDown','getComputedStyle','_cleanup','trackHeight','hideSubmenu','floor','minX','rowKey','data-row-index','#FFF','allCellHeaders','Placeholder','bindEvents','barX','history','scale(0.92)','setScrollX','deb887','join','setSortState','renderLeafCellHeaders','autofill','expandMap','stroke','isElement','__index','inputEl','hoverCellHeader','readability','disabled','isInsideElement','setCustomHeaderHideData','rules','mouseX','F10','values','drawBorder','emit','structure','191970','rowHeight','XlsxTable','rows','cd853f','rotate','metaKey','handleBodyEvent','clientX','database','positions','defaults','customHeader','BEFORE_SET_AUTOFILL_METHOD','ENABLE_OFFSET_HEIGHT','#21a366','isPointer','drawAutofillPiont','_FONT','selectCols','HIGHLIGHT_SELECTED_ROW_COLOR','selection-tree','getCell','dcdcdc','ellipsis','cellDblclick','228b22','.e-virt-table-submenu','batchSetItemValue','render','small','sortAscIconName','boundMouseLeaveHandler','hoverRow','ArrowUp','clearSelected','getRowKeyByItem','getOffsetParent','#fff','e-virt-table-menu-item-icon','add','startEdit','a0522d','has','parentElement','ENABLE_VALIDATOR_IMMEDIATE','events','selectRows','overlayer','drawTreeImageName','ArrowRight','hasScrollbar','readonly','TOP','clientWidth','getPositionForRowIndex','drawSelectionImageY','innerHTML','svg','finderBar','row-resize','left-end','ctrlKey','backdropFilter','fffff0','none','mouseup','getIsExpand','overflowTooltipHeaderShow','scroll','_self','arrow','567077Lyoigm','isLastChild','8361jDpXcx','NUMBER_ERROR_TIP','drawSelectionImageHeight','code','getRowKeyForRowIndex','mergeCoveredMap','MM/DD/YYYY','setMoveFocus','hidden','mouseleave','textAlign','clearTreeSelectionRecursive','e-virt-table-menu-arrow','fff','60dvhIsr','sort','getDrawY','yArrCopy','ENABLE_AUTOFILL','renderRows','isPointInElement','onTouchstart','(?:','disconnect','b0c4de','rgb(82,146,247)','getReadonly','KeyA','minY','offsetWidth','columns','grabbing','_roundA','stageWidth','getExpandRowKeys','getFooterData','draw','color','FOOTER_FIXED','offsetLeft','border','forEach','TREE_LINE','isVisible','hideHeaderSelection','string','_height','isCut','ffe4b5','overflowTooltipPlacement','from','editing','isArray','willChange','mousedown','columnResizing','widthFillDisable','center','GradientType\x20=\x201,\x20','getCheckedState','splitPoints','formatter','rowIndex','indeterminate','fallbackPlacements','Aptos,\x20Calibri,\x20\x22Segoe\x20UI\x22,\x20\x22PingFang\x20SC\x22,\x20\x22Microsoft\x20YaHei\x22,\x20sans-serif','cellType','validationErrorMap','drawSelectionImageName','visibleRows','preventDefault','update','querySelector','getOffset','tailIndex','checkbox-check-disabled','ArrowDown','.e-virt-table-submenu-item','updateParentTreeSelection','drawEdge','drawTreeImageX','getDimensions','merge','sortDataRecursive','pow','handleFooterEvent','getPrototypeOf','ENABLE_RESIZE_COLUMN','yArr','classList','-tooltip','setMouseUp','drawTextHeight','addEventListener','fixedLeftCellHeaders','transparent','filter','container','navigatePrevious','hoverIconClick','remove','drawBg','getRowDataItemForRowKey','ENABLE_DRAG_COLUMN','size','cursor','ERR_MERGED_CELLS_COPY','startAdjustPosition','htLeft','F11','fffaf0','scrollerFocus','getClippingRect','cells','crosshair','isRTL','contextMenuIng','keydown','getValue','initData','CSS_PREFIX','loadData','generateColumns','rowKeyMap','title','bind','calc(100%\x20+\x20','strong','end','visible_','visibleCellHoverChange','style','offsetParent','handleClick','e-virt-table-loading-spinner','handleHeaderEvent','RESIZE_COLUMN_TEXT_BG_COLOR','call','d3d3d3','parentNode'];a=function(){return mN;};return a();}function Xo(p,u){let v=null,w;const x=ot(p);function z(){var B;clearTimeout(w),(B=v)==null||B['disconnect'](),v=null;}function A(B,C){const iu=b;B===void 0x0&&(B=!0x1),C===void 0x0&&(C=0x1),z();const D=p['getBoundingClientRect'](),{left:F,top:G,width:H,height:I}=D;if(B||u(),!H||!I)return;const K=Yt(G),L=Yt(x['clientWidth']-(F+H)),N=Yt(x['clientHeight']-(G+I)),P=Yt(F),Q={'rootMargin':-K+iu(0x1d0)+-L+'px\x20'+-N+'px\x20'+-P+'px','threshold':wt(0x0,yt(0x1,C))||0x1};let R=!0x0;function S(T){const iv=iu,V=T[0x0][iv(0x42f)];if(V!==C){if(!R)return A();V?A(!0x1,V):w=setTimeout(()=>{A(!0x1,1e-7);},0x3e8);}V===0x1&&!ss(D,p[iv(0x413)]())&&A(),R=!0x1;}try{v=new IntersectionObserver(S,Y(M({},Q),{'root':x['ownerDocument']}));}catch(T){v=new IntersectionObserver(S,Q);}v['observe'](p);}return A(!0x0),z;}function Ie(p,v,z,A){const iw=bH;A===void 0x0&&(A={});const {ancestorScroll:B=!0x0,ancestorResize:C=!0x0,elementResize:D=typeof ResizeObserver=='function',layoutShift:E=typeof IntersectionObserver=='function',animationFrame:F=!0x1}=A,G=Fe(p),H=B||C?[...G?Ot(G):[],...v?Ot(v):[]]:[];H[iw(0x32e)](R=>{B&&R['addEventListener']('scroll',z,{'passive':!0x0}),C&&R['addEventListener']('resize',z);});const I=G&&E?Xo(G,z):null;let K=-0x1,L=null;D&&(L=new ResizeObserver(R=>{let [S]=R;S&&S['target']===G&&L&&v&&(L['unobserve'](v),cancelAnimationFrame(K),K=requestAnimationFrame(()=>{const ix=b;var T;(T=L)==null||T[ix(0x42b)](v);})),z();}),G&&!F&&L['observe'](G),v&&L['observe'](v));let N,P=F?At(p):null;F&&Q();function Q(){const R=At(p);P&&!ss(P,R)&&z(),P=R,N=requestAnimationFrame(Q);}return z(),()=>{const iy=iw;var R;H['forEach'](S=>{B&&S['removeEventListener']('scroll',z),C&&S['removeEventListener']('resize',z);}),I==null||I(),(R=L)==null||R[iy(0x31c)](),L=null,F&&cancelAnimationFrame(N);};}const Zt=Co,jt=yo,Ke=Ao,Wo=mo,qt=(n,p,u)=>{const iz=bH,v=new Map(),w=M({'platform':Yo},u),x=Y(M({},w[iz(0x3d6)]),{'_c':v});return wo(n,p,Y(M({},w),{'platform':x}));};let Po=class{constructor(p){const iA=bH;h(this,'ctx'),h(this,'enable',!0x1),h(this,iA(0x291)),h(this,iA(0x21d)),h(this,'arrowEl'),this['ctx']=p;const {TOOLTIP_BG_COLOR:u,TOOLTIP_TEXT_COLOR:v,TOOLTIP_ZINDEX:w,TOOLTIP_CUSTOM_STYLE:x,CSS_PREFIX:z}=this['ctx']['config'];this['contentEl']=document['createElement']('div'),this['arrowEl']=document['createElement']('div'),this[iA(0x21d)]=document['createElement']('div'),this['floatingEl'][iA(0x23b)]=z+iA(0x35f),this['contentEl'][iA(0x23b)]=z+'-tooltip-content',this['arrowEl'][iA(0x23b)]=z+'-tooltip-arrow';const A=M({'display':'none','position':'absolute','background':u,'color':v,'boxSizing':iA(0xf7),'zIndex':w,'padding':'8px','borderRadius':'4px','fontSize':'12px'},x),B={'position':'absolute','width':'10px','height':'10px','background':A['background'],'backgroundColor':A['backgroundColor'],'transform':'rotate(45deg)','zIndex':A[iA(0x25b)]};Object['assign'](this['arrowEl']['style'],B),Object['assign'](this['floatingEl']['style'],A),this['floatingEl']['appendChild'](this['contentEl']),this['floatingEl']['appendChild'](this['arrowEl']),this['ctx']['containerElement'][iA(0x27b)](this[iA(0x21d)]),this['init']();}[bH(0x181)](){const iC=bH;this['floatingEl']['addEventListener']('mouseleave',()=>{this['hide']();}),this['ctx']['on']('mouseout',n=>{const iB=b;this['floatingEl']['contains'](n['relatedTarget'])||this[iB(0x3bf)]();}),this['ctx']['on']('onScroll',()=>{this['hide']();}),this['ctx']['on']('startEdit',()=>{this['hide']();}),this['ctx']['on'](iC(0x387),(n,o)=>{this['floatingEl']['contains'](o['target'])||(n['ellipsis']||n['message'])&&this['show'](n);}),this[iC(0xf2)]['on']('visibleCellMouseleave',(n,o)=>{const iD=iC;this['floatingEl'][iD(0x244)](o['target'])||this['hide']();}),this[iC(0xf2)]['on']('cellHeaderMouseleave',(n,o)=>{this['floatingEl']['contains'](o['target'])||this['hide']();}),this['ctx']['on']('cellHeaderHoverChange',(n,o)=>{const iE=iC;this[iE(0x21d)]['contains'](o['target'])||n[iE(0x2d3)]&&this['show'](n);}),this['ctx']['on'](iC(0x122),(n,o)=>{const iF=iC;this[iF(0x21d)]['contains'](o['target'])||this['hide']();}),this['ctx']['on'](iC(0x223),(n,o)=>{const iG=iC;this['floatingEl']['contains'](o['target'])||n['ellipsis']&&this[iG(0x410)](n);}),this['ctx']['on']('cellShowTooltip',(n,o)=>{this['show'](n,o);}),this['ctx']['on']('cellHideTooltip',()=>{this['hide']();});}['show'](n,p){const iH=bH;if(this['ctx']['contextMenuIng']||!n['overflowTooltipShow']||this['ctx']['mousedown'])return;this[iH(0x21d)]['style']['display']='block';let u=n['getText']();n['message']&&(u=n['message']),p&&(u=p);const v=this['ctx']['containerElement']['getBoundingClientRect']();if(!v)return;this[iH(0x3c9)]=!0x0,this[iH(0x291)]['style']['maxWidth']=(n[iH(0x1b1)]||0x1f4)+'px',this['contentEl']['style']['minWidth']='100px',this['contentEl']['style']['width']=iH(0x196),this['contentEl']['style']['display']='inline-block',this['contentEl']['style'][iH(0x3ed)]=iH(0x438),this['contentEl']['style']['lineHeight']='1.5',this['contentEl']['innerText']=u;const w=n[iH(0x106)]+v['x'],x=n[iH(0x1d7)]+v['y'];qt({'getBoundingClientRect'(){const iI=iH;return{'width':n[iI(0x236)],'height':n['visibleHeight'],'x':w,'y':x,'left':w,'right':w+n[iI(0x236)],'top':x,'bottom':x+n['visibleHeight']};}},this['floatingEl'],{'placement':n['overflowTooltipPlacement'],'middleware':[jt(),Ke(),Zt(0x6),Wo({'element':this['arrowEl']})]})['then'](z=>{const iJ=iH,{x:A,y:B,placement:C,middlewareData:D}=z;if(Object['assign'](this['floatingEl']['style'],{'top':B+'px','left':A+'px'}),D['arrow']){const E=D['arrow'];['left','left-start',iJ(0x2f8)][iJ(0x225)](C)?Object['assign'](this[iJ(0x39b)]['style'],{'top':E['y']+'px','bottom':'','left':'','right':'-5px'}):['right','right-start','right-end']['includes'](C)?Object['assign'](this['arrowEl'][iJ(0x388)],{'top':E['y']+'px','bottom':'','left':iJ(0x1d8),'right':''}):['bottom','bottom-start','bottom-end']['includes'](C)?Object['assign'](this['arrowEl']['style'],{'top':iJ(0x1d8),'bottom':'','left':E['x']+'px','right':''}):['top',iJ(0x1d5),'top-end']['includes'](C)&&Object['assign'](this['arrowEl']['style'],{'top':'','bottom':iJ(0x1d8),'left':E['x']+'px','right':''});}});}['hide'](){this['enable']&&(this['enable']=!0x1,this['floatingEl']['style']['display']='none');}['destroy'](){this['contentEl']['remove'](),this['arrowEl']['remove'](),this['floatingEl']['remove']();}};class Qo{constructor(n){const iK=bH;h(this,'editorEl'),h(this,'inputEl'),h(this,'enable',!0x1),h(this,'cellTarget',null),h(this,'selectorArrStr',''),h(this,'ctx'),h(this,'drawY',0x0),h(this,'drawX',0x0),h(this,iK(0xec),!0x1),this['ctx']=n,this['initTextEditor'](),this['init']();}[bH(0x181)](){const iN=bH;this['ctx']['on']('outsideMousedown',()=>{const iL=b;this[iL(0x43f)]&&this['cellTarget']['editorType']==='text'&&this['clearEditor']();}),this['ctx']['on']('moveFocus',n=>{const iM=b;this[iM(0x43f)]=n,this['resetEditorStyle']();const {xArr:o,yArr:p}=this['ctx']['selector'];this['selectorArrStr']=JSON['stringify'](o)+JSON['stringify'](p),this['focusInput']();}),this['ctx']['on']('onScroll',()=>{this['enable']&&this['doneEdit']();}),this['ctx']['on']('hoverIconClick',n=>{this['editCell'](n['rowIndex'],n['colIndex']);}),this[iN(0xf2)]['on']('keydown',p=>{const iO=iN;if(!this['ctx']['isTarget'](p)||!this['ctx']['focusCell']||this[iO(0xf2)]['finding'])return;const {focusCell:r}=this['ctx'];if(p['code']==='Escape'&&this['ctx']['editing']){this[iO(0xec)]=!0x0;const {focusCell:B}=this['ctx'];B&&(this['ctx']['emit']('setSelectorCell',B),this[iO(0x43f)]=B),this['doneEdit']();return;}if((p['altKey']||p['metaKey'])&&p[iO(0x14b)]==='Enter'&&this['ctx']['editing']&&this['inputEl']){p['preventDefault']();const C=this['inputEl']['selectionStart'],D=this['inputEl']['value']['substring'](0x0,C),E=this['inputEl']['value']['substring'](C);this['inputEl']['value']=D+'\x0a'+E,this['inputEl']['selectionStart']=this['inputEl']['selectionEnd']=C+0x1,this['autoSize']();return;}if(p['code']==='Tab'&&this[iO(0xf2)]['editing']){if(p[iO(0x34b)](),this['doneEdit'](),p['shiftKey']){this['ctx'][iO(0x2b9)](iO(0x30c),'LEFT');return;}this['ctx']['emit'](iO(0x30c),'RIGHT');return;}if(p['key']==='Enter'&&this['ctx'][iO(0x338)]){if(p['preventDefault'](),this['doneEdit'](),p['shiftKey']){this['ctx']['emit']('setMoveFocus','TOP');return;}this['ctx'][iO(0x2b9)]('setMoveFocus','BOTTOM');return;}if(p[iO(0x14b)]==='Enter'&&!this['ctx']['editing']){p['preventDefault'](),this['startEdit']();return;}const v=p['key'],w=p['ctrlKey'],x=p[iO(0x134)],z=p['shiftKey'],A=p['metaKey'];if(!(w||x||z||A||['Enter','CapsLock','Escape','Tab','Backspace',iO(0x436),'ArrowUp','ArrowDown',iO(0x170),iO(0x2ed),iO(0x273),'End','PageUp','PageDown','Insert','F1','F2','F3','F4','F5','F6','F7','F8','F9',iO(0x2b6),iO(0x372),'F12']['includes'](v))){if(document[iO(0xf6)]!==this['inputEl']&&r['editorType']===iO(0x1c4)){p['preventDefault']();return;}this['startEdit'](!0x0);}}),this['ctx']['on']('cellClick',n=>{const iP=iN;if(this['ctx']['isPointer']||!this['isInSelectorRange'](n['rowIndex'],n['colIndex']))return;const {xArr:o,yArr:p}=this['ctx'][iP(0x3f0)],r=JSON['stringify'](o)+JSON[iP(0x3dc)](p);if(this['focusInput'](),this[iP(0x262)]===r&&this['cellTarget']){if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx']['onlyMergeCell']){this['startEdit']();return;}if(this['ctx']['selectOnlyOne']&&n['rowKey']===this['cellTarget'][iP(0x29b)]&&n['key']===this[iP(0x43f)]['key']){this['startEdit']();return;}}if(this['selectorArrStr']=r,this['doneEdit'](),this['cellTarget']=n,this['resetEditorStyle'](),this['ctx'][iP(0x19b)][iP(0x3cb)]){if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this[iP(0xf2)]['onlyMergeCell']){this['startEdit']();return;}this['ctx']['selectOnlyOne']&&this[iP(0x2e4)]();}});}['isInSelectorRange'](p,r){const {xArr:u,yArr:v}=this['ctx']['selector'],[w,x]=u,[z,A]=v;return!(r<w||r>x||p<z||p>A);}['initTextEditor'](){const iQ=bH;this[iQ(0x2ae)]=document['createElement']('textarea'),this[iQ(0x2ae)]['id']='e-virt-table-editor-textarea',this['inputEl'][iQ(0x3ba)]('rows','1'),this['inputEl'][iQ(0x3ba)]('tabindex','-1'),this['inputEl']['addEventListener']('input',this['autoSize']['bind'](this)),this['editorEl']=this['ctx']['editorElement'],this['inputEl']['className']=iQ(0x163),this['editorEl']['appendChild'](this['inputEl']),this['ctx'][iQ(0x1f0)]['appendChild'](this['editorEl']);}['autoSize'](){const iR=bH;if(!this['ctx']['editing'])return;const p=this['inputEl'][iR(0x422)];this['cellTarget']&&this[iR(0x43f)]['type']==='number'&&p!==''&&(this['ctx']['emit']('cellHideTooltip'),/^-?\d+(\.\d+)?$/[iR(0x3ad)](p)||this['ctx']['emit']('cellShowTooltip',this['cellTarget'],this['ctx']['config']['NUMBER_ERROR_TIP'])),this['inputEl'][iR(0x388)]['height']='auto';let r=this['inputEl']['scrollHeight'],u=this['ctx'][iR(0xfa)]['visibleHeight'];r>u&&(r=u);const {stageHeight:v,footer:w,header:x,config:{SCROLLER_TRACK_SIZE:z}}=this['ctx'],A=v-w['height']-z;this['editorEl']['style']['bottom']=iR(0x25a),this[iR(0x1d7)]<x['height']&&(this['editorEl']['style'][iR(0x238)]=x['height']-0x1+'px'),this['drawY']+r>A&&(this['editorEl']['style']['left']=this['drawX']-0x1+'px',this['editorEl']['style']['top']='auto',this['editorEl']['style']['bottom']=v-A+'px'),this[iR(0x2ae)]['style']['height']=r+'px';}[bH(0x11a)](p,r=!0x1){const iS=bH,v=r?null:p['getValue'](),{editorType:w}=p;if(w==='none')return;p['update'](),this['ctx']['config'][iS(0x3d9)]&&p[iS(0x428)]();let {height:x,width:z,drawY:A,drawX:B}=p;this['drawX']=B,this['drawY']=A;const {config:{CELL_PADDING:C},header:D}=this['ctx'];let E=this[iS(0xf2)]['body']['visibleHeight'];x>E&&(x=E),this['editorEl']['style']['zIndex']='100',this['editorEl']['style'][iS(0x418)]=this['drawX']-0x1+'px',this[iS(0x1cf)][iS(0x388)]['top']=this['drawY']+'px',this['editorEl']['style'][iS(0x17f)]='auto',this['editorEl']['style']['maxWidth']='none',this['editorEl']['style'][iS(0xf1)]=E+'px',['text']['includes'](w)?(this['inputEl']['style']['opacity']='1',this['inputEl']['style'][iS(0x21c)]='relative',this[iS(0x2ae)]['style']['minWidth']=z-0x1+'px',this['inputEl']['style']['minHeight']=x-0x1+'px',this['inputEl'][iS(0x388)]['maxHeight']=E+'px',this['inputEl']['style']['width']=z+'px',this['inputEl']['style']['height']='auto',this['inputEl']['style']['padding']=C+'px',this[iS(0x2ae)][iS(0x422)]='',v!==null&&(this['inputEl']['value']=v),(this['inputEl']['scrollHeight']>x||this[iS(0x1d7)]<D['height'])&&this['autoSize']()):(this[iS(0x2ae)][iS(0x388)]['opacity']='0',this[iS(0x2ae)]['style']['width']='1px',this['inputEl'][iS(0x388)]['height']='1px',this['inputEl'][iS(0x388)]['position']='absolute',this[iS(0x2ae)]['style']['left']='0px',this['inputEl']['style']['top']='0px');}['doneEditByInput'](){const iT=bH;if(this['cellTarget']&&this[iT(0x43f)]['editorType']==='text'){const {rowKey:n,key:o}=this['cellTarget'],p=this['cellTarget'][iT(0x37b)](),r=this[iT(0x2ae)]['value'];r!==p&&!(r===''&&p===null)&&!this['cancel']&&this['ctx']['setItemValueByEditor'](n,o,r,!0x0);}}['focusInput'](){const iU=bH;document['activeElement']!==this['inputEl']&&this['inputEl'][iU(0x193)]({'preventScroll':!0x0});}['startEdit'](n=!0x1){const iV=bH;this['cancel']=!0x1;const {ENABLE_EDIT_CLICK_SELECTOR:o}=this[iV(0xf2)][iV(0x19b)];if(!o)return;const p=this['ctx']['focusCell'];p&&(p[iV(0x21a)]()&&p['isHorizontalVisible']()||this['ctx'][iV(0x2b9)]('scrollToIndex',p['rowIndex'],p['colIndex']),this['editCell'](p['rowIndex'],p['colIndex'],n));}[bH(0x3d7)](p,r,u=!0x1){const iW=bH,v=this['ctx'][iW(0xfa)]['renderRows']['find'](C=>C['rowIndex']===p);if(!v)return;const w=v['cells']['find'](C=>C['colIndex']===r);if(!w||!(w['isVerticalVisible']()&&w['isHorizontalVisible']()))return;this['ctx']['emit'](iW(0x176),w);const x=this['ctx']['focusCell'];if(!x||[iW(0x183),iW(0x3e3),'selection']['includes'](x[iW(0x3c8)])||this['enable'])return;const {rowKey:z,key:A}=x,B=this['ctx']['database']['getReadonly'](z,A);x&&!B&&(this['enable']=!0x0,this['ctx']['editing']=!0x0,this['cellTarget']=x,this[iW(0x11a)](this['cellTarget'],u),this['ctx']['emit'](iW(0x2e4),this['cellTarget']),this['ctx'][iW(0x2b9)]('draw'));}['doneEdit'](){const iX=bH;this[iX(0x3c9)]&&(this[iX(0xf0)](),this['ctx']['emit']('cellHideTooltip'),this['ctx']['emit']('doneEdit',this[iX(0x43f)]),this['enable']=!0x1,this['ctx']['editing']=!0x1,this['resetEditorStyle'](),setTimeout(()=>{this['focusInput']();},0x0),this[iX(0xf2)]['emit']('draw'));}['resetEditorStyle'](){const iY=bH,n=this['cellTarget'];n&&(this['editorEl'][iY(0x388)][iY(0x418)]=n['drawX']+'px',this['editorEl']['style']['top']=n[iY(0x1d7)]+'px',this['editorEl'][iY(0x388)][iY(0x3a4)]='1px',this['editorEl'][iY(0x388)]['maxHeight']='1px',this['editorEl'][iY(0x388)]['zIndex']='-1');}[bH(0x40c)](){const iZ=bH;this[iZ(0x24c)](),this['cellTarget']=null,this[iZ(0x262)]='',this['ctx']['clearSelector'](),this['ctx']['focusCell']=void 0x0,this['inputEl']['blur'](),this['ctx']['emit']('draw');}['destroy'](){var n;(n=this['editorEl'])==null||n['remove']();}}let zo=class{constructor(n){const j0=bH;h(this,'ctx'),h(this,j0(0x219)),this['ctx']=n;const {EMPTY_TEXT:o,EMPTY_CUSTOM_STYLE:p}=this['ctx'][j0(0x19b)];this['ctx']['emptyElement']?this['emptyEl']=this['ctx']['emptyElement']:(this['emptyEl']=document['createElement']('div'),this['emptyEl'][j0(0x3b7)]=o),this[j0(0x219)]['className']='e-virt-table-empty',this[j0(0x219)]['style']['display']='none',this['ctx']['containerElement']['appendChild'](this[j0(0x219)]),this['ctx']['on']('emptyChange',({type:u,headerHeight:v,bodyHeight:w,footerHeight:x})=>{const j1=j0,z=v+(w+x)/0x2,A=M({'display':u===j1(0x13e)?'block':'none','top':z+'px'},p);Object['assign'](this['emptyEl']['style'],A);});}['destroy'](){this['emptyEl']['remove']();}};class Go{constructor(n){const j2=bH;h(this,j2(0xf2)),h(this,'observer'),this['ctx']=n,this['init']();}['arerMapsEqual'](n,o){const j3=bH;if(n[j3(0x36d)]!==o['size'])return!0x1;for(let [p,r]of n)if(!o['has'](p)||o['get'](p)!==r)return!0x1;return!0x0;}[bH(0x181)](){const j6=bH;this['observer']=new MutationObserver(Le(()=>{const j4=b,n=this[j4(0xf2)]['overlayerElement']['querySelectorAll']('[data-auto-height=\x22true\x22]'),o=new Map();n['forEach'](r=>{const j5=j4,u=Number(r['getAttribute'](j5(0x29c))),v=Number(r['getAttribute']('data-col-index'));if(isNaN(u)||isNaN(v))return;const w=r[j5(0x413)](),x=u+'_'+v;o['set'](x,Math['round'](w['height']));});const p=this['ctx']['database']['getOverlayerAutoHeightMap']();if(!this[j4(0x414)](p,o)){if(this[j4(0xf2)]['database']['setOverlayerAutoHeightMap'](o),p[j4(0x36d)]===0x0&&o[j4(0x36d)]===0x0)return;this[j4(0xf2)]['emit'](j4(0x329));}},16.67)),this['observer'][j6(0x42b)](this['ctx']['overlayerElement'],{'childList':!0x0,'subtree':!0x0,'attributes':!0x0,'characterData':!0x0}),this['ctx']['overlayerElement']['getAttribute']('data-overlayer')==='default'&&this['ctx']['on']('overlayerChange',n=>{const o=this['ctx']['overlayerElement'];o['replaceChildren'](),Object['assign'](o['style'],n['style']),n['views']['forEach'](p=>{const r=document['createElement']('div');r['className']=p['class'],Object['assign'](r['style'],p['style']),p['views']['forEach'](u=>{const j8=b,v=document['createElement']('div');Object['assign'](v['style'],u['style']),u['cells']['forEach'](w=>{const j7=b,x=document[j7(0x288)]('div');Object['assign'](x['style'],w['style']),Object['keys'](w['domDataset'])['forEach'](z=>{x['setAttribute'](z,w['domDataset'][z]);}),typeof w[j7(0x2d8)]=='function'&&w['render'](x,w),v['appendChild'](x);}),r[j8(0x27b)](v);}),o['appendChild'](r);});});}['draw'](){const j9=bH,n=this[j9(0x42e)]();this['ctx'][j9(0x2b9)]('overlayerChange',n);}['destroy'](){this['observer']&&this['observer']['disconnect'](),this['ctx']['emit']('overlayerChange',{'style':{},'views':[]});}['getContainer'](){const ja=bH,p=this['getHeader'](),r=this['getBody'](),u=this[ja(0x393)]();let v=[];const {FOOTER_FIXED:w,FOOTER_POSITION:x}=this['ctx']['config'];return w?x==='top'?v=[p,u,r]:v=[p,r,u]:v=[p,r],{'views':v};}[bH(0x3cc)](){const jb=bH,{fixedLeftWidth:p,fixedRightWidth:r,config:{SCROLLER_TRACK_SIZE:v,CSS_PREFIX:x}}=this['ctx'],{visibleWidth:z,visibleHeight:A,renderCellHeaders:B}=this['ctx'][jb(0x289)];let C=[],D=[],E=[];B['forEach'](K=>{K['render']&&(K['fixed']==='left'?D['push'](K):K['fixed']==='right'?E['push'](K):C['push'](K));});const F=r-v,G={'key':'left','style':{'position':jb(0x241),'top':'0px','left':'0px','overflow':'hidden','width':p+'px','height':A+'px'},'cells':D},H={'key':'center','style':{'position':'absolute','top':'0px','left':p+'px','overflow':'hidden','width':z-p-F+0x1+'px','height':A+'px'},'cells':C},I={'key':'right','style':{'position':jb(0x241),'top':'0px','right':'0px','overflow':jb(0x30d),'width':F+0x1+'px','height':A+'px'},'cells':E};return{'type':'header','class':x+'-overlayer-header','style':{'position':'relative','overflow':'hidden','width':z+'px','height':A+'px'},'views':[G,H,I]};}[bH(0x252)](){const jc=bH,p=[],r=[],v=[];let x=this['ctx'][jc(0xfa)]['renderRows'];this['ctx']['config']['FOOTER_FIXED']||(x=x['concat'](this['ctx']['footer']['renderRows'])),x['forEach'](K=>{K['cells']['forEach'](L=>{const jd=b;L['cellType']==='footer'&&(L['render']=L['renderFooter']),L['render']&&(L['fixed']==='left'?r['push'](L):L['fixed']==='right'?v[jd(0x135)](L):p['push'](L));});});const {fixedLeftWidth:z,fixedRightWidth:A,config:{SCROLLER_TRACK_SIZE:B,CSS_PREFIX:C}}=this['ctx'],{visibleWidth:D,visibleHeight:E}=this['ctx']['body'],F=A-B,G={'key':'left','style':{'position':jc(0x241),'top':0.5+'px','left':0.5+'px','overflow':'hidden','width':z+'px','height':E+'px'},'cells':r},H={'key':'center','style':{'position':'absolute','top':0.5+'px','left':z-0.5+'px','overflow':jc(0x30d),'width':D-z-F+'px','height':E+'px'},'cells':p},I={'key':'right','style':{'position':jc(0x241),'top':'0px','right':'0px','overflow':'hidden','width':F+'px','height':E+'px'},'cells':v};return{'type':'body','class':C+'-overlayer-body','style':{'position':'relative','overflow':jc(0x30d),'width':D+'px','height':E+'px'},'views':[G,H,I]};}['getFooter'](){const je=bH,p=[],r=[],v=[];this['ctx']['footer'][je(0x318)]['forEach'](H=>{const jf=je;H['cells'][jf(0x32e)](I=>{const jg=jf;I['cellType']==='footer'&&I['renderFooter']&&(I['render']=I['renderFooter'],I['fixed']==='left'?r['push'](I):I[jg(0x1c0)]==='right'?v['push'](I):p[jg(0x135)](I));});});const {fixedLeftWidth:w,fixedRightWidth:x,config:{SCROLLER_TRACK_SIZE:z,CSS_PREFIX:A}}=this[je(0xf2)],{visibleWidth:B,visibleHeight:C}=this[je(0xf2)]['footer'],D=x-z,E={'key':'left','style':{'position':'absolute','top':0.5+'px','left':0.5+'px','overflow':'hidden','width':w+'px','height':C+'px'},'cells':r},F={'key':'center','style':{'position':'absolute','top':0.5+'px','left':w-0.5+'px','overflow':'hidden','width':B-w-D+'px','height':C+'px'},'cells':p},G={'key':je(0x1b9),'style':{'position':'absolute','top':0.5+'px','right':0.5+'px','overflow':'hidden','width':D+'px','height':C+'px'},'cells':v};return{'type':'footer','class':A+'-overlayer-footer','style':{'position':'relative','overflow':'hidden','width':B+'px','height':C+'px'},'views':[E,F,G]};}}class pi{constructor(n,o=[],p={}){const jh=bH;h(this,'container'),h(this,'menuData'),h(this,'onClick'),h(this,'activeSubmenus',new Set()),h(this,'boundMouseEnterHandler'),h(this,'boundMouseLeaveHandler'),h(this,'boundClickHandler'),this[jh(0x366)]=n,this['menuData']=o,this['onClick']=p['onClick'],this['boundMouseEnterHandler']=r=>this[jh(0x280)](r,'enter'),this['boundMouseLeaveHandler']=r=>this[jh(0x280)](r,'leave'),this['boundClickHandler']=r=>this['handleClick'](r),this['createMenu'](),this['bindEvents']();}[bH(0x1e6)](){this['container']['className']='e-virt-table-main-menu',this['container']['style']['display']='block';const n=document['createDocumentFragment']();this['menuData']['forEach'](o=>{n['appendChild'](this['createMenuItem'](o));}),this['container']['appendChild'](n);}['createMenuItem'](p,r=!0x1){const jj=bH;var u;const v=this['createElement']('div',r?'e-virt-table-submenu-item':jj(0x18e));v['setAttribute'](r?'data-submenu':'data-menu',p[jj(0x422)]),p['disabled']&&v['classList']['add'](jj(0x2b1));const w=this['createElement']('div','e-virt-table-menu-item-content');if(p['icon']){const z=this['createElement'](jj(0x114),jj(0x2e2));z[jj(0x2f4)]=p['icon'],w['appendChild'](z);}else w['classList'][jj(0x2e3)]('menu-item-no-icon');const x=this['createElement']('span','e-virt-table-menu-item-text');if(x['textContent']=p['label'],w['appendChild'](x),v[jj(0x27b)](w),(u=p['children'])!=null&&u['length']){const A=this['createElement']('span',jj(0x311));A['innerHTML']=Gt,v['appendChild'](A);const B=this['createSubmenu'](p['children']);v['_submenu']=B,this['container']['appendChild'](B);}return v;}['createSubmenu'](n){const jk=bH,o=this['createElement']('div','e-virt-table-submenu');return n[jk(0x32e)](p=>{o['appendChild'](this['createMenuItem'](p,!0x0));}),o;}['createElement'](n,o=''){const jl=bH,p=document[jl(0x288)](n);return o&&(p[jl(0x23b)]=o),p;}['bindEvents'](){const jm=bH;this['container']['addEventListener'](jm(0x405),this['boundMouseEnterHandler'],!0x0),this['container']['addEventListener'](jm(0x30e),this['boundMouseLeaveHandler'],!0x0),this['container']['addEventListener'](jm(0x3de),this['boundClickHandler']);}[bH(0x280)](n,o){const jn=bH;n['stopPropagation']();const p=n['target']['closest']('.e-virt-table-menu-item,\x20.e-virt-table-submenu-item');p&&(this['container']['contains'](p)||p['classList']['contains']('e-virt-table-submenu-item'))&&(o===jn(0x13b)?this['handleHover'](p):this['handleLeave'](p));}['handleHover'](n){const jp=bH;n['classList']['contains'](jp(0x18e))&&(this['container']['querySelectorAll']('.e-virt-table-menu-item')['forEach'](p=>p[jp(0x35e)][jp(0x369)]('active')),n['classList']['contains'](jp(0x2b1))||n['classList']['add']('active'));const o=n['_submenu']||n['querySelector']('.e-virt-table-submenu');o&&(this['hideSiblingSubmenus'](n),this['showSubmenu'](n,o));}['handleLeave'](n){const o=n['_submenu']||n['querySelector']('.e-virt-table-submenu');setTimeout(()=>{const jq=b,p=o;p&&!p['matches'](':hover')&&!n['matches'](':hover')&&(this['hideSubmenu'](p),n['classList']['contains']('e-virt-table-menu-item')&&n['classList']['remove'](jq(0x253)));},0x96);}['hideSiblingSubmenus'](n){const ju=bH;let o;if(n['classList'][ju(0x244)](ju(0x18e)))o=this['container'][ju(0x258)]('.e-virt-table-menu-item');else{const p=n['closest']('.e-virt-table-submenu');if(p)o=p[ju(0x258)]('.e-virt-table-submenu-item');else return;}o['forEach'](r=>{const jv=ju;r!==n&&r['_submenu']&&this[jv(0x298)](r['_submenu']);});}['showSubmenu'](n,o){return X(this,null,function*(){const jw=b;if(this['activeSubmenus'][jw(0x2e6)](o))return;this['activeSubmenus'][jw(0x2e3)](o),o[jw(0x35e)]['add'](jw(0x410));const p=Ie(n,o,()=>X(this,null,function*(){const r=this['container']['getBoundingClientRect'](),v=window['innerWidth'],w=o['offsetWidth']||0xc8,x=v-r['right'],z=r['left'],A=x>=w||x>=z?'right-start':'left-start',{x:B,y:C}=yield qt(n,o,{'placement':A,'middleware':[Zt(0x8),jt({'padding':0x8})]});Object['assign'](o['style'],{'left':B+'px','top':C+'px'});}));o['_cleanup']=p;});}['hideSubmenu'](n){if(!this['activeSubmenus']['has'](n))return;this['activeSubmenus']['delete'](n),n['classList']['remove']('show'),this['hideAllChildSubmenus'](n);const o=n;o['_cleanup']&&(o['_cleanup'](),delete o['_cleanup']);}['hideAllChildSubmenus'](n){const jx=bH;n['querySelectorAll']('.e-virt-table-submenu-item')[jx(0x32e)](o=>{const jy=jx;if(o['_submenu']){const p=o['_submenu'];if(this['activeSubmenus'][jy(0x2e6)](p)){this['activeSubmenus']['delete'](p),p[jy(0x35e)]['remove']('show');const r=p;r['_cleanup']&&(r[jy(0x296)](),delete r['_cleanup']),this['hideAllChildSubmenus'](p);}}});}['handleClick'](n){const jz=bH;n['stopPropagation']();const p=n['target'][jz(0x1f3)](jz(0x187));if(!p||p['classList'][jz(0x244)]('disabled'))return;if(p['classList']['contains']('e-virt-table-menu-item')){const v=p['_submenu']||p[jz(0x34d)]('.e-virt-table-submenu');if(v){this['showSubmenu'](p,v);return;}}const r=p['getAttribute']('data-menu')||(p==null?void 0x0:p['getAttribute']('data-submenu')),u=this['findMenuItem'](r||'');u&&this['onClick']&&this[jz(0x15a)](u,r||'');}['findMenuItem'](n,o=this['menuData']){const jA=bH;for(const p of o){if(p['value']===n)return p;if(p['children']){const r=this['findMenuItem'](n,p[jA(0x205)]);if(r)return r;}}return null;}['positionMenu'](n){const jB=bH,o={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':n['clientY'],'left':n['clientX'],'right':n[jB(0x2c3)],'bottom':n['clientY'],'x':n['clientX'],'y':n[jB(0x14d)]}),'contextElement':document['body']};Ie(o,this[jB(0x366)],()=>{const jC=jB;qt(o,this[jC(0x366)],{'placement':jC(0x166),'middleware':[Zt(),jt(),Ke()]})['then'](({x:p,y:r})=>{const jD=jC;this['container']&&Object['assign'](this['container'][jD(0x388)],{'left':p+'px','top':r+'px'});});});}['destroy'](){const jE=bH;this['container']['removeEventListener']('mouseenter',this['boundMouseEnterHandler'],!0x0),this[jE(0x366)]['removeEventListener']('mouseleave',this[jE(0x2db)],!0x0),this[jE(0x366)]['removeEventListener']('click',this['boundClickHandler']),this['cleanupAllSubmenus'](this['container']),this[jE(0x366)]['style']['display']=jE(0x2fc),this[jE(0x366)]['replaceChildren']();}[bH(0x277)](n){const jF=bH,o=this['container']['querySelector']('[data-menu=\x22'+n+'\x22]');if(!o)return!0x1;const p=o['querySelector']('.e-virt-table-submenu');return p&&this[jF(0x131)](p),o['remove'](),!0x0;}['removeSubMenuItem'](p){const jG=bH,r=this[jG(0x366)]['querySelector']('[data-submenu=\x22'+p+'\x22]');if(!r)return!0x1;const u=r['closest'](jG(0x2d6)),v=r['_submenu'];if(v&&this['cleanupSubmenuRecursively'](v),r['remove'](),u&&u['querySelectorAll']('.e-virt-table-submenu-item')['length']===0x0){const w=this['container']['querySelector']('[data-menu]');if(w&&w['_submenu']===u)this['removeMenuItem'](w['getAttribute'](jG(0x23a))||'');else{const x=this['container'][jG(0x258)]('[data-menu],\x20[data-submenu]');for(const z of x)if(z[jG(0x41f)]===u){const A=z[jG(0x108)]('data-menu')||z['getAttribute']('data-submenu');A&&(z['hasAttribute'](jG(0x23a))?this['removeMenuItem'](A):this['removeSubMenuItem'](A));break;}}}return!0x0;}[bH(0x1c1)](n){const jH=bH;n['querySelectorAll']('.e-virt-table-menu-item')[jH(0x32e)](o=>{const jI=jH;o[jI(0x41f)]&&(this['cleanupSubmenuRecursively'](o['_submenu']),o['_submenu']=void 0x0);});}['cleanupSubmenuRecursively'](n){const jJ=bH,o=n;o['_cleanup']&&(o['_cleanup'](),delete o['_cleanup']),n[jJ(0x258)](jJ(0x352))[jJ(0x32e)](p=>{p['_submenu']&&this['cleanupSubmenuRecursively'](p['_submenu']);}),n['remove']();}}class Vo{constructor(n){const jK=bH;h(this,jK(0xf2)),h(this,'contextMenuEl'),h(this,'currentDOMTreeMenu'),h(this,jK(0x198),!0x1),this['ctx']=n,this[jK(0xf2)][jK(0x40e)]?(this['contextMenuEl']=this['ctx'][jK(0x40e)],this['contextMenuEl']['className']='e-virt-table-main-menu',this['isCustom']=!0x0):(this['contextMenuEl']=document[jK(0x288)]('div'),this['isCustom']=!0x1),this['ctx'][jK(0x1f0)]['appendChild'](this[jK(0x395)]),this['init']();}['init'](){const jL=bH;this[jL(0xf2)]['on']('outsideMousedown',()=>{this['hide']();}),this[jL(0xf2)]['on']('cellContextMenuClick',(n,o)=>X(this,null,function*(){const jM=jL;if(this[jM(0x198)]){this['contextMenuEl']['style']['display']='block',this['positionMenu'](o);return;}const {ENABLE_CONTEXT_MENU:p,CUSTOM_BODY_CONTEXT_MENU:r,CONTEXT_MENU:v,BEFORE_BODY_CONTEXT_MENU_METHOD:z}=this['ctx'][jM(0x19b)];let A=[...v,...r];if(z&&(A=yield z({'list':A,'cell':n,'hide':this['hide']['bind'](this)})),!p||A['length']===0x0)return;o['preventDefault']();const {xArr:B,yArr:C}=this['ctx']['selector'],[D,E]=B,[F,G]=C,{rowIndex:H,colIndex:I}=n;H>=F&&H<=G&&I>=D&&I<=E||this['ctx']['emit']('setSelectorCell',n,o),this[jM(0x264)]&&this['currentDOMTreeMenu']['destroy'](),this['ctx'][jM(0x379)]=!0x0,this['currentDOMTreeMenu']=new pi(this['contextMenuEl'],A,{'onClick':(K,L)=>{const jN=jM;L==='copy'?(this[jN(0xf2)][jN(0x2b9)]('contextMenuCopy'),this[jN(0x3bf)]()):L==='paste'?(this[jN(0xf2)]['emit']('contextMenuPaste'),this['hide']()):L==='cut'?(this['ctx']['emit']('contextMenuCut'),this['hide']()):L==='clearSelected'?(this['ctx'][jN(0x2b9)]('contextMenuClearSelected'),this[jN(0x3bf)]()):K['event']&&K['event'](o,{'hide':this['hide'][jN(0x382)](this),'cell':n});}}),this['currentDOMTreeMenu']['positionMenu'](o);})),this['ctx']['on']('cellHeaderContextMenuClick',(n,o)=>X(this,null,function*(){const jO=jL;if(this[jO(0x198)]){this['contextMenuEl']['style']['display']=jO(0x115),this['positionMenu'](o);return;}const {SELECTOR_AREA_MIN_X:p,SELECTOR_AREA_MAX_X:r,SELECTOR_AREA_MAX_X_OFFSET:v,BEFORE_HEADER_CONTEXT_MENU_METHOD:z}=this['ctx']['config'],B=p,C=r||this[jO(0xf2)]['maxColIndex']-v;if(n['colIndex']<B||n['colIndex']>C)return;const {HEADER_CONTEXT_MENU:D,CUSTOM_HEADER_CONTEXT_MENU:E,ENABLE_HEADER_CONTEXT_MENU:F}=this['ctx']['config'];let G=[...D,...E];if(z&&(G=yield z({'list':G,'cell':n,'hide':this['hide']['bind'](this)})),!F||G['length']===0x0)return;o['preventDefault']();const {xArr:H}=this[jO(0xf2)]['selector'],[I,K]=H,{colIndex:L}=n;L>=I&&L<=K||(this[jO(0xf2)]['focusCellHeader']=n,this[jO(0xf2)]['emit']('selectCols',n)),this['currentDOMTreeMenu']&&this['currentDOMTreeMenu']['destroy']();const N=this['ctx']['database']['getColumns'](),P=G['map'](Q=>Q['value']==='visible'?Y(M({},Q),{'children':this['filterColumns'](N)}):Q);this['ctx']['contextMenuIng']=!0x0,this['currentDOMTreeMenu']=new pi(this['contextMenuEl'],P,{'onClick':(Q,R)=>{const jP=jO,{xArr:V}=this['ctx']['selector'],[a0,a1]=V;if(R==='fixedLeft'||R===jP(0x3a9)||R==='fixedNone'){const a2=this[jP(0xf2)][jP(0x289)]['allCellHeaders']['filter'](a3=>a3['colIndex']>=a0&&a3['colIndex']<=a1)['filter'](a3=>a3[jP(0x13d)]===0x0)['filter'](a3=>!a3['column']['fixedDisabled'])['map'](a3=>a3['key']);this['ctx']['database'][jP(0x1a6)](a2,R==='fixedLeft'?'left':R==='fixedRight'?jP(0x1b9):''),this['hide']();}else{if(R==='hide'){const a3=this['ctx']['header'][jP(0x1ea)][jP(0x365)](a4=>a4['colIndex']>=a0&&a4['colIndex']<=a1)['filter'](a4=>!a4['children']['length'])['filter'](a4=>!a4['column']['hideDisabled'])['map'](a4=>a4[jP(0x14b)]);a3['length']>0x0&&this['ctx']['database']['setCustomHeaderHideData'](a3,!0x0),this['hide']();}else{if(R!=='visible'){if(R['startsWith']('visible_')){if(!Q['key'])return;if(Q['children']){const a5=this['getLeafKeys'](Q[jP(0x205)]);this['ctx']['database'][jP(0x2b3)](a5,!0x1);}else this['ctx'][jP(0x2c4)]['setCustomHeaderHideData']([Q['key']],!0x1);this['currentDOMTreeMenu']&&this['currentDOMTreeMenu']['removeSubMenuItem'](R);const a4=this['ctx']['database']['getColumns']();_t(a4)[jP(0x365)](a6=>a6['hide'])['length']===0x0&&this['hide']();}else R==='resetHeader'?(this[jP(0xf2)]['database'][jP(0x3ee)](),this['hide']()):Q['event']&&Q[jP(0x3b5)](o,{'hide':this['hide']['bind'](this),'cell':n});}}}}}),this['positionMenu'](o);})),this['ctx']['on']('click',()=>{this['hide']();}),this['ctx']['on']('onScroll',this['hide']['bind'](this)),this['ctx']['on']('resize',this['hide']['bind'](this));}['positionMenu'](n){const jQ=bH,o={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':n[jQ(0x14d)],'left':n['clientX'],'right':n['clientX'],'bottom':n['clientY'],'x':n['clientX'],'y':n['clientY']}),'contextElement':document['body']};Ie(o,this[jQ(0x395)],()=>{const jR=jQ;qt(o,this['contextMenuEl'],{'placement':jR(0x166),'middleware':[Zt(),jt(),Ke()]})['then'](({x:p,y:r})=>{this['contextMenuEl']&&Object['assign'](this['contextMenuEl']['style'],{'left':p+'px','top':r+'px'});});});}[bH(0x1a7)](n){const jS=bH,o=[];for(const p of n)if(p['children']&&p['children']['length']>0x0){const r=this[jS(0x1a7)](p[jS(0x205)]);r['length']>0x0&&o['push']({'label':p['title'],'key':p['key'],'value':'visible_'+p['key'],'children':r});}else p[jS(0x3bf)]&&o['push']({'label':p['title'],'value':jS(0x386)+p['key'],'key':p['key']});return o;}['getLeafKeys'](n){const jT=bH;return n['reduce']((o,p)=>(!p['children']||p['children'][jT(0x1ce)]===0x0?o['push'](String(p['key'])):o['push'](...this['getLeafKeys'](p[jT(0x205)])),o),[]);}['hide'](){const jU=bH;this[jU(0x264)]&&(this['currentDOMTreeMenu']['destroy'](),this['currentDOMTreeMenu']=void 0x0),this['contextMenuEl']['style']['display']='none',this['ctx']['contextMenuIng']=!0x1;}['destroy'](){const jV=bH;var n;this['hide'](),(n=this['contextMenuEl'])==null||n[jV(0x369)]();}}class Uo{constructor(n){const jW=bH;if(h(this,'ctx'),h(this,'loadingEl'),this['ctx']=n,this['ctx']['loadingElement'])this['loadingEl']=this['ctx']['loadingElement'];else{this['loadingEl']=document[jW(0x288)](jW(0x186));const p=document['createElement'](jW(0x186));p['className']=jW(0x38b);const r=this['ctx']['icons']['getSvg']('loading');if(r){const v=new DOMParser()['parseFromString'](r['svg'],'image/svg+xml')[jW(0x182)];p[jW(0x27b)](v);}const u=document['createElement']('p');u['className']='e-virt-table-loading-text',u['innerText']=this['ctx']['config']['LOADING_TEXT'],p['appendChild'](u),this['loadingEl']['appendChild'](p);}this['loadingEl']['className']='e-virt-table-loading',this[jW(0x19f)]['style']['display']='none',this[jW(0xf2)]['containerElement']['appendChild'](this['loadingEl']);}['show'](){this['loadingEl']['style']['display']='flex';}['hide'](){const jX=bH;this[jX(0x19f)]['style']['display']='none';}['destroy'](){const jY=bH;this[jY(0x19f)]['remove']();}}class Jo{constructor(n){const jZ=bH;h(this,'ctx'),h(this,jZ(0x366)),h(this,'input'),h(this,jZ(0x1e7)),h(this,jZ(0x1cb)),h(this,'closeBtn'),h(this,'countEl'),h(this,'loadingEl'),h(this,'isVisible',!0x1),h(this,'searchResults',[]),h(this,'currentIndex',-0x1),h(this,'searchData',[]),h(this,jZ(0x1c9),!0x1),this[jZ(0xf2)]=n,this['container']=this['createContainer'](),this['ctx']['containerElement']['appendChild'](this['container']),this[jZ(0x2a0)](),this['ctx']['on']('keydown',o=>{const k0=jZ;if(this['ctx']['config']['ENABLE_FINDER']&&!this['ctx']['editing']){if((o['ctrlKey']||o[k0(0x2c1)])&&o['code']==='KeyF'){o[k0(0x34b)](),this['show']();return;}if(this[k0(0xf2)]['finding']){if(o['code']==='Escape'){o['preventDefault'](),this['hide']();return;}if(o['code']===k0(0x2dd)||o['shiftKey']&&o['key']==='Enter'){o['preventDefault'](),this['navigatePrevious']();return;}if(o['code']===k0(0x351)||o[k0(0x14b)]==='Enter'){o['preventDefault'](),this['navigateNext']();return;}}}}),this['ctx']['on']('setSelector',()=>{const k1=jZ;this[k1(0x3bf)]();}),this['ctx']['on'](jZ(0xef),()=>{this['hide']();});}['initSearchData'](){return X(this,null,function*(){this['showLoading'](),this['searchData']=[],setTimeout(()=>{const k2=b,{allCellHeaders:p}=this['ctx'][k2(0x289)];for(let v=0x0;v<p['length'];v++){const w=p[v];w&&['string','number']['includes'](typeof w['text'])&&this['searchData']['push']({'rowIndex':0x0,'colIndex':w['colIndex'],'text':''+w['text'],'type':k2(0x289),'colKey':w[k2(0x14b)]});}const {maxColIndex:r,maxRowIndex:u}=this[k2(0xf2)];for(let x=0x0;x<=u;x++)for(let z=0x0;z<=r;z++){const A=this['ctx']['database']['getVirtualBodyCell'](x,z,!0x1),B=A==null?void 0x0:A['getText']();['string','number']['includes'](typeof B)&&this['searchData'][k2(0x135)]({'rowIndex':x,'colIndex':z,'text':''+B,'type':'body'});}this[k2(0x282)]();},0x0);});}['createContainer'](){const k3=bH,n=document['createElement']('div');n['className']='e-virt-table-finder-bar';const o=document['createElement']('div');o['className']=k3(0x39e),this['input']=document['createElement']('input'),this['input'][k3(0x3c8)]=k3(0x1c4),this['input']['className']='e-virt-table-finder-bar-input',this['input']['placeholder']='',o['appendChild'](this['input']),this['loadingEl']=document['createElement'](k3(0x186)),this[k3(0x19f)][k3(0x23b)]='e-virt-table-finder-bar-loading';const p=Gi;this['loadingEl']['innerHTML']=p,o[k3(0x27b)](this['loadingEl']),this['countEl']=document[k3(0x288)]('span'),this['countEl']['className']='e-virt-table-finder-bar-count';const r=document['createElement']('div');return r['className']='e-virt-table-finder-bar-nav',this['prevBtn']=document[k3(0x288)]('button'),this['prevBtn']['className']='e-virt-table-finder-bar-nav-btn\x20prev-btn',this['prevBtn']['innerHTML']=Gt,this['nextBtn']=document['createElement'](k3(0x283)),this['nextBtn'][k3(0x23b)]='e-virt-table-finder-bar-nav-btn\x20next-btn',this['nextBtn']['innerHTML']=Gt,r['appendChild'](this[k3(0x1e7)]),r['appendChild'](this['nextBtn']),this['closeBtn']=document['createElement']('button'),this['closeBtn'][k3(0x23b)]='e-virt-table-finder-bar-nav-btn\x20close-btn',this['closeBtn']['innerHTML']='×',n['appendChild'](o),n['appendChild'](this['countEl']),n['appendChild'](r),n[k3(0x27b)](this['closeBtn']),n;}['bindEvents'](){const k4=bH;this['input']['addEventListener']('input',()=>{this['isComposing']||this['performSearch']();}),this['input']['addEventListener']('compositionstart',()=>{this['isComposing']=!0x0;}),this['input']['addEventListener'](k4(0x1fe),()=>{this['isComposing']=!0x1,this['performSearch']();}),this['prevBtn']['addEventListener']('click',()=>{this['navigatePrevious']();}),this['nextBtn']['addEventListener'](k4(0x3de),()=>{this['navigateNext']();}),this['closeBtn']['addEventListener']('click',()=>{const k5=k4;this[k5(0x3bf)]();});}['performSearch'](){const k6=bH,n=this['input'][k6(0x422)]['trim']();if(this[k6(0x1f6)]=[],this['currentIndex']=-0x1,!n){this['cearFinderBar'](),this['updateCount']();return;}this['showLoading'](),setTimeout(()=>{const k7=k6;this['searchResults']=this['searchData']['filter'](o=>o[k7(0x1c4)]['toLowerCase']()['includes'](n[k7(0x123)]())),this['searchResults']['length']>0x0?(this['currentIndex']=0x0,this['scrollToCurrentResult']()):this[k7(0x3fa)](),this['updateCount'](),this['hideLoading']();},0x0);}['scrollToCurrentResult'](){const k8=bH;if(this['currentIndex']<0x0||this['currentIndex']>=this['searchResults']['length'])return;const n=this[k8(0x1f6)][this['currentIndex']];this['ctx'][k8(0x2f6)]=n;const {rowIndex:o,colIndex:p}=n;this['ctx']['emit']('scrollToIndex',o,p);}[bH(0x391)](){const k9=bH;this['searchResults']['length']!==0x0&&(this['currentIndex']=(this['currentIndex']+0x1)%this['searchResults'][k9(0x1ce)],this['scrollToCurrentResult'](),this[k9(0x3f3)]());}[bH(0x367)](){const ka=bH;this['searchResults'][ka(0x1ce)]!==0x0&&(this['currentIndex']=this['currentIndex']<=0x0?this['searchResults']['length']-0x1:this[ka(0x3d0)]-0x1,this['scrollToCurrentResult'](),this['updateCount']());}['updateCount'](){const kb=bH;if(this['searchResults']['length']===0x0)this['input']['value'][kb(0xe8)]()?(this['countEl']['textContent']='0/0',this['countEl']['classList']['add']('no-results')):(this['countEl']['textContent']='',this[kb(0x1b7)]['classList'][kb(0x369)]('no-results'));else{const n=this[kb(0x3d0)]+0x1,o=this['searchResults']['length'];this['countEl']['textContent']=n+'/'+o,this[kb(0x1b7)]['classList'][kb(0x369)]('no-results');}}['show'](){const kc=bH;this[kc(0x330)]||(this['isVisible']=!0x0,this['ctx']['finding']=!0x0,this['container']['classList']['add']('show'),this['input']['focus'](),this[kc(0x226)]());}['showLoading'](){const kd=bH;var n;this[kd(0x19f)][kd(0x35e)][kd(0x2e3)]('show'),(n=this['loadingEl'][kd(0x2e7)])==null||n[kd(0x35e)]['add']('loading'),this['input']['readOnly']=!0x0;}['hideLoading'](){const kf=bH;var n;this['loadingEl']['classList'][kf(0x369)]('show'),(n=this['loadingEl'][kf(0x2e7)])==null||n['classList']['remove']('loading'),this['input']['readOnly']=!0x1;}['cearFinderBar'](){this['ctx']['finderBar']={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['ctx']['emit']('draw');}[bH(0x3bf)](){const kg=bH;this['isVisible']&&(this['isVisible']=!0x1,this['container'][kg(0x35e)]['remove']('show'),this[kg(0xf2)][kg(0x412)]=!0x1,this[kg(0x284)]['value']='',this['searchResults']=[],this['searchData']=[],this['currentIndex']=-0x1,this[kg(0x282)](),this['ctx'][kg(0x2f6)]={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['updateCount'](),this['ctx']['emit']('draw'));}['destroy'](){const kh=bH;this['hide'](),this[kh(0x366)]['remove']();}}class Zo{constructor(p,r){const kj=bH;h(this,'options'),h(this,'scroller'),h(this,kj(0x289)),h(this,'body'),h(this,kj(0x446)),h(this,'selector'),h(this,kj(0x2a9)),h(this,'tooltip'),h(this,'editor'),h(this,'empty'),h(this,'overlayer'),h(this,'contextMenu'),h(this,'loading'),h(this,'finderBar'),h(this,'animationFrameId'),h(this,'ctx'),this['options']=r;const {overlayerElement:u,editorElement:v,emptyElement:w,contextMenuElement:x}=this[kj(0x39c)],z=this[kj(0x23e)](p,u,v,w,x);this['ctx']=new js(z,this['options']),this['header']=new to(this[kj(0xf2)]),this['footer']=new io(this['ctx']),this['body']=new eo(this['ctx']),this['scroller']=new qs(this['ctx']),this['selector']=new so(this['ctx']),this['autofill']=new oo(this['ctx']),this[kj(0x1fa)]=new Po(this['ctx']),this['empty']=new zo(this['ctx']),this[kj(0x1ca)]=new Qo(this['ctx']),this[kj(0x2eb)]=new Go(this[kj(0xf2)]),this[kj(0x39d)]=new Vo(this['ctx']),this['loading']=new Uo(this['ctx']),this['finderBar']=new Jo(this['ctx']),this['ctx']['on']('draw',()=>{this['draw']();}),this['ctx']['on'](kj(0x3db),()=>{this['draw'](!0x0);}),this['draw']();}[bH(0x23e)](p,r,v,w,x){const kk=bH;p['className']='e-virt-table-container';const z=document['createElement']('div'),A=document['createElement']('canvas'),B=r||document['createElement'](kk(0x186));z[kk(0x23b)]='e-virt-table-stage',p['tabIndex']=0x0,A['className']='e-virt-table-canvas',B[kk(0x23b)]='e-virt-table-overlayer',B['setAttribute']('data-overlayer',r?'custom':'default');const C=v||document['createElement'](kk(0x186));C[kk(0x23b)]='e-virt-table-editor';const D=w,E=x;return z['appendChild'](A),z['appendChild'](B),p['appendChild'](z),{'containerElement':p,'stageElement':z,'canvasElement':A,'overlayerElement':B,'editorElement':C,'emptyElement':D,'contextMenuElement':E};}['doDraw'](n=!0x1){const kl=bH;this[kl(0x289)][kl(0x34c)](),this['footer']['update'](),this['body'][kl(0x34c)](),this['ctx']['paint']['clear'](),this[kl(0xfa)]['draw'](),this['footer']['draw'](),this['header']['draw'](),this['scroller']['draw'](),n||this[kl(0x2eb)][kl(0x329)]();}['draw'](n=!0x1){const km=bH;this[km(0x17c)]&&cancelAnimationFrame(this['animationFrameId']),this[km(0x17c)]=requestAnimationFrame(()=>{const kn=km;this['doDraw'](n),this[kn(0xfa)]['updateAutoHeight']()&&this['doDraw'](n);});}[bH(0x141)](n){const kp=bH;this['ctx']['config']['init'](n),this[kp(0xf2)]['database']['init'](!0x1),this['header'][kp(0x181)](),this['ctx']['emit'](kp(0x329));}['loadColumns'](n){const kq=bH;this['editor']['doneEdit'](),this['ctx']['database']['setColumns'](n),this[kq(0x289)]['init'](),this[kq(0xf2)]['emit'](kq(0x329));}['loadData'](n){const kt=bH;this['editor']['doneEdit'](),this['ctx'][kt(0x2c4)]['setData'](n),this['header']['init'](),this['tooltip'][kt(0x3bf)](),this['ctx'][kt(0x2b9)](kt(0x329));}['loadFooterData'](n){const ku=bH;this[ku(0xf2)]['database']['setFooterData'](n),this['ctx']['emit']('draw');}['setCustomHeader'](n,o=!0x0){const kv=bH;this['ctx']['database'][kv(0x11b)](n,o),this['header']['init'](),this['ctx']['emit']('draw');}['getCustomHeader'](){return this['header']['getCustomHeader']();}['showColumns'](n,o=!0x0){const kw=bH;this['ctx']['database']['setCustomHeaderHideData'](n,!o),this['header']['init'](),this[kw(0xf2)]['emit']('draw');}['fixedColumns'](n,o){const kx=bH;this[kx(0xf2)]['database']['setCustomHeaderFixedData'](n,o),this['header']['init'](),this['ctx'][kx(0x2b9)]('draw');}['setLoading'](n){this['ctx']['loading']=n,n?this['loading']['show']():this['loading']['hide']();}['on'](n,o){this['ctx']['on'](n,o);}['emit'](n,...o){this['ctx']['emit'](n,...o);}['off'](n,o){this['ctx']['off'](n,o);}['filterMethod'](n){const ky=bH;this['ctx']['database'][ky(0x434)](n),this['ctx']['database'][ky(0x181)](!0x1),this['header']['init'](),this['ctx']['emit']('draw');}['editCell'](n,o){const kz=bH;this['editor'][kz(0x3d7)](n,o);}['setItemValue'](p,r,u,v=!0x0,w=!0x0,x=!0x1){const kA=bH;this[kA(0xf2)]['database']['setItemValue'](p,r,u,v,w,x);}[bH(0x2d7)](n,o=!0x0){const kB=bH;this['ctx'][kB(0x2c4)]['batchSetItemValue'](n,o);}['setItemValueByEditor'](n,p,r,u=!0x0,v=!0x0){this['ctx']['setItemValueByEditor'](n,p,r,u,v),this['editor']['doneEdit']();}['clearEditableData'](n=null){const kC=bH,o=[0x0,this['ctx']['maxColIndex']],p=[0x0,this[kC(0xf2)]['maxRowIndex']];return this['selector'][kC(0x43b)](o,p,!0x1,n);}['clearEditor'](){const kD=bH;this[kD(0x1ca)]['clearEditor']();}['doLayout'](){this['ctx']['emit']('draw');}['getChangedData'](){const kE=bH;return this['ctx'][kE(0x2c4)]['getChangedData']();}[bH(0x17e)](){const kF=bH;return this[kF(0xf2)][kF(0x2c4)]['getChangedRows']();}['setCurrentRowByRowIndex'](n){const kG=bH;this['ctx']['currentCell']=this['ctx']['database'][kG(0x1a1)](n,0x0),this['ctx']['emit']('draw');}['setCurrentRow'](n){const kH=bH,o=this['ctx']['database']['getColumnByColIndex'](0x0);o&&(this[kH(0xf2)]['currentCell']=this['ctx'][kH(0x2c4)]['getVirtualBodyCellByKey'](n,o['key']),this['ctx']['emit'](kH(0x329)));}['getCurrentRow'](){const kI=bH,n=this['ctx']['currentCell'];return n?{'row':n[kI(0x204)],'rowIndex':n['rowIndex'],'rowKey':n[kI(0x29b)]}:void 0x0;}['clearValidate'](){const kJ=bH;this[kJ(0xf2)]['database'][kJ(0x10e)](),this['ctx']['emit']('draw');}['validateFields'](n,o=!0x0){return new Promise((p,r)=>X(this,null,function*(){const kK=b;let u=[];for(let v=0x0;v<n['length'];v++){const {rowKey:w,key:x}=n[v],z=yield this['ctx']['database']['getValidator'](w,x);Array[kK(0x339)](z)&&z['length']&&u['push'](z);}if(u['length']){if(r(u),o){const [A]=u;if(Array[kK(0x339)](A)&&A['length']){const [B]=A,{rowKey:C,key:D}=B;this['scrollToRowkey'](C),this[kK(0x3a2)](D);}}this[kK(0xf2)]['emit']('draw');}else p([]),this['ctx']['emit']('draw');}));}[bH(0x3fe)](n=!0x0){return X(this,null,function*(){return new Promise((o,p)=>X(this,null,function*(){const kL=b;try{const r=yield this['getValidations']();o(r);}catch(v){if(n&&Array['isArray'](v)&&v[kL(0x1ce)]){const [w]=v;if(Array['isArray'](w)&&w['length']){const [x]=w,{rowKey:z,key:A}=x,B=this['ctx']['database']['getRowForRowKey'](z);if(B){const {parentRowKeys:C=[]}=B;C&&C['length']&&this['setExpandRowKeys'](C,!0x0);}this[kL(0x417)](z),this[kL(0x3a2)](A);}}p(v);}}));});}['setValidations'](n){if(n['forEach'](p=>{const kM=b,{rowIndex:r,key:u,message:v,rowKey:w}=p;if(r!==void 0x0&&w===void 0x0){const x=this[kM(0xf2)]['database']['getRowKeyForRowIndex'](r);this[kM(0xf2)]['database']['setValidationErrorByRowKey'](x,u,v);}w&&this['ctx']['database']['setValidationErrorByRowKey'](w,u,v);}),n&&Array['isArray'](n)&&n['length']){const [o]=n;if(o&&o['rowKey'])this['scrollToRowkey'](o['rowKey']),this['scrollToColkey'](o['key']);else{if(o&&o['rowIndex']!==void 0x0&&o['rowIndex']>=0x0&&o['key']){const {rowIndex:p,key:r}=o;this['scrollToRowIndex'](p),this['scrollToColkey'](r);}}}}[bH(0x224)](){const kN=bH;return this[kN(0xf2)]['config'][kN(0x222)]?new Promise(n=>{n([]);}):new Promise((n,o)=>X(this,null,function*(){const kO=kN,p=this['ctx']['database']['getAllRowsData'](),r=this['ctx']['header']['leafCellHeaders'];let v=[];for(let w=0x0;w<p[kO(0x1ce)];w++)for(let x=0x0;x<r['length'];x++){const z=this['ctx']['database']['getRowKeyByItem'](p[w]),A=r[x]['key'],B=yield this['ctx']['database'][kO(0xfe)](z,A);Array['isArray'](B)&&B['length']&&v['push'](B);}v['length']?(o(v),this['ctx']['emit']('draw')):(n([]),this['ctx']['emit']('draw'));}));}['hasValidationError'](){const kP=bH;return this['ctx'][kP(0x2c4)]['hasValidationError']();}['scrollTo'](n,o){const kQ=bH;this[kQ(0x27c)][kQ(0x1bf)](n,o);}['scrollXTo'](n){this['scroller']['setScrollX'](n);}['scrollToColkey'](n){const kR=bH;this[kR(0x27c)]['scrollToColkey'](n);}['scrollToRowkey'](n){this['scroller']['scrollToRowKey'](n);}['scrollToColIndex'](n){this['scroller']['scrollToColIndex'](n);}[bH(0x14a)](n){this['scroller']['scrollToRowIndex'](n);}['scrollYTo'](n){this['scroller']['setScrollY'](n);}['setExpandRowKeys'](n,o=!0x0){this['ctx']['database']['setExpandRowKeys'](n,o);}['getExpandRowKeys'](){return this['ctx']['database']['getExpandRowKeys']();}['clearSelection'](){const kS=bH;this['ctx']['database']['clearSelection'](),this[kS(0xf2)]['emit']('draw');}[bH(0x257)](n){const kT=bH,o=this['ctx'][kT(0x2c4)][kT(0x2df)](n);this['ctx']['database']['toggleRowSelection'](o),this[kT(0xf2)]['emit']('draw');}['setSelectionByRows'](n,o=!0x0){const kV=bH;n['forEach'](p=>{const kU=b,r=this[kU(0xf2)]['database'][kU(0x2df)](p);this['ctx'][kU(0x2c4)][kU(0x25f)](r,o,!0x1);}),this['ctx']['emit']('selectionChange',this['getSelectionRows']()),this['ctx']['emit'](kV(0x329));}['setSelectionByRowKeys'](n,o=!0x0){n['forEach'](p=>{const kW=b;this['ctx'][kW(0x2c4)]['setRowSelection'](p,o,!0x1);}),this['ctx']['emit']('selectionChange',this['getSelectionRows']()),this['ctx']['emit']('draw');}['toggleAllSelection'](){const kX=bH;this['ctx']['database']['toggleAllSelection'](),this[kX(0xf2)]['emit'](kX(0x329));}['toggleRowExpand'](n,o){this['ctx']['database']['expandItem'](n,o),this['ctx']['emit']('draw');}['toggleExpandAll'](n){this['ctx']['database']['expandAll'](n),this['ctx']['emit']('draw');}['getSelectionRows'](){const kY=bH;return this[kY(0xf2)][kY(0x2c4)]['getSelectionRows']();}['getPositionForRowIndex'](n){return this['ctx']['database']['getPositionForRowIndex'](n);}[bH(0x3c3)](n,o){const kZ=bH;return this['ctx'][kZ(0x2c4)]['getItemValue'](n,o);}['getCellValueByIndex'](n,o){const l0=bH;return this[l0(0xf2)]['database']['getItemValueForRowIndexAndColIndex'](n,o);}['clearSort'](){const l1=bH;this[l1(0xf2)]['database']['clearSort']();}['contextMenuHide'](){this['contextMenu']['hide']();}['getUtils'](){return{'mergeColCell':Ks,'mergeRowCell':Fs,'getSpanArrByRow':Pi,'getSpanObjByColumn':Qi};}[bH(0x397)](n){const l2=bH;var o;return(o=this['ctx']['database']['getColumnByKey'](n))==null?void 0x0:o[l2(0x117)];}['clearChangeData'](){this['ctx']['database']['clearChangeData'](),this['ctx']['emit']('draw');}['getReadonly'](n,o){const l3=bH;return this[l3(0xf2)]['database']['getReadonly'](n,o);}[bH(0x3a3)](){const l4=bH;this[l4(0x2eb)]['destroy'](),this['empty']['destroy'](),this['editor'][l4(0x3a3)](),this['tooltip']['destroy'](),this['selector']['destroy'](),this['autofill']['destroy'](),this['contextMenu']['destroy'](),this['loading']['destroy'](),this['finderBar']['destroy'](),this['ctx']['destroy'](),this[l4(0xf2)]['containerElement']['remove']();}}const jo={'create'(){const l5=bH;return l('sheetjs.worker.js')['defaults'](()=>new Worker(new URL(''+new URL(l5(0x1b8),import.meta.url)['href'],self['location']),{'type':l5(0x3c0)}));}},st=0x1f4,Ci=0x3,yi=0x1,qo=bH(0x2ad),os=bH(0x184),re='__s',Re={'rowHeight':0x14,'colWidth':0x40},ut={'Placeholder':0x0,'Loading':0x1,'Loaded':0x2},we=()=>({'active':!0x1,'totalRows':0x0,'totalCols':0x0,'indexOffset':0x0,'defaults':M({},Re),'dataKeys':[],'rows':[],'columns':[],'cellCache':new Map(),'mergeStartMap':new Map(),'mergeCoveredMap':new Map(),'rowHeightCache':new Map(),'windowRows':new Map(),'windowCells':new Map(),'loadedWindows':new Set(),'loadingWindows':new Set()}),at=(n,o)=>n+'-'+o,Ye=n=>'c'+n,me=n=>{const l6=bH;var o;return(o=n==null?void 0x0:n[re])!=null?o:ut[l6(0x29f)];},$o=n=>{const o=new Array(n);for(let p=0x0;p<n;p+=0x1)o[p]={[os]:''+p,[re]:ut['Placeholder']};return o;},tr=n=>n?Math['floor'](Math['max'](n-0x1,0x0)/st)*st:0x0,$t=(n=0x0,o=0x0)=>Math['min'](Math[bH(0xf9)](n,0x0),tr(o)),bi=(n=0x0,o=0x0)=>{const p=Math['floor'](Math['max'](n,0x0)/st)*st;return $t(p,o);},er=({startRow:p,endRow:v,direction:w,totalRows:x,far:z=!0x1})=>{const l7=bH,A=new Set(),B=bi(p,x),C=bi(v,x);for(let G=B;G<=C;G+=st)A[l7(0x2e3)](G);const D=z?Ci+0x1:Ci,E=z?yi+0x1:yi,F=w>0x0?C:B;for(let H=0x1;H<=D;H+=0x1)A['add']($t(F+w*H*st,x));for(let I=0x1;I<=E;I+=0x1)A['add']($t(F-w*I*st,x));return Array['from'](A);},vi=(p,u,v,w)=>{const x=Math['min'](v+st,u);for(let z=v;z<x;z+=0x1){const A=p[z];A&&(A[re]=w);}};function te(n){'@babel/helpers - typeof';return te=typeof Symbol=='function'&&typeof Symbol['iterator']=='symbol'?function(o){return typeof o;}:function(o){const l8=b;return o&&typeof Symbol=='function'&&o['constructor']===Symbol&&o!==Symbol['prototype']?l8(0xfd):typeof o;},te(n);}var ir=/^\s+/,sr=/\s+$/;function O(n,o){const l9=bH;if(n=n||'',o=o||{},n instanceof O)return n;if(!(this instanceof O))return new O(n,o);var p=or(n);this[l9(0x120)]=n,this['_r']=p['r'],this['_g']=p['g'],this['_b']=p['b'],this['_a']=p['a'],this['_roundA']=Math[l9(0x188)](0x64*this['_a'])/0x64,this['_format']=o['format']||p['format'],this['_gradientType']=o['gradientType'],this['_r']<0x1&&(this['_r']=Math[l9(0x188)](this['_r'])),this['_g']<0x1&&(this['_g']=Math['round'](this['_g'])),this['_b']<0x1&&(this['_b']=Math['round'](this['_b'])),this['_ok']=p['ok'];}O['prototype']={'isDark':function(){const la=bH;return this[la(0xe9)]()<0x80;},'isLight':function(){return!this['isDark']();},'isValid':function(){const lb=bH;return this[lb(0x401)];},'getOriginalInput':function(){return this['_originalInput'];},'getFormat':function(){return this['_format'];},'getAlpha':function(){return this['_a'];},'getBrightness':function(){var n=this['toRgb']();return(n['r']*0x12b+n['g']*0x24b+n['b']*0x72)/0x3e8;},'getLuminance':function(){const lc=bH;var p=this['toRgb'](),r,u,v,w,x,z;return r=p['r']/0xff,u=p['g']/0xff,v=p['b']/0xff,r<=0.03928?w=r/12.92:w=Math[lc(0x359)]((r+0.055)/1.055,2.4),u<=0.03928?x=u/12.92:x=Math['pow']((u+0.055)/1.055,2.4),v<=0.03928?z=v/12.92:z=Math[lc(0x359)]((v+0.055)/1.055,2.4),0.2126*w+0.7152*x+0.0722*z;},'setAlpha':function(n){return this['_a']=rs(n),this['_roundA']=Math['round'](0x64*this['_a'])/0x64,this;},'toHsv':function(){var n=Ri(this['_r'],this['_g'],this['_b']);return{'h':n['h']*0x168,'s':n['s'],'v':n['v'],'a':this['_a']};},'toHsvString':function(){const ld=bH;var n=Ri(this['_r'],this['_g'],this['_b']),o=Math[ld(0x188)](n['h']*0x168),p=Math['round'](n['s']*0x64),r=Math['round'](n['v']*0x64);return this['_a']==0x1?'hsv('+o+',\x20'+p+'%,\x20'+r+'%)':'hsva('+o+',\x20'+p+'%,\x20'+r+'%,\x20'+this[ld(0x325)]+')';},'toHsl':function(){var n=Ii(this['_r'],this['_g'],this['_b']);return{'h':n['h']*0x168,'s':n['s'],'l':n['l'],'a':this['_a']};},'toHslString':function(){const le=bH;var n=Ii(this['_r'],this['_g'],this['_b']),o=Math['round'](n['h']*0x168),p=Math['round'](n['s']*0x64),r=Math['round'](n['l']*0x64);return this['_a']==0x1?'hsl('+o+',\x20'+p+'%,\x20'+r+'%)':le(0x230)+o+',\x20'+p+'%,\x20'+r+le(0x399)+this[le(0x325)]+')';},'toHex':function(n){return Ti(this['_r'],this['_g'],this['_b'],n);},'toHexString':function(n){return'#'+this['toHex'](n);},'toHex8':function(n){return hr(this['_r'],this['_g'],this['_b'],this['_a'],n);},'toHex8String':function(n){return'#'+this['toHex8'](n);},'toRgb':function(){const lf=bH;return{'r':Math[lf(0x188)](this['_r']),'g':Math['round'](this['_g']),'b':Math[lf(0x188)](this['_b']),'a':this['_a']};},'toRgbString':function(){const lg=bH;return this['_a']==0x1?lg(0x136)+Math['round'](this['_r'])+',\x20'+Math[lg(0x188)](this['_g'])+',\x20'+Math['round'](this['_b'])+')':'rgba('+Math['round'](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math['round'](this['_b'])+',\x20'+this['_roundA']+')';},'toPercentageRgb':function(){return{'r':Math['round'](W(this['_r'],0xff)*0x64)+'%','g':Math['round'](W(this['_g'],0xff)*0x64)+'%','b':Math['round'](W(this['_b'],0xff)*0x64)+'%','a':this['_a']};},'toPercentageRgbString':function(){const lh=bH;return this['_a']==0x1?'rgb('+Math['round'](W(this['_r'],0xff)*0x64)+'%,\x20'+Math['round'](W(this['_g'],0xff)*0x64)+'%,\x20'+Math['round'](W(this['_b'],0xff)*0x64)+'%)':'rgba('+Math['round'](W(this['_r'],0xff)*0x64)+lh(0x399)+Math['round'](W(this['_g'],0xff)*0x64)+'%,\x20'+Math['round'](W(this['_b'],0xff)*0x64)+'%,\x20'+this['_roundA']+')';},'toName':function(){return this['_a']===0x0?'transparent':this['_a']<0x1?!0x1:pr[Ti(this['_r'],this['_g'],this['_b'],!0x0)]||!0x1;},'toFilter':function(n){const lj=bH;var p='#'+Si(this['_r'],this['_g'],this['_b'],this['_a']),r=p,u=this['_gradientType']?lj(0x33f):'';if(n){var v=O(n);r='#'+Si(v['_r'],v['_g'],v['_b'],v['_a']);}return lj(0x165)+u+'startColorstr='+p+',endColorstr='+r+')';},'toString':function(n){const lk=bH;var p=!!n;n=n||this['_format'];var r=!0x1,u=this['_a']<0x1&&this['_a']>=0x0,v=!p&&u&&(n===lk(0x1f4)||n==='hex6'||n==='hex3'||n==='hex4'||n==='hex8'||n==='name');return v?n==='name'&&this['_a']===0x0?this['toName']():this['toRgbString']():(n==='rgb'&&(r=this['toRgbString']()),n==='prgb'&&(r=this['toPercentageRgbString']()),(n==='hex'||n==='hex6')&&(r=this[lk(0x286)]()),n==='hex3'&&(r=this['toHexString'](!0x0)),n==='hex4'&&(r=this['toHex8String'](!0x0)),n==='hex8'&&(r=this['toHex8String']()),n==='name'&&(r=this['toName']()),n==='hsl'&&(r=this[lk(0x419)]()),n==='hsv'&&(r=this['toHsvString']()),r||this[lk(0x286)]());},'clone':function(){const ll=bH;return O(this[ll(0x3b8)]());},'_applyModification':function(n,o){const lm=bH;var p=n[lm(0x100)](null,[this][lm(0x1e4)]([]['slice']['call'](o)));return this['_r']=p['_r'],this['_g']=p['_g'],this['_b']=p['_b'],this['setAlpha'](p['_a']),this;},'lighten':function(){return this['_applyModification'](ur,arguments);},'brighten':function(){return this['_applyModification'](gr,arguments);},'darken':function(){return this['_applyModification'](fr,arguments);},'desaturate':function(){return this['_applyModification'](lr,arguments);},'saturate':function(){return this['_applyModification'](cr,arguments);},'greyscale':function(){return this['_applyModification'](dr,arguments);},'spin':function(){return this['_applyModification'](xr,arguments);},'_applyCombination':function(n,o){const ln=bH;return n[ln(0x100)](null,[this]['concat']([][ln(0x24d)]['call'](o)));},'analogous':function(){return this['_applyCombination'](Ar,arguments);},'complement':function(){const lp=bH;return this[lp(0x21f)](wr,arguments);},'monochromatic':function(){return this['_applyCombination'](Er,arguments);},'splitcomplement':function(){const lq=bH;return this[lq(0x21f)](mr,arguments);},'triad':function(){return this['_applyCombination'](_i,[0x3]);},'tetrad':function(){return this['_applyCombination'](_i,[0x4]);}},O['fromRatio']=function(n,o){if(te(n)=='object'){var p={};for(var s in n)n['hasOwnProperty'](s)&&(s==='a'?p[s]=n[s]:p[s]=St(n[s]));n=p;}return O(n,o);};function or(p){const lt=bH;var u={'r':0x0,'g':0x0,'b':0x0},v=0x1,w=null,x=null,z=null,A=!0x1,B=!0x1;return typeof p=='string'&&(p=vr(p)),te(p)=='object'&&(nt(p['r'])&&nt(p['g'])&&nt(p['b'])?(u=rr(p['r'],p['g'],p['b']),A=!0x0,B=String(p['r'])['substr'](-0x1)==='%'?'prgb':'rgb'):nt(p['h'])&&nt(p['s'])&&nt(p['v'])?(w=St(p['s']),x=St(p['v']),u=ar(p['h'],w,x),A=!0x0,B='hsv'):nt(p['h'])&&nt(p['s'])&&nt(p['l'])&&(w=St(p['s']),z=St(p['l']),u=nr(p['h'],w,z),A=!0x0,B='hsl'),p[lt(0x140)]('a')&&(v=p['a'])),v=rs(v),{'ok':A,'format':p['format']||B,'r':Math[lt(0x24e)](0xff,Math['max'](u['r'],0x0)),'g':Math['min'](0xff,Math['max'](u['g'],0x0)),'b':Math['min'](0xff,Math['max'](u['b'],0x0)),'a':v};}function rr(n,o,p){return{'r':W(n,0xff)*0xff,'g':W(o,0xff)*0xff,'b':W(p,0xff)*0xff};}function Ii(p,u,v){p=W(p,0xff),u=W(u,0xff),v=W(v,0xff);var w=Math['max'](p,u,v),x=Math['min'](p,u,v),z,A,B=(w+x)/0x2;if(w==x)z=A=0x0;else{var C=w-x;switch(A=B>0.5?C/(0x2-w-x):C/(w+x),w){case p:z=(u-v)/C+(u<v?0x6:0x0);break;case u:z=(v-p)/C+0x2;break;case v:z=(p-u)/C+0x4;break;}z/=0x6;}return{'h':z,'s':A,'l':B};}function nr(p,u,v){var w,x,z;p=W(p,0x168),u=W(u,0x64),v=W(v,0x64);function A(D,E,F){return F<0x0&&(F+=0x1),F>0x1&&(F-=0x1),F<0x1/0x6?D+(E-D)*0x6*F:F<0x1/0x2?E:F<0x2/0x3?D+(E-D)*(0x2/0x3-F)*0x6:D;}if(u===0x0)w=x=z=v;else{var B=v<0.5?v*(0x1+u):v+u-v*u,C=0x2*v-B;w=A(C,B,p+0x1/0x3),x=A(C,B,p),z=A(C,B,p-0x1/0x3);}return{'r':w*0xff,'g':x*0xff,'b':z*0xff};}function Ri(p,u,v){p=W(p,0xff),u=W(u,0xff),v=W(v,0xff);var w=Math['max'](p,u,v),x=Math['min'](p,u,v),z,A,B=w,C=w-x;if(A=w===0x0?0x0:C/w,w==x)z=0x0;else{switch(w){case p:z=(u-v)/C+(u<v?0x6:0x0);break;case u:z=(v-p)/C+0x2;break;case v:z=(p-u)/C+0x4;break;}z/=0x6;}return{'h':z,'s':A,'v':B};}function ar(p,v,w){p=W(p,0x168)*0x6,v=W(v,0x64),w=W(w,0x64);var x=Math['floor'](p),z=p-x,A=w*(0x1-v),B=w*(0x1-z*v),C=w*(0x1-(0x1-z)*v),D=x%0x6,E=[w,B,A,A,C,w][D],F=[C,w,w,B,A,A][D],G=[A,A,C,w,w,B][D];return{'r':E*0xff,'g':F*0xff,'b':G*0xff};}function Ti(n,o,p,u){const lu=bH;var v=[$(Math['round'](n)['toString'](0x10)),$(Math['round'](o)['toString'](0x10)),$(Math[lu(0x188)](p)[lu(0x3b8)](0x10))];return u&&v[0x0][lu(0x3bb)](0x0)==v[0x0][lu(0x3bb)](0x1)&&v[0x1]['charAt'](0x0)==v[0x1]['charAt'](0x1)&&v[0x2]['charAt'](0x0)==v[0x2][lu(0x3bb)](0x1)?v[0x0][lu(0x3bb)](0x0)+v[0x1]['charAt'](0x0)+v[0x2]['charAt'](0x0):v['join']('');}function hr(n,p,u,v,w){const lv=bH;var x=[$(Math['round'](n)['toString'](0x10)),$(Math['round'](p)['toString'](0x10)),$(Math['round'](u)['toString'](0x10)),$(ns(v))];return w&&x[0x0]['charAt'](0x0)==x[0x0]['charAt'](0x1)&&x[0x1][lv(0x3bb)](0x0)==x[0x1]['charAt'](0x1)&&x[0x2]['charAt'](0x0)==x[0x2]['charAt'](0x1)&&x[0x3]['charAt'](0x0)==x[0x3]['charAt'](0x1)?x[0x0]['charAt'](0x0)+x[0x1]['charAt'](0x0)+x[0x2]['charAt'](0x0)+x[0x3]['charAt'](0x0):x['join']('');}function Si(n,o,p,u){const lw=bH;var v=[$(ns(u)),$(Math['round'](n)['toString'](0x10)),$(Math['round'](o)['toString'](0x10)),$(Math['round'](p)[lw(0x3b8)](0x10))];return v['join']('');}O['equals']=function(n,o){return!n||!o?!0x1:O(n)['toRgbString']()==O(o)['toRgbString']();},O['random']=function(){return O['fromRatio']({'r':Math['random'](),'g':Math['random'](),'b':Math['random']()});};function lr(n,o){o=o===0x0?0x0:o||0xa;var p=O(n)['toHsl']();return p['s']-=o/0x64,p['s']=ne(p['s']),O(p);}function cr(n,o){o=o===0x0?0x0:o||0xa;var p=O(n)['toHsl']();return p['s']+=o/0x64,p['s']=ne(p['s']),O(p);}function dr(n){return O(n)['desaturate'](0x64);}function ur(n,o){o=o===0x0?0x0:o||0xa;var p=O(n)['toHsl']();return p['l']+=o/0x64,p['l']=ne(p['l']),O(p);}function gr(n,o){const lx=bH;o=o===0x0?0x0:o||0xa;var p=O(n)['toRgb']();return p['r']=Math[lx(0xf9)](0x0,Math['min'](0xff,p['r']-Math['round'](0xff*-(o/0x64)))),p['g']=Math[lx(0xf9)](0x0,Math['min'](0xff,p['g']-Math[lx(0x188)](0xff*-(o/0x64)))),p['b']=Math[lx(0xf9)](0x0,Math['min'](0xff,p['b']-Math['round'](0xff*-(o/0x64)))),O(p);}function fr(n,o){o=o===0x0?0x0:o||0xa;var p=O(n)['toHsl']();return p['l']-=o/0x64,p['l']=ne(p['l']),O(p);}function xr(n,o){var p=O(n)['toHsl'](),s=(p['h']+o)%0x168;return p['h']=s<0x0?0x168+s:s,O(p);}function wr(n){var o=O(n)['toHsl']();return o['h']=(o['h']+0xb4)%0x168,O(o);}function _i(n,p){const ly=bH;if(isNaN(p)||p<=0x0)throw new Error(ly(0x1f5));for(var u=O(n)['toHsl'](),v=[O(n)],w=0x168/p,x=0x1;x<p;x++)v['push'](O({'h':(u['h']+x*w)%0x168,'s':u['s'],'l':u['l']}));return v;}function mr(n){var o=O(n)['toHsl'](),p=o['h'];return[O(n),O({'h':(p+0x48)%0x168,'s':o['s'],'l':o['l']}),O({'h':(p+0xd8)%0x168,'s':o['s'],'l':o['l']})];}function Ar(n,p,u){p=p||0x6,u=u||0x1e;var v=O(n)['toHsl'](),w=0x168/u,x=[O(n)];for(v['h']=(v['h']-(w*p>>0x1)+0x2d0)%0x168;--p;)v['h']=(v['h']+w)%0x168,x['push'](O(v));return x;}function Er(p,u){const lz=bH;u=u||0x6;for(var v=O(p)['toHsv'](),w=v['h'],x=v['s'],z=v['v'],A=[],B=0x1/u;u--;)A[lz(0x135)](O({'h':w,'s':x,'v':z})),z=(z+B)%0x1;return A;}O['mix']=function(p,u,v){const lA=bH;v=v===0x0?0x0:v||0x32;var w=O(p)[lA(0xff)](),x=O(u)['toRgb'](),z=v/0x64,A={'r':(x['r']-w['r'])*z+w['r'],'g':(x['g']-w['g'])*z+w['g'],'b':(x['b']-w['b'])*z+w['b'],'a':(x['a']-w['a'])*z+w['a']};return O(A);},O[bH(0x2b0)]=function(n,o){const lB=bH;var p=O(n),s=O(o);return(Math[lB(0xf9)](p['getLuminance'](),s['getLuminance']())+0.05)/(Math['min'](p['getLuminance'](),s['getLuminance']())+0.05);},O['isReadable']=function(n,p,u){const lC=bH;var v=O['readability'](n,p),w,x;switch(x=!0x1,w=Ir(u),w[lC(0x13d)]+w['size']){case'AAsmall':case'AAAlarge':x=v>=4.5;break;case'AAlarge':x=v>=0x3;break;case'AAAsmall':x=v>=0x7;break;}return x;},O['mostReadable']=function(p,u,v){const lD=bH;var w=null,x=0x0,z,A,B,C;v=v||{},A=v['includeFallbackColors'],B=v['level'],C=v['size'];for(var D=0x0;D<u['length'];D++)z=O[lD(0x2b0)](p,u[D]),z>x&&(x=z,w=O(u[D]));return O['isReadable'](p,w,{'level':B,'size':C})||!A?w:(v['includeFallbackColors']=!0x1,O['mostReadable'](p,['#fff',lD(0x243)],v));};var Te=O[bH(0x421)]={'aliceblue':'f0f8ff','antiquewhite':'faebd7','aqua':'0ff','aquamarine':'7fffd4','azure':'f0ffff','beige':'f5f5dc','bisque':'ffe4c4','black':bH(0x416),'blanchedalmond':'ffebcd','blue':'00f','blueviolet':bH(0x249),'brown':'a52a2a','burlywood':bH(0x2a5),'burntsienna':'ea7e5d','cadetblue':'5f9ea0','chartreuse':'7fff00','chocolate':'d2691e','coral':'ff7f50','cornflowerblue':'6495ed','cornsilk':'fff8dc','crimson':bH(0x250),'cyan':'0ff','darkblue':'00008b','darkcyan':'008b8b','darkgoldenrod':'b8860b','darkgray':'a9a9a9','darkgreen':'006400','darkgrey':bH(0x435),'darkkhaki':bH(0x147),'darkmagenta':'8b008b','darkolivegreen':'556b2f','darkorange':'ff8c00','darkorchid':'9932cc','darkred':'8b0000','darksalmon':'e9967a','darkseagreen':'8fbc8f','darkslateblue':'483d8b','darkslategray':bH(0xf8),'darkslategrey':'2f4f4f','darkturquoise':bH(0x107),'darkviolet':'9400d3','deeppink':'ff1493','deepskyblue':'00bfff','dimgray':'696969','dimgrey':'696969','dodgerblue':'1e90ff','firebrick':'b22222','floralwhite':bH(0x373),'forestgreen':bH(0x2d5),'fuchsia':bH(0x14c),'gainsboro':bH(0x2d2),'ghostwhite':'f8f8ff','gold':'ffd700','goldenrod':bH(0x200),'gray':'808080','green':'008000','greenyellow':'adff2f','grey':'808080','honeydew':bH(0x3e1),'hotpink':'ff69b4','indianred':'cd5c5c','indigo':'4b0082','ivory':bH(0x2fb),'khaki':'f0e68c','lavender':bH(0x1a0),'lavenderblush':'fff0f5','lawngreen':'7cfc00','lemonchiffon':'fffacd','lightblue':'add8e6','lightcoral':'f08080','lightcyan':'e0ffff','lightgoldenrodyellow':'fafad2','lightgray':bH(0x38f),'lightgreen':'90ee90','lightgrey':'d3d3d3','lightpink':'ffb6c1','lightsalmon':bH(0x127),'lightseagreen':'20b2aa','lightskyblue':'87cefa','lightslategray':'789','lightslategrey':'789','lightsteelblue':bH(0x31d),'lightyellow':'ffffe0','lime':'0f0','limegreen':'32cd32','linen':bH(0x28f),'magenta':'f0f','maroon':'800000','mediumaquamarine':bH(0x440),'mediumblue':'0000cd','mediumorchid':'ba55d3','mediumpurple':'9370db','mediumseagreen':'3cb371','mediumslateblue':'7b68ee','mediumspringgreen':'00fa9a','mediumturquoise':'48d1cc','mediumvioletred':'c71585','midnightblue':bH(0x2bb),'mintcream':'f5fffa','mistyrose':'ffe4e1','moccasin':bH(0x335),'navajowhite':'ffdead','navy':'000080','oldlace':'fdf5e6','olive':'808000','olivedrab':'6b8e23','orange':bH(0x271),'orangered':bH(0x1d1),'orchid':'da70d6','palegoldenrod':bH(0x432),'palegreen':'98fb98','paleturquoise':'afeeee','palevioletred':'db7093','papayawhip':'ffefd5','peachpuff':'ffdab9','peru':bH(0x2bf),'pink':bH(0x11d),'plum':'dda0dd','powderblue':'b0e0e6','purple':'800080','rebeccapurple':'663399','red':'f00','rosybrown':'bc8f8f','royalblue':bH(0x41e),'saddlebrown':'8b4513','salmon':'fa8072','sandybrown':'f4a460','seagreen':'2e8b57','seashell':'fff5ee','sienna':bH(0x2e5),'silver':bH(0x1ba),'skyblue':bH(0x17a),'slateblue':bH(0x3d2),'slategray':'708090','slategrey':'708090','snow':'fffafa','springgreen':bH(0x423),'steelblue':'4682b4','tan':'d2b48c','teal':'008080','thistle':'d8bfd8','tomato':'ff6347','turquoise':'40e0d0','violet':'ee82ee','wheat':'f5deb3','white':bH(0x312),'whitesmoke':bH(0x113),'yellow':'ff0','yellowgreen':'9acd32'},pr=O['hexNames']=Cr(Te);function Cr(n){var o={};for(var p in n)n['hasOwnProperty'](p)&&(o[n[p]]=p);return o;}function rs(n){return n=parseFloat(n),(isNaN(n)||n<0x0||n>0x1)&&(n=0x1),n;}function W(n,o){yr(n)&&(n='100%');var p=br(n);return n=Math['min'](o,Math['max'](0x0,parseFloat(n))),p&&(n=parseInt(n*o,0xa)/0x64),Math['abs'](n-o)<0.000001?0x1:n%o/parseFloat(o);}function ne(n){return Math['min'](0x1,Math['max'](0x0,n));}function U(n){return parseInt(n,0x10);}function yr(n){return typeof n=='string'&&n['indexOf']('.')!=-0x1&&parseFloat(n)===0x1;}function br(n){return typeof n=='string'&&n['indexOf']('%')!=-0x1;}function $(n){return n['length']==0x1?'0'+n:''+n;}function St(n){return n<=0x1&&(n=n*0x64+'%'),n;}function ns(n){return Math['round'](parseFloat(n)*0xff)['toString'](0x10);}function Oi(n){return U(n)/0xff;}var q=(function(){const lE=bH;var n='[-\x5c+]?\x5cd+%?',o='[-\x5c+]?\x5cd*\x5c.\x5cd+%?',p=lE(0x31b)+o+')|(?:'+n+')',u='[\x5cs|\x5c(]+('+p+')[,|\x5cs]+('+p+')[,|\x5cs]+('+p+')\x5cs*\x5c)?',v=lE(0x133)+p+')[,|\x5cs]+('+p+')[,|\x5cs]+('+p+')[,|\x5cs]+('+p+')\x5cs*\x5c)?';return{'CSS_UNIT':new RegExp(p),'rgb':new RegExp('rgb'+u),'rgba':new RegExp('rgba'+v),'hsl':new RegExp('hsl'+u),'hsla':new RegExp('hsla'+v),'hsv':new RegExp('hsv'+u),'hsva':new RegExp('hsva'+v),'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 nt(n){const lF=bH;return!!q[lF(0x28e)]['exec'](n);}function vr(n){const lG=bH;n=n['replace'](ir,'')[lG(0x164)](sr,'')['toLowerCase']();var o=!0x1;if(Te[n])n=Te[n],o=!0x0;else{if(n=='transparent')return{'r':0x0,'g':0x0,'b':0x0,'a':0x0,'format':'name'};}var p;return(p=q['rgb']['exec'](n))?{'r':p[0x1],'g':p[0x2],'b':p[0x3]}:(p=q['rgba']['exec'](n))?{'r':p[0x1],'g':p[0x2],'b':p[0x3],'a':p[0x4]}:(p=q['hsl']['exec'](n))?{'h':p[0x1],'s':p[0x2],'l':p[0x3]}:(p=q['hsla']['exec'](n))?{'h':p[0x1],'s':p[0x2],'l':p[0x3],'a':p[0x4]}:(p=q['hsv']['exec'](n))?{'h':p[0x1],'s':p[0x2],'v':p[0x3]}:(p=q['hsva']['exec'](n))?{'h':p[0x1],'s':p[0x2],'v':p[0x3],'a':p[0x4]}:(p=q['hex8']['exec'](n))?{'r':U(p[0x1]),'g':U(p[0x2]),'b':U(p[0x3]),'a':Oi(p[0x4]),'format':o?'name':'hex8'}:(p=q['hex6']['exec'](n))?{'r':U(p[0x1]),'g':U(p[0x2]),'b':U(p[0x3]),'format':o?'name':'hex'}:(p=q['hex4'][lG(0xea)](n))?{'r':U(p[0x1]+''+p[0x1]),'g':U(p[0x2]+''+p[0x2]),'b':U(p[0x3]+''+p[0x3]),'a':Oi(p[0x4]+''+p[0x4]),'format':o?lG(0x411):'hex8'}:(p=q['hex3']['exec'](n))?{'r':U(p[0x1]+''+p[0x1]),'g':U(p[0x2]+''+p[0x2]),'b':U(p[0x3]+''+p[0x3]),'format':o?'name':'hex'}:!0x1;}function Ir(n){const lH=bH;var o,p;return n=n||{'level':'AA','size':'small'},o=(n['level']||'AA')['toUpperCase'](),p=(n['size']||'small')['toLowerCase'](),o!=='AA'&&o!=='AAA'&&(o='AA'),p!==lH(0x2d9)&&p!=='large'&&(p=lH(0x2d9)),{'level':o,'size':p};}const Ae=0x44,Dt=bH(0x346),Bt=0xb,Li=0x8,as=0.1,Xe=0x2,hs=1.2,Rr=0x22,ls='#f3f3f3',cs=bH(0x1a3),Tr='#d7dbe0',Mi=bH(0x2ca),Sr='rgba(33,\x20163,\x20102,\x200.1)',_r=0x1,Or='#000000',Lr={'double':0x8,'solid':0x7,'dashed':0x5,'dotted':0x4},ds='bold\x2012px\x20'+Dt,We=Bt+'px\x20'+Dt,Mr=0x20,Hi={'backgroundColor':ls,'color':cs,'font':ds},Hr={'backgroundColor':'#f4f7f9','color':'#73808d','font':'italic\x20'+Bt+bH(0x1d0)+Dt};let Tt;function b(c,d){c=c-0xe8;const e=a();let f=e[c];return f;}const Di=new Map(),us=n=>n['map'](o=>{const lI=bH;var p;return M(M({},o),(p=o['children'])!=null&&p['length']?{'children':us(o[lI(0x205)])}:{});}),Dr=n=>{const lJ=bH;if(typeof n[lJ(0x1f1)]=='string'&&n['font']['trim']())return n['font'];if(!(n['fontFamily']!==void 0x0||n['fontSize']!==void 0x0||n['fontWeight']!==void 0x0||n[lJ(0x1e8)]!==void 0x0))return;const o=((()=>{const lK=lJ,{fontWeight:p}=n;if(typeof p=='number')return p>=0x258?'bold':'normal';if(typeof p=='string'){const t=p[lK(0xe8)]();return/^\d+$/[lK(0x3ad)](t)?Number(t)>=0x258?'bold':'normal':t;}return'normal';})());return[n['fontStyle']||'normal',o,(Number['parseInt'](n['fontSize'],0xa)||Bt)+'px',n['fontFamily']||Dt]['join']('\x20');},gs=n=>{const lL=bH;if(n){if(n['includes'](lL(0x371)))return'left';if(n['includes']('htRight'))return'right';if(n['includes']('htCenter'))return'center';}},fs=n=>{const lM=bH;if(n){if(n[lM(0x225)]('htTop'))return'top';if(n['includes']('htBottom'))return'bottom';if(n[lM(0x225)]('htMiddle'))return'middle';}},Bi=(n,o)=>!!(n!=null&&n['split'](/\s+/)['includes'](o)),Br=(n,o,p)=>{var s;return typeof n=='number'?n:(s=n==null?void 0x0:n[o])!=null?s:p;},Pe=n=>{const o=Number(n==null?void 0x0:n['width']);return Number['isFinite'](o)&&o>0x0?o:0x0;},kr=n=>!!n&&!n[bH(0x3bf)]&&Pe(n)>0x0,Nr=n=>{const lN=bH;var o,p;return(p=(o=n['structure'])==null?void 0x0:o[lN(0x323)])!=null&&p[lN(0x1ce)]?n['structure']['columns']:n['columns'];},Fr=n=>{var o,p;return(p=(o=n['structure'])==null?void 0x0:o['colWidths'])!=null?p:n['colWidths'];},ki=(n,o,p)=>{var s;return typeof n=='number'?n:(s=n==null?void 0x0:n[o])!=null?s:p;},Se=(n,o)=>typeof n=='number'&&Number['isFinite'](n)?n<=0x0?as:Math['max'](Math[bH(0x139)](n),Li):Math['max'](Math['ceil'](o),Li),Kr=n=>{const lO=bH;if(n==null)return!0x1;const o=(''+n)['trim']();return o?!/^\d+([./:-]\d+)*$/[lO(0x3ad)](o):!0x1;},Yr=p=>{const lP=bH,u=p[lP(0x180)],v=p['data']||[];if(!u||v['length']<0x2||(p['merge']||[])['length'])return 0x0;const w=v[0x0]||[],x=v[0x1]||[],z=w['filter'](B=>(''+(B!=null?B:''))['trim']()!==''),A=x['filter'](B=>(''+(B!=null?B:''))['trim']()!=='');return z['length']<Math['min'](Math[lP(0xf9)](Math['floor'](u['totalCols']/0x2),0x3),0x6)||!z['every'](Kr)||A['length']<0x2?0x0:0x1;},Xr=p=>{const lQ=bH;var v;const w=Nr(p),x=Fr(p),z=[{'key':qo,'title':'','type':'index','fixed':'left','width':Ae,'minWidth':Ae,'maxWidth':Ae,'widthFillDisable':!0x0,'headerAlign':lQ(0x33e),'align':'center','headerVerticalAlign':'middle','verticalAlign':'middle','overflowTooltipShow':!0x1,'overflowTooltipHeaderShow':!0x1}],A=[];for(let B=0x0;B<(((v=p[lQ(0x180)])==null?void 0x0:v['totalCols'])||0x0);B+=0x1){const C=Ye(B),D=w==null?void 0x0:w[B],E=Br(x,B,p['defaults'][lQ(0x10d)]),F=!!(D!=null&&D['hidden'])||E<=0x0,G=fs(D==null?void 0x0:D['className'])||lQ(0x1a2);A['push'](C),z['push']({'key':C,'title':(D==null?void 0x0:D[lQ(0x381)])||''+(B+0x1),'width':F?0x0:Math['max'](Math[lQ(0x139)](E),0x1),'hide':F,'widthFillDisable':!0x0,'renderType':'both','headerAlign':lQ(0x33e),'headerVerticalAlign':'middle','align':gs(D==null?void 0x0:D[lQ(0x23b)])||'left','verticalAlign':G,'overflowTooltipShow':!0x0,'overflowTooltipHeaderShow':!0x0});}return{'columns':z,'dataKeys':A};},Ni=n=>us(n),Wr=n=>{const lR=bH;if(typeof n==lR(0x3fd)&&Number['isFinite'](n))return Math['max'](n,0x0);if(typeof n=='string'){const o=Number['parseFloat'](n);return Number['isFinite'](o)?Math['max'](o,0x0):0x0;}return 0x0;},Pr=n=>{const lS=bH;if(typeof n!=lS(0x332))return'solid';const o=n[lS(0xe8)]();switch(o){case'double':case'dashed':case'dotted':case'solid':return o;default:return'solid';}},Xt=(n,o)=>{const lT=bH,p=Wr(n[lT(0x32d)+o+'Width']);if(p)return{'width':p,'style':Pr(n[lT(0x32d)+o+'Style']),'color':n['border'+o+'Color']||Or};},_e=n=>n?!!(n[bH(0x263)]||n['borderRight']||n['borderBottom']||n[bH(0x232)]):!0x1,xs=n=>n?!!(n['horizontalAlign']||n['verticalAlign']||n[bH(0xeb)]||n['shrinkToFit']):!0x1,Fi=(n,o)=>xs(n)?!!(n!=null&&n[bH(0xeb)]||n!=null&&n['shrinkToFit']||n!=null&&n['horizontalAlign']&&n['horizontalAlign']!==((o==null?void 0x0:o['align'])||'left')||n!=null&&n['verticalAlign']&&n['verticalAlign']!==((o==null?void 0x0:o[bH(0x27e)])||'middle')):!0x1,Qr=n=>{const lU=bH;switch(n){case lU(0x33e):return lU(0x33e);case'right':return lU(0x240);default:return'flex-start';}},zr=n=>{const lV=bH;switch(n){case lV(0x238):return'flex-start';case'bottom':return'flex-end';default:return'center';}},Gr=(n,o,p,s)=>{const lW=bH;switch(n){case'right':return o-p;case'center':return-Math['min'](s,Math[lW(0xf9)]((p-o)/0x2,0x0));default:return 0x0;}},Ee=n=>typeof n[bH(0x333)]==bH(0x3fd)&&n['_height']<=as,Oe=(n,o)=>{const lX=bH,p=n==null?void 0x0:n['key'];if(typeof p=='string'&&p['startsWith']('c')){const s=Number(p['slice'](0x1));if(Number[lX(0x190)](s)&&s>=0x0)return s;}return Math['max'](o-0x1,0x0);},Wt=(n,o,p)=>at(n,Oe(p,o)+0x1),ws=(n,o)=>at(n,o+0x1),Qe=n=>n==null?'':''+n,Vr=n=>Qe(n)['trim']()!=='',Ur=n=>/^[+-]?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?%?$/['test'](n['trim']()),Jr=(n,p)=>{const lY=bH,u=p+'\x0a'+n,v=Di['get'](u);if(v!==void 0x0)return v;!Tt&&typeof document!='undefined'&&(Tt=document['createElement'](lY(0x3e7)));const w=Tt==null?void 0x0:Tt['getContext']('2d');if(!w)return n[lY(0x1ce)]*Bt;w[lY(0x1f1)]=p;const x=w['measureText'](n)['width']+Xe*0x2;return Di['set'](u,x),x;},Zr=(n,p,u,v)=>{const w=n['columns'][v+0x1];if(!kr(w))return!0x1;const x=ws(u,v);return n['mergeStartMap']['has'](x)||n['mergeCoveredMap']['has'](x)?!0x1:!Vr(p[Ye(v)]);},Ki=(p,u,v,w,x)=>{let z=0x0;for(let A=0x1;A<=Mr;A+=0x1){const B=w+A*x;if(B<0x0||B>=p['totalCols']||!Zr(p,u,v,B))break;z+=Pe(p['columns'][B+0x1]);}return z;},Yi=(p,v,z,A,B,C,D)=>{const lZ=bH,E=Qe(D);if(!E||C!=null&&C[lZ(0xeb)]||C!=null&&C['shrinkToFit']||Ur(E))return;const F=ws(z,A);if(p['mergeStartMap']['has'](F)||p[lZ(0x30a)]['has'](F))return;const G=Pe(B);if(!G)return;const H=(C==null?void 0x0:C['font'])||We,I=Math['ceil'](Jr(E,H));if(I<=G)return;const K=(C==null?void 0x0:C['horizontalAlign'])||(B==null?void 0x0:B['align'])||lZ(0x418),L=K==='right'||K==='center'?Ki(p,v,z,A,-0x1):0x0,N=K!==lZ(0x1b9)?Ki(p,v,z,A,0x1):0x0,P=G+L+N;if(P<=G)return;const Q=Math['min'](I,P);return{'left':Gr(K,G,Q,L),'width':Q};},ct=n=>n?n['width']*0x64+(Lr[n['style']]||0x1):0x0,jr=(p,v,w,x)=>{const m0=bH,z=p[m0(0x42c)]['get'](at(v-0x1,w+0x1)),A=p['cellCache'][m0(0x274)](at(v+0x1,w+0x1)),B=p['cellCache']['get'](at(v,w)),C=p['cellCache']['get'](at(v,w+0x2)),D=ct(x['borderTop'])>=ct(z==null?void 0x0:z['borderBottom'])?x[m0(0x263)]:void 0x0,E=ct(x['borderBottom'])>ct(A==null?void 0x0:A[m0(0x263)])?x['borderBottom']:void 0x0,F=ct(x[m0(0x232)])>=ct(B==null?void 0x0:B[m0(0x160)])?x[m0(0x232)]:void 0x0,G=ct(x['borderRight'])>ct(C==null?void 0x0:C['borderLeft'])?x[m0(0x160)]:void 0x0;return Y(M({},x),{'borderTop':D,'borderRight':G,'borderBottom':E,'borderLeft':F});},Pt=(n,o)=>{const m1=bH,p=document[m1(0x288)]('span'),s=o[m1(0x28a)]/0x2;return Object['assign'](p['style'],{'position':'absolute','pointerEvents':m1(0x2fc),'boxSizing':'border-box'}),n==='top'||n==='bottom'?(Object['assign'](p['style'],{'left':-s+'px','width':m1(0x383)+o['width']+'px)','height':'0'}),p['style'][n]=-s+'px',p['style']['borderTop']=o['width']+m1(0x1d0)+o['style']+'\x20'+o[m1(0x32a)]):(Object[m1(0x424)](p['style'],{'top':-s+'px','height':'calc(100%\x20+\x20'+o['width']+'px)','width':'0'}),p[m1(0x388)][n]=-s+'px',p[m1(0x388)]['borderLeft']=o['width']+'px\x20'+o['style']+'\x20'+o['color']),p;},qr=(n,o)=>{const m2=bH,p=document['createElement']('span');return p['textContent']=Qe(n),Object['assign'](p[m2(0x388)],{'position':'relative','zIndex':'1','width':'100%','height':'100%','boxSizing':'border-box','display':'flex','alignItems':zr(o[m2(0x27e)]),'justifyContent':Qr(o['horizontalAlign']),'padding':'0\x20'+Xe+'px','overflow':'hidden','textOverflow':o['wrapText']?m2(0x142):'ellipsis','whiteSpace':o['wrapText']?'pre-wrap':'nowrap','wordBreak':o['wrapText']?'break-word':'normal','lineHeight':''+hs,'textAlign':o['horizontalAlign']||'left','color':o['color']||'inherit','font':o['font']||We,'transform':o['shrinkToFit']?m2(0x2a3):m2(0x2fc),'transformOrigin':(o['horizontalAlign']||'left')+'\x20center'}),p;},$r=(n,o)=>{const m3=bH;o&&Object['assign'](n['style'],{'position':'absolute','left':o['left']+'px','top':'0','width':o['width']+'px','overflow':'hidden','textOverflow':m3(0x142)});},tn=(p,u,v,w,x)=>{const m4=bH;p['replaceChildren'](),Object['assign'](p['style'],{'pointerEvents':'none','overflow':'visible','background':m4(0x364)});const z=document['createDocumentFragment']();if(w){const A=qr(v,u);$r(A,x),z[m4(0x27b)](A);}u[m4(0x263)]&&z['appendChild'](Pt('top',u['borderTop'])),u['borderRight']&&z['appendChild'](Pt('right',u['borderRight'])),u['borderBottom']&&z[m4(0x27b)](Pt('bottom',u['borderBottom'])),u['borderLeft']&&z['appendChild'](Pt(m4(0x418),u['borderLeft'])),p['appendChild'](z);},en=p=>{const m5=bH;if(!p)return;const u=p['style']||{},v={};u['backgroundColor']&&(v['backgroundColor']=u[m5(0x3c1)]),u['color']?v['color']=u['color']:u['backgroundColor']&&O(u['backgroundColor'])['isDark']()&&(v['color']='#ffffff');const w=Dr(u);w?v['font']=w:u[m5(0x3c1)]&&O(u['backgroundColor'])['isDark']()&&(v['font']='bold\x20'+Bt+'px\x20'+Dt);const x=Xt(u,'Top');x&&(v['borderTop']=x);const z=Xt(u,'Right');z&&(v['borderRight']=z);const A=Xt(u,'Bottom');A&&(v['borderBottom']=A);const B=Xt(u,'Left');B&&(v['borderLeft']=B);const C=gs(p['className']);C&&(v['horizontalAlign']=C);const D=fs(p['className']);if(D&&(v['verticalAlign']=D),Bi(p['className'],'htWrap')&&(v['wrapText']=!0x0),Bi(p[m5(0x23b)],'htShrink')&&(v['shrinkToFit']=!0x0),!(!v['backgroundColor']&&!v['color']&&!v['font']&&!_e(v)&&!xs(v)))return v;},pe=({hostHeight:p,sheetDefaults:u,virtualState:v})=>{const ma=bH,w=({rowIndex:B,colIndex:C,column:D})=>{const m6=b;if(C===0x0)return;const E=Wt(B,C,D);if(v['mergeCoveredMap'][m6(0x2e6)](E))return{'rowspan':0x0,'colspan':0x0};const F=v['mergeStartMap']['get'](E);if(F)return{'rowspan':F['rowspan'],'colspan':F['colspan']};},x=()=>Hi,z=({row:B,rowIndex:C,colIndex:D,column:E})=>{const m7=b;if(D===0x0)return Hi;const F=B;if(!Ee(F))return me(F)!==ut['Loaded']?Hr:v[m7(0x42c)]['get'](Wt(C,D,E));},A=({row:B,rowIndex:C,colIndex:D,column:E,value:F})=>{const m8=b,G=B;if(D===0x0||Ee(G)||me(G)!==ut[m8(0x1f7)])return;const H=Wt(C,D,E);if(v['mergeCoveredMap'][m8(0x2e6)](H))return;const I=v[m8(0x42c)]['get'](H),K=Oe(E,D),L=Yi(v,G,C,K,E,I,F),N=Fi(I,E)||!!L;if(!(!_e(I)&&!N))return P=>{const m9=m8,Q=Y(M({},I||{}),{'horizontalAlign':(I==null?void 0x0:I[m9(0x429)])||(E==null?void 0x0:E['align']),'verticalAlign':(I==null?void 0x0:I[m9(0x27e)])||(E==null?void 0x0:E['verticalAlign'])}),R=_e(I)?jr(v,C,K,Q):Q;tn(P,R,F,N,L);};};return{'ROW_KEY':os,'DISABLED':!0x0,'HEIGHT':Math['max'](p,0xf0),'MAX_HEIGHT':Math[ma(0xf9)](p,0xf0),'HEADER_HEIGHT':Rr,'CELL_HEIGHT':Se(u['rowHeight'],u['rowHeight']),'CELL_WIDTH':u['colWidth'],'CELL_PADDING':Xe,'CELL_LINE_HEIGHT':hs,'COLUMNS_VERTICAL_ALIGN':'middle','HEADER_FONT':ds,'BODY_FONT':We,'BORDER_RADIUS':0x0,'BORDER_COLOR':Tr,'HEADER_BG_COLOR':ls,'BODY_BG_COLOR':'#ffffff','HEADER_TEXT_COLOR':cs,'BODY_TEXT_COLOR':ma(0x3b1),'READONLY_COLOR':ma(0x3f1),'READONLY_TEXT_COLOR':ma(0x3b1),'EDIT_BG_COLOR':'#ffffff','PLACEHOLDER_COLOR':'#8a94a3','SCROLLER_COLOR':'#c1c7d0','SCROLLER_FOCUS_COLOR':'#9aa0a6','SELECT_ROW_COL_BG_COLOR':Sr,'SELECT_AREA_COLOR':'rgba(33,\x20163,\x20102,\x200.14)','SELECT_BORDER_COLOR':Mi,'AUTOFILL_POINT_BORDER_COLOR':Mi,'ENABLE_SELECTOR':!0x0,'ENABLE_SELECTOR_SINGLE':!0x1,'ENABLE_SELECTOR_SPAN_COL':!0x0,'ENABLE_SELECTOR_SPAN_ROW':!0x0,'ENABLE_SELECTOR_ALL_ROWS':!0x0,'ENABLE_SELECTOR_ALL_COLS':!0x0,'SELECTOR_AREA_MIN_X':_r,'ENABLE_CONTEXT_MENU':!0x1,'ENABLE_HEADER_CONTEXT_MENU':!0x1,'ENABLE_AUTOFILL':!0x0,'ENABLE_AUTOFILL_SPAN_COL':!0x0,'ENABLE_AUTOFILL_SPAN_ROW':!0x0,'ENABLE_PASTER':!0x1,'ENABLE_HISTORY':!0x1,'ENABLE_RESIZE_COLUMN':!0x1,'ENABLE_RESIZE_ROW':!0x1,'ENABLE_KEYBOARD':!0x0,'ENABLE_COPY':!0x0,'BEFORE_AUTOFILL_DATA_METHOD':()=>[],'SPAN_METHOD':w,'HEADER_CELL_STYLE_METHOD':x,'BODY_CELL_STYLE_METHOD':z,'BODY_CELL_RENDER_METHOD':A,'BODY_CELL_FORMATTER_METHOD':({row:B,rowIndex:C,colIndex:D,column:E,value:F})=>{const mb=ma;if(Ee(B))return'';if(D===0x0){const K=C+0x1-v['indexOffset'];return K>0x0?''+K:'';}if(me(B)!==ut[mb(0x1f7)])return'';const G=B,H=v['cellCache'][mb(0x274)](Wt(C,D,E)),I=Yi(v,G,C,Oe(E,D),E,H,F);return Fi(H,E)||I||F==null?'':''+F;}};},sn=e({'__name':bH(0x2bd),'props':{'data':null},'setup'(I){const md=bH,L=I,P=c(null),R=c([]),a0=c(0x0),a1=c(''),a2=c(0x0),a3=c(0x0),a4=c(M({},Re)),a5=c(!0x0),a6=c(!0x1),a7=c(0x0),a8=c(0x0),a9=f(()=>R['value']['find'](b0=>b0['id']===a0['value'])),aa=f(()=>{const b0=R['value']['filter'](b1=>!b1['hidden']);return b0['length']?b0:R['value'];}),ab=f(()=>!a1['value']&&!a6['value']&&(aj['value']||a5['value'])),ac=f(()=>!ab['value']&&!a1['value']&&a6['value']&&a8['value']>0x0),ad=f(()=>{const mc=b;var b0;return R[mc(0x422)]['length']?(b0=a9['value'])!=null&&b0[mc(0x411)]?'正在准备「'+a9['value']['name']+mc(0x17d):'正在准备工作表内容...':'正在解析\x20Excel\x20工作簿,请耐心等待...';}),af=f(()=>a2['value']?'已缓存\x20'+Math['min'](a7[md(0x422)]*st,a2['value'])['toLocaleString']()+'\x20/\x20'+a2['value']['toLocaleString']()+'\x20行':''),ag=f(()=>{const mf=md;var b0,b1;const b2=a2['value']||((b0=a9[mf(0x422)])==null?void 0x0:b0['rowCount'])||0x0,b3=a3['value']||((b1=a9[mf(0x422)])==null?void 0x0:b1['colCount'])||0x0;return b2?b3?'共\x20'+b2+'\x20行,'+b3+'\x20列,按视口预取平滑加载':'共\x20'+b2+'\x20行,按视口预取平滑加载':'';}),ah=()=>jo['create'](),{loading:aj,worker:ak,onWorkerEvent:al}=Os(ah);let am=we();const ap=new Map();let aq=null,au=null,av=0x0,aw=0x0,ax={'start':0x0,'end':0x0},ay=0x1,az=0x0,aA=0x0;const aB=()=>{const mg=md;var b0,b1;return(b1=a0[mg(0x422)])!=null?b1:(b0=R[mg(0x422)][0x0])==null?void 0x0:b0['id'];},aC=()=>{const mh=md;var b0;return((b0=P[mh(0x422)])==null?void 0x0:b0['clientHeight'])||0x0;},aD=()=>{const mj=md;a7['value']=am[mj(0x26b)][mj(0x36d)],a8['value']=am['loadingWindows']['size'];},aE=()=>({'config':pe({'hostHeight':aC(),'sheetDefaults':a4['value'],'virtualState':am}),'columns':Ni(am[md(0x323)])}),aF=()=>{ax={'start':0x0,'end':0x0},ay=0x1,az=0x0;},aG=()=>{aq&&(aw&&cancelAnimationFrame(aw),aw=requestAnimationFrame(()=>{const mk=b;if(aw=0x0,!aq||!am['active']||!am['totalRows'])return;const b0=Math['max'](aq['ctx']['body']['headIndex']||0x0,0x0),b1=Math['max'](aq['ctx']['body']['tailIndex']||b0,b0),b2=aq['ctx'][mk(0x1d4)]||0x0;ay=b2>=az?0x1:-0x1,az=b2,ax={'start':b0,'end':b1},aL(b0,b1);}));},aH=()=>(aq||!P['value']||(aq=new Zo(P['value'],{'data':[],'columns':[],'config':pe({'hostHeight':aC(),'sheetDefaults':a4['value'],'virtualState':am})}),aq['on'](md(0x1bc),aG),aq['on']('resize',aG)),aq),aI=(b0,b1=am['columns'],b2=am['rows'],b3=!0x1)=>{const ml=md,b4={'config':pe({'hostHeight':aC(),'sheetDefaults':a4[ml(0x422)],'virtualState':am}),'columns':Ni(b1)};if(b0['loadConfig'](b4['config']),b0['loadColumns'](b4['columns']),b0[ml(0x37e)](b2),b0['draw'](),b3){requestAnimationFrame(()=>{const mm=ml;b0['scrollTo'](0x0,0x0),b0[mm(0x329)](),aG();});return;}aG();},aJ=()=>{const mn=md,b0=aH();if(!b0)return;const {config:b1,columns:b2}=aE();b0['loadConfig'](b1),am['active']&&b2['length']&&b0['loadColumns'](b2),b0[mn(0x1ec)](),b0['draw'](),aG();},aK=(b0=0x0,b1=!0x0)=>{const mp=md,b2=aB();if(b2===void 0x0)return;const b3=$t(b0,am['totalRows']);am['loadedWindows']['has'](b3)||am['loadingWindows'][mp(0x2e6)](b3)||(am['loadingWindows'][mp(0x2e3)](b3),aD(),am['active']&&(vi(am['rows'],am['totalRows'],b3,ut[mp(0x221)]),aq==null||aq['draw']()),a1['value']='',ak['emit']('parseSheet',{'sheet':b2,'startRow':b3,'pageSize':st,'sessionId':aA}),b1&&(aj[mp(0x422)]=!0x1));},aL=(b0,b1)=>{const mq=md;!am['active']||!am[mq(0x3a8)]||er({'startRow':b0,'endRow':b1,'direction':ay,'totalRows':am['totalRows']})['forEach'](b2=>aK(b2,!0x0));},aM=b0=>{const ms=md,b1=b0['meta'];if(!b1)return;const {columns:b2,dataKeys:b3}=Xr(b0);am=Y(M({},we()),{'active':!0x0,'totalRows':b1[ms(0x3a8)],'totalCols':b1['totalCols'],'indexOffset':Yr(b0),'defaults':b0[ms(0x2c6)],'dataKeys':b3,'rows':$o(b1['totalRows']),'columns':b2}),a4['value']=b0[ms(0x2c6)],a2['value']=b1['totalRows'],a3['value']=b1[ms(0x3f2)],aD(),k(()=>{const b4=aH();b4&&aI(b4,b2,am['rows'],!0x0);});},aN=b0=>{am['dataKeys']['forEach'](b1=>{delete b0[b1];});},aO=b0=>{const mu=md;Array[mu(0x339)](b0)&&b0['forEach']((b1,b2)=>{const mv=mu;if(b1===void 0x0)return;const b3=am[mv(0x2be)][b2];if(!b3)return;const b4=Se(b1,am['defaults']['rowHeight']);b3['_height']=b4,am['rowHeightCache']['set'](b2,b4);});},aP=b0=>{const mw=md;var b1,b2;const b3=b0['meta'];if(!b3)return;const b4=[],b5=Math['min'](b3['endRow'],am['totalRows']);for(let b6=b3[mw(0x443)];b6<b5;b6+=0x1){const b7=am['rows'][b6],b8=b6-b3['startRow'];if(!b7)continue;aN(b7),(((b1=b0['data'])==null?void 0x0:b1[b8])||[])['forEach']((bb,bc)=>{bb===''||bb===null||bb===void 0x0||(b7[Ye(bc)]=bb);});const b9=ki(b0['rowHeights'],b8,am['defaults']['rowHeight']),ba=Se(ki((b2=b0['structure'])==null?void 0x0:b2['rowHeights'],b6,b9),am['defaults'][mw(0x2bc)]);b7['_height']=ba,b7[re]=ut[mw(0x1f7)],am[mw(0x1b5)]['set'](b6,ba),b4['push'](b6);}am['windowRows']['set'](b3['startRow'],b4);},aQ=b0=>{const mx=md,b1=b0['meta'];if(!b1)return;const b2=[];Object[mx(0x12c)](b0['cell']||{})['forEach'](([b3,b4])=>{const my=mx,[b5,b6]=b3['split']('-')['map'](Number),b7=at(b1['startRow']+b5,b6+0x1),b8=en(b4);b8&&(am['cellCache'][my(0x119)](b7,b8),b2['push'](b7));}),am['windowCells']['set'](b1['startRow'],b2);},aR=b0=>{const mz=md;am['mergeStartMap'][mz(0x40b)](),am['mergeCoveredMap']['clear'](),b0['forEach'](b1=>{const mA=mz,b2=at(b1['row'],b1[mA(0x3cd)]+0x1);am['mergeStartMap']['set'](b2,Y(M({},b1),{'col':b1['col']+0x1}));for(let b3=0x0;b3<b1['rowspan'];b3+=0x1)for(let b4=0x0;b4<b1['colspan'];b4+=0x1){if(b3===0x0&&b4===0x0)continue;const b5=at(b1['row']+b3,b1['col']+b4+0x1);am['mergeCoveredMap']['set'](b5,!0x0);}});},aS=b0=>{const mB=md,b1=b0[mB(0x2ba)],b2=b1==null?void 0x0:b1['merge'];if(b2)aR(b2);else{const b3=b0['meta'];b3&&!am['mergeStartMap']['size']&&aR((b0[mB(0x357)]||[])[mB(0x3d3)](b4=>Y(M({},b4),{'row':b4[mB(0x204)]+b3['startRow']})));}aO(b1==null?void 0x0:b1['rowHeights']);},aT=b0=>{const mC=md,b1=b0['meta'];if(!b1)return;am['active']||aM(b0),aS(b0),aP(b0),aQ(b0),am['loadedWindows'][mC(0x2e3)](b1['startRow']),am['loadingWindows']['delete'](b1['startRow']),aD(),a6[mC(0x422)]=!0x0;const b2=aB();b2!==void 0x0&&ap['set'](b2,am),aq==null||aq['draw'](),aj['value']=!0x1,a5['value']=!0x1;const b3=ax['start']||b1['startRow'],b4=Math['max'](ax[mC(0x385)],b1[mC(0x3e6)]-0x1,b1['startRow']);aL(b3,b4);},aU=()=>{const mD=md;a1['value']='',a2['value']=0x0,a3[mD(0x422)]=0x0,a4['value']=M({},Re),am=we(),a6['value']=!0x1,aF(),aD(),aq&&(aq['loadColumns']([]),aq['loadData']([]),aq['scrollTo'](0x0,0x0),aq[mD(0x329)]());},aV=()=>{const mE=md,b0=aB();b0===void 0x0||!am[mE(0x253)]||ap['set'](b0,am);},aW=b0=>{const mF=md,b1=ap['get'](b0);return b1?(b1['loadingWindows']['clear'](),am=b1,a1['value']='',a2[mF(0x422)]=b1['totalRows'],a3[mF(0x422)]=b1['totalCols'],a4['value']=b1['defaults'],a6['value']=b1['loadedWindows']['size']>0x0,a5['value']=!a6['value'],aD(),k(()=>{const b2=aH();b2&&aI(b2,b1['columns'],b1['rows']);}),!0x0):!0x1;},aX=()=>{const b0=aB();if(b0===void 0x0){aj['value']=!0x1,a5['value']=!0x1;return;}if(aA+=0x1,aW(b0)){aj['value']=!0x1;return;}a5['value']=!0x0,aU(),aK(0x0,!0x1);},aY=b0=>{a0['value']!==b0&&(aV(),a0['value']=b0,aX());},aZ=()=>{ak['emit']('parseWorkbook',{'workbook':L['data']});};return al('sheets',({sheets:b0})=>{const mG=md;R['value']=b0;const b1=b0['find'](b2=>!b2['hidden'])||b0[0x0];if(b1){a0['value']=b1['id'],aX();return;}a5[mG(0x422)]=!0x1,aj['value']=!0x1;}),al('parseSheet',({sessionId:b0,sheet:b1,sheetData:b2})=>{b0!==aA||b1!==aB()||aT(b2);}),al('parseError',({sessionId:b0,startRow:b1,message:b2})=>{const mH=md;b0&&b0!==aA||(a5['value']=!0x1,aj['value']=!0x1,typeof b1==mH(0x3fd)?(am['loadingWindows']['delete'](b1),aD(),am['active']&&(vi(am['rows'],am['totalRows'],b1,ut['Placeholder']),aq==null||aq['draw']())):(am['loadingWindows'][mH(0x40b)](),aD()),a1[mH(0x422)]=b2||'Excel\x20解析失败');}),g(()=>L[md(0x229)],()=>{const mI=md;aA+=0x1,R['value']=[],a0[mI(0x422)]=0x0,ap['clear'](),a5['value']=!0x0,aU(),aZ();}),i(()=>{const mJ=md;aH(),P[mJ(0x422)]&&(au=new ResizeObserver(()=>{av&&cancelAnimationFrame(av),av=requestAnimationFrame(()=>{av=0x0,aJ();});}),au[mJ(0x42b)](P['value'])),aZ();}),j(()=>{const mK=md;av&&cancelAnimationFrame(av),aw&&cancelAnimationFrame(aw),au==null||au[mK(0x31c)](),au=null,aq==null||aq['destroy'](),aq=null;}),{'__sfc':!0x0,'props':L,'tableHost':P,'sheets':R,'sheetIndex':a0,'errorMessage':a1,'totalRows':a2,'totalCols':a3,'sheetDefaults':a4,'sheetInitializing':a5,'hasInitialWindow':a6,'loadedWindowCount':a7,'loadingWindowCount':a8,'activeSheet':a9,'sheetTabs':aa,'showBlockingLoading':ab,'showStreamingLoading':ac,'sheetLoadingText':ad,'cachedSummary':af,'statusSummary':ag,'compositeWorkerFactory':ah,'loading':aj,'worker':ak,'onWorkerEvent':al,'virtualState':am,'sheetStateCache':ap,'table':aq,'resizeObserver':au,'resizeFrame':av,'scrollFrame':aw,'viewportRange':ax,'scrollDirection':ay,'lastScrollY':az,'sheetSessionId':aA,'getActiveSheetId':aB,'getHostHeight':aC,'syncWindowStats':aD,'buildTableView':aE,'resetViewportTracking':aF,'scheduleViewportLoad':aG,'ensureTable':aH,'renderTable':aI,'syncTableLayout':aJ,'requestWindow':aK,'ensureViewportWindows':aL,'initializeVirtualSheet':aM,'clearVirtualRow':aN,'applyStructureRowHeights':aO,'applyWindowRows':aP,'applyWindowCells':aQ,'setSheetMerges':aR,'applySheetStructure':aS,'applyVirtualWindow':aT,'resetViewState':aU,'cacheCurrentSheetState':aV,'restoreCachedSheetState':aW,'startSheetSession':aX,'handleSheet':aY,'emitParseWorkbook':aZ};}}),on='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAC9FBMVEUAAAABAQEODw8AAAAAAAAAAAAzMzMBAQEAAAABAQFycnIAAAD9/f0mJiYAAAD9/f2EhITS0tIbf0qBgYHOzs6Kiorl5eVpgHRXWVgLDQz7+/v39/dDmWoObzoQfEIqi1YVf0Ukh1Ha2tofhE2lpaVebGTt7e15eXnh4eHX19cZgUmYmJg8Pj1VVVWoqKiEhIQObznGxsaxsbEng1C1tbXMzMy+vr7CwsLR0dHFxcVmZmampqa2trY/cFVTU1PZ2dnW1tYAAgDm5ubY2Ng/lmcObzo/lmcNbzo+lmYOcDo2kV////8QfEH9/f3+/v77+/v4+Pgri1YRfUIsjFjy8vIdg0v6+vopilXw8PAniVMTfkTt7e0liFIXgEfo6Ogbgkr3+PcVf0UfhU3q6uohhk/29vYZgUj19fX09PQjh1Dm5ubs7Ozk5OTv7+/e3t7i4uIho2YUSixbz5owuHkfmWAYXDdNtYT4+/nb29vc3NwjhlDg4ODW1tYtjFnQ0NDU1NTY2NjU1tUOcTsQekDIyclEmWvKysrHx8cxjlsXfUNAlmi/wL9OtYUAeDdFiFtYn3Y7l2YTbzsAbTQzdUpQvYVVzpcBoWEAQhkht3VHblVGYU8AViozuHpJqnZJoXHMzMwAl1tjuo4jmmFGtIEeXTn1+fbExMS7u7sAejoThk1FnGxs0qEogUwAfT5Nk2jBwcEyilc6hFQAeS0uiFQBgEMrhVAObjm0tLQAdiZCjmAbf0YigEkAfDOpqany9vRHjmIdiFEChEcWfEK4uLg/ilsAbwHO39Vt0qIAdBxzqIc8h1cOdT03kV8AchC/1Meurq6kw7ADk1jo8eygoKCXl5dgtozt9PC3z8APg0ni7OaxsrFr0aDc6eGNtZwjll7W5NysyLaevalEsX9poH6Aq5BUmXAdXDiTuaGGspfG2c0gckBLqnYAZx8AZAZo0Z9edmY9aE09XEgLfkJhroFhkXF61KdxvJZlwY88sH0BtXFXi2gATxf6D1MSAAAAS3RSTlMACQYNExgZHSQpVTD3Njb2O/wOPfwr9w0LEPb28fHx8fHx+/FxF/VD9vzxWy4RiUz91JhUrPLIspTmOMvjJGLlvEbSzbGxiorOzuSptM5HAAA3i0lEQVR42uycy04aURzGC0JvK0mxxXRn6C22Nppae9G0SdetLIiZhISYEILhuoVgABMDCx7CHSxZ+gC+RZ+m58rHOWeOA1bAtOc7MAzD0NjMr9/3P/859Z6Tk5OTk5OT020pHL53lxQO37Ef6J9W+K5K/GSOhv9U7Lo/oyPhQJiPwom1O6uDg/sPotH1lYlr/uxZwmFwu7n/4vXTJeu1rzY2vhH9+PH9+97ep09byc3VtYPoisTAUXBrDrv2NJPNzV1Z8vBRkT+EymPV+As9SL5ZKmXLzfqb2O723qed5OpBJMwoSDgG/h6ARHjtaS67EBXtKkO1sZpMVaKGULNWztbqbwgHW5trUQaBM4K/u/4hALAATUFATREHQCJQr28Q1euNZrl6trv9IbkaIX8HZwR/B0Bo7WkpuwT5IECeEFxAUkARIOrUO503b047jerp7sedzQdhwoBD4KbXP/RuhQDAQzrLttiRR7PihUicIT7C53Krfw/nkuGb/nxQkcC3IgACGAJEp6ftWKzdqbc+f9h8SBhwNnAzAFYoAJncQkQBstkBHVK+CIyDAASctWOteKvdiX/eeR9xNnBTANYBwMKkg8DeX1cUGggIAtqtVjx+0WoPPiYfOgRucv1X1iNrLzMlrhzZgXAsWDgNB7CXK7HBxPdFQGjxABvgiaCUhRoCHSLmAa3WxcX5eau7v/XWBcHsAKyvR1ZfVkoLEQfBKp/iUHEBoxZgBLRjlIBur9cVCDgCZgfAyyxAJcjCgW2SQAlQGWgQyRgQBJz3Rr3efjJ6z+XAbADcj84bACBABnnAD0xj8EcAPtBkDIxdAIUAJWDQHwy+vg+5HJgFgIgEoEIGfTEG2wQP/Tx5INgOYAqYP2KmyKVNClALCBMQBIz6g6udh84EplN4DEC6Mmd5GQ8oWInI2BJhwgXUIKiDgJYgYDjYfxxOuEpgBgCevEx785XkIOPRDX1YXcGOgGwTwQUEAjwG+GSAEtC/3Iq6GJglAuYMgAmCJAAZgSpBnTPqFQEDoIzGAGpBWgh0z2khMByOvr69lwg5AgIBCAkHOPEWrYomxQfQP2DSbIBJ5IBOgIyB0f77sCNgNgDS8x7XXn+PuwE3AUgnICsJqCkmYBYC/d9JR8D0ABTSCxAQMKV6AeQzO5ycEmgEnLFCgBIwGg6vtkKOgLsFwITL2BDIGHGAgpCMAAJOxx5AC4Hh1oqbDEwJQD69cFmcwDNNABTABCaDoNpUJwNxTgCJgZ31RCLkCJgOgJP5DjMP7G5QQS8JBMAEMCGACagEsBTo968GHyIhR8AUAFSOT25XaW2P8DVTdWAUBIgC5AAQQFOIVoIxRkCPEHDZ3Yu6QmDBANhVgBsYAEg/MCoCVIPIgZxiAigEpAfEeB1ACWg7AqYBwDsunJxoD2UX78ULhMP8Hd/iGzhfXHxrKPAy0bABeEDJtytQo5oggAIgU2B42dh74AgIBiBVWIT0mLDFQVoPAzSIDAbQE+D3B2U/IN5lbeGrYfnjQ0fAnQDAqBMmCk+tHtDCIGMDQCsF4QGtcUfoclB0BAQBsPo8lfdVIR+kwpSfEADyCg0KEAHzxIqHIEA5iJ4AhQClYKczcXuYhECsuP0o/MwREADA/BUQCBYvgA1I+caAJKBhEHDZb5S33zoClghAgW0CEPCdHAABBYCSMR+UMYAUEATQEIg1yp+/OAKuBeAof3xz5ac5h51kt4QT0GDLATCAFNBbApMp0BIEDIfNuiMgGIB5K09kEgD5x4G4fSAI8ER/UK8GJQCcANkPEIUgsYDyRm33lSNgOQDAJnyiQQGg4BMFRltAiwEhWEATFiAJGA5rtXpt970j4BoAUsdSKSKyPfYRPY4dCPvmoZTcpCQF7MH9gM8MJjCQLUPCAdkUcNfAhgAAwDIRVgeAgMHosl1s1pu7m44AKwCHqflKUGWiYkaCZX4IBtAXAgJFLk6ANhkkFtAvlpuNatwRsDwA4Cp2AHwnBzoAcAG5klwFgBIgJ4PizuBgcNXJUgJijoAlAWBPFbUmsF9/dIgNC9CXjCIEYAG9bLFcazRiSUfAEgAAA+Q5RgFI5PMgYcwAeXIWzHoQFpDRUwCFICfgrC0IaHIC2smQI2AWAI5SU+qIjBtIdQMyjPmhhoCU7AkoJoCOEBpCnIBhO0c+a5JgoAS4JSK+AByZAweDBlXwOaZ8E8GYF6T1UsAOADyALhOU3YD+IJflBNS3VhwBd8cBQAAACLAAvS3o2w/S5oLng2GtRAmoNeoNR4DNAZR/r4oDHOIYXnBcXPxD9UPttOsJSKEe0OcEZASGAJYKlkUdiI5grNUiFnCWyQoPaLiloiYAP4/mLcZGsMzJgcyBNDDQZwO4MYA6kKUAWyvOQmDQJWcJD6g6AhYKAHQYVBgcpybbxqgHaAqw56QN+LaF0QxAP4iFwCibkQRsND9EEm6JSDAAy7GAlFkNyOmgRAAA+FhAGRYgQoB2A7qjqpcDAW6p6DIAmGpqYLaIpAWgFgQB1gwQZQBmAoN2OiNToLrRdEtFVQB+HY51xJ9HZHAR65aHsCfe4Rg+wR/Bviw+YmIvKYUKf2n3ENEfRAhgpVgJKQACsEKM1YHx3gU5uQQP+OgIUAGYo4CWxRow7F6AO4XoB/jVAT7rgzo0BC56JU8hwC0VXTAAwg58Lr+lnaB0B7BmSK4UYfJbIzQZAg3ZDWjFB+W06gHbjxwBiwEABmBxAUtFgBiYTAGlDGC/wkoFoJhVLUDWgb1qwaMElMYEuKWiCwIAsmcAHMDMAAAAC+D/h6jiKRFAZVQB0gLOT088T/OA/36h4MIBCHYAgwBkgOoB44ZgRSFAbwgTcQv4Q97Z6zgNRFFYAiRKFLEVPACioaBD4g0sj1NYq0iRokhRtBabQJtoo9iRUCh4CDq2pKSi4gEo6Hga5tdnfuMJxc5i30ASktiLmI9zZ+49nhxHZWkTMHiraAtAViSIS4uIsXos9KqAREGWBPXugD0PFBDIkrCRBMQ0cKIIuFarwfdvBm4VVQA8YwDkxo2/wO87bojgu3gWyAtubnDXhaZjxF0MwiCCLKAtBev9cXoFDVAEDNwqqgGAwJiFB8477OF3gVMgvEnBygbwDJoSEADAloD6OFuyY0wCtsO2iuoA5H4JyGMlIPxuFEhBAYAE0PAQsLZngmgJ6BJwqL+s5lXlZIHNoAkIKgAkoDMw1OF3uxnoXBiq2rAnB6x9EoCrxlU58HgzFseZq8HNkM3CGgB+CYi68Tj5LrJAfAZwJcCnAGV0Djh82Y7ZoZwbXQOai+FaRYMKAN2OlYCOd/nd+bMAPYQE2AS4CgAJMPeN2G/mbDFZugTsB2sUBABsiPhQ5aQgRU74n9pX+HP2RP0m/AVxJw/Fh+QdzoPzdaQBjgF7LGT7sDAaxcslZgKV1RhUbaEFHVjLGCAJGO3o0dAALQvs6lcDJUAD4E6CYxGtLKImoMsAWkMgoHT2EUESMEzi9WFJVcSbBXa7gRoF7xoASzFw84TtI5IA6P1hCwBFgOMOEwAc9hQAg4CpImCza14/HKJN7M4BKBQB5zQO4FCGAtDwA6CXA62FwL4auwSwDzICNoM0CiZQAPnfv1sBQAAUABLQCQAIAAAlZ4gfCwIW7zgBLzdDNAomAIAzECcB5pqQ3cMvGGwJTAGAPQkYTdic0p0JtgQMzyh45wAI9c+7JgEgABoAApZzNwes7VkgWkKtPXS0FosKTxZYMQK2w7OKJpkEEvo7NrRJAEfAngYGZoHedUAzmkoAbAIWfB7QvBzerqIAgI4KISSnwe7YM/mL5AQv8j/JFxDEfUa019TR2mGmBpATKiBKAoWSANjG2cYiFQ1IAAqCXgI2GwaAgIlLiI+AoRkFNQDuKnLFlhsxZUK7NQQCOASBaYCQgPqaut9PEbChBAzLKJgAAJDgBgn3Gh0AVGfAAgAEmMYQDsCCXHYSMKxdRVMoAFKKp0oQXRQYAwDPtULoCaEYJAAo5CnmQQIGZRVNAoB89IcjAUECYgHALOAwYz2vTg0YklEwVQrISbBIlHdpABTAIWDtmwTAG8YA8BMw0QnYDMgomAaAnN5IrADknTnAd72o5gwyAVBnOk3AYIyCSQBg2T+kAeE2QTgHVNhWGrsJAwBsIbvjAIQJuFYENIOxiiYAABCEekWnZwEAQLlEjYKwDQByAACg0aEBzVCMgvdsGRi3EnDXAZVWEbYAoBEAgFeVQgTsPg6DgHQA5KGJgOsudABAMcDTEnDKwcgBzSzD2QwCqpaAmSTgcByEUTAhAOwusleQB3LAWCqAJMBIAT4JaBYZr0BHZYHDlyHsKQkAKAEMghAImfH4T7hk9pGBqaBtGCKuTcxQgCVM4tbOUTMWJgDy/GECpu1MsB6CVRQAiOHJMEyZO9h4EaxwcnCgeJLJD6hX1Qfw4MkGshVltItoCHOpcY25aAupwVvaXcEpZ6AFADvHba4zSZhHAwQCfAWpCBj13yioAZBpw6f+lOFODSJ/g6hP4xPidfUWjiWZOkw8B1sIOfCKBTlGyn3sFIc4ANAARsCVlgRY6P2AWbsO2EwzKTmuBnARmJgEjOpXfTcKKgCeZAiSRcS/fx44sQHvLBMW8jGwGlA9IZjE10wCnHIwAFB8uQSUtgbs6kPfjYIAIEVEl4pRItQJQEXYLAZgGmBdJSQACGsAO94kYLR7/ajXBCQF4LxeAS4zhQToAJhJwNsQ2K7ZzwxpwNJPQL+NgokBCFPQoQAFAAABavwnE8sZpBRgO+E/DhoQJuC6JaDpNQFpAQiPP1YDCFxfCgkAABUNZ8MAY/tQAUBIA+ZhAvpsFEwFABYQWXQOkAqAFKCPHAgQgUmAlIB3DIAya1egIQ2oPAT02CiYCgBgECoTdl1PgBzACbAtwk45UAIA5KAB3QT01yiYGoDwFMA3DSDYaQISMKehJMACwN4w5H2V0YjQgNIl4EE/CUgOABCIWgk6/hBIgD0LcAFYvb/KsmgNWBsE9NUomA4ATANCi4BTrUIAoAgAAI4EAIA5qDt3HtDTPSWTAhC/EkT4OoO+HDARG8iapYCbsaU77logSMCun0bBB8lTwMneYsAyljsAzB0A1gBgoQMQpwGlh4BeGgUfJFeAyPFHoB6IHEDDXgdMLAAYATdFpsW5a4FDHwl4kF4BkAKiEcg9SQCVADjEre+RAABhDXAvGQEB9df+2cTuAQBnSgAUwJ0GOgBMTQA+5Bkish7QcwLSA4BiUPz1g2Y5GPNASwLMvUMBAKJTAywCRp/6ZhRM3A4W9+chgA0sHQlov2TWBADTQFgXghqADpOPgP3HnhkF74UCkOzMtSAxe4KXAMAxCBsAvCOBKlQcATeMgGO/jIL3AQD4EKMJQGvYmQWUVg6YgoDVLEPEEeDWBPcXvTIK6qbQpOE2gGJmgkoCMGIgwM0Bq0WwEp3HEtCM9vs+GQUBAEkUOUq/JHqvQbMejOuEPC1BKMBsdZ15ApiFsoBDQI+MghoAebIg2tA6gYHxSIBxpYgnCZgtwdU08wayQAcBM0rAdje6GPXHKCgAePz0WZYnDG7+t4O/YncBveUgSIDvMiFIwGqS+SNCA6YtAZumvqh7YxO7JwAQNPlC31eDD1jmEBCgOgKuL6QFgPiHH6f0EVCZFaFtnwhQADwnxf8RHAKrL4hNQ9wdQ3Rr4KrUxjwsBuy8cvw9WUCsBSgB/TAKtgDQdJouvD+bjoJn8JEbIBlWErgqjZYQcsCqMhSAZf3L8bKU3yg8Yx+aricV25KyyLMsZxjMOVLm5uKCgH4YBQHA5ThdXOLRCM6BGTCFQbNBwJKPV8gatprzYS/m5XrByzr1/uLL8eOnr1+/ff58e3v78+d3Hj9vP3891s12Na2W46Kgp237AlMKCiOgoQT0wigoAXjxvGD/3sluJ4NTABZaGdAuGsUswE0CmAW8m1zRkb+hSbzZHQ6Huq5HdE1HIfhypBi0HFAM/vz6wePX98/H3c11uRyPr0qhJpwABs9F3QejYAvA5Xh+T2IpH+lfSKdABHKB/CXrgS4BrjeMt4PEThHqW+V3jALGAFOCj1QLGASUAoaB5OA3jR+3x+bdpFpWE3oioQGcgLf/v1HwL3vn9jJTFIbxGGdXNDlEKTkkh3IocsgFScqpmdiamtROMxnMrWkcyyku+AvMHZkLLuVCyJWaHKJE+RDCf+Fda717nv3utfaMzDDbzH4cvtworZ/ned611nzLADBl6bx9RwauUkn9RuI/MwoSAkYAy89CDzwCAEAAPiMUek4UDMwIfOCCcYJ7gMBQ8OYNUdCoFbz8cdME64aA//6iYACAd7g0OJUptekXSf2BvyoZDkjdEQgcAM9BOO6GtT8iVLcZ0FmQJQguGQgCCgwDGgKi4GmjWvAoR4IU2Py/XxQMAFhyJJ80BSAYBkgSASy/k4AyAPBgAZIATgJCgBjQNmAaQUNDACswaRBA8PDWuWKBSqROgRn/+zWxNgDl/CDl8ROQef1DfwUFcILY0QA9UJFSAgFGrqekqoyAsYFTphXOICkI7DzgSsBGcO3UUf+oJuDM7f+bgPHjFQBTly7JH0+EzGd76SuLKaAV7YbAARDg+C7yCAEQoBhAHyQpBAiCqBPcCo8H8IHa0WpNEXDt/74mRgTMnTCFAPASIcbAiNdffbEQAAFdQwAAcA3Ac2KyCpgkICENLpECIzAMwAfeZ0/UaT8gm2AC5szupJlKixdP2rJl+rRZfjF58kmVgnfkSJltwCRBdwJwLAiuAgtADCAHiADuAvCBM8yAHQZg4PW9U7Xz2ca9JBKweO2O7Tvn/7auJ1Vfnv349PxdWXdUdoGuBDAATgKKnAKCgBoToKQZgA1kzzTAgPABg8DtGafONG4l7qLg2u3zmzdvNn9fN5KrK6/Grn//efwIXAAE2ABYnxMBAEyAEgiowwOYAUSBtAGzUwQGgjrw9MyMxuVkXRRcu7N58+LwqNm8Ojb27LlX8hgBMgEnAQeYABwM258WlgRUQQAQUIomAf0IMcBzAdvA66fZ7AW6JpYUArZs5+W/OhS6eFUz0Hr14+MRTUBZEiBvEsSOAvAAIAAPwECoxAjwcQGPBVmCADsEzECAwO1GIzEErJ1/U6/+jVbrylCo1bqhGRhrPi97bAIgIKp98TWgYA5zLBOok9gFhA9wIWQjMBQQB2I2pDagEKCpMCkXBXc0zepfOX06lzs9BFL/iiuKgebVVy/z3QmABRACkoDYGGAEBATtKAAEQR7AB7QNGATuNxJxUXDHTb38p4di7aHcaY3Aq8+eJECEgD0L8reRxiaDfEoAVVDYAHwAY4HYI0IWKBtgBN48vJyAa2J6/Vv8fz83JGIfaN0gAuABggBxqzRMQHQUwBUxeICbAR4NTwKCMAXZsA2YLvD69bWBE7C2Scs/NAsvpRAgAt6WC4SAaYIIgd0gAB7g3g6AB8AEsDVMBCALrErQLobSBu4FCNwf8EXBLfOHef0VATQSfMwfVzvEIAAW0MkDcDlAFgEZBMwAq4Y8AAXcDNkG+B4JI/D6/aaBXhTcfvNqKzfUal0c+0r3NpkACgFYgCTggCBAFIECYkAiUAUDoIAwYMlSIGzAIKBM4MWmFQMgAAEw5OuvCHj1PF/g46GIBYQRCN0Qw7EAYgAmYCUBICBFIBC7BGBAI8BVYJAE7GzeGGL/5xS40Xrmq+NCEQJm+UmuWYAUQwAQAAPoA0wBOIhAwDbAjTDIgRfvB0bA2hFYfyLg6hhZgCKg3A4BdgCtAABBgLsKUgzoIEAhtCiAG9hWIGygYRC4TTlwfwAEcAMY+gBQao19oLXzmAAFgLAAx6aweGCWhcflQAAQgMBAaEJAJeA2MIMRMCbwdNPUcQPYEVo8fxQMQI0C3+oFUwRtC5CfF+tOABAABEWm4GgcBWBA3idkE6BTok2TM/+egLUXr+zPjYJaY8+9ChHAPRDbgSz7pjgI0IrsC0oEungBIMB1wrYN6CqgTOD2pgn//mRoR3MkDIAAePLyuE8eYFmA/R2EJAK4Ls5iAuACNgPSC6oseXqEQkg5oEyACBjA2eD2G7nR0JU7X4s+WQAGAZQAknUuwDlQcpoAkgCNUIwGkMMKhA0YBLgJ3P73N0R2jkQFJJ1+/OWYTxaAGrgPJcBOATQBBwLHtQqBKiTfdoMYCIAAPmemtgX0nsD7aeNX/tNRYM6uEakABMC3qh+yAAbA/d1DXAgwAbYNIBBsBiAnA5wE540JUAzc2/yPh8HZC3K5/SOh04/vVotFbQFEgCwBgaz7AbgnJh6ZDCQZ0AoQAATurQJGAC6gTIBi4MKmiXMy/zAEZo4SAPUiWkCoBECOIgAT4F0h2QdJYQQKgCCuHIIBIKC6AJlAVk0Dlzp+P8EUgF4AOGEB4M4ATgEgIF8YkwgoCLxCwEEFZuDDDFxGYCFAZVDFwOV7yzvUgBSAngCg7RqugaWSswWKJ8eZAPnSLBhAELAKwgziIQACCALKAWMCjcuNzVMz48alAPQfgEcEAFsAlwDMgZB8Yk6aAB8PkOw2wCCIWljBmIgjxBAE0Q8aqm2hxoWz6+bOjqsBKQC9AFA7dkzVQACADIAUD24TQBBEowAcRGsBM1CRDBiJLmDmARoH1OnA8tjdgBSAP1ZOA8AZgBIAB5AQuJqAOR+AC8jBEGZgGgEwkGkgGeAggAnQd6CasXpqJpMC0H8ATlaPcQbIFtjhseEDSiEAgokAMwEQgLgQRJzAr1ibBPiUSbsMkglkz63JxIRACkBvAFQJAD8A4HCcA+wRl4SMmAF2AbkxYHPASYBmWOHtQjsLjh2VJqC2BGZcWDpu5d8NAQAwIuvPAHAG5PMEAKYAVwIgBuQTM3xbCDZAP2wKUAcYgQADX2SBCAL+sKnqgrX1E2ZnUgD6DcA5A0BFXwzSpwGOKQBHgyCAFTYBEhNA6ugEJA8QVFjCBczNUn1SSATo04Hl41a6CEgB6AmAet04AEqACwDsCaIIsORMiJlAQuA5GAjtFKEOhKsAJkLlAbXVkxUAFgEpAH0AoGLGAN4IiHttgJdfICCembAYEC4ACoCAYy5QAOATxyBgWW2RsoAUgH4DoDOAHYAjAB3AIgAuAABkHyShE1qtMAoB+kClIGxAToTUBBbW3RaQAvDnevzoFAEQjAFogarzxyKAOmgHgYsACwEFgTw6QhQELuC3mwApIODE37UAALB//8GRkALgRN0eA5ABtjgEWBEAMBRgMMRYIH0AEmcGvEcoTYAHwqrTAlIAegPgBMYAAIDXhyzBAQQF6jNk7SQInKCEsSAfooBYkzYgs4AJAAImBogAYwEpAP0FoO4AYG8sAegAUQT2hcU+EK2EgEC6gNUHnSZw4ujqibYFpAD0CgDmwLADdHh6Dg4gEYAJiLmgRD9dDHjhueC4J9oATEB8G7qTyzNEwF8HYETWnwB40I4AC4COBMhvJiLOCSUC7dlQbg4AgrBEF5AIcA746+daFpAC0GsHqB7DRoB0gDgEsPRScAAQ4NggKjEEaASOsTAUA8W2CRzbunEunQqmAPQNgPMKgPBOEACg5Y97bpg7gA2C7AKYDNEGAmEssI6OnU2AEfBXZVamAPTTAWq6AxR9vhEAAJQ6TAPxj+M5GSDhc2UwAsjZByu+YIAIqGyjSVASkALQSwc4X1Md4KhfcQHQuQfghxAOCmMIcPuAFx4LwghEtgbrVANTAPoKQL1K9wJ1CZQAdEOggwWwJAG4OyIZCGTtETsJ8DZkIjUwBaB3AIo+IoAJwPLHCxYQYwJuBGwXKAOBfBcEClunTPhLGQAADh48NBI6CABwGmQBoNqgQ1h4iwA8YCoYQA5IBsITgRgJUAfDCFAGpAD0D4ATBoCKBQDUzQKAAIQUCG0Rh7qAhQDkhRGwZ8LyhrmLhQWkAPQNgLwFQHcESEDAQcBevGSrDwkYANhA5y4AAgIX8LZOmZsC0HcA/HgAEAG23A4ABNAF8NlieV4IBNwm4EkTIKkMSDIA+zsoSX8nOkDHCOi2H8AO4N4cDMUAEEAbjCBQcpqA50kXKJY2ZEQGJA2AOx30h6u1/04HHeqqHjoAq+PRkFl/tw64EYCYAfaAX+ydSajTQBjHUZ8bXgRBUE/igqDgVTyJHocmT7TVYsQSU2sRLyoWCh4FD4IXBQ8iLhRcqJSmBQWpFsQFRFRww31DvXgRt5uTpf6TZmaaZqmJ+m9eUh5JfDK/fvN9/5lJS2x70J0OFqkXNCe5AKy9wNcVEDBc+18R3HRtSADssQD4AB4ABheE8IX75cgEcn0EoCo0IUBRyIDAmQ3unL1yTnIBaLQ+kUKOI/ljvRHglvWPco6jAvnU8nNLMQCu0cDxAADwIwAyAdlGgL5c5qDlC7DnkzOWFlEENi6kfcCECTECECYAdA/VCFdPugFuvaH7hHBVO9RdGx0AJQEA4lwQL24yaBLAdIZcVSFnUQlqgq0yLQQdISBZAOQbzbskQ9jKkLuXG0Pf8LLwhs2hbygGQNAF+LCFxZaAudkvJwHCyeS2P4g5IzvG10ybk1wA8nr3GZEIUxLp7PebBiAB2N/h3+9ZV88HFADAjCB2EghLUCBZ4tjCNgKoBaECoyRkLixy5wIbZ88aixWA+aEAaLRuZQj3E3vHbwhAALhD+Pe7FSADEOcAOWskiPAk0Y0pMwxgVREnJ2AtJ8DUIXcuCPX1AxsXxtIHAIB8XgmhRvMRv8nkt611yhBaJ8Tp0eWGEkJ5OwIAgGKnU6oVaoXK8MJUwUqNq1KpU3Ko45D1jbZFyxFwRgHziGnENAbIKxINwIbqgftE4rXZy/pQbdaov+TRJJH7B7QNSgjlz/YDsP7bA6qTw+vBt4pkWwKVr59v3DjvR0/d+vx1vWUQmwiUMFK43T1OtCmzamqSAVAal58TiRtBn59pRHYrBIBA0i0A8IyQwvoHP95QnR5aPx5UJDsG1D4fCajPHbiDSAbMzZIdA4qrl40lGQDabNf5H9snZ/3fPq9cFQST6wHanx8BNpoR4MGbg3upDg6r0ycNAEwEajeO7AqkI0879iJzqIdAybWybMfyMWNAKLEA6N33NX7m/qrpu90azVd8kmrvu2uVAOIBsN4CYK8tCoJ/2QBQ0S4gBADjRTcBePAM3QOB7c4sMIEAKNQMEJSCFx777Lk3PBaBdBcg+ZcYgAIFAM0fCICMVDkfBIAjFgCYRQ5ZyYCTAGnFpHgBUMIKZgCrFPTbco3Ln0hGYAEoQSUGAATEDwCa3waAyg2AuarIbRFtJKsmLxpLNABr66jeWNX7Wp83kQQ3qTcSCkCYLqDfHDaORc9Igbx6+pRkRwCRGSD5LQX11ssIwgjkE4DTaNdRAnDEAmAcq0qLJgB08xBQWLxyzHCDEwxAXtt3n999fxDl7+gAPhCJbwGoQSwAcRXgjgAHD9L9qCMAVcGioGjPH+0xAARoj7Bz+RiSgOgBUMIIFbyg+a5WB0KWr64DQpFZAP6TQFrb/YEuwCYAM8cgJwIlVxmQxAggNAMyPkrBMkrAKC0A/zkAlXGg2+gBsAQEXAQYOykeMxgRoBxeG2AGMGv4DYMuPzTg8vASAGA0v0nAHwAAAgCOEWNjR1aMLRpLOABlgRmQIZ+aDfHVwhLwLq4OI0UYAWwGDo6uCzjfB0B/R4C5Q2TV1OQDIDIDiHSrrosu1uvvCOFbAHnxXxgeAGbzxw9Abtyj3wQAAwrA6mlTjOGARANQ1mEGMErBlu79V8LDI9aQANhpwOgAKAEAZhjomUTb5SXLJvfGg5ILQBlmALsUFF35WmgBlMPJPwBUowRAHhcRgOUE44tnjU2JEYByNMqrqOS8peA6VeFemL39kHvhwwNqfgQAIAaYx5EAUEMEYCDgDAUbl6cBgDLMAFYpeJH1QUboEFgA5VASA2C0+NCKCgBEAC8CzkmE49uXpgKAMswARi13qMX5JG9oHaoQvgUQMgEQA/CDTgcJNCEEAASfEEIByI3zZTNAd8XcQloHpgCAPMwA/6WgGJv3LmyiBuDbg5MPTgadEiZZANApYX06b/wM1OevNdleRsYRlhiTFXECUK5GJpgBDL07o7Ou0S9/5JeAdy82qlHJA0Cx0DG+N6YSRJnf4p5Soy9zT7dCoeaVPVeYbgNEAZhjADAhJgAiJKDdQj3nqedbLADK7e4T/iXddtg/TghATpYxKXwoSVKmFwOgAWuLWE+Zcz9WIIeDsycomhFgzqQUACA0A143vR9nDUGDbQFUQ0oIgP2FETYDkmRt9MeHMtZeKFkgo91zCAKy3fo4AIMinRISKwBadGpcREbvreiySv/5yuNLKAE9FsDFhhadyo+9ALBXhkiAgSc8SEAoibuMEI8XgtwRAG8KhhdsOUGJB0DJrr3PbdBHaFAAc0cAzBZFC61gAIAAMQJ+hEVEA9cO0Zfd8lZuYFNB1kxLCwCazjUDJFKhpWDf2fW3MuG6h01d+2MAoO3DI4AIwAfAPDrDP6gYLxiDAVNSAoCmN1HVear6pt6Py0v+yZdx8kgBwKJAEh4B5H4iDBxBwEwIrbe/f0dWT48TAC1S5VswAzx6h0ZFuOBbAFqUqvoAALIBIITuwqYCspkLQOw44H7gIN0gsnrG5NQAQLv1u8K6DmeWq4IS8FV0GWCwCNDrBkgk/YAsTget5rfeekVmL4sPgAVRAyA0A14bzQpUXnFPfNKlNeIoIoDMAUDyK9MK8EGAf3kBWBwnAFrUghnAyOxvb/7drkrrAv9pELfOoLOICoBrURpBPSFiGBKBgt5iEBJeAFamCQBVhxnAKAV19fdpd7in3TFOi1JMADqGF8w1g3PYe4R2rfgVNYbdhrDMFwuAsdQAoFWzG7hzvCtv63Zu1z6DQMGwAKpa3AAU1h86dzyQzn2pEMkUqXw/HFDfa35jgEzmzYoVADVq6U1k94zqTjXVrr8kEt8CUKMWA4D99+6dCKJ75wDA4Z9HA+nnYQAgJIC+l9IGgAozgFkK+oQkdgCO3zv14lQAnTjuAODosUA6KgYADhElQJo3M2UAKDADGGsF2/QMDaOArMkjihqxmACcu/diTwD1A7A7gAYBAH9IdgIwMSUAqLrADHje1I0A8EFgAZgB4K8HQPJTEcrxA6DGIK1dhxngKfHbNCdDAGBYAHH8TVrSAChIMIjFBJBYAVBjEXJ8lhuk6xdf8y2Ay23V0N8OQE3qtT0gYEtKIQCqfhNmgGe5sKqeRaHIsABM/e0AVCTZMVIoQoAgCUwPANUtMAO8q/0uIwB4LIDNVdXU3w9AxhAiAMYKEBZcAExIEwCo81iGcJcLx4ffAeAfAaBnCiMlBAeZNAPANwMy5PVHXgdwHQnAvwNARjbTAesh1C4MzN9myNx4AcjGo2rrQo1I7BCAANA/aahezcYjNcEAOL+o2jggMUgzAFn95l1eoOf9/tVNPRuT1G6SAZBdb+0IYGaJKQZA5ZsBfAtAzdpKOgDGfyIaAECA7KLAOKQagCzMAJ+iFgCuTjoAJDwAPMm9Q7ojQDbLNQM4FoCrA0g4ANF0AWKlHgB1m8JM93gWwGMN1yYfAPIfgIFqN5kFH9cCyEYvABDhcHCOmAQEHw5OEgDZONW+6DUDuKsGYkkAAEC0E0KIoTATQirkXwCgWmeYASO1AABAtFPCCAk5JcwAQPrrAfjF3rn8vhBFcdx/IKxEQmxsrCTWliIyv1KNiveoMB7xXIhHSUQXzKKEBUHsSCq5FcrImBGvqJSqiIVHQhDvVzxXbNyZaXvQnkunc5t5nG9+9fvJb2Za7mfu955zz72DJAMkpgBwANCi0N4Fn3uTb7XKhGMOQHZrRzIASQFIGowAAMGVhUMyg7/8qrmJgFcxHmMAjAvPU/+TApA0AgAAzl5DF4b4aj9YPsR/7E0p9wuUguUlgwcgK1kqJAPEKQA1K0cAAL40rH8BBS4TPohADWF6tAEQJgNggvjr3z1RpADwWh1A8KFU2xLcRofmlwzAhKxsqU4y4B96bBpqVrLkATAdW1LoF4WmH7T+iD0AvEww0gD80fztb/0KrEEyAKpkLfm6G/YBQncDKG9V5Uo+ACAAIABFHgCjBg8DEKUBVZmSBABOgPsiALgMEwxAZAI1yQRkAwwD8SIX2GiOegBPS3J/VgfjjxgtL1XlCQBAEkGDV0IAMGqwC4DYBEyZXUBXAFZ4qeD0ptm9Smlrk28lAwCj8uK/Z4NrhqZKEwAAk0E/Tu/xpdPf2wRs+nb0/dFOvXde8DP8DQ7gE0r/DcBwmQCoMpVd2PlIeDwZdHaJikgGAOlZp82iH5XM0wDA0QM+dfS/AVCiC4BmNLqlgbEd5SV2AV0B2FO0rl69qvcqq7QHAHh/YL0vHXjPp4P/2fRNAEZHFADNqNzoZRz9xpRGAALA1UKhMNSr9OJvABz1CwD0AHjTexNO0bWArIYsAsdMYPvX4EckAMDNUAKgKJ0NDwBwybcATZJwA8DnBA1NlsIGALeA35ofMgjuVyup7CqyAHADSCm96YUpiYDwAeD0AK0ZBJhHgkyyMjAANElS7bMPkSWA168jv7h7OZfVPCUBgJbJN+96pd0ReGhEHACj8VRJISH/DWx18P2GrC5ADSEAMJXcvPXb3z1FGgB24fkMZAR4/OQJmB8cjAmEFgBHnc8riAEAqs2LQVPYJgD4/jEPr2ieCSQHgOlKHAHgBoA/NqBSgkLRwZhAaAHoPhbir4gDwC7s3YRuFXmBscoTfJewylYtcIUSALSqfKAAaFJkuw+DwWyeMfMFvkLgrITINKQACDRAABYGL6NxB98J2GQLFzITf7TQ06qxMHhp4QNgemwBsIsv0X9e6nnF5kdgy0X4aTOeVxi/SPwBiG0PoHGLR+/vtw3D6yPwx0U8Ktn8QxEAkQXAaDwTPA2slHWOyZZOHse3i3YgCR6AsE0HhwKAccEDYONty6O8lsEbVZ4oRJeKF20JAIStICSuALgDPHQbmLLqHaV+nYk/NvjJBZkAyC8JwwUlYbEFwGi8RmN85U7DEBsFHBc8AOEqClViCkC2fOkiau53r1jtt9Ossw9FQ4WA+wAOQLjKwkMDwMJgxWqIAXiVv+z3I9EdpLgJmEwqALAwJAIMRAkAoQE8+tPaRQlh5VnAJqCVuwKQSjwAwbZ/tnxLsBL0xZ+3tV25gR3KTeAkjxcDEQEwOAByrIGuBOVJYM8AQP86mgAYBAC5AMVqj/H7n6d47T8Px1PG7oChwXLBySIA5AOglk+hBsBrfjsblFXv4yPGi+dLdq5fEQCDBIBhCX7P1KE9gZjzF3Fi3taaxBAA0QDAiesQuUlg1uWU6h0MGQ7G4xoLEAAKAyUDYA2tvIs7+r1TZavLOfqVf5wjEQCn+UPf+BECgFUxA3CTu1XW9SQ0b+DNHTOJAMxasXwZzwWne9ZvqeDZaZ+aHTsAWA0r8/IKvazu72RfEG0l+6bGZAGweNanz4d86fOn2e32//TlsC99+TQ7ZgBo8x5gnblr59i9bJsibu7O/WpJAiA96/PPI77083NaaSr95aBPfUnHC4B5eETnJoEraESHTx64sSM4h0/hABw6cuzVq2O968ghAODwwQ2+dPBwzABgpnArgBcmCoBdeT5DdGaNyQPg1UYfIgC6SNPRud1mWhc/Vzx4vHsioxEAEgHgvXffEhuAlwTGz7bwErJm/oC/Qd+yyqcJgK4AzAtAtulVeeNGLjqbueWBqG6Y9jwCINQA8P71oSKa2S1awrb5uoBPIQgiSH0hARBqAAS3sLfUh/3rfK88EDcBAiDMALjjePwOvnembPnpQQCB56ZNAIQXgJzFk3kpPJnz7N83sFceiGcRylaOAAgtAHxGT9R6D8t67j9GkU/+YSIEQFgBsCuwFQCSBP6fMOKGYK08xJH+pRMAcgDgmbwnIgN48n9Nx6pvRV3AowtWjgAIJQBgAH1F8RaUB2KzyQRAGAHgdZ3HRSHcdTAAocS5RL5e9GXFJgDCCAAyekOTwHhCGC8o9ZYKEQDhAyADKRwfSWDES/BoMjPPhwAAmg4OHACriMzjoElgXLmrZ+8GcS0cACoI6QLAWH4b+xU3ACjmwOL3zH9fnzW8VSX4nLLdx4flAFBJWFcAMv7Fqq+Fvfa9BeVcDzzZlUf/NIF+AKCi0IABsIrnLwbZYragrNRdKnSpaPUDAJWFBwwAa+AG0EwC64Fd0Isp7X4AoIUhwQLAqo8V/D+P/+ZNr+1ledOK+BUfV1kfANDSsKAAAAMQyI3ce2bqtiLSxfNFiwAIBwA8BXRbWTz7b21qiv/Ak8C9Q3Xy3oxNLXVcfLFym0NFAIQCgMyQfmlPpy61da2kZ3qWXjp9CdTl8vpQxp/0EgEQ9CCwWCz9rSKopPtrpyKoy+UzGQIgNADoYoXoogSACIBkiAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAiAkWMzQ8nQVQKAACAACAACgAAgAAgAAoAAIAAIAAKAACAAEgnAmjlzCAACgAAgAAiA5AKwnABINAB8XShvfwIgaQDkW1GAC0B6hrM8lABIhAgAAmAbtwACIMEAtMYA851EkDsGIAASBcC2tXkCgADgAKxxAFhMACQSAD4EcABYQQAkGABIBM5IEQBDyZADQD6/btWqRQTAbxo1NpMQAvTi6R35ZhpgDQHQ1rTkAHBpsweA0/4uALMJgGHDpiQFAMt8viX/51zQ7IjsEicVgKlDCQHA/vh4HeSBnERgZLYJlArApJ2FoSQoY314utoNAlwLoB6gpfFj6kNJ0NX9bIQTBLhRYDsNEI3ZYBkAgKbUE9EF6B+et6eCIAigHsDxgCSYQOHdx6fOEACCgAglAqUAAJq2M/4m8PXdhx87/pgJiFIUKBmASfWJsSeg/u7jnXVr8+AAy6OUB5IDAGhK7Amov/vwfbPXAcAYkHqAliaP2RlvAur7zhV35dsOAEMAAqBtAhPjGwsU6jvffXyWb6UBvSEAAfCHptYnnotrLFDYue/dxxdbWg4wP4IOIBMAIGDizjh2AoW62/6bN/MOgGeB2g5AAHQQsJN3AvV4MVCo13eee3fOaX+nA4AYIGIOIBEA0KRf7Jk/S8NAGMax1QgOhUgHM3RxE9yKo4EORTr5IRwLmRM88qeEZBCF1g+QrY7FJV/Cb+BWdArp1snJ9+5Nc9cuFirNXcnvIHO533PPe0c7UAIpy8CBQO2n4yx/nqN/XgD0n6A6AJvc9j9oBIDRQZBS+1m+WE4d33aszSsgToA6ACLdwQgGAZBuzVhismyS5z/zwOb+ywLgE6AOgEi33xlBc27PRF7yRZ59feo2WfkXC0CtCbCfACBa964/6GzNq6y8vyy/53HgE/TPBwBcAZWbAHsMAHJx/heGoWmn1z3zbfYkBbOSKRDHcRi5xCdeIPp/EP2rNAGEAEhDo9E0tJ45DWMZCAsiIEmStuu6uq4z/aV/eAHQAVAH4H/8Hx0ZxycQgCiUhgjg/j0vYPXP/Q/X/Ss0AeQMQJMG4KadRJWScNqAi4ef6cfjD/e/wj8fAKoVgMwBcHHXq10iIB/tU/14/Ll/+gLgBVAHYPcAtD3Y8qpZ/QSPQgIC9rl+OP7cf1kA90oVgMwBIHTPK10BPfFgPaCfQj6zz9of3/9r/tUrAGkD0DJ1n1SOD4t+GDYF7a/00/ffpn8sgDoAuwVAa5lXji0VDmBR+6z8C/1DwT9eABQrAHkDcHZpOfJgIY949lE/TH+o/9I/HwAqFYDMAfhlvw5SHASCKAwvZyazz2b2OreJCxFBaAQJSqvjAebyqdRLpTtZB3wF+TXkAN/rDtn+CPq/PtZm+jHkxz/3fw/gRQP4PvwuG0XijpZr0fTBr/6jY3/mAcSFK9ibvvDDf8L//9z/PYBXDOAYIlEhRNhLM/hx+z/7O7sAaAfwdTgOgachx4c+/O/Xv1N/5gF0w0zyKLy8wDd98OP4m7+3HwDmARRrt3dzp+jqrvTd2iZ98Nv179SfdwBl0e69gNXCnS8v8HH4M37H/rQD+CyLut01gOfVho/Dn/H79WcewFQTJOxZk+Lj7Is++Bvw+/QnHsB6rgmatNv3qPZJ//n4O/RnHkA/7p6YI8DDPuknfrf+tAP4KH+qM089qtQe+Ekf/D79mQfQVD1Bgp3YYf+gfwK/V3/mAZwqsppGPglf/Z3zEw/gwj4d2wAIw0AUragp0sEADBPZ7th/FEAIGURFd1j/eYPcT5vjeG+Bu1bP6fPvH/zP++sGsMwWq4JIyS7+7/mFA2iThyCzsDrrawfQTUKc5/bgXmF9Avgipy+zvnAAwx6AmwK/KTa+fADCehVj0w1AroBekG4AY8cbAYAAQAAgABAACAAEAAIAAYAAQAAgABAACAAEAAIAAYAAQAAgABAANnbpoASAGAiAGNTA1b/ag37qoCxMoiECIAACIAACIAACxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0DcwADrBNgCPPHtE2CNCbAEeOgGGDPgb88OchsEYjAKS2QmMy60QcoKcgA2SBwEKfc/To1Tkl27qStTve8EUf4ngwQBfOv/B/B8BIzrfYWz+zpGewRYAIMG0K34A50GMAQMIPW3bryYDg4uZuxufYoYQMqlv07TsrzBzbJM07UvOcUL4JRyLqWKtOoDDlolUkvJOZ1CBbCfgHOp8yzyDicyz3Mt52gHYA/ATkAVkVZa/DppRaRuByBkAK8CqsBJfe0fKwA7AVZALtoAXJRadP5t/2BvAI8ArIBHArnAhc2v+4c7AM8CNIGU4Sbp/CH3t+8BmsDWwJDgZND1t/kjfQfYNV8JwJfNH3B/1VgDcNYEnX/TGEJw0ZjI85sGHg6y/u4Yv/Jo+FcBAAAAAAAAAAAAAAAA/OQT3R040atZehsAAAAASUVORK5CYII=';var rn=function(){const mL=bH;var n=this,o=n['_self']['_c'],p=n['_self']['_setupProxy'];return o(mL(0x186),{'staticClass':'excel-wrapper'},[p['showBlockingLoading']?o('div',{'staticClass':'loading'},[o('div',{'staticClass':'loading-card'},[n['_m'](0x0),o(mL(0x186),{'staticClass':'loading-copy'},[o('span',{'staticClass':mL(0x3d1)},[n['_v']('Excel\x20表格')]),o(mL(0x384),[n['_v'](n['_s'](p['sheetLoadingText']))]),o('p',[n['_v']('正在准备工作表、样式和大数据视口,请稍候。')])]),o('span',{'staticClass':'loading-spinner'})])]):p['errorMessage']?o('div',{'staticClass':'error'},[n['_v']('\x20'+n['_s'](p[mL(0x1e5)])+'\x20')]):n['_e'](),o('div',{'staticClass':'table-wrapper'},[p['showStreamingLoading']?o('div',{'staticClass':'sheet-loading'},[o('span',{'staticClass':'sheet-loading-dot'}),o('span',[n['_v']('正在平滑补充可视区数据')]),p['cachedSummary']?o('span',{'staticClass':mL(0x1dd)},[n['_v'](n['_s'](p['cachedSummary']))]):n['_e']()]):n['_e'](),o('div',{'staticClass':'table-host'},[o('div',{'ref':'tableHost','staticClass':'table-target','staticStyle':{'width':'100%','height':'100%'}})])]),o('div',{'staticClass':mL(0x22f)},[o('div',{'staticClass':'btn-group'},n['_l'](p['sheetTabs'],function(r){return o('button',{'key':r['id'],'class':{'active':p['sheetIndex']===r['id']},'staticStyle':{'padding':'0\x2030px'},'on':{'click':function(u){return p['handleSheet'](r['id']);}}},[n['_v']('\x20'+n['_s'](r['name'])+'\x20')]);}),0x0),p['statusSummary']?o('div',{'staticClass':'summary'},[n['_v']('\x20'+n['_s'](p[mL(0x254)])+'\x20')]):n['_e']()])]);},nn=[function(){const mM=bH;var n=this,o=n['_self']['_c'];return n[mM(0x301)]['_setupProxy'],o(mM(0x186),{'staticClass':'loading-brand'},[o('img',{'staticClass':'lg','attrs':{'src':on,'alt':'xlsx'}})]);}],an=m(sn,rn,nn,!0x1,null,'8465aa04',null,null);const gn=an[bH(0x3ec)];export{gn as default};
|
|
1
|
+
const bB=b;(function(o,p){const ba=b,r=o();while(!![]){try{const s=parseInt(ba(0x34b))/0x1+-parseInt(ba(0x469))/0x2+parseInt(ba(0x336))/0x3*(parseInt(ba(0x2a4))/0x4)+-parseInt(ba(0x355))/0x5+-parseInt(ba(0x346))/0x6*(-parseInt(ba(0x3ec))/0x7)+-parseInt(ba(0x21d))/0x8*(parseInt(ba(0x321))/0x9)+-parseInt(ba(0x235))/0xa*(-parseInt(ba(0x290))/0xb);if(s===p)break;else r['push'](r['shift']());}catch(t){r['push'](r['shift']());}}}(a,0x46072));import{ref as c,onUnmounted as d,defineComponent as e,computed as g,watch as h,onMounted as i,onBeforeUnmount as j,nextTick as k}from'vue';import{r as l}from'./worker-ref.js';import{n}from'./index7.js';const ps=o=>{const bd=b,p=c(!0x0),r=o(),u={'emit':(z,C)=>{p['value']=!0x0,r?.['postMessage']({'type':z,'payload':C});}},w={},x=[],y=[];return r?.['addEventListener']('message',z=>{const bb=b,{type:C,payload:D}=z['data'],E=w[C];E?.[bb(0x13f)]&&E['forEach'](F=>F(D)),x[bb(0x446)](F=>F(z));}),r?.[bd(0x30b)]('error',z=>{const be=bd;console[be(0x28a)](z),y['forEach'](C=>C(z));}),d(()=>{r?.['terminate']();}),{'loading':p,'worker':u,'onWorkerMessage':z=>x[bd(0x420)](z),'onWorkerError':z=>y[bd(0x420)](z),'onWorkerEvent':(z,C)=>{const bf=bd;let D=w[z];D||(D=w[z]=[]),D[bf(0x420)](C);},'mapEvents':z=>Array['isArray'](z)?z['reduce']((C,D)=>(C[D]=E=>u['emit'](D,E),C),{}):Object['keys'](z)['reduce']((C,D)=>{const E=z[D];return C[E]=F=>u['emit'](D,F),C;},{})};};(function(){const bg=b;try{if(typeof document<'u'){var o=document['createElement']('style');o['appendChild'](document[bg(0x307)](bg(0x31d))),document['head']['appendChild'](o);}}catch(p){console['error'](bg(0x27e),p);}}());var us=Object['defineProperty'],Gs=(o,p,r)=>p in o?us(o,p,{'enumerable':!0x0,'configurable':!0x0,'writable':!0x0,'value':r}):o[p]=r,m=(o,p,r)=>Gs(o,typeof p!='symbol'?p+'':p,r);class Ls{constructor(o){m(this,'rules'),this['rules']=o;}['validate'](p){const bj=b,r=[],{column:u,row:w,key:x,rowKey:y,colIndex:z,rowIndex:C,value:D,field:E,fieldValue:F}=p;Array[bj(0x32c)](this['rules'])||(this['rules']=[this['rules']]);for(const G of this['rules']){if(G['validator']){const J={'field':E,'fieldValue':F,'value':D,'column':u,'colIndex':z,'rowIndex':C,'row':w,'key':x,'rowKey':y,...G};G['validator'](J,D,K=>{K&&r['push']({...J,'message':K});});}if(!G['required']&&(D==null||D===''))return r;G[bj(0x27f)]&&!G['pattern']['test'](D)&&r['push']({'value':D,'column':u,'row':w,'key':x,'rowKey':y,'colIndex':z,'rowIndex':C,'field':E,'fieldValue':F,'message':G['message']||x+'\x20is\x20pattern\x20validation\x20error'}),G['required']&&(D==null||D==='')&&r['push']({'value':D,'column':u,'row':w,'key':x,'rowKey':y,'colIndex':z,'rowIndex':C,'field':E,'fieldValue':F,'message':G['message']||x+bj(0x1cc)});}return r;}}function Rl(){return'xxxxxxxxxxxxxxxxxx'['replace'](/[x]/g,function(o){const p=Math['random']()*0x10|0x0;return(o==='x'?p:p&0x3|0x8)['toString'](0x10);});}function xt(o,p){let r=0x0,s;return function(...u){const w=new Date()['getTime'](),x=w-r,y=typeof p=='function'?p():p;!r||x>=y?(o['apply'](this,u),r=w):s||(s=setTimeout(()=>{const bk=b;o[bk(0x40c)](this,u),r=new Date()['getTime'](),s=void 0x0;},y-x));};}function zi(o=[]){const bm=b;return o['length']?o[bm(0x3e4)](p=>zi(p[bm(0x331)])+0x1)['sort']((p,r)=>r-p)[0x0]:0x0;}function xs(o=[]){let p=[],r=[],s=[];return o['forEach'](u=>{const bn=b;u['fixed']===bn(0x26d)?p[bn(0x420)](u):u['fixed']==='right'?s[bn(0x420)](u):r[bn(0x420)](u);}),[...p['sort']((u,w)=>(u['sort']??0x0)-(w['sort']??0x0)),...r['sort']((u,w)=>(u['sort']??0x0)-(w['sort']??0x0)),...s['sort']((u,w)=>(u['sort']??0x0)-(w['sort']??0x0))];}function Ci(o=[],p=0x1,r=0x0,s=''){return o['sort']((u,w)=>(u['sort']??0x0)-(w['sort']??0x0))['map'](u=>{const bo=b;if(u['children']){let w=0x0,x=u['fixed'];u[bo(0x331)]['forEach'](z=>{z['fixed']=x;});const y=Ci(u['children'],p-0x1,r+0x1,u['key']);return y&&y['forEach'](z=>{w+=z['colspan']??0x0;}),{...u,'width':u[bo(0x3a0)],'level':r,'rowspan':0x1,'colspan':w,'parentKey':s,'children':y['sort']((z,C)=>(z[bo(0x156)]??0x0)-(C['sort']??0x0))};}return{...u,'level':r,'rowspan':p,'colspan':0x1,'parentKey':s};});}function ui(o=[]){let p=[];return o['forEach'](r=>{const bp=b;r['children']?p=p[bp(0x451)](ui(r['children'])):p[bp(0x420)](r);}),p;}function zl(o){const bq=b;return o['filter'](p=>!p['hide'])['map'](p=>Array['isArray'](p[bq(0x331)])&&p['children']['length']>0x0?{...p,'children':zl(p[bq(0x331)])}:{...p});}const qt=/^(\r\n|\n\r|\r|\n)/,Vs=/^[^\t\r\n]+/,$t=/^\t/;function rs(o){const br=b;let p=[['']];if(o['length']===0x0)return p;let r=0x0,u=0x0,w;for(;o['length']>0x0&&w!==o['length'];)if(w=o['length'],o[br(0x117)]($t))o=o['replace']($t,''),r+=0x1,p[u][r]='';else{if(o['match'](qt))o=o['replace'](qt,''),r=0x0,u+=0x1,p[u]=[''];else{let x='';if(o['startsWith']('\x22')){let y=0x0,z=!0x0;for(;z;){const C=o[br(0x3f9)](0x0,0x1);C==='\x22'&&(y+=0x1),x+=C,o=o[br(0x3f9)](0x1),(o['length']===0x0||o['match'](/^[\t\r\n]/)&&y%0x2===0x0)&&(z=!0x1);}x=x['replace'](/^"/,'')[br(0x2c9)](/"$/,'')['replace'](/["]*/g,D=>new Array(Math[br(0x1e3)](D['length']/0x2))[br(0x45c)]('\x22')['join'](''));}else{const D=o['match'](Vs);x=D?D[0x0]:'',o=o['slice'](x['length']);}p[u][r]=x;}}return Array['isArray'](p)&&p['length']>0x1&&p[p['length']-0x1][br(0x13f)]===0x1&&p[p['length']-0x1][0x0]===''&&(p=p['slice'](0x0,p['length']-0x1)),p;}function Ks(o){const bu=b;let p,r,u,w,x='',y;for(p=0x0,r=o['length'];p<r;p+=0x1){for(w=o[p]['length'],u=0x0;u<w;u+=0x1)u>0x0&&(x+='\x09'),y=o[p][u],typeof y==bu(0x23c)?y[bu(0x42d)]('\x0a')>-0x1?x+='\x22'+y['replace'](/"/g,'\x22\x22')+'\x22':x+=y:y==null?x+='':x+=y;p!==r-0x1&&(x+='\x0a');}return x;}function Cl(o,p,r=[]){let u=0x0;const w=[];return o['forEach']((x,y)=>{if(y===0x0)w['push'](0x1);else{const z=r['reduce']((D,E)=>''+D+(x[E]??''),'')||x[p],C=r['reduce']((D,E)=>''+D+(o[y-0x1][E]??''),'')||o[y-0x1][p];z===C?(w[u]+=0x1,w['push'](0x0)):(w['push'](0x1),u=y);}}),w;}function gl(o,p){let r='',u='';const w={};return p['forEach']((x,y)=>{const bv=b;y===0x0?(r=x[bv(0x407)],u=x['key'],w[x['key']]=0x1):o[x['key']]===o[r]?(w[x['key']]=0x0,w[u]+=0x1):(w[x['key']]=0x1,r=x['key'],u=x['key']);}),w;}function Ts(o,p,r=[]){const {visibleRows:u,rowIndex:w,headIndex:x}=o,y=Cl(u,p,r);return y[w-x]===0x0?{'rowspan':0x0,'colspan':0x0,'relationRowKeys':r,'mergeRow':!0x0}:{'rowspan':y[w-x],'colspan':0x1,'relationRowKeys':r,'mergeRow':!0x0};}function Ms(o,p=[]){const bw=b,{column:r,row:u,visibleLeafColumns:w}=o,x=w[bw(0x176)](y=>p[bw(0x31e)](y['key']));if(p['includes'](r['key'])){const y=gl(u,x);return y[r['key']]===0x0?{'rowspan':0x0,'colspan':0x0,'relationColKeys':p,'mergeCol':!0x0}:{'rowspan':0x1,'colspan':y[r['key']],'relationColKeys':p,'mergeCol':!0x0};}}function Js(o,p=document['documentElement']){const bx=b,r=o['startsWith']('--')?o:'--'+o;return getComputedStyle(p)['getPropertyValue'](r)[bx(0x461)]();}function il(p){const by=b;if(!p)return new Date(0x0);if(typeof p==by(0x33e))return new Date(p);const r=String(p)['trim'](),u=new Date(r);if(!isNaN(u['getTime']()))return u;const w=[/^(\d{4})-(\d{1,2})-(\d{1,2})$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/,/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{4})(\d{2})(\d{2})$/,/^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/];for(const x of w){const y=r[by(0x117)](x);if(y){const z=y['slice'](0x1)['map'](Number);if(x['source']['includes']('YYYY-MM-DD')||x['source']['includes']('YYYY/MM/DD')||x['source']['includes']('YYYY.MM.DD')){const [C,D,E,F=0x0,G=0x0,J=0x0]=z;return new Date(C,D-0x1,E,F,G,J);}else{if(x['source'][by(0x31e)]('DD-MM-YYYY')||x['source'][by(0x31e)]('DD/MM/YYYY')||x[by(0x31c)]['includes']('DD.MM.YYYY')){const [K,L,N,O=0x0,R=0x0,S=0x0]=z;return new Date(N,L-0x1,K,O,R,S);}else{if(x['source'][by(0x31e)]('MM-DD-YYYY')||x['source']['includes']('MM/DD/YYYY')||x['source']['includes']('MM.DD.YYYY')){const [T,V,W,X=0x0,Y=0x0,a0=0x0]=z;return new Date(W,T-0x1,V,X,Y,a0);}else{if(x['source'][by(0x31e)]('YYYYMMDD')){const [a1,a2,a3]=z;return new Date(a1,a2-0x1,a3);}}}}}}return new Date(NaN);}function Ns(o,p){const bz=b,r=il(o),s=il(p);return isNaN(r['getTime']())&&isNaN(s['getTime']())?0x0:isNaN(r['getTime']())?-0x1:isNaN(s['getTime']())?0x1:r[bz(0x1b6)]()-s['getTime']();}class Ul{constructor(o,p,r,u,w,x,y){const bA=b;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,bA(0x3a0),0x0),m(this,'height',0x0),m(this,'fixed'),m(this,'cellType'),this[bA(0x3df)]=o,this['x']=p,this['y']=r,this['width']=u,this['height']=w,this['fixed']=y,this[bA(0x467)]=x;}['isHorizontalVisible'](){if(this['fixed'])return!0x0;const {stageWidth:o,fixedLeftWidth:p,scrollX:r,fixedRightWidth:u}=this['ctx'],w=o;return!(this['x']+this['width']-p-r<=0x0||this['x']-r>=w-u);}[bB(0x160)](){const bC=bB,{stageHeight:o,scrollY:p}=this['ctx'],r=o;return!(this['y']+this[bC(0x3ef)]-p<=0x0||this['y']-p>=r);}['getDrawX'](){const bD=bB;if(this['fixed']==='left')return this['x'];if(this[bD(0x1dc)]==='right'){const {stageWidth:o,config:{SCROLLER_TRACK_SIZE:p}}=this[bD(0x3df)];return o-(this['ctx']['header']['width']-this['x'])-p;}return this['x']-this['ctx']['scrollX'];}['getDrawY'](){return this['cellType']==='header'?this['y']:this['cellType']==='footer'&&this['ctx']['config']['FOOTER_FIXED']?this['y']:this['y']-this['ctx']['scrollY'];}['getLeftFixedX'](){return this['x']-this['ctx']['scrollX'];}['getRightFixedX'](){}}class Vt extends Ul{constructor(p,r,u,w,x,y,z,C,D,E='body',F=!0x0){const bE=bB;super(p,w,x,y,z,E,C['fixed']),m(this,'formatter'),m(this,'formatterFooter'),m(this,'hoverIconName',''),m(this,bE(0x35c),!0x1),m(this,'align'),m(this,'verticalAlign'),m(this,'fixed'),m(this,bE(0x1df)),m(this,'editorType'),m(this,'editorProps'),m(this,'cellType'),m(this,bE(0x3a9)),m(this,'colspan',0x1),m(this,'rowspan',0x1),m(this,'mergeRow',!0x1),m(this,'mergeCol',!0x1),m(this,'relationRowKeys',[]),m(this,'relationColKeys',[]),m(this,'key'),m(this,'column'),m(this,bE(0x466)),m(this,'colIndex'),m(this,'rowKey'),m(this,'row'),m(this,'value'),m(this,'render'),m(this,'renderFooter'),m(this,'style',{}),m(this,'domDataset',{}),m(this,'rules',[]),m(this,'message',''),m(this,'text',''),m(this,'displayText',''),m(this,bE(0x3ca),0x0),m(this,'visibleHeight',0x0),m(this,'isHasChanged',!0x1),m(this,bE(0x15f),0x0),m(this,'drawY',0x0),m(this,'drawCellBgColor',''),m(this,'drawCellSkyBgColor',''),m(this,'drawTextColor',''),m(this,'drawTextFont',''),m(this,'drawTextX',0x0),m(this,bE(0x17b),0x0),m(this,'drawTextWidth',0x0),m(this,'drawTextHeight',0x0),m(this,'drawTreeImageX',0x0),m(this,'drawTreeImageY',0x0),m(this,'drawTreeImageWidth',0x0),m(this,'drawTreeImageHeight',0x0),m(this,'drawTreeImageName',''),m(this,'drawTreeImageSource'),m(this,'drawSelectionImageX',0x0),m(this,'drawSelectionImageY',0x0),m(this,'drawSelectionImageWidth',0x0),m(this,'drawSelectionImageHeight',0x0),m(this,'drawSelectionImageName',''),m(this,'drawSelectionImageSource'),m(this,'drawHoverImageX',0x0),m(this,'drawHoverImageY',0x0),m(this,'drawHoverImageWidth',0x0),m(this,'drawHoverImageHeight',0x0),m(this,'drawHoverImageName',''),m(this,'drawHoverImageSource'),m(this,'autoRowHeight',!0x1),m(this,'calculatedHeight',0x0),m(this,'ellipsis',!0x1),m(this,bE(0x35f),!0x1),m(this,'rowHasChildren',!0x1),m(this,'overflowTooltipShow',!0x0),m(this,'selectorCellValueType','value'),m(this,'overflowTooltipMaxWidth',0x1f4),m(this,'overflowTooltipPlacement','top'),m(this,'maxLineClamp',bE(0x138)),m(this,'renderType','default'),m(this,bE(0x365),bE(0x2b9)),this['visibleWidth']=this['width'],this['visibleHeight']=this[bE(0x3ef)],this[bE(0x2c5)]=u,this[bE(0x466)]=r,this[bE(0x407)]=C['key'],this['type']=C['type']||'',this['editorType']=C['editorType']||'text',this['selectorCellValueType']=C['selectorCellValueType']||this['ctx']['config']['SELECTOR_CELL_VALUE_TYPE']||'value',this['editorProps']=C['editorProps']||{},this['cellType']=E,this[bE(0x3a2)]=C['align']||this['ctx']['config']['COLUMNS_ALIGN'],this['verticalAlign']=C['verticalAlign']||this[bE(0x3df)]['config']['COLUMNS_VERTICAL_ALIGN'],this[bE(0x1dc)]=C['fixed']||'',this['level']=C['level']||0x0,this['operation']=C[bE(0x35c)]||!0x1,this['column']=C,this['rules']=C[bE(0x389)]||[],this[bE(0x19f)]=D,this[bE(0x459)]=this['cellType']==='body'?this[bE(0x3df)]['database']['getRowKeyForRowIndex'](r):this['cellType']+'_'+this['rowIndex'],this[bE(0x14d)]=this['getValue'](),this['render']=C[bE(0x442)],this['overflowTooltipShow']=C['overflowTooltipShow']!==!0x1,this['autoRowHeight']=C['autoRowHeight']!==void 0x0?C[bE(0x3ae)]:this[bE(0x3df)]['config']['AUTO_ROW_HEIGHT'],this[bE(0x34c)]=C['overflowTooltipMaxWidth']||0x1f4,this['overflowTooltipPlacement']=C[bE(0x18d)]||'top',this['renderFooter']=C['renderFooter'],this['hoverIconName']=C['hoverIconName'],this['formatter']=C['formatter'],this['formatterFooter']=C[bE(0x386)],this[bE(0x31a)]=C[bE(0x31a)]||'auto',this['renderType']=C['renderType']||'default',this[bE(0x365)]=C[bE(0x365)]||'default',F&&this['update']();}['setWidthHeight'](o,p){this['width']=o,this['height']=p;}['getValidationMessage'](){const bF=bB,o=this['ctx'][bF(0x391)]['getValidationError'](this['rowKey'],this[bF(0x407)]);if(Array['isArray'](o)&&o[bF(0x13f)]){const [p]=o;this['message']=p['message']||'';}return this['message'];}['update'](){const bG=bB;this[bG(0x15f)]=this[bG(0x1fa)](),this['drawY']=this['getDrawY'](),this['drawTextX']=this['drawX'],this['drawTextY']=this['drawY'],this[bG(0x33f)]=this['ctx']['database']['isHasChangedData'](this['rowKey'],this['key']),this['updateSpan'](),this['drawTextWidth']=this[bG(0x3ca)],this['drawTextHeight']=this['visibleHeight'],this['updateStyle'](),this[bG(0x173)](),this[bG(0x38a)](),this[bG(0x395)](),this['updateTree'](),this['updateEditor'](),this['updateRender'](),this['getValidationMessage'](),this[bG(0x2ce)](),this['text']=this['getText'](),this['displayText']=this['getDisplayText']();}['updateSpan'](){const bH=bB;if(this['cellType']==='footer')return;const {SPAN_METHOD:o}=this['ctx'][bH(0x465)];if(typeof o=='function'){const p=o,{colspan:r=0x1,rowspan:u=0x1,relationRowKeys:w,relationColKeys:x,mergeRow:y=!0x1,mergeCol:z=!0x1}=p({'row':this[bH(0x19f)],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[bH(0x260)],'value':this['getValue'](),'headIndex':this[bH(0x3df)]['body']['headIndex'],'headPosition':this['ctx'][bH(0x391)]['getPositionForRowIndex'](this['ctx'][bH(0x380)]['headIndex']),'visibleRows':this[bH(0x3df)]['body']['visibleRows'],'visibleLeafColumns':this['ctx']['header']['visibleLeafColumns'],'rows':this['ctx'][bH(0x380)][bH(0x3ed)]})||{};Array['isArray'](w)&&w[bH(0x13f)]>0x0?this['relationRowKeys']=w:this['relationRowKeys']=[this['key']],Array['isArray'](x)&&x[bH(0x13f)]>0x0?this[bH(0x399)]=x:this['relationColKeys']=[this['key']],this['mergeCol']=z,this['mergeRow']=y,this['colspan']=r,this['rowspan']=u,this[bH(0x3ca)]=this['getWidthByColIndexColSpan'](this['colIndex'],this[bH(0x295)]),this['visibleHeight']=this[bH(0x3df)]['database']['getHeightByRowIndexRowSpan'](this['rowIndex'],this['rowspan']);}}['updateSpanInfo'](){const bI=bB;if(this['mergeRow']||this['mergeCol']){const o=this[bI(0x1ed)]();this[bI(0x3ef)]=o['height'],this['width']=o['width'],this['drawX']=this[bI(0x1fa)](),this[bI(0x1f7)]=this[bI(0x3cd)](),this['drawY']-=o['offsetTop'],this[bI(0x15f)]-=o['offsetLeft'];}}[bB(0x173)](){const bJ=bB,{BODY_CELL_TYPE_METHOD:o}=this[bJ(0x3df)]['config'];if(typeof o=='function'){const p=o({'row':this['row'],'rowIndex':this[bJ(0x466)],'colIndex':this[bJ(0x2c5)],'column':this['column'],'value':this['getValue']()});p!==void 0x0&&(this['type']=p);}}['updateEditor'](){const bK=bB,{BODY_CELL_EDITOR_METHOD:o}=this['ctx']['config'];if(typeof o=='function'){const p=o({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});if(p!==void 0x0){const {type:r,props:u={}}=p;this['editorType']=r,this[bK(0x40b)]=u;}}}['updateRender'](){const bL=bB,{BODY_CELL_RENDER_METHOD:o}=this['ctx'][bL(0x465)];if(typeof o=='function'){const p=o({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[bL(0x260)],'value':this['getValue']()});p!==void 0x0&&(this[bL(0x442)]=p);}}['validate'](){const bM=bB;this['ctx'][bM(0x391)]['getValidator'](this['rowKey'],this['key'])['then'](()=>{const bN=bM;this['ctx']['database'][bN(0x12c)](this['rowKey'],this['key'],[]),this['message']='';})[bM(0x32e)](o=>{const bO=bM;if(Array['isArray'](o)&&o['length']){const [p]=o;this['message']=p['message'],this['ctx']['database'][bO(0x12c)](this[bO(0x459)],this['key'],o);}})['finally'](()=>{this['ctx']['emit']('draw');});}['updateStyle'](){const bP=bB;this['autoRowHeight']&&(this['domDataset']={'data-auto-height':!0x0,'data-row-index':this['rowIndex'],'data-col-index':this['colIndex']}),this[bP(0x2d1)]=this['getOverlayerViewsStyle']();}['updateTree'](){const bQ=bB,{CELL_PADDING:r=0x0}=this['ctx'][bQ(0x465)],{rowKey:w,cellType:x}=this;let z,C=0x0,D='';if(!(['tree',bQ(0x254),'tree-selection']['includes'](this['type'])&&x==='body'))return;const E=this[bQ(0x3df)][bQ(0x391)]['getRowForRowKey'](w),{expand:F=!0x1,hasChildren:G=!0x1,expandLoading:J=!0x1,level:K=0x0}=E||{};this['rowExpand']=F,this[bQ(0x285)]=G;const {TREE_INDENT:N=0x10,CHECKBOX_SIZE:O,TREE_ICON_SIZE:R}=this['ctx']['config'];if(C=K*N,J){const a5=this['ctx'][bQ(0x340)][bQ(0x313)]('loading');D='loading',z=a5;}else{if(G){const a6=this['ctx'][bQ(0x340)]['get'](bQ(0x406)),a7=this['ctx']['icons']['get']('shrink');z=F?a7:a6,D=F?'shrink':'expand';}}let V=R,a0=R,a1=this['drawX'];(this['align']==='center'||this['align']==='right')&&(a1=this[bQ(0x15f)]+(this['visibleWidth']-V-0x2*r)/0x2,this[bQ(0x3a2)]='left');let a2=a1+C+r,a3=this['drawY']+(this['visibleHeight']-a0)/0x2,a4=C+this['drawX']+V-0.5;this['type']===bQ(0x254)?(a2=C+this['drawSelectionImageX']+this['drawSelectionImageWidth'],a4=a2+V-r/0x2):this[bQ(0x1df)]===bQ(0x1ca)?a4=a2+O+V-r/0x2:a4=a2+V-r/0x2,this['drawTextX']=a4,this['drawTextWidth']=this[bQ(0x15f)]+this['visibleWidth']-a4,!(a2+V+r>this['drawX']+this['visibleWidth'])&&(a3+a0+r>this['drawY']+this['visibleHeight']||(this['drawTreeImageX']=a2,this['drawTreeImageY']=a3,this['drawTreeImageWidth']=V,this['drawTreeImageHeight']=a0,z?(this['drawTreeImageName']=D,this['drawTreeImageSource']=z):(this['drawTreeImageName']='',this['drawTreeImageSource']=void 0x0)));}['drawTreeLine'](){const bR=bB,{TREE_LINE:p,TREE_INDENT:r=0x10,TREE_ICON_SIZE:u=0x10,TREE_LINE_COLOR:w='#e1e6eb'}=this[bR(0x3df)]['config'];if(!p||this['cellType']!=='body'||!['tree',bR(0x254),'tree-selection']['includes'](this['type'])||this['rowspan']===0x0||this['colspan']===0x0)return;const x=this['ctx']['database']['getRowForRowKey'](this['rowKey'])||{},z=x['level']??0x0,C=this['drawTreeImageX']+this['drawTreeImageWidth']/0x2,D=this['drawTreeImageY']+this[bR(0x2a3)]/0x2;let E=this['drawTreeImageX']-z*r;const F=Array['isArray'](x['parentRowKeys'])?x['parentRowKeys']:[];if(z>0x0){for(let L=0x0;L<z-0x1;L+=0x1){const N=F[L+0x1];if((N?this['ctx']['database'][bR(0x124)](N)||{}:{})['isLastChild'])continue;const O=Math[bR(0x2c8)](this['drawTreeImageX']-(z-L)*r+u/0x2);this['ctx']['paint']['drawLine']([O,this['drawY'],O,this['drawY']+this['visibleHeight']],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}const G=Math['round'](this[bR(0x3c9)]-r+u/0x2),J=x['isLastChild']?D:this[bR(0x1f7)]+this['visibleHeight'];this['ctx']['paint']['drawLine']([G,this['drawY'],G,J],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});const K=Math['round'](E+(z-0x1)*r+u/0x2);this['ctx'][bR(0x327)]['drawLine']([K,D,C,D],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}if(x['hasChildren']&&x['expand']){const R=this['drawTreeImageY']+this['drawTreeImageHeight'],S=this['drawY']+this['visibleHeight'];this['ctx']['paint'][bR(0x1a1)]([C,R,C,S],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}}['updateContainer'](){const bS=bB,{BODY_BG_COLOR:r,EDIT_BG_COLOR:C,BODY_CELL_STYLE_METHOD:D,FOOTER_CELL_STYLE_METHOD:E,READONLY_TEXT_COLOR:F,BODY_TEXT_COLOR:K,FOOTER_TEXT_COLOR:O,FOOTER_BG_COLOR:a0,HIGHLIGHT_SELECTED_ROW:a1,HIGHLIGHT_SELECTED_ROW_COLOR:a2,HIGHLIGHT_HOVER_ROW:a3,HIGHLIGHT_HOVER_ROW_COLOR:a4,STRIPE:a5,STRIPE_COLOR:a6,FINDER_CELL_BG_COLOR:a7}=this['ctx']['config'];if(this['cellType']==='footer'){let ak=a0,am=O;if(typeof E=='function'){const an=E,{backgroundColor:ao,color:ap,font:aq}=an({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[bS(0x260)],'value':this[bS(0x201)]()})||{};ao&&(ak=ao),ap&&(am=ap),aq&&(this[bS(0x13b)]=aq);}this['drawCellSkyBgColor']='transparent',this['drawCellBgColor']=ak,this['drawTextColor']=am;return;}let a8=bS(0x223);const a9=this['ctx']['hoverCell'],aa=this['ctx'][bS(0x1c9)];let ab=this['rowIndex'],ad=this['rowIndex'];if(this['rowspan']!==0x1&&(a3||a1)){const ar=this['getSpanInfo'](),{yArr:au}=ar;ab=au[0x0],ad=au[0x1];}a3&&a9&&(a9['rowKey']===this['rowKey']&&(a8=a4),a9['rowIndex']>=ab&&a9['rowIndex']<=ad&&(a8=a4)),a1&&aa&&(aa['rowKey']===this['rowKey']&&(a8=a2),aa[bS(0x466)]>=ab&&aa['rowIndex']<=ad&&(a8=a2)),this[bS(0x276)]=a8;let ae=r,af=K;if(this['ctx']['database'][bS(0x1ff)](this['rowKey'],this['key'])||(ae=C,af=F),a5&&(this['rowIndex']%0x2?ae=a6:ae=r),typeof D=='function'){const av=D,{backgroundColor:aw,color:ax,font:ay}=av({'row':this[bS(0x19f)],'rowIndex':this['rowIndex'],'colIndex':this[bS(0x2c5)],'column':this['column'],'isHasChanged':this['isHasChanged'],'value':this['getValue']()})||{};aw&&(ae=aw),ax&&(af=ax),ay&&(this['drawTextFont']=ay);}const {rowIndex:ag,colIndex:ai,type:aj}=this[bS(0x3df)]['finderBar'];ag===this[bS(0x466)]&&ai===this[bS(0x2c5)]&&aj==='body'&&(ae=a7),this['drawCellBgColor']=ae,this[bS(0x475)]=af;}['updateSelection'](){const bT=bB,{visibleWidth:r,visibleHeight:w,rowspan:x,colspan:z,cellType:C,type:D,rowIndex:E,rowKey:F}=this;if(x===0x0||z===0x0||C==='footer'||!['index-selection','selection','selection-tree','tree-selection'][bT(0x31e)](D))return;const G=this['ctx'][bT(0x391)]['getRowSelectable'](F),{CHECKBOX_SIZE:J=0x0,CELL_PADDING:K}=this['ctx']['config'];let N=this['drawX']+K;(this['align']==='center'||this['align']==='right')&&(N=this['drawX']+(r-J)/0x2);let O=N,R=this['drawY']+(w-J)/0x2;if(D!=='selection-tree'&&D==='tree-selection'){const {TREE_INDENT:a0=0x10,TREE_ICON_SIZE:a1}=this['ctx']['config'],a2=this['ctx']['database']['getRowForRowKey'](F),{level:a3=0x0}=a2||{},a4=a3*a0;O=N+a1+a4;}let T=this['ctx']['icons']['get'](bT(0x247)),V=bT(0x247);if(D==='selection-tree'||D==='tree-selection'){const a5=this['ctx'][bT(0x391)]['getTreeSelectionState'](F);a5['indeterminate']&&G?(T=this['ctx']['icons']['get'](bT(0x367)),V='checkbox-indeterminate'):a5['checked']&&G?(T=this[bT(0x3df)]['icons']['get'](bT(0x166)),V='checkbox-check'):!a5['checked']&&G?(T=this['ctx'][bT(0x340)]['get']('checkbox-uncheck'),V='checkbox-uncheck'):(T=this['ctx']['icons']['get']('checkbox-disabled'),V='checkbox-disabled');}else{const a6=this['ctx']['database']['getRowSelection'](F);a6&&G?(T=this['ctx'][bT(0x340)]['get']('checkbox-check'),V='checkbox-check'):a6&&!G?(T=this['ctx'][bT(0x340)]['get'](bT(0x46f)),V=bT(0x46f)):!a6&&G?(T=this['ctx']['icons'][bT(0x313)](bT(0x247)),V='checkbox-uncheck'):(T=this['ctx']['icons']['get']('checkbox-disabled'),V='checkbox-disabled');}O+J+K>this[bT(0x15f)]+this['visibleWidth']||R+J+K>this['drawY']+this[bT(0x26c)]||(D==='index-selection'?(this[bT(0x3df)]['hoverCell']&&this['ctx']['hoverCell'][bT(0x466)]===E||[bT(0x455),bT(0x166)]['includes'](V))&&(this['drawSelectionImageX']=O,this[bT(0x2cb)]=R,this['drawSelectionImageWidth']=J,this['drawSelectionImageHeight']=J,this['drawSelectionImageName']=V,this[bT(0x404)]=T):(this[bT(0x26f)]=O,this['drawSelectionImageY']=R,this['drawSelectionImageWidth']=J,this['drawSelectionImageHeight']=J,this[bT(0x447)]=V,this['drawSelectionImageSource']=T));}['updateHoverIcon'](){const bU=bB;if(this['ctx']['database']['getReadonly'](this['rowKey'],this['key']))return;const {BODY_CELL_HOVER_ICON_METHOD:p,CELL_HOVER_ICON_SIZE:r,CELL_PADDING:u,ENABLE_MERGE_CELL_LINK:w}=this['ctx']['config'];if(typeof p=='function'){const z=p({'row':this['row'],'rowIndex':this[bU(0x466)],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});z!==void 0x0&&(this['hoverIconName']=z);}const {hoverCell:x}=this['ctx'];if(this['hoverIconName']&&!this[bU(0x3df)][bU(0x208)]&&x){let C=0x0,D=0x0;if(x['rowKey']===this['rowKey']&&(C=this['drawX']+this['width']-r-u,D=this['drawY']+(this[bU(0x3ef)]-r)/0x2),this['rowspan']!==0x1&&w){const F=this['getSpanInfo'](),{yArr:G}=F,J=G[0x0],K=G[0x1];if(x['rowIndex']>=J&&x['rowIndex']<=K){const {width:L,height:N,offsetTop:O,offsetLeft:R}=F;C=this['drawX']-R+L-r-u,D=this['drawY']-O+(N-r)/0x2;}}const E=this['ctx']['icons']['get'](this['hoverIconName']);this['drawHoverImageX']=C,this[bU(0x361)]=D,this['drawHoverImageWidth']=r,this[bU(0x16c)]=r,this['drawHoverImageName']=this[bU(0x47e)],this['drawHoverImageSource']=E;}}[bB(0x3f6)](){const bV=bB;if(this['cellType']!=='body'||!this['autoRowHeight']||this['rowspan']===0x0)return 0x0;if(this['render']){const x=this['ctx']['database']['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex']);return this['rowspan']>0x1?x<this['visibleHeight']?0x0:Math[bV(0x2c8)](x-(this['visibleHeight']-this[bV(0x3ef)])):Math['round'](x);}if(!(this[bV(0x2a2)]&&typeof this['displayText']=='string'))return 0x0;const {BODY_FONT:o,CELL_PADDING:p,CELL_LINE_HEIGHT:r}=this['ctx'][bV(0x465)],u=this['displayText']+'_'+this['drawTextWidth']+'_'+this[bV(0x13b)],w=this['ctx']['paint'][bV(0x2c7)](this['displayText'],this['drawTextWidth'],{'font':this['drawTextFont']||o,'padding':p,'align':this['align'],'verticalAlign':this['verticalAlign'],'color':this['drawTextColor'],'autoRowHeight':this['autoRowHeight'],'lineHeight':r,'maxLineClamp':this['maxLineClamp'],'cacheTextKey':u});return this['rowspan']>0x1?w<this['visibleHeight']?0x0:Math['round'](w-(this['visibleHeight']-this['height'])):Math['round'](w);}['getSpanInfo'](){const bW=bB;return this['ctx']['database'][bW(0x1ed)](this);}['getDisplayText'](){const bX=bB;return this[bX(0x467)]==='footer'?this['renderFooter']&&this['renderFooterType']==='default'||this['text']===null||this['text']===void 0x0?'':this['text']:this['rowspan']===0x0||this['colspan']===0x0||this['render']&&this['renderType']==='default'||this['type']==='index-selection'&&(this['ctx']['hoverCell']&&this[bX(0x3df)]['hoverCell']['rowIndex']===this['rowIndex']||['checkbox-disabled',bX(0x166)]['includes'](this['drawSelectionImageName']))||this['text']===null||this[bX(0x471)]===void 0x0?'':''+this[bX(0x471)];}['getText'](){const bY=bB;if(this[bY(0x467)]==='footer')return typeof this['formatterFooter']=='function'?this['formatterFooter']({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['row'][this['key']]}):this[bY(0x19f)][this['key']];if(typeof this['formatter']=='function')return this['formatter']({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});const {BODY_CELL_FORMATTER_METHOD:o}=this['ctx']['config'];return typeof o=='function'?o({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[bY(0x260)],'value':this[bY(0x201)]()}):['index-selection','index']['includes'](this[bY(0x1df)])?''+(this[bY(0x466)]+0x1):(this['value']=this[bY(0x3df)]['database']['getItemValue'](this['rowKey'],this['key']),this['value']);}[bB(0x201)](){const bZ=bB;return this[bZ(0x3df)]['database']['getItemValue'](this['rowKey'],this['key']);}['setValue'](o){this['ctx']['setItemValueByEditor'](this['rowKey'],this['key'],o);}['getOverlayerViewsStyle'](){const c0=bB;let o=this['drawX']-this['ctx'][c0(0x452)],p=this['drawY']-this['ctx']['body']['y'];if(this['fixed']==='left'?o=this['drawX']:this['fixed']===c0(0x2e8)&&(o=this['drawX']-(this['ctx']['stageWidth']-this[c0(0x3df)]['fixedRightWidth'])),this['cellType']===c0(0x35a)&&this['ctx']['config']['FOOTER_FIXED']&&(p=this['drawY']-this['ctx'][c0(0x35a)]['y']),this['autoRowHeight']&&this['render']&&this['verticalAlign']==='middle'){const u=this['ctx']['database']['getOverlayerAutoHeight'](this[c0(0x466)],this[c0(0x2c5)]);if(u<this['visibleHeight']&&u>0x0){const w=(this['visibleHeight']-u)/0x2;p=p+w;}}this[c0(0x3ae)]&&this['ctx']['database']['getOverlayerAutoHeight'](this['rowIndex'],this[c0(0x2c5)])===0x0&&(o=-0x1869f,p=-0x1869f);let r={};return this['rowspan']===0x0&&(r={'display':'none'}),{'position':'absolute','overflow':'hidden','left':Math['round'](o-0x1)+'px','top':Math['round'](p-0x1)+'px','width':this[c0(0x3ca)]+'px','height':this[c0(0x3ae)]&&this[c0(0x16b)]===c0(0x2b9)?c0(0x138):this['visibleHeight']+'px','pointerEvents':c0(0x22d),'userSelect':'none',...r};}['drawContainer'](){const c1=bB,{paint:o,config:{BORDER_COLOR:p,BORDER:r}}=this[c1(0x3df)],{drawX:u,drawY:w}=this;o['drawRect'](u,w,this['visibleWidth'],this['visibleHeight'],{'borderColor':r?p:'transparent','fillColor':this['drawCellBgColor']}),o['drawRect'](u,w,this[c1(0x3a0)],this['height'],{'borderColor':c1(0x223),'fillColor':this['drawCellSkyBgColor']}),r||this['ctx']['paint']['drawLine']([u,w+this[c1(0x26c)],u+this['visibleWidth'],w+this['visibleHeight']],{'borderColor':p,'fillColor':p,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}['drawAutofillPiont'](){const c2=bB;if(this['cellType']==='footer')return;const {SELECT_BORDER_COLOR:p,ENABLE_AUTOFILL:r,ENABLE_SELECTOR:u,AUTOFILL_POINT_BORDER_COLOR:w}=this['ctx']['config'];if(!u||!r||this['ctx']['editing'])return;const {xArr:x,yArr:y}=this['ctx']['selector'],z=x[0x1],C=y[0x1],{colIndex:D,rowIndex:E,drawX:F,drawY:G}=this;if(D===z&&E===C){const J=D===this[c2(0x3df)]['maxColIndex']||E===this['ctx']['maxRowIndex']||D===this[c2(0x3df)]['lastCenterColIndex']?0x6:0x4;this['ctx']['paint'][c2(0x269)](F+this[c2(0x3a0)]-J,G+this['height']-J,0x6,0x6,{'borderColor':w,'fillColor':p});}}['draw'](){const c3=bB;this['drawTreeLine'](),this[c3(0x441)](),this['drawImage'](),this['drawSelector'](),this['drawAutofillPiont'](),this['drawErrorTip']();}[bB(0x180)](o,p){const c4=bB;if(p===0x0)return 0x0;let r=0x0;for(let u=o;u<o+p;u++){const w=this[c4(0x3df)]['header']['leafCellHeaders'][u];r+=w['width'];}return r;}['drawText'](){const c5=bB,{CELL_PADDING:o,BODY_FONT:p,PLACEHOLDER_COLOR:r,CELL_LINE_HEIGHT:u}=this['ctx']['config'],{placeholder:w}=this['column'];let x=this['displayText'],y=this[c5(0x475)];if(!this[c5(0x3df)]['database'][c5(0x1ff)](this['rowKey'],this['key'])&&w&&['',null,void 0x0]['includes'](this['text'])&&this['cellType']===c5(0x380)&&!(this['rowspan']===0x0||this['colspan']===0x0)&&(x=w,y=r),['',null,void 0x0]['includes'](x))return!0x1;typeof x!='string'&&(x=''+x);const z=x+'_'+this[c5(0x28d)]+'_'+this[c5(0x13b)];return this[c5(0x39e)]=this[c5(0x3df)]['paint']['drawText'](x,this['drawTextX'],this['drawTextY'],this['drawTextWidth'],this[c5(0x1ac)],{'font':this['drawTextFont']||p,'padding':o,'align':this['align'],'verticalAlign':this['verticalAlign'],'color':y,'autoRowHeight':this['autoRowHeight'],'lineHeight':u,'maxLineClamp':this['maxLineClamp'],'cacheTextKey':z}),this['ellipsis'];}['drawImage'](){const c6=bB;if(this['drawSelectionImageSource']&&this['ctx'][c6(0x327)]['drawImage'](this['drawSelectionImageSource'],this[c6(0x26f)],this['drawSelectionImageY'],this[c6(0x3f7)],this['drawSelectionImageHeight']),this['drawTreeImageSource']&&this['ctx'][c6(0x327)]['drawImage'](this['drawTreeImageSource'],this[c6(0x3c9)],this['drawTreeImageY'],this['drawTreeImageWidth'],this['drawTreeImageHeight']),this['drawHoverImageSource']){const {CELL_HOVER_ICON_BG_COLOR:o,CELL_HOVER_ICON_BORDER_COLOR:p}=this[c6(0x3df)]['config'];this[c6(0x3df)]['paint']['drawRect'](this['drawHoverImageX']-0x2,this['drawHoverImageY']-0x2,this['drawHoverImageWidth']+0x4,this['drawHoverImageHeight']+0x4,{'borderColor':p,'radius':0x4,'borderWidth':0x1,'fillColor':o}),this[c6(0x3df)]['paint']['drawImage'](this['drawHoverImageSource'],this['drawHoverImageX'],this['drawHoverImageY'],this[c6(0x168)],this['drawHoverImageHeight']);}}['drawSelector'](){const c7=bB;if(this[c7(0x467)]==='footer')return;const {ENABLE_SELECTOR:o}=this['ctx']['config'];if(!o)return;const {xArr:p,yArr:r,xArrCopy:u,yArrCopy:w}=this[c7(0x3df)]['selector'];this['drawBorder']({'xArr':u,'yArr':w,'borderColor':this['ctx']['config']['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1,'lineDash':[0x4,0x4]}),this['drawBorder']({'xArr':this['ctx']['autofill']['xArr'],'yArr':this['ctx']['autofill']['yArr'],'borderColor':this['ctx']['config']['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':c7(0x223),'borderWidth':0x1,'lineDash':[0x4,0x4]}),this['drawBorder']({'xArr':p,'yArr':r,'borderColor':this['ctx']['config']['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1});const [x,y]=p,[z,C]=r;!(x===y&&z===C)&&this[c7(0x2c5)]>=x&&this['colIndex']<=y&&this[c7(0x466)]>=z&&this['rowIndex']<=C&&this['ctx']['paint'][c7(0x269)](this['drawX'],this['drawY'],this['width'],this[c7(0x3ef)],{'borderColor':'transparent','fillColor':this['ctx']['config']['SELECT_AREA_COLOR']||'rgba(82,146,247,0.1)'}),this['operation']&&this[c7(0x466)]>=z&&this['rowIndex']<=C&&this['ctx'][c7(0x327)]['drawRect'](this['drawX'],this['drawY'],this['visibleWidth'],this['visibleHeight'],{'borderColor':'transparent','fillColor':this[c7(0x3df)]['config']['SELECT_ROW_COL_BG_COLOR']||'transparent'});}['drawErrorTip'](){const c8=bB;if(this['cellType']==='footer'||!this[c8(0x310)]||this['rowspan']===0x0||this[c8(0x295)]===0x0)return;const {ERROR_TIP_ICON_SIZE:o,ERROR_TIP_COLOR:p}=this['ctx']['config'],{width:r}=this,u=this['drawX'],w=this['drawY'],x=[u+r-o-0.5,w,u+r-0.5,w,u+r-0.5,w+o];this['ctx']['paint']['drawLine'](x,{'borderColor':p,'fillColor':p,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}['drawBorder'](r){const c9=bB,{drawX:w,drawY:x,rowIndex:z,colIndex:C,height:D,width:E}=this;let F=w,G=x;const {xArr:J,yArr:K,lineDash:N=[],borderWidth:O=0x1,borderColor:R,fillColor:T}=r,V=J[0x0],a0=J[0x1],a1=K[0x0],a2=K[0x1];if(C>=V&&C<=a0&&z===a1){const a3=C===a0?0x1:0x0,a4=C===V?0x1:0x0;this['ctx']['paint']['drawLine']([F+a4,G+0x1,F+E-a3,G+0x1],{'borderColor':R,'fillColor':T,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}if(C===a0&&z>=a1&&z<=a2){const a5=z===a1?0x1:0x0,a6=z===a2?0x1:0x0;this['ctx']['paint']['drawLine']([F+E-0x1,G+a5,F+E-0x1,G+D-a6],{'borderColor':R,'fillColor':T,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}if(C>=V&&C<=a0&&z===a2){const a7=C===a0?0x1:0x0,a8=C===V?0x1:0x0;this['ctx']['paint']['drawLine']([F+a8,G+D-0x1,F+E-a7,G+D-0x1],{'borderColor':R,'fillColor':T,'borderWidth':O,'lineCap':c9(0x2c8),'lineJoin':'round','lineDash':N});}if(C===V&&z>=a1&&z<=a2){const a9=z===a2?0x1:0x0,aa=z===a1?0x1:0x0;this['ctx']['paint']['drawLine']([F+0x1,G+aa,F+0x1,G+D-a9],{'borderColor':R,'fillColor':T,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}}}class Fs{constructor(o,p){const ca=bB;m(this,ca(0x3df)),m(this,'data'),m(this,'columns'),m(this,'footerData',[]),m(this,'rowKeyMap',new Map()),m(this,'colIndexKeyMap',new Map()),m(this,'headerMap',new Map()),m(this,'rowIndexRowKeyMap',new Map()),m(this,'rowKeyRowIndexMap',new Map()),m(this,'checkboxKeyMap',new Map()),m(this,'selectionMap',new Map()),m(this,ca(0x2ca),new Map()),m(this,'originalDataMap',new Map()),m(this,ca(0x308),new Map()),m(this,'validationErrorMap',new Map()),m(this,'itemRowKeyMap',new WeakMap()),m(this,'bufferData',[]),m(this,'customHeader',{'fixedData':{},'sortData':{},'hideData':{},'resizableData':{}}),m(this,ca(0x18f),new Map()),m(this,'maxRowHeightCellMap',new Map()),m(this,'bufferCheckState',{'buffer':!0x1,'check':!0x1,'indeterminate':!0x1,'selectable':!0x0}),m(this,'sumHeight',0x0),m(this,'filterMethod'),m(this,'positions',[]),m(this,ca(0x19c),new Map()),this['ctx']=o;const {data:r=[],columns:u=[],footerData:w=[]}=p;this['data']=r,this['footerData']=w,this['columns']=u,this['init']();}['init'](o=!0x0){const cb=bB;this['ctx']['paint'][cb(0x3b4)](),this['clearBufferData'](),this['rowKeyMap'][cb(0x329)](),this['checkboxKeyMap']['clear'](),this['colIndexKeyMap']['clear'](),this['rowIndexRowKeyMap']['clear'](),this[cb(0x192)]['clear'](),this['maxRowHeightCellMap']['clear']();const p=this['getColumns'](),r=ui(p);if(this['ctx']['hasSelection']=r['some'](u=>u['type']==='selection'),this['ctx'][cb(0x3f3)]=r['some'](u=>u['type']==='tree'),o){this['originalDataMap']['clear'](),this['changedDataMap']['clear'](),this['validationErrorMap']['clear']();const {ROW_KEY:u}=this['ctx']['config'];u?(this['ctx']['hasSelection']||this['selectionMap']['clear'](),this['ctx'][cb(0x3f3)]||this['expandMap']['clear']()):(this[cb(0x464)]['clear'](),this[cb(0x2ca)]['clear']());}this[cb(0x35e)]=new WeakMap(),this['initData'](this['data']),this['getData'](),this['bufferCheckState']['buffer']=!0x1;}['clearBufferData'](){const cd=bB;this[cd(0x1b9)]=[];}['initData'](o,p=0x0,r=[]){const ce=bB,u=o['length'],{ROW_KEY:w='',DEFAULT_EXPAND_ALL:x,CELL_HEIGHT:y,SELECTABLE_METHOD:z,CHECKBOX_KEY:C,TREE_CHILDREN_KEY:D}=this[ce(0x3df)]['config'];o['forEach']((E,F)=>{const cf=ce;var G;D!=='children'&&(E['children']=E[D]);const J=E[w],K=J!=null?''+J:Rl();this['itemRowKeyMap']['set'](E,K);const N=E['_height']||y,O=E['_readonly'];let R=!0x0;if(typeof z=='function'&&(R=z),C){const V=E[C];if(this[cf(0x139)]['has'](V)){const a0=this[cf(0x139)][cf(0x313)](V)||[];a0['push'](K),this[cf(0x139)][cf(0x357)](V,a0);}else this['checkboxKeyMap'][cf(0x357)](V,[K]);}this['selectionMap']['set'](K,{'key':C?E[C]:K,'row':E,'check':((G=this['selectionMap']['get'](K))==null?void 0x0:G[cf(0x12f)])||!0x1});const T=x||this[cf(0x2ca)]['get'](K)||E['_expand']||!0x1;this['expandMap'][cf(0x357)](K,T),this['rowKeyMap']['set'](K,{'readonly':O,'index':F,'rowIndex':F,'level':p,'height':N,'calculatedHeight':-0x1,'check':!0x1,'selectable':R,'expand':T,'expandLazy':!0x1,'hasChildren':E['_hasChildren']||(Array['isArray'](E['children'])?E[cf(0x331)]['length']>0x0:!0x1),'expandLoading':!0x1,'item':E,'parentRowKeys':r,'parentRowKey':r[r[cf(0x13f)]-0x1]||'','isLastChild':F===u-0x1}),Array['isArray'](E['children'])&&E['children']['length']&&this['initData'](E[cf(0x331)],p+0x1,[...r,K]);});}['setRowHeight'](o,p){const cg=bB,r=this[cg(0x126)]['get'](o);if(r===void 0x0)return;const u=this['rowKeyMap']['get'](r);u['height']=p,u['item'][cg(0x293)]=p,this['clearBufferData']();}['setBatchRowHeight'](o){o['forEach'](({rowIndex:p,height:r})=>{const cj=b,u=this['rowIndexRowKeyMap'][cj(0x313)](p);if(u){const w=this[cj(0x234)]['get'](u);w['height']=r,w['item'][cj(0x293)]=r;}}),this['clearBufferData']();}[bB(0x2e9)](o){const ck=bB;return o[ck(0x151)](({height:p,rowIndex:r})=>this['getPositionForRowIndex'](r)['calculatedHeight']===p)?!0x1:(o['forEach'](({rowIndex:p,height:r})=>{const cm=ck,u=this['rowIndexRowKeyMap'][cm(0x313)](p);if(u){const w=this[cm(0x234)][cm(0x313)](u),{height:x=-0x1}=this['getMaxRowHeightItem'](u)||{};w['calculatedHeight']=Math[cm(0x181)](r,x);}}),this['clearBufferData'](),this['getData'](),!0x0);}['getAllRowsData'](){let o=[];const p=r=>{r['forEach'](u=>{o['push'](u),Array['isArray'](u['children'])&&p(u['children']);});};return p(this['data']),o;}['generateColumns'](o){const p=r=>r['map'](u=>{const cn=b;var w,x,z,C,D,E,F,G;const J=u['children']&&Array[cn(0x32c)](u[cn(0x331)])?p(u['children']):void 0x0,K={'hide':(x=(w=this['customHeader'])==null?void 0x0:w['hideData'])==null?void 0x0:x[u['key']],'fixed':(C=(z=this['customHeader'])==null?void 0x0:z['fixedData'])==null?void 0x0:C[u['key']],'sort':(E=(D=this['customHeader'])==null?void 0x0:D['sortData'])==null?void 0x0:E[u['key']],'width':(G=(F=this['customHeader'])==null?void 0x0:F['resizableData'])==null?void 0x0:G[u['key']]},L={};for(const [O,R]of Object['entries'](K))R!==void 0x0&&(L[O]=R);const N=J&&J['every'](T=>T[cn(0x37b)]);return{...u,'children':J,'hide':N||(typeof u['hide']=='function'?u['hide'](u):u['hide']),...L};});return p(o);}['getColumns'](){const co=bB;return this['generateColumns'](this[co(0x46d)]);}['setColumns'](o){this['columns']=o,this['clearBufferData']();}['setData'](o){const cp=bB;this['data']=o,this[cp(0x27c)]();}['getData'](){const cq=bB;if(this[cq(0x1b9)]['length']>0x0)return{'data':this['bufferData'],'sumHeight':this['sumHeight'],'positions':this['positions']};let o=[],p=0x0;this['sumHeight']=0x0,this['positions']=[];const r=w=>{w['forEach'](x=>{const cr=b;o['push'](x);const y=this['itemRowKeyMap']['get'](x),{expand:z,hasChildren:C,height:D,calculatedHeight:E}=this['rowKeyMap'][cr(0x313)](y),F=this['sumHeight'],G=Math['max'](E,D);this[cr(0x427)]+=G,this['rowIndexRowKeyMap']['set'](p,y),this['rowKeyRowIndexMap']['set'](y,p),this[cr(0x3a7)]['push']({'top':F,'height':G,'bottom':this['sumHeight'],'calculatedHeight':E}),p+=0x1,z&&C&&r(x[cr(0x331)]);});};this['rowIndexRowKeyMap']['clear'](),this['rowKeyRowIndexMap']['clear']();let u=this['data'];if(typeof this['filterMethod']=='function'&&(u=this['filterMethod'](u)),this['sortState'][cq(0x416)]){const w=Array['from'](this['sortState']['entries']())['sort']((x,y)=>x[0x1]['timestamp']-y[0x1][cq(0x23f)]);u=this[cq(0x2d5)](u,w);}return r(u),this['bufferData']=o,{'data':o,'sumHeight':this[cq(0x427)],'positions':this[cq(0x3a7)]};}['setFooterData'](o){this['footerData']=o;}['getFooterData'](){return this['footerData'];}['setFilterMethod'](o){this['filterMethod']=o;}['clearFilterMethod'](){this['filterMethod']=void 0x0;}['getSortState'](o){return this['sortState']['get'](o)||{'direction':'none','timestamp':0x0};}['setSortState'](o,p){const ct=bB,r=Date['now']();this['ctx']['config']['SORT_STRICTLY']&&this['sortState']['clear'](),p==='none'?this['sortState']['delete'](o):this[ct(0x19c)]['set'](o,{'direction':p,'timestamp':r}),this['ctx']['emit']('sortChange',this['sortState']),this['clearBufferData'](),this['ctx']['emit']('draw');}['clearSort'](){const cu=bB;this['sortState']['clear'](),this['ctx']['emit']('sortChange',this['sortState']),this['clearBufferData'](),this[cu(0x3df)]['emit']('draw');}['sortDataRecursive'](o,p){const cv=bB;let r=[...o];for(const [u,{direction:w}]of p){if(w===cv(0x215))continue;const x=this[cv(0x375)](u);!x||!x['column'][cv(0x428)]||(r=this['applySingleColumnSort'](r,u,w,x['column'][cv(0x428)]));}return r[cv(0x3e4)](y=>(y['children']&&Array['isArray'](y['children'])&&(y['children']=this['sortDataRecursive'](y['children'],p)),y));}[bB(0x146)](o,p,r,u){return o['sort']((w,x)=>{const cw=b,y=w[p],z=x[p];let C=0x0;if(typeof u=='function')C=u(w,x);else{if(u===cw(0x33e)){const D=Number(y)||0x0,E=Number(z)||0x0;C=D-E;}else{if(u==='string'){const F=String(y||''),G=String(z||'');C=F[cw(0x275)](G);}else u==='date'&&(C=Ns(y,z));}}return r==='asc'?C:-C;});}[bB(0x145)](o,p=!0x1){const r=this['rowKeyMap']['get'](o);r['expand']=p,this['expandMap']['set'](o,p),this['clearBufferData'](),this['ctx']['emit']('draw');}[bB(0x359)](o,p=!0x0){const cy=bB;this['expandMap']['clear'](),o['forEach'](r=>{const cx=b,u=this['rowKeyMap'][cx(0x313)](r);this[cx(0x2ca)]['set'](r,p),u[cx(0x406)]=p;}),this[cy(0x431)](),this['ctx']['emit']('draw');}['getExpandRowKeys'](){const cz=bB;let o=[];return this['rowKeyMap'][cz(0x446)]((p,r)=>{const cA=cz;p['expand']&&o[cA(0x420)](r);}),o;}['expandAll'](o){const cB=bB;this['expandMap'][cB(0x329)](),this[cB(0x234)]['forEach'](p=>{const cC=cB;p['expand']=o,this['expandMap']['set'](p[cC(0x407)],o);}),this[cB(0x431)](),this['ctx']['emit']('draw');}['expandLoading'](o,p=!0x1){const cD=bB,r=this['rowKeyMap']['get'](o);r['expandLoading']=p,this['clearBufferData'](),this['ctx'][cD(0x376)]('draw');}[bB(0x16a)](o,p){const cE=bB,r=this['rowKeyMap']['get'](o);r['expand']=!0x0,this[cE(0x2ca)]['set'](o,!0x0),r['expandLazy']=!0x0,r['item'][cE(0x331)]=p,this['initData'](r['item']['children'],r['level']+0x1),this['clearBufferData']();}['getIsExpandLoading'](o){const cF=bB;return this['rowKeyMap']['get'](o)[cF(0x2eb)];}['getIsExpandLazy'](o){return this['rowKeyMap']['get'](o)['expandLazy'];}['getIsExpand'](o){return this['rowKeyMap']['get'](o)['expand'];}['getRowForRowKey'](o){const cG=bB;return this['rowKeyMap'][cG(0x313)](o);}[bB(0x1a7)](o){const cH=bB,p=this['getRowKeyForRowIndex'](o);return this[cH(0x234)]['get'](p);}['getRowKeyForRowIndex'](o){const cI=bB;return this[cI(0x126)]['get'](o)||'';}['getRowKeyByItem'](o){return this['itemRowKeyMap']['get'](o);}['getRowIndexForRowKey'](o){return this['rowKeyRowIndexMap']['get'](o);}['getItemValueForRowIndexAndColIndex'](o,p){const cJ=bB;if(!(this['rowIndexRowKeyMap']['has'](o)&&this['colIndexKeyMap']['get'](p)))return null;const r=this['rowIndexRowKeyMap']['get'](o),u=this['colIndexKeyMap'][cJ(0x313)](p);return r===void 0x0||u===void 0x0?null:{'rowKey':r,'key':u,'value':this['getItemValue'](r,u)};}['getItemValue'](o,p){const cK=bB,r=this['rowKeyMap']['get'](o);return r&&r['item']?r['item'][p]===void 0x0?null:r[cK(0x25e)][p]:null;}async['batchSetItemValue'](p,r=!0x1,u=!0x0,w='none'){const cM=bB;let x=[],y=u;const z=new Set();let C=[],D=p['map'](K=>{const cL=b,{rowKey:N,key:O}=K;let R=K[cL(0x14d)],T=R;const V=this[cL(0x1d3)](N),a0=this['getItemValue'](N,O),a1=this['getVirtualBodyCellByKey'](N,O);return a1?.['type']==='number'&&(['',void 0x0,null]['includes'](R)?T=null:/^-?\d+(\.\d+)?$/[cL(0x2f6)](''+R)?T=Number(R):(T=a0,C['push']({...K,'value':T,'oldValue':a0,'row':V}))),{...K,'value':T,'oldValue':a0,'row':V};});if(D=D['filter'](K=>!C['some'](L=>K['rowKey']===L['rowKey']&&K['key']===L[cM(0x407)])),C['length']){const K={'code':'ERR_BATCH_SET_NUMBER_VALUE','message':cM(0x1bf),'data':C};this['ctx']['emit'](cM(0x28a),K);}if(D=D['filter'](L=>L[cM(0x2ee)]!==L[cM(0x14d)]),!D['length'])return;const {BEFORE_VALUE_CHANGE_METHOD:E}=this['ctx'][cM(0x465)];w==='none'&&typeof E==cM(0x3d1)&&(D=await E(D),y=!0x1),D['forEach'](L=>{const cN=cM,{value:N,rowKey:O,key:R}=L,T=this[cN(0x322)](O,R);z['add'](O),this['setItemValue'](O,R,N,!0x1,!0x1,!0x1,y),x[cN(0x420)]({'rowKey':O,'key':R,'oldValue':T,'newValue':N});});let F=[];z['forEach'](L=>{F['push'](this['ctx']['database']['getRowDataItemForRowKey'](L));});const G=D['map'](({rowKey:L,key:N})=>this['getValidator'](L,N));Promise['all'](G)['then'](()=>{const cO=cM;this['validationErrorMap']['size']===0x0&&this['changedDataMap']['size']>0x0&&this['ctx']['emit'](cO(0x36c),this[cO(0x19b)]());});const J=D['map'](L=>{const N=!!this['getValidationError'](L['rowKey'],L['key'])['length'];return{...L,'errorTip':N};});this[cM(0x3df)]['emit']('change',J,F),r&&this['ctx'][cM(0x392)]['pushState']({'changeList':x,'scrollX':this['ctx'][cM(0x39f)],'scrollY':this['ctx'][cM(0x479)],'type':'multiple'}),this['ctx'][cM(0x376)](cM(0x45a));}async['setItemValue'](p,r,u,w=!0x1,x=!0x1,z=!0x1,C=!0x0){const cP=bB;if(!this['rowKeyMap'][cP(0x11f)](p))return{};const {item:D}=this['rowKeyMap']['get'](p);let E=D[r],F=u;if(C&&this['ctx']['database']['getReadonly'](p,r))return{'oldValue':E,'newValue':E};D[r]!==null&&typeof D[r]=='object'&&(E=JSON['parse'](JSON['stringify'](D[r])));const G=p+'_'+r;this['originalDataMap']['has'](G)||this['originalDataMap']['set'](G,E);const J=this['originalDataMap']['get'](G),K=this['getRowDataItemForRowKey'](p);if(z){const L=this['getVirtualBodyCellByKey'](p,r);if(L?.['type']==='number'){if(['',void 0x0,null]['includes'](u))F=null;else{if(/^-?\d+(\.\d+)?$/['test'](''+u))F=Number(u);else{F=E;const O={'code':cP(0x2dd),'message':'Assignment\x20failed,\x20not\x20a\x20numeric\x20type','data':[{'rowKey':p,'key':r,'value':F,'oldValue':E,'row':K}]};this['ctx'][cP(0x376)]('error',O);}}}if(F===E)return{'oldValue':E,'newValue':E};let N=[{'rowKey':p,'key':r,'value':F,'oldValue':E,'row':K}];this['batchSetItemValue'](N,w,!0x1),this['ctx']['emit']('editChange',{'rowKey':p,'key':r,'oldValue':E,'value':F,'originalValue':J,'row':K});}else this['changedDataMap'][cP(0x357)](G,F),D[r]=F;return this[cP(0x3df)][cP(0x333)]('iterationChange')&&this['ctx']['emit']('iterationChange',{'rowKey':p,'key':r,'oldValue':E,'value':F,'originalValue':this['originalDataMap'][cP(0x313)](G),'row':K}),x&&this['ctx']['emit'](cP(0x45a)),{'oldValue':E,'newValue':F};}['getRowDataItemForRowKey'](o){if(!this['rowKeyMap']['has'](o))return{};const {item:p}=this['rowKeyMap']['get'](o);return p;}['setRowSelectionByCheckboxKey'](o,p){const cQ=bB,{CHECKBOX_KEY:r}=this['ctx']['config'];if(r){if(!this[cQ(0x234)]['has'](o))return!0x1;const {item:u}=this[cQ(0x234)][cQ(0x313)](o),w=u[r];this[cQ(0x139)][cQ(0x11f)](w)&&(this['checkboxKeyMap']['get'](w)||[])['forEach'](x=>{const cR=cQ,y=this[cR(0x464)]['get'](x);y&&(y['check']=p);});}}['toggleRowSelection'](o,p){const cS=bB,r=this['rowKeyMap'][cS(0x313)](o),u=this['selectionMap']['get'](o);if(!u)return;p==='selection-tree'||p==='tree-selection'?this['toggleTreeSelection'](o):(u['check']=!u['check'],this['setRowSelectionByCheckboxKey'](o,u[cS(0x12f)])),this['ctx']['emit']('toggleRowSelection',r);const w=this[cS(0x249)]();this['ctx'][cS(0x376)]('selectionChange',w),this['bufferCheckState'][cS(0x42e)]=!0x1,this['ctx'][cS(0x376)]('draw');}['toggleTreeSelection'](o){const cT=bB,p=this['getTreeSelectionState'](o),r=this['ctx']['config']['TREE_SELECT_MODE'];if(r===cT(0x138))p['checked']&&!p['indeterminate']?(this[cT(0x337)](o),this['setRowSelection'](o,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](o),this['setRowSelection'](o,!0x0,!0x1));else{if(r===cT(0x42c))p['checked']&&!p['indeterminate']?(this['clearTreeSelectionRecursive'](o),this['setRowSelection'](o,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](o),this['setRowSelection'](o,!0x0,!0x1));else{if(r==='strictly'){const u=this['selectionMap']['get'](o);u&&(u[cT(0x12f)]=!u['check'],this['setRowSelectionByCheckboxKey'](o,u['check']));}}}this['ctx']['emit']('selectionChange',this['getSelectionRows']()),this[cT(0x3df)]['emit']('draw');}[bB(0x3d3)](o){this['getTreeChildren'](o)['forEach'](p=>{this['setRowSelectionByParent'](p,!0x0),this['selectTreeSelectionRecursive'](p);});}['clearTreeSelectionRecursive'](o){this['getTreeChildren'](o)['forEach'](p=>{const cU=b;this[cU(0x46a)](p,!0x1),this['clearTreeSelectionRecursive'](p);});}['updateParentTreeSelection'](o){const cV=bB,p=this['getTreeParent'](o);if(!p)return;const r=this[cV(0x3f5)](p)['map'](z=>this['selectionMap']['get'](z)),u=r['filter'](z=>z?.[cV(0x12f)])[cV(0x13f)],w=r['length'];let x=!0x1;w>0x0&&(u===0x0?x=!0x1:u===w||this['ctx']['config']['TREE_SELECT_MODE']==='auto'?x=!0x0:this['ctx']['config'][cV(0x3c1)]==='cautious'&&(x=!0x1));const y=this['selectionMap']['get'](p);y&&y['check']!==x&&(y['check']=x,this['setRowSelectionByCheckboxKey'](p,x),this['updateParentTreeSelection'](p));}['setRowSelection'](o,p,r=!0x0){const cW=bB,u=this['selectionMap']['get'](o);u&&(u['check']=p,this[cW(0x265)](o,u['check']),this['ctx'][cW(0x376)](cW(0x1a2),p,u[cW(0x19f)]),(this['ctx']['config']['TREE_SELECT_MODE']==='auto'||this['ctx']['config']['TREE_SELECT_MODE']===cW(0x42c))&&this['updateParentTreeSelection'](o),r&&(this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw')));}['setRowSelectionByParent'](o,p){const cX=bB,r=this['selectionMap']['get'](o);r&&(r['check']=p,this['setRowSelectionByCheckboxKey'](o,r[cX(0x12f)]));}[bB(0x249)](){let o=[];return this['selectionMap']['forEach'](p=>{p['check']&&o['push'](p['row']);}),o;}['getRowSelection'](o){const cY=bB,p=this[cY(0x464)]['get'](o);return p?p['check']:!0x1;}['getTreeSelectionState'](p){const cZ=bB;if(!this['getRowForRowKey'](p))return{'checked':!0x1,'indeterminate':!0x1};const r=this[cZ(0x464)]['get'](p),u=r?.['check']||!0x1;if(this['getTreeChildren'](p)['length']===0x0)return{'checked':u,'indeterminate':!0x1};let w=!0x1,x=u;if(this['ctx']['config']['TREE_SELECT_MODE']==='auto'){const y=F=>{const d0=cZ,G=this['getTreeChildren'](F);let J=[];for(const K of G)J[d0(0x420)](K),J[d0(0x420)](...y(K));return J;},z=y(p)[cZ(0x3e4)](F=>this[cZ(0x464)]['get'](F)),C=z['filter'](F=>F?.['check'])['length'],D=z['length'],E=C>0x0;w=E&&C!==D,x=u||E,u&&D>0x0&&C===0x0&&(x=!0x1,w=!0x1);}else{if(this['ctx']['config'][cZ(0x3c1)]==='cautious'){const F=O=>{const d1=cZ,R=this[d1(0x3f5)](O);let S=[];for(const T of R)S['push'](T),S['push'](...F(T));return S;},G=F(p)['map'](O=>this['selectionMap']['get'](O)),J=G['filter'](O=>O?.['check'])[cZ(0x13f)],K=G['length'],L=J>0x0,N=J===K;w=L&&!N,x=u||N,u&&K>0x0&&J===0x0&&(x=!0x1,w=!0x1);}else this[cZ(0x3df)][cZ(0x465)][cZ(0x3c1)]==='strictly'&&(w=!0x1,x=u);}return{'checked':x,'indeterminate':w};}['getTreeChildren'](o){const p=this['getRowForRowKey'](o);if(!p||!p['item']||!p['item']['children'])return[];const r=[],u=w=>{const d2=b;for(const x of w){const y=this['getRowKeyByItem'](x);y&&r[d2(0x420)](y),x['children']&&x[d2(0x331)][d2(0x13f)]>0x0&&u(x['children']);}};return u(p['item']['children']),r;}[bB(0x3b5)](o){const d4=bB,p=(r,u)=>{const d3=b;for(const w of r){const x=this['getRowKeyByItem'](w);if(w['children'])for(const y of w['children']){if(this[d3(0x450)](y)===u)return x;const z=p(w[d3(0x331)],u);if(z)return z;}}return null;};return p(this[d4(0x3ed)],o);}['getRowSelectable'](o){const {selectable:p,item:r,rowIndex:u}=this['rowKeyMap']['get'](o);return typeof p=='function'?p({'row':r,'rowIndex':u}):p;}['toggleAllSelection'](){const d5=bB;this['ctx']['config']['TREE_SELECT_MODE']==='auto'||this['ctx']['config'][d5(0x3c1)]==='cautious'?this['rowKeyMap']['forEach']((p,r)=>{const d6=d5;let u=p[d6(0x40d)];if(typeof u=='function'&&(u=u({'row':p['item'],'rowIndex':p['rowIndex']})),u){const w=this['selectionMap']['get'](r);w&&(w[d6(0x12f)]=!0x0,this['setRowSelectionByCheckboxKey'](r,!0x0));}}):this['rowKeyMap']['forEach']((p,r)=>{let u=p['selectable'];typeof u=='function'&&(u=u({'row':p['item'],'rowIndex':p['rowIndex']})),u&&this['setRowSelection'](r,!0x0,!0x1);});const o=this['getSelectionRows']();this['ctx']['emit'](d5(0x2d3),o),this[d5(0x3df)]['emit'](d5(0x162),o),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}[bB(0x356)](o=!0x1){const d7=bB,p=this['ctx']['config']['TREE_SELECT_MODE']==='auto'||this['ctx'][d7(0x465)]['TREE_SELECT_MODE']==='cautious';o?p?this['rowKeyMap']['forEach']((u,w)=>{const x=this['selectionMap']['get'](w);x&&(x['check']=!0x1,this['setRowSelectionByCheckboxKey'](w,!0x1));}):this['rowKeyMap']['forEach']((u,w)=>{this['setRowSelection'](w,!0x1,!0x1);}):(this['selectionMap']['clear'](),this['rowKeyMap']['forEach']((u,w)=>{const d8=d7;this[d8(0x464)][d8(0x357)](w,{'check':!0x1,'row':u['item'],'key':w});}));const r=this['getSelectionRows']();this[d7(0x3df)]['emit'](d7(0x356)),this['ctx']['emit'](d7(0x162),r),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['getCheckedState'](){const d9=bB,{buffer:p,...r}=this['bufferCheckState'];if(p)return r;const u=this['rowKeyMap']['size'];let w=0x0,x=0x0;const y=this['selectionMap']['size'],z=Array['from'](this['selectionMap']['values']())[d9(0x3c4)](G=>G['check']);this['rowKeyMap']['forEach']((G,J)=>{const da=d9;var K;(K=this['selectionMap']['get'](J))!=null&&K['check']&&(w+=0x1);let L=G[da(0x40d)];typeof L=='function'&&(L=L({'row':G['item'],'rowIndex':G['rowIndex']})),L&&(x+=0x1);});const C=y>u&&w===0x0&&z,D=x&&x>w&&w>0x0||C,E=x!==0x0,F=!!x&&x===w;return this['bufferCheckState']={'buffer':!0x0,'check':F,'indeterminate':D,'selectable':E},{'check':F,'indeterminate':D,'selectable':E};}['updateColIndexKeyMap'](o=[]){this['colIndexKeyMap']['clear'](),o['forEach'](p=>{const db=b;this[db(0x29d)]['set'](p['colIndex'],p['key']);});}['getColumnByColIndex'](o){const dd=bB;var p;const r=this['colIndexKeyMap']['get'](o);if(r&&this['headerMap']['has'](r))return(p=this['headerMap']['get'](r))==null?void 0x0:p[dd(0x260)];}[bB(0x375)](o){const p=this['headerMap']['get'](o);if(p)return p;}['getColIndexForKey'](o){var p;if(o&&this['headerMap']['has'](o))return(p=this['headerMap']['get'](o))==null?void 0x0:p['colIndex'];}['getColHeaderByIndex'](o){const de=bB,p=this[de(0x29d)]['get'](o);if(p&&this['headerMap']['has'](p))return this['headerMap']['get'](p);}['getChangedData'](){let o=[];return this['changedDataMap']['forEach']((p,r)=>{const df=b,u=this[df(0x213)]['get'](r),w=r['split']('_')[0x0],x=r['split']('_')[0x1];u!==p&&o['push']({'rowKey':w,'colKey':x,'originalValue':u,'row':this['ctx'][df(0x391)]['getRowDataItemForRowKey'](w),'value':p});}),o;}['getChangedRows'](){const dg=bB,o=new Set();this[dg(0x308)]['forEach']((r,u)=>{const dj=dg,w=this[dj(0x213)][dj(0x313)](u),x=u['split']('_')[0x0];w!==r&&o[dj(0x43f)](x);});let p=[];return o['forEach'](r=>{p['push'](this['ctx']['database']['getRowDataItemForRowKey'](r));}),p;}['isHasChangedData'](o,p){const dk=bB,r=o+'_'+p;if(!this['changedDataMap'][dk(0x11f)](r))return!0x1;const u=this['originalDataMap']['get'](r),w=this['changedDataMap']['get'](r);return u!==w;}['getPositionForRowIndex'](o){const dm=bB;return o<this['positions'][dm(0x13f)]?this['positions'][o]:{'height':0x0,'top':0x0,'bottom':0x0,'calculatedHeight':0x0};}['setHeader'](o,p){return o?(this['headerMap']['set'](o,p),!0x0):!0x1;}[bB(0x1ff)](o,p){const dn=bB,{DISABLED:r}=this['ctx']['config'];if(r)return!0x0;const u=this['rowKeyMap']['get'](o),w=this['headerMap']['get'](p);if(!u||!w)return!0x0;const x=u['readonly'],y=w['readonly'],{BODY_CELL_READONLY_METHOD:z}=this[dn(0x3df)][dn(0x465)];if(typeof z=='function'&&w){const C=z({'row':u['item'],'rowIndex':u['rowIndex'],'colIndex':w['colIndex'],'column':w['column'],'value':this[dn(0x322)](o,p)});if(C!==void 0x0)return C;}return y||x;}['clearValidate'](){this['validationErrorMap']['clear']();}['hasValidationError'](){return this['validationErrorMap']['size']!==0x0;}['getValidator'](o,p){return this['ctx']['database']['getReadonly'](o,p)?new Promise(r=>{r([]);}):new Promise(r=>{const dp=b,u=this['rowKeyMap']['get'](o),w=this['headerMap'][dp(0x313)](p),{BODY_CELL_RULES_METHOD:x}=this['ctx']['config'];if(u===void 0x0||w===void 0x0)return r([]);const y=w['column'];let z=y[dp(0x389)];if(typeof x=='function'){const C=x({'row':u['item'],'rowIndex':u['rowIndex'],'colIndex':w['colIndex'],'column':y,'value':this['getItemValue'](o,p)});C&&(z=C);}if(z){const D={'row':u['item'],'rowIndex':u['rowIndex'],'colIndex':w['colIndex'],'column':y,'key':p,'rowKey':o,'value':this['getItemValue'](o,p),'field':p,'fieldValue':this['getItemValue'](o,p)},E=new Ls(z)['validate'](D);this['setValidationError'](o,p,E),r(E);}else this['clearValidationError'](o,p),r([]);});}[bB(0x202)](o,p){let r=0x0;for(let u=0x0;u<p;u++){const w=this['positions'][o+u];w&&(r+=w['height']);}return r;}[bB(0x1ed)](r){const dr=bB,{rowIndex:C,key:D,rowKey:E,row:F,value:K,colIndex:O,relationRowKeys:a0,relationColKeys:a1,rowspan:a2,height:a3,width:a4,colspan:a5,mergeRow:a6,mergeCol:a7}=r;if(a2===0x1&&a5===0x1)return{'xArr':[O,O],'yArr':[C,C],'rowspan':a2,'colspan':a5,'height':a3,'width':a4,'offsetTop':0x0,'offsetLeft':0x0,'dataList':[{'rowKey':E,'key':D,'row':F,'value':K}]};let a8=C,a9=C,aa=O,ab=O,ad=[],ae=0x0,af=0x0,ag=0x0,ai=0x0;if(a2!==0x1&&a6){ai=a4;const aj=a0['reduce']((ak,am)=>{const an=this['getItemValue'](E,am)??'';return''+ak+an;},'');for(let ak=C-0x1;ak>=0x0;ak--){const am=this['rowIndexRowKeyMap']['get'](ak)||'',an=a0['reduce']((ao,ap)=>{const dq=b,aq=this[dq(0x322)](am,ap)??'';return''+ao+aq;},'');if(aj===an)a8=ak;else break;}for(let ao=C;ao<=this[dr(0x3df)]['maxRowIndex'];ao++){const ap=this[dr(0x126)]['get'](ao)||'',aq=a0['reduce']((ar,au)=>{const av=this['getItemValue'](ap,au)??'';return''+ar+av;},'');if(aj===aq)a9=ao;else break;}for(let ar=a8;ar<C;ar++){const {height:au}=this['positions'][ar];ae+=au;}for(let av=a8;av<=a9;av++){const {height:aw}=this['positions'][av];ag+=aw;const ax=this['rowIndexRowKeyMap'][dr(0x313)](av)||'',{item:ay}=this['rowKeyMap'][dr(0x313)](ax),az=this['getItemValue'](ax,D);ad['push']({'rowKey':ax,'key':D,'value':az,'row':ay});}}if(a5!==0x1&&a7){ag=a3;for(let aA=O-0x1;aA>=0x0;aA--){const aB=this[dr(0x1c7)](aA);if(!aB)break;const aC=this['getItemValue'](E,D),aD=this[dr(0x322)](E,aB['key']);if(aC===aD&&a1['includes'](aB['key']))aa=aA;else break;}for(let aE=O;aE<=this['ctx']['maxColIndex'];aE++){const aF=this['getColumnByColIndex'](aE);if(!aF)break;const aG=this['getItemValue'](E,D),aH=this['getItemValue'](E,aF['key']);if(aG===aH&&a1['includes'](aF['key']))ab=aE;else break;}for(let aI=aa;aI<O;aI++){const aJ=this['getColumnByColIndex'](aI);if(!aJ)break;af+=aJ['width']||0x64;}for(let aK=aa;aK<=ab;aK++){const aL=this['getColumnByColIndex'](aK);if(!aL)break;ai+=aL['width']||0x64,ad['push']({'rowKey':E,'key':aL[dr(0x407)],'value':this['getItemValue'](E,aL['key']),'row':F});}}return{'xArr':[aa,ab],'yArr':[a8,a9],'rowspan':a2,'colspan':a5,'height':ag,'width':ai,'offsetTop':ae,'offsetLeft':af,'dataList':ad};}['setValidationErrorByRowKey'](o,p,r){const u=o+'_'+p,w=this['getRowForRowKey'](o),x=w?.['rowIndex'],y=this['getColumnByKey'](p);if(!o||!y||!w)return;const z=this['getItemValue'](o,p),C=[{'key':p,'rowKey':o,'rowIndex':x,'colIndex':y['colIndex'],'column':y['column'],'row':w,'value':z,'message':r,'field':p,'fieldValue':z}];this['validationErrorMap']['set'](u,C);}['setValidationError'](o,p,r){const du=bB,u=o+'_'+p;this[du(0x301)][du(0x357)](u,r);}[bB(0x3e2)](o,p){const dv=bB,r=o+'_'+p;this['validationErrorMap']['has'](r)&&this['validationErrorMap'][dv(0x33b)](r);}['getValidationError'](o,p){const r=o+'_'+p;return this['validationErrorMap']['get'](r)||[];}['getVirtualBodyCell'](o,p,r=!0x0){const dw=bB,u=this['getColumnByColIndex'](p),w=this[dw(0x1a7)](o);return!u||!w?void 0x0:new Vt(this['ctx'],o,p,0x0,0x0,0x0,0x0,u,w['item'],dw(0x380),r);}[bB(0x481)](o,p){const r=this['getRowIndexForRowKey'](o),u=this['getColIndexForKey'](p);if(!(r===void 0x0||u===void 0x0))return this['getVirtualBodyCell'](r,u);}['hasMergeCell'](o,p){let r=!0x1;for(let u=p[0x0];u<=p[0x1];u++)for(let w=o[0x0];w<=o[0x1];w++){const x=this['getVirtualBodyCell'](u,w);if(x&&(x['rowspan']!==0x1||x['colspan']!==0x1)){r=!0x0;break;}}return r;}[bB(0x183)](o,p=0x0){let r=p;return o['forEach'](u=>{const dx=b;if(Array['isArray'](u['children'])&&u['children']['length']>0x0){const w=this['calculateMaxTreeDepth'](u[dx(0x331)],p+0x1);r=Math['max'](r,w);}}),r;}[bB(0x12d)](o){this['overlayerAutoHeightMap']=o;}['getOverlayerAutoHeightMap'](){return this['overlayerAutoHeightMap'];}['getOverlayerAutoHeight'](o,p){const r=o+'_'+p;return this['overlayerAutoHeightMap']['get'](r)||0x0;}['setCustomHeader'](o,p=!0x1){const dy=bB;if(['fixedData',dy(0x435),'hideData','resizableData']['forEach'](r=>{const u=o[r];u!==void 0x0&&(this['customHeader'][r]=u);}),!p){const r=this['clearCustomHeaderInvalidValues'](this['columns']);this[dy(0x3df)]['emit']('customHeaderChange',r);}}[bB(0x3b6)](){const dz=bB;this['customHeader']={},this['ctx']['emit']('resetHeader'),this[dz(0x3df)]['emit']('customHeaderChange',this['customHeader']);}[bB(0x16d)](){return this['customHeader'];}['setCustomHeaderResizableData'](o,p){let {resizableData:r={}}=this['customHeader'];r[o]=p,this['setCustomHeader']({'resizableData':r});}['setCustomHeaderHideData'](o,p){const dA=bB;let {hideData:r={}}=this['customHeader'];o['forEach'](u=>{r[u]=p;}),this[dA(0x2b2)]({'hideData':r}),this[dA(0x3df)]['emit']('resetHeader');}['setCustomHeaderFixedData'](o,p){const dB=bB;let {fixedData:r={}}=this['customHeader'];o['forEach'](u=>{r[u]=p;}),this['setCustomHeader']({'fixedData':r}),this['ctx']['emit'](dB(0x354));}['clearCustomHeaderInvalidValues'](o){const p=(u,w={})=>{const dC=b;u[dC(0x446)](x=>{const dE=dC;x['children']&&x['children']['length']>0x0&&p(x['children'],w);const y=(z,C)=>{const dD=b;var D,E;const F=(D=this['customHeader'][z])==null?void 0x0:D[x['key']];F!==void 0x0&&F!==C&&(w[z]||(w[z]={}),w[z][x[dD(0x407)]]=F,z==='fixedData'&&!F&&!C&&((E=w[z])==null||delete E[x['key']]));};y('fixedData',x['fixed']),y('sortData',x['sort']),y('hideData',x['hide']),y('resizableData',x[dE(0x3a0)]);});};let r={};return p(o,r),r;}['setMaxRowHeightItem'](o,p,r){this['maxRowHeightCellMap']['set'](o,{'key':p,'height':r});}[bB(0x23b)](o){const dF=bB;return this['maxRowHeightCellMap'][dF(0x313)](o);}['clearChangeData'](){this['changedDataMap']['clear']();}}class ws{constructor(o){m(this,'ctx'),m(this,'history',[]),m(this,'historyIndex',-0x1),this['ctx']=o,this['init']();}[bB(0x27c)](){this['ctx']['on']('keydown',o=>{const dG=b;if(!this['ctx']['editing']){if(o[dG(0x328)]&&!o['shiftKey']&&o[dG(0x415)]==='KeyZ'||o['metaKey']&&!o['shiftKey']&&o['code']===dG(0x133)){o['preventDefault'](),this[dG(0x3df)][dG(0x3e3)](),this['ctx']['clearAutofill'](),this['backState']();return;}if(o[dG(0x328)]&&o['code']==='KeyY'||o['ctrlKey']&&o['shiftKey']&&o['code']==='KeyZ'||o['metaKey']&&o['shiftKey']&&o['code']==='KeyZ'){o[dG(0x19a)](),this[dG(0x3df)][dG(0x3e3)](),this['ctx'][dG(0x429)](),this[dG(0x214)]();return;}}});}['pushState'](o){const dH=bB,{HISTORY_NUM:p=0x0,ENABLE_HISTORY:r}=this['ctx']['config'];r&&(this['history']['push'](o),this['history']['length']>p&&this['history']['splice'](0x0,0x1),this['historyIndex']=this[dH(0x392)]['length']-0x1);}['backState'](){const dI=bB;if(this['historyIndex']>=0x0){const {changeList:o,scrollX:p,scrollY:r}=this['history'][this['historyIndex']],u=o[dI(0x3e4)](w=>({'rowKey':w['rowKey'],'key':w['key'],'value':w['oldValue'],'row':{}}));this[dI(0x3df)]['setScroll'](p,r),this['ctx']['database']['batchSetItemValue'](u,!0x1,!0x1,dI(0x42f)),this['historyIndex']-=0x1;}}['forwardState'](){const dJ=bB;if(this[dJ(0x351)]<this['history']['length']-0x1){this[dJ(0x351)]+=0x1;const {changeList:o}=this['history'][this['historyIndex']],p=o['map'](r=>({'rowKey':r[dJ(0x459)],'key':r['key'],'value':r['newValue'],'row':{}}));this[dJ(0x3df)]['database']['batchSetItemValue'](p,!0x1,!0x1,'forward');}}['clear'](){this['history']=[],this['historyIndex']=-0x1;}}class Rs{constructor(o){m(this,'eventTasks',new Set()),m(this,'ctx'),this['ctx']=o,this['init']();}['init'](){const dK=bB;this['bind'](window,'resize',this['handleResize']['bind'](this)),this['bind'](window,dK(0x13a),this['handleMouseUp'][dK(0x412)](this)),this['bind'](window,'mousemove',this['handleMousemove'][dK(0x412)](this)),this[dK(0x412)](window,'blur',this['handleOutsideMousedown'][dK(0x412)](this)),this['bind'](window,'mousedown',this['handleOutsideMousedown']['bind'](this)),this['bind'](this['ctx'][dK(0x33d)],dK(0x44d),this['handleClick']['bind'](this)),this['bind'](window,'keydown',this['handleKeydown']['bind'](this)),this['bind'](this['ctx']['stageElement'],'wheel',this['handleWheel']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx'][dK(0x33d)],'touchstart',this['handleTouchstart']['bind'](this),{'passive':!0x1}),this[dK(0x412)](this[dK(0x3df)]['stageElement'],'touchend',this['handleTouchend']['bind'](this)),this['bind'](this['ctx']['stageElement'],'touchmove',this['handleTouchmove']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx']['stageElement'],'contextmenu',this['handleContextMenu']['bind'](this)),this['bind'](this[dK(0x3df)]['stageElement'],'mousedown',this['handleMouseDown']['bind'](this)),this[dK(0x412)](this[dK(0x3df)][dK(0x33d)],'dblclick',this[dK(0x17f)]['bind'](this)),this['bind'](this[dK(0x3df)]['stageElement'],'mouseover',this['handleMouseover']['bind'](this)),this['bind'](this['ctx']['stageElement'],'mouseout',this['handleMouseout']['bind'](this)),this[dK(0x412)](document,'selectionchange',this[dK(0x335)]['bind'](this));}['selectionchange'](){const dL=bB;this[dL(0x3df)]['domSelectionStr']='';const o=window[dL(0x17e)]();o&&o['toString']()&&(this['ctx']['domSelectionStr']=o['toString']());}['clearDomSelection'](){const o=window['getSelection']();o&&!o['isCollapsed']&&o['removeAllRanges']();}['destroy'](){const dM=bB;Array[dM(0x47c)](this[dM(0x3c8)])['forEach'](({target:o,name:p,fn:r,options:u})=>{this['unbind'](o,p,r,u);}),this['eventTasks'][dM(0x329)]();}['handleResize'](o){const dN=bB;this['ctx']['emit'](dN(0x354),o),this['ctx']['emit']('resize',o);}['handleMouseDown'](o){const dO=bB;this[dO(0x3d5)](),o['button']===0x0&&(this['ctx']['mousedown']=!0x0),this['ctx']['emit']('mousedown',o);}[bB(0x309)](o){const dP=bB,p=o,r=this['ctx'][dP(0x2d7)]['getBoundingClientRect'](),u=p['clientX']-r['left'],w=p['clientY']-r['top'];this['ctx']['mouseX']=u,this[dP(0x3df)]['mouseY']=w,this['ctx']['emit'](dP(0x27a),o);}['handleMouseUp'](o){const dQ=bB;o['button']===0x0&&(this['ctx']['mousedown']=!0x1),this['ctx']['emit'](dQ(0x13a),o);}['handleClick'](o){const dR=bB;this['ctx'][dR(0x376)]('click',o);}['handleKeydown'](o){const dS=bB,{ENABLE_KEYBOARD:p}=this['ctx']['config'];p&&this['ctx']['isTarget'](o)&&(this['ctx']['dragHeaderIng']||this['ctx']['emit'](dS(0x1f5),o));}['handleWheel'](o){const dT=bB;this[dT(0x3df)]['emit']('wheel',o);}['handleTouchstart'](o){const dU=bB;this['ctx']['emit'](dU(0x1ea),o);}['handleTouchend'](o){const dV=bB;this[dV(0x3df)]['emit']('touchend',o);}['handleTouchmove'](o){const dW=bB;this['ctx'][dW(0x376)](dW(0x256),o);}[bB(0x456)](o){o['preventDefault'](),this['ctx']['emit']('contextMenu',o);}['handleMouseover'](o){this['ctx']['isMouseoverTargetContainer']=!0x0,this['ctx']['emit']('mouseover',o);}['handleMouseout'](o){const dX=bB;this['ctx']['isMouseoverTargetContainer']=!0x1,this['ctx'][dX(0x376)]('mouseout',o);}['handleDblclick'](o){this['ctx']['emit']('dblclick',o);}['handleOutsideMousedown'](o){const dY=bB;this['ctx']['selector']['enable']&&(o['target']instanceof Window||o['target']instanceof Node&&!this['ctx']['containerElement'][dY(0x436)](o['target']))&&this[dY(0x3df)][dY(0x376)]('outsideMousedown',o);}['bind'](o,p,r,u){o['addEventListener'](p,r,u),this['eventTasks']['add']({'target':o,'name':p,'fn':r,'options':u});}['unbind'](o,p,r,u){const dZ=bB;o['removeEventListener'](p,r,u);for(const w of this[dZ(0x3c8)])if(w['target']===o&&w['name']===p&&w['fn']===r){this['eventTasks']['delete'](w);break;}}}class zs{constructor(){const e0=bB;m(this,e0(0x152),new Map());}['has'](o){return this['events']['has'](o);}['on'](o,p){const e1=bB,r=this[e1(0x152)]['get'](o)||[];r['push'](p),this[e1(0x152)]['set'](o,r);}[bB(0x1ab)](o,p){const r=(...u)=>{p(...u),this['off'](o,r);};return this['on'](o,r),this;}['off'](o,p){const e2=bB,r=this[e2(0x152)]['get'](o);if(r){const u=r[e2(0x42d)](p);u>=0x0&&(r[e2(0x3bb)](u,0x1),r['length']===0x0?this['events']['delete'](o):this[e2(0x152)]['set'](o,r));}}['emit'](o,...p){const e3=bB,r=this['events']['get'](o);r&&r[e3(0x446)](u=>{u(...p);});}['destroy'](){this['events']['clear']();}}class Cs{constructor(o){m(this,'ctx'),m(this,'textCacheMap',new Map());const p=o['getContext']('2d');if(!p)throw new Error('canvas\x20context\x20not\x20found');this['ctx']=p;}[bB(0x3b4)](){this['textCacheMap']['clear']();}['scale'](o){this['ctx']['setTransform'](0x1,0x0,0x0,0x1,0x0,0x0),this['ctx']['scale'](o,o);}['save'](){this['ctx']['save']();}['restore'](){this['ctx']['restore']();}['translate'](o,p){this['ctx']['translate'](o,p);}[bB(0x3ac)](o='default'){this['ctx']['canvas']['style']['cursor']=o;}['clear'](o=0x0,p=0x0,r,u){const e4=bB;this[e4(0x3df)]['clearRect'](o,p,r||this['ctx']['canvas']['width'],u||this['ctx'][e4(0x3c2)]['height']);}['drawShadow'](p,r,u,w,x){const e5=bB,{fillColor:y,side:z,shadowWidth:C,colorStart:D,colorEnd:E}=x;this['ctx']['save'](),y&&(this['ctx']['fillStyle']=y,this['ctx']['fillRect'](p,r,u,w));let F;switch(z){case'left':F=this['ctx']['createLinearGradient'](p-C,r,p,r),F['addColorStop'](0x0,D),F[e5(0x1c5)](0x1,E),this['ctx']['fillStyle']=F,this['ctx'][e5(0x1d7)](p-C,r,C,w);break;case'right':F=this['ctx']['createLinearGradient'](p+u,r,p+u+C,r),F[e5(0x1c5)](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this['ctx']['fillRect'](p+u,r,C,w);break;case'top':F=this[e5(0x3df)]['createLinearGradient'](p,r-C,p,r),F['addColorStop'](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this['ctx']['fillRect'](p,r-C,u,C);break;case'bottom':F=this['ctx'][e5(0x289)](p,r+w,p,r+w+C),F['addColorStop'](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this[e5(0x3df)]['fillRect'](p,r+w,u,C);break;default:console['error']('Invalid\x20side\x20specified\x20for\x20shadow');break;}this['ctx']['restore']();}['drawLine'](o,p){const e6=bB;if(o['length']<0x4||o['length']%0x2!==0x0)throw new Error('A\x20valid\x20array\x20of\x20points\x20is\x20required\x20to\x20draw\x20a\x20line');this['ctx']['save']();const {borderColor:r='black',borderWidth:u=0x1}=p;this['ctx']['beginPath'](),this['ctx']['moveTo'](o[0x0]-0.5,o[0x1]-0.5);for(let w=0x2;w<o['length'];w+=0x2)this['ctx']['lineTo'](o[w]-0.5,o[w+0x1]-0.5);this['ctx']['strokeStyle']=r,this['ctx']['lineWidth']=u,p['lineDash']&&(this['ctx']['lineDashOffset']=p[e6(0x46e)]??0x0,this[e6(0x3df)]['setLineDash'](p['lineDash'])),p['fillColor']&&(this['ctx']['fillStyle']=p['fillColor'],this['ctx'][e6(0x45c)]()),p['borderColor']&&(this[e6(0x3df)]['strokeStyle']=p['borderColor']),this['ctx']['stroke'](),this['ctx']['closePath'](),this[e6(0x3df)]['restore']();}['drawImage'](o,p,r,u,w){const e7=bB;this[e7(0x3df)]['save'](),this['ctx']['drawImage'](o,p,r,u,w),this[e7(0x3df)]['restore']();}['drawRect'](p,r,u,w,{borderWidth:x=0x1,borderColor:y,fillColor:z,radius:C=0x0}={}){const e8=bB;if(this[e8(0x3df)][e8(0x29a)](),this['ctx']['beginPath'](),z!==void 0x0&&(this[e8(0x3df)]['fillStyle']=z),y!==void 0x0&&(this['ctx'][e8(0x334)]=x,this['ctx'][e8(0x25b)]=y),C===0x0)this[e8(0x3df)]['rect'](p-0.5,r-0.5,u,w);else{const [D,E,F,G]=typeof C=='number'?[C,C,C,C]:C;this['ctx']['moveTo'](p+D,r),this[e8(0x3df)]['arcTo'](p+u,r,p+u,r+E,E),this['ctx']['arcTo'](p+u,r+w,p+u-F,r+w,F),this['ctx']['arcTo'](p,r+w,p,r+w-G,G),this['ctx']['arcTo'](p,r,p+D,r,D);}z!==void 0x0&&this['ctx']['fill'](),y!==void 0x0&&this['ctx']['stroke'](),this[e8(0x3df)]['restore']();}['drawText'](r='',C,D,E,F,K={}){const e9=bB;var O;this['ctx']['save']();const {font:a0=e9(0x1c1),align:a1='center',color:a2=e9(0x129),padding:a3=0x0,verticalAlign:a4='middle',maxLineClamp:a5=0x1,autoRowHeight:a6=!0x1,offsetLeft:a7=0x0,offsetRight:a8=0x0}=K;if(this['ctx']['font']=a0,this['ctx']['fillStyle']=a2,this['ctx']['textAlign']=a1,['',null,void 0x0][e9(0x31e)](r))return this['ctx']['restore'](),!0x1;const a9=parseInt(((O=a0['match'](/\d+/))==null?void 0x0:O[0x0])||'12')*(K[e9(0x1cd)]||1.2),aa=E-a3*0x2-a7-a8;let ab=!0x1;const ad=Math[e9(0x2c8)]((F-0x2*a3)/a9);let ae=this['wrapText'](r,aa,K[e9(0x148)]),af=Math['min'](ae['length'],Math[e9(0x181)](ad,0x1));a5==='auto'&&a6?af=ae['length']:typeof a5=='number'&&a5<af&&a5!==0x1?af=a5:(a5===0x1&&(ae=[r],af=0x1),a5==='auto'&&ad===0x1&&(ae=[r],af=0x1));let ag=D+a3;const ai=Math[e9(0x2c8)](af*a9);a4==='middle'?ag=D+(F-ai)/0x2:a4==='bottom'&&(ag=D+F-ai-a3);let aj=C+a3+a7;a1==='center'?aj=C+E/0x2:a1==='right'&&(aj=C+E-a3-a8);for(let ak=0x0;ak<ae['length'];ak++){const am=ae[ak],an=ag+ak*a9;if(this['ctx'][e9(0x2c4)]='top',ak===af-0x1){const ao=ae[e9(0x3f9)](ak)[e9(0x2c2)](''),{_text:ap,ellipsis:aq}=this['handleEllipsis'](ao,E,a3,a0);this['ctx']['fillText'](ap,aj,an),ab=aq;break;}this['ctx']['fillText'](am,aj,an);}if(K['textCallback']&&ae[e9(0x13f)]){const ar=ae['reduce']((ay,az)=>Math['max'](ay,this['ctx']['measureText'](az)['width']),0x0),au=Math['round'](ar);let av=aj,aw=aj+au;a1==='center'?(av=aj-au/0x2,aw=aj+au/0x2):a1===e9(0x2e8)&&(av=aj-au,aw=aj);const ax={'x':aj,'y':ag,'width':au,'height':ai,'left':av,'right':aw,'top':ag,'bottom':ag+ai};K['textCallback'](ax);}return this['ctx']['restore'](),ab;}[bB(0x3e6)](p,r,u=''){const ea=bB;if(!p)return[''];if(u&&this['textCacheMap']['has'](u))return this[ea(0x127)]['get'](u)||[''];const w=[],x=p['split']('\x0a');for(const z of x){if(z===''){w['push']('');continue;}const C=z['split']('');let D='';for(const E of C){const F=D+E;this['ctx']['measureText'](F)['width']<=r?D=F:D?(w[ea(0x420)](D),D=E):(w['push'](E),D='');}D&&w['push'](D);}const y=w['length']>0x0?w:[''];return u&&this['textCacheMap']['set'](u,y),y;}[bB(0x2c7)](p='',r,u={}){const eb=bB;var w;const {font:x='12px\x20Arial',padding:y=0x0,align:z=eb(0x37d),color:C='#495060',maxLineClamp:D=0x1,cacheTextKey:E=''}=u;this['ctx']['save'](),this['ctx']['font']=x,this['ctx']['fillStyle']=C,this['ctx']['textAlign']=z;const F=parseInt(((w=x['match'](/\d+/))==null?void 0x0:w[0x0])||'12'),G=F*(u['lineHeight']||1.2),J=r-y*0x2,K=this['wrapText'](p,J,E);let L=0x1;return D==='auto'?L=K['length']:K['length']>D?L=D:L=K['length'],this['ctx']['restore'](),Math[eb(0x181)](Math['floor'](L*G+y*0x2),Math['floor'](F+y*0x2));}['handleEllipsis'](p,r,u=0x0,w=bB(0x1c1)){const ed=bB;this['ctx']['save']();let x=!0x1,y=p;if(this[ed(0x3df)]['font']=w,p==null||p==='')return this['ctx']['restore'](),{'_text':'','ellipsis':x};const z=this['ctx']['measureText']('...')['width'];if(r<=z+u*0x2)return this[ed(0x3df)][ed(0x40a)](),{'_text':'','ellipsis':!0x0};const C=this['ctx'][ed(0x2be)](p)['width'],D=r-u*0x2;if(C&&C>=D){x=!0x0;let E=0x0;for(let F=0x0;F<p['length'];F++)if(E+=this['ctx'][ed(0x2be)](p[F])['width'],E>=D-z){y=p['slice'](0x0,F)+'...',x=!0x0;break;}}return this['ctx']['restore'](),{'_text':y,'ellipsis':x};}}class tl{constructor(o){const ee=bB;m(this,'_config',{}),m(this,'CSS_PREFIX','e-virt-table'),m(this,'ICONS',[]),m(this,'ROW_KEY',''),m(this,'DISABLED',!0x1),m(this,'HEADER_FONT','12px\x20normal\x20Arial'),m(this,'BODY_FONT',ee(0x218)),m(this,'BORDER',!0x0),m(this,'STRIPE',!0x1),m(this,'STRIPE_COLOR',ee(0x196)),m(this,'BORDER_COLOR','#e1e6eb'),m(this,ee(0x22f),0x0),m(this,ee(0x23e),'#CDD0DC'),m(this,'EMPTY_BODY_HEIGHT',0x78),m(this,'EMPTY_CUSTOM_STYLE',{}),m(this,ee(0x379),ee(0x1c3)),m(this,'EMPTY_TEXT','暂无数据'),m(this,'LOADING_TEXT','加载中...'),m(this,'MAX_HEIGHT',0x3e8),m(this,'BORDER_RADIUS',0x8),m(this,'ENABLE_OFFSET_HEIGHT',!0x1),m(this,'OFFSET_HEIGHT',0x0),m(this,'HEADER_HEIGHT',0x24),m(this,'ENABLE_HEADER_STICKY',!0x1),m(this,'HEADER_BG_COLOR','#F8FAFF'),m(this,'BODY_BG_COLOR','#FFF'),m(this,'HEADER_TEXT_COLOR','#1D2129'),m(this,ee(0x418),ee(0x195)),m(this,'BODY_TEXT_COLOR','#4E5969'),m(this,'FOOTER_TEXT_COLOR','#4E5969'),m(this,ee(0x143),''),m(this,'LOADING_ICON_COLOR','#4E5969'),m(this,'EXPAND_ICON_SVG',''),m(this,'SHRINK_ICON_SVG',''),m(this,'EXPAND_ICON_COLOR','#4E5969'),m(this,ee(0x344),'#4E5969'),m(this,ee(0x384),ee(0x43a)),m(this,ee(0x2a6),0x6),m(this,ee(0x217),ee(0x26d)),m(this,'COLUMNS_VERTICAL_ALIGN',ee(0x317)),m(this,'EXPAND_LAZY',!0x0),m(this,'DEFAULT_EXPAND_ALL',!0x1),m(this,ee(0x316),0x64),m(this,'CELL_HEIGHT',0x24),m(this,'CELL_PADDING',0x8),m(this,'CELL_HOVER_ICON_SIZE',0xe),m(this,'CELL_HOVER_ICON_BG_COLOR',ee(0x19e)),m(this,'CELL_HOVER_ICON_BORDER_COLOR',ee(0x3cb)),m(this,'SCROLLER_TRACK_SIZE',0xe),m(this,'SCROLLER_SIZE',0x8),m(this,'SCROLLER_COLOR','#dee0e3'),m(this,'SCROLLER_TRACK_COLOR',ee(0x19e)),m(this,'SCROLLER_FOCUS_COLOR','#bbbec4'),m(this,'SELECT_BORDER_COLOR','rgb(82,146,247)'),m(this,'SELECT_AREA_COLOR',ee(0x2e7)),m(this,'SELECT_ROW_COL_BG_COLOR','transparent'),m(this,'AUTOFILL_POINT_BORDER_COLOR','#fff'),m(this,ee(0x363),'#fcf6ed'),m(this,'CHECKBOX_KEY',''),m(this,'CHECKBOX_COLOR','rgb(82,146,247)'),m(this,ee(0x259),ee(0x17c)),m(this,'ENABLE_FINDER',!0x0),m(this,'CHECKBOX_SIZE',0x14),m(this,'CHECKBOX_DISABLED_SVG',''),m(this,'CHECKBOX_DISABLED_COLOR','#F1F2F4'),m(this,ee(0x1a0),''),m(this,'CHECKBOX_UNCHECK_SVG',''),m(this,'CHECKBOX_UNCHECK_COLOR','#DDE0EA'),m(this,'CHECKBOX_INDETERMINATE_SVG',''),m(this,'CHECKBOX_CHECK_DISABLED_SVG',''),m(this,'CHECKBOX_CHECK_DISABLED_COLOR','#DDE0EA'),m(this,'ICON_EDIT_SVG',''),m(this,'ICON_EDIT_COLOR',ee(0x112)),m(this,'ICON_SELECT_SVG',''),m(this,ee(0x453),'#4E5969'),m(this,'SORT_STRICTLY',!0x0),m(this,'SORT_ASC_ICON_SVG',''),m(this,'SORT_DESC_ICON_SVG',''),m(this,'SORTABLE_ICON_SVG',''),m(this,ee(0x171),'rgb(82,146,247)'),m(this,'READONLY_COLOR','#fff'),m(this,'READONLY_TEXT_COLOR',ee(0x112)),m(this,'ERROR_TIP_COLOR','#ED3F14'),m(this,'FOOTER_BG_COLOR','#fafafa'),m(this,'FOOTER_FIXED',!0x0),m(this,ee(0x263),'bottom'),m(this,'CELL_FOOTER_HEIGHT',0x24),m(this,'ENABLE_SELECTOR',!0x0),m(this,'TREE_SELECT_MODE','auto'),m(this,'TREE_CHILDREN_KEY','children'),m(this,'TREE_INDENT',0x14),m(this,'TREE_ICON_SIZE',0x14),m(this,ee(0x437),!0x1),m(this,'TREE_LINE_COLOR','#e1e6eb'),m(this,'ENABLE_EDIT_SINGLE_CLICK',!0x1),m(this,'ENABLE_EDIT_CLICK_SELECTOR',!0x0),m(this,'SELECTOR_AREA_MIN_X',0x0),m(this,'SELECTOR_AREA_MAX_X_OFFSET',0x0),m(this,'SELECTOR_AREA_MAX_X',0x0),m(this,'SELECTOR_AREA_MIN_Y',0x0),m(this,ee(0x1fd),0x0),m(this,'SELECTOR_AREA_MAX_Y_OFFSET',0x0),m(this,'SELECTOR_CELL_VALUE_TYPE','value'),m(this,ee(0x458),!0x0),m(this,'ENABLE_SELECTOR_SINGLE',!0x1),m(this,ee(0x38c),!0x0),m(this,'ENABLE_SELECTOR_SPAN_ROW',!0x0),m(this,'ENABLE_SELECTOR_ALL_ROWS',!0x0),m(this,ee(0x187),!0x0),m(this,'ENABLE_MERGE_CELL_LINK',!0x1),m(this,'ENABLE_AUTOFILL',!0x1),m(this,'ENABLE_AUTOFILL_SPAN_COL',!0x0),m(this,'ENABLE_AUTOFILL_SPAN_ROW',!0x0),m(this,'ENABLE_CONTEXT_MENU',!0x1),m(this,'ENABLE_HEADER_CONTEXT_MENU',!0x1),m(this,'ENABLE_COPY',!0x0),m(this,'ENABLE_PASTER',!0x0),m(this,'ENABLE_RESIZE_ROW',!0x0),m(this,'ENABLE_RESIZE_COLUMN',!0x0),m(this,'RESIZE_ROW_LINE_COLOR',ee(0x211)),m(this,ee(0x262),'#e1e6eb'),m(this,ee(0x39a),!0x0),m(this,'RESIZE_COLUMN_TEXT_COLOR','#fff'),m(this,'RESIZE_COLUMN_TEXT_BG_COLOR','rgb(82,146,247)'),m(this,'RESIZE_ROW_MIN_HEIGHT',0x24),m(this,ee(0x381),0x28),m(this,'DRAG_TIP_BG_COLOR','rgba(82,146,247,0.1)'),m(this,'DRAG_TIP_LINE_COLOR','rgb(82,146,247)'),m(this,ee(0x3a3),!0x0),m(this,'ENABLE_HISTORY',!0x1),m(this,'ENABLE_VALIDATOR_IMMEDIATE',!0x0),m(this,'HISTORY_NUM',0x32),m(this,'HIGHLIGHT_HOVER_ROW',!0x1),m(this,'HIGHLIGHT_HOVER_ROW_COLOR','rgba(186,203,231,0.1)'),m(this,'HIGHLIGHT_SELECTED_ROW',!0x1),m(this,'HIGHLIGHT_SELECTED_ROW_COLOR','rgba(82,146,247,0.1)'),m(this,ee(0x3c7),'#303133'),m(this,'TOOLTIP_TEXT_COLOR','#fff'),m(this,'TOOLTIP_ZINDEX',0xbb8),m(this,'TOOLTIP_CUSTOM_STYLE',{}),m(this,'CONTEXT_MENU',[{'label':'复制','value':'copy'},{'label':'剪切','value':'cut'},{'label':'粘贴','value':'paste'},{'label':'清空选中内容','value':'clearSelected'}]),m(this,ee(0x390),[]),m(this,'HEADER_CONTEXT_MENU',[{'label':'左固定','value':'fixedLeft'},{'label':'右固定','value':ee(0x449)},{'label':'取消固定','value':'fixedNone'},{'label':'隐藏','value':'hide'},{'label':'显示','value':'visible'},{'label':'恢复默认','value':ee(0x354)}]),m(this,'CUSTOM_HEADER_CONTEXT_MENU',[]),m(this,ee(0x408),1.3),m(this,'AUTO_ROW_HEIGHT',!0x1),m(this,'ENABLE_DRAG_COLUMN',!0x1),m(this,'HEADER_CELL_STYLE_METHOD'),m(this,'BODY_CELL_STYLE_METHOD'),m(this,'FOOTER_CELL_STYLE_METHOD'),m(this,'BODY_CELL_READONLY_METHOD'),m(this,'BODY_CELL_FORMATTER_METHOD'),m(this,'BODY_CELL_RULES_METHOD'),m(this,'BODY_CELL_TYPE_METHOD'),m(this,'BODY_CELL_EDITOR_METHOD'),m(this,'BODY_CELL_RENDER_METHOD'),m(this,'BODY_CELL_HOVER_ICON_METHOD'),m(this,'SPAN_METHOD'),m(this,'SELECTABLE_METHOD'),m(this,'EXPAND_LAZY_METHOD'),m(this,'BEFORE_VALUE_CHANGE_METHOD'),m(this,'BEFORE_PASTE_DATA_METHOD'),m(this,'BEFORE_AUTOFILL_DATA_METHOD'),m(this,ee(0x3be)),m(this,'BEFORE_SET_AUTOFILL_METHOD'),m(this,ee(0x132)),m(this,'BEFORE_BODY_CONTEXT_MENU_METHOD'),m(this,ee(0x20c)),this['_config']=o,this['updateCssVar']();}['init'](o){const ef=bB;this['_config']=o,this[ef(0x2d2)]();}['updateCssVar'](){const eg=bB;let o={};Object['keys'](this)[eg(0x446)](p=>{const ej=eg;if(p[ej(0x36b)]('_COLOR')||p['endsWith']('_FONT')){const r=ej(0x25a)+p['toLocaleLowerCase']()[ej(0x2c9)](/_/g,'-'),u=Js(r);u&&(o[p]=u);}}),Object['assign'](this,o,this['_config']);}}const gi='<svg\x20t=\x221724122015492\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224237\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M401.472\x20316.992l159.04\x20217.664L591.488\x20512l-30.976-22.656-159.04\x20217.728q-2.24\x203.008-3.84\x206.464-1.6\x203.456-2.496\x207.104-0.896\x203.648-1.024\x207.424-0.192\x203.84\x200.384\x207.552\x200.64\x203.712\x201.92\x207.296\x201.28\x203.52\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992\x203.072\x202.24\x206.464\x203.84\x203.456\x201.6\x207.168\x202.496\x203.648\x200.896\x207.424\x201.024\x203.776\x200.192\x207.488-0.448\x203.776-0.576\x207.296-1.856\x203.584-1.28\x206.784-3.264\x203.2-1.92\x206.016-4.48\x202.816-2.56\x205.056-5.632l159.04-217.728q3.584-4.928\x205.504-10.752\x201.92-5.76\x201.92-11.904\x200-6.08-1.92-11.904-1.92-5.76-5.504-10.752L463.488\x20271.68q-2.24-3.072-5.056-5.632-2.752-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.52-1.28-7.296-1.856-3.712-0.576-7.488-0.448-3.84\x200.192-7.424\x201.088-3.712\x200.896-7.168\x202.496-3.392\x201.6-6.4\x203.84-3.136\x202.176-5.696\x204.992-2.56\x202.752-4.48\x206.016-1.984\x203.2-3.264\x206.784-1.28\x203.52-1.92\x207.296-0.576\x203.712-0.384\x207.488\x200.128\x203.84\x201.024\x207.488\x200.896\x203.648\x202.496\x207.04\x201.6\x203.456\x203.84\x206.528z\x20m30.976-61.056q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.24-3.52\x201.408-6.656\x203.52-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.232\x201.408\x203.456\x203.52\x206.592\x202.112\x203.2\x204.8\x205.824\x202.688\x202.688\x205.76\x204.8\x203.2\x202.112\x206.72\x203.52\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.656\x201.472-3.52\x202.24-7.232\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.456-3.52-6.592-2.112-3.2-4.8-5.824-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.52-3.52-1.472-7.232-2.24Q436.224\x20256\x20432.448\x20256z\x20m0\x20435.392q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.176-3.52\x201.472-6.656\x203.584-3.2\x202.112-5.824\x204.736-2.688\x202.688-4.8\x205.824-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.76\x202.688\x202.752\x205.76\x204.8\x203.2\x202.112\x206.72\x203.584\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.472\x206.592-3.584\x203.2-2.048\x205.824-4.736\x202.688-2.688\x204.8-5.824\x202.112-3.2\x203.52-6.656\x201.472-3.456\x202.24-7.168\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.52-3.52-6.656-2.112-3.136-4.8-5.76-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704z\x22\x20p-id=\x224238\x22></path></svg>',ll='<svg\x20t=\x221722595535853\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M640\x20128H384c-170.496\x200-256\x2085.504-256\x20256v256c0\x20170.496\x2085.504\x20256\x20256\x20256h256c170.496\x200\x20256-85.504\x20256-256V384c0-170.496-85.504-256-256-256z\x20m67.584\x20302.592c-2.048\x204.608-4.608\x208.704-8.192\x2012.288L506.88\x20634.88c-3.584\x203.584-7.68\x206.144-12.288\x208.192-4.608\x202.048-9.728\x203.072-14.848\x203.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848\x200-2.56\x200-5.12\x201.024-7.68\x200.512-2.56\x201.024-5.12\x202.048-7.168\x201.024-2.56\x202.048-4.608\x203.584-6.656\x201.536-2.048\x203.072-4.096\x204.608-5.632\x201.536-2.048\x203.584-3.584\x205.632-4.608\x202.048-1.536\x204.096-2.56\x206.656-3.584\x202.56-1.024\x204.608-1.536\x207.168-2.048\x202.56-0.512\x205.12-0.512\x207.68-0.512\x205.12\x200\x2010.24\x201.024\x2014.848\x203.072\x204.608\x202.048\x208.704\x204.608\x2012.288\x208.192l69.12\x2068.608L645.12\x20389.12c3.584-3.584\x207.68-6.144\x2012.288-8.192\x204.608-2.048\x209.728-3.072\x2014.848-3.072\x202.56\x200\x205.12\x200\x207.68\x200.512s5.12\x201.024\x207.168\x202.048c2.56\x201.024\x204.608\x202.048\x206.656\x203.584\x202.048\x201.536\x204.096\x203.072\x205.632\x204.608\x201.536\x201.536\x203.584\x203.584\x204.608\x205.632\x201.536\x202.048\x202.56\x204.096\x203.584\x206.656\x201.024\x202.56\x201.536\x204.608\x202.048\x207.168\x200.512\x202.56\x201.024\x205.12\x201.024\x207.68\x200\x205.12-1.024\x2010.24-3.072\x2014.848z\x22\x20p-id=\x224552\x22></path></svg>',sl='<svg\x20t=\x221724122044148\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M707.648\x20401.28L489.28\x20560.704l22.656\x2030.976\x2022.656-30.976L316.16\x20401.216q-3.072-2.24-6.464-3.84-3.456-1.536-7.104-2.432-3.712-0.896-7.488-1.088-3.776-0.128-7.488\x200.448-3.776\x200.64-7.296\x201.92-3.584\x201.28-6.784\x203.2-3.2\x201.984-6.016\x204.544-2.816\x202.56-5.056\x205.632-2.176\x203.072-3.84\x206.464-1.536\x203.456-2.432\x207.104-0.896\x203.712-1.088\x207.488-0.128\x203.776\x200.448\x207.488\x200.64\x203.776\x201.92\x207.296\x201.28\x203.584\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992l218.368\x20159.552q4.928\x203.584\x2010.752\x205.504\x205.76\x201.92\x2011.904\x201.92\x206.08\x200\x2011.904-1.92\x205.76-1.92\x2010.752-5.504l218.368-159.552q3.008-2.24\x205.568-4.992\x202.56-2.816\x204.544-6.016\x201.92-3.2\x203.264-6.784\x201.28-3.52\x201.92-7.296\x200.576-3.712\x200.384-7.488-0.128-3.84-1.024-7.488-0.896-3.648-2.496-7.04-1.6-3.456-3.84-6.528-2.24-3.072-4.992-5.632-2.816-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.584-1.28-7.296-1.856-3.712-0.64-7.488-0.448-3.84\x200.192-7.488\x201.088-3.648\x200.896-7.04\x202.496-3.456\x201.536-6.528\x203.84z\x20m61.056\x2030.976q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.472-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.72-3.584-3.456-1.408-7.168-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.656\x203.584-3.136\x202.112-5.76\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.584\x206.656-1.408\x203.52-2.176\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.176\x207.168\x201.472\x203.52\x203.584\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.168-2.176\x203.52-1.408\x206.656-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.048-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x20m-436.736\x200q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.408-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.592\x203.584-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.24\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.24\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x22\x20p-id=\x224552\x22></path></svg>',rt='<svg\x20t=\x221755138507987\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x225079\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M512\x20938.688a42.688\x2042.688\x200\x200\x201-35.072-18.432l-192-277.312A42.56\x2042.56\x200\x200\x201\x20320\x20576h384a42.752\x2042.752\x200\x200\x201\x2035.072\x2066.944l-192\x20277.312a42.688\x2042.688\x200\x200\x201-35.072\x2018.432\x22\x20fill=\x22currentColor\x22\x20p-id=\x222016\x22></path><path\x20d=\x22M704\x20448H320a42.752\x2042.752\x200\x200\x201-35.072-66.944l192-277.312c16-23.04\x2054.208-23.04\x2070.144\x200l192\x20277.312A42.56\x2042.56\x200\x200\x201\x20704\x20448\x22\x20fill=\x22currentColor\x22\x20p-id=\x222015\x22></path></svg>',gs=rt['replace']('fill=\x22currentColor\x22\x20p-id=\x222016\x22','fill=\x22#bec4c7\x22\x20p-id=\x222016\x22'),Us=rt['replace']('fill=\x22currentColor\x22\x20p-id=\x222015\x22','fill=\x22#bec4c7\x22\x20p-id=\x222015\x22'),jl='<svg\x20t=\x221724133395728\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x222893\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M512\x20226.8476541a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304692c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497779v122.20814825a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778v-122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497779\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304692z\x20m0\x20407.36049415a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304691c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497778v122.20814827a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497776\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497776v-122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304691zM797.1523459\x20512a19.82487759\x2019.82487759\x200\x200\x201-5.70304692\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497779\x205.70304693h-122.20814825a19.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304693h122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497779\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304692\x2014.66497778z\x20m-407.36049415\x200a19.82487759\x2019.82487759\x200\x200\x201-5.70304691\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693h-122.20814827a19.82487759\x2019.82487759\x200\x200\x201-14.66497776-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497776-5.70304693h122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304691\x2014.66497778zM310.22076878\x20310.22076878a21.29137537\x2021.29137537\x200\x200\x201\x2014.66497779-5.70304693c5.51294514\x200\x2010.18401235\x201.90101585\x2014.01320099\x205.70304693l86.55052591\x2086.57768347a20.91117183\x2020.91117183\x200\x200\x201\x205.73020449\x2014.31193182\x2019.28172983\x2019.28172983\x200\x200\x201-6.05609289\x2014.013201\x2019.11878565\x2019.11878565\x200\x200\x201-14.013201\x206.05609289\x2020.96548698\x2020.96548698\x200\x200\x201-14.31193182-5.70304692L310.22076878\x20338.87178998a19.06447114\x2019.06447114\x200\x200\x201-5.70304693-14.01320099c0-5.54010272\x201.90101585-10.42842865\x205.70304693-14.66497778z\x20m288.32975775\x20288.32975775a19.79772001\x2019.79772001\x200\x200\x201\x2014.3390894-6.35482371c5.29568642\x200\x2010.04822572\x202.11827457\x2014.31193182\x206.38198066l86.57768347\x2086.55052651c3.80203107\x203.80203107\x205.70304692\x208.47309828\x205.70304691\x2014.01320102a19.55330372\x2019.55330372\x200\x200\x201-6.05609225\x2014.31193182\x2019.66193339\x2019.66193339\x200\x200\x201-14.31193245\x206.05609288\x2019.01015661\x2019.01015661\x200\x200\x201-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001\x2019.79772001\x200\x200\x201-6.38198129-14.31193245c0-5.29568642\x202.11827457-10.07538268\x206.38198129-14.33908939zM713.77923122\x20310.22076878c3.80203107\x204.26370672\x205.70304692\x209.15203265\x205.70304693\x2014.66497779s-1.90101585\x2010.18401235-5.70304693\x2014.01320099l-86.57768347\x2086.55052591a20.91117183\x2020.91117183\x200\x200\x201-14.31193182\x205.73020449\x2019.28172983\x2019.28172983\x200\x200\x201-14.013201-6.05609289\x2019.11878565\x2019.11878565\x200\x200\x201-6.05609289-14.013201c0-5.29568642\x201.90101585-10.07538268\x205.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107\x208.50025585-5.70304692\x2014.01320099-5.70304693\x205.54010272\x200\x2010.40127108\x201.90101585\x2014.66497779\x205.70304693zM425.44947347\x20598.57768347a19.79772001\x2019.79772001\x200\x200\x201\x206.35482371\x2014.33908939c0\x205.29568642-2.11827457\x2010.04822572-6.38198066\x2014.31193245L338.89894756\x20713.77923122a19.06447114\x2019.06447114\x200\x200\x201-14.01320099\x205.70304693\x2019.55330372\x2019.55330372\x200\x200\x201-14.31193245-6.05609227\x2019.68909035\x2019.68909035\x200\x200\x201-6.05609227-14.31193245\x2019.01015661\x2019.01015661\x200\x200\x201\x205.70304693-14.01320099l86.57768347-86.55052591a19.79772001\x2019.79772001\x200\x200\x201\x2014.31193182-6.38198129c5.29568642\x200\x2010.07538268\x202.11827457\x2014.3390894\x206.38198129z\x22\x20fill=\x22#000000\x22\x20fill-opacity=\x22.65\x22\x20p-id=\x222894\x22></path></svg>';class js{constructor(o){const ek=bB;m(this,ek(0x3df)),m(this,'list',[{'name':'loading','configName':'LOADING_ICON_SVG','configColorName':'LOADING_ICON_COLOR','svg':jl,'color':'#4E5969'},{'name':'expand','configName':ek(0x1f4),'configColorName':'EXPAND_ICON_COLOR','svg':gi,'color':'#4E5969'},{'name':'shrink','configName':ek(0x398),'configColorName':'SHRINK_ICON_COLOR','svg':sl,'color':'#4E5969'},{'name':'checkbox-uncheck','configName':'CHECKBOX_UNCHECK_SVG','configColorName':'CHECKBOX_UNCHECK_COLOR','svg':'<svg\x20t=\x221722595639920\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224708\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20p-id=\x224709\x22></path></svg>','color':''},{'name':'checkbox-check','configName':'CHECKBOX_CHECK_SVG','configColorName':'CHECKBOX_COLOR','svg':ll,'color':'rgb(82,146,247)'},{'name':ek(0x367),'configName':ek(0x2ed),'configColorName':ek(0x2d8),'svg':'<svg\x20t=\x221722595280953\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224394\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20384v256q0\x2012.608\x201.28\x2025.088\x201.216\x2012.544\x203.648\x2024.832\x202.432\x2012.352\x206.08\x2024.384t8.448\x2023.68q4.864\x2011.584\x2010.752\x2022.72\x205.952\x2011.072\x2012.928\x2021.504\x207.04\x2010.496\x2014.976\x2020.224\x208\x209.728\x2016.896\x2018.56\x208.896\x208.96\x2018.56\x2016.896\x209.728\x208\x2020.224\x2014.976\x2010.432\x207.04\x2021.504\x2012.928\x2011.136\x205.888\x2022.72\x2010.688\x2011.648\x204.864\x2023.68\x208.512\x2012.032\x203.648\x2024.32\x206.08\x2012.352\x202.432\x2024.896\x203.712Q371.392\x20896\x20384\x20896h256q12.608\x200\x2025.088-1.28\x2012.544-1.216\x2024.832-3.648\x2012.352-2.432\x2024.384-6.08t23.68-8.512q11.584-4.8\x2022.72-10.688\x2011.072-5.952\x2021.504-12.928\x2010.496-7.04\x2020.224-14.976\x209.728-8\x2018.56-16.896\x208.96-8.832\x2016.896-18.56\x208-9.728\x2014.976-20.224\x207.04-10.432\x2012.928-21.504\x205.888-11.136\x2010.688-22.72\x204.864-11.648\x208.512-23.68\x203.648-12.032\x206.08-24.32\x202.432-12.352\x203.712-24.896Q896\x20652.608\x20896\x20640V384q0-12.608-1.28-25.088-1.216-12.544-3.648-24.832-2.432-12.352-6.08-24.384t-8.512-23.68q-4.8-11.584-10.688-22.72-5.952-11.072-12.928-21.504-7.04-10.496-14.976-20.224-8-9.664-16.896-18.56-8.832-8.96-18.56-16.896-9.728-8-20.224-14.976-10.432-7.04-21.504-12.928-11.136-5.888-22.72-10.752-11.648-4.8-23.68-8.448-12.032-3.648-24.32-6.08-12.352-2.432-24.896-3.712Q652.608\x20128\x20640\x20128H384q-12.608\x200-25.088\x201.28-12.544\x201.216-24.832\x203.648-12.352\x202.432-24.384\x206.08t-23.68\x208.448q-11.584\x204.864-22.72\x2010.752-11.072\x205.952-21.504\x2012.928-10.496\x207.04-20.224\x2014.976-9.664\x208-18.56\x2016.896-8.96\x208.896-16.896\x2018.56-8\x209.728-14.976\x2020.224-7.04\x2010.432-12.928\x2021.504-5.888\x2011.136-10.752\x2022.72-4.8\x2011.648-8.448\x2023.68-3.648\x2012.032-6.08\x2024.32-2.432\x2012.352-3.712\x2024.896Q128\x20371.392\x20128\x20384z\x20m566.016\x20166.336H330.112a38.4\x2038.4\x200\x200\x201\x200-76.8h363.904a38.4\x2038.4\x200\x200\x201\x200\x2076.8z\x22\x20p-id=\x224395\x22></path></svg>','color':ek(0x341)},{'name':'checkbox-check-disabled','configName':'CHECKBOX_CHECK_DISABLED_SVG','svg':ll,'color':'#DDE0EA'},{'name':'checkbox-disabled','configName':'CHECKBOX_DISABLED_SVG','configColorName':'CHECKBOX_DISABLED_COLOR','svg':ek(0x432),'color':ek(0x2ac)},{'name':'icon-edit','configName':'ICON_EDIT_SVG','configColorName':'ICON_EDIT_COLOR','svg':'<svg\x20t=\x221744798692576\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x226606\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M855.296\x20894.528H168.768v-76.8h686.528v76.8z\x20m38.4-38.4q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.824\x204.8-3.2\x202.112-6.656\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.52-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.76\x204.736\x202.752\x202.688\x204.864\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488z\x20m-686.528\x200q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.76\x204.8-3.2\x202.112-6.72\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.456-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.824\x204.736\x202.688\x202.688\x204.8\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488zM652.032\x20211.2l-369.92\x20370.368v89.344h90.048l369.664-369.856L652.032\x20211.2z\x20m-54.4-54.272q22.528-22.528\x2054.4-22.528\x2031.808\x200\x2054.336\x2022.528l89.792\x2089.856q22.464\x2022.464\x2022.464\x2054.272t-22.464\x2054.272l-369.664\x20369.856q-22.464\x2022.528-54.336\x2022.528H282.24q-31.808\x200-54.336-22.528-22.464-22.464-22.464-54.272V581.568q0-31.808\x2022.4-54.272l369.92-370.368z\x22\x20p-id=\x226607\x22></path></svg>','color':'#4E5969'},{'name':'icon-select','configName':'ICON_SELECT_SVG','configColorName':ek(0x453),'svg':sl,'color':'#4E5969'},{'name':'sort-asc','configName':'SORT_ASC_ICON_SVG','configColorName':'SORT_ICON_COLOR','svg':gs,'color':'rgb(82,146,247)'},{'name':'sort-desc','configName':'SORT_DESC_ICON_SVG','configColorName':ek(0x171),'svg':Us,'color':'rgb(82,146,247)'},{'name':'sort-default','configName':'SORTABLE_ICON_SVG','svg':rt,'color':'#bec4c7'}]),m(this,'icons',new Map()),this['ctx']=o,this['init']();}async['init'](){const em=bB,o=[];for(let p=0x0;p<this['list']['length'];p++){const r=this['list'][p];let u=r[em(0x178)],w=r['svg'];if(r['configColorName']){const y=this['ctx']['config'][r['configColorName']];y&&(u=y);}if(r['configName']){const z=this['ctx']['config'][r['configName']];z&&(w=z);}const x=this[em(0x25d)](w,u)['then'](C=>{this['icons']['set'](r['name'],C);});o['push'](x);}for(let C=0x0;C<this['ctx']['config']['ICONS'][em(0x13f)];C++){const D=this['ctx']['config']['ICONS'][C];let E=D['color'];const F=this['createImageFromSVG'](D['svg'],E,D[em(0x19d)])[em(0x113)](G=>{const en=em;this[en(0x340)]['set'](D['name'],G);});o['push'](F);}await Promise['all'](o),this['ctx'][em(0x376)]('draw');}async['createImageFromSVG'](o,p,r=!0x1){const ep=bB,u=new DOMParser()['parseFromString'](o,'image/svg+xml')['documentElement'];p&&u['querySelectorAll']('*')['forEach'](y=>{const eo=b,z=y['getAttribute'](eo(0x45c));(z==='currentColor'||z===null)&&y['setAttribute']('fill',p);});const w=new Image();let x='';if(r){const y=new Blob([new XMLSerializer()['serializeToString'](u)],{'type':ep(0x169)});x=URL['createObjectURL'](y);}else x=ep(0x280)+encodeURIComponent(new XMLSerializer()[ep(0x305)](u));return w['src']=x,new Promise((z,C)=>{const eq=ep;w['onerror']=()=>C(new Error(eq(0x250)+o)),w['onload']=()=>{z(w);};});}['get'](o){const er=bB;return this[er(0x340)]['get'](o);}['getSvg'](o){const eu=bB;return this['list'][eu(0x27d)](p=>p['name']===o);}}class at extends Ul{constructor(o,p,r,u,w,x,y){const ev=bB;super(o,r,u,w,x,'header',y['fixed']),m(this,'align'),m(this,'hideHeaderSelection',!0x1),m(this,'verticalAlign','middle'),m(this,'fixed'),m(this,'minWidth'),m(this,'maxWidth'),m(this,'widthFillDisable'),m(this,'type'),m(this,'operation',!0x1),m(this,'editorType'),m(this,'level'),m(this,ev(0x471)),m(this,'hide',!0x1),m(this,'displayText',''),m(this,'colspan'),m(this,'rowspan'),m(this,'row'),m(this,'key'),m(this,'required',!0x1),m(this,'readonly',!0x1),m(this,'ellipsis',!0x1),m(this,'overflowTooltipShow',!0x0),m(this,'children',[]),m(this,'column'),m(this,ev(0x2c5)),m(this,'rowKey'),m(this,'rules'),m(this,'hasChildren'),m(this,'render'),m(this,'style',{}),m(this,'drawX',0x0),m(this,'drawY',0x0),m(this,'sortIconName','sort-default'),m(this,'sortAscIconName','sort-asc'),m(this,'sortDescIconName','sort-desc'),m(this,'visibleWidth',0x0),m(this,'visibleHeight',0x0),m(this,'maxLineClampHeader','auto'),m(this,'domDataset',{}),m(this,'drawTextX',0x0),m(this,ev(0x17b),0x0),m(this,ev(0x28d),0x0),m(this,'drawTextHeight',0x0),m(this,'drawCellBgColor',''),m(this,'drawTextColor',''),m(this,'drawTextFont',''),m(this,ev(0x26f),0x0),m(this,ev(0x2cb),0x0),m(this,'drawSelectionImageWidth',0x0),m(this,'drawSelectionImageHeight',0x0),m(this,'drawSelectionImageName',''),m(this,'drawSelectionImageSource'),m(this,ev(0x45f),0x0),m(this,'drawSortImageY',0x0),m(this,'drawSortImageWidth',0x0),m(this,'drawSortImageHeight',0x0),m(this,'drawSortImageName',''),m(this,'drawSortImageSource'),m(this,'renderHeaderType','default'),this['ctx']=o,this['x']=r,this['y']=u,this['width']=w,this['height']=x,this['visibleWidth']=w,this[ev(0x26c)]=x,this['colIndex']=p,this['key']=y[ev(0x407)],this['minWidth']=y['minWidth'],this[ev(0x149)]=y[ev(0x149)],this['hide']=(typeof y['hide']=='function'?y[ev(0x37b)](y):y['hide'])||!0x1,this['type']=y['type']||'',this[ev(0x358)]=y['editorType']||'text',this['hideHeaderSelection']=y['hideHeaderSelection']||!0x1,this['align']=y[ev(0x3e1)]||y[ev(0x3a2)]||this['ctx']['config']['COLUMNS_ALIGN'],this['verticalAlign']=y[ev(0x1b1)]||y['verticalAlign']||this['ctx']['config']['COLUMNS_VERTICAL_ALIGN'],this['fixed']=y['fixed']||'',this['level']=y['level']||0x0,this['operation']=y['operation']||!0x1,this['text']=y['title'],this['column']=y,this['colspan']=y['colspan']||0x1,this['widthFillDisable']=y['widthFillDisable']||!0x1,this['rowspan']=y[ev(0x2a8)]||0x1,this['rules']=y['rules'],this['readonly']=y[ev(0x291)]||!0x1,this[ev(0x30c)]=y[ev(0x30c)]||!0x1,this['sortIconName']=y['sortIconName']||'sort-default',this['sortAscIconName']=y['sortAscIconName']||'sort-asc',this[ev(0x185)]=y['sortDescIconName']||'sort-desc',this['rowKey']=Rl(),this['overflowTooltipShow']=y[ev(0x2d9)]!==!0x1,this['hasChildren']=y['children']&&y[ev(0x331)][ev(0x13f)]>0x0||!0x1,this['render']=y['renderHeader'],this['maxLineClampHeader']=y['maxLineClampHeader']||'auto',this['renderHeaderType']=y[ev(0x1fb)]||'default';}['isVerticalVisible'](){const {stageHeight:o}=this['ctx'],p=o;return!(this['y']+this['height']<=0x0||this['y']>=p);}[bB(0x1a5)](){this['style']=this['getOverlayerViewsStyle']();}[bB(0x2ce)](){const ew=bB,{HEADER_CELL_STYLE_METHOD:p,HEADER_BG_COLOR:r,HEADER_TEXT_COLOR:u}=this[ew(0x3df)]['config'];let w=r,x=u;if(typeof p=='function'){const C=p,{backgroundColor:D,color:E,font:F}=C({'colIndex':this['colIndex'],'column':this['column']})||{};D&&(w=D),E&&(x=E),F&&(this['drawTextFont']=F);}const {colKey:y,type:z}=this[ew(0x3df)][ew(0x47a)];z===ew(0x3c0)&&y===this['key']&&(w=this[ew(0x3df)]['config']['FINDER_CELL_BG_COLOR']),this['drawCellBgColor']=w,this['drawTextColor']=x;}['update'](){const ex=bB;this['updateContainer'](),this['displayText']=this['getText'](),this['drawX']=this['getDrawX'](),this['drawY']=this['getDrawY'](),this[ex(0x1f3)]=this['drawX'],this['drawTextY']=this['drawY'],this['drawTextWidth']=this['width'],this[ex(0x1ac)]=this['height'],this['updateStyle']();}['draw'](){this['drawEdge'](),this['drawSelection'](),this['drawText'](),this['drawBg'](),this['drawSortIcon']();}['drawEdge'](){const ey=bB,{paint:o,config:{BORDER_COLOR:p,BORDER:r}}=this['ctx'];o[ey(0x269)](this['drawX'],this['drawY'],this['width'],this[ey(0x3ef)],{'borderColor':r?p:'transparent','fillColor':this[ey(0x2e1)]});}['drawText'](){const ez=bB,{paint:o,config:{HEADER_FONT:p,CELL_PADDING:r,REQUIRED_COLOR:u}}=this['ctx'],w=this['displayText']+'_'+this['drawTextWidth']+'_'+this[ez(0x13b)];this['ellipsis']=o['drawText'](this['displayText'],this['drawTextX'],this[ez(0x17b)],this['drawTextWidth'],this['drawTextHeight'],{'font':this['drawTextFont']||p,'padding':r,'color':this['drawTextColor'],'align':this['align'],'verticalAlign':this['verticalAlign'],'maxLineClamp':this['maxLineClampHeader'],'offsetRight':this['column'][ez(0x428)]?0x10:0x0,'offsetLeft':this['required']?0xc:0x0,'cacheTextKey':w,'textCallback':x=>{const eA=ez;this['column'][eA(0x428)]&&(this[eA(0x45f)]=x['right']+0x4,this['drawSortImageY']=x['top']+(x['height']-0x10)/0x2),this['required']&&o['drawText']('*',x[eA(0x26d)]-0x12,x[eA(0x22c)]+(x[eA(0x3ef)]-0xc)/0x2,0x18,0x18,{'color':u,'font':'18px\x20Arial','align':'center','verticalAlign':'middle','padding':0x0});}});}['drawBg'](){const eB=bB;if(this['ctx']['dragHeaderIng'])return;const {ENABLE_SELECTOR:o,ENABLE_SELECTOR_SINGLE:p}=this['ctx']['config'];let r=-0x1,u=-0x1;if(this['ctx']['focusCellHeader']&&(r=this['ctx']['focusCellHeader']['colIndex'],u=this[eB(0x3df)]['focusCellHeader']['colIndex']+this['ctx']['focusCellHeader'][eB(0x295)]-0x1),o&&!p){const {xArr:x}=this['ctx']['selector'];r=x[0x0],u=x[0x1];}const w=this['colspan']+this['colIndex']-0x1;this['colIndex']>=r&&this['colIndex']<=u&&w<=u&&this['ctx']['paint']['drawRect'](this['drawX'],this['drawY'],this['width'],this[eB(0x3ef)],{'borderColor':'transparent','fillColor':this[eB(0x3df)]['config']['SELECT_ROW_COL_BG_COLOR']||'transparent'});}[bB(0x177)](){const eC=bB;if(!this['hideHeaderSelection']&&['index-selection','selection','selection-tree','tree-selection']['includes'](this[eC(0x1df)])){const {indeterminate:o,check:p,selectable:r}=this['ctx']['database']['getCheckedState'](),{CHECKBOX_SIZE:u=0x0,CELL_PADDING:w}=this[eC(0x3df)]['config'];let x=this['drawX']+(this['width']-u)/0x2,y=this['drawY']+(this['height']-u)/0x2;this['drawTextX']=x+u-w/0x2,this['drawTextWidth']=this['drawX']+this['visibleWidth']-this['drawTextX'],(this['align']==='left'||this['align']==='right')&&(x=this['drawX']+w,this['drawTextX']=x+u-w/0x2,this['drawTextWidth']=this['drawX']+this[eC(0x3ca)]-this[eC(0x1f3)]),this['verticalAlign']==='top'?y=this['drawY']+w/0x2:this['verticalAlign']==='bottom'&&(y=this['drawY']+this[eC(0x3ef)]-u-w/0x2);let z=this[eC(0x3df)][eC(0x340)]['get']('checkbox-uncheck'),C='checkbox-uncheck';o?(z=this['ctx']['icons'][eC(0x313)](eC(0x367)),C='checkbox-indeterminate'):p&&r?(z=this['ctx']['icons']['get']('checkbox-check'),C='checkbox-check'):p&&!r?(z=this['ctx']['icons'][eC(0x313)]('checkbox-check-disabled'),C='checkbox-check-disabled'):!p&&r?(z=this['ctx']['icons']['get']('checkbox-uncheck'),C='checkbox-uncheck'):(z=this['ctx'][eC(0x340)]['get']('checkbox-disabled'),C=eC(0x455)),z&&(this[eC(0x26f)]=x,this['drawSelectionImageY']=y,this[eC(0x3f7)]=u,this['drawSelectionImageHeight']=u,this['drawSelectionImageName']=C,this['drawSelectionImageSource']=z,this['ctx']['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this[eC(0x2cb)],this['drawSelectionImageWidth'],this[eC(0x1c2)]));}}[bB(0x2fb)](){const eD=bB;if(!this[eD(0x260)]['sortBy'])return;const o=0x10;let p=this['sortIconName'];const r=this['ctx'][eD(0x391)]['getSortState'](this[eD(0x407)]);r['direction']==='asc'?p=this['sortAscIconName']:r['direction']==='desc'&&(p=this[eD(0x185)]);const u=this[eD(0x3df)][eD(0x340)]['get'](p);u&&(this[eD(0x434)]=o,this['drawSortImageHeight']=o,this['drawSortImageName']=p,this['drawSortImageSource']=u,this['ctx'][eD(0x327)][eD(0x18b)](this['drawSortImageSource'],this['drawSortImageX'],this['drawSortImageY'],this[eD(0x434)],this[eD(0x1d9)]));}['getText'](){const eE=bB;return this['render']&&this[eE(0x1fb)]===eE(0x2b9)||['',null,void 0x0]['includes'](this['text'])?'':''+this[eE(0x471)];}['getOverlayerViewsStyle'](){const eF=bB;let o='';return this['fixed']===eF(0x26d)?o=this['drawX']+'px':this['fixed']==='right'?o=this['drawX']-(this[eF(0x3df)]['stageWidth']-this['ctx']['fixedRightWidth'])+'px':o=this[eF(0x15f)]-this['ctx'][eF(0x452)]+'px',{'position':'absolute','overflow':'hidden','left':o,'top':this[eF(0x1f7)]+0x1+'px','width':this['width']+'px','height':this['height']-0x2+'px','pointerEvents':'initial','userSelect':'none'};}}class Es{constructor(o){const eG=bB;m(this,'ctx'),m(this,'visibleHoverCell'),m(this,'resizeObserver'),m(this,'mutationObserver'),this['ctx']=o,this[eG(0x27c)]();}['init'](){const eJ=bB;this['resizeObserver']=new ResizeObserver(o=>{const eH=b;this[eH(0x3df)]['emit']('resetHeader'),this['ctx'][eH(0x376)]('resizeObserver',o),this['ctx']['emit']('containerResize',this['ctx']['containerElement']);}),this['resizeObserver']['observe'](this['ctx']['containerElement']),this['mutationObserver']=new MutationObserver(o=>{const eI=b;for(const p of o)p['type']==='attributes'&&p[eI(0x2ea)]==='class'&&(this['ctx']['config']['updateCssVar'](),this['ctx']['emit']('draw'));}),this['ctx'][eJ(0x465)]['ENABLE_AUTO_THEME']&&this['mutationObserver']['observe'](document['documentElement'],{'attributes':!0x0,'attributeFilter':[eJ(0x39c)]}),this[eJ(0x3df)]['on']('mousedown',o=>{const eK=eJ;if(this['isBusy'](o))return;const {offsetY:p,offsetX:r}=this['ctx']['getOffset'](o),u=p,w=r,{body:{height:x,visibleHeight:y,visibleWidth:z,y:C}}=this[eK(0x3df)],D=Math['min'](x,y);w>0x0&&w<z&&u>C&&u<C+D||this['ctx']['emit']('mousedownBodyOutside',o),o['button']===0x0&&(this['handleHeaderEvent'](w,u,this['ctx']['header']['renderCellHeaders'],E=>{const eL=eK;this['ctx']['focusCellHeader']=E,this['ctx']['focusCell']=void 0x0,this['ctx'][eL(0x376)]('cellHeaderMousedown',E,o);}),this[eK(0x182)](w,u,this['ctx'][eK(0x380)]['renderRows'],E=>{const eM=eK;this['ctx'][eM(0x350)](E),this['ctx']['focusCellHeader']=void 0x0,this[eM(0x3df)]['emit']('cellMousedown',E,o);}));}),this['ctx']['on']('mouseup',o=>{const eN=eJ;if(o[eN(0x325)]!==0x0||this['isBusy'](o))return;const {offsetY:p,offsetX:r}=this[eN(0x3df)]['getOffset'](o),u=p,w=r;this['handleHeaderEvent'](w,u,this['ctx']['header'][eN(0x303)],x=>{const eO=eN;this['ctx']['focusCellHeader']=x,this['ctx']['emit'](eO(0x3d4),x,o);}),this['handleBodyEvent'](w,u,this['ctx']['body']['renderRows'],x=>{const eP=eN;this[eP(0x3df)][eP(0x350)](x),this['ctx']['emit']('cellMouseup',x,o);});}),this['ctx']['on']('click',o=>{const eQ=eJ;if(o['button']!==0x0||this['isBusy'](o))return;const p=this['ctx']['getOffset'](o)['offsetY'],r=this[eQ(0x3df)]['getOffset'](o)['offsetX'];this['handleHeaderEvent'](r,p,this[eQ(0x3df)][eQ(0x3c0)]['renderCellHeaders'],u=>{const eR=eQ;this['ctx']['clickCellHeader']=u,this['ctx'][eR(0x376)]('cellHeaderClick',u,o),this['selectionClick'](u,o),this['sortClick'](u,o);}),this[eQ(0x182)](r,p,this['ctx']['body']['renderRows'],u=>{const eS=eQ;this['ctx'][eS(0x1a9)]=u,this['ctx']['emit'](eS(0x304),u,o),this['selectionClick'](u,o),this['treeClick'](u,o);},!0x0),this['handleBodyEvent'](r,p,this[eQ(0x3df)]['body']['renderRows'],u=>{this['hoverIconClick'](u);},!0x1);}),this['ctx']['on']('dblclick',o=>{const eT=eJ;if(o[eT(0x325)]!==0x0||this['isBusy'](o))return;const p=this['ctx']['getOffset'](o)['offsetY'],r=this['ctx']['getOffset'](o)['offsetX'];this['handleHeaderEvent'](r,p,this['ctx'][eT(0x3c0)]['renderCellHeaders'],u=>{this['ctx']['emit']('cellHeaderDblclick',u,o);}),this['handleBodyEvent'](r,p,this['ctx']['body']['renderRows'],u=>{this['ctx']['clickCell']=u,this['ctx']['emit']('cellDblclick',u,o);});}),this['ctx']['on']('contextMenu',o=>{const eU=eJ;if(this[eU(0x35b)](o))return;const {offsetY:p,offsetX:r}=this['ctx']['getOffset'](o),u=p,w=r;this['handleHeaderEvent'](w,u,this['ctx']['header']['renderCellHeaders'],x=>{this['ctx']['emit']('cellHeaderContextMenuClick',x,o);}),this['handleBodyEvent'](w,u,this[eU(0x3df)]['body']['renderRows'],x=>{const eV=eU;this[eV(0x3df)]['emit']('cellContextMenuClick',x,o);});}),this[eJ(0x3df)]['on']('mouseout',o=>{const eW=eJ;!this['ctx']['containerElement'][eW(0x436)](o['relatedTarget'])&&this['ctx']['hoverCell']!==void 0x0&&(this['ctx']['hoverRow']=void 0x0,this['ctx']['hoverCell']=void 0x0,this['ctx']['emit'](eW(0x45a)));}),this['ctx']['on']('mousemove',o=>{const eX=eJ;if(this['isBusy'](o))return;this['ctx']['isPointer']=!0x1,this['ctx'][eX(0x33d)]['style']['cursor']==='pointer'&&(this[eX(0x3df)][eX(0x33d)]['style']['cursor']=eX(0x2b9));const p=this['ctx'][eX(0x1c8)](o)[eX(0x277)],r=this['ctx']['getOffset'](o)['offsetX'];this['handleHeaderEvent'](r,p,this['ctx']['header']['renderCellHeaders'],u=>{const eY=eX;this['ctx']['emit']('cellHeaderMouseenter',u,o),this['ctx']['hoverCellHeader']&&this['ctx']['hoverCellHeader']!==u&&this['ctx'][eY(0x376)]('cellHeaderMouseleave',this['ctx']['hoverCellHeader'],o),this['imageEnterAndLeave'](u,o),this['ctx']['hoverCellHeader']!==u&&(this['ctx']['hoverCellHeader']=u,this['visibleHoverCell']=void 0x0,this[eY(0x3df)]['emit']('cellHeaderHoverChange',u,o));}),this['handleBodyEvent'](r,p,this['ctx'][eX(0x380)]['renderRows'],u=>{const eZ=eX;this['imageEnterAndLeave'](u,o),this['visibleHoverCell']!==u&&(this['ctx'][eZ(0x376)]('visibleCellMouseleave',u,o),this['visibleHoverCell']=u,this['ctx']['hoverCellHeader']=void 0x0,this['ctx']['emit']('visibleCellHoverChange',u,o));},!0x0),this['handleBodyEvent'](r,p,this['ctx']['body'][eX(0x448)],u=>{const f0=eX;var w;this['imageEnterAndLeave'](u,o),this[f0(0x3df)]['emit']('cellMouseenter',u,o),this[f0(0x3df)]['hoverCell']&&this['ctx']['hoverCell']!==u&&this[f0(0x3df)]['emit']('cellMouseleave',u,o),this['ctx']['hoverCell']!==u&&(((w=this['ctx']['hoverCell'])==null?void 0x0:w['rowKey'])!==u['rowKey']&&(this[f0(0x3df)]['hoverCell']=u,this['ctx'][f0(0x228)]=this['ctx']['body']['renderRows'][f0(0x27d)](x=>x[f0(0x459)]===u['rowKey']),this['ctx']['emit']('rowHoverChange',this['ctx']['hoverRow'],u,o),this['ctx']['emit']('draw')),this['ctx']['hoverCell']=u,this[f0(0x3df)]['emit']('cellHoverChange',u,o));}),this[eX(0x2f7)](r,p,this['ctx']['footer']['renderRows'],u=>{const f1=eX;this['ctx']['emit']('cellFooterMouseenter',u,o),this['ctx']['hoverCell']&&this[f1(0x3df)]['hoverCell']!==u&&this['ctx']['emit']('cellFooterMouseleave',u,o),this['ctx']['emit'](f1(0x2cf),u,o);});});}['hoverIconClick'](o){o['hoverIconName']&&this['ctx']['isPointer']&&!this['ctx']['disableHoverIconClick']&&this['ctx']['emit']('hoverIconClick',o);}['selectionClick'](o,p){const f2=bB;if(!(['selection','index-selection','selection-tree',f2(0x1ca)]['includes'](o['type'])&&this['ctx']['isPointer']))return;const {offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u;if(this['isInsideElement'](x,w,o['drawSelectionImageX'],o['drawSelectionImageY'],o['drawSelectionImageWidth'],o['drawSelectionImageHeight'])){if(o instanceof at)o['drawSelectionImageName']==='checkbox-uncheck'||o['drawSelectionImageName']==='checkbox-indeterminate'?this[f2(0x3df)]['database']['toggleAllSelection']():o['drawSelectionImageName']==='checkbox-check'&&this['ctx']['database']['clearSelection'](!0x0);else{if(!this[f2(0x3df)]['database'][f2(0x1e4)](o['rowKey']))return;this['ctx'][f2(0x391)]['toggleRowSelection'](o['rowKey'],o['type']);}}}['treeClick'](p,r){const f3=bB;if(!(['tree','selection-tree','tree-selection']['includes'](p['type'])&&this['ctx']['isPointer']))return;const {offsetY:u,offsetX:w}=this['ctx']['getOffset'](r),x=u,y=w;if(!this['isInsideElement'](y,x,p['drawTreeImageX'],p['drawTreeImageY'],p['drawTreeImageWidth'],p['drawTreeImageHeight']))return;const z=this['ctx']['database']['getRowForRowKey'](p['rowKey']),{expand:C=!0x1,expandLazy:D=!0x1}=z||{},{EXPAND_LAZY:E,EXPAND_LAZY_METHOD:F}=this['ctx']['config'];if(E&&F&&!C&&!D)typeof F=='function'&&(this[f3(0x3df)]['database']['expandLoading'](p['rowKey'],!0x0),F({'row':p['row'],'rowIndex':p['rowIndex'],'colIndex':p['colIndex'],'column':p[f3(0x260)],'value':p['getValue']()})['then'](G=>{this['ctx']['database']['setExpandChildren'](p['rowKey'],G),this['ctx']['database']['expandLoading'](p['rowKey'],!0x1),this['ctx']['emit']('expandChange',this['ctx']['database']['getExpandRowKeys']());})['catch'](G=>{const f4=f3;this['ctx']['database'][f4(0x2eb)](p['rowKey'],!0x1),console['error'](G);}));else{const G=this['ctx']['database']['getIsExpand'](p['rowKey']);this['ctx']['database']['expandItem'](p['rowKey'],!G),this[f3(0x3df)]['emit']('expandChange',this['ctx']['database']['getExpandRowKeys']());}}['sortClick'](o,p){const f5=bB,{offsetY:r,offsetX:u}=this[f5(0x3df)][f5(0x1c8)](p),w=r,x=u;if(!this['isInsideElement'](x,w,o[f5(0x45f)],o['drawSortImageY'],o['drawSortImageWidth'],o['drawSortImageHeight']))return;const y=this[f5(0x3df)][f5(0x391)]['getSortState'](o[f5(0x407)]);let z;y['direction']===f5(0x215)?z='asc':y['direction']==='asc'?z='desc':z='none',this[f5(0x3df)]['database']['setSortState'](o['key'],z);}['imageEnterAndLeave'](o,p){const f6=bB,{offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u;if(o instanceof at){if(o['drawSelectionImageSource']&&this['isInsideElement'](x,w,o['drawSelectionImageX'],o['drawSelectionImageY'],o['drawSelectionImageWidth'],o['drawSelectionImageHeight'])){this['ctx'][f6(0x33d)]['style']['cursor']='pointer',this[f6(0x3df)]['isPointer']=!0x0;return;}if(o['drawSortImageSource']&&this['isInsideElement'](x,w,o['drawSortImageX'],o['drawSortImageY'],o['drawSortImageWidth'],o['drawSortImageHeight'])){this[f6(0x3df)]['stageElement']['style'][f6(0x394)]=f6(0x425),this['ctx']['isPointer']=!0x0;return;}}if(o instanceof Vt){if(o['drawSelectionImageSource']&&this['isInsideElement'](x,w,o['drawSelectionImageX'],o['drawSelectionImageY'],o['drawSelectionImageWidth'],o['drawSelectionImageHeight'])){this['ctx']['stageElement']['style']['cursor']=f6(0x425),this['ctx']['isPointer']=!0x0,this['ctx']['database']['getRowSelectable'](o[f6(0x459)])||(this['ctx']['stageElement']['style']['cursor']=f6(0x163));return;}if(o['drawHoverImageSource']&&this['isInsideElement'](x,w,o['drawHoverImageX'],o[f6(0x361)],o['drawHoverImageWidth'],o['drawHoverImageHeight'])){this['ctx']['stageElement']['style'][f6(0x394)]='pointer',this['ctx']['isPointer']=!0x0;return;}if(o['drawTreeImageSource']&&this[f6(0x13e)](x,w,o['drawTreeImageX'],o['drawTreeImageY'],o[f6(0x21e)],o[f6(0x2a3)])){this['ctx']['stageElement'][f6(0x2d1)]['cursor']='pointer',this['ctx']['isPointer']=!0x0;return;}}}['isInsideElement'](o,p,r,u,w,x){return o>r&&o<r+w&&p>u&&p<u+x;}['isBusy'](o){const f7=bB,{offsetY:p,offsetX:r}=this['ctx'][f7(0x1c8)](o),u=p,w=r;if(this['ctx']['loading']||!this['ctx']['isTarget'](o)||this['ctx']['stageElement'][f7(0x2d1)]['cursor']===f7(0x278)||this['ctx']['stageElement']['style']['cursor']==='col-resize'||this['ctx']['columnResizing']||this[f7(0x3df)]['rowResizing'])return!0x0;const {SCROLLER_TRACK_SIZE:x}=this['ctx']['config'];return!!(this['ctx']['scrollerMove']||this['ctx']['scrollerFocus']||u>this['ctx']['stageHeight']-x||w>this['ctx']['stageWidth']-x);}['handleBodyEvent'](o,p,r,u,w=!0x1){if(this['isInsideBody'](p))for(const x of r){const y=x['fixedCells']['concat'](x['noFixedCells']);for(const z of y){const C=z['getDrawX'](),D=z['getDrawY']();if(w){if(o>C&&o<C+z['visibleWidth']&&p>D&&p<D+z['visibleHeight']){u(z);return;}}else{if(o>C&&o<C+z['width']&&p>D&&p<D+z['height']){u(z);return;}}}}}['handleHeaderEvent'](o,p,r,u){for(const w of r){const x=w['getDrawX'](),y=w['getDrawY']();if(o>x&&o<x+w['width']&&p>y&&p<y+w['height']){u(w);return;}}}['handleFooterEvent'](o,p,r,u,w=!0x1){const f8=bB;for(const x of r){const y=x['fixedCells']['concat'](x[f8(0x36e)]);for(const z of y){const C=z['getDrawX'](),D=z['getDrawY']();if(w){if(o>C&&o<C+z['visibleWidth']&&p>D&&p<D+z['visibleHeight']){u(z);return;}}else{if(o>C&&o<C+z['width']&&p>D&&p<D+z['height']){u(z);return;}}}}}['isInsideBody'](o){const f9=bB;return o>this[f9(0x3df)]['body']['y']&&o<this[f9(0x3df)]['body']['y']+this['ctx']['body']['visibleHeight'];}['destroy'](){const fa=bB;this['resizeObserver']['unobserve'](this[fa(0x3df)]['stageElement']),this[fa(0x2d0)]['disconnect']();}}class ks{constructor(o,p){const fb=bB;m(this,'eventBus'),m(this,'eventBrowser'),m(this,fb(0x197)),m(this,'containerElement'),m(this,'stageElement'),m(this,'canvasElement'),m(this,'overlayerElement'),m(this,'editorElement'),m(this,'emptyElement'),m(this,'contextMenuElement'),m(this,'loadingElement'),m(this,'stageWidth',0x0),m(this,'stageHeight',0x0),m(this,'paint'),m(this,'icons'),m(this,'domSelectionStr',''),m(this,'isMouseoverTargetContainer',!0x1),m(this,'mousedown',!0x1),m(this,'isPointer',!0x1),m(this,'isEmpty',!0x1),m(this,'rowResizing',!0x1),m(this,'columnResizing',!0x1),m(this,'scrollerMove',!0x1),m(this,'scrollerFocus',!0x1),m(this,'autofillMove',!0x1),m(this,'selectorMove',!0x1),m(this,fb(0x15b),!0x1),m(this,'selectColsIng',!0x1),m(this,'selectRowsIng',!0x1),m(this,'dragHeaderIng',!0x1),m(this,'finding',!0x1),m(this,fb(0x2b6),!0x1),m(this,'editing',!0x1),m(this,'loading',!0x1),m(this,'onlyMergeCell',!0x1),m(this,'selectOnlyOne',!0x1),m(this,'hasSelection',!0x1),m(this,'hasTree',!0x1),m(this,fb(0x479),0x0),m(this,'scrollX',0x0),m(this,'fixedLeftWidth',0x0),m(this,'fixedRightWidth',0x0),m(this,fb(0x11a),0x0),m(this,'maxColIndex',0x0),m(this,'maxRowIndex',0x0),m(this,'hoverRow'),m(this,'clickCell'),m(this,'focusCell'),m(this,'currentCell'),m(this,'hoverCell'),m(this,'clickCellHeader'),m(this,'focusCellHeader'),m(this,'hoverCellHeader'),m(this,'mouseX',0x0),m(this,'mouseY',0x0),m(this,'body',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'headIndex':0x0,'tailIndex':0x0,'visibleRows':[],'renderRows':[],'data':[]}),m(this,fb(0x35a),{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'renderRows':[]}),m(this,fb(0x3c0),{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'visibleLeafColumns':[],'leafCellHeaders':[],'allCellHeaders':[],'renderLeafCellHeaders':[],'renderCellHeaders':[],'fixedLeftCellHeaders':[],'fixedRightCellHeaders':[],'renderCenterCellHeaders':[]}),m(this,fb(0x230),{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1],'xArrCopy':[-0x1,-0x1],'yArrCopy':[-0x1,-0x1]}),m(this,'autofill',{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]}),m(this,'finderBar',{'text':'','rowIndex':-0x1,'colIndex':-0x1,'type':fb(0x380)}),m(this,'database'),m(this,'history'),m(this,'config');const {containerElement:r,stageElement:u,canvasElement:w,overlayerElement:x,editorElement:y,emptyElement:z,loadingElement:C,contextMenuElement:D}=o;this[fb(0x2d7)]=r,u['tabIndex']=0x0,this['stageElement']=u,this['canvasElement']=w,this['overlayerElement']=x,this['editorElement']=y,this['emptyElement']=z,this['loadingElement']=C,this[fb(0x1d2)]=D,this['config']=new tl(p['config']||{}),this['eventBus']=new zs(),this[fb(0x3d2)]=new Rs(this),this['eventTable']=new Es(this),this['paint']=new Cs(this['canvasElement']),this['database']=new Fs(this,p),this['history']=new ws(this),this['icons']=new js(this);}[bB(0x3a1)](o){this['config']=new tl(o);}['setItemValueByEditor'](o,p,r,u=!0x0,w=!0x0,x=!0x0){const fd=bB;if(this['config']['ENABLE_MERGE_CELL_LINK']){const y=this['database']['getVirtualBodyCellByKey'](o,p);if(y&&(y['mergeRow']||y['mergeCol'])){const {dataList:z}=y['getSpanInfo'](),C=z[fd(0x3e4)](D=>({...D,'value':r}));this['database']['batchSetItemValue'](C,u,x);return;}}this[fd(0x391)]['setItemValue'](o,p,r,u,w,!0x0,x);}[bB(0x2df)](o,p=!0x0,r=!0x0){const ff=bB;if(this['config']['ENABLE_MERGE_CELL_LINK']){const u=[];o['forEach'](w=>{const fe=b,x=this['database'][fe(0x122)](w['rowKey']),y=this['database']['getColIndexForKey'](w['key']);if(x===void 0x0||y===void 0x0)return;const z=this[fe(0x391)]['getVirtualBodyCell'](x,y);if(z){const {dataList:C}=z['getSpanInfo'](),D=C['map'](E=>({...E,'value':w['value']}));u['push'](...D);}}),this['database']['batchSetItemValue'](u,p,r);}else this[ff(0x391)]['batchSetItemValue'](o,p,r);}['setFocusCell'](o){const fg=bB;var p;if(this['focusCell']!==o){if(((p=this[fg(0x368)])==null?void 0x0:p['rowKey'])!==o['rowKey']){this['currentCell']=o,this[fg(0x376)]('rowFocusChange',o);const r={'rowIndex':o['rowIndex'],'rowKey':o['rowKey'],'row':o['row']};this[fg(0x376)]('currentRowChange',r);}this[fg(0x368)]=o,this['emit'](fg(0x36a),o);}}[bB(0x3e3)](){const fj=bB;this['selector'][fj(0x141)]=!0x1,this[fj(0x230)]['xArr']=[-0x1,-0x1],this['selector'][fj(0x236)]=[-0x1,-0x1],this['emit']('clearSelector');}['clearSelectorCopy'](){const fk=bB;this['selector']['xArrCopy']=[-0x1,-0x1],this['selector'][fk(0x21b)]=[-0x1,-0x1];}['clearAutofill'](){this['autofill']={'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]};}['getSelectedData'](){const fm=bB,o=[],p=this['selector']['yArr'],r=this['selector']['xArr'];let u='';for(let w=0x0;w<=p[0x1]-p[0x0];w++){const x=[];for(let y=0x0;y<=r[0x1]-r[0x0];y++){const z=w+p[0x0],C=y+r[0x0],D=this[fm(0x391)]['getVirtualBodyCell'](z,C);D&&(D['selectorCellValueType']==='displayText'?x['push'](D['displayText']):x['push'](D['getValue']()));}u+=x['join']('\x09')+'\x0d',o['push'](x);}return u=u?u['replace'](/\r$/,''):'\x20',{'xArr':r,'yArr':p,'text':u,'value':o};}[bB(0x251)](o,p){const fn=bB;let r=Math['floor'](o);const u=this['body']['width']-this['body'][fn(0x3ca)];r<0x0?r=0x0:r>u&&(r=u);let w=Math['floor'](p),x=this[fn(0x380)]['height']-this[fn(0x380)]['visibleHeight'];this['config']['FOOTER_FIXED']||(x=this['body']['height']+this['footer']['height']-this['body']['visibleHeight']),w<0x0?w=0x0:w>x&&(w=x),this['emit']('setScroll',r,w);}['setScrollX'](o){const fo=bB;let p=Math[fo(0x1e3)](o);const r=this[fo(0x380)]['width']-this[fo(0x380)]['visibleWidth'];p<0x0?p=0x0:p>r&&(p=r),this['emit']('setScrollX',p);}['setScrollY'](o){const fp=bB;let p=Math['floor'](o),r=0x0;this[fp(0x465)]['FOOTER_FIXED']||(r=this['footer']['height']);const u=this['body'][fp(0x3ef)]-this[fp(0x380)]['visibleHeight']+r;p<0x0?p=0x0:p>u&&(p=u),this['emit']('setScrollY',p);}['startAdjustPosition'](o){this['emit']('startAdjustPosition',o);}['stopAdjustPosition'](){this['emit']('stopAdjustPosition');}['isTarget'](o){return!!this['containerElement']['contains'](o['target']);}[bB(0x1c8)](o){const fq=bB,{left:p,top:r}=this[fq(0x2d7)]['getBoundingClientRect']();return{'offsetX':o['clientX']-p,'offsetY':o['clientY']-r};}[bB(0x333)](o){const fr=bB;return this['eventBus'][fr(0x11f)](o);}['on'](o,p){this['eventBus']['on'](o,p);}['once'](o,p){this['eventBus']['once'](o,p);}['off'](o,p){this['eventBus']['off'](o,p);}['emit'](o,...p){const ft=bB;this['eventBus'][ft(0x376)](o,...p);}[bB(0x242)](){const fu=bB;this['eventTable']['destroy'](),this[fu(0x3d2)]['destroy'](),this['eventBus']['destroy']();}}class cl{constructor(o,p){const fv=bB;m(this,'ctx'),m(this,fv(0x1df)),m(this,fv(0x1e7),!0x1),m(this,'trackX',0x0),m(this,'trackY',0x0),m(this,'trackWidth',0x0),m(this,'trackHeight',0x0),m(this,'splitPoints',[]),m(this,'barX',0x0),m(this,fv(0x3b3),0x0),m(this,fv(0x401),0x0),m(this,'barHeight',0x0),m(this,'distance',0x0),m(this,'visibleDistance',0x0),m(this,'clientX',0x0),m(this,'clientY',0x0),m(this,fv(0x397),0x0),m(this,'isDragging',!0x1),m(this,'scroll',0x0),this['ctx']=o,this['type']=p,this['type']===fv(0x232)?this['scroll']=this['ctx']['scrollY']:this['scroll']=this[fv(0x3df)]['scrollX'];}['onWheel'](o){this['updateScroll'](o);}[bB(0x306)](o){const fw=bB,{clientY:p,clientX:r}=o['touches'][0x0],u=p-this['clientY'],w=r-this[fw(0x3f8)];let x=0x0;this['type']==='vertical'?(x=Math['max'](0x0,Math['min'](this[fw(0x397)]-u,this[fw(0x1f2)])),this[fw(0x188)]()&&!(x===0x0&&u>0x0||x===this[fw(0x1f2)]&&u<0x0)&&o['preventDefault']()):this[fw(0x1df)]===fw(0x353)&&(x=Math[fw(0x181)](0x0,Math['min'](this['dragStart']-w,this['distance']))),this[fw(0x38d)]=x;}['onTouchstart'](o){const fx=bB,{clientY:p,clientX:r}=o['touches'][0x0];this['clientX']=r,this['clientY']=p,this[fx(0x397)]=this[fx(0x38d)];}['onMouseDown'](o){const fy=bB;if(!(o['target']instanceof Element)||!this['ctx']['isTarget'](o))return;if(this['ctx']['stageElement']['style']['cursor']==='row-resize'||this['ctx'][fy(0x33d)]['style'][fy(0x394)]==='col-resize')return!0x0;const {offsetX:p,offsetY:r,clientX:u,clientY:w}=o;if(!(u==this['clientX']&&w==this['clientY'])){if(this['isOnScrollbar'](p,r))this[fy(0x3f8)]=u,this['clientY']=w,this['isDragging']=!0x0,this['ctx']['scrollerMove']=!0x0,this['isFocus']=!0x0,this['dragStart']=this['scroll'],o['preventDefault']();else{if(this['isOnTrack'](p,r)){let x=0x0;this['type']==='vertical'?x=(r-this['ctx']['header']['height']-this['barHeight']/0x2)/(this[fy(0x210)]-this['barHeight'])*this['distance']:x=(p-this['barWidth']/0x2)/(this['visibleDistance']-this['barWidth'])*this['distance'],this['scroll']=Math[fy(0x181)](0x0,Math['min'](x,this['distance']));}}}}['onMouseUp'](){const fz=bB;this[fz(0x3b9)]=!0x1,this[fz(0x1e7)]=!0x1,this['clientX']=0x0,this['clientY']=0x0;}['onMouseMove'](o){const fA=bB,{offsetX:p,offsetY:r,clientX:u,clientY:w,buttons:x}=o;if(this['isOnScrollbar'](p,r)&&o['target']===this['ctx'][fA(0x46c)]?this['isFocus']=!0x0:this['isFocus']=!0x1,x===0x0||u==this['clientX']&&w==this['clientY'])return;let y=0x0;if(this['type']==='horizontal'?y=u-this['clientX']:y=w-this['clientY'],this['isDragging']&&y!==0x0){let z=0x0;this['type']==='vertical'?z=this['dragStart']+y/(this['visibleDistance']-this['barHeight'])*this['distance']:z=this['dragStart']+y/(this['visibleDistance']-this['barWidth'])*this['distance'],this[fA(0x38d)]=Math[fA(0x181)](0x0,Math[fA(0x2bc)](z,this[fA(0x1f2)]));}}['isPointInElement'](o,p,r,u,w,x){return o>=r&&o<=r+w&&p>=u&&p<=u+x;}['hasScrollbar'](){const fB=bB;return this[fB(0x1df)]==='vertical'?this['barHeight']>0x0:this['type']==='horizontal'?this['barWidth']>0x0:!0x1;}['isOnScrollbar'](o,p){return this['isPointInElement'](o,p,this['barX'],this['barY'],this['barWidth'],this['barHeight']);}['isOnTrack'](o,p){const fC=bB;return this['isPointInElement'](o,p,this[fC(0x1f6)],this[fC(0x131)],this['trackWidth'],this['trackHeight']);}[bB(0x2e4)](o){const fD=bB,p=o[fD(0x22b)],r=o['deltaY'];this['type']==='vertical'&&o['shiftKey']===!0x1?(this['hasScrollbar']()&&!(this['scroll']===0x0&&r<0x0||this[fD(0x38d)]===this['distance']&&r>0x0)&&o['preventDefault'](),this['scroll']=Math[fD(0x181)](0x0,Math[fD(0x2bc)](this['scroll']+r,this['distance']))):this['type']==='horizontal'&&(o['shiftKey']?this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+r,this['distance'])):this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+p,this['distance'])));}['updatedSize'](){const fE=bB,{body:p,header:r,stageHeight:u,stageWidth:w,config:{SCROLLER_TRACK_SIZE:x=0x0,SCROLLER_SIZE:z=0x0,BORDER:C}}=this['ctx'],D=w,E=u,F=r['height'],G=r[fE(0x3a0)],J=p['height'],K=this['ctx'][fE(0x35a)]['height'];if(this['type']==='vertical'){this['visibleDistance']=E-x-F,this['distance']=J-this[fE(0x210)]+K,this['trackX']=D-x,this['trackY']=0x0,this['splitPoints']=[this['trackX'],F,this['trackX']+x,F],this[fE(0x135)]=x,this['trackHeight']=E,this['barX']=this['trackX']-0x1+(x-z)/0x2,this[fE(0x401)]=z;const L=this['distance']?this['visibleDistance']/(J+K):0x0;let N=Math['floor'](L*this['visibleDistance']);N<0x1e?N=0x1e:N>this['visibleDistance']&&(N=0x0),this['barHeight']=N,this['barY']=F+this['scroll']/this['distance']*(this['visibleDistance']-this[fE(0x3fd)]),this['scroll']=Math['max'](0x0,Math['min'](this[fE(0x38d)],this[fE(0x1f2)]));}else{this[fE(0x210)]=D-x,this['distance']=G-this['visibleDistance'],this[fE(0x1d6)]=[D-x,E-x,D-x,E];const O=C?0x0:0.5;this['trackX']=0x0,this['trackY']=E-x+O,this[fE(0x135)]=D,this['trackHeight']=x;const R=this['distance']?this['visibleDistance']/G:0x0;let S=Math['floor'](R*this['visibleDistance']);this['barY']=this['trackY']-0x1+(x-z)/0x2,S<0x1e?S=0x1e:S>=this['visibleDistance']&&(S=0x0),this[fE(0x401)]=S,this['barHeight']=z,this['barX']=this['scroll']/this['distance']*(this[fE(0x210)]-this['barWidth']),this['scroll']=Math['max'](0x0,Math[fE(0x2bc)](this[fE(0x38d)],this[fE(0x1f2)]));}}['draw'](){const fF=bB,{config:{SCROLLER_FOCUS_COLOR:o,SCROLLER_COLOR:p,BORDER_COLOR:r,BORDER:u,SCROLLER_TRACK_COLOR:w}}=this['ctx'];this['updatedSize']();let x=r;u||(x='transparent'),this['ctx']['paint']['drawRect'](this[fF(0x1f6)],this['trackY'],this['trackWidth'],this['trackHeight'],{'borderColor':x,'fillColor':w}),this['ctx']['paint']['drawRect'](this['barX'],this[fF(0x3b3)],this['barWidth'],this['barHeight'],{'fillColor':this['isFocus']||this['isDragging']?o:p,'radius':0x4}),this['splitPoints'][fF(0x13f)]>0x0&&this['ctx']['paint']['drawLine'](this[fF(0x1d6)],{'borderColor':x,'borderWidth':0x1}),this[fF(0x3df)]['scrollerFocus']=this['isFocus'];}}class Os{constructor(o){const fG=bB;m(this,'ctx'),m(this,'verticalScrollbar'),m(this,'horizontalScrollbar'),m(this,'mousedownHeader',!0x1),m(this,fG(0x405),''),m(this,'adjustPositionY',''),m(this,fG(0x266),0x0),m(this,fG(0x207),0x0),this[fG(0x3df)]=o,this['verticalScrollbar']=new cl(o,'vertical'),this[fG(0x246)]=new cl(o,'horizontal'),this['ctx']['on'](fG(0x1b4),p=>this['onWheel'](p)),this['ctx']['on']('mousedown',p=>this['onMouseDown'](p)),this['ctx']['on']('mousemove',p=>this['onMouseMove'](p)),this['ctx']['on']('mouseup',()=>this[fG(0x3ba)]()),this['ctx']['on']('touchmove',p=>this['onTouchmove'](p)),this['ctx']['on']('touchstart',p=>{const fH=fG;this[fH(0x2e2)](p);}),this['ctx']['on']('setScroll',(p,r)=>{this['setScroll'](p,r);}),this['ctx']['on']('setScrollX',p=>{this['setScrollX'](p);}),this['ctx']['on']('setScrollY',p=>{const fI=fG;this[fI(0x42b)](p);}),this[fG(0x3df)]['on']('scrollToIndex',(p,r)=>{this['scrollToIndex'](p,r);}),this[fG(0x3df)]['on']('cellHeaderMousedown',()=>{this['mousedownHeader']=!0x0;}),this[fG(0x3df)]['on']('startAdjustPosition',p=>{const fJ=fG;this[fJ(0x302)](p);}),this['ctx']['on']('stopAdjustPosition',()=>{this['stopAdjustPosition']();});}['onWheel'](o){const fK=bB;this['verticalScrollbar'][fK(0x413)](o),this[fK(0x246)]['onWheel'](o),this['draw']();}['onTouchmove'](o){this['verticalScrollbar']['onTouchmove'](o),this['horizontalScrollbar']['onTouchmove'](o),this['draw']();}[bB(0x2e2)](o){const fL=bB;this['verticalScrollbar']['onTouchstart'](o),this['horizontalScrollbar']['onTouchstart'](o),this[fL(0x45a)]();}['onMouseDown'](o){const fM=bB;this['verticalScrollbar']['onMouseDown'](o),this['horizontalScrollbar'][fM(0x257)](o),this[fM(0x45a)]();}[bB(0x264)](o){const fN=bB;this[fN(0x21c)][fN(0x264)](o),this['horizontalScrollbar']['onMouseMove'](o),this[fN(0x45a)]();}['onMouseUp'](){this['mousedownHeader']=!0x1,this['verticalScrollbar']['onMouseUp'](),this['horizontalScrollbar']['onMouseUp'](),this['ctx']['scrollerMove']=!0x1;}[bB(0x45a)](){const fO=bB;this['verticalScrollbar']['draw'](),this['horizontalScrollbar']['draw']();const o=Math[fO(0x1e3)](this['horizontalScrollbar'][fO(0x38d)]),p=Math['floor'](this['verticalScrollbar'][fO(0x38d)]);(o!==this['ctx']['scrollX']||p!==this['ctx'][fO(0x479)])&&(this['ctx']['emit'](fO(0x2f5),o,p),o!==this[fO(0x3df)][fO(0x39f)]&&this['ctx']['emit'](fO(0x2ad),o),p!==this[fO(0x3df)]['scrollY']&&this[fO(0x3df)]['emit']('onScrollY',p),this['ctx'][fO(0x39f)]=o,this['ctx']['scrollY']=p,this['ctx']['emit']('draw'));}['setScroll'](o,p){const fP=bB;this['horizontalScrollbar'][fP(0x38d)]=o,this[fP(0x21c)]['scroll']=p,this['ctx']['emit'](fP(0x45a)),this['ctx']['emit']('onScroll',o,p);}['setScrollX'](o){const fQ=bB;this[fQ(0x246)][fQ(0x38d)]=o,this['ctx']['emit']('draw');}['setScrollY'](o){this['verticalScrollbar']['scroll']=o,this['ctx']['emit']('draw');}['scrollToColkey'](o){const {header:p}=this['ctx'],r=p['leafCellHeaders']['find'](u=>u['key']===o);r&&this['setScrollX'](r['x']-p['visibleWidth']/0x2);}['scrollToColIndex'](o){const {header:p}=this['ctx'],r=p['leafCellHeaders']['find'](u=>u['colIndex']===o);r&&this['setScrollX'](r['x']-p['visibleWidth']/0x2);}['scrollToRowIndex'](o){const fR=bB,{body:p,database:r}=this[fR(0x3df)],{top:u}=r['getPositionForRowIndex'](o);this[fR(0x42b)](u-p['visibleHeight']/0x2);}['scrollToIndex'](o,p){this['scrollToRowIndex'](o),this['scrollToColIndex'](p);}['scrollToRowKey'](o){const {body:p,database:r}=this['ctx'],u=r['getRowIndexForRowKey'](o);if(u===void 0x0)return;const {top:w}=r['getPositionForRowIndex'](u);this['setScrollY'](w-p['visibleHeight']/0x2);}['startAdjustPosition'](o){const fS=bB;var p,r;const {offsetX:u,offsetY:w}=this['ctx']['getOffset'](o);let x='',y='';if(((p=this['ctx'][fS(0x368)])==null?void 0x0:p['fixed'])!=='left'&&u<this['ctx']['fixedLeftWidth']?x='left':((r=this['ctx']['focusCell'])==null?void 0x0:r[fS(0x1dc)])!==fS(0x2e8)&&u>this['ctx']['body']['visibleWidth']-this['ctx']['fixedRightWidth']?x=fS(0x2e8):(x='',this['stopAdjustPosition'](!0x0,!0x1)),!this['mousedownHeader']&&w<this[fS(0x3df)]['header']['visibleHeight']?y='top':w>this['ctx']['header']['visibleHeight']+this['ctx']['body']['visibleHeight']?y='bottom':(y='',this['stopAdjustPosition'](!0x1,!0x0)),x&&this['adjustPositionX']!==x){this['adjustPositionX']=x;let z=0xa*(x===fS(0x26d)?-0x1:0x1);this['timerX']&&(clearInterval(this['timerX']),this['timerX']=0x0),this['timerX']=setInterval(()=>{const fT=fS;z*=1.5;const {scrollX:C}=this[fT(0x3df)],D=C+z;(D<0x0||D>this['ctx']['body']['width'])&&(clearInterval(this['timerX']),this['timerX']=0x0),this['ctx']['setScrollX'](D);},0x64);}if(y&&this['adjustPositionY']!==y){this['adjustPositionY']=y;let C=0xa*(y==='top'?-0x1:0x1);this[fS(0x207)]&&(clearInterval(this['timerY']),this['timerY']=0x0),this['timerY']=setInterval(()=>{const fU=fS;C*=1.5;const {scrollY:D}=this['ctx'],E=D+C;(E<0x0||E>this['ctx']['body']['height'])&&(clearInterval(this['timerY']),this['timerY']=0x0),this['ctx'][fU(0x42b)](E);},0x64);}}['stopAdjustPosition'](o=!0x0,p=!0x0){o&&(this['adjustPositionX']='',this['timerX']&&(clearInterval(this['timerX']),this['timerX']=0x0)),p&&(this['adjustPositionY']='',this['timerY']&&(clearInterval(this['timerY']),this['timerY']=0x0));}}class Ds{constructor(o,p){const fV=bB;m(this,'root'),m(this,'key'),m(this,'childrenKey'),this['root']=o,this['key']=p?.['key']||'key',this['childrenKey']=p?.[fV(0x24d)]||'children';}[bB(0x1b0)](){const fW=bB;return this[fW(0x298)];}['treeMove'](p,r,u){const fX=bB,w=this['findNodeWithParent'](this[fX(0x298)],p[this[fX(0x407)]]);if(!w)throw new Error(fX(0x1cf));const {parent:x,index:y,node:z}=w;if(x){const F=x[this['childrenKey']];F[fX(0x3bb)](y,0x1),F[fX(0x13f)]===0x0&&delete x[this['childrenKey']];}else this['root']['splice'](y,0x1);const C=this['findNodeWithParent'](this['root'],r[this['key']]);if(!C)throw new Error(fX(0x396));const {parent:D,index:E}=C;u==='before'?D?D[this['childrenKey']]['splice'](E,0x0,z):this['root'][fX(0x3bb)](E,0x0,z):u==='after'&&(D?D[this['childrenKey']]['splice'](E+0x1,0x0,z):this['root'][fX(0x3bb)](E+0x1,0x0,z));}['findNodeWithParent'](o,p,r=null){const fY=bB;for(let u=0x0;u<o['length'];u++){const w=o[u];if(w[this['key']]===p)return{'parent':r,'index':u,'node':w};if(w[this['childrenKey']]){const x=this['findNodeWithParent'](w[this[fY(0x24d)]],p,w);if(x)return x;}}return null;}}class Ps{constructor(o){const fZ=bB;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,fZ(0x3a0),0x0),m(this,'height',0x0),m(this,'resizeTarget',null),m(this,'dragTarget',null),m(this,'dragingCell'),m(this,fZ(0x3b0),0x0),m(this,fZ(0x383),0x0),m(this,'isResizing',!0x1),m(this,fZ(0x3f8),0x0),m(this,'resizeDiff',0x0),m(this,'columnIndex',0x0),m(this,fZ(0x1e9),!0x1),m(this,'columns'),m(this,fZ(0x3b8)),m(this,'visibleLeafColumns',[]),m(this,fZ(0x26c),0x0),m(this,'visibleWidth',0x0),m(this,'allCellHeaders',[]),m(this,'leafCellHeaders',[]),m(this,'renderLeafCellHeaders',[]),m(this,'fixedLeftCellHeaders',[]),m(this,'centerCellHeaders',[]),m(this,'fixedRightCellHeaders',[]),m(this,'renderCenterCellHeaders',[]),m(this,'renderFixedCellHeaders',[]),this[fZ(0x3df)]=o,this[fZ(0x3df)]['on']('resetHeader',xt(()=>{const g0=fZ;this['init'](),this['ctx'][g0(0x3e3)](),this[g0(0x3df)]['emit']('draw');},0x64)),this['init'](),this['initResizeColumn'](),this['initDragColumn']();}['init'](p=!0x1){const g1=bB,{config:{HEADER_HEIGHT:r,SCROLLER_TRACK_SIZE:u}}=this['ctx'];if(!p){const F=this['ctx']['database'][g1(0x1b2)]();this['columns']=F;}this['allCellHeaders']=[],this[g1(0x23d)]=[],this['fixedLeftCellHeaders']=[],this['fixedRightCellHeaders']=[],this['centerCellHeaders']=[],this['visibleColumns']=zl(this['columns']);const w=zi(this['visibleColumns']),x=ui(this['visibleColumns']);this[g1(0x3ef)]=r*w,this['visibleHeight']=this[g1(0x3ef)],this[g1(0x3a0)]=x[g1(0x157)]((G,J)=>{const g2=g1,K=J[g2(0x3a0)]||0x64,{maxWidth:L,minWidth:N}=J;return L&&K>L?G+L:N&&K<N?G+N:G+K;},0x0),this['columnIndex']=0x0,this['resizeNum']=0x0;const y=xs(Ci(this['visibleColumns'],w));this[g1(0x442)](y,0x0),this['ctx']['database']['updateColIndexKeyMap'](this['leafCellHeaders']);const z=this[g1(0x3df)][g1(0x2d7)]['getBoundingClientRect']();this['resizeNum']>0x0?this[g1(0x3df)]['stageWidth']=Math[g1(0x1e3)](z['width']):this[g1(0x3df)]['stageWidth']=Math['min'](Math['floor'](this['width']+u),Math['floor'](z['width'])),this[g1(0x3df)]['stageElement'][g1(0x2d1)]['width']=this[g1(0x3df)]['stageWidth']+'px',this[g1(0x3ca)]=this['ctx']['stageWidth']-u;const C=this[g1(0x3ca)]-this['width'];if(this['resizeNum']&&C>0x0){const G=Math['floor'](C/this['resizeNum']*0x64)/0x64;this['resizeAllColumn'](G);}const D=this['fixedLeftCellHeaders']['filter'](J=>!J['hasChildren']);this['ctx']['fixedLeftWidth']=D['reduce']((J,K)=>J+K['width'],0x0);const E=this['fixedRightCellHeaders']['filter'](J=>!J[g1(0x43e)]);this['ctx']['fixedRightWidth']=E['reduce']((J,K)=>J+K['width'],u),this['ctx']['maxColIndex']=this[g1(0x23d)]['length']-0x1,this['ctx']['header']['x']=this['x'],this['ctx']['header']['y']=this['y'],this['ctx']['header']['width']=this['width'],this['ctx']['header']['height']=this['height'],this['ctx']['header']['allCellHeaders']=this['allCellHeaders'],this['ctx']['header'][g1(0x3ca)]=this[g1(0x3ca)],this['ctx']['header']['visibleHeight']=this[g1(0x26c)];}[bB(0x1ec)](){const g5=bB;this['ctx']['on']('mousedown',o=>{const g3=b;this['ctx']['config']['ENABLE_RESIZE_COLUMN']&&this[g3(0x3df)][g3(0x36d)](o)&&(this['clientX']=o[g3(0x3f8)],this['resizeTarget']?(this['isResizing']=!0x0,this['ctx']['columnResizing']=!0x0):this[g3(0x20e)]=!0x1,this['isMouseDown']=!0x0);}),this['ctx']['on']('mouseup',()=>{const g4=b;this[g4(0x3df)][g4(0x465)]['ENABLE_RESIZE_COLUMN']&&(this['isMouseDown']=!0x1,this['resizeDiff']!==0x0&&this['resizeTarget']&&this['resizeColumn'](this['resizeTarget'],this['resizeDiff']),this['resizeTarget']=null,this['isResizing']=!0x1,this['isMouseDown']=!0x1,this['ctx']['columnResizing']=!0x1,this[g4(0x3f8)]=0x0,this['resizeDiff']=0x0);}),this[g5(0x3df)]['on']('mousemove',p=>{const g6=g5;if(!this['ctx']['config']['ENABLE_RESIZE_COLUMN']||this['ctx'][g6(0x208)])return;const {stageWidth:r,config:{RESIZE_COLUMN_MIN_WIDTH:u}}=this['ctx'];if(this['isResizing']&&this['resizeTarget']){const w=this['resizeTarget'][g6(0x3a0)],x=this['resizeTarget']['minWidth'],y=this['resizeTarget']['maxWidth'];let z=p['clientX']-this['clientX'];z+w<u&&(z=-(w-u)),x&&z+w<x&&(z=-(w-x)),y&&z+w>y&&(z=y-w),this['resizeDiff']=z,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this[g6(0x1e9)])return;if(p['offsetX']<0x0||p['offsetX']>this['visibleWidth']){this['ctx']['stageElement']['style']['cursor']==='col-resize'&&(this['ctx']['stageElement']['style'][g6(0x394)]='default');return;}this['ctx']['stageElement']['style']['cursor']===g6(0x12e)&&(this['ctx']['stageElement']['style']['cursor']='default');const C=[...this['renderFixedCellHeaders'],...this['renderCenterCellHeaders']];for(const D of C){const {offsetX:E,offsetY:F}=this['ctx'][g6(0x1c8)](p),G=E,J=F,K=D['getDrawX'](),L=D[g6(0x3cd)]();if(G>K+D[g6(0x3a0)]-0x5&&G<K+D['width']+0x4&&G<r-0x4&&J>L){const N=D[g6(0x2c5)]+D['colspan']-0x1,O=this['leafCellHeaders']['find'](R=>R['colIndex']===N);if(!O||!O[g6(0x1dc)]&&this[g6(0x3df)]['stageWidth']-this['ctx']['fixedRightWidth']<K+D['width'])return;this['ctx']['isTarget'](p)&&F<=this['height']&&(this[g6(0x3df)][g6(0x33d)]['style'][g6(0x394)]=g6(0x12e),this['resizeTarget']=O);}}}});}['initDragColumn'](){const g7=bB;this[g7(0x3df)]['on']('cellHeaderMousedown',o=>{const g8=g7;this[g8(0x3df)]['config']['ENABLE_DRAG_COLUMN']&&(o['column']['dragDisabled']||(this['dragTarget']===o?(this['ctx']['dragHeaderIng']=!0x0,this['dragCellDiff']=this[g8(0x3df)]['mouseX']-o['drawX'],this['ctx']['stageElement']['style'][g8(0x394)]='grabbing'):(this['dragTarget']=o,this['ctx']['dragHeaderIng']=!0x1)));}),this['ctx']['on']('cellMousedown',()=>{const g9=g7;this[g9(0x3df)]['config']['ENABLE_DRAG_COLUMN']&&(this[g9(0x374)]=null,this[g9(0x3df)]['dragHeaderIng']=!0x1);}),this['ctx']['on']('mouseup',()=>{const ga=g7;if(this['ctx']['config'][ga(0x2e3)]){if(this['dragingCell']&&this['dragTarget']){const o=(C,D={})=>(C['forEach']((E,F)=>{E['children']&&o(E['children'],D),D[E['key']]=F;}),D),p=this['ctx']['database']['getColumns'](),r=Ci(p,zi(p)),u=new Ds(r,{'key':ga(0x407),'childrenKey':'children'}),w=this['dragTarget']['colIndex']>this['dragingCell']['colIndex']?'before':'after';u['treeMove'](this['dragTarget'][ga(0x260)],this['dragingCell']['column'],w);const x=u['getTree'](),y=o(x);this['ctx'][ga(0x391)]['setCustomHeader']({'sortData':y}),this['init']();const z={'source':this[ga(0x374)],'target':this['dragingCell'],'columns':r};this['ctx']['emit']('columnDragChange',z);}this['ctx']['dragHeaderIng']&&this['dragTarget']&&(this[ga(0x3df)]['dragHeaderIng']=!0x1,this['dragTarget']=null,this['dragingCell']=void 0x0,this['dragCellDiff']=0x0,this[ga(0x3df)]['clearSelector'](),this['ctx']['focusCellHeader']=void 0x0,this['ctx']['stageElement'][ga(0x2d1)][ga(0x394)]='default',this['ctx']['emit']('draw'));}}),this['ctx']['on']('mousemove',o=>{const gb=g7;this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(!this['ctx']['dragHeaderIng']||!this['dragTarget']||(this['dragTarget']['fixed']||this['ctx']['startAdjustPosition'](o),this['ctx']['emit'](gb(0x45a))));}),this['ctx']['on']('cellHoverChange',o=>{const gd=g7;this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(o['column'][gd(0x175)]||(this['dragingCell']=this[gd(0x147)](o['colIndex'])));}),this[g7(0x3df)]['on']('cellHeaderHoverChange',o=>{const ge=g7;this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(o[ge(0x260)]['dragDisabled']||(this[ge(0x1eb)]=this['getDragCellHeader'](o[ge(0x2c5)])));});}['getDragCellHeader'](o){const gf=bB;if(!this['dragTarget']||!this['ctx']['dragHeaderIng'])return;const {column:{parentKey:p},key:r,level:u,fixed:w}=this['dragTarget'],x=this[gf(0x240)]['find'](y=>y['key']!==r&&y['fixed']===w&&y['column']['level']===u&&y['column']['parentKey']===p&&y['colIndex']<=o&&y['colIndex']+y[gf(0x295)]-0x1>=o);if(this[gf(0x3df)]['dragHeaderIng']){const y=x?gf(0x1e0):'not-allowed';this['ctx']['stageElement']['style']['cursor']=y;}return x;}[bB(0x2f9)](o,p){const gk=bB,r=x=>{const gg=b;x[gg(0x446)](y=>{const gj=gg;if(y['children']&&y['children']['length']>0x0&&r(y['children']),y['key']===o[gj(0x407)]){const z=y[gj(0x3a0)]||0x64;y['width']=z+p;}});};r(this['columns']);let u=0x0;if(this['width']<this['visibleWidth']){const x=this['visibleWidth']-this['width'];u=Math['floor'](x/this['resizeNum']*0x64)/0x64,this['resizeAllColumn'](u);}const w=o['width']+p+u;this['ctx'][gk(0x376)]('resizeColumnChange',{'colIndex':o['colIndex'],'key':o['key'],'oldWidth':o['width'],'width':w,'column':o['column'],'columns':this['columns']}),this[gk(0x3df)]['database'][gk(0x248)](o['key'],w),this['init'](!0x0),this['ctx']['emit']('draw');}['resizeAllColumn'](o){const gm=bB;if(o===0x0)return;const p=new Map();let r=!0x0;for(const w of this['allCellHeaders'])if(w['widthFillDisable'])p['set'](w['key'],w[gm(0x3a0)]);else{const x=w[gm(0x3a0)]+o*w['colspan'];p['set'](w['key'],x),x<this['ctx']['config']['RESIZE_COLUMN_MIN_WIDTH']&&(r=!0x1);}if(!r)return;const u=y=>{y['forEach'](z=>{const gn=b;p['has'](z['key'])&&(z[gn(0x3a0)]=p['get'](z['key'])),z['children']&&z['children']['length']>0x0&&u(z['children']);});};u(this[gm(0x46d)]),this[gm(0x27c)](!0x0),this['ctx']['emit']('draw');}['getCustomHeader'](){const go=bB,o=this['ctx']['database']['getColumns'](),p=this[go(0x3df)]['database']['getCustomHeader'](),{sortData:r={}}=p;return Object['keys'](r)['length']===0x0?{'columns':o,'customHeader':p}:{'columns':Ci(o,zi(o)),'customHeader':p};}['render'](p,r){const gp=bB,u=p[gp(0x13f)];let w=r;const {HEADER_HEIGHT:x=0x0}=this['ctx']['config'];for(let y=0x0;y<u;y++){const z=p[y],C=x*(z['rowspan']||0x0),D=x*(z['level']||0x0);let {minWidth:E,maxWidth:F}=z,G=z['width']||0x64;E&&G<E&&(G=E),F&&G>F&&(G=F),z['children']&&(G=ui(z['children'])['reduce']((K,L)=>K+(L?.['width']||0x64),0x0));const J=new at(this['ctx'],this['columnIndex'],w,D,G,C,z);this['ctx']['database']['setHeader'](z[gp(0x407)],J),this['allCellHeaders']['push'](J),z['children']||(this['leafCellHeaders']['push'](J),J[gp(0x260)]['widthFillDisable']||this[gp(0x383)]++),z['fixed']==='left'?this['fixedLeftCellHeaders']['push'](J):z['fixed']==='right'?this['fixedRightCellHeaders'][gp(0x420)](J):this['centerCellHeaders']['push'](J),!z['children']&&this['columnIndex']++,z['children']&&this['render'](z['children'],w),w+=G;}}[bB(0x417)](){const gq=bB;if(this['isResizing']&&this['resizeTarget']){const {stageHeight:p,config:{RESIZE_COLUMN_LINE_COLOR:r,RESIZE_COLUMN_TEXT_COLOR:u,RESIZE_COLUMN_TEXT_BG_COLOR:w,ENABLE_RESIZE_COLUMN_TEXT:x}}=this['ctx'],y=this['resizeTarget']['getDrawX'](),z=this['resizeTarget']['width'],C=y+z+this['resizeDiff']-0.5,D=[C-0.5,0x0,C-0.5,p];if(this['ctx']['paint']['drawLine'](D,{'borderColor':r}),x){const E=Math['floor'](z+this[gq(0x1b5)])+'px',F=0x2d,G=0x18;this['ctx']['paint']['drawRect'](C+F/0x2,this['ctx']['mouseY']-G/0x2,F,G,{'fillColor':w,'borderWidth':0x0,'borderColor':gq(0x223)}),this['ctx']['paint']['drawText'](E,C+F/0x2,this['ctx']['mouseY']-G/0x2,F,G+0x2,{'padding':0x0,'color':u,'align':'center','verticalAlign':'middle'});}}}[bB(0x18e)](){const gr=bB;if(this[gr(0x374)]&&this['ctx']['dragHeaderIng']){const {DRAG_TIP_BG_COLOR:p,DRAG_TIP_LINE_COLOR:r}=this[gr(0x3df)]['config'],u=this[gr(0x374)]['width'];if(this['ctx'][gr(0x327)]['drawRect'](this[gr(0x3df)]['mouseX']-this['dragCellDiff'],this['visibleHeight'],u,this['ctx']['body'][gr(0x26c)],{'fillColor':p,'borderWidth':0x0,'borderColor':'transparent'}),this['dragingCell']){const {drawX:w,drawY:x,visibleWidth:y,colIndex:z}=this['dragingCell'];let C=w,D=x;z>this['dragTarget']['colIndex']&&(C=w+y),z===0x0&&(C=C+0x1),z===this['ctx']['maxColIndex']&&(C=C-0x1);const E=[C,D,C,this[gr(0x3df)]['stageHeight']],F=[C-0x4,D,C+0x4,D,C,D+0x6,C-0x4,D];this['ctx']['paint']['drawLine'](F,{'borderColor':r,'borderWidth':1.2,'fillColor':r}),this['ctx']['paint']['drawLine'](E,{'borderColor':r,'borderWidth':1.2});}}}['drawFixedShadow'](){const gu=bB,{fixedLeftWidth:o,fixedRightWidth:p,scrollX:r,header:u,stageWidth:w,config:{HEADER_BG_COLOR:x,SCROLLER_TRACK_SIZE:y}}=this['ctx'];if(r>0x0&&o!==0x0&&this['ctx']['paint'][gu(0x2cc)](this['x'],this['y'],o,this['height'],{'fillColor':x,'side':'right','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':'rgba(0,0,0,0)'}),r<Math['floor'](u['width']-w-0x1)&&p!==y){const z=u[gu(0x3a0)]-(this['x']+this['width'])+w-p;this[gu(0x3df)]['paint']['drawShadow'](z,this['y'],p,this[gu(0x3ef)],{'fillColor':x,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['update'](){const gv=bB,o=[],p=[],r=[];if(this['centerCellHeaders']['length']){const u=this['centerCellHeaders'][this['centerCellHeaders'][gv(0x13f)]-0x1];this[gv(0x3df)]['lastCenterColIndex']=u['colIndex'];}this['centerCellHeaders']['forEach'](w=>{const gw=gv;w[gw(0x238)]()&&w['isVerticalVisible']()&&(p['push'](w),w[gw(0x43e)]||o['push'](w));}),this['fixedLeftCellHeaders']['forEach'](w=>{r['push'](w),w['hasChildren']||o['push'](w);}),this['fixedRightCellHeaders']['forEach'](w=>{const gx=gv;r['push'](w),w['hasChildren']||o[gx(0x420)](w);}),this['renderCenterCellHeaders']=p,this['renderFixedCellHeaders']=r,this[gv(0x44c)]=o[gv(0x156)]((w,x)=>w['x']-x['x']),this['visibleLeafColumns']=this['renderLeafCellHeaders']['map'](w=>w['column']),this['ctx'][gv(0x3c0)][gv(0x409)]=this[gv(0x409)],this['ctx']['header'][gv(0x23d)]=this['leafCellHeaders'],this['ctx'][gv(0x3c0)]['renderLeafCellHeaders']=this['renderLeafCellHeaders'],this['ctx']['header']['renderCellHeaders']=this['renderFixedCellHeaders']['concat'](this['renderCenterCellHeaders']);}['drawBottomLine'](){const {stageWidth:o,config:{BORDER_COLOR:p}}=this['ctx'],r=[0x0,this['height'],o,this['height']];this['ctx']['paint']['drawLine'](r,{'borderColor':p,'borderWidth':0x1});}['draw'](){const gy=bB;this['renderCenterCellHeaders']['forEach'](o=>{o['update'](),o['draw']();}),this['drawFixedShadow'](),this['renderFixedCellHeaders']['forEach'](o=>{o['update'](),o['draw']();}),this[gy(0x470)](),this['drawTipLine'](),this['drawDragTip']();}}class El{constructor(o,p,r=0x0,u=0x0,w=0x0,x=0x0,y,z=bB(0x380)){const gz=bB;m(this,gz(0x3df)),m(this,'x',0x0),m(this,'y',0x0),m(this,gz(0x3a0),0x0),m(this,'height'),m(this,'cells',[]),m(this,gz(0x128),[]),m(this,'noFixedCells',[]),m(this,'calculatedHeightCells',[]),m(this,'rowIndex',0x0),m(this,gz(0x459),''),m(this,'rowType','body'),m(this,'data'),m(this,'calculatedHeight',-0x1),this['ctx']=o,this['x']=r,this['y']=u,this['width']=w,this[gz(0x3ef)]=x,this[gz(0x466)]=p,this[gz(0x459)]=o['database']['getRowKeyForRowIndex'](p)||'',this['rowType']=z,this['data']=y,this[gz(0x1d1)]();}[bB(0x1d1)](){const gB=bB,{header:o}=this['ctx'],p=[],r=[],u=[],w=[];o['renderLeafCellHeaders']['forEach'](x=>{const gA=b,y=new Vt(this['ctx'],this['rowIndex'],x['colIndex'],x['x'],this['y'],x['width'],this[gA(0x3ef)],x['column'],this[gA(0x3ed)],this[gA(0x377)]);y['fixed']?r['push'](y):u['push'](y),p['push'](y),y['autoRowHeight']&&w['push'](y);}),this['cells']=p,this['calculatedHeightCells']=w,this['fixedCells']=r,this[gB(0x36e)]=u;}['updateCalculatedHeight'](){const o=this['calculatedHeightCells']['map'](p=>{const gC=b,r=p[gC(0x3f6)](),{key:u,height:w=-0x1}=this['ctx'][gC(0x391)]['getMaxRowHeightItem'](this['rowKey'])||{};return r>w?this['ctx'][gC(0x391)]['setMaxRowHeightItem'](this['rowKey'],p[gC(0x407)],r):p['key']===u&&r<w&&this['ctx'][gC(0x391)]['setMaxRowHeightItem'](this['rowKey'],p['key'],r),r;});return this['calculatedHeight']=o['length']?Math['max'](...o):-0x1,this['calculatedHeight'];}[bB(0x3a4)](){this['noFixedCells']['forEach'](o=>{o['draw']();});}['drawFixed'](){this['fixedCells']['forEach'](o=>{o['draw']();});}[bB(0x294)](){const gD=bB;this['noFixedCells'][gD(0x446)](o=>{o['drawContainer']();});}['drawFixedContainer'](){this['fixedCells']['forEach'](o=>{o['drawContainer']();});}}class Hs{constructor(o){const gE=bB;m(this,'resizeTarget',null),m(this,'isMouseDown',!0x1),m(this,'resizeDiff',0x0),m(this,gE(0x24b),0x0),m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,gE(0x348),0x0),m(this,'tailIndex',0x0),m(this,'isResizing',!0x1),m(this,'renderRows',[]),m(this,'visibleRows',[]),m(this,'visibleHeight',0x0),m(this,'visibleWidth',0x0),m(this,'containerRect'),m(this,'data',[]),this[gE(0x3df)]=o,this['init'](),this['initResizeRow']();}['init'](){const gF=bB,{canvasElement:r,header:z,footer:C,database:D,config:{FOOTER_FIXED:E,SCROLLER_TRACK_SIZE:F=0x0,HEIGHT:K,EMPTY_BODY_HEIGHT:N=0x0,MAX_HEIGHT:O=0x0,ENABLE_OFFSET_HEIGHT:R=0x0,OFFSET_HEIGHT:a0=0x0,FOOTER_POSITION:a1}}=this['ctx'];if(!z['width'])return;this['x']=0x0,a1==='top'&&E?this['y']=z['height']+C['height']:this['y']=z['height'];const {data:a2,sumHeight:a3}=D[gF(0x320)]();this['height']=a3,this['data']=a2,this['width']=z[gF(0x3a0)],this[gF(0x3ca)]=this['ctx']['stageWidth']-F;const a4=this[gF(0x3df)]['footer']['height'];this['ctx']['isEmpty']=!this['data']['length'],!this['data']['length']&&!K?this['height']=N:!this['data']['length']&&K&&(this[gF(0x3ef)]=K-z['height']-a4-F);let a5=this['height']+z['height']+F;a5+=a4;let a6=a5;const a7=window['innerHeight'],{top:a8}=this[gF(0x472)]||this[gF(0x3df)]['containerElement']['getBoundingClientRect']();if(a7>a8&&R&&!K){const ai=a7-a8-a0;ai>z['height']+F?a6=ai:a5>O&&(a6=O);}else this['data'][gF(0x13f)]&&K?a6=K:this['data']['length']&&O&&a5>O&&(a6=O);a6>0x0&&(this['ctx']['stageHeight']=Math['floor'](a6),this['ctx']['stageElement']['style']['height']=this['ctx']['stageHeight']+'px');let a9=this['ctx']['stageHeight']-z['height']-F;E?this['visibleHeight']=a9-a4:this['visibleHeight']=a9,this['data']['length']||(this['height']=this['visibleHeight']),this['ctx'][gF(0x380)]['x']=this['x'],this['ctx']['body']['y']=this['y'],this['ctx']['body']['width']=this['width'],this[gF(0x3df)]['body']['height']=this['height'],this[gF(0x3df)][gF(0x380)][gF(0x3ca)]=this['visibleWidth'],this['ctx']['body']['visibleHeight']=this['visibleHeight'],this[gF(0x3df)][gF(0x380)]['data']=a2;const aa=window['devicePixelRatio']||0x1,ab=this['ctx']['stageWidth']*aa,ad=this['ctx'][gF(0x3f2)]*aa;r['width']=Math['round'](ab),r['height']=Math['round'](ad);const ae=this['data']['length']?'not-empty':'empty';this['ctx']['emit']('emptyChange',{'isEmpty':ae,'type':ae,'headerHeight':z['height'],'bodyHeight':this[gF(0x3ef)],'footerHeight':a4,'width':this['width'],'height':this['data']['length']?0x0:N+a4});const af=Math['round'](r[gF(0x3a0)]/aa*0x2710)/0x2710,ag=Math['round'](r[gF(0x3ef)]/aa*0x2710)/0x2710;this['ctx']['canvasElement']['setAttribute'](gF(0x2d1),gF(0x239)+ag+'px;width:'+af+gF(0x349)),this['ctx']['paint']['scale'](aa);}['initResizeRow'](){const gH=bB;this['ctx']['on']('resize',()=>{const gG=b;this['ctx']['config'][gG(0x3aa)]&&(this['containerRect']=this['ctx']['containerElement']['getBoundingClientRect']());}),this['ctx']['on'](gH(0x38b),()=>{this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this['containerRect']=this['ctx']['containerElement']['getBoundingClientRect']());}),this['ctx']['on']('mouseup',()=>{const gI=gH;this['ctx'][gI(0x465)]['ENABLE_RESIZE_ROW']&&(this[gI(0x1e9)]=!0x1,this['resizeDiff']!==0x0&&this['resizeTarget']&&this[gI(0x2e0)](this[gI(0x345)],this['resizeDiff']),this['resizeTarget']=null,this['resizeDiff']=0x0,this['isResizing']=!0x1,setTimeout(()=>{this['ctx']['rowResizing']=!0x1;},0x0),this['clientY']=0x0);}),this['ctx']['on']('mousedown',o=>{const gJ=gH;this['ctx']['config']['ENABLE_RESIZE_ROW']&&this['ctx']['isTarget'](o)&&(this['clientY']=o['clientY'],this['resizeTarget']?(this['isResizing']=!0x0,this[gJ(0x3df)][gJ(0x339)]=!0x0):(this['isResizing']=!0x1,this[gJ(0x3df)]['rowResizing']=!0x1),this['isMouseDown']=!0x0);}),this['ctx']['on']('mousemove',p=>{const gK=gH;if(!this['ctx']['config']['ENABLE_RESIZE_ROW']||this['ctx']['editing'])return;const {offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u,y=p['clientY'],{stageHeight:z,scrollY:C,config:{RESIZE_ROW_MIN_HEIGHT:D=0x0}}=this['ctx'];if(this['isResizing']&&this['resizeTarget']){const E=this[gK(0x345)]['height'];let F=y-this['clientY'];const {calculatedHeight:G}=this['resizeTarget'],J=G===-0x1?D:G;F+E<J&&(F=-(E-J)),this['resizeDiff']=F,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this[gK(0x1e9)])return;if(x<0x0||x>this['ctx']['body']['visibleWidth']||w<0x0||w>this['ctx'][gK(0x3c0)]['visibleHeight']+this['ctx']['body']['visibleHeight']){this[gK(0x3df)]['stageElement']['style'][gK(0x394)]==='row-resize'&&(this['ctx'][gK(0x33d)]['style']['cursor']='default');return;}if(this['ctx']['stageElement'][gK(0x2d1)][gK(0x394)]==='crosshair')return;this['ctx']['stageElement']['style']['cursor']==='row-resize'&&(this['ctx']['stageElement']['style']['cursor']='default');for(let K=0x0;K<this['renderRows'][gK(0x13f)];K++){const L=this['renderRows'][K];if(w>L['y']-C+L['height']-1.5&&w<L['y']-C+L['height']+1.5&&w<z-0x4)for(let N=0x0;N<L['cells']['length'];N++){const O=L['cells'][N];x>O['drawX']+0xa&&x<O['drawX']+O['width']-0xa&&O['rowspan']===0x1&&(this['ctx'][gK(0x33d)]['style']['cursor']='row-resize',this['resizeTarget']=L);}}}});}['resizeRow'](o,p){const gL=bB,{rowIndex:r,height:u,rowKey:w,data:x}=o;this['ctx']['database']['setRowHeight'](r,u+p),this['init'](),this['ctx'][gL(0x376)]('draw'),this['ctx']['emit'](gL(0x144),{'rowIndex':r,'oldHeight':u,'height':u+p,'rowKey':w,'row':x,'data':this['data']});}[bB(0x417)](){const gM=bB;if(this['isResizing']&&this['resizeTarget']){const {stageWidth:o,scrollY:p,config:{RESIZE_ROW_LINE_COLOR:r}}=this[gM(0x3df)],u=this[gM(0x345)]['y']-p,w=this['resizeTarget']['height'],x=u+w+this['resizeDiff']-0.5,y=[0x0,x-0.5,o,x-0.5];this['ctx']['paint']['drawLine'](y,{'borderColor':r,'borderWidth':0x1});}}['drawFixedShadow'](){const gN=bB,{fixedLeftWidth:o,fixedRightWidth:p,scrollX:r,header:u,stageWidth:w,config:{HEADER_BG_COLOR:x,SCROLLER_TRACK_SIZE:y}}=this['ctx'];if(r>0x0&&o!==0x0&&!this['ctx'][gN(0x15a)]&&this['ctx']['paint']['drawShadow'](this['x'],this['y'],o,this[gN(0x3ef)],{'fillColor':x,'side':'right','shadowWidth':0x4,'colorStart':gN(0x142),'colorEnd':'rgba(0,0,0,0)'}),r<Math['floor'](u['width']-w-0x1)&&p!==y&&!this[gN(0x3df)]['isEmpty']){const z=u['width']-(this['x']+this['width'])+w-p;this['ctx']['paint']['drawShadow'](z,this['y'],p,this['height'],{'fillColor':x,'side':gN(0x26d),'shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}[bB(0x261)](o,p){const gO=bB;let r=0x0,u=o['length']-0x1,w=-0x1;for(;r<=u;){let x=Math['floor']((r+u)/0x2),y=o[x][gO(0x272)];if(y===p)return x;y<p?r=x+0x1:(w=x,u=x-0x1);}return w;}['update'](){const gP=bB;this[gP(0x27c)]();const {header:p,database:r,scrollY:u,config:{CELL_HEIGHT:w}}=this['ctx'],x=u,{data:z,positions:C}=r['getData']();this['ctx']['maxRowIndex']=z['length']-0x1;let D=this['binarySearch'](C,x),E=this['binarySearch'](C,x+this[gP(0x26c)]);if(E===-0x1&&(E=this['ctx']['maxRowIndex']),D===-0x1&&E===this['ctx']['maxRowIndex']){const G=Math['floor'](this['visibleHeight']/w);D=this['ctx'][gP(0x369)]-G;}this['headIndex']=Math['max'](0x0,D),this['tailIndex']=Math['min'](this['ctx']['maxRowIndex'],E+0x1),this[gP(0x3f1)]=z['slice'](this['headIndex'],this['tailIndex']+0x1),this['ctx'][gP(0x380)]['headIndex']=this['headIndex'],this['ctx']['body']['tailIndex']=this[gP(0x300)],this[gP(0x3df)]['body']['visibleRows']=this['visibleRows'];const F=[];for(let J=0x0;J<this['visibleRows']['length'];J++){const K=this['headIndex']+J,L=this[gP(0x3f1)][J],{height:N,top:O}=this['ctx'][gP(0x391)]['getPositionForRowIndex'](K),R=new El(this['ctx'],K,0x0,O+this['y'],p['width'],N,L);F['push'](R);}this['renderRows']=F,this[gP(0x3df)]['body']['renderRows']=F;}['updateAutoHeight'](){const gQ=bB,o=this[gQ(0x3df)]['body']['renderRows'];if(!o['some'](r=>r[gQ(0x16e)]['length']>0x0))return!0x1;o['forEach'](r=>{r['updateCalculatedHeight']();});const p=o['map'](r=>({'height':r['calculatedHeight'],'rowIndex':r['rowIndex']}));return this['ctx']['database']['setBatchCalculatedRowHeight'](p);}['draw'](){const gR=bB;this['renderRows'][gR(0x446)](o=>{o['drawContainer']();}),this['renderRows']['forEach'](o=>{const gS=gR;o[gS(0x3a4)]();}),this[gR(0x29c)](),this['renderRows']['forEach'](o=>{o['drawFixedContainer']();}),this['renderRows']['forEach'](o=>{const gT=gR;o[gT(0x30a)]();}),this['drawTipLine']();}}class fs{constructor(o){const gU=bB;m(this,'ctx'),m(this,'renderRows',[]),m(this,'data',[]),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,'visibleWidth',0x0),m(this,'visibleHeight',0x0),this['ctx']=o,this[gU(0x27c)]();}['init'](){const gV=bB;this['data']=this['ctx'][gV(0x391)]['getFooterData']();const {header:o,body:p,config:{CELL_FOOTER_HEIGHT:r,FOOTER_FIXED:u,SCROLLER_TRACK_SIZE:w,FOOTER_POSITION:x}}=this['ctx'];this['width']=o['width'],this[gV(0x3ca)]=o[gV(0x3ca)],this['height']=this['data']['reduce'](y=>y+r,0x0),this['visibleHeight']=this['height'],u?x==='top'?this['y']=this['ctx']['header'][gV(0x3ef)]:this['y']=this['ctx']['stageHeight']-this['height']-w:this['y']=p['y']+p['height'],this['ctx'][gV(0x35a)]['x']=this['x'],this[gV(0x3df)]['footer']['y']=this['y'],this['ctx']['footer']['height']=this['height'],this['ctx']['footer'][gV(0x3a0)]=this['width'],this['ctx']['footer']['visibleWidth']=this['visibleWidth'],this['ctx']['footer']['visibleHeight']=this['visibleHeight'];}['drawFixedShadow'](){const gW=bB,{fixedLeftWidth:o,fixedRightWidth:p,scrollX:r,header:u,stageWidth:w,config:{HEADER_BG_COLOR:x,SCROLLER_TRACK_SIZE:y}}=this['ctx'];let z=this['y'];if(this['ctx']['config']['FOOTER_FIXED']||(z=this['y']-this['ctx']['scrollY']),r>0x0&&o!==0x0&&this[gW(0x3df)]['paint'][gW(0x2cc)](this['x'],z,o,this['height'],{'fillColor':x,'side':gW(0x2e8),'shadowWidth':0x4,'colorStart':gW(0x142),'colorEnd':'rgba(0,0,0,0)'}),r<Math['floor'](u['width']-w-0x1)&&p!==y){const C=u['width']-(this['x']+this['width'])+w-p;this['ctx']['paint']['drawShadow'](C,z,p,this['height'],{'fillColor':x,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}[bB(0x1d1)](){const gY=bB;this['init']();const {CELL_FOOTER_HEIGHT:o}=this['ctx']['config'];let p=this['y'];const r=[];this['data']['forEach']((u,w)=>{const gX=b,x=new El(this['ctx'],w,0x0,p,this['width'],o,u,gX(0x35a));p+=o,r['push'](x);}),this['renderRows']=r,this['ctx'][gY(0x35a)]['renderRows']=this['renderRows'];}['drawTopLine'](){const {stageWidth:o,config:{BORDER_COLOR:p}}=this['ctx'],r=[0x0,this['y'],o,this['y']];this['ctx']['paint']['drawLine'](r,{'borderColor':p,'borderWidth':0x1});}[bB(0x45a)](){const gZ=bB;this['renderRows'][gZ(0x446)](o=>{o['drawContainer']();}),this['renderRows']['forEach'](o=>{o['drawCenter']();}),this['drawFixedShadow'](),this['renderRows'][gZ(0x446)](o=>{const h0=gZ;o[h0(0x45e)]();}),this['renderRows'][gZ(0x446)](o=>{const h1=gZ;o[h1(0x30a)]();}),this['drawTopLine']();}}class Qs{constructor(o){m(this,'isCut',!0x1),m(this,'isMultipleRow',!0x1),m(this,'ctx'),this['ctx']=o,this['init']();}['init'](){const h8=bB;this['ctx']['on']('setMoveFocus',o=>{this['moveFocus'](o);}),this['ctx']['on']('mousemove',xt(o=>{const h2=b;var p;(p=this['ctx'][h2(0x292)])!=null&&p['fixed']||!this['ctx']['dragHeaderIng']&&this['ctx']['selectorMove']&&this[h2(0x3df)]['startAdjustPosition'](o);},0x64)),this['ctx']['on']('cellHoverChange',o=>{const h3=b;if(!this[h3(0x3df)]['autofillMove']){if(o[h3(0x35c)]){this['selectRows'](o,!0x1);return;}this['isMultipleRow']||this['mouseenter']();}}),this['ctx']['on']('cellClick',()=>{const h4=b;this[h4(0x2d6)]();}),this['ctx']['on']('cellMousedown',(o,p)=>{const h5=b;if(!(!this['ctx']['isTarget'](p)||this['ctx']['stageElement'][h5(0x2d1)][h5(0x394)]==='pointer'||this[h5(0x3df)]['isPointer']||this['ctx']['stageElement'][h5(0x2d1)]['cursor']==='crosshair')){if(o[h5(0x35c)]){this['isMultipleRow']=!0x0,this['selectRows'](o);return;}window['getComputedStyle'](p['target'])['userSelect']!=='text'&&p['preventDefault'](),this['isMultipleRow']=!0x1,this[h5(0x44d)](p['shiftKey']),this[h5(0x3df)][h5(0x376)]('selectorClick',o);}}),this['ctx']['on']('mouseup',()=>{const h6=b;this['ctx'][h6(0x114)]=!0x1,this['ctx']['stopAdjustPosition'](),setTimeout(()=>{const h7=h6;this['ctx'][h7(0x15b)]=!0x1;},0x0);}),this['ctx']['on'](h8(0x25f),o=>{const h9=h8;this[h9(0x3df)]['mousedown']&&this['selectCols'](o);}),this['ctx']['on']('cellHoverChange',o=>{const ha=h8;this[ha(0x3df)]['mousedown']&&this['selectCols'](o);}),this['ctx']['on']('cellHeaderMousedown',(o,p)=>{const hb=h8;this['ctx']['stageElement'][hb(0x2d1)][hb(0x394)]==='pointer'||this['ctx'][hb(0x20f)]||(window['getComputedStyle'](p['target'])['userSelect']!=='text'&&p['preventDefault'](),this[hb(0x3df)]['clearSelector'](),o['operation']?this[hb(0x34e)]():this[hb(0x43b)](o));}),this['ctx']['on']('keydown',o=>{const hd=h8;if(!this['ctx']['editing']&&!this['ctx']['finding']){if(o['ctrlKey']&&o['code']==='KeyV'||o['metaKey']&&o['code']==='KeyV'){this['paste']();return;}if(o['ctrlKey']&&o['code']==='KeyC'||o['metaKey']&&o['code']==='KeyC'){this[hd(0x3bf)](),this['isCut']=!0x1;return;}if(o['ctrlKey']&&o[hd(0x415)]==='KeyX'||o['metaKey']&&o[hd(0x415)]==='KeyX'){this[hd(0x21a)]=!0x0,this['copy']();return;}if((o['ctrlKey']&&o['code']==='KeyA'||o['metaKey']&&o[hd(0x415)]===hd(0x286))&&(o['preventDefault'](),this['selectAll']()),o[hd(0x415)]==='ArrowLeft'||o['shiftKey']&&o['code']==='Tab'){o['preventDefault'](),this['moveFocus']('LEFT');return;}if(o['code']==='ArrowUp'){o[hd(0x19a)](),this['moveFocus']('TOP');return;}if(o['code']==='ArrowRight'||o['code']===hd(0x237)){o[hd(0x19a)](),this['moveFocus']('RIGHT');return;}if(o['code']==='ArrowDown'){o['preventDefault'](),this['moveFocus']('BOTTOM');return;}if(o['code']==='Delete'||o['code']==='Backspace'){o[hd(0x19a)]();const {xArr:p,yArr:r}=this['ctx']['selector'];this[hd(0x189)](p,r);return;}}}),this['ctx']['on'](h8(0x38e),()=>{const {xArr:o,yArr:p}=this['ctx']['selector'];this['clearSelectedData'](o,p);}),this['ctx']['on']('contextMenuCopy',()=>{this['copy']();}),this['ctx']['on']('contextMenuPaste',()=>{const he=h8;this[he(0x1a3)]();}),this[h8(0x3df)]['on']('contextMenuCut',()=>{const hf=h8;this[hf(0x21a)]=!0x0,this['copy']();}),this['ctx']['on']('setSelectorCell',o=>{const hg=h8;this['ctx'][hg(0x350)](o),this['click'](),this['adjustBoundaryPosition']();}),this['ctx']['on']('selectCols',o=>{this['selectCols'](o);});}['setSelector'](r,w){const hj=bB;if(this['ctx']['dragHeaderIng'])return;const {ENABLE_SELECTOR_SPAN_COL:x,ENABLE_SELECTOR_SPAN_ROW:z}=this['ctx']['config'];let C=r,D=w;if(!z){const [E]=D;D=[E,E];}if(!x){const [F]=C;C=[F,F];}if(JSON[hj(0x252)](this['ctx']['selector']['xArr'])!==JSON['stringify'](C)||JSON[hj(0x252)](this['ctx']['selector']['yArr'])!==JSON['stringify'](D)){this['ctx']['mousedown']&&(this['ctx']['selectorMove']=!0x0,this['ctx']['disableHoverIconClick']=!0x0),this['ctx']['selector']['enable']=!0x0;const {SELECTOR_AREA_MIN_X:G,SELECTOR_AREA_MAX_X:J,SELECTOR_AREA_MIN_Y:K,SELECTOR_AREA_MAX_Y:N,SELECTOR_AREA_MAX_X_OFFSET:O,SELECTOR_AREA_MAX_Y_OFFSET:R}=this['ctx']['config'],V=G,a0=J||this['ctx']['maxColIndex']-O,a1=K,a2=N||this[hj(0x3df)]['maxRowIndex']-R;let [a3,a4]=C,[a5,a6]=D;if(a3<V||a4>a0||a5<a1||a6>a2)return;if(this['ctx'][hj(0x465)]['ENABLE_MERGE_CELL_LINK']){const a8=this['adjustMergeCells'](C,D);a5=a8['yArr'][0x0],a6=a8['yArr'][0x1],a3=a8['xArr'][0x0],a4=a8['xArr'][0x1],this[hj(0x3df)]['onlyMergeCell']=a8['onlyMergeCell'];}a3===a4&&a5===a6?this['ctx']['selectOnlyOne']=!0x0:this['ctx']['selectOnlyOne']=!0x1,C=[Math['max'](V,a3),Math['min'](a0,a4)],D=[Math[hj(0x181)](a1,a5),Math['min'](a2,a6)];const {BEFORE_SET_SELECTOR_METHOD:a7}=this['ctx']['config'];if(typeof a7=='function'){const a9=a7({'focusCell':this['ctx']['focusCell'],'xArr':C,'yArr':D});if(!a9)return;C=a9['xArr'],D=a9['yArr'];}this[hj(0x3df)]['selector']['xArr']=C,this['ctx']['selector']['yArr']=D,a6===this['ctx']['maxRowIndex']&&a5===0x0?this['ctx'][hj(0x13d)]=!0x0:this['ctx']['selectColsIng']=!0x1,a4===this['ctx']['maxColIndex']&&a3===0x0?this['ctx'][hj(0x2b8)]=!0x0:this['ctx']['selectRowsIng']=!0x1,this['ctx']['emit']('setSelector',this['ctx'][hj(0x230)]),this['ctx'][hj(0x376)]('drawView');}}[bB(0x3c3)](r,u){const hm=bB;var w;const [x,z]=u,[C,D]=r;if(z===this['ctx']['maxRowIndex']&&x===0x0||D===this['ctx']['maxColIndex']&&C===0x0)return{'xArr':r,'yArr':u,'onlyMergeCell':!0x1};let E=[],F=[];for(let O=0x0;O<=u[0x1]-u[0x0];O++)for(let R=0x0;R<=r[0x1]-r[0x0];R++){const T=O+u[0x0],V=R+r[0x0],a0=this['ctx']['database']['getVirtualBodyCell'](T,V);a0&&((T===x||T===z)&&E['push'](a0),(V===C||V===D)&&F['push'](a0));}const G=E['reduce']((a1,a2)=>{const hk=b,{yArr:a3}=a2['getSpanInfo'](),[a4,a5]=a3;return a1['minY']=Math['min'](a1[hk(0x3e5)],a4),a1[hk(0x241)]=Math[hk(0x181)](a1['maxY'],a5),a1;},{'minY':x,'maxY':z}),J=F[hm(0x157)]((a1,a2)=>{const {xArr:a3}=a2['getSpanInfo'](),[a4,a5]=a3;return a1['minX']=Math['min'](a1['minX'],a4),a1['maxX']=Math['max'](a1['maxX'],a5),a1;},{'minX':C,'maxX':D}),K=[J['minX'],J['maxX']],L=[G['minY'],G[hm(0x241)]];let N=!0x1;if(J['minX']!==J['maxX']||G[hm(0x3e5)]!==G['maxY']){const a1=JSON['stringify'](K)+JSON['stringify'](L),a2=(w=this['ctx']['focusCell'])==null?void 0x0:w[hm(0x1ed)]();N=(a2&&JSON['stringify'](a2[hm(0x1fe)])+JSON[hm(0x252)](a2['yArr']))===a1;}return{'xArr':K,'yArr':L,'onlyMergeCell':N};}['selectCols'](o){const hn=bB;if(this['ctx']['config'][hn(0x1da)]||!this['ctx']['config']['ENABLE_SELECTOR_ALL_ROWS']||this['ctx']['autofillMove']||this['ctx'][hn(0x118)]||this[hn(0x3df)]['editing'])return;const {SELECTOR_AREA_MIN_Y:p,SELECTOR_AREA_MAX_Y:r,SELECTOR_AREA_MAX_Y_OFFSET:u}=this['ctx']['config'],w=p,x=r||this['ctx']['maxRowIndex']-u;if(this['ctx']['focusCellHeader']){const {colIndex:y}=this['ctx'][hn(0x292)];if(this['ctx'][hn(0x3e3)](),this['ctx']['mousedown']&&o['colIndex']>=y){const z=[y,o['colIndex']+o['colspan']-0x1],C=[w,x];this['setSelector'](z,C);}else{const D=[o['colIndex'],y+o['colspan']-0x1],E=[w,x];this['setSelector'](D,E);}}}['selectAll'](){const ho=bB;if(this['ctx']['autofillMove']||this[ho(0x3df)]['editing'])return;const {ENABLE_SELECTOR_ALL_ROWS:p,ENABLE_SELECTOR_ALL_COLS:r}=this['ctx']['config'];if(p&&r){const {SELECTOR_AREA_MIN_X:u,SELECTOR_AREA_MAX_X:w,SELECTOR_AREA_MIN_Y:x,SELECTOR_AREA_MAX_Y:y,SELECTOR_AREA_MAX_X_OFFSET:z,SELECTOR_AREA_MAX_Y_OFFSET:C}=this['ctx'][ho(0x465)],D=u,E=w||this['ctx']['maxColIndex']-z,F=x,G=y||this[ho(0x3df)]['maxRowIndex']-C,J=[D,E],K=[F,G];this['setSelector'](J,K);}}['selectRows'](o,p=!0x0){const hp=bB;if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE']||!this[hp(0x3df)][hp(0x465)]['ENABLE_SELECTOR_ALL_COLS']||this['ctx']['autofillMove']||this['ctx']['editing'])return;const {SELECTOR_AREA_MIN_X:r,SELECTOR_AREA_MAX_X:u,SELECTOR_AREA_MAX_X_OFFSET:w}=this['ctx'][hp(0x465)],x=u||this[hp(0x3df)]['maxColIndex']-w,y=r;if(p){this[hp(0x3df)]['setFocusCell'](o);const z=[y,x],C=[o['rowIndex'],o['rowIndex']];this['setSelector'](z,C);}if(this[hp(0x3df)]['focusCell']&&this['ctx']['mousedown']){const {rowIndex:D}=this['ctx']['focusCell'];if(o['rowIndex']>=D){const E=[y,x],F=[D,o['rowIndex']];this['setSelector'](E,F);}else{const G=[y,x],J=[o['rowIndex'],D];this['setSelector'](G,J);}}}['mouseenter'](){const hq=bB;if(this['ctx']['config'][hq(0x1da)]||this['ctx']['editing'])return;const {mousedown:p,focusCell:r,hoverCell:u}=this['ctx'];if(p&&r&&u){const {rowIndex:w,colIndex:x}=r,y=Math['min'](u['colIndex'],x),z=Math['max'](u['colIndex'],x),C=Math['min'](u['rowIndex'],w),D=Math['max'](u[hq(0x466)],w),E=[y,z],F=[C,D];this['setSelector'](E,F);}}['click'](p=!0x1){const hr=bB,{focusCell:r,clickCell:u}=this['ctx'];if(r&&this['isInSettingRange'](r['rowIndex'],r[hr(0x2c5)])){if(this['ctx']['selector']['enable']=!0x0,u&&p){if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE'])return;const {colIndex:w,rowIndex:x}=u,{colIndex:y,rowIndex:z}=r,C=Math[hr(0x2bc)](y,w),D=Math['max'](y,w),E=Math['min'](z,x),F=Math['max'](z,x),G=[C,D],J=[E,F];this['setSelector'](G,J);}else{this[hr(0x3df)]['emit']('cellSelectedClick',r);const K=[r['colIndex'],r['colIndex']],L=[r['rowIndex'],r['rowIndex']];this['setSelector'](K,L);}}}['clearCopyLine'](){this['ctx']['selector']['xArrCopy']=[-0x1,-0x1],this['ctx']['selector']['yArrCopy']=[-0x1,-0x1];}['getCell'](o,p){const ht=bB,r=this['ctx']['body']['renderRows']['find'](u=>u['rowIndex']===o);return r?.['cells']['find'](u=>u[ht(0x2c5)]===p);}[bB(0x3bf)](){const hu=bB;if(!this['ctx']['config']['ENABLE_COPY']||this['ctx'][hu(0x319)])return;let {value:o,xArr:p,yArr:r}=this['ctx']['getSelectedData']();if(this['ctx'][hu(0x465)]['ENABLE_MERGE_CELL_LINK']&&this['ctx']['database']['hasMergeCell'](p,r)){if(this['ctx'][hu(0x2a7)]&&this['ctx']['focusCell']){const x=this['ctx']['focusCell'];o=[[x['getValue']()]],p=[x[hu(0x2c5)],x['colIndex']],r=[x['rowIndex'],x['rowIndex']];}else{const y={'code':'ERR_MERGED_CELLS_COPY','message':'Merged\x20cells\x20cannot\x20span\x20copy\x20data'};this['ctx']['hasEvent']('error')?this[hu(0x3df)]['emit']('error',y):alert(y[hu(0x310)]);return;}}const {BEFORE_COPY_METHOD:u}=this[hu(0x3df)]['config'];if(typeof u==hu(0x3d1)){const z=u({'focusCell':this['ctx']['focusCell'],'data':o,'xArr':p,'yArr':r});if(!z)return;o=z['data'];}const w=Ks(o);navigator['clipboard']?navigator[hu(0x2c0)]['writeText'](w)['then'](()=>{const hv=hu;this['ctx']['selector']['xArrCopy']=this['ctx']['selector'][hv(0x1fe)]['slice'](),this[hv(0x3df)]['selector'][hv(0x21b)]=this[hv(0x3df)][hv(0x230)]['yArr']['slice'](),this['ctx']['emit']('copyChange',{'xArr':this[hv(0x3df)]['selector']['xArrCopy'],'yArr':this['ctx']['selector']['yArrCopy'],'data':o}),this[hv(0x3df)]['emit']('draw');})['catch'](C=>console['error']('Copy\x20Failure:',C)):console[hu(0x28a)](hu(0x3d0));}['clearSelectedData'](p,r,u=!0x1,w=null){const hw=bB;let x=[];const y=new Set();for(let C=0x0;C<=r[0x1]-r[0x0];C++)for(let D=0x0;D<=p[0x1]-p[0x0];D++){const E=C+r[0x0],F=D+p[0x0],G=this['ctx'][hw(0x391)][hw(0x267)](E,F);if(G){const {rowKey:J,key:K}=G;this[hw(0x3df)]['database']['getReadonly'](J,K)||(y['add'](J),x[hw(0x420)]({'rowKey':J,'key':K,'value':w,'row':{}}));}}if(!x['length'])return[];if(u)return x;this['ctx'][hw(0x391)]['batchSetItemValue'](x,!0x0);let z=[];return y['forEach'](L=>{const hx=hw;z['push'](this['ctx'][hx(0x391)]['getRowDataItemForRowKey'](L));}),this['ctx']['emit']('clearSelectedDataChange',x,z),x;}[bB(0x1a3)](){const hy=bB;if(!navigator['clipboard']){console['error']('current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API');return;}const {ENABLE_PASTER:o}=this[hy(0x3df)]['config'];if(this[hy(0x3df)]['selector'][hy(0x141)]&&o){const p=this['ctx']['selector']['yArr'][0x0],r=this[hy(0x3df)]['selector']['xArr'][0x0],u=new Set();navigator['clipboard']['readText']()['then'](async z=>{const hz=hy;let C=rs(z);const D=[r,r+C[0x0]['length']-0x1],E=[p,p+C['length']-0x1],[F,K]=E,[N,O]=D,R=K-this['ctx']['maxRowIndex'],a0=O-this['ctx']['maxColIndex'];(R>0x0||a0>0x0)&&this['ctx']['emit']('onPastedDataOverflow',{'maxY':K,'maxX':O,'minY':F,'minX':N,'overflowRowCount':R,'overflowColCount':a0,'textArr':C});const a1=C['length']===0x1&&C[0x0]['length']===0x1;if(this[hz(0x3df)]['config']['ENABLE_MERGE_CELL_LINK']&&this[hz(0x3df)]['database']['hasMergeCell'](D,E)&&!a1){const a5={'code':'ERR_MERGED_CELLS_PASTE','message':hz(0x41d)};this[hz(0x3df)]['hasEvent']('error')?this['ctx']['emit']('error',a5):alert(a5['message']);return;}let a2=[];for(let a6=0x0;a6<=C['length']-0x1;a6++){const a7=C[a6]['length'];for(let a8=0x0;a8<=a7-0x1;a8++){const a9=a6+p,aa=a8+r,ab=C[a6][a8],ad=this[hz(0x3df)][hz(0x391)][hz(0x267)](a9,aa);if(ad){const {rowKey:ae,key:af}=ad;this['ctx']['database']['getReadonly'](ae,af)||(u['add'](ae),a2[hz(0x420)]({'rowKey':ae,'key':af,'value':ab,'row':{}}));}}}if(this['isCut']){const ag=this['clearSelectedData'](this['ctx']['selector'][hz(0x360)],this['ctx']['selector']['yArrCopy'],!0x0),ai=a2['map'](aj=>aj[hz(0x459)]+'-'+aj['key']);ag[hz(0x446)](aj=>{const hA=hz;ai['includes'](aj[hA(0x459)]+'-'+aj['key'])||a2['unshift'](aj);}),this['isCut']=!0x1;}if(!a2['length'])return;const {BEFORE_PASTE_DATA_METHOD:a3}=this['ctx']['config'];if(typeof a3=='function'){const aj=a3,ak=a2[hz(0x3e4)](am=>({'rowKey':am[hz(0x459)],'key':am[hz(0x407)],'value':am[hz(0x14d)],'oldValue':this['ctx']['database']['getItemValue'](am['rowKey'],am[hz(0x407)]),'row':this['ctx']['database'][hz(0x1d3)](am['rowKey'])}));if(a2=await aj(ak,D,E,C),a2&&!a2['length'])return;}this['clearCopyLine'](),this['ctx'][hz(0x2df)](a2,!0x0);let a4=[];u['forEach'](am=>{const hB=hz;a4['push'](this['ctx']['database'][hB(0x1d3)](am));}),this['ctx']['emit']('pasteChange',a2,a4),this['ctx']['emit']('draw');})['catch'](w=>{const hC=hy;console['error'](hC(0x385),w);});}}['moveFocus'](p){const hD=bB;if(this['ctx']['editing'])return;const {focusCell:r}=this['ctx'];if(!r)return;let {colIndex:u=0x0,rowIndex:w=0x0}=r;const x=0x0,y=0x0,z=this['ctx']['maxColIndex'],C=this['ctx'][hD(0x369)];switch(p){case'LEFT':u>x&&u--;break;case'TOP':w>y&&w--;break;case'RIGHT':u<z&&u++;break;case'BOTTOM':w<C&&w++;break;}const D=[u,u],E=[w,w],F=this['getCell'](w,u);F&&(F[hD(0x35c)]||this['isInSettingRange'](F['rowIndex'],F[hD(0x2c5)])&&(this['ctx'][hD(0x350)](F),this['setSelector'](D,E),this['adjustBoundaryPosition'](),this['ctx']['emit']('moveFocus',F),this['ctx'][hD(0x376)]('draw')));}[bB(0x312)](p,r){const hE=bB,{SELECTOR_AREA_MIN_X:u,SELECTOR_AREA_MAX_X:w,SELECTOR_AREA_MIN_Y:x,SELECTOR_AREA_MAX_Y:y,SELECTOR_AREA_MAX_X_OFFSET:z,SELECTOR_AREA_MAX_Y_OFFSET:C}=this['ctx']['config'],D=u,E=w||this[hE(0x3df)][hE(0x29b)]-z,F=x,G=y||this['ctx']['maxRowIndex']-C;return!(r<D||r>E||p<F||p>G);}['adjustBoundaryPosition'](){const hF=bB,{stageHeight:r,stageWidth:z,focusCell:C,fixedRightWidth:D,fixedLeftWidth:E,header:F,footer:K,body:N,scrollX:O,scrollY:R,config:{SCROLLER_TRACK_SIZE:a0,FOOTER_FIXED:a1,FOOTER_POSITION:a2,ENABLE_MERGE_CELL_LINK:a3}}=this['ctx'];if(!C)return;a3&&this['ctx']['onlyMergeCell']&&C['updateSpanInfo']();const {drawX:a4,drawY:a5,width:a6,height:a7,fixed:a8}=C,a9=E-a4+0x1,aa=C['drawX']+a6-(z-D)+0x1;let ab=F['height']-a5,ad=a7;ad>N['visibleHeight']&&(ad=N['visibleHeight']);let ae=0x0;a1&&(a2==='top'?ab=F[hF(0x3ef)]+K['height']-a5:ae=K['visibleHeight']);const af=a5+ad-(r-ae-a0);let ag=O,ai=R;aa>0x0&&!a8?ag=Math['floor'](O+aa):a9>0x0&&!a8&&(ag=Math[hF(0x1e3)](O-a9)),ab>0x0?ai=Math[hF(0x1e3)](R-ab):af>0x0&&(ai=Math['floor'](R+af)),(Math[hF(0x28c)](O-ag)>2.5||Math[hF(0x28c)](R-ai)>2.5)&&this['ctx'][hF(0x251)](ag,ai);}[bB(0x242)](){}}class vs{constructor(o){const hG=bB;m(this,'ctx'),m(this,'maxColRowCell'),this['ctx']=o,this[hG(0x27c)]();}['init'](){this['ctx']['on']('mousemove',p=>{const hH=b;if(this['ctx']['stageElement']['style']['cursor']==='crosshair'&&(this['ctx']['stageElement']['style']['cursor']=hH(0x2b9)),this['ctx']['editing']||!this[hH(0x3df)]['focusCell']||!this['maxColRowCell'])return;const {offsetX:r,offsetY:u}=this['ctx'][hH(0x1c8)](p),{colIndex:w,rowIndex:x,drawX:y,drawY:z,width:C,height:D}=this['maxColRowCell'],E=0x6,F=w===this['ctx']['maxColIndex']||x===this['ctx'][hH(0x369)]?0x0:0x2,G=y+C-E+F,J=z+D-E+F;r>G&&u>J&&r<G+E&&u<J+E&&(this['ctx'][hH(0x33d)]['style'][hH(0x394)]='crosshair'),this['ctx'][hH(0x1de)]&&this['ctx']['startAdjustPosition'](p);}),this['ctx']['on']('cellMouseenter',o=>{const hI=b,{xArr:p,yArr:r}=this['ctx']['selector'],u=p[0x1],w=r[0x1],{colIndex:x,rowIndex:y}=o;this['ctx'][hI(0x465)]['ENABLE_AUTOFILL']&&x===u&&y===w&&(this['maxColRowCell']=o),this['mouseenter'](o);}),this['ctx']['on']('mousedown',()=>{const hJ=b;this['ctx']['stageElement']['style']['cursor']===hJ(0x403)&&this['setMousedown']();}),this['ctx']['on']('mouseup',()=>{this['setMouseUp'](),this['ctx']['stopAdjustPosition']();});}[bB(0x402)](){const hK=bB,{xArr:o,yArr:p}=this['ctx']['selector'];return!(JSON['stringify'](this['ctx'][hK(0x11b)]['xArr'])===JSON['stringify'](o)&&JSON['stringify'](this['ctx']['autofill']['yArr'])===JSON['stringify'](p));}['setMousedown'](){const hL=bB;this['ctx']['autofill']['enable']=!0x0,this['ctx'][hL(0x1de)]=!0x0,this['ctx']['disableHoverIconClick']=!0x0;}['setMouseUp'](){const hM=bB;this['ctx']['autofill']['enable']&&(this['isAutofillIng']()&&this[hM(0x1be)](),this['ctx']['autofill'][hM(0x141)]=!0x1,this['ctx']['autofillMove']=!0x1,this['ctx']['autofill']['xArr']=[-0x1,-0x1],this['ctx']['autofill']['yArr']=[-0x1,-0x1],setTimeout(()=>{this['ctx']['disableHoverIconClick']=!0x1;},0x0));}['setAutofill'](r,z){const hN=bB,{ENABLE_AUTOFILL:C,ENABLE_AUTOFILL_SPAN_COL:D,ENABLE_AUTOFILL_SPAN_ROW:E}=this['ctx']['config'];if(!C)return;let F=r,G=z;const J=this['ctx']['selector']['xArr'],K=this['ctx']['selector'][hN(0x236)];if(!(!E&&JSON['stringify'](K)!==JSON['stringify'](G))&&!(!D&&JSON[hN(0x252)](J)!==JSON[hN(0x252)](F))&&(JSON['stringify'](this[hN(0x3df)]['autofill']['xArr'])!==JSON['stringify'](F)||JSON[hN(0x252)](this[hN(0x3df)]['autofill'][hN(0x236)])!==JSON['stringify'](G))){const {SELECTOR_AREA_MIN_X:N,SELECTOR_AREA_MAX_X:O,SELECTOR_AREA_MIN_Y:R,SELECTOR_AREA_MAX_Y:a0,SELECTOR_AREA_MAX_X_OFFSET:a1,SELECTOR_AREA_MAX_Y_OFFSET:a2}=this[hN(0x3df)]['config'],a3=N,a4=O||this['ctx']['maxColIndex']-a1,a5=R,a6=a0||this['ctx']['maxRowIndex']-a2;let [a7,a8]=F,[a9,aa]=G;if(a7<a3||a9<a5)return;F=[Math[hN(0x181)](a3,a7),Math['min'](a4,a8)],G=[Math['max'](a5,a9),Math['min'](a6,aa)];const {BEFORE_SET_AUTOFILL_METHOD:ab}=this[hN(0x3df)]['config'];if(typeof ab=='function'){const ad=ab({'focusCell':this['ctx']['focusCell'],'xArr':F,'yArr':G});if(!ad)return;F=ad['xArr'],G=ad['yArr'];}this['ctx']['autofill']['xArr']=F,this['ctx']['autofill']['yArr']=G,this['ctx']['emit'](hN(0x1d4),this['ctx'][hN(0x11b)]),this['ctx'][hN(0x376)]('draw');}}async['autofillData'](){const hO=bB,r=new Set(),w=this['ctx']['getSelectedData'](),x=new Map();for(let O=0x0;O<=w['yArr'][0x1]-w['yArr'][0x0];O++)for(let R=0x0;R<=w['xArr'][0x1]-w['xArr'][0x0];R++){const T=O+w['yArr'][0x0],V=R+w['xArr'][0x0];x[hO(0x357)](T+'-'+V,!0x0);}const {value:z}=w,C=z[0x0]['length'],D=z['length'],E=this['ctx'][hO(0x11b)]['xArr'],F=this['ctx'][hO(0x11b)][hO(0x236)],G=C===0x1&&D===0x1;if(this['ctx']['config'][hO(0x299)]&&this['ctx']['database']['hasMergeCell'](E,F)&&!G){const a0={'code':'ERR_MERGED_CELLS_AUTOFILL','message':'Merged\x20cells\x20cannot\x20span\x20autofill\x20data'};this['ctx']['hasEvent']('error')?this['ctx']['emit']('error',a0):alert(a0['message']);return;}let J=[];for(let a1=0x0;a1<=F[0x1]-F[0x0];a1++)for(let a2=0x0;a2<=E[0x1]-E[0x0];a2++){const a3=a2+E[0x0],a4=a1+F[0x0],a5=z[a1%D][a2%C],a6=this['ctx'][hO(0x391)][hO(0x267)](a4,a3),a7=a4+'-'+a3;if(a6&&!x['has'](a7)){const {rowKey:a8,key:a9}=a6;this[hO(0x3df)]['database']['getReadonly'](a8,a9)||(r['add'](a8),J[hO(0x420)]({'rowKey':a8,'key':a9,'value':a5,'row':{}}));}}if(!J[hO(0x13f)])return;this['ctx']['selector']['xArr']=this['ctx']['autofill']['xArr'],this['ctx']['selector']['yArr']=this[hO(0x3df)]['autofill']['yArr'];const {BEFORE_AUTOFILL_DATA_METHOD:K}=this['ctx'][hO(0x465)];if(typeof K=='function'){const aa=K,ab=J['map'](ad=>({'rowKey':ad['rowKey'],'key':ad[hO(0x407)],'value':ad['value'],'oldValue':this['ctx']['database'][hO(0x322)](ad['rowKey'],ad['key']),'row':this[hO(0x3df)]['database'][hO(0x1d3)](ad['rowKey'])}));if(J=await aa(ab,E,F),J&&!J['length'])return;}this['ctx']['batchSetItemValueByEditor'](J,!0x0);let N=[];r['forEach'](ad=>{const hP=hO;N[hP(0x420)](this['ctx']['database'][hP(0x1d3)](ad));}),this['ctx']['emit']('autofillChange',J,N),this['ctx']['emit']('draw');}['mouseenter'](o){const hQ=bB;if(['index',hQ(0x37c),'index-selection']['includes'](o['type']))return;const {selector:p,autofill:r}=this['ctx'];if(this['ctx']['mousedown']&&p['enable']&&r[hQ(0x141)]){const {rowIndex:u,colIndex:w}=o,x=p[hQ(0x1fe)]['slice'](),y=p['yArr']['slice']();u>=p['yArr'][0x0]&&u<=p['yArr'][0x1]?w>p['xArr'][0x1]?x[hQ(0x3bb)](0x1,0x1,w):w<p[hQ(0x1fe)][0x0]&&x['splice'](0x0,0x1,w):u>p['yArr'][0x1]?y['splice'](0x1,0x1,u):u<p[hQ(0x236)][0x0]&&y[hQ(0x3bb)](0x0,0x1,u),this['setAutofill'](x,y);}}['destroy'](){}}const Wi=Math['min'],oi=Math['max'],Ui=Math['round'],Ni=Math['floor'],q=o=>({'x':o,'y':o}),Bs={'left':bB(0x2e8),'right':'left','bottom':'top','top':'bottom'};function Yt(o,p,r){return oi(o,Wi(p,r));}function Li(o,p){const hR=bB;return typeof o==hR(0x3d1)?o(p):o;}function ni(o){return o['split']('-')[0x0];}function xi(o){return o['split']('-')[0x1];}function kl(o){return o==='x'?'y':'x';}function Kt(o){const hS=bB;return o==='y'?hS(0x3ef):'width';}function ei(o){const p=o[0x0];return p==='t'||p==='b'?'y':'x';}function Tt(o){return kl(ei(o));}function As(o,p,r){const hT=bB;r===void 0x0&&(r=!0x1);const u=xi(o),w=Tt(o),x=Kt(w);let y=w==='x'?u===(r?hT(0x279):'start')?'right':'left':u===hT(0x130)?hT(0x272):'top';return p['reference'][x]>p[hT(0x326)][x]&&(y=ji(y)),[y,ji(y)];}function _s(o){const p=ji(o);return[Wt(o),p,Wt(p)];}function Wt(o){const hU=bB;return o['includes']('start')?o['replace']('start','end'):o[hU(0x2c9)](hU(0x279),'start');}const hl=['left','right'],el=[bB(0x2e8),'left'],qs=['top','bottom'],$s=[bB(0x272),'top'];function ic(o,p,r){switch(o){case'top':case'bottom':return r?p?el:hl:p?hl:el;case'left':case'right':return p?qs:$s;default:return[];}}function tc(o,p,r,u){const w=xi(o);let x=ic(ni(o),r==='start',u);return w&&(x=x['map'](y=>y+'-'+w),p&&(x=x['concat'](x['map'](Wt)))),x;}function ji(o){const hV=bB,p=ni(o);return Bs[p]+o[hV(0x3f9)](p['length']);}function lc(o){return{'top':0x0,'right':0x0,'bottom':0x0,'left':0x0,...o};}function Ol(o){return typeof o!='number'?lc(o):{'top':o,'right':o,'bottom':o,'left':o};}function Ei(o){const {x:p,y:r,width:u,height:w}=o;return{'width':u,'height':w,'top':r,'left':p,'right':p+u,'bottom':r+w,'x':p,'y':r};}function dl(p,r,u){const hW=bB;let {reference:w,floating:x}=p;const y=ei(r),z=Tt(r),C=Kt(z),D=ni(r),E=y==='y',F=w['x']+w[hW(0x3a0)]/0x2-x['width']/0x2,G=w['y']+w['height']/0x2-x[hW(0x3ef)]/0x2,J=w[C]/0x2-x[C]/0x2;let K;switch(D){case'top':K={'x':F,'y':w['y']-x['height']};break;case'bottom':K={'x':F,'y':w['y']+w['height']};break;case'right':K={'x':w['x']+w[hW(0x3a0)],'y':G};break;case'left':K={'x':w['x']-x['width'],'y':G};break;default:K={'x':w['x'],'y':w['y']};}switch(xi(r)){case'start':K[z]-=J*(u&&E?-0x1:0x1);break;case'end':K[z]+=J*(u&&E?-0x1:0x1);break;}return K;}async function sc(r,w){const hX=bB;var x;w===void 0x0&&(w={});const {x:z,y:C,platform:D,rects:E,elements:F,strategy:G}=r,{boundary:J='clippingAncestors',rootBoundary:K='viewport',elementContext:L=hX(0x326),altBoundary:N=!0x1,padding:O=0x0}=Li(w,r),R=Ol(O),T=F[N?L==='floating'?'reference':'floating':L],V=Ei(await D['getClippingRect']({'element':(x=await(D['isElement']==null?void 0x0:D['isElement'](T)))==null||x?T:T['contextElement']||await(D['getDocumentElement']==null?void 0x0:D[hX(0x47f)](F[hX(0x326)])),'boundary':J,'rootBoundary':K,'strategy':G})),a0=L==='floating'?{'x':z,'y':C,'width':E[hX(0x326)]['width'],'height':E[hX(0x326)]['height']}:E['reference'],a1=await(D['getOffsetParent']==null?void 0x0:D['getOffsetParent'](F['floating'])),a2=await(D['isElement']==null?void 0x0:D['isElement'](a1))?await(D['getScale']==null?void 0x0:D[hX(0x1af)](a1))||{'x':0x1,'y':0x1}:{'x':0x1,'y':0x1},a3=Ei(D['convertOffsetParentRelativeRectToViewportRelativeRect']?await D['convertOffsetParentRelativeRectToViewportRelativeRect']({'elements':F,'rect':a0,'offsetParent':a1,'strategy':G}):a0);return{'top':(V['top']-a3['top']+R[hX(0x22c)])/a2['y'],'bottom':(a3['bottom']-V['bottom']+R['bottom'])/a2['y'],'left':(V['left']-a3['left']+R['left'])/a2['x'],'right':(a3['right']-V['right']+R['right'])/a2['x']};}const cc=0x32,hc=async(r,w,x)=>{const hY=bB,{placement:z=hY(0x272),strategy:C='absolute',middleware:D=[],platform:E}=x,F=E[hY(0x2db)]?E:{...E,'detectOverflow':sc},G=await(E['isRTL']==null?void 0x0:E['isRTL'](w));let J=await E['getElementRects']({'reference':r,'floating':w,'strategy':C}),{x:K,y:N}=dl(J,z,G),O=z,R=0x0;const V={};for(let a0=0x0;a0<D['length'];a0++){const a1=D[a0];if(!a1)continue;const {name:a2,fn:a3}=a1,{x:a4,y:a5,data:a6,reset:a7}=await a3({'x':K,'y':N,'initialPlacement':z,'placement':O,'strategy':C,'middlewareData':V,'rects':J,'platform':F,'elements':{'reference':r,'floating':w}});K=a4??K,N=a5??N,V[a2]={...V[a2],...a6},a7&&R<cc&&(R++,typeof a7=='object'&&(a7['placement']&&(O=a7[hY(0x2f4)]),a7[hY(0x288)]&&(J=a7['rects']===!0x0?await E[hY(0x137)]({'reference':r,'floating':w,'strategy':C}):a7['rects']),{x:K,y:N}=dl(J,O,G)),a0=-0x1);}return{'x':K,'y':N,'placement':O,'strategy':C,'middlewareData':V};},ec=o=>({'name':'arrow','options':o,async 'fn'(r){const hZ=bB,{x:C,y:D,placement:F,rects:K,platform:O,elements:a0,middlewareData:a1}=r,{element:a2,padding:a3=0x0}=Li(o,r)||{};if(a2==null)return{};const a4=Ol(a3),a5={'x':C,'y':D},a6=Tt(F),a7=Kt(a6),a8=await O['getDimensions'](a2),a9=a6==='y',aa=a9?'top':'left',ab=a9?'bottom':'right',ad=a9?'clientHeight':'clientWidth',ae=K[hZ(0x1a6)][a7]+K[hZ(0x1a6)][a6]-a5[a6]-K[hZ(0x326)][a7],af=a5[a6]-K['reference'][a6],ag=await(O['getOffsetParent']==null?void 0x0:O['getOffsetParent'](a2));let ai=ag?ag[ad]:0x0;(!ai||!await(O['isElement']==null?void 0x0:O['isElement'](ag)))&&(ai=a0[hZ(0x326)][ad]||K['floating'][a7]);const aj=ae/0x2-af/0x2,ak=ai/0x2-a8[a7]/0x2-0x1,am=Wi(a4[aa],ak),an=Wi(a4[ab],ak),ao=am,ap=ai-a8[a7]-an,aq=ai/0x2-a8[a7]/0x2+aj,ar=Yt(ao,aq,ap),au=!a1['arrow']&&xi(F)!=null&&aq!==ar&&K[hZ(0x1a6)][a7]/0x2-(aq<ao?am:an)-a8[a7]/0x2<0x0,av=au?aq<ao?aq-ao:aq-ap:0x0;return{[a6]:a5[a6]+av,'data':{[a6]:ar,'centerOffset':aq-ar-av,...au&&{'alignmentOffset':av}},'reset':au};}}),dc=function(o){return o===void 0x0&&(o={}),{'name':'flip','options':o,async 'fn'(r){const i0=b;var C,D;const {placement:F,middlewareData:K,rects:O,initialPlacement:a0,platform:a1,elements:a2}=r,{mainAxis:a3=!0x0,crossAxis:a4=!0x0,fallbackPlacements:a5,fallbackStrategy:a6='bestFit',fallbackAxisSideDirection:a7='none',flipAlignment:a8=!0x0,...a9}=Li(o,r);if((C=K['arrow'])!=null&&C[i0(0x323)])return{};const aa=ni(F),ab=ei(a0),ad=ni(a0)===a0,ae=await(a1[i0(0x282)]==null?void 0x0:a1['isRTL'](a2['floating'])),af=a5||(ad||!a8?[ji(a0)]:_s(a0)),ag=a7!=='none';!a5&&ag&&af['push'](...tc(a0,a8,a7,ae));const ai=[a0,...af],aj=await a1['detectOverflow'](r,a9),ak=[];let am=((D=K['flip'])==null?void 0x0:D['overflows'])||[];if(a3&&ak['push'](aj[aa]),a4){const aq=As(F,O,ae);ak[i0(0x420)](aj[aq[0x0]],aj[aq[0x1]]);}if(am=[...am,{'placement':F,'overflows':ak}],!ak['every'](ar=>ar<=0x0)){var an,ao;const ar=(((an=K['flip'])==null?void 0x0:an['index'])||0x0)+0x1,au=ai[ar];if(au&&(!(a4==='alignment'&&ab!==ei(au))||am['every'](aw=>ei(aw['placement'])===ab?aw['overflows'][0x0]>0x0:!0x0)))return{'data':{'index':ar,'overflows':am},'reset':{'placement':au}};let av=(ao=am['filter'](aw=>aw[i0(0x225)][0x0]<=0x0)['sort']((aw,ax)=>aw['overflows'][0x1]-ax['overflows'][0x1])[0x0])==null?void 0x0:ao[i0(0x2f4)];if(!av)switch(a6){case'bestFit':{var ap;const aw=(ap=am['filter'](ax=>{if(ag){const ay=ei(ax['placement']);return ay===ab||ay==='y';}return!0x0;})['map'](ax=>[ax[i0(0x2f4)],ax['overflows'][i0(0x176)](ay=>ay>0x0)['reduce']((ay,az)=>ay+az,0x0)])[i0(0x156)]((ax,ay)=>ax[0x1]-ay[0x1])[0x0])==null?void 0x0:ap[0x0];aw&&(av=aw);break;}case'initialPlacement':av=a0;break;}if(F!==av)return{'reset':{'placement':av}};}return{};}};},mc=new Set(['left','top']);async function Zc(p,r){const i1=bB,{placement:u,platform:w,elements:x}=p,y=await(w['isRTL']==null?void 0x0:w['isRTL'](x[i1(0x326)])),z=ni(u),C=xi(u),D=ei(u)==='y',E=mc['has'](z)?-0x1:0x1,F=y&&D?-0x1:0x1,G=Li(r,p);let {mainAxis:J,crossAxis:K,alignmentAxis:L}=typeof G=='number'?{'mainAxis':G,'crossAxis':0x0,'alignmentAxis':null}:{'mainAxis':G[i1(0x3e8)]||0x0,'crossAxis':G[i1(0x11c)]||0x0,'alignmentAxis':G[i1(0x1ef)]};return C&&typeof L=='number'&&(K=C===i1(0x279)?L*-0x1:L),D?{'x':K*F,'y':J*E}:{'x':J*E,'y':K*F};}const Ic=function(o){return o===void 0x0&&(o=0x0),{'name':'offset','options':o,async 'fn'(p){const i2=b;var r,u;const {x:w,y:x,placement:y,middlewareData:z}=p,C=await Zc(p,o);return y===((r=z['offset'])==null?void 0x0:r[i2(0x2f4)])&&(u=z[i2(0x33c)])!=null&&u['alignmentOffset']?{}:{'x':w+C['x'],'y':x+C['y'],'data':{...C,'placement':y}};}};},oc=function(o){return o===void 0x0&&(o={}),{'name':'shift','options':o,async 'fn'(r){const i3=b,{x:w,y:x,placement:z,platform:C}=r,{mainAxis:D=!0x0,crossAxis:E=!0x1,limiter:F={'fn':V=>{let {x:a0,y:a1}=V;return{'x':a0,'y':a1};}},...G}=Li(o,r),J={'x':w,'y':x},K=await C['detectOverflow'](r,G),L=ei(ni(z)),N=kl(L);let O=J[N],R=J[L];if(D){const V=N==='y'?'top':'left',a0=N==='y'?'bottom':'right',a1=O+K[V],a2=O-K[a0];O=Yt(a1,O,a2);}if(E){const a3=L==='y'?i3(0x22c):'left',a4=L==='y'?'bottom':'right',a5=R+K[a3],a6=R-K[a4];R=Yt(a5,R,a6);}const T=F['fn']({...r,[N]:O,[L]:R});return{...T,'data':{'x':T['x']-w,'y':T['y']-x,'enabled':{[N]:D,[L]:E}}};}};};function fi(){return typeof window<'u';}function Si(o){return Dl(o)?(o['nodeName']||'')['toLowerCase']():'#document';}function H(o){const i4=bB;var p;return(o==null||(p=o[i4(0x41b)])==null?void 0x0:p['defaultView'])||window;}function ii(o){var p;return(p=(Dl(o)?o['ownerDocument']:o['document'])||window['document'])==null?void 0x0:p['documentElement'];}function Dl(o){const i5=bB;return fi()?o instanceof Node||o instanceof H(o)[i5(0x36f)]:!0x1;}function B(o){return fi()?o instanceof Element||o instanceof H(o)['Element']:!0x1;}function ci(o){return fi()?o instanceof HTMLElement||o instanceof H(o)['HTMLElement']:!0x1;}function ml(o){return!fi()||typeof ShadowRoot>'u'?!0x1:o instanceof ShadowRoot||o instanceof H(o)['ShadowRoot'];}function Vi(o){const i6=bB,{overflow:p,overflowX:r,overflowY:u,display:w}=A(o);return/auto|scroll|overlay|hidden|clip/['test'](p+u+r)&&w!=='inline'&&w!==i6(0x15c);}function nc(o){return/^(table|td|th)$/['test'](Si(o));}function Qi(o){const i7=bB;try{if(o['matches'](':popover-open'))return!0x0;}catch{}try{return o['matches'](i7(0x227));}catch{return!0x1;}}const bc=/transform|translate|scale|rotate|perspective|filter/,ac=/paint|layout|strict|content/,Ii=o=>!!o&&o!=='none';let et;function Mt(o){const i8=bB,p=B(o)?A(o):o;return Ii(p[i8(0x32a)])||Ii(p['translate'])||Ii(p['scale'])||Ii(p['rotate'])||Ii(p['perspective'])||!Jt()&&(Ii(p['backdropFilter'])||Ii(p[i8(0x176)]))||bc['test'](p['willChange']||'')||ac['test'](p[i8(0x457)]||'');}function Yc(o){let p=mi(o);for(;ci(p)&&!yi(p);){if(Mt(p))return p;if(Qi(p))return null;p=mi(p);}return null;}function Jt(){return et==null&&(et=typeof CSS<'u'&&CSS['supports']&&CSS['supports']('-webkit-backdrop-filter','none')),et;}function yi(o){return/^(html|body|#document)$/['test'](Si(o));}function A(o){const i9=bB;return H(o)[i9(0x3db)](o);}function vi(o){return B(o)?{'scrollLeft':o['scrollLeft'],'scrollTop':o['scrollTop']}:{'scrollLeft':o['scrollX'],'scrollTop':o['scrollY']};}function mi(o){if(Si(o)==='html')return o;const p=o['assignedSlot']||o['parentNode']||ml(o)&&o['host']||ii(o);return ml(p)?p['host']:p;}function Pl(o){const ia=bB,p=mi(o);return yi(p)?o[ia(0x41b)]?o['ownerDocument'][ia(0x380)]:o['body']:ci(p)&&Vi(p)?p:Pl(p);}function Gi(o,p,r){const ib=bB;var u;p===void 0x0&&(p=[]),r===void 0x0&&(r=!0x0);const w=Pl(o),x=w===((u=o['ownerDocument'])==null?void 0x0:u['body']),y=H(w);if(x){const z=yt(y);return p[ib(0x451)](y,y['visualViewport']||[],Vi(w)?w:[],z&&r?Gi(z):[]);}else return p[ib(0x451)](w,Gi(w,[],r));}function yt(o){return o['parent']&&Object['getPrototypeOf'](o['parent'])?o['frameElement']:null;}function Hl(o){const id=bB,p=A(o);let r=parseFloat(p['width'])||0x0,u=parseFloat(p['height'])||0x0;const w=ci(o),x=w?o[id(0x1fc)]:r,y=w?o['offsetHeight']:u,z=Ui(r)!==x||Ui(u)!==y;return z&&(r=x,u=y),{'width':r,'height':u,'$':z};}function Nt(o){const ig=bB;return B(o)?o:o[ig(0x362)];}function Yi(o){const ij=bB,p=Nt(o);if(!ci(p))return q(0x1);const r=p['getBoundingClientRect'](),{width:u,height:w,$:x}=Hl(p);let y=(x?Ui(r[ij(0x3a0)]):r['width'])/u,z=(x?Ui(r['height']):r['height'])/w;return(!y||!Number['isFinite'](y))&&(y=0x1),(!z||!Number['isFinite'](z))&&(z=0x1),{'x':y,'y':z};}const Wc=q(0x0);function fl(o){const ik=bB,p=H(o);return!Jt()||!p[ik(0x443)]?Wc:{'x':p['visualViewport'][ik(0x23a)],'y':p[ik(0x443)]['offsetTop']};}function yc(o,p,r){return p===void 0x0&&(p=!0x1),!r||p&&r!==H(o)?!0x1:p;}function bi(r,w,x,z){const im=bB;w===void 0x0&&(w=!0x1),x===void 0x0&&(x=!0x1);const C=r['getBoundingClientRect'](),D=Nt(r);let E=q(0x1);w&&(z?B(z)&&(E=Yi(z)):E=Yi(r));const F=yc(D,x,z)?fl(D):q(0x0);let G=(C['left']+F['x'])/E['x'],J=(C['top']+F['y'])/E['y'],K=C['width']/E['x'],L=C[im(0x3ef)]/E['y'];if(D){const N=H(D),O=z&&B(z)?H(z):z;let R=N,T=yt(R);for(;T&&z&&O!==R;){const V=Yi(T),a0=T['getBoundingClientRect'](),a1=A(T),a2=a0['left']+(T['clientLeft']+parseFloat(a1['paddingLeft']))*V['x'],a3=a0[im(0x22c)]+(T['clientTop']+parseFloat(a1[im(0x3da)]))*V['y'];G*=V['x'],J*=V['y'],K*=V['x'],L*=V['y'],G+=a2,J+=a3,R=H(T),T=yt(R);}}return Ei({'width':K,'height':L,'x':G,'y':J});}function Bi(o,p){const r=vi(o)['scrollLeft'];return p?p['left']+r:bi(ii(o))['left']+r;}function Ql(o,p){const r=o['getBoundingClientRect'](),u=r['left']+p['scrollLeft']-Bi(o,r),w=r['top']+p['scrollTop'];return{'x':u,'y':w};}function Sc(p){const io=bB;let {elements:r,rect:u,offsetParent:w,strategy:x}=p;const y=x==='fixed',z=ii(w),C=r?Qi(r['floating']):!0x1;if(w===z||C&&y)return u;let D={'scrollLeft':0x0,'scrollTop':0x0},E=q(0x1);const F=q(0x0),G=ci(w);if((G||!G&&!y)&&((Si(w)!=='body'||Vi(z))&&(D=vi(w)),G)){const K=bi(w);E=Yi(w),F['x']=K['x']+w['clientLeft'],F['y']=K['y']+w[io(0x2b1)];}const J=z&&!G&&!y?Ql(z,D):q(0x0);return{'width':u['width']*E['x'],'height':u['height']*E['y'],'x':u['x']*E['x']-D['scrollLeft']*E['x']+F['x']+J['x'],'y':u['y']*E['y']-D['scrollTop']*E['y']+F['y']+J['y']};}function Xc(o){return Array['from'](o['getClientRects']());}function pc(o){const ip=bB,p=ii(o),r=vi(o),u=o['ownerDocument']['body'],w=oi(p['scrollWidth'],p['clientWidth'],u['scrollWidth'],u['clientWidth']),x=oi(p[ip(0x44a)],p[ip(0x2e6)],u[ip(0x44a)],u['clientHeight']);let y=-r['scrollLeft']+Bi(o);const z=-r['scrollTop'];return A(u)['direction']==='rtl'&&(y+=oi(p['clientWidth'],u['clientWidth'])-w),{'width':w,'height':x,'x':y,'y':z};}const Zl=0x19;function uc(p,r){const iq=bB,u=H(p),w=ii(p),x=u['visualViewport'];let y=w['clientWidth'],z=w[iq(0x2e6)],C=0x0,D=0x0;if(x){y=x['width'],z=x['height'];const F=Jt();(!F||F&&r===iq(0x1dc))&&(C=x['offsetLeft'],D=x['offsetTop']);}const E=Bi(w);if(E<=0x0){const G=w['ownerDocument'],J=G['body'],K=getComputedStyle(J),L=G[iq(0x194)]===iq(0x229)&&parseFloat(K['marginLeft'])+parseFloat(K[iq(0x14b)])||0x0,N=Math['abs'](w['clientWidth']-J['clientWidth']-L);N<=Zl&&(y-=N);}else E<=Zl&&(y+=E);return{'width':y,'height':z,'x':C,'y':D};}function Gc(o,p){const ir=bB,r=bi(o,!0x0,p===ir(0x1dc)),u=r[ir(0x22c)]+o['clientTop'],w=r['left']+o['clientLeft'],x=ci(o)?Yi(o):q(0x1),y=o['clientWidth']*x['x'],z=o[ir(0x2e6)]*x['y'],C=w*x['x'],D=u*x['y'];return{'width':y,'height':z,'x':C,'y':D};}function Il(o,p,r){const it=bB;let u;if(p===it(0x371))u=uc(o,r);else{if(p==='document')u=pc(ii(o));else{if(B(p))u=Gc(p,r);else{const w=fl(o);u={'x':p['x']-w['x'],'y':p['y']-w['y'],'width':p['width'],'height':p['height']};}}}return Ei(u);}function vl(o,p){const iu=bB,r=mi(o);return r===p||!B(r)||yi(r)?!0x1:A(r)['position']===iu(0x1dc)||vl(r,p);}function Lc(o,p){const iv=bB,r=p['get'](o);if(r)return r;let u=Gi(o,[],!0x1)['filter'](z=>B(z)&&Si(z)!=='body'),w=null;const x=A(o)['position']==='fixed';let y=x?mi(o):o;for(;B(y)&&!yi(y);){const z=A(y),C=Mt(y);!C&&z['position']==='fixed'&&(w=null),(x?!C&&!w:!C&&z['position']==='static'&&w&&(w['position']==='absolute'||w['position']==='fixed')||Vi(y)&&!C&&vl(o,y))?u=u[iv(0x176)](D=>D!==y):w=z,y=mi(y);}return p[iv(0x357)](o,u),u;}function xc(p){const iw=bB;let {element:r,boundary:u,rootBoundary:w,strategy:x}=p;const y=[...u==='clippingAncestors'?Qi(r)?[]:Lc(r,this['_c']):[]['concat'](u),w],z=Il(r,y[0x0],x);let C=z[iw(0x22c)],D=z['right'],E=z['bottom'],F=z['left'];for(let G=0x1;G<y[iw(0x13f)];G++){const J=Il(r,y[G],x);C=oi(J['top'],C),D=Wi(J['right'],D),E=Wi(J['bottom'],E),F=oi(J[iw(0x26d)],F);}return{'width':D-F,'height':E-C,'x':F,'y':C};}function Vc(o){const {width:p,height:r}=Hl(o);return{'width':p,'height':r};}function rc(p,r,u){const ix=bB,w=ci(r),x=ii(r),y=u==='fixed',z=bi(p,!0x0,y,r);let C={'scrollLeft':0x0,'scrollTop':0x0};const D=q(0x0);function E(){D['x']=Bi(x);}if(w||!w&&!y){if((Si(r)!=='body'||Vi(x))&&(C=vi(r)),w){const K=bi(r,!0x0,y,r);D['x']=K['x']+r[ix(0x199)],D['y']=K['y']+r['clientTop'];}else x&&E();}y&&!w&&x&&E();const F=x&&!w&&!y?Ql(x,C):q(0x0),G=z['left']+C[ix(0x2f1)]-D['x']-F['x'],J=z['top']+C['scrollTop']-D['y']-F['y'];return{'x':G,'y':J,'width':z['width'],'height':z['height']};}function dt(o){const iy=bB;return A(o)[iy(0x324)]===iy(0x2bd);}function ol(o,p){const iz=bB;if(!ci(o)||A(o)['position']==='fixed')return null;if(p)return p(o);let r=o['offsetParent'];return ii(o)===r&&(r=r[iz(0x41b)]['body']),r;}function Bl(o,p){const r=H(o);if(Qi(o))return r;if(!ci(o)){let w=mi(o);for(;w&&!yi(w);){if(B(w)&&!dt(w))return w;w=mi(w);}return r;}let u=ol(o,p);for(;u&&nc(u)&&dt(u);)u=ol(u,p);return u&&yi(u)&&dt(u)&&!Mt(u)?r:u||Yc(o)||r;}const Kc=async function(o){const iA=bB,p=this['getOffsetParent']||Bl,r=this[iA(0x284)],s=await r(o['floating']);return{'reference':rc(o[iA(0x1a6)],await p(o[iA(0x326)]),o['strategy']),'floating':{'x':0x0,'y':0x0,'width':s['width'],'height':s[iA(0x3ef)]}};};function Tc(o){return A(o)['direction']==='rtl';}const Mc={'convertOffsetParentRelativeRectToViewportRelativeRect':Sc,'getDocumentElement':ii,'getClippingRect':xc,'getOffsetParent':Bl,'getElementRects':Kc,'getClientRects':Xc,'getDimensions':Vc,'getScale':Yi,'isElement':B,'isRTL':Tc};function Al(o,p){const iB=bB;return o['x']===p['x']&&o['y']===p['y']&&o['width']===p['width']&&o['height']===p[iB(0x3ef)];}function Jc(o,p){let r=null,u;const w=ii(o);function x(){var z;clearTimeout(u),(z=r)==null||z['disconnect'](),r=null;}function y(z,C){const iC=b;z===void 0x0&&(z=!0x1),C===void 0x0&&(C=0x1),x();const D=o[iC(0x3fa)](),{left:E,top:F,width:G,height:J}=D;if(z||p(),!G||!J)return;const K=Ni(F),L=Ni(w['clientWidth']-(E+G)),N=Ni(w[iC(0x2e6)]-(F+J)),O=Ni(E),R={'rootMargin':-K+'px\x20'+-L+'px\x20'+-N+'px\x20'+-O+'px','threshold':oi(0x0,Wi(0x1,C))||0x1};let T=!0x0;function V(a0){const iD=iC,a1=a0[0x0]['intersectionRatio'];if(a1!==C){if(!T)return y();a1?y(!0x1,a1):u=setTimeout(()=>{y(!0x1,1e-7);},0x3e8);}a1===0x1&&!Al(D,o[iD(0x3fa)]())&&y(),T=!0x1;}try{r=new IntersectionObserver(V,{...R,'root':w['ownerDocument']});}catch{r=new IntersectionObserver(V,R);}r['observe'](o);}return y(!0x0),x;}function St(p,r,u,w){const iE=bB;w===void 0x0&&(w={});const {ancestorScroll:x=!0x0,ancestorResize:z=!0x0,elementResize:C=typeof ResizeObserver=='function',layoutShift:D=typeof IntersectionObserver=='function',animationFrame:E=!0x1}=w,F=Nt(p),G=x||z?[...F?Gi(F):[],...r?Gi(r):[]]:[];G[iE(0x446)](T=>{const iF=iE;x&&T['addEventListener'](iF(0x38d),u,{'passive':!0x0}),z&&T['addEventListener'](iF(0x426),u);});const J=F&&D?Jc(F,u):null;let K=-0x1,L=null;C&&(L=new ResizeObserver(T=>{const iG=iE;let [V]=T;V&&V[iG(0x297)]===F&&L&&r&&(L['unobserve'](r),cancelAnimationFrame(K),K=requestAnimationFrame(()=>{const iH=iG;var a0;(a0=L)==null||a0[iH(0x125)](r);})),u();}),F&&!E&&L[iE(0x125)](F),r&&L['observe'](r));let N,O=E?bi(p):null;E&&R();function R(){const T=bi(p);O&&!Al(O,T)&&u(),O=T,N=requestAnimationFrame(R);}return u(),()=>{var T;G['forEach'](V=>{const iI=b;x&&V['removeEventListener'](iI(0x38d),u),z&&V['removeEventListener'](iI(0x426),u);}),J?.(),(T=L)==null||T['disconnect'](),L=null,E&&cancelAnimationFrame(N);};}const ki=Ic,Oi=oc,Ft=dc,Nc=ec,Di=(o,p,r)=>{const u=new Map(),w={'platform':Mc,...r},x={...w['platform'],'_c':u};return hc(o,p,{...w,'platform':x});};let Fc=class{constructor(o){const iJ=bB;m(this,'ctx'),m(this,'enable',!0x1),m(this,'contentEl'),m(this,'floatingEl'),m(this,'arrowEl'),this['ctx']=o;const {TOOLTIP_BG_COLOR:p,TOOLTIP_TEXT_COLOR:r,TOOLTIP_ZINDEX:u,TOOLTIP_CUSTOM_STYLE:w,CSS_PREFIX:x}=this['ctx']['config'];this['contentEl']=document[iJ(0x244)]('div'),this['arrowEl']=document['createElement']('div'),this[iJ(0x2c1)]=document[iJ(0x244)]('div'),this['floatingEl']['className']=x+'-tooltip',this[iJ(0x2f2)][iJ(0x474)]=x+iJ(0x190),this[iJ(0x2b0)]['className']=x+'-tooltip-arrow';const y={'display':iJ(0x215),'position':iJ(0x372),'background':p,'color':r,'boxSizing':iJ(0x32f),'zIndex':u,'padding':'8px','borderRadius':iJ(0x463),'fontSize':'12px',...w},z={'position':'absolute','width':'10px','height':'10px','background':y[iJ(0x1a8)],'backgroundColor':y[iJ(0x3ab)],'transform':'rotate(45deg)','zIndex':y['zIndex']};Object[iJ(0x2f0)](this[iJ(0x2b0)]['style'],z),Object['assign'](this['floatingEl']['style'],y),this['floatingEl']['appendChild'](this['contentEl']),this['floatingEl'][iJ(0x191)](this['arrowEl']),this['ctx']['containerElement']['appendChild'](this['floatingEl']),this['init']();}['init'](){const iN=bB;this['floatingEl']['addEventListener']('mouseleave',()=>{const iK=b;this[iK(0x37b)]();}),this['ctx']['on']('mouseout',o=>{const iL=b;this[iL(0x2c1)]['contains'](o['relatedTarget'])||this['hide']();}),this['ctx']['on']('onScroll',()=>{this['hide']();}),this['ctx']['on']('startEdit',()=>{this['hide']();}),this['ctx']['on']('visibleCellHoverChange',(o,p)=>{this['floatingEl']['contains'](p['target'])||(o['ellipsis']||o['message'])&&this['show'](o);}),this['ctx']['on']('visibleCellMouseleave',(o,p)=>{this['floatingEl']['contains'](p['target'])||this['hide']();}),this['ctx']['on']('cellHeaderMouseleave',(o,p)=>{this['floatingEl']['contains'](p['target'])||this['hide']();}),this['ctx']['on']('cellHeaderHoverChange',(o,p)=>{const iM=b;this['floatingEl'][iM(0x436)](p['target'])||o['ellipsis']&&this['show'](o);}),this[iN(0x3df)]['on']('cellFooterMouseleave',(o,p)=>{const iO=iN;this['floatingEl']['contains'](p[iO(0x297)])||this['hide']();}),this[iN(0x3df)]['on'](iN(0x2cf),(o,p)=>{const iP=iN;this[iP(0x2c1)]['contains'](p['target'])||o['ellipsis']&&this['show'](o);}),this['ctx']['on'](iN(0x423),(o,p)=>{this['show'](o,p);}),this['ctx']['on'](iN(0x34d),()=>{this['hide']();});}['show'](o,p){const iQ=bB;if(this[iQ(0x3df)]['contextMenuIng']||!o['overflowTooltipShow']||this['ctx']['mousedown'])return;this['floatingEl'][iQ(0x2d1)]['display']=iQ(0x226);let r=o['getText']();o['message']&&(r=o['message']),p&&(r=p);const u=this['ctx']['containerElement']['getBoundingClientRect']();if(!u)return;this['enable']=!0x0,this[iQ(0x2f2)][iQ(0x2d1)][iQ(0x149)]=(o[iQ(0x34c)]||0x1f4)+'px',this[iQ(0x2f2)]['style']['minWidth']='100px',this['contentEl']['style']['width']='100%',this['contentEl']['style']['display']='inline-block',this['contentEl']['style']['wordBreak']=iQ(0x179),this['contentEl'][iQ(0x2d1)][iQ(0x1cd)]='1.5',this['contentEl']['innerText']=r;const w=o['drawX']+u['x'],x=o['drawY']+u['y'];Di({'getBoundingClientRect'(){return{'width':o['visibleWidth'],'height':o['visibleHeight'],'x':w,'y':x,'left':w,'right':w+o['visibleWidth'],'top':x,'bottom':x+o['visibleHeight']};}},this['floatingEl'],{'placement':o['overflowTooltipPlacement'],'middleware':[Oi(),Ft(),ki(0x6),Nc({'element':this['arrowEl']})]})['then'](y=>{const iR=iQ,{x:z,y:C,placement:D,middlewareData:E}=y;if(Object['assign'](this['floatingEl']['style'],{'top':C+'px','left':z+'px'}),E['arrow']){const F=E['arrow'];['left',iR(0x26e),'left-end']['includes'](D)?Object['assign'](this[iR(0x2b0)]['style'],{'top':F['y']+'px','bottom':'','left':'','right':iR(0x3ea)}):[iR(0x2e8),'right-start','right-end']['includes'](D)?Object['assign'](this['arrowEl']['style'],{'top':F['y']+'px','bottom':'','left':'-5px','right':''}):[iR(0x272),'bottom-start','bottom-end']['includes'](D)?Object[iR(0x2f0)](this['arrowEl']['style'],{'top':'-5px','bottom':'','left':F['x']+'px','right':''}):['top',iR(0x3b7),iR(0x29e)][iR(0x31e)](D)&&Object['assign'](this[iR(0x2b0)]['style'],{'top':'','bottom':'-5px','left':F['x']+'px','right':''});}});}['hide'](){const iS=bB;this['enable']&&(this['enable']=!0x1,this['floatingEl']['style']['display']=iS(0x215));}['destroy'](){const iT=bB;this['contentEl']['remove'](),this['arrowEl']['remove'](),this['floatingEl'][iT(0x111)]();}};function b(c,d){c=c-0x111;const e=a();let f=e[c];return f;}class wc{constructor(o){const iU=bB;m(this,'editorEl'),m(this,'inputEl'),m(this,'enable',!0x1),m(this,'cellTarget',null),m(this,'selectorArrStr',''),m(this,'ctx'),m(this,'drawY',0x0),m(this,'drawX',0x0),m(this,'cancel',!0x1),this['ctx']=o,this[iU(0x200)](),this['init']();}[bB(0x27c)](){const iW=bB;this['ctx']['on']('outsideMousedown',()=>{const iV=b;this[iV(0x3ad)]&&this['cellTarget'][iV(0x358)]==='text'&&this[iV(0x2a0)]();}),this['ctx']['on'](iW(0x1ad),o=>{const iX=iW;this['cellTarget']=o,this['resetEditorStyle']();const {xArr:p,yArr:r}=this['ctx'][iX(0x230)];this['selectorArrStr']=JSON[iX(0x252)](p)+JSON['stringify'](r),this['focusInput']();}),this['ctx']['on']('onScroll',()=>{this['enable']&&this['doneEdit']();}),this[iW(0x3df)]['on']('hoverIconClick',o=>{const iY=iW;this['editCell'](o['rowIndex'],o[iY(0x2c5)]);}),this['ctx']['on'](iW(0x1f5),o=>{const iZ=iW;if(!this[iZ(0x3df)][iZ(0x36d)](o)||!this['ctx']['focusCell']||this['ctx']['finding'])return;const {focusCell:p}=this['ctx'];if(o['code']==='Escape'&&this['ctx'][iZ(0x208)]){this['cancel']=!0x0;const {focusCell:z}=this['ctx'];z&&(this['ctx']['emit'](iZ(0x2b3),z),this['cellTarget']=z),this['doneEdit']();return;}if((o[iZ(0x330)]||o['metaKey'])&&o['key']===iZ(0x476)&&this['ctx']['editing']&&this['inputEl']){o['preventDefault']();const C=this['inputEl']['selectionStart'],D=this['inputEl']['value']['substring'](0x0,C),E=this[iZ(0x29f)]['value']['substring'](C);this[iZ(0x29f)][iZ(0x14d)]=D+'\x0a'+E,this['inputEl']['selectionStart']=this['inputEl']['selectionEnd']=C+0x1,this['autoSize']();return;}if(o['code']===iZ(0x237)&&this['ctx']['editing']){if(o['preventDefault'](),this['doneEdit'](),o['shiftKey']){this['ctx']['emit']('setMoveFocus','LEFT');return;}this['ctx']['emit']('setMoveFocus','RIGHT');return;}if(o[iZ(0x407)]==='Enter'&&this['ctx']['editing']){if(o['preventDefault'](),this['doneEdit'](),o['shiftKey']){this['ctx'][iZ(0x376)]('setMoveFocus','TOP');return;}this['ctx']['emit']('setMoveFocus','BOTTOM');return;}if(o['key']==='Enter'&&!this[iZ(0x3df)][iZ(0x208)]){o['preventDefault'](),this['startEdit']();return;}const r=o['key'],u=o['ctrlKey'],w=o['altKey'],x=o['shiftKey'],y=o[iZ(0x159)];if(!(u||w||x||y||['Enter','CapsLock','Escape','Tab',iZ(0x140),'Delete','ArrowUp',iZ(0x20b),'ArrowLeft','ArrowRight','Home',iZ(0x30f),'PageUp',iZ(0x2ab),iZ(0x231),'F1','F2','F3','F4','F5','F6','F7','F8','F9','F10','F11','F12'][iZ(0x31e)](r))){if(document['activeElement']!==this['inputEl']&&p['editorType']==='text'){o['preventDefault']();return;}this['startEdit'](!0x0);}}),this[iW(0x3df)]['on']('cellClick',o=>{const j0=iW;if(this[j0(0x3df)]['isPointer']||!this['isInSelectorRange'](o[j0(0x466)],o['colIndex']))return;const {xArr:p,yArr:r}=this['ctx']['selector'],u=JSON['stringify'](p)+JSON['stringify'](r);if(this[j0(0x31f)](),this['selectorArrStr']===u&&this[j0(0x3ad)]){if(this['ctx'][j0(0x465)]['ENABLE_MERGE_CELL_LINK']&&this['ctx']['onlyMergeCell']){this['startEdit']();return;}if(this[j0(0x3df)]['selectOnlyOne']&&o['rowKey']===this['cellTarget']['rowKey']&&o['key']===this['cellTarget']['key']){this['startEdit']();return;}}if(this[j0(0x44b)]=u,this['doneEdit'](),this['cellTarget']=o,this[j0(0x3e0)](),this['ctx'][j0(0x465)][j0(0x2c3)]){if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this[j0(0x3df)][j0(0x2a7)]){this['startEdit']();return;}this['ctx']['selectOnlyOne']&&this['startEdit']();}});}['isInSelectorRange'](o,p){const j1=bB,{xArr:r,yArr:u}=this[j1(0x3df)]['selector'],[w,x]=r,[y,z]=u;return!(p<w||p>x||o<y||o>z);}[bB(0x200)](){const j2=bB;this[j2(0x29f)]=document[j2(0x244)]('textarea'),this['inputEl']['id']='e-virt-table-editor-textarea',this['inputEl']['setAttribute']('rows','1'),this['inputEl']['setAttribute']('tabindex','-1'),this[j2(0x29f)]['addEventListener']('input',this[j2(0x224)]['bind'](this)),this['editorEl']=this['ctx']['editorElement'],this['inputEl']['className']='e-virt-table-editor-textarea',this['editorEl'][j2(0x191)](this['inputEl']),this[j2(0x3df)]['containerElement'][j2(0x191)](this['editorEl']);}['autoSize'](){const j3=bB;if(!this['ctx']['editing'])return;const o=this['inputEl']['value'];this['cellTarget']&&this['cellTarget']['type']===j3(0x33e)&&o!==''&&(this['ctx']['emit']('cellHideTooltip'),/^-?\d+(\.\d+)?$/['test'](o)||this['ctx']['emit']('cellShowTooltip',this['cellTarget'],this['ctx']['config'][j3(0x379)])),this['inputEl']['style']['height']='auto';let p=this['inputEl'][j3(0x44a)],r=this['ctx'][j3(0x380)]['visibleHeight'];p>r&&(p=r);const {stageHeight:u,footer:w,header:x,config:{SCROLLER_TRACK_SIZE:y}}=this[j3(0x3df)],z=u-w['height']-y;this[j3(0x46b)][j3(0x2d1)]['bottom']='auto',this[j3(0x1f7)]<x['height']&&(this['editorEl'][j3(0x2d1)]['top']=x['height']-0x1+'px'),this['drawY']+p>z&&(this['editorEl']['style']['left']=this['drawX']-0x1+'px',this[j3(0x46b)]['style']['top']='auto',this['editorEl']['style']['bottom']=u-z+'px'),this['inputEl']['style']['height']=p+'px';}['startEditByInput'](p,r=!0x1){const j4=bB,u=r?null:p['getValue'](),{editorType:w}=p;if(w==='none')return;p['update'](),this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&p['updateSpanInfo']();let {height:x,width:y,drawY:z,drawX:C}=p;this['drawX']=C,this['drawY']=z;const {config:{CELL_PADDING:D},header:E}=this['ctx'];let F=this['ctx']['body']['visibleHeight'];x>F&&(x=F),this['editorEl']['style'][j4(0x421)]='100',this['editorEl']['style']['left']=this['drawX']-0x1+'px',this['editorEl']['style']['top']=this[j4(0x1f7)]+'px',this['editorEl']['style']['bottom']='auto',this['editorEl']['style']['maxWidth']=j4(0x215),this['editorEl']['style']['maxHeight']=F+'px',['text']['includes'](w)?(this[j4(0x29f)]['style']['opacity']='1',this['inputEl']['style'][j4(0x324)]=j4(0x20a),this['inputEl']['style']['minWidth']=y-0x1+'px',this[j4(0x29f)]['style']['minHeight']=x-0x1+'px',this['inputEl'][j4(0x2d1)]['maxHeight']=F+'px',this['inputEl']['style']['width']=y+'px',this['inputEl']['style']['height']='auto',this['inputEl']['style']['padding']=D+'px',this[j4(0x29f)]['value']='',u!==null&&(this['inputEl'][j4(0x14d)]=u),(this['inputEl']['scrollHeight']>x||this['drawY']<E['height'])&&this['autoSize']()):(this['inputEl']['style']['opacity']='0',this['inputEl']['style'][j4(0x3a0)]='1px',this['inputEl']['style']['height']='1px',this['inputEl']['style']['position']=j4(0x372),this['inputEl']['style']['left']='0px',this['inputEl']['style']['top']='0px');}['doneEditByInput'](){const j5=bB;if(this['cellTarget']&&this[j5(0x3ad)]['editorType']==='text'){const {rowKey:o,key:p}=this['cellTarget'],r=this[j5(0x3ad)]['getValue'](),u=this['inputEl']['value'];u!==r&&!(u===''&&r===null)&&!this[j5(0x14c)]&&this['ctx']['setItemValueByEditor'](o,p,u,!0x0);}}['focusInput'](){document['activeElement']!==this['inputEl']&&this['inputEl']['focus']({'preventScroll':!0x0});}['startEdit'](o=!0x1){const j6=bB;this[j6(0x14c)]=!0x1;const {ENABLE_EDIT_CLICK_SELECTOR:p}=this['ctx']['config'];if(!p)return;const r=this['ctx']['focusCell'];r&&(r['isVerticalVisible']()&&r['isHorizontalVisible']()||this['ctx']['emit']('scrollToIndex',r['rowIndex'],r['colIndex']),this['editCell'](r['rowIndex'],r[j6(0x2c5)],o));}['editCell'](o,p,r=!0x1){const j7=bB,u=this['ctx']['body']['renderRows']['find'](D=>D['rowIndex']===o);if(!u)return;const w=u['cells']['find'](D=>D['colIndex']===p);if(!w||!(w['isVerticalVisible']()&&w['isHorizontalVisible']()))return;this['ctx']['emit']('setSelectorCell',w);const x=this['ctx']['focusCell'];if(!x||['index',j7(0x1ce),j7(0x37c)]['includes'](x['type'])||this['enable'])return;const {rowKey:y,key:z}=x,C=this['ctx'][j7(0x391)]['getReadonly'](y,z);x&&!C&&(this[j7(0x141)]=!0x0,this['ctx']['editing']=!0x0,this['cellTarget']=x,this['startEditByInput'](this['cellTarget'],r),this['ctx']['emit']('startEdit',this[j7(0x3ad)]),this['ctx'][j7(0x376)]('draw'));}['doneEdit'](){const j8=bB;this['enable']&&(this['doneEditByInput'](),this[j8(0x3df)]['emit']('cellHideTooltip'),this['ctx'][j8(0x376)]('doneEdit',this['cellTarget']),this[j8(0x141)]=!0x1,this['ctx'][j8(0x208)]=!0x1,this['resetEditorStyle'](),setTimeout(()=>{this['focusInput']();},0x0),this['ctx']['emit']('draw'));}['resetEditorStyle'](){const j9=bB,o=this['cellTarget'];o&&(this['editorEl']['style']['left']=o['drawX']+'px',this['editorEl']['style']['top']=o['drawY']+'px',this['editorEl'][j9(0x2d1)]['maxWidth']='1px',this['editorEl']['style']['maxHeight']='1px',this['editorEl']['style'][j9(0x421)]='-1');}['clearEditor'](){const ja=bB;this['doneEdit'](),this[ja(0x3ad)]=null,this['selectorArrStr']='',this['ctx'][ja(0x3e3)](),this['ctx']['focusCell']=void 0x0,this['inputEl'][ja(0x243)](),this[ja(0x3df)]['emit']('draw');}['destroy'](){var o;(o=this['editorEl'])==null||o['remove']();}}let Rc=class{constructor(o){const jb=bB;m(this,'ctx'),m(this,'emptyEl'),this['ctx']=o;const {EMPTY_TEXT:p,EMPTY_CUSTOM_STYLE:r}=this['ctx']['config'];this[jb(0x3df)]['emptyElement']?this['emptyEl']=this['ctx']['emptyElement']:(this['emptyEl']=document['createElement'](jb(0x220)),this['emptyEl'][jb(0x31b)]=p),this[jb(0x338)]['className']='e-virt-table-empty',this['emptyEl'][jb(0x2d1)]['display']='none',this['ctx'][jb(0x2d7)]['appendChild'](this['emptyEl']),this[jb(0x3df)]['on']('emptyChange',({type:u,headerHeight:w,bodyHeight:x,footerHeight:y})=>{const jd=jb,z=w+(x+y)/0x2,C={'display':u==='empty'?'block':jd(0x215),'top':z+'px',...r};Object['assign'](this[jd(0x338)][jd(0x2d1)],C);});}[bB(0x242)](){this['emptyEl']['remove']();}};class zc{constructor(o){m(this,'ctx'),m(this,'observer'),this['ctx']=o,this['init']();}['arerMapsEqual'](o,p){if(o['size']!==p['size'])return!0x1;for(let [r,u]of o)if(!p['has'](r)||p['get'](r)!==u)return!0x1;return!0x0;}['init'](){const jg=bB;this['observer']=new MutationObserver(xt(()=>{const jf=b,o=this['ctx']['overlayerElement']['querySelectorAll']('[data-auto-height=\x22true\x22]'),p=new Map();o['forEach'](u=>{const je=b,w=Number(u[je(0x2ae)]('data-row-index')),x=Number(u['getAttribute']('data-col-index'));if(isNaN(w)||isNaN(x))return;const y=u['getBoundingClientRect'](),z=w+'_'+x;p['set'](z,Math[je(0x2c8)](y['height']));});const r=this['ctx']['database'][jf(0x44e)]();if(!this[jf(0x198)](r,p)){if(this[jf(0x3df)]['database']['setOverlayerAutoHeightMap'](p),r['size']===0x0&&p['size']===0x0)return;this['ctx'][jf(0x376)]('draw');}},16.67)),this[jg(0x155)]['observe'](this['ctx']['overlayerElement'],{'childList':!0x0,'subtree':!0x0,'attributes':!0x0,'characterData':!0x0}),this['ctx']['overlayerElement']['getAttribute'](jg(0x2ec))==='default'&&this['ctx']['on']('overlayerChange',o=>{const p=this['ctx']['overlayerElement'];p['replaceChildren'](),Object['assign'](p['style'],o['style']),o['views']['forEach'](r=>{const u=document['createElement']('div');u['className']=r['class'],Object['assign'](u['style'],r['style']),r['views']['forEach'](w=>{const jj=b,x=document[jj(0x244)](jj(0x220));Object['assign'](x['style'],w['style']),w['cells']['forEach'](y=>{const jk=jj,z=document['createElement'](jk(0x220));Object['assign'](z[jk(0x2d1)],y['style']),Object['keys'](y['domDataset'])['forEach'](C=>{const jm=jk;z[jm(0x233)](C,y['domDataset'][C]);}),typeof y[jk(0x442)]=='function'&&y['render'](z,y),x['appendChild'](z);}),u['appendChild'](x);}),p['appendChild'](u);});});}['draw'](){const jn=bB,o=this[jn(0x34f)]();this['ctx']['emit']('overlayerChange',o);}['destroy'](){const jo=bB;this['observer']&&this['observer'][jo(0x40e)](),this['ctx']['emit']('overlayerChange',{'style':{},'views':[]});}['getContainer'](){const o=this['getHeader'](),p=this['getBody'](),r=this['getFooter']();let u=[];const {FOOTER_FIXED:w,FOOTER_POSITION:x}=this['ctx']['config'];return w?x==='top'?u=[o,r,p]:u=[o,p,r]:u=[o,p],{'views':u};}[bB(0x382)](){const jp=bB,{fixedLeftWidth:p,fixedRightWidth:r,config:{SCROLLER_TRACK_SIZE:u,CSS_PREFIX:w}}=this[jp(0x3df)],{visibleWidth:x,visibleHeight:y,renderCellHeaders:z}=this['ctx'][jp(0x3c0)];let C=[],D=[],E=[];z['forEach'](L=>{const jq=jp;L['render']&&(L['fixed']==='left'?D['push'](L):L['fixed']==='right'?E['push'](L):C[jq(0x420)](L));});const F=r-u,G={'key':jp(0x26d),'style':{'position':'absolute','top':'0px','left':'0px','overflow':'hidden','width':p+'px','height':y+'px'},'cells':D},J={'key':'center','style':{'position':'absolute','top':jp(0x3fc),'left':p+'px','overflow':jp(0x193),'width':x-p-F+0x1+'px','height':y+'px'},'cells':C},K={'key':jp(0x2e8),'style':{'position':'absolute','top':'0px','right':'0px','overflow':'hidden','width':F+0x1+'px','height':y+'px'},'cells':E};return{'type':'header','class':w+'-overlayer-header','style':{'position':'relative','overflow':'hidden','width':x+'px','height':y+'px'},'views':[G,J,K]};}['getBody'](){const jr=bB,p=[],r=[],u=[];let w=this['ctx']['body']['renderRows'];this['ctx']['config'][jr(0x1f0)]||(w=w['concat'](this['ctx']['footer']['renderRows'])),w['forEach'](L=>{const jt=jr;L[jt(0x444)]['forEach'](N=>{const ju=jt;N['cellType']==='footer'&&(N['render']=N['renderFooter']),N[ju(0x442)]&&(N['fixed']===ju(0x26d)?r['push'](N):N['fixed']==='right'?u['push'](N):p['push'](N));});});const {fixedLeftWidth:x,fixedRightWidth:y,config:{SCROLLER_TRACK_SIZE:z,CSS_PREFIX:C}}=this[jr(0x3df)],{visibleWidth:D,visibleHeight:E}=this['ctx']['body'],F=y-z,G={'key':'left','style':{'position':'absolute','top':0.5+'px','left':0.5+'px','overflow':'hidden','width':x+'px','height':E+'px'},'cells':r},J={'key':jr(0x37d),'style':{'position':'absolute','top':0.5+'px','left':x-0.5+'px','overflow':'hidden','width':D-x-F+'px','height':E+'px'},'cells':p},K={'key':jr(0x2e8),'style':{'position':'absolute','top':'0px','right':'0px','overflow':'hidden','width':F+'px','height':E+'px'},'cells':u};return{'type':'body','class':C+'-overlayer-body','style':{'position':'relative','overflow':'hidden','width':D+'px','height':E+'px'},'views':[G,J,K]};}['getFooter'](){const jv=bB,p=[],r=[],u=[];this['ctx']['footer'][jv(0x448)][jv(0x446)](K=>{K['cells']['forEach'](L=>{const jw=b;L[jw(0x467)]==='footer'&&L[jw(0x3f4)]&&(L['render']=L['renderFooter'],L['fixed']==='left'?r['push'](L):L['fixed']==='right'?u['push'](L):p['push'](L));});});const {fixedLeftWidth:w,fixedRightWidth:x,config:{SCROLLER_TRACK_SIZE:y,CSS_PREFIX:z}}=this['ctx'],{visibleWidth:C,visibleHeight:D}=this['ctx']['footer'],E=x-y,F={'key':'left','style':{'position':'absolute','top':0.5+'px','left':0.5+'px','overflow':'hidden','width':w+'px','height':D+'px'},'cells':r},G={'key':'center','style':{'position':'absolute','top':0.5+'px','left':w-0.5+'px','overflow':'hidden','width':C-w-E+'px','height':D+'px'},'cells':p},J={'key':'right','style':{'position':'absolute','top':0.5+'px','right':0.5+'px','overflow':'hidden','width':E+'px','height':D+'px'},'cells':u};return{'type':jv(0x35a),'class':z+jv(0x315),'style':{'position':'relative','overflow':jv(0x193),'width':C+'px','height':D+'px'},'views':[F,G,J]};}}class nl{constructor(o,p=[],r={}){const jx=bB;m(this,'container'),m(this,jx(0x1d5)),m(this,jx(0x2a1)),m(this,'activeSubmenus',new Set()),m(this,'boundMouseEnterHandler'),m(this,'boundMouseLeaveHandler'),m(this,'boundClickHandler'),this['container']=o,this['menuData']=p,this['onClick']=r['onClick'],this['boundMouseEnterHandler']=u=>this['handleMouseEvent'](u,'enter'),this['boundMouseLeaveHandler']=u=>this['handleMouseEvent'](u,jx(0x33a)),this['boundClickHandler']=u=>this['handleClick'](u),this['createMenu'](),this['bindEvents']();}['createMenu'](){const jy=bB;this['container']['className']=jy(0x270),this['container']['style'][jy(0x14e)]='block';const o=document['createDocumentFragment']();this['menuData']['forEach'](p=>{o['appendChild'](this['createMenuItem'](p));}),this['container'][jy(0x191)](o);}[bB(0x477)](o,p=!0x1){const jz=bB;var r;const u=this['createElement']('div',p?'e-virt-table-submenu-item':jz(0x2a9));u['setAttribute'](p?'data-submenu':'data-menu',o['value']),o['disabled']&&u['classList'][jz(0x43f)]('disabled');const w=this['createElement']('div','e-virt-table-menu-item-content');if(o['icon']){const y=this['createElement'](jz(0x136),'e-virt-table-menu-item-icon');y[jz(0x34a)]=o[jz(0x186)],w['appendChild'](y);}else w['classList']['add'](jz(0x35d));const x=this[jz(0x244)]('span','e-virt-table-menu-item-text');if(x['textContent']=o['label'],w['appendChild'](x),u['appendChild'](w),(r=o['children'])!=null&&r['length']){const z=this[jz(0x244)]('span',jz(0x1b3));z['innerHTML']=gi,u['appendChild'](z);const C=this[jz(0x18c)](o['children']);u['_submenu']=C,this['container']['appendChild'](C);}return u;}['createSubmenu'](o){const p=this['createElement']('div','e-virt-table-submenu');return o['forEach'](r=>{const jA=b;p['appendChild'](this[jA(0x477)](r,!0x0));}),p;}['createElement'](o,p=''){const jB=bB,r=document[jB(0x244)](o);return p&&(r['className']=p),r;}['bindEvents'](){const jC=bB;this['container']['addEventListener']('mouseenter',this['boundMouseEnterHandler'],!0x0),this['container']['addEventListener'](jC(0x480),this['boundMouseLeaveHandler'],!0x0),this['container']['addEventListener']('click',this['boundClickHandler']);}['handleMouseEvent'](o,p){const jD=bB;o['stopPropagation']();const r=o['target']['closest']('.e-virt-table-menu-item,\x20.e-virt-table-submenu-item');r&&(this['container']['contains'](r)||r[jD(0x116)]['contains']('e-virt-table-submenu-item'))&&(p===jD(0x3bc)?this['handleHover'](r):this['handleLeave'](r));}['handleHover'](o){const jE=bB;o['classList']['contains']('e-virt-table-menu-item')&&(this['container'][jE(0x3ce)](jE(0x120))['forEach'](r=>r[jE(0x116)]['remove']('active')),o['classList']['contains']('disabled')||o['classList']['add']('active'));const p=o['_submenu']||o['querySelector']('.e-virt-table-submenu');p&&(this[jE(0x28e)](o),this['showSubmenu'](o,p));}[bB(0x170)](o){const p=o['_submenu']||o['querySelector']('.e-virt-table-submenu');setTimeout(()=>{const jF=b,r=p;r&&!r[jF(0x38f)](':hover')&&!o['matches'](':hover')&&(this['hideSubmenu'](r),o['classList']['contains']('e-virt-table-menu-item')&&o['classList'][jF(0x111)]('active'));},0x96);}['hideSiblingSubmenus'](o){const jG=bB;let p;if(o['classList']['contains']('e-virt-table-menu-item'))p=this['container']['querySelectorAll']('.e-virt-table-menu-item');else{const r=o['closest']('.e-virt-table-submenu');if(r)p=r['querySelectorAll']('.e-virt-table-submenu-item');else return;}p[jG(0x446)](s=>{const jH=jG;s!==o&&s['_submenu']&&this[jH(0x40f)](s['_submenu']);});}async['showSubmenu'](o,p){const jI=bB;if(this[jI(0x271)]['has'](p))return;this['activeSubmenus']['add'](p),p[jI(0x116)]['add']('show');const r=St(o,p,async()=>{const jJ=jI,u=this['container']['getBoundingClientRect'](),w=window['innerWidth'],x=p['offsetWidth']||0xc8,y=w-u['right'],z=u[jJ(0x26d)],C=y>=x||y>=z?'right-start':'left-start',{x:D,y:E}=await Di(o,p,{'placement':C,'middleware':[ki(0x8),Oi({'padding':0x8})]});Object[jJ(0x2f0)](p['style'],{'left':D+'px','top':E+'px'});});p['_cleanup']=r;}[bB(0x40f)](o){const jK=bB;if(!this['activeSubmenus']['has'](o))return;this['activeSubmenus'][jK(0x33b)](o),o[jK(0x116)][jK(0x111)]('show'),this['hideAllChildSubmenus'](o);const p=o;p[jK(0x1dd)]&&(p['_cleanup'](),delete p['_cleanup']);}['hideAllChildSubmenus'](o){const jL=bB;o['querySelectorAll']('.e-virt-table-submenu-item')[jL(0x446)](p=>{const jM=jL;if(p[jM(0x468)]){const r=p['_submenu'];if(this['activeSubmenus']['has'](r)){this['activeSubmenus']['delete'](r),r['classList']['remove']('show');const u=r;u['_cleanup']&&(u['_cleanup'](),delete u[jM(0x1dd)]),this['hideAllChildSubmenus'](r);}}});}['handleClick'](o){const jN=bB;o['stopPropagation']();const p=o['target']['closest']('.e-virt-table-menu-item,\x20.e-virt-table-submenu-item');if(!p||p['classList'][jN(0x436)]('disabled'))return;if(p['classList']['contains']('e-virt-table-menu-item')){const w=p['_submenu']||p['querySelector'](jN(0x473));if(w){this['showSubmenu'](p,w);return;}}const r=p['getAttribute']('data-menu')||p?.['getAttribute']('data-submenu'),u=this['findMenuItem'](r||'');u&&this['onClick']&&this['onClick'](u,r||'');}['findMenuItem'](o,p=this[bB(0x1d5)]){const jO=bB;for(const r of p){if(r['value']===o)return r;if(r['children']){const u=this[jO(0x47b)](o,r['children']);if(u)return u;}}return null;}['positionMenu'](o){const p={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':o['clientY'],'left':o['clientX'],'right':o['clientX'],'bottom':o['clientY'],'x':o['clientX'],'y':o['clientY']}),'contextElement':document['body']};St(p,this['container'],()=>{const jP=b;Di(p,this['container'],{'placement':jP(0x45d),'middleware':[ki(),Oi(),Ft()]})['then'](({x:r,y:u})=>{const jQ=jP;this['container']&&Object['assign'](this[jQ(0x1b8)]['style'],{'left':r+'px','top':u+'px'});});});}['destroy'](){const jR=bB;this['container']['removeEventListener']('mouseenter',this['boundMouseEnterHandler'],!0x0),this['container']['removeEventListener'](jR(0x480),this['boundMouseLeaveHandler'],!0x0),this[jR(0x1b8)]['removeEventListener']('click',this['boundClickHandler']),this['cleanupAllSubmenus'](this['container']),this[jR(0x1b8)]['style']['display']='none',this[jR(0x1b8)][jR(0x18a)]();}['removeMenuItem'](o){const jS=bB,p=this['container']['querySelector']('[data-menu=\x22'+o+'\x22]');if(!p)return!0x1;const r=p[jS(0x2ef)]('.e-virt-table-submenu');return r&&this[jS(0x3c5)](r),p['remove'](),!0x0;}['removeSubMenuItem'](o){const jT=bB,p=this['container']['querySelector']('[data-submenu=\x22'+o+'\x22]');if(!p)return!0x1;const r=p['closest']('.e-virt-table-submenu'),u=p['_submenu'];if(u&&this[jT(0x3c5)](u),p['remove'](),r&&r['querySelectorAll']('.e-virt-table-submenu-item')['length']===0x0){const w=this['container'][jT(0x2ef)]('[data-menu]');if(w&&w['_submenu']===r)this[jT(0x1e5)](w['getAttribute']('data-menu')||'');else{const x=this['container'][jT(0x3ce)](jT(0x28f));for(const y of x)if(y['_submenu']===r){const z=y['getAttribute']('data-menu')||y['getAttribute']('data-submenu');z&&(y['hasAttribute']('data-menu')?this['removeMenuItem'](z):this['removeSubMenuItem'](z));break;}}}return!0x0;}['cleanupAllSubmenus'](o){o['querySelectorAll']('.e-virt-table-menu-item')['forEach'](p=>{const jU=b;p['_submenu']&&(this['cleanupSubmenuRecursively'](p['_submenu']),p[jU(0x468)]=void 0x0);});}['cleanupSubmenuRecursively'](o){const jV=bB,p=o;p['_cleanup']&&(p['_cleanup'](),delete p['_cleanup']),o['querySelectorAll']('.e-virt-table-submenu-item')[jV(0x446)](r=>{const jW=jV;r['_submenu']&&this[jW(0x3c5)](r['_submenu']);}),o[jV(0x111)]();}}class Cc{constructor(o){const jX=bB;m(this,'ctx'),m(this,'contextMenuEl'),m(this,'currentDOMTreeMenu'),m(this,'isCustom',!0x1),this['ctx']=o,this['ctx']['contextMenuElement']?(this['contextMenuEl']=this['ctx']['contextMenuElement'],this['contextMenuEl']['className']='e-virt-table-main-menu',this['isCustom']=!0x0):(this['contextMenuEl']=document['createElement']('div'),this['isCustom']=!0x1),this[jX(0x3df)]['containerElement']['appendChild'](this['contextMenuEl']),this['init']();}['init'](){const jY=bB;this['ctx']['on'](jY(0x32b),()=>{this['hide']();}),this[jY(0x3df)]['on']('cellContextMenuClick',async(p,r)=>{const jZ=jY;if(this[jZ(0x3b1)]){this['contextMenuEl']['style']['display']='block',this['positionMenu'](r);return;}const {ENABLE_CONTEXT_MENU:u,CUSTOM_BODY_CONTEXT_MENU:w,CONTEXT_MENU:x,BEFORE_BODY_CONTEXT_MENU_METHOD:y}=this['ctx']['config'];let z=[...x,...w];if(y&&(z=await y({'list':z,'cell':p,'hide':this[jZ(0x37b)]['bind'](this)})),!u||z['length']===0x0)return;r['preventDefault']();const {xArr:C,yArr:D}=this['ctx']['selector'],[E,F]=C,[G,J]=D,{rowIndex:K,colIndex:L}=p;K>=G&&K<=J&&L>=E&&L<=F||this['ctx']['emit']('setSelectorCell',p,r),this['currentDOMTreeMenu']&&this[jZ(0x2e5)]['destroy'](),this['ctx']['contextMenuIng']=!0x0,this['currentDOMTreeMenu']=new nl(this['contextMenuEl'],z,{'onClick':(N,O)=>{const k0=jZ;O==='copy'?(this['ctx']['emit']('contextMenuCopy'),this['hide']()):O==='paste'?(this['ctx']['emit']('contextMenuPaste'),this['hide']()):O==='cut'?(this['ctx']['emit']('contextMenuCut'),this['hide']()):O===k0(0x206)?(this[k0(0x3df)]['emit'](k0(0x38e)),this['hide']()):N['event']&&N[k0(0x3b2)](r,{'hide':this['hide'][k0(0x412)](this),'cell':p});}}),this[jZ(0x2e5)]['positionMenu'](r);}),this['ctx']['on'](jY(0x3c6),async(r,u)=>{const k1=jY;if(this['isCustom']){this['contextMenuEl']['style']['display']='block',this['positionMenu'](u);return;}const {SELECTOR_AREA_MIN_X:w,SELECTOR_AREA_MAX_X:x,SELECTOR_AREA_MAX_X_OFFSET:z,BEFORE_HEADER_CONTEXT_MENU_METHOD:C}=this[k1(0x3df)]['config'],D=w,E=x||this['ctx'][k1(0x29b)]-z;if(r['colIndex']<D||r[k1(0x2c5)]>E)return;const {HEADER_CONTEXT_MENU:F,CUSTOM_HEADER_CONTEXT_MENU:G,ENABLE_HEADER_CONTEXT_MENU:J}=this['ctx']['config'];let K=[...F,...G];if(C&&(K=await C({'list':K,'cell':r,'hide':this['hide']['bind'](this)})),!J||K['length']===0x0)return;u['preventDefault']();const {xArr:L}=this['ctx']['selector'],[N,O]=L,{colIndex:R}=r;R>=N&&R<=O||(this['ctx']['focusCellHeader']=r,this['ctx']['emit']('selectCols',r)),this[k1(0x2e5)]&&this['currentDOMTreeMenu']['destroy']();const T=this['ctx']['database'][k1(0x1b2)](),V=K['map'](a0=>a0['value']==='visible'?{...a0,'children':this[k1(0x37a)](T)}:a0);this[k1(0x3df)][k1(0x2b6)]=!0x0,this['currentDOMTreeMenu']=new nl(this[k1(0x37e)],V,{'onClick':(a0,a1)=>{const k2=k1,{xArr:a2}=this['ctx']['selector'],[a3,a4]=a2;if(a1===k2(0x410)||a1==='fixedRight'||a1===k2(0x454)){const a5=this['ctx']['header']['allCellHeaders']['filter'](a6=>a6['colIndex']>=a3&&a6[k2(0x2c5)]<=a4)[k2(0x176)](a6=>a6['level']===0x0)['filter'](a6=>!a6['column'][k2(0x30e)])['map'](a6=>a6[k2(0x407)]);this[k2(0x3df)]['database']['setCustomHeaderFixedData'](a5,a1===k2(0x410)?'left':a1==='fixedRight'?'right':''),this[k2(0x37b)]();}else{if(a1===k2(0x37b)){const a6=this['ctx'][k2(0x3c0)]['leafCellHeaders']['filter'](a7=>a7['colIndex']>=a3&&a7['colIndex']<=a4)['filter'](a7=>!a7['children']['length'])['filter'](a7=>!a7['column']['hideDisabled'])['map'](a7=>a7['key']);a6['length']>0x0&&this['ctx']['database']['setCustomHeaderHideData'](a6,!0x0),this['hide']();}else{if(a1!=='visible'){if(a1['startsWith']('visible_')){if(!a0[k2(0x407)])return;if(a0['children']){const a8=this['getLeafKeys'](a0['children']);this['ctx'][k2(0x391)][k2(0x39b)](a8,!0x1);}else this['ctx'][k2(0x391)]['setCustomHeaderHideData']([a0['key']],!0x1);this['currentDOMTreeMenu']&&this['currentDOMTreeMenu']['removeSubMenuItem'](a1);const a7=this[k2(0x3df)]['database'][k2(0x1b2)]();ui(a7)[k2(0x176)](a9=>a9[k2(0x37b)])[k2(0x13f)]===0x0&&this['hide']();}else a1===k2(0x354)?(this['ctx'][k2(0x391)]['resetCustomHeader'](),this['hide']()):a0['event']&&a0['event'](u,{'hide':this['hide']['bind'](this),'cell':r});}}}}}),this['positionMenu'](u);}),this['ctx']['on']('click',()=>{this['hide']();}),this['ctx']['on']('onScroll',this['hide']['bind'](this)),this['ctx']['on']('resize',this['hide']['bind'](this));}[bB(0x3d6)](o){const k3=bB,p={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':o[k3(0x24b)],'left':o['clientX'],'right':o['clientX'],'bottom':o['clientY'],'x':o['clientX'],'y':o['clientY']}),'contextElement':document['body']};St(p,this['contextMenuEl'],()=>{Di(p,this['contextMenuEl'],{'placement':'right-start','middleware':[ki(),Oi(),Ft()]})['then'](({x:r,y:u})=>{const k4=b;this[k4(0x37e)]&&Object[k4(0x2f0)](this['contextMenuEl']['style'],{'left':r+'px','top':u+'px'});});});}['filterColumns'](o){const k5=bB,p=[];for(const r of o)if(r['children']&&r['children']['length']>0x0){const u=this['filterColumns'](r['children']);u['length']>0x0&&p['push']({'label':r['title'],'key':r['key'],'value':'visible_'+r['key'],'children':u});}else r['hide']&&p[k5(0x420)]({'label':r['title'],'value':k5(0x3dc)+r['key'],'key':r['key']});return p;}['getLeafKeys'](o){const k6=bB;return o['reduce']((p,r)=>(!r['children']||r['children']['length']===0x0?p[k6(0x420)](String(r['key'])):p['push'](...this[k6(0x3af)](r['children'])),p),[]);}[bB(0x37b)](){const k7=bB;this['currentDOMTreeMenu']&&(this[k7(0x2e5)]['destroy'](),this[k7(0x2e5)]=void 0x0),this['contextMenuEl']['style']['display']='none',this['ctx']['contextMenuIng']=!0x1;}['destroy'](){var o;this['hide'](),(o=this['contextMenuEl'])==null||o['remove']();}}class gc{constructor(o){const k8=bB;if(m(this,'ctx'),m(this,'loadingEl'),this['ctx']=o,this['ctx']['loadingElement'])this['loadingEl']=this['ctx']['loadingElement'];else{this['loadingEl']=document['createElement']('div');const p=document['createElement']('div');p[k8(0x474)]='e-virt-table-loading-spinner';const r=this['ctx']['icons']['getSvg']('loading');if(r){const w=new DOMParser()[k8(0x3ff)](r[k8(0x11d)],'image/svg+xml')['documentElement'];p[k8(0x191)](w);}const u=document['createElement']('p');u[k8(0x474)]='e-virt-table-loading-text',u['innerText']=this['ctx']['config']['LOADING_TEXT'],p['appendChild'](u),this['loadingEl']['appendChild'](p);}this['loadingEl']['className']='e-virt-table-loading',this['loadingEl']['style']['display']='none',this[k8(0x3df)]['containerElement']['appendChild'](this['loadingEl']);}['show'](){const k9=bB;this[k9(0x268)]['style']['display']='flex';}['hide'](){this['loadingEl']['style']['display']='none';}['destroy'](){const ka=bB;this['loadingEl'][ka(0x111)]();}}class Uc{constructor(o){const kb=bB;m(this,kb(0x3df)),m(this,'container'),m(this,'input'),m(this,'prevBtn'),m(this,'nextBtn'),m(this,'closeBtn'),m(this,'countEl'),m(this,kb(0x268)),m(this,'isVisible',!0x1),m(this,'searchResults',[]),m(this,'currentIndex',-0x1),m(this,kb(0x3fb),[]),m(this,'isComposing',!0x1),this['ctx']=o,this[kb(0x1b8)]=this['createContainer'](),this['ctx']['containerElement']['appendChild'](this[kb(0x1b8)]),this['bindEvents'](),this['ctx']['on']('keydown',p=>{const kd=kb;if(this['ctx']['config']['ENABLE_FINDER']&&!this['ctx']['editing']){if((p['ctrlKey']||p['metaKey'])&&p['code']===kd(0x311)){p['preventDefault'](),this['show']();return;}if(this[kd(0x3df)]['finding']){if(p['code']===kd(0x2f3)){p[kd(0x19a)](),this['hide']();return;}if(p['code']==='ArrowUp'||p['shiftKey']&&p['key']==='Enter'){p[kd(0x19a)](),this['navigatePrevious']();return;}if(p['code']==='ArrowDown'||p['key']==='Enter'){p['preventDefault'](),this[kd(0x212)]();return;}}}}),this['ctx']['on']('setSelector',()=>{const ke=kb;this[ke(0x37b)]();}),this['ctx']['on']('outsideMousedown',()=>{this['hide']();});}async['initSearchData'](){this['showLoading'](),this['searchData']=[],setTimeout(()=>{const kf=b,{allCellHeaders:o}=this['ctx']['header'];for(let u=0x0;u<o[kf(0x13f)];u++){const w=o[u];w&&['string','number']['includes'](typeof w['text'])&&this['searchData']['push']({'rowIndex':0x0,'colIndex':w['colIndex'],'text':''+w[kf(0x471)],'type':'header','colKey':w['key']});}const {maxColIndex:p,maxRowIndex:r}=this['ctx'];for(let x=0x0;x<=r;x++)for(let y=0x0;y<=p;y++){const z=this['ctx'][kf(0x391)][kf(0x1b7)](x,y,!0x1),C=z?.[kf(0x2da)]();['string','number']['includes'](typeof C)&&this['searchData']['push']({'rowIndex':x,'colIndex':y,'text':''+C,'type':'body'});}this['hideLoading']();},0x0);}[bB(0x1c4)](){const kg=bB,o=document['createElement']('div');o['className']='e-virt-table-finder-bar';const p=document['createElement'](kg(0x220));p['className']='e-virt-table-finder-bar-input-wrapper',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='e-virt-table-finder-bar-input',this['input']['placeholder']='',p['appendChild'](this['input']),this[kg(0x268)]=document[kg(0x244)]('div'),this['loadingEl']['className']='e-virt-table-finder-bar-loading';const r=jl;this['loadingEl']['innerHTML']=r,p['appendChild'](this['loadingEl']),this['countEl']=document['createElement'](kg(0x136)),this[kg(0x1e8)]['className']=kg(0x24e);const u=document[kg(0x244)](kg(0x220));return u['className']='e-virt-table-finder-bar-nav',this['prevBtn']=document['createElement']('button'),this[kg(0x255)]['className']='e-virt-table-finder-bar-nav-btn\x20prev-btn',this[kg(0x255)][kg(0x34a)]=gi,this['nextBtn']=document['createElement']('button'),this['nextBtn']['className']='e-virt-table-finder-bar-nav-btn\x20next-btn',this['nextBtn']['innerHTML']=gi,u['appendChild'](this['prevBtn']),u['appendChild'](this['nextBtn']),this[kg(0x3e9)]=document['createElement']('button'),this['closeBtn']['className']='e-virt-table-finder-bar-nav-btn\x20close-btn',this['closeBtn']['innerHTML']='×',o[kg(0x191)](p),o['appendChild'](this['countEl']),o['appendChild'](u),o['appendChild'](this['closeBtn']),o;}['bindEvents'](){const kj=bB;this['input']['addEventListener']('input',()=>{this['isComposing']||this['performSearch']();}),this['input']['addEventListener']('compositionstart',()=>{this['isComposing']=!0x0;}),this['input']['addEventListener']('compositionend',()=>{this['isComposing']=!0x1,this['performSearch']();}),this[kj(0x255)]['addEventListener']('click',()=>{this['navigatePrevious']();}),this[kj(0x41f)][kj(0x30b)]('click',()=>{const kk=kj;this[kk(0x212)]();}),this['closeBtn']['addEventListener']('click',()=>{const km=kj;this[km(0x37b)]();});}['performSearch'](){const o=this['input']['value']['trim']();if(this['searchResults']=[],this['currentIndex']=-0x1,!o){this['cearFinderBar'](),this['updateCount']();return;}this['showLoading'](),setTimeout(()=>{const kn=b;this['searchResults']=this['searchData']['filter'](p=>p['text']['toLowerCase']()['includes'](o['toLowerCase']())),this['searchResults']['length']>0x0?(this['currentIndex']=0x0,this[kn(0x22a)]()):this['cearFinderBar'](),this['updateCount'](),this['hideLoading']();},0x0);}['scrollToCurrentResult'](){const ko=bB;if(this['currentIndex']<0x0||this['currentIndex']>=this['searchResults']['length'])return;const o=this['searchResults'][this['currentIndex']];this[ko(0x3df)][ko(0x47a)]=o;const {rowIndex:p,colIndex:r}=o;this['ctx'][ko(0x376)]('scrollToIndex',p,r);}['navigateNext'](){const kp=bB;this['searchResults']['length']!==0x0&&(this['currentIndex']=(this[kp(0x222)]+0x1)%this[kp(0x439)]['length'],this['scrollToCurrentResult'](),this['updateCount']());}['navigatePrevious'](){this['searchResults']['length']!==0x0&&(this['currentIndex']=this['currentIndex']<=0x0?this['searchResults']['length']-0x1:this['currentIndex']-0x1,this['scrollToCurrentResult'](),this['updateCount']());}[bB(0x14f)](){const kq=bB;if(this['searchResults']['length']===0x0)this['input']['value']['trim']()?(this['countEl']['textContent']='0/0',this['countEl'][kq(0x116)]['add']('no-results')):(this['countEl']['textContent']='',this['countEl']['classList'][kq(0x111)]('no-results'));else{const o=this['currentIndex']+0x1,p=this['searchResults']['length'];this['countEl']['textContent']=o+'/'+p,this[kq(0x1e8)][kq(0x116)]['remove'](kq(0x3bd));}}['show'](){const kr=bB;this[kr(0x43c)]||(this['isVisible']=!0x0,this['ctx'][kr(0x1f9)]=!0x0,this['container'][kr(0x116)]['add']('show'),this['input']['focus'](),this['initSearchData']());}['showLoading'](){var o;this['loadingEl']['classList']['add']('show'),(o=this['loadingEl']['parentElement'])==null||o['classList']['add']('loading'),this['input']['readOnly']=!0x0;}['hideLoading'](){const kt=bB;var o;this['loadingEl']['classList']['remove']('show'),(o=this[kt(0x268)][kt(0x2d4)])==null||o[kt(0x116)]['remove']('loading'),this['input'][kt(0x14a)]=!0x1;}['cearFinderBar'](){const ku=bB;this['ctx'][ku(0x47a)]={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':ku(0x3c0)},this['ctx']['emit']('draw');}[bB(0x37b)](){const kv=bB;this['isVisible']&&(this['isVisible']=!0x1,this[kv(0x1b8)][kv(0x116)][kv(0x111)]('show'),this['ctx']['finding']=!0x1,this['input']['value']='',this['searchResults']=[],this['searchData']=[],this['currentIndex']=-0x1,this[kv(0x1cb)](),this[kv(0x3df)]['finderBar']={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['updateCount'](),this['ctx'][kv(0x376)]('draw'));}['destroy'](){const kw=bB;this['hide'](),this[kw(0x1b8)]['remove']();}}class jc{constructor(o,p){const kx=bB;m(this,'options'),m(this,'scroller'),m(this,'header'),m(this,'body'),m(this,'footer'),m(this,'selector'),m(this,'autofill'),m(this,'tooltip'),m(this,'editor'),m(this,'empty'),m(this,kx(0x30d)),m(this,'contextMenu'),m(this,kx(0x13c)),m(this,kx(0x47a)),m(this,'animationFrameId'),m(this,'ctx'),this['options']=p;const {overlayerElement:r,editorElement:u,emptyElement:w,contextMenuElement:x}=this['options'],y=this['createContainer'](o,r,u,w,x);this[kx(0x3df)]=new ks(y,this['options']),this['header']=new Ps(this['ctx']),this['footer']=new fs(this['ctx']),this['body']=new Hs(this['ctx']),this['scroller']=new Os(this['ctx']),this['selector']=new Qs(this['ctx']),this['autofill']=new vs(this['ctx']),this['tooltip']=new Fc(this['ctx']),this['empty']=new Rc(this['ctx']),this['editor']=new wc(this['ctx']),this[kx(0x30d)]=new zc(this[kx(0x3df)]),this['contextMenu']=new Cc(this['ctx']),this['loading']=new gc(this['ctx']),this['finderBar']=new Uc(this['ctx']),this[kx(0x3df)]['on']('draw',()=>{this['draw']();}),this['ctx']['on']('drawView',()=>{this['draw'](!0x0);}),this[kx(0x45a)]();}[bB(0x1c4)](p,r,u,w,x){const ky=bB;p[ky(0x474)]='e-virt-table-container';const y=document['createElement']('div'),z=document['createElement']('canvas'),C=r||document['createElement']('div');y[ky(0x474)]='e-virt-table-stage',p['tabIndex']=0x0,z['className']='e-virt-table-canvas',C['className']='e-virt-table-overlayer',C['setAttribute']('data-overlayer',r?'custom':ky(0x2b9));const D=u||document['createElement']('div');D['className']='e-virt-table-editor';const E=w,F=x;return y['appendChild'](z),y[ky(0x191)](C),p[ky(0x191)](y),{'containerElement':p,'stageElement':y,'canvasElement':z,'overlayerElement':C,'editorElement':D,'emptyElement':E,'contextMenuElement':F};}['doDraw'](o=!0x1){const kz=bB;this[kz(0x3c0)]['update'](),this[kz(0x35a)][kz(0x1d1)](),this['body']['update'](),this['ctx']['paint']['clear'](),this['body']['draw'](),this[kz(0x35a)]['draw'](),this['header']['draw'](),this['scroller']['draw'](),o||this['overlayer']['draw']();}['draw'](o=!0x1){this['animationFrameId']&&cancelAnimationFrame(this['animationFrameId']),this['animationFrameId']=requestAnimationFrame(()=>{const kA=b;this['doDraw'](o),this['body']['updateAutoHeight']()&&this[kA(0x20d)](o);});}['loadConfig'](o){const kB=bB;this['ctx']['config']['init'](o),this['ctx']['database']['init'](!0x1),this['header'][kB(0x27c)](),this['ctx']['emit']('draw');}['loadColumns'](o){const kC=bB;this['editor'][kC(0x478)](),this['ctx']['database']['setColumns'](o),this['header']['init'](),this['ctx']['emit']('draw');}['loadData'](o){const kD=bB;this[kD(0x219)]['doneEdit'](),this['ctx']['database']['setData'](o),this['header']['init'](),this[kD(0x2fe)]['hide'](),this[kD(0x3df)]['emit']('draw');}[bB(0x347)](o){const kE=bB;this[kE(0x3df)]['database']['setFooterData'](o),this['ctx']['emit'](kE(0x45a));}['setCustomHeader'](o,p=!0x0){const kF=bB;this['ctx']['database']['setCustomHeader'](o,p),this[kF(0x3c0)]['init'](),this['ctx']['emit']('draw');}['getCustomHeader'](){const kG=bB;return this['header'][kG(0x16d)]();}['showColumns'](o,p=!0x0){const kH=bB;this['ctx']['database'][kH(0x39b)](o,!p),this['header'][kH(0x27c)](),this['ctx']['emit']('draw');}['fixedColumns'](o,p){const kI=bB;this['ctx']['database']['setCustomHeaderFixedData'](o,p),this['header']['init'](),this[kI(0x3df)]['emit'](kI(0x45a));}['setLoading'](o){const kJ=bB;this['ctx'][kJ(0x13c)]=o,o?this['loading']['show']():this['loading']['hide']();}['on'](o,p){const kK=bB;this[kK(0x3df)]['on'](o,p);}['emit'](o,...p){this['ctx']['emit'](o,...p);}['off'](o,p){const kL=bB;this['ctx'][kL(0x364)](o,p);}['filterMethod'](o){const kM=bB;this['ctx']['database']['setFilterMethod'](o),this[kM(0x3df)]['database']['init'](!0x1),this['header']['init'](),this['ctx']['emit']('draw');}['editCell'](o,p){this['editor']['editCell'](o,p);}[bB(0x209)](o,p,r,u=!0x0,w=!0x0,x=!0x1){this['ctx']['database']['setItemValue'](o,p,r,u,w,x);}['batchSetItemValue'](o,p=!0x0){const kN=bB;this['ctx']['database'][kN(0x12b)](o,p);}[bB(0x1aa)](o,p,r,u=!0x0,w=!0x0){this['ctx']['setItemValueByEditor'](o,p,r,u,w),this['editor']['doneEdit']();}[bB(0x1e2)](o=null){const kO=bB,p=[0x0,this['ctx']['maxColIndex']],r=[0x0,this['ctx'][kO(0x369)]];return this[kO(0x230)]['clearSelectedData'](p,r,!0x1,o);}['clearEditor'](){this['editor']['clearEditor']();}['doLayout'](){const kP=bB;this['ctx']['emit'](kP(0x45a));}['getChangedData'](){const kQ=bB;return this[kQ(0x3df)][kQ(0x391)]['getChangedData']();}[bB(0x2bf)](){const kR=bB;return this[kR(0x3df)][kR(0x391)]['getChangedRows']();}['setCurrentRowByRowIndex'](o){const kS=bB;this['ctx']['currentCell']=this[kS(0x3df)]['database']['getVirtualBodyCell'](o,0x0),this['ctx']['emit']('draw');}['setCurrentRow'](o){const kT=bB,p=this['ctx'][kT(0x391)]['getColumnByColIndex'](0x0);p&&(this['ctx'][kT(0x1c9)]=this['ctx']['database']['getVirtualBodyCellByKey'](o,p['key']),this['ctx']['emit']('draw'));}['getCurrentRow'](){const kU=bB,o=this[kU(0x3df)]['currentCell'];return o?{'row':o['row'],'rowIndex':o[kU(0x466)],'rowKey':o[kU(0x459)]}:void 0x0;}['clearValidate'](){this['ctx']['database']['clearValidate'](),this['ctx']['emit']('draw');}['validateFields'](o,p=!0x0){return new Promise(async(r,u)=>{const kV=b;let w=[];for(let x=0x0;x<o['length'];x++){const {rowKey:y,key:z}=o[x],C=await this['ctx'][kV(0x391)]['getValidator'](y,z);Array['isArray'](C)&&C['length']&&w['push'](C);}if(w[kV(0x13f)]){if(u(w),p){const [D]=w;if(Array[kV(0x32c)](D)&&D['length']){const [E]=D,{rowKey:F,key:G}=E;this['scrollToRowkey'](F),this['scrollToColkey'](G);}}this['ctx']['emit']('draw');}else r([]),this['ctx']['emit'](kV(0x45a));});}async['validate'](o=!0x0){return new Promise(async(p,r)=>{const kW=b;try{const u=await this['getValidations']();p(u);}catch(w){if(o&&Array['isArray'](w)&&w['length']){const [x]=w;if(Array[kW(0x32c)](x)&&x['length']){const [y]=x,{rowKey:z,key:C}=y,D=this[kW(0x3df)]['database']['getRowForRowKey'](z);if(D){const {parentRowKeys:E=[]}=D;E&&E['length']&&this[kW(0x359)](E,!0x0);}this['scrollToRowkey'](z),this['scrollToColkey'](C);}}r(w);}});}['setValidations'](o){const kY=bB;if(o['forEach'](p=>{const kX=b,{rowIndex:r,key:u,message:w,rowKey:x}=p;if(r!==void 0x0&&x===void 0x0){const y=this['ctx'][kX(0x391)]['getRowKeyForRowIndex'](r);this['ctx']['database']['setValidationErrorByRowKey'](y,u,w);}x&&this['ctx']['database']['setValidationErrorByRowKey'](x,u,w);}),o&&Array['isArray'](o)&&o['length']){const [p]=o;if(p&&p[kY(0x459)])this[kY(0x43d)](p[kY(0x459)]),this['scrollToColkey'](p['key']);else{if(p&&p['rowIndex']!==void 0x0&&p['rowIndex']>=0x0&&p['key']){const {rowIndex:r,key:u}=p;this['scrollToRowIndex'](r),this['scrollToColkey'](u);}}}}['getValidations'](){const kZ=bB;return this['ctx'][kZ(0x465)][kZ(0x2af)]?new Promise(o=>{o([]);}):new Promise(async(o,p)=>{const l0=kZ,r=this['ctx']['database'][l0(0x438)](),u=this['ctx']['header']['leafCellHeaders'];let w=[];for(let x=0x0;x<r['length'];x++)for(let y=0x0;y<u['length'];y++){const z=this['ctx']['database'][l0(0x450)](r[x]),C=u[y]['key'],D=await this['ctx']['database']['getValidator'](z,C);Array['isArray'](D)&&D['length']&&w[l0(0x420)](D);}w['length']?(p(w),this['ctx']['emit']('draw')):(o([]),this['ctx']['emit']('draw'));});}['hasValidationError'](){return this['ctx']['database']['hasValidationError']();}[bB(0x37f)](o,p){this['scroller']['setScroll'](o,p);}[bB(0x2f8)](o){this['scroller']['setScrollX'](o);}['scrollToColkey'](o){this['scroller']['scrollToColkey'](o);}['scrollToRowkey'](o){this['scroller']['scrollToRowKey'](o);}[bB(0x1f8)](o){const l1=bB;this[l1(0x121)][l1(0x1f8)](o);}['scrollToRowIndex'](o){this['scroller']['scrollToRowIndex'](o);}['scrollYTo'](o){this['scroller']['setScrollY'](o);}[bB(0x359)](o,p=!0x0){const l2=bB;this[l2(0x3df)]['database']['setExpandRowKeys'](o,p);}[bB(0x24c)](){const l3=bB;return this['ctx'][l3(0x391)][l3(0x24c)]();}['clearSelection'](){const l4=bB;this['ctx']['database']['clearSelection'](),this[l4(0x3df)]['emit']('draw');}['toggleRowSelection'](o){const l5=bB,p=this['ctx']['database']['getRowKeyByItem'](o);this['ctx']['database'][l5(0x134)](p),this[l5(0x3df)]['emit']('draw');}['setSelectionByRows'](o,p=!0x0){const l6=bB;o[l6(0x446)](r=>{const u=this['ctx']['database']['getRowKeyByItem'](r);this['ctx']['database']['setRowSelection'](u,p,!0x1);}),this['ctx'][l6(0x376)](l6(0x162),this['getSelectionRows']()),this['ctx']['emit']('draw');}[bB(0x167)](o,p=!0x0){const l7=bB;o['forEach'](r=>{this['ctx']['database']['setRowSelection'](r,p,!0x1);}),this['ctx'][l7(0x376)]('selectionChange',this['getSelectionRows']()),this['ctx'][l7(0x376)](l7(0x45a));}['toggleAllSelection'](){const l8=bB;this[l8(0x3df)][l8(0x391)]['toggleAllSelection'](),this[l8(0x3df)]['emit']('draw');}['toggleRowExpand'](o,p){this['ctx']['database']['expandItem'](o,p),this['ctx']['emit']('draw');}['toggleExpandAll'](o){const l9=bB;this[l9(0x3df)]['database']['expandAll'](o),this['ctx'][l9(0x376)](l9(0x45a));}[bB(0x249)](){return this['ctx']['database']['getSelectionRows']();}['getPositionForRowIndex'](o){const la=bB;return this[la(0x3df)][la(0x391)][la(0x1db)](o);}['getCellValue'](o,p){const lb=bB;return this['ctx']['database'][lb(0x322)](o,p);}['getCellValueByIndex'](o,p){return this['ctx']['database']['getItemValueForRowIndexAndColIndex'](o,p);}[bB(0x154)](){this['ctx']['database']['clearSort']();}['contextMenuHide'](){this['contextMenu']['hide']();}['getUtils'](){return{'mergeColCell':Ms,'mergeRowCell':Ts,'getSpanArrByRow':Cl,'getSpanObjByColumn':gl};}['getColumnByKey'](o){const ld=bB;var p;return(p=this['ctx']['database'][ld(0x375)](o))==null?void 0x0:p[ld(0x260)];}['clearChangeData'](){const le=bB;this['ctx']['database']['clearChangeData'](),this['ctx']['emit'](le(0x45a));}['getReadonly'](o,p){const lf=bB;return this[lf(0x3df)][lf(0x391)]['getReadonly'](o,p);}[bB(0x242)](){const lg=bB;this['overlayer']['destroy'](),this['empty']['destroy'](),this['editor'][lg(0x242)](),this['tooltip']['destroy'](),this['selector']['destroy'](),this['autofill']['destroy'](),this[lg(0x3de)][lg(0x242)](),this['loading']['destroy'](),this['finderBar']['destroy'](),this['ctx']['destroy'](),this['ctx'][lg(0x2d7)]['remove']();}}const _l=bB(0x11e),bl=typeof window<'u'&&window['Blob']&&new Blob([Uint8Array['from'](atob(_l),o=>o[bB(0x47d)](0x0))],{'type':bB(0x430)});function Ec(){const lj=bB;let o;try{if(o=bl&&(window['URL']||window[lj(0x12a)])['createObjectURL'](bl),!o)throw'';return new Worker(o);}catch{return new Worker('data:application/javascript;base64,'+_l);}finally{o&&(window['URL']||window['webkitURL'])['revokeObjectURL'](o);}}const kc={'create'(){return l()['defaults'](()=>new Ec());}},$=0x1f4,al=0x3,Yl=0x1,Oc=bB(0x2cd),ql='__k',Ai=bB(0x245),Xt={'rowHeight':0x14,'colWidth':0x40},di={'Placeholder':0x0,'Loading':0x1,'Loaded':0x2},mt=()=>({'active':!0x1,'totalRows':0x0,'totalCols':0x0,'indexOffset':0x0,'defaults':{...Xt},'dataKeys':[],'rows':[],'columns':[],'cellCache':new Map(),'mergeStartMap':new Map(),'mergeCoveredMap':new Map(),'rowHeightCache':new Map(),'windowRows':new Map(),'windowCells':new Map(),'loadedWindows':new Set(),'loadingWindows':new Set()}),si=(o,p)=>o+'-'+p,wt=o=>'c'+o,Zt=o=>o?.[Ai]??di['Placeholder'],Dc=o=>{const p=new Array(o);for(let r=0x0;r<o;r+=0x1)p[r]={[ql]:''+r,[Ai]:di['Placeholder']};return p;},Pc=o=>o?Math['floor'](Math['max'](o-0x1,0x0)/$)*$:0x0,Pi=(o=0x0,p=0x0)=>Math['min'](Math['max'](o,0x0),Pc(p)),Wl=(o=0x0,p=0x0)=>{const lk=bB,r=Math[lk(0x1e3)](Math['max'](o,0x0)/$)*$;return Pi(r,p);},Hc=({startRow:p,endRow:r,direction:u,totalRows:w,far:x=!0x1})=>{const lm=bB,y=new Set(),z=Wl(p,w),C=Wl(r,w);for(let G=z;G<=C;G+=$)y['add'](G);const D=x?al+0x1:al,E=x?Yl+0x1:Yl,F=u>0x0?C:z;for(let J=0x1;J<=D;J+=0x1)y[lm(0x43f)](Pi(F+u*J*$,w));for(let K=0x1;K<=E;K+=0x1)y['add'](Pi(F-u*K*$,w));return Array[lm(0x47c)](y);},yl=(o,p,r,u)=>{const w=Math['min'](r+$,p);for(let x=r;x<w;x+=0x1){const y=o[x];y&&(y[Ai]=u);}};function Hi(o){'@babel/helpers - typeof';return Hi=typeof Symbol=='function'&&typeof Symbol['iterator']=='symbol'?function(p){return typeof p;}:function(p){return p&&typeof Symbol=='function'&&p['constructor']===Symbol&&p!==Symbol['prototype']?'symbol':typeof p;},Hi(o);}var fc=/^\s+/,Qc=/\s+$/;function M(o,p){const ln=bB;if(o=o||'',p=p||{},o instanceof M)return o;if(!(this instanceof M))return new M(o,p);var r=vc(o);this['_originalInput']=o,this['_r']=r['r'],this['_g']=r['g'],this['_b']=r['b'],this['_a']=r['a'],this[ln(0x221)]=Math[ln(0x2c8)](0x64*this['_a'])/0x64,this['_format']=p[ln(0x424)]||r[ln(0x424)],this['_gradientType']=p['gradientType'],this['_r']<0x1&&(this['_r']=Math['round'](this['_r'])),this['_g']<0x1&&(this['_g']=Math['round'](this['_g'])),this['_b']<0x1&&(this['_b']=Math['round'](this['_b'])),this[ln(0x1bc)]=r['ok'];}M['prototype']={'isDark':function(){return this['getBrightness']()<0x80;},'isLight':function(){return!this['isDark']();},'isValid':function(){const lo=bB;return this[lo(0x1bc)];},'getOriginalInput':function(){const lp=bB;return this[lp(0x1bd)];},'getFormat':function(){const lq=bB;return this[lq(0x1d0)];},'getAlpha':function(){return this['_a'];},'getBrightness':function(){var o=this['toRgb']();return(o['r']*0x12b+o['g']*0x24b+o['b']*0x72)/0x3e8;},'getLuminance':function(){const lr=bB;var o=this[lr(0x1c0)](),p,r,u,w,x,y;return p=o['r']/0xff,r=o['g']/0xff,u=o['b']/0xff,p<=0.03928?w=p/12.92:w=Math['pow']((p+0.055)/1.055,2.4),r<=0.03928?x=r/12.92:x=Math['pow']((r+0.055)/1.055,2.4),u<=0.03928?y=u/12.92:y=Math['pow']((u+0.055)/1.055,2.4),0.2126*w+0.7152*x+0.0722*y;},'setAlpha':function(o){const lt=bB;return this['_a']=$l(o),this['_roundA']=Math[lt(0x2c8)](0x64*this['_a'])/0x64,this;},'toHsv':function(){var o=Xl(this['_r'],this['_g'],this['_b']);return{'h':o['h']*0x168,'s':o['s'],'v':o['v'],'a':this['_a']};},'toHsvString':function(){const lu=bB;var o=Xl(this['_r'],this['_g'],this['_b']),p=Math['round'](o['h']*0x168),r=Math[lu(0x2c8)](o['s']*0x64),u=Math['round'](o['v']*0x64);return this['_a']==0x1?'hsv('+p+',\x20'+r+lu(0x24a)+u+'%)':lu(0x370)+p+',\x20'+r+lu(0x24a)+u+'%,\x20'+this['_roundA']+')';},'toHsl':function(){var o=Sl(this['_r'],this['_g'],this['_b']);return{'h':o['h']*0x168,'s':o['s'],'l':o['l'],'a':this['_a']};},'toHslString':function(){const lv=bB;var o=Sl(this['_r'],this['_g'],this['_b']),p=Math['round'](o['h']*0x168),r=Math['round'](o['s']*0x64),u=Math[lv(0x2c8)](o['l']*0x64);return this['_a']==0x1?'hsl('+p+',\x20'+r+'%,\x20'+u+'%)':'hsla('+p+',\x20'+r+'%,\x20'+u+'%,\x20'+this['_roundA']+')';},'toHex':function(o){return pl(this['_r'],this['_g'],this['_b'],o);},'toHexString':function(o){return'#'+this['toHex'](o);},'toHex8':function(o){return qc(this['_r'],this['_g'],this['_b'],this['_a'],o);},'toHex8String':function(o){return'#'+this['toHex8'](o);},'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']==0x1?'rgb('+Math['round'](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math['round'](this['_b'])+')':'rgba('+Math['round'](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math['round'](this['_b'])+',\x20'+this['_roundA']+')';},'toPercentageRgb':function(){return{'r':Math['round'](U(this['_r'],0xff)*0x64)+'%','g':Math['round'](U(this['_g'],0xff)*0x64)+'%','b':Math['round'](U(this['_b'],0xff)*0x64)+'%','a':this['_a']};},'toPercentageRgbString':function(){const lw=bB;return this['_a']==0x1?'rgb('+Math['round'](U(this['_r'],0xff)*0x64)+lw(0x24a)+Math[lw(0x2c8)](U(this['_g'],0xff)*0x64)+'%,\x20'+Math[lw(0x2c8)](U(this['_b'],0xff)*0x64)+'%)':'rgba('+Math['round'](U(this['_r'],0xff)*0x64)+lw(0x24a)+Math['round'](U(this['_g'],0xff)*0x64)+'%,\x20'+Math['round'](U(this['_b'],0xff)*0x64)+'%,\x20'+this['_roundA']+')';},'toName':function(){const lx=bB;return this['_a']===0x0?lx(0x223):this['_a']<0x1?!0x1:Ih[pl(this['_r'],this['_g'],this['_b'],!0x0)]||!0x1;},'toFilter':function(o){var p='#'+ul(this['_r'],this['_g'],this['_b'],this['_a']),r=p,u=this['_gradientType']?'GradientType\x20=\x201,\x20':'';if(o){var w=M(o);r='#'+ul(w['_r'],w['_g'],w['_b'],w['_a']);}return'progid:DXImageTransform.Microsoft.gradient('+u+'startColorstr='+p+',endColorstr='+r+')';},'toString':function(o){const ly=bB;var p=!!o;o=o||this['_format'];var r=!0x1,u=this['_a']<0x1&&this['_a']>=0x0,w=!p&&u&&(o==='hex'||o==='hex6'||o==='hex3'||o===ly(0x2b4)||o==='hex8'||o==='name');return w?o==='name'&&this['_a']===0x0?this['toName']():this['toRgbString']():(o===ly(0x184)&&(r=this['toRgbString']()),o==='prgb'&&(r=this['toPercentageRgbString']()),(o==='hex'||o==='hex6')&&(r=this['toHexString']()),o==='hex3'&&(r=this['toHexString'](!0x0)),o==='hex4'&&(r=this['toHex8String'](!0x0)),o==='hex8'&&(r=this['toHex8String']()),o==='name'&&(r=this['toName']()),o==='hsl'&&(r=this['toHslString']()),o==='hsv'&&(r=this['toHsvString']()),r||this[ly(0x17a)]());},'clone':function(){return M(this['toString']());},'_applyModification':function(o,p){const lz=bB;var r=o['apply'](null,[this]['concat']([][lz(0x3f9)]['call'](p)));return this['_r']=r['_r'],this['_g']=r['_g'],this['_b']=r['_b'],this[lz(0x2bb)](r['_a']),this;},'lighten':function(){return this['_applyModification'](lh,arguments);},'brighten':function(){return this['_applyModification'](sh,arguments);},'darken':function(){const lA=bB;return this[lA(0x352)](ch,arguments);},'desaturate':function(){return this['_applyModification']($c,arguments);},'saturate':function(){const lB=bB;return this[lB(0x352)](ih,arguments);},'greyscale':function(){return this['_applyModification'](th,arguments);},'spin':function(){const lC=bB;return this[lC(0x352)](hh,arguments);},'_applyCombination':function(o,p){const lD=bB;return o['apply'](null,[this][lD(0x451)]([]['slice']['call'](p)));},'analogous':function(){return this['_applyCombination'](mh,arguments);},'complement':function(){return this['_applyCombination'](eh,arguments);},'monochromatic':function(){return this['_applyCombination'](Zh,arguments);},'splitcomplement':function(){return this['_applyCombination'](dh,arguments);},'triad':function(){return this['_applyCombination'](Gl,[0x3]);},'tetrad':function(){return this['_applyCombination'](Gl,[0x4]);}},M[bB(0x204)]=function(o,p){const lE=bB;if(Hi(o)=='object'){var r={};for(var s in o)o[lE(0x440)](s)&&(s==='a'?r[s]=o[s]:r[s]=pi(o[s]));o=r;}return M(o,p);};function vc(o){const lF=bB;var p={'r':0x0,'g':0x0,'b':0x0},r=0x1,u=null,w=null,x=null,y=!0x1,z=!0x1;return typeof o=='string'&&(o=ah(o)),Hi(o)=='object'&&(li(o['r'])&&li(o['g'])&&li(o['b'])?(p=Bc(o['r'],o['g'],o['b']),y=!0x0,z=String(o['r'])['substr'](-0x1)==='%'?'prgb':'rgb'):li(o['h'])&&li(o['s'])&&li(o['v'])?(u=pi(o['s']),w=pi(o['v']),p=_c(o['h'],u,w),y=!0x0,z=lF(0x42a)):li(o['h'])&&li(o['s'])&&li(o['l'])&&(u=pi(o['s']),x=pi(o['l']),p=Ac(o['h'],u,x),y=!0x0,z='hsl'),o[lF(0x440)]('a')&&(r=o['a'])),r=$l(r),{'ok':y,'format':o['format']||z,'r':Math['min'](0xff,Math['max'](p['r'],0x0)),'g':Math['min'](0xff,Math['max'](p['g'],0x0)),'b':Math['min'](0xff,Math['max'](p['b'],0x0)),'a':r};}function Bc(o,p,r){return{'r':U(o,0xff)*0xff,'g':U(p,0xff)*0xff,'b':U(r,0xff)*0xff};}function Sl(o,p,r){const lG=bB;o=U(o,0xff),p=U(p,0xff),r=U(r,0xff);var u=Math[lG(0x181)](o,p,r),w=Math[lG(0x2bc)](o,p,r),x,y,z=(u+w)/0x2;if(u==w)x=y=0x0;else{var C=u-w;switch(y=z>0.5?C/(0x2-u-w):C/(u+w),u){case o:x=(p-r)/C+(p<r?0x6:0x0);break;case p:x=(r-o)/C+0x2;break;case r:x=(o-p)/C+0x4;break;}x/=0x6;}return{'h':x,'s':y,'l':z};}function Ac(o,p,r){var u,w,x;o=U(o,0x168),p=U(p,0x64),r=U(r,0x64);function y(D,E,F){return F<0x0&&(F+=0x1),F>0x1&&(F-=0x1),F<0x1/0x6?D+(E-D)*0x6*F:F<0x1/0x2?E:F<0x2/0x3?D+(E-D)*(0x2/0x3-F)*0x6:D;}if(p===0x0)u=w=x=r;else{var z=r<0.5?r*(0x1+p):r+p-r*p,C=0x2*r-z;u=y(C,z,o+0x1/0x3),w=y(C,z,o),x=y(C,z,o-0x1/0x3);}return{'r':u*0xff,'g':w*0xff,'b':x*0xff};}function Xl(o,p,r){const lH=bB;o=U(o,0xff),p=U(p,0xff),r=U(r,0xff);var u=Math[lH(0x181)](o,p,r),w=Math['min'](o,p,r),x,y,z=u,C=u-w;if(y=u===0x0?0x0:C/u,u==w)x=0x0;else{switch(u){case o:x=(p-r)/C+(p<r?0x6:0x0);break;case p:x=(r-o)/C+0x2;break;case r:x=(o-p)/C+0x4;break;}x/=0x6;}return{'h':x,'s':y,'v':z};}function _c(p,r,u){p=U(p,0x168)*0x6,r=U(r,0x64),u=U(u,0x64);var w=Math['floor'](p),x=p-w,y=u*(0x1-r),z=u*(0x1-x*r),C=u*(0x1-(0x1-x)*r),D=w%0x6,E=[u,z,y,y,C,u][D],F=[C,u,u,z,y,y][D],G=[y,y,C,u,u,z][D];return{'r':E*0xff,'g':F*0xff,'b':G*0xff};}function pl(o,p,r,u){const lI=bB;var w=[v(Math[lI(0x2c8)](o)['toString'](0x10)),v(Math['round'](p)[lI(0x314)](0x10)),v(Math['round'](r)['toString'](0x10))];return u&&w[0x0]['charAt'](0x0)==w[0x0][lI(0x41c)](0x1)&&w[0x1]['charAt'](0x0)==w[0x1][lI(0x41c)](0x1)&&w[0x2]['charAt'](0x0)==w[0x2]['charAt'](0x1)?w[0x0]['charAt'](0x0)+w[0x1][lI(0x41c)](0x0)+w[0x2]['charAt'](0x0):w['join']('');}function qc(o,p,r,u,w){const lJ=bB;var x=[v(Math[lJ(0x2c8)](o)['toString'](0x10)),v(Math['round'](p)['toString'](0x10)),v(Math[lJ(0x2c8)](r)[lJ(0x314)](0x10)),v(is(u))];return w&&x[0x0]['charAt'](0x0)==x[0x0]['charAt'](0x1)&&x[0x1]['charAt'](0x0)==x[0x1]['charAt'](0x1)&&x[0x2]['charAt'](0x0)==x[0x2]['charAt'](0x1)&&x[0x3][lJ(0x41c)](0x0)==x[0x3]['charAt'](0x1)?x[0x0]['charAt'](0x0)+x[0x1][lJ(0x41c)](0x0)+x[0x2]['charAt'](0x0)+x[0x3][lJ(0x41c)](0x0):x['join']('');}function ul(o,p,r,u){const lK=bB;var w=[v(is(u)),v(Math[lK(0x2c8)](o)[lK(0x314)](0x10)),v(Math['round'](p)[lK(0x314)](0x10)),v(Math['round'](r)['toString'](0x10))];return w['join']('');}M['equals']=function(o,p){return!o||!p?!0x1:M(o)['toRgbString']()==M(p)['toRgbString']();},M['random']=function(){const lL=bB;return M['fromRatio']({'r':Math['random'](),'g':Math['random'](),'b':Math[lL(0x411)]()});};function a(){const mO=['bind','onWheel','parseFloat','code','size','drawTipLine','REQUIRED_COLOR','fffafa','active','ownerDocument','charAt','Merged\x20cells\x20cannot\x20span\x20paste\x20data','exec','nextBtn','push','zIndex','ffdab9','cellShowTooltip','format','pointer','resize','sumHeight','sortBy','clearAutofill','hsv','setScrollY','cautious','indexOf','buffer','back','text/javascript;charset=utf-8','clearBufferData','<svg\x20t=\x221722595946663\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224865\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x22\x20p-id=\x224866\x22></path><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20fill=\x22#DDE0EA\x22\x20p-id=\x224867\x22></path></svg>','4169e1','drawSortImageWidth','sortData','contains','TREE_LINE','getAllRowsData','searchResults','red','selectCols','isVisible','scrollToRowkey','hasChildren','add','hasOwnProperty','drawText','render','visualViewport','cells','font','forEach','drawSelectionImageName','renderRows','fixedRight','scrollHeight','selectorArrStr','renderLeafCellHeaders','click','getOverlayerAutoHeightMap','structure','getRowKeyByItem','concat','fixedLeftWidth','ICON_SELECT_COLOR','fixedNone','checkbox-disabled','handleContextMenu','contain','ENABLE_AUTO_THEME','rowKey','draw','toLocaleString','fill','right-start','drawFixedContainer','drawSortImageX','loadConfig','trim','cachedSummary','4px','selectionMap','config','rowIndex','cellType','_submenu','423222DeJLBN','setRowSelectionByParent','editorEl','canvasElement','columns','lineDashOffset','checkbox-check-disabled','drawBottomLine','text','containerRect','.e-virt-table-submenu','className','drawTextColor','Enter','createMenuItem','doneEdit','scrollY','finderBar','findMenuItem','from','charCodeAt','hoverIconName','getDocumentElement','mouseleave','getVirtualBodyCellByKey','remove','#4E5969','then','selectorMove','008b8b','classList','match','columnResizing','normal','lastCenterColIndex','autofill','crossAxis','svg','KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOy8qISB4bHN4LmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi92YXIgSHI9MTIwMCxudCxRZj1bODc0LDkzMiw5MzYsOTQ5LDk1MCwxMjUwLDEyNTEsMTI1MiwxMjUzLDEyNTQsMTI1NSwxMjU2LDEyNTcsMTI1OCwxZTRdLFYwPXswOjEyNTIsMTo2NTAwMSwyOjY1MDAxLDc3OjFlNCwxMjg6OTMyLDEyOTo5NDksMTMwOjEzNjEsMTM0OjkzNiwxMzY6OTUwLDE2MToxMjUzLDE2MjoxMjU0LDE2MzoxMjU4LDE3NzoxMjU1LDE3ODoxMjU2LDE4NjoxMjU3LDIwNDoxMjUxLDIyMjo4NzQsMjM4OjEyNTAsMjU1OjEyNTIsNjk6Njk2OX0sRzA9ZnVuY3Rpb24oZSl7UWYuaW5kZXhPZihlKSE9LTEmJihWMFswXT1lKX07ZnVuY3Rpb24gZWMoKXtHMCgxMjUyKX12YXIgWXI9ZnVuY3Rpb24oZSl7SHI9ZSxHMChlKX07ZnVuY3Rpb24gV24oKXtZcigxMjAwKSxlYygpfWZ1bmN0aW9uIFZuKGUpe2Zvcih2YXIgYT1bXSxyPTAsdD1lLmxlbmd0aDtyPHQ7KytyKWFbcl09ZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIEduKGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aD4+MTsrK3IpYVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdCgyKnIpKyhlLmNoYXJDb2RlQXQoMipyKzEpPDw4KSk7cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gcmMoZSl7Zm9yKHZhciBhPVtdLHI9MDtyPGUubGVuZ3RoPj4xOysrcilhW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZVsyKnJdKyhlWzIqcisxXTw8OCkpO3JldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIFhuKGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aD4+MTsrK3IpYVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdCgyKnIrMSkrKGUuY2hhckNvZGVBdCgyKnIpPDw4KSk7cmV0dXJuIGEuam9pbigiIil9dmFyIEZ0PWZ1bmN0aW9uKGUpe3ZhciBhPWUuY2hhckNvZGVBdCgwKSxyPWUuY2hhckNvZGVBdCgxKTtyZXR1cm4gYT09MjU1JiZyPT0yNTQ/R24oZS5zbGljZSgyKSk6YT09MjU0JiZyPT0yNTU/WG4oZS5zbGljZSgyKSk6YT09NjUyNzk/ZS5zbGljZSgxKTplfSx0MD1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShhKX0sem49ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYSl9LGFjPW51bGwsV3I9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IjtmdW5jdGlvbiAkbihlKXtmb3IodmFyIGE9IiIscj0wLHQ9MCxuPTAsaT0wLGY9MCxzPTAsYz0wLG89MDtvPGUubGVuZ3RoOylyPWUuY2hhckNvZGVBdChvKyspLGk9cj4+Mix0PWUuY2hhckNvZGVBdChvKyspLGY9KHImMyk8PDR8dD4+NCxuPWUuY2hhckNvZGVBdChvKyspLHM9KHQmMTUpPDwyfG4+PjYsYz1uJjYzLGlzTmFOKHQpP3M9Yz02NDppc05hTihuKSYmKGM9NjQpLGErPVdyLmNoYXJBdChpKStXci5jaGFyQXQoZikrV3IuY2hhckF0KHMpK1dyLmNoYXJBdChjKTtyZXR1cm4gYX1mdW5jdGlvbiBYMChlKXtmb3IodmFyIGE9IiIscj0wLHQ9MCxuPTAsaT0wLGY9MCxzPTAsYz0wLG89MDtvPGUubGVuZ3RoOylyPWVbbysrXSxpPXI+PjIsdD1lW28rK10sZj0ociYzKTw8NHx0Pj40LG49ZVtvKytdLHM9KHQmMTUpPDwyfG4+PjYsYz1uJjYzLGlzTmFOKHQpP3M9Yz02NDppc05hTihuKSYmKGM9NjQpLGErPVdyLmNoYXJBdChpKStXci5jaGFyQXQoZikrV3IuY2hhckF0KHMpK1dyLmNoYXJBdChjKTtyZXR1cm4gYX1mdW5jdGlvbiBEcihlKXt2YXIgYT0iIixyPTAsdD0wLG49MCxpPTAsZj0wLHM9MCxjPTA7aWYoZS5zbGljZSgwLDUpPT0iZGF0YToiKXt2YXIgbz1lLnNsaWNlKDAsMTAyNCkuaW5kZXhPZigiO2Jhc2U2NCwiKTtvPi0xJiYoZT1lLnNsaWNlKG8rOCkpfWU9ZS5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoOylpPVdyLmluZGV4T2YoZS5jaGFyQXQobysrKSksZj1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLHI9aTw8MnxmPj40LGErPVN0cmluZy5mcm9tQ2hhckNvZGUocikscz1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLHQ9KGYmMTUpPDw0fHM+PjIscyE9PTY0JiYoYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSksYz1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLG49KHMmMyk8PDZ8YyxjIT09NjQmJihhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTtyZXR1cm4gYX12YXIgTmU9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJ1ZmZlcjwidSImJnR5cGVvZiBwcm9jZXNzPCJ1IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM8InUiJiYhIXByb2Nlc3MudmVyc2lvbnMubm9kZX0oKSxFYT1mdW5jdGlvbigpe2lmKHR5cGVvZiBCdWZmZXI8InUiKXt2YXIgZT0hQnVmZmVyLmZyb207aWYoIWUpdHJ5e0J1ZmZlci5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2h7ZT0hMH1yZXR1cm4gZT9mdW5jdGlvbihhLHIpe3JldHVybiByP25ldyBCdWZmZXIoYSxyKTpuZXcgQnVmZmVyKGEpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlcil9cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxUdD1mdW5jdGlvbigpe2lmKHR5cGVvZiBCdWZmZXI+InUiKXJldHVybiExO3ZhciBlPUVhKFs2NSwwXSk7aWYoIWUpcmV0dXJuITE7dmFyIGE9ZS50b1N0cmluZygidXRmMTZsZSIpO3JldHVybiBhLmxlbmd0aD09MX0oKTtmdW5jdGlvbiBBYShlKXtyZXR1cm4gTmU/QnVmZmVyLmFsbG9jP0J1ZmZlci5hbGxvYyhlKTpuZXcgQnVmZmVyKGUpOnR5cGVvZiBVaW50OEFycmF5PCJ1Ij9uZXcgVWludDhBcnJheShlKTpuZXcgQXJyYXkoZSl9ZnVuY3Rpb24gS24oZSl7cmV0dXJuIE5lP0J1ZmZlci5hbGxvY1Vuc2FmZT9CdWZmZXIuYWxsb2NVbnNhZmUoZSk6bmV3IEJ1ZmZlcihlKTp0eXBlb2YgVWludDhBcnJheTwidSI/bmV3IFVpbnQ4QXJyYXkoZSk6bmV3IEFycmF5KGUpfXZhciBJcj1mdW5jdGlvbihhKXtyZXR1cm4gTmU/RWEoYSwiYmluYXJ5Iik6YS5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLmNoYXJDb2RlQXQoMCkmMjU1fSl9O2Z1bmN0aW9uIGZhKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfSkuam9pbigiIik7Zm9yKHZhciBhPVtdLHI9MDtyPGUubGVuZ3RoOysrcilhW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtyXSk7cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gejAoZSl7aWYodHlwZW9mIEFycmF5QnVmZmVyPiJ1Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIik7aWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiB6MChuZXcgVWludDhBcnJheShlKSk7Zm9yKHZhciBhPW5ldyBBcnJheShlLmxlbmd0aCkscj0wO3I8ZS5sZW5ndGg7KytyKWFbcl09ZVtyXTtyZXR1cm4gYX12YXIgeWE9TmU/ZnVuY3Rpb24oZSl7cmV0dXJuIEJ1ZmZlci5jb25jYXQoZS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hOkVhKGEpfSkpfTpmdW5jdGlvbihlKXtpZih0eXBlb2YgVWludDhBcnJheTwidSIpe3ZhciBhPTAscj0wO2ZvcihhPTA7YTxlLmxlbmd0aDsrK2Epcis9ZVthXS5sZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkociksbj0wO2ZvcihhPTAscj0wO2E8ZS5sZW5ndGg7cis9biwrK2Epbj1lW2FdLmxlbmd0aCxlW2FdaW5zdGFuY2VvZiBVaW50OEFycmF5P3Quc2V0KGVbYV0scik6dHlwZW9mIGVbYV09PSJzdHJpbmciP3Quc2V0KG5ldyBVaW50OEFycmF5KElyKGVbYV0pKSxyKTp0LnNldChuZXcgVWludDhBcnJheShlW2FdKSxyKTtyZXR1cm4gdH1yZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sZS5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSk/aTpbXS5zbGljZS5jYWxsKGkpfSkpfTtmdW5jdGlvbiB0YyhlKXtmb3IodmFyIGE9W10scj0wLHQ9ZS5sZW5ndGgrMjUwLG49QWEoZS5sZW5ndGgrMjU1KSxpPTA7aTxlLmxlbmd0aDsrK2kpe3ZhciBmPWUuY2hhckNvZGVBdChpKTtpZihmPDEyOCluW3IrK109ZjtlbHNlIGlmKGY8MjA0OCluW3IrK109MTkyfGY+PjYmMzEsbltyKytdPTEyOHxmJjYzO2Vsc2UgaWYoZj49NTUyOTYmJmY8NTczNDQpe2Y9KGYmMTAyMykrNjQ7dmFyIHM9ZS5jaGFyQ29kZUF0KCsraSkmMTAyMztuW3IrK109MjQwfGY+PjgmNyxuW3IrK109MTI4fGY+PjImNjMsbltyKytdPTEyOHxzPj42JjE1fChmJjMpPDw0LG5bcisrXT0xMjh8cyY2M31lbHNlIG5bcisrXT0yMjR8Zj4+MTImMTUsbltyKytdPTEyOHxmPj42JjYzLG5bcisrXT0xMjh8ZiY2MztyPnQmJihhLnB1c2gobi5zbGljZSgwLHIpKSxyPTAsbj1BYSg2NTUzNSksdD02NTUzMCl9cmV0dXJuIGEucHVzaChuLnNsaWNlKDAscikpLHlhKGEpfXZhciBTcj0vXHUwMDAwL2csRXQ9L1tcdTAwMDEtXHUwMDA2XS9nO2Z1bmN0aW9uIGl0KGUpe2Zvcih2YXIgYT0iIixyPWUubGVuZ3RoLTE7cj49MDspYSs9ZS5jaGFyQXQoci0tKTtyZXR1cm4gYX1mdW5jdGlvbiBKcihlLGEpe3ZhciByPSIiK2U7cmV0dXJuIHIubGVuZ3RoPj1hP3I6UGUoIjAiLGEtci5sZW5ndGgpK3J9ZnVuY3Rpb24gJDAoZSxhKXt2YXIgcj0iIitlO3JldHVybiByLmxlbmd0aD49YT9yOlBlKCIgIixhLXIubGVuZ3RoKStyfWZ1bmN0aW9uIG4wKGUsYSl7dmFyIHI9IiIrZTtyZXR1cm4gci5sZW5ndGg+PWE/cjpyK1BlKCIgIixhLXIubGVuZ3RoKX1mdW5jdGlvbiBuYyhlLGEpe3ZhciByPSIiK01hdGgucm91bmQoZSk7cmV0dXJuIHIubGVuZ3RoPj1hP3I6UGUoIjAiLGEtci5sZW5ndGgpK3J9ZnVuY3Rpb24gaWMoZSxhKXt2YXIgcj0iIitlO3JldHVybiByLmxlbmd0aD49YT9yOlBlKCIwIixhLXIubGVuZ3RoKStyfXZhciBqbj1NYXRoLnBvdygyLDMyKTtmdW5jdGlvbiBzdChlLGEpe2lmKGU+am58fGU8LWpuKXJldHVybiBuYyhlLGEpO3ZhciByPU1hdGgucm91bmQoZSk7cmV0dXJuIGljKHIsYSl9ZnVuY3Rpb24gaTAoZSxhKXtyZXR1cm4gYT1hfHwwLGUubGVuZ3RoPj03K2EmJihlLmNoYXJDb2RlQXQoYSl8MzIpPT09MTAzJiYoZS5jaGFyQ29kZUF0KGErMSl8MzIpPT09MTAxJiYoZS5jaGFyQ29kZUF0KGErMil8MzIpPT09MTEwJiYoZS5jaGFyQ29kZUF0KGErMyl8MzIpPT09MTAxJiYoZS5jaGFyQ29kZUF0KGErNCl8MzIpPT09MTE0JiYoZS5jaGFyQ29kZUF0KGErNSl8MzIpPT09OTcmJihlLmNoYXJDb2RlQXQoYSs2KXwzMik9PT0xMDh9dmFyIFluPVtbIlN1biIsIlN1bmRheSJdLFsiTW9uIiwiTW9uZGF5Il0sWyJUdWUiLCJUdWVzZGF5Il0sWyJXZWQiLCJXZWRuZXNkYXkiXSxbIlRodSIsIlRodXJzZGF5Il0sWyJGcmkiLCJGcmlkYXkiXSxbIlNhdCIsIlNhdHVyZGF5Il1dLEswPVtbIkoiLCJKYW4iLCJKYW51YXJ5Il0sWyJGIiwiRmViIiwiRmVicnVhcnkiXSxbIk0iLCJNYXIiLCJNYXJjaCJdLFsiQSIsIkFwciIsIkFwcmlsIl0sWyJNIiwiTWF5IiwiTWF5Il0sWyJKIiwiSnVuIiwiSnVuZSJdLFsiSiIsIkp1bCIsIkp1bHkiXSxbIkEiLCJBdWciLCJBdWd1c3QiXSxbIlMiLCJTZXAiLCJTZXB0ZW1iZXIiXSxbIk8iLCJPY3QiLCJPY3RvYmVyIl0sWyJOIiwiTm92IiwiTm92ZW1iZXIiXSxbIkQiLCJEZWMiLCJEZWNlbWJlciJdXTtmdW5jdGlvbiBzYyhlKXtyZXR1cm4gZXx8KGU9e30pLGVbMF09IkdlbmVyYWwiLGVbMV09IjAiLGVbMl09IjAuMDAiLGVbM109IiMsIyMwIixlWzRdPSIjLCMjMC4wMCIsZVs5XT0iMCUiLGVbMTBdPSIwLjAwJSIsZVsxMV09IjAuMDBFKzAwIixlWzEyXT0iIyA/Lz8iLGVbMTNdPSIjID8/Lz8/IixlWzE0XT0ibS9kL3l5IixlWzE1XT0iZC1tbW0teXkiLGVbMTZdPSJkLW1tbSIsZVsxN109Im1tbS15eSIsZVsxOF09Img6bW0gQU0vUE0iLGVbMTldPSJoOm1tOnNzIEFNL1BNIixlWzIwXT0iaDptbSIsZVsyMV09Img6bW06c3MiLGVbMjJdPSJtL2QveXkgaDptbSIsZVszN109IiMsIyMwIDsoIywjIzApIixlWzM4XT0iIywjIzAgO1tSZWRdKCMsIyMwKSIsZVszOV09IiMsIyMwLjAwOygjLCMjMC4wMCkiLGVbNDBdPSIjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCkiLGVbNDVdPSJtbTpzcyIsZVs0Nl09IltoXTptbTpzcyIsZVs0N109Im1tc3MuMCIsZVs0OF09IiMjMC4wRSswIixlWzQ5XT0iQCIsZVs1Nl09JyLkuIrljYgv5LiL5Y2IICJoaCLmmYIibW0i5YiGInNzIuenkiAiJyxlfXZhciBUZT17MDoiR2VuZXJhbCIsMToiMCIsMjoiMC4wMCIsMzoiIywjIzAiLDQ6IiMsIyMwLjAwIiw5OiIwJSIsMTA6IjAuMDAlIiwxMToiMC4wMEUrMDAiLDEyOiIjID8vPyIsMTM6IiMgPz8vPz8iLDE0OiJtL2QveXkiLDE1OiJkLW1tbS15eSIsMTY6ImQtbW1tIiwxNzoibW1tLXl5IiwxODoiaDptbSBBTS9QTSIsMTk6Img6bW06c3MgQU0vUE0iLDIwOiJoOm1tIiwyMToiaDptbTpzcyIsMjI6Im0vZC95eSBoOm1tIiwzNzoiIywjIzAgOygjLCMjMCkiLDM4OiIjLCMjMCA7W1JlZF0oIywjIzApIiwzOToiIywjIzAuMDA7KCMsIyMwLjAwKSIsNDA6IiMsIyMwLjAwO1tSZWRdKCMsIyMwLjAwKSIsNDU6Im1tOnNzIiw0NjoiW2hdOm1tOnNzIiw0NzoibW1zcy4wIiw0ODoiIyMwLjBFKzAiLDQ5OiJAIiw1NjonIuS4iuWNiC/kuIvljYggImhoIuaZgiJtbSLliIYic3Mi56eSICInfSxKbj17NTozNyw2OjM4LDc6MzksODo0MCwyMzowLDI0OjAsMjU6MCwyNjowLDI3OjE0LDI4OjE0LDI5OjE0LDMwOjE0LDMxOjE0LDUwOjE0LDUxOjE0LDUyOjE0LDUzOjE0LDU0OjE0LDU1OjE0LDU2OjE0LDU3OjE0LDU4OjE0LDU5OjEsNjA6Miw2MTozLDYyOjQsNjc6OSw2ODoxMCw2OToxMiw3MDoxMyw3MToxNCw3MjoxNCw3MzoxNSw3NDoxNiw3NToxNyw3NjoyMCw3NzoyMSw3ODoyMiw3OTo0NSw4MDo0Niw4MTo0Nyw4MjowfSxmYz17NTonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjM6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDY6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNjQ6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNzonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsNjU6JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDg6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNjY6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNDE6J18oKiAjLCMjMF8pO18oKiBcXCgjLCMjMFxcKTtfKCogIi0iXyk7XyhAXyknLDQyOidfKCIkIiogIywjIzBfKTtfKCIkIiogXFwoIywjIzBcXCk7XygiJCIqICItIl8pO18oQF8pJyw0MzonXygqICMsIyMwLjAwXyk7XygqIFxcKCMsIyMwLjAwXFwpO18oKiAiLSI/P18pO18oQF8pJyw0NDonXygiJCIqICMsIyMwLjAwXyk7XygiJCIqIFxcKCMsIyMwLjAwXFwpO18oIiQiKiAiLSI/P18pO18oQF8pJ307ZnVuY3Rpb24gczAoZSxhLHIpe2Zvcih2YXIgdD1lPDA/LTE6MSxuPWUqdCxpPTAsZj0xLHM9MCxjPTEsbz0wLGw9MCx1PU1hdGguZmxvb3Iobik7bzxhJiYodT1NYXRoLmZsb29yKG4pLHM9dSpmK2ksbD11Km8rYywhKG4tdTw1ZS04KSk7KW49MS8obi11KSxpPWYsZj1zLGM9byxvPWw7aWYobD5hJiYobz5hPyhsPWMscz1pKToobD1vLHM9ZikpLCFyKXJldHVyblswLHQqcyxsXTt2YXIgeD1NYXRoLmZsb29yKHQqcy9sKTtyZXR1cm5beCx0KnMteCpsLGxdfWZ1bmN0aW9uIGNjKGUpe3ZhciBhPWUudG9QcmVjaXNpb24oMTYpO2lmKGEuaW5kZXhPZigiZSIpPi0xKXt2YXIgcj1hLnNsaWNlKDAsYS5pbmRleE9mKCJlIikpO3JldHVybiByPXIuaW5kZXhPZigiLiIpPi0xP3Iuc2xpY2UoMCxyLnNsaWNlKDAsMik9PSIwLiI/MTc6MTYpOnIuc2xpY2UoMCwxNSkrUGUoIjAiLHIubGVuZ3RoLTE1KSxyK2Euc2xpY2UoYS5pbmRleE9mKCJlIikpfXZhciB0PWEuaW5kZXhPZigiLiIpPi0xP2Euc2xpY2UoMCxhLnNsaWNlKDAsMik9PSIwLiI/MTc6MTYpOmEuc2xpY2UoMCwxNSkrUGUoIjAiLGEubGVuZ3RoLTE1KTtyZXR1cm4gTnVtYmVyKHQpfWZ1bmN0aW9uIGNhKGUsYSxyKXtpZihlPjI5NTg0NjV8fGU8MClyZXR1cm4gbnVsbDtlPWNjKGUpO3ZhciB0PWV8MCxuPU1hdGguZmxvb3IoODY0MDAqKGUtdCkpLGk9MCxmPVtdLHM9e0Q6dCxUOm4sdTo4NjQwMCooZS10KS1uLHk6MCxtOjAsZDowLEg6MCxNOjAsUzowLHE6MH07aWYoTWF0aC5hYnMocy51KTwxZS02JiYocy51PTApLGEmJmEuZGF0ZTE5MDQmJih0Kz0xNDYyKSxzLnU+Ljk5OTkmJihzLnU9MCwrK249PTg2NDAwJiYocy5UPW49MCwrK3QsKytzLkQpKSx0PT09NjApZj1yP1sxMzE3LDEwLDI5XTpbMTkwMCwyLDI5XSxpPTM7ZWxzZSBpZih0PT09MClmPXI/WzEzMTcsOCwyOV06WzE5MDAsMSwwXSxpPTY7ZWxzZXt0PjYwJiYtLXQ7dmFyIGM9bmV3IERhdGUoMTkwMCwwLDEpO2Muc2V0RGF0ZShjLmdldERhdGUoKSt0LTEpLGY9W2MuZ2V0RnVsbFllYXIoKSxjLmdldE1vbnRoKCkrMSxjLmdldERhdGUoKV0saT1jLmdldERheSgpLHQ8NjAmJihpPShpKzYpJTcpLHImJihpPWhjKGMsZikpfXJldHVybiBzLnk9ZlswXSxzLm09ZlsxXSxzLmQ9ZlsyXSxzLlM9biU2MCxuPU1hdGguZmxvb3Iobi82MCkscy5NPW4lNjAsbj1NYXRoLmZsb29yKG4vNjApLHMuSD1uLHMucT1pLHN9ZnVuY3Rpb24gajAoZSl7cmV0dXJuIGUuaW5kZXhPZigiLiIpPT0tMT9lOmUucmVwbGFjZSgvKD86XC4wKnwoXC5cZCpbMS05XSkwKykkLywiJDEiKX1mdW5jdGlvbiBvYyhlKXtyZXR1cm4gZS5pbmRleE9mKCJFIik9PS0xP2U6ZS5yZXBsYWNlKC8oPzpcLjAqfChcLlxkKlsxLTldKTArKVtFZV0vLCIkMUUiKS5yZXBsYWNlKC8oRVsrLV0pKFxkKSQvLCIkMTAkMiIpfWZ1bmN0aW9uIGxjKGUpe3ZhciBhPWU8MD8xMjoxMSxyPWowKGUudG9GaXhlZCgxMikpO3JldHVybiByLmxlbmd0aDw9YXx8KHI9ZS50b1ByZWNpc2lvbigxMCksci5sZW5ndGg8PWEpP3I6ZS50b0V4cG9uZW50aWFsKDUpfWZ1bmN0aW9uIHVjKGUpe3ZhciBhPWowKGUudG9GaXhlZCgxMSkpO3JldHVybiBhLmxlbmd0aD4oZTwwPzEyOjExKXx8YT09PSIwInx8YT09PSItMCI/ZS50b1ByZWNpc2lvbig2KTphfWZ1bmN0aW9uIEF0KGUpe2lmKCFpc0Zpbml0ZShlKSlyZXR1cm4gaXNOYU4oZSk/IiNOVU0hIjoiI0RJVi8wISI7dmFyIGE9TWF0aC5mbG9vcihNYXRoLmxvZyhNYXRoLmFicyhlKSkqTWF0aC5MT0cxMEUpLHI7cmV0dXJuIGE+PS00JiZhPD0tMT9yPWUudG9QcmVjaXNpb24oMTArYSk6TWF0aC5hYnMoYSk8PTk/cj1sYyhlKTphPT09MTA/cj1lLnRvRml4ZWQoMTApLnN1YnN0cigwLDEyKTpyPXVjKGUpLGowKG9jKHIudG9VcHBlckNhc2UoKSkpfWZ1bmN0aW9uIFBhKGUsYSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6cmV0dXJuIGU7Y2FzZSJib29sZWFuIjpyZXR1cm4gZT8iVFJVRSI6IkZBTFNFIjtjYXNlIm51bWJlciI6cmV0dXJuKGV8MCk9PT1lP2UudG9TdHJpbmcoMTApOkF0KGUpO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4iIjtjYXNlIm9iamVjdCI6aWYoZT09bnVsbClyZXR1cm4iIjtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gUnIoMTQsb3IoZSxhJiZhLmRhdGUxOTA0KSxhKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGluIEdlbmVyYWwgZm9ybWF0OiAiK2UpfWZ1bmN0aW9uIGhjKGUsYSl7YVswXS09NTgxO3ZhciByPWUuZ2V0RGF5KCk7cmV0dXJuIGU8NjAmJihyPShyKzYpJTcpLHJ9ZnVuY3Rpb24geGMoZSxhLHIsdCl7dmFyIG49IiIsaT0wLGY9MCxzPXIueSxjLG89MDtzd2l0Y2goZSl7Y2FzZSA5ODpzPXIueSs1NDM7Y2FzZSAxMjE6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9cyUxMDAsbz0yO2JyZWFrO2RlZmF1bHQ6Yz1zJTFlNCxvPTQ7YnJlYWt9YnJlYWs7Y2FzZSAxMDk6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5tLG89YS5sZW5ndGg7YnJlYWs7Y2FzZSAzOnJldHVybiBLMFtyLm0tMV1bMV07Y2FzZSA1OnJldHVybiBLMFtyLm0tMV1bMF07ZGVmYXVsdDpyZXR1cm4gSzBbci5tLTFdWzJdfWJyZWFrO2Nhc2UgMTAwOnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuZCxvPWEubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1cm4gWW5bci5xXVswXTtkZWZhdWx0OnJldHVybiBZbltyLnFdWzFdfWJyZWFrO2Nhc2UgMTA0OnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPTErKHIuSCsxMSklMTIsbz1hLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBob3VyIGZvcm1hdDogIithfWJyZWFrO2Nhc2UgNzI6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5ILG89YS5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgaG91ciBmb3JtYXQ6ICIrYX1icmVhaztjYXNlIDc3OnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuTSxvPWEubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIG1pbnV0ZSBmb3JtYXQ6ICIrYX1icmVhaztjYXNlIDExNTppZihhIT0icyImJmEhPSJzcyImJmEhPSIuMCImJmEhPSIuMDAiJiZhIT0iLjAwMCIpdGhyb3ciYmFkIHNlY29uZCBmb3JtYXQ6ICIrYTtyZXR1cm4gci51PT09MCYmKGE9PSJzInx8YT09InNzIik/SnIoci5TLGEubGVuZ3RoKToodD49Mj9mPXQ9PT0zPzFlMzoxMDA6Zj10PT09MT8xMDoxLGk9TWF0aC5yb3VuZChmKihyLlMrci51KSksaT49NjAqZiYmKGk9MCksYT09PSJzIj9pPT09MD8iMCI6IiIraS9mOihuPUpyKGksMit0KSxhPT09InNzIj9uLnN1YnN0cigwLDIpOiIuIituLnN1YnN0cigyLGEubGVuZ3RoLTEpKSk7Y2FzZSA5MDpzd2l0Y2goYSl7Y2FzZSJbaF0iOmNhc2UiW2hoXSI6Yz1yLkQqMjQrci5IO2JyZWFrO2Nhc2UiW21dIjpjYXNlIlttbV0iOmM9KHIuRCoyNCtyLkgpKjYwK3IuTTticmVhaztjYXNlIltzXSI6Y2FzZSJbc3NdIjpjPSgoci5EKjI0K3IuSCkqNjArci5NKSo2MCsodD09MD9NYXRoLnJvdW5kKHIuUytyLnUpOnIuUyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgYWJzdGltZSBmb3JtYXQ6ICIrYX1vPWEubGVuZ3RoPT09Mz8xOjI7YnJlYWs7Y2FzZSAxMDE6Yz1zLG89MTticmVha312YXIgbD1vPjA/SnIoYyxvKToiIjtyZXR1cm4gbH1mdW5jdGlvbiBvYShlKXt2YXIgYT0zO2lmKGUubGVuZ3RoPD1hKXJldHVybiBlO2Zvcih2YXIgcj1lLmxlbmd0aCVhLHQ9ZS5zdWJzdHIoMCxyKTtyIT1lLmxlbmd0aDtyKz1hKXQrPSh0Lmxlbmd0aD4wPyIsIjoiIikrZS5zdWJzdHIocixhKTtyZXR1cm4gdH12YXIgWm49LyUvZztmdW5jdGlvbiBkYyhlLGEscil7dmFyIHQ9YS5yZXBsYWNlKFpuLCIiKSxuPWEubGVuZ3RoLXQubGVuZ3RoO3JldHVybiBsYShlLHQscipNYXRoLnBvdygxMCwyKm4pKStQZSgiJSIsbil9ZnVuY3Rpb24gdmMoZSxhLHIpe2Zvcih2YXIgdD1hLmxlbmd0aC0xO2EuY2hhckNvZGVBdCh0LTEpPT09NDQ7KS0tdDtyZXR1cm4gbGEoZSxhLnN1YnN0cigwLHQpLHIvTWF0aC5wb3coMTAsMyooYS5sZW5ndGgtdCkpKX1mdW5jdGlvbiBxbihlLGEpe3ZhciByLHQ9ZS5pbmRleE9mKCJFIiktZS5pbmRleE9mKCIuIiktMTtpZihlLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZihhPT0wKXJldHVybiIwLjBFKzAiO2lmKGE8MClyZXR1cm4iLSIrcW4oZSwtYSk7dmFyIG49ZS5pbmRleE9mKCIuIik7bj09PS0xJiYobj1lLmluZGV4T2YoIkUiKSk7dmFyIGk9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSklbjtpZihpPDAmJihpKz1uKSxyPShhL01hdGgucG93KDEwLGkpKS50b1ByZWNpc2lvbih0KzErKG4raSklbiksci5pbmRleE9mKCJlIik9PT0tMSl7dmFyIGY9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSk7Zm9yKHIuaW5kZXhPZigiLiIpPT09LTE/cj1yLmNoYXJBdCgwKSsiLiIrci5zdWJzdHIoMSkrIkUrIisoZi1yLmxlbmd0aCtpKTpyKz0iRSsiKyhmLWkpO3Iuc3Vic3RyKDAsMik9PT0iMC4iOylyPXIuY2hhckF0KDApK3Iuc3Vic3RyKDIsbikrIi4iK3Iuc3Vic3RyKDIrbikscj1yLnJlcGxhY2UoL14wKyhbMS05XSkvLCIkMSIpLnJlcGxhY2UoL14wK1wuLywiMC4iKTtyPXIucmVwbGFjZSgvXCstLywiLSIpfXI9ci5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKHMsYyxvLGwpe3JldHVybiBjK28rbC5zdWJzdHIoMCwobitpKSVuKSsiLiIrbC5zdWJzdHIoaSkrIkUifSl9ZWxzZSByPWEudG9FeHBvbmVudGlhbCh0KTtyZXR1cm4gZS5tYXRjaCgvRVwrMDAkLykmJnIubWF0Y2goL2VbKy1dXGQkLykmJihyPXIuc3Vic3RyKDAsci5sZW5ndGgtMSkrIjAiK3IuY2hhckF0KHIubGVuZ3RoLTEpKSxlLm1hdGNoKC9FXC0vKSYmci5tYXRjaCgvZVwrLykmJihyPXIucmVwbGFjZSgvZVwrLywiZSIpKSxyLnJlcGxhY2UoImUiLCJFIil9dmFyIFFuPS8jIChcPyspKCA/KVwvKCA/KShcZCspLztmdW5jdGlvbiBwYyhlLGEscil7dmFyIHQ9cGFyc2VJbnQoZVs0XSwxMCksbj1NYXRoLnJvdW5kKGEqdCksaT1NYXRoLmZsb29yKG4vdCksZj1uLWkqdCxzPXQ7cmV0dXJuIHIrKGk9PT0wPyIiOiIiK2kpKyIgIisoZj09PTA/UGUoIiAiLGVbMV0ubGVuZ3RoKzErZVs0XS5sZW5ndGgpOiQwKGYsZVsxXS5sZW5ndGgpK2VbMl0rIi8iK2VbM10rSnIocyxlWzRdLmxlbmd0aCkpfWZ1bmN0aW9uIGdjKGUsYSxyKXtyZXR1cm4gcisoYT09PTA/IiI6IiIrYSkrUGUoIiAiLGVbMV0ubGVuZ3RoKzIrZVs0XS5sZW5ndGgpfXZhciBlaT0vXiMqMCpcLihbMCNdKykvLHJpPS9cKVteKV0qWzAjXS8sYWk9L1woIyMjXCkgIyMjXFw/LSMjIyMvO2Z1bmN0aW9uIEVyKGUpe2Zvcih2YXIgYT0iIixyLHQ9MDt0IT1lLmxlbmd0aDsrK3Qpc3dpdGNoKHI9ZS5jaGFyQ29kZUF0KHQpKXtjYXNlIDM1OmJyZWFrO2Nhc2UgNjM6YSs9IiAiO2JyZWFrO2Nhc2UgNDg6YSs9IjAiO2JyZWFrO2RlZmF1bHQ6YSs9U3RyaW5nLmZyb21DaGFyQ29kZShyKX1yZXR1cm4gYX1mdW5jdGlvbiB0aShlLGEpe3ZhciByPWU8MD8tMToxLHQ9TWF0aC5wb3coMTAsYSk7cmV0dXJuIiIrciooTWF0aC5yb3VuZChyKmUqdCkvdCl9ZnVuY3Rpb24gbmkoZSxhKXt2YXIgcj1lLU1hdGguZmxvb3IoZSksdD1NYXRoLnBvdygxMCxhKTtyZXR1cm4gYTwoIiIrTWF0aC5yb3VuZChyKnQpKS5sZW5ndGg/MDpNYXRoLnJvdW5kKHIqdCl9ZnVuY3Rpb24gbWMoZSxhKXtyZXR1cm4gYTwoIiIrTWF0aC5yb3VuZCgoZS1NYXRoLmZsb29yKGUpKSpNYXRoLnBvdygxMCxhKSkpLmxlbmd0aD8xOjB9ZnVuY3Rpb24gX2MoZSl7cmV0dXJuIGU8MjE0NzQ4MzY0NyYmZT4tMjE0NzQ4MzY0OD8iIisoZT49MD9lfDA6ZS0xfDApOiIiK01hdGguZmxvb3IoZSl9ZnVuY3Rpb24gVnIoZSxhLHIpe2lmKGUuY2hhckNvZGVBdCgwKT09PTQwJiYhYS5tYXRjaChyaSkpe3ZhciB0PWEucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIHI+PTA/VnIoIm4iLHQscik6IigiK1ZyKCJuIix0LC1yKSsiKSJ9aWYoYS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpPT09NDQpcmV0dXJuIHZjKGUsYSxyKTtpZihhLmluZGV4T2YoIiUiKSE9PS0xKXJldHVybiBkYyhlLGEscik7aWYoYS5pbmRleE9mKCJFIikhPT0tMSlyZXR1cm4gcW4oYSxyKTtpZihhLmNoYXJDb2RlQXQoMCk9PT0zNilyZXR1cm4iJCIrVnIoZSxhLnN1YnN0cihhLmNoYXJBdCgxKT09IiAiPzI6MSkscik7dmFyIG4saSxmLHMsYz1NYXRoLmFicyhyKSxvPXI8MD8iLSI6IiI7aWYoYS5tYXRjaCgvXjAwKyQvKSlyZXR1cm4gbytzdChjLGEubGVuZ3RoKTtpZihhLm1hdGNoKC9eWyM/XSskLykpcmV0dXJuIG49c3QociwwKSxuPT09IjAiJiYobj0iIiksbi5sZW5ndGg+YS5sZW5ndGg/bjpFcihhLnN1YnN0cigwLGEubGVuZ3RoLW4ubGVuZ3RoKSkrbjtpZihpPWEubWF0Y2goUW4pKXJldHVybiBwYyhpLGMsbyk7aWYoYS5tYXRjaCgvXiMrMCskLykpcmV0dXJuIG8rc3QoYyxhLmxlbmd0aC1hLmluZGV4T2YoIjAiKSk7aWYoaT1hLm1hdGNoKGVpKSlyZXR1cm4gbj10aShyLGlbMV0ubGVuZ3RoKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitFcihpWzFdKSkucmVwbGFjZSgvXC4kLywiLiIrRXIoaVsxXSkpLnJlcGxhY2UoL1wuKFxkKikkLyxmdW5jdGlvbihnLG0pe3JldHVybiIuIittK1BlKCIwIixFcihpWzFdKS5sZW5ndGgtbS5sZW5ndGgpfSksYS5pbmRleE9mKCIwLiIpIT09LTE/bjpuLnJlcGxhY2UoL14wXC4vLCIuIik7aWYoYT1hLnJlcGxhY2UoL14jKyhbMC5dKS8sIiQxIiksaT1hLm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4gbyt0aShjLGlbMl0ubGVuZ3RoKS5yZXBsYWNlKC9cLihcZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyxpWzFdLmxlbmd0aD8iMC4iOiIuIik7aWYoaT1hLm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBvK29hKHN0KGMsMCkpO2lmKGk9YS5tYXRjaCgvXiMsIyMwXC4oWyMwXSowKSQvKSlyZXR1cm4gcjwwPyItIitWcihlLGEsLXIpOm9hKCIiKyhNYXRoLmZsb29yKHIpK21jKHIsaVsxXS5sZW5ndGgpKSkrIi4iK0pyKG5pKHIsaVsxXS5sZW5ndGgpLGlbMV0ubGVuZ3RoKTtpZihpPWEubWF0Y2goL14jLCMqLCMwLykpcmV0dXJuIFZyKGUsYS5yZXBsYWNlKC9eIywjKiwvLCIiKSxyKTtpZihpPWEubWF0Y2goL14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIG49aXQoVnIoZSxhLnJlcGxhY2UoL1tcXC1dL2csIiIpLHIpKSxmPTAsaXQoaXQoYS5yZXBsYWNlKC9cXC9nLCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKGcpe3JldHVybiBmPG4ubGVuZ3RoP24uY2hhckF0KGYrKyk6Zz09PSIwIj8iMCI6IiJ9KSk7aWYoYS5tYXRjaChhaSkpcmV0dXJuIG49VnIoZSwiIyMjIyMjIyMjIyIsciksIigiK24uc3Vic3RyKDAsMykrIikgIituLnN1YnN0cigzLDMpKyItIituLnN1YnN0cig2KTt2YXIgbD0iIjtpZihpPWEubWF0Y2goL14oWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBmPU1hdGgubWluKGlbNF0ubGVuZ3RoLDcpLHM9czAoYyxNYXRoLnBvdygxMCxmKS0xLCExKSxuPSIiK28sbD1sYSgibiIsaVsxXSxzWzFdKSxsLmNoYXJBdChsLmxlbmd0aC0xKT09IiAiJiYobD1sLnN1YnN0cigwLGwubGVuZ3RoLTEpKyIwIiksbis9bCtpWzJdKyIvIitpWzNdLGw9bjAoc1syXSxmKSxsLmxlbmd0aDxpWzRdLmxlbmd0aCYmKGw9RXIoaVs0XS5zdWJzdHIoaVs0XS5sZW5ndGgtbC5sZW5ndGgpKStsKSxuKz1sLG47aWYoaT1hLm1hdGNoKC9eIyAoWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBmPU1hdGgubWluKE1hdGgubWF4KGlbMV0ubGVuZ3RoLGlbNF0ubGVuZ3RoKSw3KSxzPXMwKGMsTWF0aC5wb3coMTAsZiktMSwhMCksbysoc1swXXx8KHNbMV0/IiI6IjAiKSkrIiAiKyhzWzFdPyQwKHNbMV0sZikraVsyXSsiLyIraVszXStuMChzWzJdLGYpOlBlKCIgIiwyKmYrMStpWzJdLmxlbmd0aCtpWzNdLmxlbmd0aCkpO2lmKGk9YS5tYXRjaCgvXlsjMD9dKyQvKSlyZXR1cm4gbj1zdChyLDApLGEubGVuZ3RoPD1uLmxlbmd0aD9uOkVyKGEuc3Vic3RyKDAsYS5sZW5ndGgtbi5sZW5ndGgpKStuO2lmKGk9YS5tYXRjaCgvXihbIzA/XSspXC4oWyMwXSspJC8pKXtuPSIiK3IudG9GaXhlZChNYXRoLm1pbihpWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksZj1uLmluZGV4T2YoIi4iKTt2YXIgdT1hLmluZGV4T2YoIi4iKS1mLHg9YS5sZW5ndGgtbi5sZW5ndGgtdTtyZXR1cm4gRXIoYS5zdWJzdHIoMCx1KStuK2Euc3Vic3RyKGEubGVuZ3RoLXgpKX1pZihpPWEubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiBmPW5pKHIsaVsxXS5sZW5ndGgpLHI8MD8iLSIrVnIoZSxhLC1yKTpvYShfYyhyKSkucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbihnKXtyZXR1cm4iMDAsIisoZy5sZW5ndGg8Mz9KcigwLDMtZy5sZW5ndGgpOiIiKStnfSkrIi4iK0pyKGYsaVsxXS5sZW5ndGgpO3N3aXRjaChhKXtjYXNlIiMjIywjIzAuMDAiOnJldHVybiBWcihlLCIjLCMjMC4wMCIscik7Y2FzZSIjIyMsIyMjIjpjYXNlIiMjLCMjIyI6Y2FzZSIjLCMjIyI6dmFyIGg9b2Eoc3QoYywwKSk7cmV0dXJuIGghPT0iMCI/bytoOiIiO2Nhc2UiIyMjLCMjIy4wMCI6cmV0dXJuIFZyKGUsIiMjIywjIzAuMDAiLHIpLnJlcGxhY2UoL14wXC4vLCIuIik7Y2FzZSIjLCMjIy4wMCI6cmV0dXJuIFZyKGUsIiMsIyMwLjAwIixyKS5yZXBsYWNlKC9eMFwuLywiLiIpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK2ErInwiKX1mdW5jdGlvbiBrYyhlLGEscil7Zm9yKHZhciB0PWEubGVuZ3RoLTE7YS5jaGFyQ29kZUF0KHQtMSk9PT00NDspLS10O3JldHVybiBsYShlLGEuc3Vic3RyKDAsdCksci9NYXRoLnBvdygxMCwzKihhLmxlbmd0aC10KSkpfWZ1bmN0aW9uIHdjKGUsYSxyKXt2YXIgdD1hLnJlcGxhY2UoWm4sIiIpLG49YS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIGxhKGUsdCxyKk1hdGgucG93KDEwLDIqbikpK1BlKCIlIixuKX1mdW5jdGlvbiBpaShlLGEpe3ZhciByLHQ9ZS5pbmRleE9mKCJFIiktZS5pbmRleE9mKCIuIiktMTtpZihlLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZihhPT0wKXJldHVybiIwLjBFKzAiO2lmKGE8MClyZXR1cm4iLSIraWkoZSwtYSk7dmFyIG49ZS5pbmRleE9mKCIuIik7bj09PS0xJiYobj1lLmluZGV4T2YoIkUiKSk7dmFyIGk9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSklbjtpZihpPDAmJihpKz1uKSxyPShhL01hdGgucG93KDEwLGkpKS50b1ByZWNpc2lvbih0KzErKG4raSklbiksIXIubWF0Y2goL1tFZV0vKSl7dmFyIGY9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSk7ci5pbmRleE9mKCIuIik9PT0tMT9yPXIuY2hhckF0KDApKyIuIityLnN1YnN0cigxKSsiRSsiKyhmLXIubGVuZ3RoK2kpOnIrPSJFKyIrKGYtaSkscj1yLnJlcGxhY2UoL1wrLS8sIi0iKX1yPXIucmVwbGFjZSgvXihbKy1dPykoXGQqKVwuKFxkKilbRWVdLyxmdW5jdGlvbihzLGMsbyxsKXtyZXR1cm4gYytvK2wuc3Vic3RyKDAsKG4raSklbikrIi4iK2wuc3Vic3RyKGkpKyJFIn0pfWVsc2Ugcj1hLnRvRXhwb25lbnRpYWwodCk7cmV0dXJuIGUubWF0Y2goL0VcKzAwJC8pJiZyLm1hdGNoKC9lWystXVxkJC8pJiYocj1yLnN1YnN0cigwLHIubGVuZ3RoLTEpKyIwIityLmNoYXJBdChyLmxlbmd0aC0xKSksZS5tYXRjaCgvRVwtLykmJnIubWF0Y2goL2VcKy8pJiYocj1yLnJlcGxhY2UoL2VcKy8sImUiKSksci5yZXBsYWNlKCJlIiwiRSIpfWZ1bmN0aW9uIGFhKGUsYSxyKXtpZihlLmNoYXJDb2RlQXQoMCk9PT00MCYmIWEubWF0Y2gocmkpKXt2YXIgdD1hLnJlcGxhY2UoL1woICovLCIiKS5yZXBsYWNlKC8gXCkvLCIiKS5yZXBsYWNlKC9cKS8sIiIpO3JldHVybiByPj0wP2FhKCJuIix0LHIpOiIoIithYSgibiIsdCwtcikrIikifWlmKGEuY2hhckNvZGVBdChhLmxlbmd0aC0xKT09PTQ0KXJldHVybiBrYyhlLGEscik7aWYoYS5pbmRleE9mKCIlIikhPT0tMSlyZXR1cm4gd2MoZSxhLHIpO2lmKGEuaW5kZXhPZigiRSIpIT09LTEpcmV0dXJuIGlpKGEscik7aWYoYS5jaGFyQ29kZUF0KDApPT09MzYpcmV0dXJuIiQiK2FhKGUsYS5zdWJzdHIoYS5jaGFyQXQoMSk9PSIgIj8yOjEpLHIpO3ZhciBuLGksZixzLGM9TWF0aC5hYnMociksbz1yPDA/Ii0iOiIiO2lmKGEubWF0Y2goL14wMCskLykpcmV0dXJuIG8rSnIoYyxhLmxlbmd0aCk7aWYoYS5tYXRjaCgvXlsjP10rJC8pKXJldHVybiBuPSIiK3Iscj09PTAmJihuPSIiKSxuLmxlbmd0aD5hLmxlbmd0aD9uOkVyKGEuc3Vic3RyKDAsYS5sZW5ndGgtbi5sZW5ndGgpKStuO2lmKGk9YS5tYXRjaChRbikpcmV0dXJuIGdjKGksYyxvKTtpZihhLm1hdGNoKC9eIyswKyQvKSlyZXR1cm4gbytKcihjLGEubGVuZ3RoLWEuaW5kZXhPZigiMCIpKTtpZihpPWEubWF0Y2goZWkpKXJldHVybiBuPSgiIityKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitFcihpWzFdKSkucmVwbGFjZSgvXC4kLywiLiIrRXIoaVsxXSkpLG49bi5yZXBsYWNlKC9cLihcZCopJC8sZnVuY3Rpb24oZyxtKXtyZXR1cm4iLiIrbStQZSgiMCIsRXIoaVsxXSkubGVuZ3RoLW0ubGVuZ3RoKX0pLGEuaW5kZXhPZigiMC4iKSE9PS0xP246bi5yZXBsYWNlKC9eMFwuLywiLiIpO2lmKGE9YS5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLGk9YS5tYXRjaCgvXigwKilcLigjKikkLykpcmV0dXJuIG8rKCIiK2MpLnJlcGxhY2UoL1wuKFxkKlsxLTldKTAqJC8sIi4kMSIpLnJlcGxhY2UoL14oLT9cZCopJC8sIiQxLiIpLnJlcGxhY2UoL14wXC4vLGlbMV0ubGVuZ3RoPyIwLiI6Ii4iKTtpZihpPWEubWF0Y2goL14jezEsM30sIyMwKFwuPykkLykpcmV0dXJuIG8rb2EoIiIrYyk7aWYoaT1hLm1hdGNoKC9eIywjIzBcLihbIzBdKjApJC8pKXJldHVybiByPDA/Ii0iK2FhKGUsYSwtcik6b2EoIiIrcikrIi4iK1BlKCIwIixpWzFdLmxlbmd0aCk7aWYoaT1hLm1hdGNoKC9eIywjKiwjMC8pKXJldHVybiBhYShlLGEucmVwbGFjZSgvXiMsIyosLywiIikscik7aWYoaT1hLm1hdGNoKC9eKFswI10rKShcXD8tKFswI10rKSkrJC8pKXJldHVybiBuPWl0KGFhKGUsYS5yZXBsYWNlKC9bXFwtXS9nLCIiKSxyKSksZj0wLGl0KGl0KGEucmVwbGFjZSgvXFwvZywiIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbihnKXtyZXR1cm4gZjxuLmxlbmd0aD9uLmNoYXJBdChmKyspOmc9PT0iMCI/IjAiOiIifSkpO2lmKGEubWF0Y2goYWkpKXJldHVybiBuPWFhKGUsIiMjIyMjIyMjIyMiLHIpLCIoIituLnN1YnN0cigwLDMpKyIpICIrbi5zdWJzdHIoMywzKSsiLSIrbi5zdWJzdHIoNik7dmFyIGw9IiI7aWYoaT1hLm1hdGNoKC9eKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gZj1NYXRoLm1pbihpWzRdLmxlbmd0aCw3KSxzPXMwKGMsTWF0aC5wb3coMTAsZiktMSwhMSksbj0iIitvLGw9bGEoIm4iLGlbMV0sc1sxXSksbC5jaGFyQXQobC5sZW5ndGgtMSk9PSIgIiYmKGw9bC5zdWJzdHIoMCxsLmxlbmd0aC0xKSsiMCIpLG4rPWwraVsyXSsiLyIraVszXSxsPW4wKHNbMl0sZiksbC5sZW5ndGg8aVs0XS5sZW5ndGgmJihsPUVyKGlbNF0uc3Vic3RyKGlbNF0ubGVuZ3RoLWwubGVuZ3RoKSkrbCksbis9bCxuO2lmKGk9YS5tYXRjaCgvXiMgKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gZj1NYXRoLm1pbihNYXRoLm1heChpWzFdLmxlbmd0aCxpWzRdLmxlbmd0aCksNykscz1zMChjLE1hdGgucG93KDEwLGYpLTEsITApLG8rKHNbMF18fChzWzFdPyIiOiIwIikpKyIgIisoc1sxXT8kMChzWzFdLGYpK2lbMl0rIi8iK2lbM10rbjAoc1syXSxmKTpQZSgiICIsMipmKzEraVsyXS5sZW5ndGgraVszXS5sZW5ndGgpKTtpZihpPWEubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIG49IiIrcixhLmxlbmd0aDw9bi5sZW5ndGg/bjpFcihhLnN1YnN0cigwLGEubGVuZ3RoLW4ubGVuZ3RoKSkrbjtpZihpPWEubWF0Y2goL14oWyMwXSspXC4oWyMwXSspJC8pKXtuPSIiK3IudG9GaXhlZChNYXRoLm1pbihpWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksZj1uLmluZGV4T2YoIi4iKTt2YXIgdT1hLmluZGV4T2YoIi4iKS1mLHg9YS5sZW5ndGgtbi5sZW5ndGgtdTtyZXR1cm4gRXIoYS5zdWJzdHIoMCx1KStuK2Euc3Vic3RyKGEubGVuZ3RoLXgpKX1pZihpPWEubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiByPDA/Ii0iK2FhKGUsYSwtcik6b2EoIiIrcikucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbihnKXtyZXR1cm4iMDAsIisoZy5sZW5ndGg8Mz9KcigwLDMtZy5sZW5ndGgpOiIiKStnfSkrIi4iK0pyKDAsaVsxXS5sZW5ndGgpO3N3aXRjaChhKXtjYXNlIiMjIywjIyMiOmNhc2UiIyMsIyMjIjpjYXNlIiMsIyMjIjp2YXIgaD1vYSgiIitjKTtyZXR1cm4gaCE9PSIwIj9vK2g6IiI7ZGVmYXVsdDppZihhLm1hdGNoKC9cLlswIz9dKiQvKSlyZXR1cm4gYWEoZSxhLnNsaWNlKDAsYS5sYXN0SW5kZXhPZigiLiIpKSxyKStFcihhLnNsaWNlKGEubGFzdEluZGV4T2YoIi4iKSkpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK2ErInwiKX1mdW5jdGlvbiBsYShlLGEscil7cmV0dXJuKHJ8MCk9PT1yP2FhKGUsYSxyKTpWcihlLGEscil9ZnVuY3Rpb24gRmMoZSl7Zm9yKHZhciBhPVtdLHI9ITEsdD0wLG49MDt0PGUubGVuZ3RoOysrdClzd2l0Y2goZS5jaGFyQ29kZUF0KHQpKXtjYXNlIDM0OnI9IXI7YnJlYWs7Y2FzZSA5NTpjYXNlIDQyOmNhc2UgOTI6Kyt0O2JyZWFrO2Nhc2UgNTk6YVthLmxlbmd0aF09ZS5zdWJzdHIobix0LW4pLG49dCsxfWlmKGFbYS5sZW5ndGhdPWUuc3Vic3RyKG4pLHI9PT0hMCl0aHJvdyBuZXcgRXJyb3IoIkZvcm1hdCB8IitlKyJ8IHVudGVybWluYXRlZCBzdHJpbmcgIik7cmV0dXJuIGF9dmFyIHNpPS9cW1tIaE1tU3NcdTBFMEFcdTBFMTlcdTBFMTddKlxdLztmdW5jdGlvbiBacihlKXtmb3IodmFyIGE9MCxyPSIiLHQ9IiI7YTxlLmxlbmd0aDspc3dpdGNoKHI9ZS5jaGFyQXQoYSkpe2Nhc2UiRyI6aTAoZSxhKSYmKGErPTYpLGErKzticmVhaztjYXNlJyInOmZvcig7ZS5jaGFyQ29kZUF0KCsrYSkhPT0zNCYmYTxlLmxlbmd0aDspOysrYTticmVhaztjYXNlIlxcIjphKz0yO2JyZWFrO2Nhc2UiXyI6YSs9MjticmVhaztjYXNlIkAiOisrYTticmVhaztjYXNlIkIiOmNhc2UiYiI6aWYoZS5jaGFyQXQoYSsxKT09PSIxInx8ZS5jaGFyQXQoYSsxKT09PSIyIilyZXR1cm4hMDtjYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOnJldHVybiEwO2Nhc2UiQSI6Y2FzZSJhIjpjYXNlIuS4iiI6aWYoZS5zdWJzdHIoYSwzKS50b1VwcGVyQ2FzZSgpPT09IkEvUCJ8fGUuc3Vic3RyKGEsNSkudG9VcHBlckNhc2UoKT09PSJBTS9QTSJ8fGUuc3Vic3RyKGEsNSkudG9VcHBlckNhc2UoKT09PSLkuIrljYgv5LiL5Y2IIilyZXR1cm4hMDsrK2E7YnJlYWs7Y2FzZSJbIjpmb3IodD1yO2UuY2hhckF0KGErKykhPT0iXSImJmE8ZS5sZW5ndGg7KXQrPWUuY2hhckF0KGEpO2lmKHQubWF0Y2goc2kpKXJldHVybiEwO2JyZWFrO2Nhc2UiLiI6Y2FzZSIwIjpjYXNlIiMiOmZvcig7YTxlLmxlbmd0aCYmKCIwIz8uLEUrLSUiLmluZGV4T2Yocj1lLmNoYXJBdCgrK2EpKT4tMXx8cj09IlxcIiYmZS5jaGFyQXQoYSsxKT09Ii0iJiYiMCMiLmluZGV4T2YoZS5jaGFyQXQoYSsyKSk+LTEpOyk7YnJlYWs7Y2FzZSI/Ijpmb3IoO2UuY2hhckF0KCsrYSk9PT1yOyk7YnJlYWs7Y2FzZSIqIjorK2EsKGUuY2hhckF0KGEpPT0iICJ8fGUuY2hhckF0KGEpPT0iKiIpJiYrK2E7YnJlYWs7Y2FzZSIoIjpjYXNlIikiOisrYTticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoO2E8ZS5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKGUuY2hhckF0KCsrYSkpPi0xOyk7YnJlYWs7Y2FzZSIgIjorK2E7YnJlYWs7ZGVmYXVsdDorK2E7YnJlYWt9cmV0dXJuITF9ZnVuY3Rpb24gVGMoZSxhLHIsdCl7Zm9yKHZhciBuPVtdLGk9IiIsZj0wLHM9IiIsYz0idCIsbyxsLHUseD0iSCI7ZjxlLmxlbmd0aDspc3dpdGNoKHM9ZS5jaGFyQXQoZikpe2Nhc2UiRyI6aWYoIWkwKGUsZikpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyICIrcysiIGluICIrZSk7bltuLmxlbmd0aF09e3Q6IkciLHY6IkdlbmVyYWwifSxmKz03O2JyZWFrO2Nhc2UnIic6Zm9yKGk9IiI7KHU9ZS5jaGFyQ29kZUF0KCsrZikpIT09MzQmJmY8ZS5sZW5ndGg7KWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodSk7bltuLmxlbmd0aF09e3Q6InQiLHY6aX0sKytmO2JyZWFrO2Nhc2UiXFwiOnZhciBoPWUuY2hhckF0KCsrZiksZz1oPT09IigifHxoPT09IikiP2g6InQiO25bbi5sZW5ndGhdPXt0OmcsdjpofSwrK2Y7YnJlYWs7Y2FzZSJfIjpuW24ubGVuZ3RoXT17dDoidCIsdjoiICJ9LGYrPTI7YnJlYWs7Y2FzZSJAIjpuW24ubGVuZ3RoXT17dDoiVCIsdjphfSwrK2Y7YnJlYWs7Y2FzZSJCIjpjYXNlImIiOmlmKGUuY2hhckF0KGYrMSk9PT0iMSJ8fGUuY2hhckF0KGYrMSk9PT0iMiIpe2lmKG89PW51bGwmJihvPWNhKGEscixlLmNoYXJBdChmKzEpPT09IjIiKSxvPT1udWxsKSlyZXR1cm4iIjtuW24ubGVuZ3RoXT17dDoiWCIsdjplLnN1YnN0cihmLDIpfSxjPXMsZis9MjticmVha31jYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpzPXMudG9Mb3dlckNhc2UoKTtjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOmlmKGE8MHx8bz09bnVsbCYmKG89Y2EoYSxyKSxvPT1udWxsKSlyZXR1cm4iIjtmb3IoaT1zOysrZjxlLmxlbmd0aCYmZS5jaGFyQXQoZikudG9Mb3dlckNhc2UoKT09PXM7KWkrPXM7cz09PSJtIiYmYy50b0xvd2VyQ2FzZSgpPT09ImgiJiYocz0iTSIpLHM9PT0iaCImJihzPXgpLG5bbi5sZW5ndGhdPXt0OnMsdjppfSxjPXM7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNhc2Ui5LiKIjp2YXIgbT17dDpzLHY6c307aWYobz09bnVsbCYmKG89Y2EoYSxyKSksZS5zdWJzdHIoZiwzKS50b1VwcGVyQ2FzZSgpPT09IkEvUCI/KG8hPW51bGwmJihtLnY9by5IPj0xMj9lLmNoYXJBdChmKzIpOnMpLG0udD0iVCIseD0iaCIsZis9Myk6ZS5zdWJzdHIoZiw1KS50b1VwcGVyQ2FzZSgpPT09IkFNL1BNIj8obyE9bnVsbCYmKG0udj1vLkg+PTEyPyJQTSI6IkFNIiksbS50PSJUIixmKz01LHg9ImgiKTplLnN1YnN0cihmLDUpLnRvVXBwZXJDYXNlKCk9PT0i5LiK5Y2IL+S4i+WNiCI/KG8hPW51bGwmJihtLnY9by5IPj0xMj8i5LiL5Y2IIjoi5LiK5Y2IIiksbS50PSJUIixmKz01LHg9ImgiKToobS50PSJ0IiwrK2YpLG89PW51bGwmJm0udD09PSJUIilyZXR1cm4iIjtuW24ubGVuZ3RoXT1tLGM9czticmVhaztjYXNlIlsiOmZvcihpPXM7ZS5jaGFyQXQoZisrKSE9PSJdIiYmZjxlLmxlbmd0aDspaSs9ZS5jaGFyQXQoZik7aWYoaS5zbGljZSgtMSkhPT0iXSIpdGhyb3cndW50ZXJtaW5hdGVkICJbIiBibG9jazogfCcraSsifCI7aWYoaS5tYXRjaChzaSkpe2lmKG89PW51bGwmJihvPWNhKGEsciksbz09bnVsbCkpcmV0dXJuIiI7bltuLmxlbmd0aF09e3Q6IloiLHY6aS50b0xvd2VyQ2FzZSgpfSxjPWkuY2hhckF0KDEpfWVsc2UgaS5pbmRleE9mKCIkIik+LTEmJihpPShpLm1hdGNoKC9cJChbXi1cW1xdXSopLyl8fFtdKVsxXXx8IiQiLFpyKGUpfHwobltuLmxlbmd0aF09e3Q6InQiLHY6aX0pKTticmVhaztjYXNlIi4iOmlmKG8hPW51bGwpe2ZvcihpPXM7KytmPGUubGVuZ3RoJiYocz1lLmNoYXJBdChmKSk9PT0iMCI7KWkrPXM7bltuLmxlbmd0aF09e3Q6InMiLHY6aX07YnJlYWt9Y2FzZSIwIjpjYXNlIiMiOmZvcihpPXM7KytmPGUubGVuZ3RoJiYiMCM/LixFKy0lIi5pbmRleE9mKHM9ZS5jaGFyQXQoZikpPi0xOylpKz1zO25bbi5sZW5ndGhdPXt0OiJuIix2Oml9O2JyZWFrO2Nhc2UiPyI6Zm9yKGk9cztlLmNoYXJBdCgrK2YpPT09czspaSs9cztuW24ubGVuZ3RoXT17dDpzLHY6aX0sYz1zO2JyZWFrO2Nhc2UiKiI6KytmLChlLmNoYXJBdChmKT09IiAifHxlLmNoYXJBdChmKT09IioiKSYmKytmO2JyZWFrO2Nhc2UiKCI6Y2FzZSIpIjpuW24ubGVuZ3RoXT17dDp0PT09MT8idCI6cyx2OnN9LCsrZjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoaT1zO2Y8ZS5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKGUuY2hhckF0KCsrZikpPi0xOylpKz1lLmNoYXJBdChmKTtuW24ubGVuZ3RoXT17dDoiRCIsdjppfTticmVhaztjYXNlIiAiOm5bbi5sZW5ndGhdPXt0OnMsdjpzfSwrK2Y7YnJlYWs7Y2FzZSIkIjpuW24ubGVuZ3RoXT17dDoidCIsdjoiJCJ9LCsrZjticmVhaztkZWZhdWx0OmlmKCIsJC0rLygpOiFeJid+e308Pj3igqxhY2Zpamtsb3BxcnR1dnd4elAiLmluZGV4T2Yocyk9PT0tMSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBjaGFyYWN0ZXIgIitzKyIgaW4gIitlKTtuW24ubGVuZ3RoXT17dDoidCIsdjpzfSwrK2Y7YnJlYWt9dmFyIGQ9MCxwPTAsdztmb3IoZj1uLmxlbmd0aC0xLGM9InQiO2Y+PTA7LS1mKXN3aXRjaChuW2ZdLnQpe2Nhc2UiaCI6Y2FzZSJIIjpuW2ZdLnQ9eCxjPSJoIixkPDEmJihkPTEpO2JyZWFrO2Nhc2UicyI6KHc9bltmXS52Lm1hdGNoKC9cLjArJC8pKSYmKHA9TWF0aC5tYXgocCx3WzBdLmxlbmd0aC0xKSxkPTQpLGQ8MyYmKGQ9Myk7Y2FzZSJkIjpjYXNlInkiOmNhc2UiZSI6Yz1uW2ZdLnQ7YnJlYWs7Y2FzZSJNIjpjPW5bZl0udCxkPDImJihkPTIpO2JyZWFrO2Nhc2UibSI6Yz09PSJzIiYmKG5bZl0udD0iTSIsZDwyJiYoZD0yKSk7YnJlYWs7Y2FzZSJYIjpicmVhaztjYXNlIloiOmQ8MSYmbltmXS52Lm1hdGNoKC9bSGhdLykmJihkPTEpLGQ8MiYmbltmXS52Lm1hdGNoKC9bTW1dLykmJihkPTIpLGQ8MyYmbltmXS52Lm1hdGNoKC9bU3NdLykmJihkPTMpfXZhciBfO3N3aXRjaChkKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6by51Pj0uNSYmKG8udT0wLCsrby5TKSxvLlM+PTYwJiYoby5TPTAsKytvLk0pLG8uTT49NjAmJihvLk09MCwrK28uSCksby5IPj0yNCYmKG8uSD0wLCsrby5ELF89Y2Eoby5EKSxfLnU9by51LF8uUz1vLlMsXy5NPW8uTSxfLkg9by5ILG89Xyk7YnJlYWs7Y2FzZSA0OnN3aXRjaChwKXtjYXNlIDE6by51PU1hdGgucm91bmQoby51KjEwKS8xMDticmVhaztjYXNlIDI6by51PU1hdGgucm91bmQoby51KjEwMCkvMTAwO2JyZWFrO2Nhc2UgMzpvLnU9TWF0aC5yb3VuZChvLnUqMWUzKS8xZTM7YnJlYWt9by51Pj0xJiYoby51PTAsKytvLlMpLG8uUz49NjAmJihvLlM9MCwrK28uTSksby5NPj02MCYmKG8uTT0wLCsrby5IKSxvLkg+PTI0JiYoby5IPTAsKytvLkQsXz1jYShvLkQpLF8udT1vLnUsXy5TPW8uUyxfLk09by5NLF8uSD1vLkgsbz1fKTticmVha312YXIgeT0iIixSO2ZvcihmPTA7ZjxuLmxlbmd0aDsrK2Ypc3dpdGNoKG5bZl0udCl7Y2FzZSJ0IjpjYXNlIlQiOmNhc2UiICI6Y2FzZSJEIjpicmVhaztjYXNlIlgiOm5bZl0udj0iIixuW2ZdLnQ9IjsiO2JyZWFrO2Nhc2UiZCI6Y2FzZSJtIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJIIjpjYXNlIk0iOmNhc2UicyI6Y2FzZSJlIjpjYXNlImIiOmNhc2UiWiI6bltmXS52PXhjKG5bZl0udC5jaGFyQ29kZUF0KDApLG5bZl0udixvLHApLG5bZl0udD0idCI7YnJlYWs7Y2FzZSJuIjpjYXNlIj8iOmZvcihSPWYrMTtuW1JdIT1udWxsJiYoKHM9bltSXS50KT09PSI/Inx8cz09PSJEInx8KHM9PT0iICJ8fHM9PT0idCIpJiZuW1IrMV0hPW51bGwmJihuW1IrMV0udD09PSI/Inx8bltSKzFdLnQ9PT0idCImJm5bUisxXS52PT09Ii8iKXx8bltmXS50PT09IigiJiYocz09PSIgInx8cz09PSJuInx8cz09PSIpIil8fHM9PT0idCImJihuW1JdLnY9PT0iLyJ8fG5bUl0udj09PSIgIiYmbltSKzFdIT1udWxsJiZuW1IrMV0udD09Ij8iKSk7KW5bZl0udis9bltSXS52LG5bUl09e3Y6IiIsdDoiOyJ9LCsrUjt5Kz1uW2ZdLnYsZj1SLTE7YnJlYWs7Y2FzZSJHIjpuW2ZdLnQ9InQiLG5bZl0udj1QYShhLHIpO2JyZWFrfXZhciBQPSIiLGIsTjtpZih5Lmxlbmd0aD4wKXt5LmNoYXJDb2RlQXQoMCk9PTQwPyhiPWE8MCYmeS5jaGFyQ29kZUF0KDApPT09NDU/LWE6YSxOPWxhKCJuIix5LGIpKTooYj1hPDAmJnQ+MT8tYTphLE49bGEoIm4iLHksYiksYjwwJiZuWzBdJiZuWzBdLnQ9PSJ0IiYmKE49Ti5zdWJzdHIoMSksblswXS52PSItIituWzBdLnYpKSxSPU4ubGVuZ3RoLTE7dmFyIEQ9bi5sZW5ndGg7Zm9yKGY9MDtmPG4ubGVuZ3RoOysrZilpZihuW2ZdIT1udWxsJiZuW2ZdLnQhPSJ0IiYmbltmXS52LmluZGV4T2YoIi4iKT4tMSl7RD1mO2JyZWFrfXZhciBCPW4ubGVuZ3RoO2lmKEQ9PT1uLmxlbmd0aCYmTi5pbmRleE9mKCJFIik9PT0tMSl7Zm9yKGY9bi5sZW5ndGgtMTtmPj0wOy0tZiluW2ZdPT1udWxsfHwibj8iLmluZGV4T2YobltmXS50KT09PS0xfHwoUj49bltmXS52Lmxlbmd0aC0xPyhSLT1uW2ZdLnYubGVuZ3RoLG5bZl0udj1OLnN1YnN0cihSKzEsbltmXS52Lmxlbmd0aCkpOlI8MD9uW2ZdLnY9IiI6KG5bZl0udj1OLnN1YnN0cigwLFIrMSksUj0tMSksbltmXS50PSJ0IixCPWYpO1I+PTAmJkI8bi5sZW5ndGgmJihuW0JdLnY9Ti5zdWJzdHIoMCxSKzEpK25bQl0udil9ZWxzZSBpZihEIT09bi5sZW5ndGgmJk4uaW5kZXhPZigiRSIpPT09LTEpe2ZvcihSPU4uaW5kZXhPZigiLiIpLTEsZj1EO2Y+PTA7LS1mKWlmKCEobltmXT09bnVsbHx8Im4/Ii5pbmRleE9mKG5bZl0udCk9PT0tMSkpe2ZvcihsPW5bZl0udi5pbmRleE9mKCIuIik+LTEmJmY9PT1EP25bZl0udi5pbmRleE9mKCIuIiktMTpuW2ZdLnYubGVuZ3RoLTEsUD1uW2ZdLnYuc3Vic3RyKGwrMSk7bD49MDstLWwpUj49MCYmKG5bZl0udi5jaGFyQXQobCk9PT0iMCJ8fG5bZl0udi5jaGFyQXQobCk9PT0iIyIpJiYoUD1OLmNoYXJBdChSLS0pK1ApO25bZl0udj1QLG5bZl0udD0idCIsQj1mfWZvcihSPj0wJiZCPG4ubGVuZ3RoJiYobltCXS52PU4uc3Vic3RyKDAsUisxKStuW0JdLnYpLFI9Ti5pbmRleE9mKCIuIikrMSxmPUQ7ZjxuLmxlbmd0aDsrK2YpaWYoIShuW2ZdPT1udWxsfHwibj8oIi5pbmRleE9mKG5bZl0udCk9PT0tMSYmZiE9PUQpKXtmb3IobD1uW2ZdLnYuaW5kZXhPZigiLiIpPi0xJiZmPT09RD9uW2ZdLnYuaW5kZXhPZigiLiIpKzE6MCxQPW5bZl0udi5zdWJzdHIoMCxsKTtsPG5bZl0udi5sZW5ndGg7KytsKVI8Ti5sZW5ndGgmJihQKz1OLmNoYXJBdChSKyspKTtuW2ZdLnY9UCxuW2ZdLnQ9InQiLEI9Zn19fWZvcihmPTA7ZjxuLmxlbmd0aDsrK2YpbltmXSE9bnVsbCYmIm4/Ii5pbmRleE9mKG5bZl0udCk+LTEmJihiPXQ+MSYmYTwwJiZmPjAmJm5bZi0xXS52PT09Ii0iPy1hOmEsbltmXS52PWxhKG5bZl0udCxuW2ZdLnYsYiksbltmXS50PSJ0Iik7dmFyIEw9IiI7Zm9yKGY9MDtmIT09bi5sZW5ndGg7KytmKW5bZl0hPW51bGwmJihMKz1uW2ZdLnYpO3JldHVybiBMfXZhciBmaT0vXFsoPXw+Wz1dP3w8Wz49XT8pKC0/XGQrKD86XC5cZCopPylcXS87ZnVuY3Rpb24gY2koZSxhKXtpZihhPT1udWxsKXJldHVybiExO3ZhciByPXBhcnNlRmxvYXQoYVsyXSk7c3dpdGNoKGFbMV0pe2Nhc2UiPSI6aWYoZT09cilyZXR1cm4hMDticmVhaztjYXNlIj4iOmlmKGU+cilyZXR1cm4hMDticmVhaztjYXNlIjwiOmlmKGU8cilyZXR1cm4hMDticmVhaztjYXNlIjw+IjppZihlIT1yKXJldHVybiEwO2JyZWFrO2Nhc2UiPj0iOmlmKGU+PXIpcmV0dXJuITA7YnJlYWs7Y2FzZSI8PSI6aWYoZTw9cilyZXR1cm4hMDticmVha31yZXR1cm4hMX1mdW5jdGlvbiBFYyhlLGEpe3ZhciByPUZjKGUpLHQ9ci5sZW5ndGgsbj1yW3QtMV0uaW5kZXhPZigiQCIpO2lmKHQ8NCYmbj4tMSYmLS10LHIubGVuZ3RoPjQpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZmluZCByaWdodCBmb3JtYXQgZm9yIHwiK3Iuam9pbigifCIpKyJ8Iik7aWYodHlwZW9mIGEhPSJudW1iZXIiKXJldHVybls0LHIubGVuZ3RoPT09NHx8bj4tMT9yW3IubGVuZ3RoLTFdOiJAIl07c3dpdGNoKHR5cGVvZiBhPT0ibnVtYmVyIiYmIWlzRmluaXRlKGEpJiYoYT0wKSxyLmxlbmd0aCl7Y2FzZSAxOnI9bj4tMT9bIkdlbmVyYWwiLCJHZW5lcmFsIiwiR2VuZXJhbCIsclswXV06W3JbMF0sclswXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAyOnI9bj4tMT9bclswXSxyWzBdLHJbMF0sclsxXV06W3JbMF0sclsxXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAzOnI9bj4tMT9bclswXSxyWzFdLHJbMF0sclsyXV06W3JbMF0sclsxXSxyWzJdLCJAIl07YnJlYWt9dmFyIGk9YT4wP3JbMF06YTwwP3JbMV06clsyXTtpZihyWzBdLmluZGV4T2YoIlsiKT09PS0xJiZyWzFdLmluZGV4T2YoIlsiKT09PS0xKXJldHVyblt0LGldO2lmKHJbMF0ubWF0Y2goL1xbWz08Pl0vKSE9bnVsbHx8clsxXS5tYXRjaCgvXFtbPTw+XS8pIT1udWxsKXt2YXIgZj1yWzBdLm1hdGNoKGZpKSxzPXJbMV0ubWF0Y2goZmkpO3JldHVybiBjaShhLGYpP1t0LHJbMF1dOmNpKGEscyk/W3QsclsxXV06W3QscltmIT1udWxsJiZzIT1udWxsPzI6MV1dfXJldHVyblt0LGldfWZ1bmN0aW9uIFJyKGUsYSxyKXtyPT1udWxsJiYocj17fSk7dmFyIHQ9IiI7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6ZT09Im0vZC95eSImJnIuZGF0ZU5GP3Q9ci5kYXRlTkY6dD1lO2JyZWFrO2Nhc2UibnVtYmVyIjplPT0xNCYmci5kYXRlTkY/dD1yLmRhdGVORjp0PShyLnRhYmxlIT1udWxsP3IudGFibGU6VGUpW2VdLHQ9PW51bGwmJih0PXIudGFibGUmJnIudGFibGVbSm5bZV1dfHxUZVtKbltlXV0pLHQ9PW51bGwmJih0PWZjW2VdfHwiR2VuZXJhbCIpO2JyZWFrfWlmKGkwKHQsMCkpcmV0dXJuIFBhKGEscik7YSBpbnN0YW5jZW9mIERhdGUmJihhPW9yKGEsci5kYXRlMTkwNCkpO3ZhciBuPUVjKHQsYSk7aWYoaTAoblsxXSkpcmV0dXJuIFBhKGEscik7aWYoYT09PSEwKWE9IlRSVUUiO2Vsc2UgaWYoYT09PSExKWE9IkZBTFNFIjtlbHNle2lmKGE9PT0iInx8YT09bnVsbClyZXR1cm4iIjtpZihpc05hTihhKSYmblsxXS5pbmRleE9mKCIwIik+LTEpcmV0dXJuIiNOVU0hIjtpZighaXNGaW5pdGUoYSkmJm5bMV0uaW5kZXhPZigiMCIpPi0xKXJldHVybiIjRElWLzAhIn1yZXR1cm4gVGMoblsxXSxhLHIsblswXSl9ZnVuY3Rpb24gQWMoZSxhKXtpZih0eXBlb2YgYSE9Im51bWJlciIpe2E9K2F8fC0xO2Zvcih2YXIgcj0wO3I8MzkyOysrcil7aWYoVGVbcl09PW51bGwpe2E8MCYmKGE9cik7Y29udGludWV9aWYoVGVbcl09PWUpe2E9cjticmVha319YTwwJiYoYT0zOTEpfXJldHVybiBUZVthXT1lLGF9ZnVuY3Rpb24gb2koKXtUZT1zYygpfXZhciB5Yz17NTonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw3OiciJCIjLCMjMC4wMF8pO1xcKCIkIiMsIyMwLjAwXFwpJyw4OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDIzOiJHZW5lcmFsIiwyNDoiR2VuZXJhbCIsMjU6IkdlbmVyYWwiLDI2OiJHZW5lcmFsIiwyNzoibS9kL3l5IiwyODoibS9kL3l5IiwyOToibS9kL3l5IiwzMDoibS9kL3l5IiwzMToibS9kL3l5IiwzMjoiaDptbTpzcyIsMzM6Img6bW06c3MiLDM0OiJoOm1tOnNzIiwzNToiaDptbTpzcyIsMzY6Im0vZC95eSIsNDE6J18oKiAjLCMjMF8pO18oKiAoIywjIzApO18oKiAiLSJfKTtfKEBfKScsNDI6J18oIiQiKiAjLCMjMF8pO18oIiQiKiAoIywjIzApO18oIiQiKiAiLSJfKTtfKEBfKScsNDM6J18oKiAjLCMjMC4wMF8pO18oKiAoIywjIzAuMDApO18oKiAiLSI/P18pO18oQF8pJyw0NDonXygiJCIqICMsIyMwLjAwXyk7XygiJCIqICgjLCMjMC4wMCk7XygiJCIqICItIj8/Xyk7XyhAXyknLDUwOiJtL2QveXkiLDUxOiJtL2QveXkiLDUyOiJtL2QveXkiLDUzOiJtL2QveXkiLDU0OiJtL2QveXkiLDU1OiJtL2QveXkiLDU2OiJtL2QveXkiLDU3OiJtL2QveXkiLDU4OiJtL2QveXkiLDU5OiIwIiw2MDoiMC4wMCIsNjE6IiMsIyMwIiw2MjoiIywjIzAuMDAiLDYzOiciJCIjLCMjMF8pO1xcKCIkIiMsIyMwXFwpJyw2NDonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw2NTonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsNjY6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNjc6IjAlIiw2ODoiMC4wMCUiLDY5OiIjID8vPyIsNzA6IiMgPz8vPz8iLDcxOiJtL2QveXkiLDcyOiJtL2QveXkiLDczOiJkLW1tbS15eSIsNzQ6ImQtbW1tIiw3NToibW1tLXl5Iiw3NjoiaDptbSIsNzc6Img6bW06c3MiLDc4OiJtL2QveXkgaDptbSIsNzk6Im1tOnNzIiw4MDoiW2hdOm1tOnNzIiw4MToibW1zcy4wIn0sZjA9L1tkRF0rfFttTV0rfFt5WWVFXSt8W0hoXSt8W1NzXSsvZztmdW5jdGlvbiBTYyhlKXt2YXIgYT10eXBlb2YgZT09Im51bWJlciI/VGVbZV06ZTtyZXR1cm4gYT1hLnJlcGxhY2UoZjAsIihcXGQrKSIpLGYwLmxhc3RJbmRleD0wLG5ldyBSZWdFeHAoIl4iK2ErIiQiKX1mdW5jdGlvbiBDYyhlLGEscil7dmFyIHQ9LTEsbj0tMSxpPS0xLGY9LTEscz0tMSxjPS0xOyhhLm1hdGNoKGYwKXx8W10pLmZvckVhY2goZnVuY3Rpb24odSx4KXt2YXIgaD1wYXJzZUludChyW3grMV0sMTApO3N3aXRjaCh1LnRvTG93ZXJDYXNlKCkuY2hhckF0KDApKXtjYXNlInkiOnQ9aDticmVhaztjYXNlImQiOmk9aDticmVhaztjYXNlImgiOmY9aDticmVhaztjYXNlInMiOmM9aDticmVhaztjYXNlIm0iOmY+PTA/cz1oOm49aDticmVha319KSxmMC5sYXN0SW5kZXg9MCxjPj0wJiZzPT0tMSYmbj49MCYmKHM9bixuPS0xKTt2YXIgbz0oIiIrKHQ+PTA/dDpuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpKS5zbGljZSgtNCkrIi0iKygiMDAiKyhuPj0xP246MSkpLnNsaWNlKC0yKSsiLSIrKCIwMCIrKGk+PTE/aToxKSkuc2xpY2UoLTIpO28ubGVuZ3RoPT03JiYobz0iMCIrbyksby5sZW5ndGg9PTgmJihvPSIyMCIrbyk7dmFyIGw9KCIwMCIrKGY+PTA/ZjowKSkuc2xpY2UoLTIpKyI6IisoIjAwIisocz49MD9zOjApKS5zbGljZSgtMikrIjoiKygiMDAiKyhjPj0wP2M6MCkpLnNsaWNlKC0yKTtyZXR1cm4gZj09LTEmJnM9PS0xJiZjPT0tMT9vOnQ9PS0xJiZuPT0tMSYmaT09LTE/bDpvKyJUIitsfXZhciBiYz17ImQubSI6ImRcXC5tIn07ZnVuY3Rpb24gTGEoZSxhKXtyZXR1cm4gQWMoYmNbZV18fGUsYSl9dmFyIGxpPWZ1bmN0aW9uKCl7dmFyIGU9e307ZS52ZXJzaW9uPSIxLjIuMCI7ZnVuY3Rpb24gYSgpe2Zvcih2YXIgYj0wLE49bmV3IEFycmF5KDI1NiksRD0wO0QhPTI1NjsrK0QpYj1ELGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxiPWImMT8tMzA2Njc0OTEyXmI+Pj4xOmI+Pj4xLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxiPWImMT8tMzA2Njc0OTEyXmI+Pj4xOmI+Pj4xLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxOW0RdPWI7cmV0dXJuIHR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcgSW50MzJBcnJheShOKTpOfXZhciByPWEoKTtmdW5jdGlvbiB0KGIpe3ZhciBOPTAsRD0wLEI9MCxMPXR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcgSW50MzJBcnJheSg0MDk2KTpuZXcgQXJyYXkoNDA5Nik7Zm9yKEI9MDtCIT0yNTY7KytCKUxbQl09YltCXTtmb3IoQj0wO0IhPTI1NjsrK0IpZm9yKEQ9YltCXSxOPTI1NitCO048NDA5NjtOKz0yNTYpRD1MW05dPUQ+Pj44XmJbRCYyNTVdO3ZhciBHPVtdO2ZvcihCPTE7QiE9MTY7KytCKUdbQi0xXT10eXBlb2YgSW50MzJBcnJheTwidSImJnR5cGVvZiBMLnN1YmFycmF5PT0iZnVuY3Rpb24iP0wuc3ViYXJyYXkoQioyNTYsQioyNTYrMjU2KTpMLnNsaWNlKEIqMjU2LEIqMjU2KzI1Nik7cmV0dXJuIEd9dmFyIG49dChyKSxpPW5bMF0sZj1uWzFdLHM9blsyXSxjPW5bM10sbz1uWzRdLGw9bls1XSx1PW5bNl0seD1uWzddLGg9bls4XSxnPW5bOV0sbT1uWzEwXSxkPW5bMTFdLHA9blsxMl0sdz1uWzEzXSxfPW5bMTRdO2Z1bmN0aW9uIHkoYixOKXtmb3IodmFyIEQ9Tl4tMSxCPTAsTD1iLmxlbmd0aDtCPEw7KUQ9RD4+PjheclsoRF5iLmNoYXJDb2RlQXQoQisrKSkmMjU1XTtyZXR1cm5+RH1mdW5jdGlvbiBSKGIsTil7Zm9yKHZhciBEPU5eLTEsQj1iLmxlbmd0aC0xNSxMPTA7TDxCOylEPV9bYltMKytdXkQmMjU1XV53W2JbTCsrXV5EPj44JjI1NV1ecFtiW0wrK11eRD4+MTYmMjU1XV5kW2JbTCsrXV5EPj4+MjRdXm1bYltMKytdXV5nW2JbTCsrXV1eaFtiW0wrK11dXnhbYltMKytdXV51W2JbTCsrXV1ebFtiW0wrK11dXm9bYltMKytdXV5jW2JbTCsrXV1ec1tiW0wrK11dXmZbYltMKytdXV5pW2JbTCsrXV1ecltiW0wrK11dO2ZvcihCKz0xNTtMPEI7KUQ9RD4+PjheclsoRF5iW0wrK10pJjI1NV07cmV0dXJufkR9ZnVuY3Rpb24gUChiLE4pe2Zvcih2YXIgRD1OXi0xLEI9MCxMPWIubGVuZ3RoLEc9MCxpZT0wO0I8TDspRz1iLmNoYXJDb2RlQXQoQisrKSxHPDEyOD9EPUQ+Pj44XnJbKEReRykmMjU1XTpHPDIwNDg/KEQ9RD4+PjheclsoRF4oMTkyfEc+PjYmMzEpKSYyNTVdLEQ9RD4+PjheclsoRF4oMTI4fEcmNjMpKSYyNTVdKTpHPj01NTI5NiYmRzw1NzM0ND8oRz0oRyYxMDIzKSs2NCxpZT1iLmNoYXJDb2RlQXQoQisrKSYxMDIzLEQ9RD4+PjheclsoRF4oMjQwfEc+PjgmNykpJjI1NV0sRD1EPj4+OF5yWyhEXigxMjh8Rz4+MiY2MykpJjI1NV0sRD1EPj4+OF5yWyhEXigxMjh8aWU+PjYmMTV8KEcmMyk8PDQpKSYyNTVdLEQ9RD4+PjheclsoRF4oMTI4fGllJjYzKSkmMjU1XSk6KEQ9RD4+PjheclsoRF4oMjI0fEc+PjEyJjE1KSkmMjU1XSxEPUQ+Pj44XnJbKEReKDEyOHxHPj42JjYzKSkmMjU1XSxEPUQ+Pj44XnJbKEReKDEyOHxHJjYzKSkmMjU1XSk7cmV0dXJufkR9cmV0dXJuIGUudGFibGU9cixlLmJzdHI9eSxlLmJ1Zj1SLGUuc3RyPVAsZX0oKSxNZT1mdW5jdGlvbigpe3ZhciBhPXt9O2EudmVyc2lvbj0iMS4yLjIiO2Z1bmN0aW9uIHIodixUKXtmb3IodmFyIGs9di5zcGxpdCgiLyIpLEY9VC5zcGxpdCgiLyIpLEU9MCxTPTAsVz1NYXRoLm1pbihrLmxlbmd0aCxGLmxlbmd0aCk7RTxXOysrRSl7aWYoUz1rW0VdLmxlbmd0aC1GW0VdLmxlbmd0aClyZXR1cm4gUztpZihrW0VdIT1GW0VdKXJldHVybiBrW0VdPEZbRV0/LTE6MX1yZXR1cm4gay5sZW5ndGgtRi5sZW5ndGh9ZnVuY3Rpb24gdCh2KXtpZih2LmNoYXJBdCh2Lmxlbmd0aC0xKT09Ii8iKXJldHVybiB2LnNsaWNlKDAsLTEpLmluZGV4T2YoIi8iKT09PS0xP3Y6dCh2LnNsaWNlKDAsLTEpKTt2YXIgVD12Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIFQ9PT0tMT92OnYuc2xpY2UoMCxUKzEpfWZ1bmN0aW9uIG4odil7aWYodi5jaGFyQXQodi5sZW5ndGgtMSk9PSIvIilyZXR1cm4gbih2LnNsaWNlKDAsLTEpKTt2YXIgVD12Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIFQ9PT0tMT92OnYuc2xpY2UoVCsxKX1mdW5jdGlvbiBpKHYsVCl7dHlwZW9mIFQ9PSJzdHJpbmciJiYoVD1uZXcgRGF0ZShUKSk7dmFyIGs9VC5nZXRIb3VycygpO2s9azw8NnxULmdldE1pbnV0ZXMoKSxrPWs8PDV8VC5nZXRTZWNvbmRzKCk+Pj4xLHYud3JpdGVfc2hpZnQoMixrKTt2YXIgRj1ULmdldEZ1bGxZZWFyKCktMTk4MDtGPUY8PDR8VC5nZXRNb250aCgpKzEsRj1GPDw1fFQuZ2V0RGF0ZSgpLHYud3JpdGVfc2hpZnQoMixGKX1mdW5jdGlvbiBmKHYpe3ZhciBUPXYucmVhZF9zaGlmdCgyKSY2NTUzNSxrPXYucmVhZF9zaGlmdCgyKSY2NTUzNSxGPW5ldyBEYXRlLEU9ayYzMTtrPj4+PTU7dmFyIFM9ayYxNTtrPj4+PTQsRi5zZXRNaWxsaXNlY29uZHMoMCksRi5zZXRGdWxsWWVhcihrKzE5ODApLEYuc2V0TW9udGgoUy0xKSxGLnNldERhdGUoRSk7dmFyIFc9VCYzMTtUPj4+PTU7dmFyIEs9VCY2MztyZXR1cm4gVD4+Pj02LEYuc2V0SG91cnMoVCksRi5zZXRNaW51dGVzKEspLEYuc2V0U2Vjb25kcyhXPDwxKSxGfWZ1bmN0aW9uIHModil7c3IodiwwKTtmb3IodmFyIFQ9e30saz0wO3YubDw9di5sZW5ndGgtNDspe3ZhciBGPXYucmVhZF9zaGlmdCgyKSxFPXYucmVhZF9zaGlmdCgyKSxTPXYubCtFLFc9e307c3dpdGNoKEYpe2Nhc2UgMjE1ODk6az12LnJlYWRfc2hpZnQoMSksayYxJiYoVy5tdGltZT12LnJlYWRfc2hpZnQoNCkpLEU+NSYmKGsmMiYmKFcuYXRpbWU9di5yZWFkX3NoaWZ0KDQpKSxrJjQmJihXLmN0aW1lPXYucmVhZF9zaGlmdCg0KSkpLFcubXRpbWUmJihXLm10PW5ldyBEYXRlKFcubXRpbWUqMWUzKSk7YnJlYWs7Y2FzZSAxOnt2YXIgSz12LnJlYWRfc2hpZnQoNCksSD12LnJlYWRfc2hpZnQoNCk7Vy51c3o9SCpNYXRoLnBvdygyLDMyKStLLEs9di5yZWFkX3NoaWZ0KDQpLEg9di5yZWFkX3NoaWZ0KDQpLFcuY3N6PUgqTWF0aC5wb3coMiwzMikrS31icmVha312Lmw9UyxUW0ZdPVd9cmV0dXJuIFR9dmFyIGM7ZnVuY3Rpb24gbygpe3JldHVybiBjfHwoYz1EYyl9ZnVuY3Rpb24gbCh2LFQpe2lmKHZbMF09PTgwJiZ2WzFdPT03NSlyZXR1cm4gUXQodixUKTtpZigodlswXXwzMik9PTEwOSYmKHZbMV18MzIpPT0xMDUpcmV0dXJuIHd0KHYsVCk7aWYodi5sZW5ndGg8NTEyKXRocm93IG5ldyBFcnJvcigiQ0ZCIGZpbGUgc2l6ZSAiK3YubGVuZ3RoKyIgPCA1MTIiKTt2YXIgaz0zLEY9NTEyLEU9MCxTPTAsVz0wLEs9MCxIPTAsVj1bXSxYPXYuc2xpY2UoMCw1MTIpO3NyKFgsMCk7dmFyIGFlPXUoWCk7c3dpdGNoKGs9YWVbMF0sayl7Y2FzZSAzOkY9NTEyO2JyZWFrO2Nhc2UgNDpGPTQwOTY7YnJlYWs7Y2FzZSAwOmlmKGFlWzFdPT0wKXJldHVybiBRdCh2LFQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJNYWpvciBWZXJzaW9uOiBFeHBlY3RlZCAzIG9yIDQgc2F3ICIrayl9RiE9PTUxMiYmKFg9di5zbGljZSgwLEYpLHNyKFgsMjgpKTt2YXIgc2U9di5zbGljZSgwLEYpO3goWCxrKTt2YXIgdmU9WC5yZWFkX3NoaWZ0KDQsImkiKTtpZihrPT09MyYmdmUhPT0wKXRocm93IG5ldyBFcnJvcigiIyBEaXJlY3RvcnkgU2VjdG9yczogRXhwZWN0ZWQgMCBzYXcgIit2ZSk7WC5sKz00LFc9WC5yZWFkX3NoaWZ0KDQsImkiKSxYLmwrPTQsWC5jaGsoIjAwMTAwMDAwIiwiTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemU6ICIpLEs9WC5yZWFkX3NoaWZ0KDQsImkiKSxFPVgucmVhZF9zaGlmdCg0LCJpIiksSD1YLnJlYWRfc2hpZnQoNCwiaSIpLFM9WC5yZWFkX3NoaWZ0KDQsImkiKTtmb3IodmFyIHRlPS0xLGNlPTA7Y2U8MTA5JiYodGU9WC5yZWFkX3NoaWZ0KDQsImkiKSwhKHRlPDApKTsrK2NlKVZbY2VdPXRlO3ZhciBTZT1oKHYsRik7ZChILFMsU2UsRixWKTt2YXIgSmU9dyhTZSxXLFYsRik7VzxKZS5sZW5ndGgmJihKZVtXXS5uYW1lPSIhRGlyZWN0b3J5IiksRT4wJiZLIT09aWUmJihKZVtLXS5uYW1lPSIhTWluaUZBVCIpLEplW1ZbMF1dLm5hbWU9IiFGQVQiLEplLmZhdF9hZGRycz1WLEplLnNzej1GO3ZhciBRZT17fSxUcj1bXSxlMD1bXSxyMD1bXTtfKFcsSmUsU2UsVHIsRSxRZSxlMCxLKSxnKGUwLHIwLFRyKSxUci5zaGlmdCgpO3ZhciBhMD17RmlsZUluZGV4OmUwLEZ1bGxQYXRoczpyMH07cmV0dXJuIFQmJlQucmF3JiYoYTAucmF3PXtoZWFkZXI6c2Usc2VjdG9yczpTZX0pLGEwfWZ1bmN0aW9uIHUodil7aWYodlt2LmxdPT04MCYmdlt2LmwrMV09PTc1KXJldHVyblswLDBdO3YuY2hrKG5lLCJIZWFkZXIgU2lnbmF0dXJlOiAiKSx2LmwrPTE2O3ZhciBUPXYucmVhZF9zaGlmdCgyLCJ1Iik7cmV0dXJuW3YucmVhZF9zaGlmdCgyLCJ1IiksVF19ZnVuY3Rpb24geCh2LFQpe3ZhciBrPTk7c3dpdGNoKHYubCs9MixrPXYucmVhZF9zaGlmdCgyKSl7Y2FzZSA5OmlmKFQhPTMpdGhyb3cgbmV3IEVycm9yKCJTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgc2F3ICIrayk7YnJlYWs7Y2FzZSAxMjppZihUIT00KXRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCAxMiBzYXcgIitrKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IG9yIDEyIHNhdyAiK2spfXYuY2hrKCIwNjAwIiwiTWluaSBTZWN0b3IgU2hpZnQ6ICIpLHYuY2hrKCIwMDAwMDAwMDAwMDAiLCJSZXNlcnZlZDogIil9ZnVuY3Rpb24gaCh2LFQpe2Zvcih2YXIgaz1NYXRoLmNlaWwodi5sZW5ndGgvVCktMSxGPVtdLEU9MTtFPGs7KytFKUZbRS0xXT12LnNsaWNlKEUqVCwoRSsxKSpUKTtyZXR1cm4gRltrLTFdPXYuc2xpY2UoaypUKSxGfWZ1bmN0aW9uIGcodixULGspe2Zvcih2YXIgRj0wLEU9MCxTPTAsVz0wLEs9MCxIPWsubGVuZ3RoLFY9W10sWD1bXTtGPEg7KytGKVZbRl09WFtGXT1GLFRbRl09a1tGXTtmb3IoO0s8WC5sZW5ndGg7KytLKUY9WFtLXSxFPXZbRl0uTCxTPXZbRl0uUixXPXZbRl0uQyxWW0ZdPT09RiYmKEUhPT0tMSYmVltFXSE9PUUmJihWW0ZdPVZbRV0pLFMhPT0tMSYmVltTXSE9PVMmJihWW0ZdPVZbU10pKSxXIT09LTEmJihWW1ddPUYpLEUhPT0tMSYmRiE9VltGXSYmKFZbRV09VltGXSxYLmxhc3RJbmRleE9mKEUpPEsmJlgucHVzaChFKSksUyE9PS0xJiZGIT1WW0ZdJiYoVltTXT1WW0ZdLFgubGFzdEluZGV4T2YoUyk8SyYmWC5wdXNoKFMpKTtmb3IoRj0xO0Y8SDsrK0YpVltGXT09PUYmJihTIT09LTEmJlZbU10hPT1TP1ZbRl09VltTXTpFIT09LTEmJlZbRV0hPT1FJiYoVltGXT1WW0VdKSk7Zm9yKEY9MTtGPEg7KytGKWlmKHZbRl0udHlwZSE9PTApe2lmKEs9RixLIT1WW0tdKWRvIEs9VltLXSxUW0ZdPVRbS10rIi8iK1RbRl07d2hpbGUoSyE9PTAmJlZbS10hPT0tMSYmSyE9VltLXSk7VltGXT0tMX1mb3IoVFswXSs9Ii8iLEY9MTtGPEg7KytGKXZbRl0udHlwZSE9PTImJihUW0ZdKz0iLyIpfWZ1bmN0aW9uIG0odixULGspe2Zvcih2YXIgRj12LnN0YXJ0LEU9di5zaXplLFM9W10sVz1GO2smJkU+MCYmVz49MDspUy5wdXNoKFQuc2xpY2UoVypHLFcqRytHKSksRS09RyxXPVdhKGssVyo0KTtyZXR1cm4gUy5sZW5ndGg9PT0wP2ZyKDApOnlhKFMpLnNsaWNlKDAsdi5zaXplKX1mdW5jdGlvbiBkKHYsVCxrLEYsRSl7dmFyIFM9aWU7aWYodj09PWllKXtpZihUIT09MCl0aHJvdyBuZXcgRXJyb3IoIkRJRkFUIGNoYWluIHNob3J0ZXIgdGhhbiBleHBlY3RlZCIpfWVsc2UgaWYodiE9PS0xKXt2YXIgVz1rW3ZdLEs9KEY+Pj4yKS0xO2lmKCFXKXJldHVybjtmb3IodmFyIEg9MDtIPEsmJihTPVdhKFcsSCo0KSkhPT1pZTsrK0gpRS5wdXNoKFMpO1Q+PTEmJmQoV2EoVyxGLTQpLFQtMSxrLEYsRSl9fWZ1bmN0aW9uIHAodixULGssRixFKXt2YXIgUz1bXSxXPVtdO0V8fChFPVtdKTt2YXIgSz1GLTEsSD0wLFY9MDtmb3IoSD1UO0g+PTA7KXtFW0hdPSEwLFNbUy5sZW5ndGhdPUgsVy5wdXNoKHZbSF0pO3ZhciBYPWtbTWF0aC5mbG9vcihIKjQvRildO2lmKFY9SCo0JkssRjw0K1YpdGhyb3cgbmV3IEVycm9yKCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogIitIKyIgNCAiK0YpO2lmKCF2W1hdKWJyZWFrO0g9V2EodltYXSxWKX1yZXR1cm57bm9kZXM6UyxkYXRhOkRpKFtXXSl9fWZ1bmN0aW9uIHcodixULGssRil7dmFyIEU9di5sZW5ndGgsUz1bXSxXPVtdLEs9W10sSD1bXSxWPUYtMSxYPTAsYWU9MCxzZT0wLHZlPTA7Zm9yKFg9MDtYPEU7KytYKWlmKEs9W10sc2U9WCtULHNlPj1FJiYoc2UtPUUpLCFXW3NlXSl7SD1bXTt2YXIgdGU9W107Zm9yKGFlPXNlO2FlPj0wOyl7dGVbYWVdPSEwLFdbYWVdPSEwLEtbSy5sZW5ndGhdPWFlLEgucHVzaCh2W2FlXSk7dmFyIGNlPWtbTWF0aC5mbG9vcihhZSo0L0YpXTtpZih2ZT1hZSo0JlYsRjw0K3ZlKXRocm93IG5ldyBFcnJvcigiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6ICIrYWUrIiA0ICIrRik7aWYoIXZbY2VdfHwoYWU9V2EodltjZV0sdmUpLHRlW2FlXSkpYnJlYWt9U1tzZV09e25vZGVzOkssZGF0YTpEaShbSF0pfX1yZXR1cm4gU31mdW5jdGlvbiBfKHYsVCxrLEYsRSxTLFcsSyl7Zm9yKHZhciBIPTAsVj1GLmxlbmd0aD8yOjAsWD1UW3ZdLmRhdGEsYWU9MCxzZT0wLHZlO2FlPFgubGVuZ3RoO2FlKz0xMjgpe3ZhciB0ZT1YLnNsaWNlKGFlLGFlKzEyOCk7c3IodGUsNjQpLHNlPXRlLnJlYWRfc2hpZnQoMiksdmU9ZW4odGUsMCxzZS1WKSxGLnB1c2godmUpO3ZhciBjZT17bmFtZTp2ZSx0eXBlOnRlLnJlYWRfc2hpZnQoMSksY29sb3I6dGUucmVhZF9zaGlmdCgxKSxMOnRlLnJlYWRfc2hpZnQoNCwiaSIpLFI6dGUucmVhZF9zaGlmdCg0LCJpIiksQzp0ZS5yZWFkX3NoaWZ0KDQsImkiKSxjbHNpZDp0ZS5yZWFkX3NoaWZ0KDE2KSxzdGF0ZTp0ZS5yZWFkX3NoaWZ0KDQsImkiKSxzdGFydDowLHNpemU6MH0sU2U9dGUucmVhZF9zaGlmdCgyKSt0ZS5yZWFkX3NoaWZ0KDIpK3RlLnJlYWRfc2hpZnQoMikrdGUucmVhZF9zaGlmdCgyKTtTZSE9PTAmJihjZS5jdD15KHRlLHRlLmwtOCkpO3ZhciBKZT10ZS5yZWFkX3NoaWZ0KDIpK3RlLnJlYWRfc2hpZnQoMikrdGUucmVhZF9zaGlmdCgyKSt0ZS5yZWFkX3NoaWZ0KDIpO0plIT09MCYmKGNlLm10PXkodGUsdGUubC04KSksY2Uuc3RhcnQ9dGUucmVhZF9zaGlmdCg0LCJpIiksY2Uuc2l6ZT10ZS5yZWFkX3NoaWZ0KDQsImkiKSxjZS5zaXplPDAmJmNlLnN0YXJ0PDAmJihjZS5zaXplPWNlLnR5cGU9MCxjZS5zdGFydD1pZSxjZS5uYW1lPSIiKSxjZS50eXBlPT09NT8oSD1jZS5zdGFydCxFPjAmJkghPT1pZSYmKFRbSF0ubmFtZT0iIVN0cmVhbURhdGEiKSk6Y2Uuc2l6ZT49NDA5Nj8oY2Uuc3RvcmFnZT0iZmF0IixUW2NlLnN0YXJ0XT09PXZvaWQgMCYmKFRbY2Uuc3RhcnRdPXAoayxjZS5zdGFydCxULmZhdF9hZGRycyxULnNzeikpLFRbY2Uuc3RhcnRdLm5hbWU9Y2UubmFtZSxjZS5jb250ZW50PVRbY2Uuc3RhcnRdLmRhdGEuc2xpY2UoMCxjZS5zaXplKSk6KGNlLnN0b3JhZ2U9Im1pbmlmYXQiLGNlLnNpemU8MD9jZS5zaXplPTA6SCE9PWllJiZjZS5zdGFydCE9PWllJiZUW0hdJiYoY2UuY29udGVudD1tKGNlLFRbSF0uZGF0YSwoVFtLXXx8e30pLmRhdGEpKSksY2UuY29udGVudCYmc3IoY2UuY29udGVudCwwKSxTW3ZlXT1jZSxXLnB1c2goY2UpfX1mdW5jdGlvbiB5KHYsVCl7cmV0dXJuIG5ldyBEYXRlKChOcih2LFQrNCkvMWU3Kk1hdGgucG93KDIsMzIpK05yKHYsVCkvMWU3LTExNjQ0NDczNjAwKSoxZTMpfWZ1bmN0aW9uIFIodixUKXtyZXR1cm4gbygpLGwoYy5yZWFkRmlsZVN5bmModiksVCl9ZnVuY3Rpb24gUCh2LFQpe3ZhciBrPVQmJlQudHlwZTtzd2l0Y2goa3x8TmUmJkJ1ZmZlci5pc0J1ZmZlcih2KSYmKGs9ImJ1ZmZlciIpLGt8fCJiYXNlNjQiKXtjYXNlImZpbGUiOnJldHVybiBSKHYsVCk7Y2FzZSJiYXNlNjQiOnJldHVybiBsKElyKERyKHYpKSxUKTtjYXNlImJpbmFyeSI6cmV0dXJuIGwoSXIodiksVCl9cmV0dXJuIGwodixUKX1mdW5jdGlvbiBiKHYsVCl7dmFyIGs9VHx8e30sRj1rLnJvb3R8fCJSb290IEVudHJ5IjtpZih2LkZ1bGxQYXRoc3x8KHYuRnVsbFBhdGhzPVtdKSx2LkZpbGVJbmRleHx8KHYuRmlsZUluZGV4PVtdKSx2LkZ1bGxQYXRocy5sZW5ndGghPT12LkZpbGVJbmRleC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpbmNvbnNpc3RlbnQgQ0ZCIHN0cnVjdHVyZSIpO3YuRnVsbFBhdGhzLmxlbmd0aD09PTAmJih2LkZ1bGxQYXRoc1swXT1GKyIvIix2LkZpbGVJbmRleFswXT17bmFtZTpGLHR5cGU6NX0pLGsuQ0xTSUQmJih2LkZpbGVJbmRleFswXS5jbHNpZD1rLkNMU0lEKSxOKHYpfWZ1bmN0aW9uIE4odil7dmFyIFQ9IgFTaDMzdEo1IjtpZighTWUuZmluZCh2LCIvIitUKSl7dmFyIGs9ZnIoNCk7a1swXT01NSxrWzFdPWtbM109NTAsa1syXT01NCx2LkZpbGVJbmRleC5wdXNoKHtuYW1lOlQsdHlwZToyLGNvbnRlbnQ6ayxzaXplOjQsTDo2OSxSOjY5LEM6Njl9KSx2LkZ1bGxQYXRocy5wdXNoKHYuRnVsbFBhdGhzWzBdK1QpLEQodil9fWZ1bmN0aW9uIEQodixUKXtiKHYpO2Zvcih2YXIgaz0hMSxGPSExLEU9di5GdWxsUGF0aHMubGVuZ3RoLTE7RT49MDstLUUpe3ZhciBTPXYuRmlsZUluZGV4W0VdO3N3aXRjaChTLnR5cGUpe2Nhc2UgMDpGP2s9ITA6KHYuRmlsZUluZGV4LnBvcCgpLHYuRnVsbFBhdGhzLnBvcCgpKTticmVhaztjYXNlIDE6Y2FzZSAyOmNhc2UgNTpGPSEwLGlzTmFOKFMuUipTLkwqUy5DKSYmKGs9ITApLFMuUj4tMSYmUy5MPi0xJiZTLlI9PVMuTCYmKGs9ITApO2JyZWFrO2RlZmF1bHQ6az0hMDticmVha319aWYoISghayYmIVQpKXt2YXIgVz1uZXcgRGF0ZSgxOTg3LDEsMTkpLEs9MCxIPU9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZShudWxsKTp7fSxWPVtdO2ZvcihFPTA7RTx2LkZ1bGxQYXRocy5sZW5ndGg7KytFKUhbdi5GdWxsUGF0aHNbRV1dPSEwLHYuRmlsZUluZGV4W0VdLnR5cGUhPT0wJiZWLnB1c2goW3YuRnVsbFBhdGhzW0VdLHYuRmlsZUluZGV4W0VdXSk7Zm9yKEU9MDtFPFYubGVuZ3RoOysrRSl7dmFyIFg9dChWW0VdWzBdKTtmb3IoRj1IW1hdOyFGOyl7Zm9yKDt0KFgpJiYhSFt0KFgpXTspWD10KFgpO1YucHVzaChbWCx7bmFtZTpuKFgpLnJlcGxhY2UoIi8iLCIiKSx0eXBlOjEsY2xzaWQ6bGUsY3Q6VyxtdDpXLGNvbnRlbnQ6bnVsbH1dKSxIW1hdPSEwLFg9dChWW0VdWzBdKSxGPUhbWF19fWZvcihWLnNvcnQoZnVuY3Rpb24odmUsdGUpe3JldHVybiByKHZlWzBdLHRlWzBdKX0pLHYuRnVsbFBhdGhzPVtdLHYuRmlsZUluZGV4PVtdLEU9MDtFPFYubGVuZ3RoOysrRSl2LkZ1bGxQYXRoc1tFXT1WW0VdWzBdLHYuRmlsZUluZGV4W0VdPVZbRV1bMV07Zm9yKEU9MDtFPFYubGVuZ3RoOysrRSl7dmFyIGFlPXYuRmlsZUluZGV4W0VdLHNlPXYuRnVsbFBhdGhzW0VdO2lmKGFlLm5hbWU9bihzZSkucmVwbGFjZSgiLyIsIiIpLGFlLkw9YWUuUj1hZS5DPS0oYWUuY29sb3I9MSksYWUuc2l6ZT1hZS5jb250ZW50P2FlLmNvbnRlbnQubGVuZ3RoOjAsYWUuc3RhcnQ9MCxhZS5jbHNpZD1hZS5jbHNpZHx8bGUsRT09PTApYWUuQz1WLmxlbmd0aD4xPzE6LTEsYWUuc2l6ZT0wLGFlLnR5cGU9NTtlbHNlIGlmKHNlLnNsaWNlKC0xKT09Ii8iKXtmb3IoSz1FKzE7SzxWLmxlbmd0aCYmdCh2LkZ1bGxQYXRoc1tLXSkhPXNlOysrSyk7Zm9yKGFlLkM9Sz49Vi5sZW5ndGg/LTE6SyxLPUUrMTtLPFYubGVuZ3RoJiZ0KHYuRnVsbFBhdGhzW0tdKSE9dChzZSk7KytLKTthZS5SPUs+PVYubGVuZ3RoPy0xOkssYWUudHlwZT0xfWVsc2UgdCh2LkZ1bGxQYXRoc1tFKzFdfHwiIik9PXQoc2UpJiYoYWUuUj1FKzEpLGFlLnR5cGU9Mn19fWZ1bmN0aW9uIEIodixUKXt2YXIgaz1UfHx7fTtpZihrLmZpbGVUeXBlPT0ibWFkIilyZXR1cm4gQm4odixrKTtzd2l0Y2goRCh2KSxrLmZpbGVUeXBlKXtjYXNlInppcCI6cmV0dXJuIEIwKHYsayl9dmFyIEY9ZnVuY3Rpb24odmUpe2Zvcih2YXIgdGU9MCxjZT0wLFNlPTA7U2U8dmUuRmlsZUluZGV4Lmxlbmd0aDsrK1NlKXt2YXIgSmU9dmUuRmlsZUluZGV4W1NlXTtpZihKZS5jb250ZW50KXt2YXIgUWU9SmUuY29udGVudC5sZW5ndGg7UWU+MCYmKFFlPDQwOTY/dGUrPVFlKzYzPj42OmNlKz1RZSs1MTE+PjkpfX1mb3IodmFyIFRyPXZlLkZ1bGxQYXRocy5sZW5ndGgrMz4+MixlMD10ZSs3Pj4zLHIwPXRlKzEyNz4+NyxhMD1lMCtjZStUcityMCx0dD1hMCsxMjc+PjcsSG49dHQ8PTEwOT8wOk1hdGguY2VpbCgodHQtMTA5KS8xMjcpO2EwK3R0K0huKzEyNz4+Nz50dDspSG49Kyt0dDw9MTA5PzA6TWF0aC5jZWlsKCh0dC0xMDkpLzEyNyk7dmFyIFRhPVsxLEhuLHR0LHIwLFRyLGNlLHRlLDBdO3JldHVybiB2ZS5GaWxlSW5kZXhbMF0uc2l6ZT10ZTw8NixUYVs3XT0odmUuRmlsZUluZGV4WzBdLnN0YXJ0PVRhWzBdK1RhWzFdK1RhWzJdK1RhWzNdK1RhWzRdK1RhWzVdKSsoVGFbNl0rNz4+MyksVGF9KHYpLEU9ZnIoRls3XTw8OSksUz0wLFc9MDt7Zm9yKFM9MDtTPDg7KytTKUUud3JpdGVfc2hpZnQoMSxxW1NdKTtmb3IoUz0wO1M8ODsrK1MpRS53cml0ZV9zaGlmdCgyLDApO2ZvcihFLndyaXRlX3NoaWZ0KDIsNjIpLEUud3JpdGVfc2hpZnQoMiwzKSxFLndyaXRlX3NoaWZ0KDIsNjU1MzQpLEUud3JpdGVfc2hpZnQoMiw5KSxFLndyaXRlX3NoaWZ0KDIsNiksUz0wO1M8MzsrK1MpRS53cml0ZV9zaGlmdCgyLDApO2ZvcihFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LEZbMl0pLEUud3JpdGVfc2hpZnQoNCxGWzBdK0ZbMV0rRlsyXStGWzNdLTEpLEUud3JpdGVfc2hpZnQoNCwwKSxFLndyaXRlX3NoaWZ0KDQsNDA5NiksRS53cml0ZV9zaGlmdCg0LEZbM10/RlswXStGWzFdK0ZbMl0tMTppZSksRS53cml0ZV9zaGlmdCg0LEZbM10pLEUud3JpdGVfc2hpZnQoLTQsRlsxXT9GWzBdLTE6aWUpLEUud3JpdGVfc2hpZnQoNCxGWzFdKSxTPTA7UzwxMDk7KytTKUUud3JpdGVfc2hpZnQoLTQsUzxGWzJdP0ZbMV0rUzotMSl9aWYoRlsxXSlmb3IoVz0wO1c8RlsxXTsrK1cpe2Zvcig7UzwyMzYrVyoxMjc7KytTKUUud3JpdGVfc2hpZnQoLTQsUzxGWzJdP0ZbMV0rUzotMSk7RS53cml0ZV9zaGlmdCgtNCxXPT09RlsxXS0xP2llOlcrMSl9dmFyIEs9ZnVuY3Rpb24odmUpe2ZvcihXKz12ZTtTPFctMTsrK1MpRS53cml0ZV9zaGlmdCgtNCxTKzEpO3ZlJiYoKytTLEUud3JpdGVfc2hpZnQoLTQsaWUpKX07Zm9yKFc9Uz0wLFcrPUZbMV07UzxXOysrUylFLndyaXRlX3NoaWZ0KC00LFEuRElGU0VDVCk7Zm9yKFcrPUZbMl07UzxXOysrUylFLndyaXRlX3NoaWZ0KC00LFEuRkFUU0VDVCk7SyhGWzNdKSxLKEZbNF0pO2Zvcih2YXIgSD0wLFY9MCxYPXYuRmlsZUluZGV4WzBdO0g8di5GaWxlSW5kZXgubGVuZ3RoOysrSClYPXYuRmlsZUluZGV4W0hdLFguY29udGVudCYmKFY9WC5jb250ZW50Lmxlbmd0aCwhKFY8NDA5NikmJihYLnN0YXJ0PVcsSyhWKzUxMT4+OSkpKTtmb3IoSyhGWzZdKzc+PjMpO0UubCY1MTE7KUUud3JpdGVfc2hpZnQoLTQsUS5FTkRPRkNIQUlOKTtmb3IoVz1TPTAsSD0wO0g8di5GaWxlSW5kZXgubGVuZ3RoOysrSClYPXYuRmlsZUluZGV4W0hdLFguY29udGVudCYmKFY9WC5jb250ZW50Lmxlbmd0aCwhKCFWfHxWPj00MDk2KSYmKFguc3RhcnQ9VyxLKFYrNjM+PjYpKSk7Zm9yKDtFLmwmNTExOylFLndyaXRlX3NoaWZ0KC00LFEuRU5ET0ZDSEFJTik7Zm9yKFM9MDtTPEZbNF08PDI7KytTKXt2YXIgYWU9di5GdWxsUGF0aHNbU107aWYoIWFlfHxhZS5sZW5ndGg9PT0wKXtmb3IoSD0wO0g8MTc7KytIKUUud3JpdGVfc2hpZnQoNCwwKTtmb3IoSD0wO0g8MzsrK0gpRS53cml0ZV9zaGlmdCg0LC0xKTtmb3IoSD0wO0g8MTI7KytIKUUud3JpdGVfc2hpZnQoNCwwKTtjb250aW51ZX1YPXYuRmlsZUluZGV4W1NdLFM9PT0wJiYoWC5zdGFydD1YLnNpemU/WC5zdGFydC0xOmllKTt2YXIgc2U9Uz09PTAmJmsucm9vdHx8WC5uYW1lO2lmKHNlLmxlbmd0aD4zMSYmKGNvbnNvbGUuZXJyb3IoIk5hbWUgIitzZSsiIHdpbGwgYmUgdHJ1bmNhdGVkIHRvICIrc2Uuc2xpY2UoMCwzMSkpLHNlPXNlLnNsaWNlKDAsMzEpKSxWPTIqKHNlLmxlbmd0aCsxKSxFLndyaXRlX3NoaWZ0KDY0LHNlLCJ1dGYxNmxlIiksRS53cml0ZV9zaGlmdCgyLFYpLEUud3JpdGVfc2hpZnQoMSxYLnR5cGUpLEUud3JpdGVfc2hpZnQoMSxYLmNvbG9yKSxFLndyaXRlX3NoaWZ0KC00LFguTCksRS53cml0ZV9zaGlmdCgtNCxYLlIpLEUud3JpdGVfc2hpZnQoLTQsWC5DKSxYLmNsc2lkKUUud3JpdGVfc2hpZnQoMTYsWC5jbHNpZCwiaGV4Iik7ZWxzZSBmb3IoSD0wO0g8NDsrK0gpRS53cml0ZV9zaGlmdCg0LDApO0Uud3JpdGVfc2hpZnQoNCxYLnN0YXRlfHwwKSxFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LDApLEUud3JpdGVfc2hpZnQoNCwwKSxFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LFguc3RhcnQpLEUud3JpdGVfc2hpZnQoNCxYLnNpemUpLEUud3JpdGVfc2hpZnQoNCwwKX1mb3IoUz0xO1M8di5GaWxlSW5kZXgubGVuZ3RoOysrUylpZihYPXYuRmlsZUluZGV4W1NdLFguc2l6ZT49NDA5NilpZihFLmw9WC5zdGFydCsxPDw5LE5lJiZCdWZmZXIuaXNCdWZmZXIoWC5jb250ZW50KSlYLmNvbnRlbnQuY29weShFLEUubCwwLFguc2l6ZSksRS5sKz1YLnNpemUrNTExJi01MTI7ZWxzZXtmb3IoSD0wO0g8WC5zaXplOysrSClFLndyaXRlX3NoaWZ0KDEsWC5jb250ZW50W0hdKTtmb3IoO0gmNTExOysrSClFLndyaXRlX3NoaWZ0KDEsMCl9Zm9yKFM9MTtTPHYuRmlsZUluZGV4Lmxlbmd0aDsrK1MpaWYoWD12LkZpbGVJbmRleFtTXSxYLnNpemU+MCYmWC5zaXplPDQwOTYpaWYoTmUmJkJ1ZmZlci5pc0J1ZmZlcihYLmNvbnRlbnQpKVguY29udGVudC5jb3B5KEUsRS5sLDAsWC5zaXplKSxFLmwrPVguc2l6ZSs2MyYtNjQ7ZWxzZXtmb3IoSD0wO0g8WC5zaXplOysrSClFLndyaXRlX3NoaWZ0KDEsWC5jb250ZW50W0hdKTtmb3IoO0gmNjM7KytIKUUud3JpdGVfc2hpZnQoMSwwKX1pZihOZSlFLmw9RS5sZW5ndGg7ZWxzZSBmb3IoO0UubDxFLmxlbmd0aDspRS53cml0ZV9zaGlmdCgxLDApO3JldHVybiBFfWZ1bmN0aW9uIEwodixUKXt2YXIgaz12LkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24oSCl7cmV0dXJuIEgudG9VcHBlckNhc2UoKX0pLEY9ay5tYXAoZnVuY3Rpb24oSCl7dmFyIFY9SC5zcGxpdCgiLyIpO3JldHVybiBWW1YubGVuZ3RoLShILnNsaWNlKC0xKT09Ii8iPzI6MSldfSksRT0hMTtULmNoYXJDb2RlQXQoMCk9PT00Nz8oRT0hMCxUPWtbMF0uc2xpY2UoMCwtMSkrVCk6RT1ULmluZGV4T2YoIi8iKSE9PS0xO3ZhciBTPVQudG9VcHBlckNhc2UoKSxXPUU9PT0hMD9rLmluZGV4T2YoUyk6Ri5pbmRleE9mKFMpO2lmKFchPT0tMSlyZXR1cm4gdi5GaWxlSW5kZXhbV107dmFyIEs9IVMubWF0Y2goRXQpO2ZvcihTPVMucmVwbGFjZShTciwiIiksSyYmKFM9Uy5yZXBsYWNlKEV0LCIhIikpLFc9MDtXPGsubGVuZ3RoOysrVylpZigoSz9rW1ddLnJlcGxhY2UoRXQsIiEiKTprW1ddKS5yZXBsYWNlKFNyLCIiKT09U3x8KEs/RltXXS5yZXBsYWNlKEV0LCIhIik6RltXXSkucmVwbGFjZShTciwiIik9PVMpcmV0dXJuIHYuRmlsZUluZGV4W1ddO3JldHVybiBudWxsfXZhciBHPTY0LGllPS0yLG5lPSJkMGNmMTFlMGExYjExYWUxIixxPVsyMDgsMjA3LDE3LDIyNCwxNjEsMTc3LDI2LDIyNV0sbGU9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIixRPXtNQVhSRUdTRUNUOi02LERJRlNFQ1Q6LTQsRkFUU0VDVDotMyxFTkRPRkNIQUlOOmllLEZSRUVTRUNUOi0xLEhFQURFUl9TSUdOQVRVUkU6bmUsSEVBREVSX01JTk9SX1ZFUlNJT046IjNlMDAiLE1BWFJFR1NJRDotNixOT1NUUkVBTTotMSxIRUFERVJfQ0xTSUQ6bGUsRW50cnlUeXBlczpbInVua25vd24iLCJzdG9yYWdlIiwic3RyZWFtIiwibG9ja2J5dGVzIiwicHJvcGVydHkiLCJyb290Il19O2Z1bmN0aW9uIGdlKHYsVCxrKXtvKCk7dmFyIEY9Qih2LGspO2Mud3JpdGVGaWxlU3luYyhULEYpfWZ1bmN0aW9uIHVlKHYpe2Zvcih2YXIgVD1uZXcgQXJyYXkodi5sZW5ndGgpLGs9MDtrPHYubGVuZ3RoOysraylUW2tdPVN0cmluZy5mcm9tQ2hhckNvZGUodltrXSk7cmV0dXJuIFQuam9pbigiIil9ZnVuY3Rpb24gaih2LFQpe3ZhciBrPUIodixUKTtzd2l0Y2goVCYmVC50eXBlfHwiYnVmZmVyIil7Y2FzZSJmaWxlIjpyZXR1cm4gbygpLGMud3JpdGVGaWxlU3luYyhULmZpbGVuYW1lLGspLGs7Y2FzZSJiaW5hcnkiOnJldHVybiB0eXBlb2Ygaz09InN0cmluZyI/azp1ZShrKTtjYXNlImJhc2U2NCI6cmV0dXJuICRuKHR5cGVvZiBrPT0ic3RyaW5nIj9rOnVlKGspKTtjYXNlImJ1ZmZlciI6aWYoTmUpcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihrKT9rOkVhKGspO2Nhc2UiYXJyYXkiOnJldHVybiB0eXBlb2Ygaz09InN0cmluZyI/SXIoayk6a31yZXR1cm4ga312YXIgeWU7ZnVuY3Rpb24gYmUodil7dHJ5e3ZhciBUPXYuSW5mbGF0ZVJhdyxrPW5ldyBUO2lmKGsuX3Byb2Nlc3NDaHVuayhuZXcgVWludDhBcnJheShbMywwXSksay5fZmluaXNoRmx1c2hGbGFnKSxrLmJ5dGVzUmVhZCl5ZT12O2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJ6bGliIGRvZXMgbm90IGV4cG9zZSBieXRlc1JlYWQiKX1jYXRjaChGKXtjb25zb2xlLmVycm9yKCJjYW5ub3QgdXNlIG5hdGl2ZSB6bGliOiAiKyhGLm1lc3NhZ2V8fEYpKX19ZnVuY3Rpb24gbWUodixUKXtpZigheWUpcmV0dXJuIHF0KHYsVCk7dmFyIGs9eWUuSW5mbGF0ZVJhdyxGPW5ldyBrLEU9Ri5fcHJvY2Vzc0NodW5rKHYuc2xpY2Uodi5sKSxGLl9maW5pc2hGbHVzaEZsYWcpO3JldHVybiB2LmwrPUYuYnl0ZXNSZWFkLEV9ZnVuY3Rpb24gWih2KXtyZXR1cm4geWU/eWUuZGVmbGF0ZVJhd1N5bmModik6T2Eodil9dmFyIE9lPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSx3ZT1bMyw0LDUsNiw3LDgsOSwxMCwxMSwxMywxNSwxNywxOSwyMywyNywzMSwzNSw0Myw1MSw1OSw2Nyw4Myw5OSwxMTUsMTMxLDE2MywxOTUsMjI3LDI1OF0sQWU9WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3N107ZnVuY3Rpb24gQSh2KXt2YXIgVD0odjw8MXx2PDwxMSkmMTM5NTM2fCh2PDw1fHY8PDE1KSY1NTgxNDQ7cmV0dXJuKFQ+PjE2fFQ+Pjh8VCkmMjU1fWZvcih2YXIgVT10eXBlb2YgVWludDhBcnJheTwidSIsTz1VP25ldyBVaW50OEFycmF5KDI1Nik6W10sST0wO0k8MjU2OysrSSlPW0ldPUEoSSk7ZnVuY3Rpb24geih2LFQpe3ZhciBrPU9bdiYyNTVdO3JldHVybiBUPD04P2s+Pj44LVQ6KGs9azw8OHxPW3Y+PjgmMjU1XSxUPD0xNj9rPj4+MTYtVDooaz1rPDw4fE9bdj4+MTYmMjU1XSxrPj4+MjQtVCkpfWZ1bmN0aW9uIHBlKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTY/MDp2W0YrMV08PDgpKT4+PmsmM31mdW5jdGlvbiBKKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTU/MDp2W0YrMV08PDgpKT4+PmsmN31mdW5jdGlvbiByZSh2LFQpe3ZhciBrPVQmNyxGPVQ+Pj4zO3JldHVybih2W0ZdfChrPD00PzA6dltGKzFdPDw4KSk+Pj5rJjE1fWZ1bmN0aW9uIGVlKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTM/MDp2W0YrMV08PDgpKT4+PmsmMzF9ZnVuY3Rpb24ga2UodixUKXt2YXIgaz1UJjcsRj1UPj4+MztyZXR1cm4odltGXXwoazw9MT8wOnZbRisxXTw8OCkpPj4+ayYxMjd9ZnVuY3Rpb24gaGUodixULGspe3ZhciBGPVQmNyxFPVQ+Pj4zLFM9KDE8PGspLTEsVz12W0VdPj4+RjtyZXR1cm4gazw4LUZ8fChXfD12W0UrMV08PDgtRixrPDE2LUYpfHwoV3w9dltFKzJdPDwxNi1GLGs8MjQtRil8fChXfD12W0UrM108PDI0LUYpLFcmU31mdW5jdGlvbiB4ZSh2LFQsayl7dmFyIEY9VCY3LEU9VD4+PjM7cmV0dXJuIEY8PTU/dltFXXw9KGsmNyk8PEY6KHZbRV18PWs8PEYmMjU1LHZbRSsxXT0oayY3KT4+OC1GKSxUKzN9ZnVuY3Rpb24gWGUodixULGspe3ZhciBGPVQmNyxFPVQ+Pj4zO3JldHVybiBrPShrJjEpPDxGLHZbRV18PWssVCsxfWZ1bmN0aW9uIHplKHYsVCxrKXt2YXIgRj1UJjcsRT1UPj4+MztyZXR1cm4gazw8PUYsdltFXXw9ayYyNTUsaz4+Pj04LHZbRSsxXT1rLFQrOH1mdW5jdGlvbiBqZSh2LFQsayl7dmFyIEY9VCY3LEU9VD4+PjM7cmV0dXJuIGs8PD1GLHZbRV18PWsmMjU1LGs+Pj49OCx2W0UrMV09ayYyNTUsdltFKzJdPWs+Pj44LFQrMTZ9ZnVuY3Rpb24gZGUodixUKXt2YXIgaz12Lmxlbmd0aCxGPTIqaz5UPzIqazpUKzUsRT0wO2lmKGs+PVQpcmV0dXJuIHY7aWYoTmUpe3ZhciBTPUtuKEYpO2lmKHYuY29weSl2LmNvcHkoUyk7ZWxzZSBmb3IoO0U8di5sZW5ndGg7KytFKVNbRV09dltFXTtyZXR1cm4gU31lbHNlIGlmKFUpe3ZhciBXPW5ldyBVaW50OEFycmF5KEYpO2lmKFcuc2V0KVcuc2V0KHYpO2Vsc2UgZm9yKDtFPGs7KytFKVdbRV09dltFXTtyZXR1cm4gV31yZXR1cm4gdi5sZW5ndGg9Rix2fWZ1bmN0aW9uIFdlKHYpe2Zvcih2YXIgVD1uZXcgQXJyYXkodiksaz0wO2s8djsrK2spVFtrXT0wO3JldHVybiBUfWZ1bmN0aW9uIGZlKHYsVCxrKXt2YXIgRj0xLEU9MCxTPTAsVz0wLEs9MCxIPXYubGVuZ3RoLFY9VT9uZXcgVWludDE2QXJyYXkoMzIpOldlKDMyKTtmb3IoUz0wO1M8MzI7KytTKVZbU109MDtmb3IoUz1IO1M8azsrK1MpdltTXT0wO0g9di5sZW5ndGg7dmFyIFg9VT9uZXcgVWludDE2QXJyYXkoSCk6V2UoSCk7Zm9yKFM9MDtTPEg7KytTKVZbRT12W1NdXSsrLEY8RSYmKEY9RSksWFtTXT0wO2ZvcihWWzBdPTAsUz0xO1M8PUY7KytTKVZbUysxNl09Sz1LK1ZbUy0xXTw8MTtmb3IoUz0wO1M8SDsrK1MpSz12W1NdLEshPTAmJihYW1NdPVZbSysxNl0rKyk7dmFyIGFlPTA7Zm9yKFM9MDtTPEg7KytTKWlmKGFlPXZbU10sYWUhPTApZm9yKEs9eihYW1NdLEYpPj5GLWFlLFc9KDE8PEYrNC1hZSktMTtXPj0wOy0tVylUW0t8Vzw8YWVdPWFlJjE1fFM8PDQ7cmV0dXJuIEZ9dmFyIHNhPVU/bmV3IFVpbnQxNkFycmF5KDUxMik6V2UoNTEyKSxqcj1VP25ldyBVaW50MTZBcnJheSgzMik6V2UoMzIpO2lmKCFVKXtmb3IodmFyIFllPTA7WWU8NTEyOysrWWUpc2FbWWVdPTA7Zm9yKFllPTA7WWU8MzI7KytZZSlqcltZZV09MH0oZnVuY3Rpb24oKXtmb3IodmFyIHY9W10sVD0wO1Q8MzI7VCsrKXYucHVzaCg1KTtmZSh2LGpyLDMyKTt2YXIgaz1bXTtmb3IoVD0wO1Q8PTE0MztUKyspay5wdXNoKDgpO2Zvcig7VDw9MjU1O1QrKylrLnB1c2goOSk7Zm9yKDtUPD0yNzk7VCsrKWsucHVzaCg3KTtmb3IoO1Q8PTI4NztUKyspay5wdXNoKDgpO2ZlKGssc2EsMjg4KX0pKCk7dmFyIFJhPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPVU/bmV3IFVpbnQ4QXJyYXkoMzI3NjgpOltdLGs9MCxGPTA7azxBZS5sZW5ndGgtMTsrK2spZm9yKDtGPEFlW2srMV07KytGKVRbRl09aztmb3IoO0Y8MzI3Njg7KytGKVRbRl09Mjk7dmFyIEU9VT9uZXcgVWludDhBcnJheSgyNTkpOltdO2ZvcihrPTAsRj0wO2s8d2UubGVuZ3RoLTE7KytrKWZvcig7Rjx3ZVtrKzFdOysrRilFW0ZdPWs7ZnVuY3Rpb24gUyhLLEgpe2Zvcih2YXIgVj0wO1Y8Sy5sZW5ndGg7KXt2YXIgWD1NYXRoLm1pbig2NTUzNSxLLmxlbmd0aC1WKSxhZT1WK1g9PUsubGVuZ3RoO2ZvcihILndyaXRlX3NoaWZ0KDEsK2FlKSxILndyaXRlX3NoaWZ0KDIsWCksSC53cml0ZV9zaGlmdCgyLH5YJjY1NTM1KTtYLS0gPjA7KUhbSC5sKytdPUtbVisrXX1yZXR1cm4gSC5sfWZ1bmN0aW9uIFcoSyxIKXtmb3IodmFyIFY9MCxYPTAsYWU9VT9uZXcgVWludDE2QXJyYXkoMzI3NjgpOltdO1g8Sy5sZW5ndGg7KXt2YXIgc2U9TWF0aC5taW4oNjU1MzUsSy5sZW5ndGgtWCk7aWYoc2U8MTApe2ZvcihWPXhlKEgsViwrKFgrc2U9PUsubGVuZ3RoKSksViY3JiYoVis9OC0oViY3KSksSC5sPVYvOHwwLEgud3JpdGVfc2hpZnQoMixzZSksSC53cml0ZV9zaGlmdCgyLH5zZSY2NTUzNSk7c2UtLSA+MDspSFtILmwrK109S1tYKytdO1Y9SC5sKjg7Y29udGludWV9Vj14ZShILFYsKyhYK3NlPT1LLmxlbmd0aCkrMik7Zm9yKHZhciB2ZT0wO3NlLS0gPjA7KXt2YXIgdGU9S1tYXTt2ZT0odmU8PDVedGUpJjMyNzY3O3ZhciBjZT0tMSxTZT0wO2lmKChjZT1hZVt2ZV0pJiYoY2V8PVgmLTMyNzY4LGNlPlgmJihjZS09MzI3NjgpLGNlPFgpKWZvcig7S1tjZStTZV09PUtbWCtTZV0mJlNlPDI1MDspKytTZTtpZihTZT4yKXt0ZT1FW1NlXSx0ZTw9MjI/Vj16ZShILFYsT1t0ZSsxXT4+MSktMTooemUoSCxWLDMpLFYrPTUsemUoSCxWLE9bdGUtMjNdPj41KSxWKz0zKTt2YXIgSmU9dGU8OD8wOnRlLTQ+PjI7SmU+MCYmKGplKEgsVixTZS13ZVt0ZV0pLFYrPUplKSx0ZT1UW1gtY2VdLFY9emUoSCxWLE9bdGVdPj4zKSxWLT0zO3ZhciBRZT10ZTw0PzA6dGUtMj4+MTtRZT4wJiYoamUoSCxWLFgtY2UtQWVbdGVdKSxWKz1RZSk7Zm9yKHZhciBUcj0wO1RyPFNlOysrVHIpYWVbdmVdPVgmMzI3NjcsdmU9KHZlPDw1XktbWF0pJjMyNzY3LCsrWDtzZS09U2UtMX1lbHNlIHRlPD0xNDM/dGU9dGUrNDg6Vj1YZShILFYsMSksVj16ZShILFYsT1t0ZV0pLGFlW3ZlXT1YJjMyNzY3LCsrWH1WPXplKEgsViwwKS0xfXJldHVybiBILmw9KFYrNykvOHwwLEgubH1yZXR1cm4gZnVuY3Rpb24oSCxWKXtyZXR1cm4gSC5sZW5ndGg8OD9TKEgsVik6VyhILFYpfX0oKTtmdW5jdGlvbiBPYSh2KXt2YXIgVD1mcig1MCtNYXRoLmZsb29yKHYubGVuZ3RoKjEuMSkpLGs9UmEodixUKTtyZXR1cm4gVC5zbGljZSgwLGspfXZhciBFZT1VP25ldyBVaW50MTZBcnJheSgzMjc2OCk6V2UoMzI3NjgpLHJyPVU/bmV3IFVpbnQxNkFycmF5KDMyNzY4KTpXZSgzMjc2OCksRnI9VT9uZXcgVWludDE2QXJyYXkoMTI4KTpXZSgxMjgpLEZhPTEsQz0xO2Z1bmN0aW9uIEJyKHYsVCl7dmFyIGs9ZWUodixUKSsyNTc7VCs9NTt2YXIgRj1lZSh2LFQpKzE7VCs9NTt2YXIgRT1yZSh2LFQpKzQ7VCs9NDtmb3IodmFyIFM9MCxXPVU/bmV3IFVpbnQ4QXJyYXkoMTkpOldlKDE5KSxLPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSxIPTEsVj1VP25ldyBVaW50OEFycmF5KDgpOldlKDgpLFg9VT9uZXcgVWludDhBcnJheSg4KTpXZSg4KSxhZT1XLmxlbmd0aCxzZT0wO3NlPEU7KytzZSlXW09lW3NlXV09Uz1KKHYsVCksSDxTJiYoSD1TKSxWW1NdKyssVCs9Mzt2YXIgdmU9MDtmb3IoVlswXT0wLHNlPTE7c2U8PUg7KytzZSlYW3NlXT12ZT12ZStWW3NlLTFdPDwxO2ZvcihzZT0wO3NlPGFlOysrc2UpKHZlPVdbc2VdKSE9MCYmKEtbc2VdPVhbdmVdKyspO3ZhciB0ZT0wO2ZvcihzZT0wO3NlPGFlOysrc2UpaWYodGU9V1tzZV0sdGUhPTApe3ZlPU9bS1tzZV1dPj44LXRlO2Zvcih2YXIgY2U9KDE8PDctdGUpLTE7Y2U+PTA7LS1jZSlGclt2ZXxjZTw8dGVdPXRlJjd8c2U8PDN9dmFyIFNlPVtdO2ZvcihIPTE7U2UubGVuZ3RoPGsrRjspc3dpdGNoKHZlPUZyW2tlKHYsVCldLFQrPXZlJjcsdmU+Pj49Myl7Y2FzZSAxNjpmb3IoUz0zK3BlKHYsVCksVCs9Mix2ZT1TZVtTZS5sZW5ndGgtMV07Uy0tID4wOylTZS5wdXNoKHZlKTticmVhaztjYXNlIDE3OmZvcihTPTMrSih2LFQpLFQrPTM7Uy0tID4wOylTZS5wdXNoKDApO2JyZWFrO2Nhc2UgMTg6Zm9yKFM9MTEra2UodixUKSxUKz03O1MtLSA+MDspU2UucHVzaCgwKTticmVhaztkZWZhdWx0OlNlLnB1c2godmUpLEg8dmUmJihIPXZlKTticmVha312YXIgSmU9U2Uuc2xpY2UoMCxrKSxRZT1TZS5zbGljZShrKTtmb3Ioc2U9aztzZTwyODY7KytzZSlKZVtzZV09MDtmb3Ioc2U9RjtzZTwzMDsrK3NlKVFlW3NlXT0wO3JldHVybiBGYT1mZShKZSxFZSwyODYpLEM9ZmUoUWUscnIsMzApLFR9ZnVuY3Rpb24gbXQodixUKXtpZih2WzBdPT0zJiYhKHZbMV0mMykpcmV0dXJuW0FhKFQpLDJdO2Zvcih2YXIgaz0wLEY9MCxFPUtuKFR8fDE8PDE4KSxTPTAsVz1FLmxlbmd0aD4+PjAsSz0wLEg9MDshKEYmMSk7KXtpZihGPUoodixrKSxrKz0zLEY+Pj4xKUY+PjE9PTE/KEs9OSxIPTUpOihrPUJyKHYsayksSz1GYSxIPUMpO2Vsc2V7ayY3JiYoays9OC0oayY3KSk7dmFyIFY9dltrPj4+M118dlsoaz4+PjMpKzFdPDw4O2lmKGsrPTMyLFY+MClmb3IoIVQmJlc8UytWJiYoRT1kZShFLFMrViksVz1FLmxlbmd0aCk7Vi0tID4wOylFW1MrK109dltrPj4+M10says9ODtjb250aW51ZX1mb3IoOzspeyFUJiZXPFMrMzI3NjcmJihFPWRlKEUsUyszMjc2NyksVz1FLmxlbmd0aCk7dmFyIFg9aGUodixrLEspLGFlPUY+Pj4xPT0xP3NhW1hdOkVlW1hdO2lmKGsrPWFlJjE1LGFlPj4+PTQsIShhZT4+PjgmMjU1KSlFW1MrK109YWU7ZWxzZXtpZihhZT09MjU2KWJyZWFrO2FlLT0yNTc7dmFyIHNlPWFlPDg/MDphZS00Pj4yO3NlPjUmJihzZT0wKTt2YXIgdmU9Uyt3ZVthZV07c2U+MCYmKHZlKz1oZSh2LGssc2UpLGsrPXNlKSxYPWhlKHYsayxIKSxhZT1GPj4+MT09MT9qcltYXTpycltYXSxrKz1hZSYxNSxhZT4+Pj00O3ZhciB0ZT1hZTw0PzA6YWUtMj4+MSxjZT1BZVthZV07Zm9yKHRlPjAmJihjZSs9aGUodixrLHRlKSxrKz10ZSksIVQmJlc8dmUmJihFPWRlKEUsdmUrMTAwKSxXPUUubGVuZ3RoKTtTPHZlOylFW1NdPUVbUy1jZV0sKytTfX19cmV0dXJuIFQ/W0Usays3Pj4+M106W0Uuc2xpY2UoMCxTKSxrKzc+Pj4zXX1mdW5jdGlvbiBxdCh2LFQpe3ZhciBrPXYuc2xpY2Uodi5sfHwwKSxGPW10KGssVCk7cmV0dXJuIHYubCs9RlsxXSxGWzBdfWZ1bmN0aW9uIE5hKHYsVCl7aWYodil0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUuZXJyb3IoVCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoVCl9ZnVuY3Rpb24gUXQodixUKXt2YXIgaz12O3NyKGssMCk7dmFyIEY9W10sRT1bXSxTPXtGaWxlSW5kZXg6RixGdWxsUGF0aHM6RX07YihTLHtyb290OlQucm9vdH0pO2Zvcih2YXIgVz1rLmxlbmd0aC00OyhrW1ddIT04MHx8a1tXKzFdIT03NXx8a1tXKzJdIT01fHxrW1crM10hPTYpJiZXPj0wOyktLVc7ay5sPVcrNCxrLmwrPTQ7dmFyIEs9ay5yZWFkX3NoaWZ0KDIpO2subCs9Njt2YXIgSD1rLnJlYWRfc2hpZnQoNCk7Zm9yKGsubD1ILFc9MDtXPEs7KytXKXtrLmwrPTIwO3ZhciBWPWsucmVhZF9zaGlmdCg0KSxYPWsucmVhZF9zaGlmdCg0KSxhZT1rLnJlYWRfc2hpZnQoMiksc2U9ay5yZWFkX3NoaWZ0KDIpLHZlPWsucmVhZF9zaGlmdCgyKTtrLmwrPTg7dmFyIHRlPWsucmVhZF9zaGlmdCg0KSxjZT1zKGsuc2xpY2Uoay5sK2FlLGsubCthZStzZSkpO2subCs9YWUrc2UrdmU7dmFyIFNlPWsubDtrLmw9dGUrNCxjZSYmY2VbMV0mJigoY2VbMV18fHt9KS51c3omJihYPWNlWzFdLnVzeiksKGNlWzFdfHx7fSkuY3N6JiYoVj1jZVsxXS5jc3opKSxNYShrLFYsWCxTLGNlKSxrLmw9U2V9cmV0dXJuIFN9ZnVuY3Rpb24gTWEodixULGssRixFKXt2LmwrPTI7dmFyIFM9di5yZWFkX3NoaWZ0KDIpLFc9di5yZWFkX3NoaWZ0KDIpLEs9Zih2KTtpZihTJjgyNTcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBaSVAgZW5jcnlwdGlvbiIpO2Zvcih2YXIgSD12LnJlYWRfc2hpZnQoNCksVj12LnJlYWRfc2hpZnQoNCksWD12LnJlYWRfc2hpZnQoNCksYWU9di5yZWFkX3NoaWZ0KDIpLHNlPXYucmVhZF9zaGlmdCgyKSx2ZT0iIix0ZT0wO3RlPGFlOysrdGUpdmUrPVN0cmluZy5mcm9tQ2hhckNvZGUodlt2LmwrK10pO2lmKHNlKXt2YXIgY2U9cyh2LnNsaWNlKHYubCx2Lmwrc2UpKTsoY2VbMjE1ODldfHx7fSkubXQmJihLPWNlWzIxNTg5XS5tdCksKGNlWzFdfHx7fSkudXN6JiYoWD1jZVsxXS51c3opLChjZVsxXXx8e30pLmNzeiYmKFY9Y2VbMV0uY3N6KSxFJiYoKEVbMjE1ODldfHx7fSkubXQmJihLPUVbMjE1ODldLm10KSwoRVsxXXx8e30pLnVzeiYmKFg9RVsxXS51c3opLChFWzFdfHx7fSkuY3N6JiYoVj1FWzFdLmNzeikpfXYubCs9c2U7dmFyIFNlPXYuc2xpY2Uodi5sLHYubCtWKTtzd2l0Y2goVyl7Y2FzZSA4OlNlPW1lKHYsWCk7YnJlYWs7Y2FzZSAwOnYubCs9VjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgWklQIENvbXByZXNzaW9uIG1ldGhvZCAiK1cpfXZhciBKZT0hMTtTJjgmJihIPXYucmVhZF9zaGlmdCg0KSxIPT0xMzQ2OTU3NjAmJihIPXYucmVhZF9zaGlmdCg0KSxKZT0hMCksVj12LnJlYWRfc2hpZnQoNCksWD12LnJlYWRfc2hpZnQoNCkpLFYhPVQmJk5hKEplLCJCYWQgY29tcHJlc3NlZCBzaXplOiAiK1QrIiAhPSAiK1YpLFghPWsmJk5hKEplLCJCYWQgdW5jb21wcmVzc2VkIHNpemU6ICIraysiICE9ICIrWCksVXIoRix2ZSxTZSx7dW5zYWZlOiEwLG10Okt9KX1mdW5jdGlvbiBCMCh2LFQpe3ZhciBrPVR8fHt9LEY9W10sRT1bXSxTPWZyKDEpLFc9ay5jb21wcmVzc2lvbj84OjAsSz0wLEg9MCxWPTAsWD0wLGFlPTAsc2U9di5GdWxsUGF0aHNbMF0sdmU9c2UsdGU9di5GaWxlSW5kZXhbMF0sY2U9W10sU2U9MDtmb3IoSD0xO0g8di5GdWxsUGF0aHMubGVuZ3RoOysrSClpZih2ZT12LkZ1bGxQYXRoc1tIXS5zbGljZShzZS5sZW5ndGgpLHRlPXYuRmlsZUluZGV4W0hdLCEoIXRlLnNpemV8fCF0ZS5jb250ZW50fHxBcnJheS5pc0FycmF5KHRlLmNvbnRlbnQpJiZ0ZS5jb250ZW50Lmxlbmd0aD09MHx8dmU9PSIBU2gzM3RKNSIpKXt2YXIgSmU9WCxRZT1mcih2ZS5sZW5ndGgpO2ZvcihWPTA7Vjx2ZS5sZW5ndGg7KytWKVFlLndyaXRlX3NoaWZ0KDEsdmUuY2hhckNvZGVBdChWKSYxMjcpO1FlPVFlLnNsaWNlKDAsUWUubCksY2VbYWVdPXR5cGVvZiB0ZS5jb250ZW50PT0ic3RyaW5nIj9saS5ic3RyKHRlLmNvbnRlbnQsMCk6bGkuYnVmKHRlLmNvbnRlbnQsMCk7dmFyIFRyPXR5cGVvZiB0ZS5jb250ZW50PT0ic3RyaW5nIj9Jcih0ZS5jb250ZW50KTp0ZS5jb250ZW50O1c9PTgmJihUcj1aKFRyKSksUz1mcigzMCksUy53cml0ZV9zaGlmdCg0LDY3MzI0NzUyKSxTLndyaXRlX3NoaWZ0KDIsMjApLFMud3JpdGVfc2hpZnQoMixLKSxTLndyaXRlX3NoaWZ0KDIsVyksdGUubXQ/aShTLHRlLm10KTpTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCgtNCxjZVthZV0pLFMud3JpdGVfc2hpZnQoNCxUci5sZW5ndGgpLFMud3JpdGVfc2hpZnQoNCx0ZS5jb250ZW50Lmxlbmd0aCksUy53cml0ZV9zaGlmdCgyLFFlLmxlbmd0aCksUy53cml0ZV9zaGlmdCgyLDApLFgrPVMubGVuZ3RoLEYucHVzaChTKSxYKz1RZS5sZW5ndGgsRi5wdXNoKFFlKSxYKz1Uci5sZW5ndGgsRi5wdXNoKFRyKSxTPWZyKDQ2KSxTLndyaXRlX3NoaWZ0KDQsMzM2MzkyNDgpLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsMjApLFMud3JpdGVfc2hpZnQoMixLKSxTLndyaXRlX3NoaWZ0KDIsVyksUy53cml0ZV9zaGlmdCg0LDApLFMud3JpdGVfc2hpZnQoLTQsY2VbYWVdKSxTLndyaXRlX3NoaWZ0KDQsVHIubGVuZ3RoKSxTLndyaXRlX3NoaWZ0KDQsdGUuY29udGVudC5sZW5ndGgpLFMud3JpdGVfc2hpZnQoMixRZS5sZW5ndGgpLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsMCksUy53cml0ZV9zaGlmdCgyLDApLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCg0LEplKSxTZSs9Uy5sLEUucHVzaChTKSxTZSs9UWUubGVuZ3RoLEUucHVzaChRZSksKythZX1yZXR1cm4gUz1mcigyMiksUy53cml0ZV9zaGlmdCg0LDEwMTAxMDI1NiksUy53cml0ZV9zaGlmdCgyLDApLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsYWUpLFMud3JpdGVfc2hpZnQoMixhZSksUy53cml0ZV9zaGlmdCg0LFNlKSxTLndyaXRlX3NoaWZ0KDQsWCksUy53cml0ZV9zaGlmdCgyLDApLHlhKFt5YShGKSx5YShFKSxTXSl9dmFyIGF0PXtodG06InRleHQvaHRtbCIseG1sOiJ0ZXh0L3htbCIsZ2lmOiJpbWFnZS9naWYiLGpwZzoiaW1hZ2UvanBlZyIscG5nOiJpbWFnZS9wbmciLG1zbzoiYXBwbGljYXRpb24veC1tc28iLHRobXg6ImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZSIsc2gzM3RqNToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn07ZnVuY3Rpb24gVTAodixUKXtpZih2LmN0eXBlKXJldHVybiB2LmN0eXBlO3ZhciBrPXYubmFtZXx8IiIsRj1rLm1hdGNoKC9cLihbXlwuXSspJC8pO3JldHVybiBGJiZhdFtGWzFdXXx8VCYmKEY9KGs9VCkubWF0Y2goL1tcLlxcXShbXlwuXFxdKSskLyksRiYmYXRbRlsxXV0pP2F0W0ZbMV1dOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWZ1bmN0aW9uIEgwKHYpe2Zvcih2YXIgVD0kbih2KSxrPVtdLEY9MDtGPFQubGVuZ3RoO0YrPTc2KWsucHVzaChULnNsaWNlKEYsRis3NikpO3JldHVybiBrLmpvaW4oYFxyCmApK2BccgpgfWZ1bmN0aW9uIF90KHYpe3ZhciBUPXYucmVwbGFjZSgvW1x4MDAtXHgwOFx4MEJceDBDXHgwRS1ceDFGXHg3RS1ceEZGPV0vZyxmdW5jdGlvbihWKXt2YXIgWD1WLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIj0iKyhYLmxlbmd0aD09MT8iMCIrWDpYKX0pO1Q9VC5yZXBsYWNlKC8gJC9tZywiPTIwIikucmVwbGFjZSgvXHQkL21nLCI9MDkiKSxULmNoYXJBdCgwKT09YApgJiYoVD0iPTBEIitULnNsaWNlKDEpKSxUPVQucmVwbGFjZSgvXHIoPyFcbikvbWcsIj0wRCIpLnJlcGxhY2UoL1xuXG4vbWcsYAo9MEFgKS5yZXBsYWNlKC8oW15cclxuXSlcbi9tZywiJDE9MEEiKTtmb3IodmFyIGs9W10sRj1ULnNwbGl0KGBccgpgKSxFPTA7RTxGLmxlbmd0aDsrK0Upe3ZhciBTPUZbRV07aWYoUy5sZW5ndGg9PTApe2sucHVzaCgiIik7Y29udGludWV9Zm9yKHZhciBXPTA7VzxTLmxlbmd0aDspe3ZhciBLPTc2LEg9Uy5zbGljZShXLFcrSyk7SC5jaGFyQXQoSy0xKT09Ij0iP0stLTpILmNoYXJBdChLLTIpPT0iPSI/Sy09MjpILmNoYXJBdChLLTMpPT0iPSImJihLLT0zKSxIPVMuc2xpY2UoVyxXK0spLFcrPUssVzxTLmxlbmd0aCYmKEgrPSI9Iiksay5wdXNoKEgpfX1yZXR1cm4gay5qb2luKGBccgpgKX1mdW5jdGlvbiBXMCh2KXtmb3IodmFyIFQ9W10saz0wO2s8di5sZW5ndGg7KytrKXtmb3IodmFyIEY9dltrXTtrPD12Lmxlbmd0aCYmRi5jaGFyQXQoRi5sZW5ndGgtMSk9PSI9IjspRj1GLnNsaWNlKDAsRi5sZW5ndGgtMSkrdlsrK2tdO1QucHVzaChGKX1mb3IodmFyIEU9MDtFPFQubGVuZ3RoOysrRSlUW0VdPVRbRV0ucmVwbGFjZSgvWz1dWzAtOUEtRmEtZl17Mn0vZyxmdW5jdGlvbihTKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChTLnNsaWNlKDEpLDE2KSl9KTtyZXR1cm4gSXIoVC5qb2luKGBccgpgKSl9ZnVuY3Rpb24ga3QodixULGspe2Zvcih2YXIgRj0iIixFPSIiLFM9IiIsVyxLPTA7SzwxMDsrK0spe3ZhciBIPVRbS107aWYoIUh8fEgubWF0Y2goL15ccyokLykpYnJlYWs7dmFyIFY9SC5tYXRjaCgvXihbXjpdKj8pOlxzKihbXlxzXS4qKSQvKTtpZihWKXN3aXRjaChWWzFdLnRvTG93ZXJDYXNlKCkpe2Nhc2UiY29udGVudC1sb2NhdGlvbiI6Rj1WWzJdLnRyaW0oKTticmVhaztjYXNlImNvbnRlbnQtdHlwZSI6Uz1WWzJdLnRyaW0oKTticmVhaztjYXNlImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciOkU9VlsyXS50cmltKCk7YnJlYWt9fXN3aXRjaCgrK0ssRS50b0xvd2VyQ2FzZSgpKXtjYXNlImJhc2U2NCI6Vz1JcihEcihULnNsaWNlKEspLmpvaW4oIiIpKSk7YnJlYWs7Y2FzZSJxdW90ZWQtcHJpbnRhYmxlIjpXPVcwKFQuc2xpY2UoSykpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nICIrRSl9dmFyIFg9VXIodixGLnNsaWNlKGsubGVuZ3RoKSxXLHt1bnNhZmU6ITB9KTtTJiYoWC5jdHlwZT1TKX1mdW5jdGlvbiB3dCh2LFQpe2lmKHVlKHYuc2xpY2UoMCwxMykpLnRvTG93ZXJDYXNlKCkhPSJtaW1lLXZlcnNpb246Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE1BRCBoZWFkZXIiKTt2YXIgaz1UJiZULnJvb3R8fCIiLEY9KE5lJiZCdWZmZXIuaXNCdWZmZXIodik/di50b1N0cmluZygiYmluYXJ5Iik6dWUodikpLnNwbGl0KGBccgpgKSxFPTAsUz0iIjtmb3IoRT0wO0U8Ri5sZW5ndGg7KytFKWlmKFM9RltFXSwhIS9eQ29udGVudC1Mb2NhdGlvbjovaS50ZXN0KFMpJiYoUz1TLnNsaWNlKFMuaW5kZXhPZigiZmlsZSIpKSxrfHwoaz1TLnNsaWNlKDAsUy5sYXN0SW5kZXhPZigiLyIpKzEpKSxTLnNsaWNlKDAsay5sZW5ndGgpIT1rKSlmb3IoO2subGVuZ3RoPjAmJihrPWsuc2xpY2UoMCxrLmxlbmd0aC0xKSxrPWsuc2xpY2UoMCxrLmxhc3RJbmRleE9mKCIvIikrMSksUy5zbGljZSgwLGsubGVuZ3RoKSE9ayk7KTt2YXIgVz0oRlsxXXx8IiIpLm1hdGNoKC9ib3VuZGFyeT0iKC4qPykiLyk7aWYoIVcpdGhyb3cgbmV3IEVycm9yKCJNQUQgY2Fubm90IGZpbmQgYm91bmRhcnkiKTt2YXIgSz0iLS0iKyhXWzFdfHwiIiksSD1bXSxWPVtdLFg9e0ZpbGVJbmRleDpILEZ1bGxQYXRoczpWfTtiKFgpO3ZhciBhZSxzZT0wO2ZvcihFPTA7RTxGLmxlbmd0aDsrK0Upe3ZhciB2ZT1GW0VdO3ZlIT09SyYmdmUhPT1LKyItLSJ8fChzZSsrJiZrdChYLEYuc2xpY2UoYWUsRSksayksYWU9RSl9cmV0dXJuIFh9ZnVuY3Rpb24gQm4odixUKXt2YXIgaz1UfHx7fSxGPWsuYm91bmRhcnl8fCJTaGVldEpTIjtGPSItLS0tLS09IitGO2Zvcih2YXIgRT1bIk1JTUUtVmVyc2lvbjogMS4wIiwnQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvcmVsYXRlZDsgYm91bmRhcnk9IicrRi5zbGljZSgyKSsnIicsIiIsIiIsIiJdLFM9di5GdWxsUGF0aHNbMF0sVz1TLEs9di5GaWxlSW5kZXhbMF0sSD0xO0g8di5GdWxsUGF0aHMubGVuZ3RoOysrSClpZihXPXYuRnVsbFBhdGhzW0hdLnNsaWNlKFMubGVuZ3RoKSxLPXYuRmlsZUluZGV4W0hdLCEoIUsuc2l6ZXx8IUsuY29udGVudHx8Vz09IgFTaDMzdEo1Iikpe1c9Vy5yZXBsYWNlKC9bXHgwMC1ceDA4XHgwQlx4MENceDBFLVx4MUZceDdFLVx4RkZdL2csZnVuY3Rpb24oU2Upe3JldHVybiJfeCIrU2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikrIl8ifSkucmVwbGFjZSgvW1x1MDA4MC1cdUZGRkZdL2csZnVuY3Rpb24oU2Upe3JldHVybiJfdSIrU2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikrIl8ifSk7Zm9yKHZhciBWPUsuY29udGVudCxYPU5lJiZCdWZmZXIuaXNCdWZmZXIoVik/Vi50b1N0cmluZygiYmluYXJ5Iik6dWUoViksYWU9MCxzZT1NYXRoLm1pbigxMDI0LFgubGVuZ3RoKSx2ZT0wLHRlPTA7dGU8PXNlOysrdGUpKHZlPVguY2hhckNvZGVBdCh0ZSkpPj0zMiYmdmU8MTI4JiYrK2FlO3ZhciBjZT1hZT49c2UqNC81O0UucHVzaChGKSxFLnB1c2goIkNvbnRlbnQtTG9jYXRpb246ICIrKGsucm9vdHx8ImZpbGU6Ly8vQzovU2hlZXRKUy8iKStXKSxFLnB1c2goIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIrKGNlPyJxdW90ZWQtcHJpbnRhYmxlIjoiYmFzZTY0IikpLEUucHVzaCgiQ29udGVudC1UeXBlOiAiK1UwKEssVykpLEUucHVzaCgiIiksRS5wdXNoKGNlP190KFgpOkgwKFgpKX1yZXR1cm4gRS5wdXNoKEYrYC0tXHIKYCksRS5qb2luKGBccgpgKX1mdW5jdGlvbiBVbih2KXt2YXIgVD17fTtyZXR1cm4gYihULHYpLFR9ZnVuY3Rpb24gVXIodixULGssRil7dmFyIEU9RiYmRi51bnNhZmU7RXx8Yih2KTt2YXIgUz0hRSYmTWUuZmluZCh2LFQpO2lmKCFTKXt2YXIgVz12LkZ1bGxQYXRoc1swXTtULnNsaWNlKDAsVy5sZW5ndGgpPT1XP1c9VDooVy5zbGljZSgtMSkhPSIvIiYmKFcrPSIvIiksVz0oVytUKS5yZXBsYWNlKCIvLyIsIi8iKSksUz17bmFtZTpuKFQpLHR5cGU6Mn0sdi5GaWxlSW5kZXgucHVzaChTKSx2LkZ1bGxQYXRocy5wdXNoKFcpLEV8fE1lLnV0aWxzLmNmYl9nYyh2KX1yZXR1cm4gUy5jb250ZW50PWssUy5zaXplPWs/ay5sZW5ndGg6MCxGJiYoRi5DTFNJRCYmKFMuY2xzaWQ9Ri5DTFNJRCksRi5tdCYmKFMubXQ9Ri5tdCksRi5jdCYmKFMuY3Q9Ri5jdCkpLFN9ZnVuY3Rpb24gJGUodixUKXtiKHYpO3ZhciBrPU1lLmZpbmQodixUKTtpZihrKXtmb3IodmFyIEY9MDtGPHYuRmlsZUluZGV4Lmxlbmd0aDsrK0YpaWYodi5GaWxlSW5kZXhbRl09PWspcmV0dXJuIHYuRmlsZUluZGV4LnNwbGljZShGLDEpLHYuRnVsbFBhdGhzLnNwbGljZShGLDEpLCEwfXJldHVybiExfWZ1bmN0aW9uIE0odixULGspe2Iodik7dmFyIEY9TWUuZmluZCh2LFQpO2lmKEYpe2Zvcih2YXIgRT0wO0U8di5GaWxlSW5kZXgubGVuZ3RoOysrRSlpZih2LkZpbGVJbmRleFtFXT09RilyZXR1cm4gdi5GaWxlSW5kZXhbRV0ubmFtZT1uKGspLHYuRnVsbFBhdGhzW0VdPWssITB9cmV0dXJuITF9ZnVuY3Rpb24gWSh2KXtEKHYsITApfXJldHVybiBhLmZpbmQ9TCxhLnJlYWQ9UCxhLnBhcnNlPWwsYS53cml0ZT1qLGEud3JpdGVGaWxlPWdlLGEudXRpbHM9e2NmYl9uZXc6VW4sY2ZiX2FkZDpVcixjZmJfZGVsOiRlLGNmYl9tb3Y6TSxjZmJfZ2M6WSxSZWFkU2hpZnQ6RHQsQ2hlY2tGaWVsZDpLaSxwcmVwX2Jsb2I6c3IsYmNvbmNhdDp5YSx1c2VfemxpYjpiZSxfZGVmbGF0ZVJhdzpPYSxfaW5mbGF0ZVJhdzpxdCxjb25zdHM6UX0sYX0oKSxEYztmdW5jdGlvbiBJYyhlKXtpZih0eXBlb2YgRGVubzwidSIpcmV0dXJuIERlbm8ucmVhZEZpbGVTeW5jKGUpO2lmKHR5cGVvZiAkPCJ1IiYmdHlwZW9mIEZpbGU8InUiJiZ0eXBlb2YgRm9sZGVyPCJ1Iil0cnl7dmFyIGE9RmlsZShlKTthLm9wZW4oInIiKSxhLmVuY29kaW5nPSJiaW5hcnkiO3ZhciByPWEucmVhZCgpO3JldHVybiBhLmNsb3NlKCkscn1jYXRjaCh0KXtpZighdC5tZXNzYWdlfHx0Lm1lc3NhZ2UuaW5kZXhPZigib25zdHJ1Y3QiKT09LTEpdGhyb3cgdH10aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBhY2Nlc3MgZmlsZSAiK2UpfWZ1bmN0aW9uIHByKGUpe2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxyPVtdLHQ9MDt0PGEubGVuZ3RoOysrdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxhW3RdKSYmci5wdXNoKGFbdF0pO3JldHVybiByfWZ1bmN0aW9uIFkwKGUpe2Zvcih2YXIgYT1bXSxyPXByKGUpLHQ9MDt0IT09ci5sZW5ndGg7Kyt0KWFbZVtyW3RdXV09clt0XTtyZXR1cm4gYX12YXIgdWk9RGF0ZS5VVEMoMTg5OSwxMSwzMCwwLDAsMCksUmM9RGF0ZS5VVEMoMTg5OSwxMSwzMSwwLDAsMCksT2M9RGF0ZS5VVEMoMTkwNCwwLDEsMCwwLDApO2Z1bmN0aW9uIG9yKGUsYSl7dmFyIHI9ZS5nZXRUaW1lKCksdD0oci11aSkvKDI0KjYwKjYwKjFlMyk7cmV0dXJuIGE/KHQtPTE0NjIsdDwtMTQwMj90LTE6dCk6dDw2MD90LTE6dH1mdW5jdGlvbiBTYShlKXtpZihlPj02MCYmZTw2MSlyZXR1cm4gZTt2YXIgYT1uZXcgRGF0ZTtyZXR1cm4gYS5zZXRUaW1lKChlPjYwP2U6ZSsxKSoyNCo2MCo2MCoxZTMrdWkpLGF9ZnVuY3Rpb24gTmMoZSl7dmFyIGE9MCxyPTAsdD0hMSxuPWUubWF0Y2goL1AoWzAtOVwuXStZKT8oWzAtOVwuXStNKT8oWzAtOVwuXStEKT9UKFswLTlcLl0rSCk/KFswLTlcLl0rTSk/KFswLTlcLl0rUyk/Lyk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJ8IitlKyJ8IGlzIG5vdCBhbiBJU084NjAxIER1cmF0aW9uIik7Zm9yKHZhciBpPTE7aSE9bi5sZW5ndGg7KytpKWlmKG5baV0pe3N3aXRjaChyPTEsaT4zJiYodD0hMCksbltpXS5zbGljZShuW2ldLmxlbmd0aC0xKSl7Y2FzZSJZIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogIituW2ldLnNsaWNlKG5baV0ubGVuZ3RoLTEpKTtjYXNlIkQiOnIqPTI0O2Nhc2UiSCI6cio9NjA7Y2FzZSJNIjppZih0KXIqPTYwO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6IE0iKX1hKz1yKnBhcnNlSW50KG5baV0sMTApfXJldHVybiBhfXZhciBNYz0vXihcZCspOihcZCspKDpcZCspPyhcLlxkKyk/JC8sUGM9L14oXGQrKS0oXGQrKS0oXGQrKSQvLGhpPS9eKFxkKyktKFxkKyktKFxkKylbVCBdKFxkKyk6KFxkKykoOlxkKyk/KFwuXGQrKT8kLztmdW5jdGlvbiB4cihlLGEpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlO3ZhciByPWUubWF0Y2goTWMpO2lmKHIpcmV0dXJuIG5ldyBEYXRlKChhP09jOlJjKSsoKHBhcnNlSW50KHJbMV0sMTApKjYwK3BhcnNlSW50KHJbMl0sMTApKSo2MCsoclszXT9wYXJzZUludChyWzNdLnNsaWNlKDEpLDEwKTowKSkqMWUzKyhyWzRdP3BhcnNlSW50KChyWzRdKyIwMDAiKS5zbGljZSgxLDQpLDEwKTowKSk7aWYocj1lLm1hdGNoKFBjKSxyKXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrclsxXSwrclsyXS0xLCtyWzNdLDAsMCwwLDApKTtpZihyPWUubWF0Y2goaGkpLHIpcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKCtyWzFdLCtyWzJdLTEsK3JbM10sK3JbNF0sK3JbNV0scls2XSYmcGFyc2VJbnQocls2XS5zbGljZSgxKSwxMCl8fDAscls3XSYmcGFyc2VJbnQoKHJbN10rIjAwMDAiKS5zbGljZSgxLDQpLDEwKXx8MCkpO3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiB0fWZ1bmN0aW9uIEJhKGUsYSl7aWYoTmUmJkJ1ZmZlci5pc0J1ZmZlcihlKSl7aWYoYSYmVHQpe2lmKGVbMF09PTI1NSYmZVsxXT09MjU0KXJldHVybiBDdChlLnNsaWNlKDIpLnRvU3RyaW5nKCJ1dGYxNmxlIikpO2lmKGVbMV09PTI1NCYmZVsyXT09MjU1KXJldHVybiBDdChYbihlLnNsaWNlKDIpLnRvU3RyaW5nKCJiaW5hcnkiKSkpfXJldHVybiBlLnRvU3RyaW5nKCJiaW5hcnkiKX1pZih0eXBlb2YgVGV4dERlY29kZXI8InUiKXRyeXtpZihhKXtpZihlWzBdPT0yNTUmJmVbMV09PTI1NClyZXR1cm4gQ3QobmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpLmRlY29kZShlLnNsaWNlKDIpKSk7aWYoZVswXT09MjU0JiZlWzFdPT0yNTUpcmV0dXJuIEN0KG5ldyBUZXh0RGVjb2RlcigidXRmLTE2YmUiKS5kZWNvZGUoZS5zbGljZSgyKSkpfXZhciByPXsi4oKsIjoiwoAiLCLigJoiOiLCgiIsxpI6IsKDIiwi4oCeIjoiwoQiLCLigKYiOiLChSIsIuKAoCI6IsKGIiwi4oChIjoiwociLCLLhiI6IsKIIiwi4oCwIjoiwokiLMWgOiLCiiIsIuKAuSI6IsKLIizFkjoiwowiLMW9OiLCjiIsIuKAmCI6IsKRIiwi4oCZIjoiwpIiLCLigJwiOiLCkyIsIuKAnSI6IsKUIiwi4oCiIjoiwpUiLCLigJMiOiLCliIsIuKAlCI6IsKXIiwiy5wiOiLCmCIsIuKEoiI6IsKZIizFoToiwpoiLCLigLoiOiLCmyIsxZM6IsKcIizFvjoiwp4iLMW4OiLCnyJ9O3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYoZT1uZXcgVWludDhBcnJheShlKSksbmV3IFRleHREZWNvZGVyKCJsYXRpbjEiKS5kZWNvZGUoZSkucmVwbGFjZSgvW+KCrOKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSxb3igJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPFvsW4XS9nLGZ1bmN0aW9uKGkpe3JldHVybiByW2ldfHxpfSl9Y2F0Y2h7fXZhciB0PVtdLG49MDt0cnl7Zm9yKG49MDtuPGUubGVuZ3RoLTY1NTM2O24rPTY1NTM2KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsZS5zbGljZShuLG4rNjU1MzYpKSk7dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCxlLnNsaWNlKG4pKSl9Y2F0Y2h7dHJ5e2Zvcig7bjxlLmxlbmd0aC0xNjM4NDtuKz0xNjM4NCl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLGUuc2xpY2UobixuKzE2Mzg0KSkpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsZS5zbGljZShuKSkpfWNhdGNoe2Zvcig7biE9ZS5sZW5ndGg7KytuKXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGVbbl0pKX19cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gVWUoZSl7aWYodHlwZW9mIEpTT048InUiJiYhQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSk7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT1udWxsKXJldHVybiBlO2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShlLmdldFRpbWUoKSk7dmFyIGE9e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihhW3JdPVVlKGVbcl0pKTtyZXR1cm4gYX1mdW5jdGlvbiBQZShlLGEpe2Zvcih2YXIgcj0iIjtyLmxlbmd0aDxhOylyKz1lO3JldHVybiByfWZ1bmN0aW9uIE9yKGUpe3ZhciBhPU51bWJlcihlKTtpZighaXNOYU4oYSkpcmV0dXJuIGlzRmluaXRlKGEpP2E6TmFOO2lmKCEvXGQvLnRlc3QoZSkpcmV0dXJuIGE7dmFyIHI9MSx0PWUucmVwbGFjZSgvKFtcZF0pLChbXGRdKS9nLCIkMSQyIikucmVwbGFjZSgvWyRdL2csIiIpLnJlcGxhY2UoL1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIHIqPTEwMCwiIn0pO3JldHVybiFpc05hTihhPU51bWJlcih0KSl8fCh0PXQucmVwbGFjZSgvWyhdKFteKCldKilbKV0vLGZ1bmN0aW9uKG4saSl7cmV0dXJuIHI9LXIsaX0pLCFpc05hTihhPU51bWJlcih0KSkpP2EvcjphfXZhciBMYz0vXigwP1xkfDFbMC0yXSkoPzp8OihbMC01XT9cZCkoPzp8KFwuXGQrKSg/Onw6KFswLTVdP1xkKSl8OihbMC01XT9cZCkofFwuXGQrKSkpXHMrKFthcF0pbT8kLyxCYz0vXihbMDFdP1xkfDJbMC0zXSkoPzp8OihbMC01XT9cZCkoPzp8KFwuXGQrKSg/Onw6KFswLTVdP1xkKSl8OihbMC01XT9cZCkofFwuXGQrKSkpJC8sVWM9L14oXGQrKS0oXGQrKS0oXGQrKVtUIF0oXGQrKTooXGQrKSg6XGQrKShcLlxkKyk/W1pdPyQvLEhjPW5ldyBEYXRlKCI2LzkvNjkgMDA6MDAgVVRDIikudmFsdWVPZigpPT0tMTc3OTg0ZTU7ZnVuY3Rpb24gV2MoZSl7cmV0dXJuIGVbMl0/ZVszXT9lWzRdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0lMTIrKGVbN109PSJwIj8xMjowKSwrZVsyXSwrZVs0XSxwYXJzZUZsb2F0KGVbM10pKjFlMykpOm5ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsZVs3XT09InAiPzEyOjAsK2VbMV0sK2VbMl0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTplWzVdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0lMTIrKGVbN109PSJwIj8xMjowKSwrZVsyXSwrZVs1XSxlWzZdP3BhcnNlRmxvYXQoZVs2XSkqMWUzOjApKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLCtlWzFdJTEyKyhlWzddPT0icCI/MTI6MCksK2VbMl0sMCwwKSk6bmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMSwrZVsxXSUxMisoZVs3XT09InAiPzEyOjApLDAsMCwwKSl9ZnVuY3Rpb24gVmMoZSl7cmV0dXJuIGVbMl0/ZVszXT9lWzRdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0sK2VbMl0sK2VbNF0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLDAsK2VbMV0sK2VbMl0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTplWzVdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0sK2VbMl0sK2VbNV0sZVs2XT9wYXJzZUZsb2F0KGVbNl0pKjFlMzowKSk6bmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMSwrZVsxXSwrZVsyXSwwLDApKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLCtlWzFdLDAsMCwwKSl9dmFyIEdjPVsiamFudWFyeSIsImZlYnJ1YXJ5IiwibWFyY2giLCJhcHJpbCIsIm1heSIsImp1bmUiLCJqdWx5IiwiYXVndXN0Iiwic2VwdGVtYmVyIiwib2N0b2JlciIsIm5vdmVtYmVyIiwiZGVjZW1iZXIiXTtmdW5jdGlvbiB5dChlKXtpZihVYy50ZXN0KGUpKXJldHVybiBlLmluZGV4T2YoIloiKT09LTE/YzAobmV3IERhdGUoZSkpOm5ldyBEYXRlKGUpO3ZhciBhPWUudG9Mb3dlckNhc2UoKSxyPWEucmVwbGFjZSgvXHMrL2csIiAiKS50cmltKCksdD1yLm1hdGNoKExjKTtpZih0KXJldHVybiBXYyh0KTtpZih0PXIubWF0Y2goQmMpLHQpcmV0dXJuIFZjKHQpO2lmKHQ9ci5tYXRjaChoaSksdClyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK3RbMV0sK3RbMl0tMSwrdFszXSwrdFs0XSwrdFs1XSx0WzZdJiZwYXJzZUludCh0WzZdLnNsaWNlKDEpLDEwKXx8MCx0WzddJiZwYXJzZUludCgodFs3XSsiMDAwMCIpLnNsaWNlKDEsNCksMTApfHwwKSk7dmFyIG49bmV3IERhdGUoSGMmJmUuaW5kZXhPZigiVVRDIik9PS0xP2UrIiBVVEMiOmUpLGk9bmV3IERhdGUoTmFOKSxmPW4uZ2V0WWVhcigpO24uZ2V0TW9udGgoKTt2YXIgcz1uLmdldERhdGUoKTtpZihpc05hTihzKSlyZXR1cm4gaTtpZihhLm1hdGNoKC9qYW58ZmVifG1hcnxhcHJ8bWF5fGp1bnxqdWx8YXVnfHNlcHxvY3R8bm92fGRlYy8pKXtpZihhPWEucmVwbGFjZSgvW15hLXpdL2csIiIpLnJlcGxhY2UoLyhbXmEtel18XilbYXBdbT8oW15hLXpdfCQpLywiIiksYS5sZW5ndGg+MyYmR2MuaW5kZXhPZihhKT09LTEpcmV0dXJuIGl9ZWxzZSBpZihhLnJlcGxhY2UoL1thcF1tPy8sIiIpLm1hdGNoKC9bYS16XS8pKXJldHVybiBpO3JldHVybiBmPDB8fGY+ODA5OXx8ZS5tYXRjaCgvW14tMC05OixcL1xcXCBdLyk/aTpufXZhciBYYz1mdW5jdGlvbigpe3ZhciBlPSJhYmFjYWJhIi5zcGxpdCgvKDo/YikvaSkubGVuZ3RoPT01O3JldHVybiBmdW5jdGlvbihyLHQsbil7aWYoZXx8dHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiByLnNwbGl0KHQpO2Zvcih2YXIgaT1yLnNwbGl0KHQpLGY9W2lbMF1dLHM9MTtzPGkubGVuZ3RoOysrcylmLnB1c2gobiksZi5wdXNoKGlbc10pO3JldHVybiBmfX0oKTtmdW5jdGlvbiBVYShlKXtyZXR1cm4gbmV3IERhdGUoZS5nZXRVVENGdWxsWWVhcigpLGUuZ2V0VVRDTW9udGgoKSxlLmdldFVUQ0RhdGUoKSxlLmdldFVUQ0hvdXJzKCksZS5nZXRVVENNaW51dGVzKCksZS5nZXRVVENTZWNvbmRzKCksZS5nZXRVVENNaWxsaXNlY29uZHMoKSl9ZnVuY3Rpb24gYzAoZSl7cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCksZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpKX1mdW5jdGlvbiBKMChlKXt2YXIgYT1lLnNsaWNlKDAsMTAyNCkscj1hLmluZGV4T2YoIjwhRE9DVFlQRSIpO2lmKHI9PS0xKXJldHVybiBlO3ZhciB0PWUubWF0Y2goLzxbXHddLyk7cmV0dXJuIHQ/ZS5zbGljZSgwLHIpK2Uuc2xpY2UodC5pbmRleCk6ZX1mdW5jdGlvbiB1YShlLGEscil7Zm9yKHZhciB0PVtdLG49ZS5pbmRleE9mKGEpO24+LTE7KXt2YXIgaT1lLmluZGV4T2YocixuK2EubGVuZ3RoKTtpZihpPT0tMSlicmVhazt0LnB1c2goZS5zbGljZShuLGkrci5sZW5ndGgpKSxuPWUuaW5kZXhPZihhLGkrci5sZW5ndGgpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1mdW5jdGlvbiBTdChlLGEscil7dmFyIHQ9W10sbj0wLGk9ZS5pbmRleE9mKGEpO2lmKGk9PS0xKXJldHVybiBlO2Zvcig7aT4tMTspe3QucHVzaChlLnNsaWNlKG4saSkpO3ZhciBmPWUuaW5kZXhPZihyLGkrYS5sZW5ndGgpO2lmKGY9PS0xKWJyZWFrOyhpPWUuaW5kZXhPZihhLG49ZityLmxlbmd0aCkpPT0tMSYmdC5wdXNoKGUuc2xpY2UobikpfXJldHVybiB0LmpvaW4oIiIpfXZhciB6Yz17IiAiOjEsIgkiOjEsIlxyIjoxLCJcbiI6MSwiPiI6MX07ZnVuY3Rpb24gSGEoZSxhKXtmb3IodmFyIHI9ZS5pbmRleE9mKCI8IithKSx0PWEubGVuZ3RoKzEsbj1lLmxlbmd0aDtyPj0wJiZyPD1uLXQmJiF6Y1tlLmNoYXJBdChyK3QpXTspcj1lLmluZGV4T2YoIjwiK2EscisxKTtpZihyPT09LTEpcmV0dXJuIG51bGw7dmFyIGk9ZS5pbmRleE9mKCI+IixyK2EubGVuZ3RoKTtpZihpPT09LTEpcmV0dXJuIG51bGw7dmFyIGY9IjwvIithKyI+IixzPWUuaW5kZXhPZihmLGkpO3JldHVybiBzPT0tMT9udWxsOltlLnNsaWNlKHIscytmLmxlbmd0aCksZS5zbGljZShpKzEscyldfXZhciBMZT1mdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLHQpe3ZhciBuPWVbdF07bnx8KGVbdF09bj1bbmV3IFJlZ0V4cCgiPCg/Olxcdys6KT8iK3QrIlxcYltePD5dKj4iLCJnIiksbmV3IFJlZ0V4cCgiPC8oPzpcXHcrOik/Iit0KyI+IiwiZyIpXSksblswXS5sYXN0SW5kZXg9blsxXS5sYXN0SW5kZXg9MDt2YXIgaT1uWzBdLmV4ZWMocik7aWYoIWkpcmV0dXJuIG51bGw7dmFyIGY9aS5pbmRleCxzPW5bMF0ubGFzdEluZGV4O2lmKG5bMV0ubGFzdEluZGV4PW5bMF0ubGFzdEluZGV4LGk9blsxXS5leGVjKHIpLCFpKXJldHVybiBudWxsO3ZhciBjPWkuaW5kZXgsbz1uWzFdLmxhc3RJbmRleDtyZXR1cm5bci5zbGljZShmLG8pLHIuc2xpY2UocyxjKV19fSgpLHhpPWZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0aW9uKHIsdCl7dmFyIG49W10saT1lW3RdO2l8fChlW3RdPWk9W25ldyBSZWdFeHAoIjwoPzpcXHcrOik/Iit0KyJcXGJbXjw+XSo+IiwiZyIpLG5ldyBSZWdFeHAoIjwvKD86XFx3KzopPyIrdCsiPiIsImciKV0pLGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4PTA7Zm9yKHZhciBmO2Y9aVswXS5leGVjKHIpOyl7dmFyIHM9Zi5pbmRleDtpZihpWzFdLmxhc3RJbmRleD1pWzBdLmxhc3RJbmRleCxmPWlbMV0uZXhlYyhyKSwhZilyZXR1cm4gbnVsbDt2YXIgYz1pWzFdLmxhc3RJbmRleDtuLnB1c2goci5zbGljZShzLGMpKSxpWzBdLmxhc3RJbmRleD1pWzFdLmxhc3RJbmRleH1yZXR1cm4gbi5sZW5ndGg9PTA/bnVsbDpufX0oKSwkYz1mdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLHQpe3ZhciBuPVtdLGk9ZVt0XTtpfHwoZVt0XT1pPVtuZXcgUmVnRXhwKCI8KD86XFx3KzopPyIrdCsiXFxiW148Pl0qPiIsImciKSxuZXcgUmVnRXhwKCI8Lyg/Olxcdys6KT8iK3QrIj4iLCJnIildKSxpWzBdLmxhc3RJbmRleD1pWzFdLmxhc3RJbmRleD0wO2Zvcih2YXIgZixzPTAsYz0wO2Y9aVswXS5leGVjKHIpOyl7aWYocz1mLmluZGV4LG4ucHVzaChyLnNsaWNlKGMscykpLGM9cyxpWzFdLmxhc3RJbmRleD1pWzBdLmxhc3RJbmRleCxmPWlbMV0uZXhlYyhyKSwhZilyZXR1cm4gbnVsbDtjPWlbMV0ubGFzdEluZGV4LGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4fXJldHVybiBuLnB1c2goci5zbGljZShjKSksbi5sZW5ndGg9PTA/IiI6bi5qb2luKCIiKX19KCksS2M9ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gZnVuY3Rpb24ocix0KXt2YXIgbj1bXSxpPWVbdF07aXx8KGVbdF09aT1bbmV3IFJlZ0V4cCgiPCIrdCsiXFxiW148Pl0qPiIsImlnIiksbmV3IFJlZ0V4cCgiPC8iK3QrIj4iLCJpZyIpXSksaVswXS5sYXN0SW5kZXg9aVsxXS5sYXN0SW5kZXg9MDtmb3IodmFyIGY7Zj1pWzBdLmV4ZWMocik7KXt2YXIgcz1mLmluZGV4O2lmKGlbMV0ubGFzdEluZGV4PWlbMF0ubGFzdEluZGV4LGY9aVsxXS5leGVjKHIpLCFmKXJldHVybiBudWxsO3ZhciBjPWlbMV0ubGFzdEluZGV4O24ucHVzaChyLnNsaWNlKHMsYykpLGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4fXJldHVybiBuLmxlbmd0aD09MD9udWxsOm59fSgpO2Z1bmN0aW9uIGRpKGUpe3JldHVybiBlP2UuY29udGVudCYmZS50eXBlP0JhKGUuY29udGVudCwhMCk6ZS5kYXRhP0Z0KGUuZGF0YSk6ZS5hc05vZGVCdWZmZXImJk5lP0Z0KGUuYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoImJpbmFyeSIpKTplLmFzQmluYXJ5P0Z0KGUuYXNCaW5hcnkoKSk6ZS5fZGF0YSYmZS5fZGF0YS5nZXRDb250ZW50P0Z0KEJhKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuX2RhdGEuZ2V0Q29udGVudCgpLDApKSk6bnVsbDpudWxsfWZ1bmN0aW9uIHZpKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUuZGF0YSlyZXR1cm4gVm4oZS5kYXRhKTtpZihlLmFzTm9kZUJ1ZmZlciYmTmUpcmV0dXJuIGUuYXNOb2RlQnVmZmVyKCk7aWYoZS5fZGF0YSYmZS5fZGF0YS5nZXRDb250ZW50KXt2YXIgYT1lLl9kYXRhLmdldENvbnRlbnQoKTtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmciP1ZuKGEpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEpfXJldHVybiBlLmNvbnRlbnQmJmUudHlwZT9lLmNvbnRlbnQ6bnVsbH1mdW5jdGlvbiBqYyhlKXtyZXR1cm4gZSYmZS5uYW1lLnNsaWNlKC00KT09PSIuYmluIj92aShlKTpkaShlKX1mdW5jdGlvbiBHcihlLGEpe2Zvcih2YXIgcj1lLkZ1bGxQYXRoc3x8cHIoZS5maWxlcyksdD1hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW1wvXS9nLCJcXCIpLG49dC5yZXBsYWNlKC9cXC9nLCIvIiksaT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgZj1yW2ldLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpLnRvTG93ZXJDYXNlKCk7aWYodD09Znx8bj09ZilyZXR1cm4gZS5maWxlcz9lLmZpbGVzW3JbaV1dOmUuRmlsZUluZGV4W2ldfXJldHVybiBudWxsfWZ1bmN0aW9uIFowKGUsYSl7dmFyIHI9R3IoZSxhKTtpZihyPT1udWxsKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZmlsZSAiK2ErIiBpbiB6aXAiKTtyZXR1cm4gcn1mdW5jdGlvbiB0cihlLGEscil7aWYoIXIpcmV0dXJuIGpjKFowKGUsYSkpO2lmKCFhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gdHIoZSxhKX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gbHIoZSxhLHIpe2lmKCFyKXJldHVybiBkaShaMChlLGEpKTtpZighYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGxyKGUsYSl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHEwKGUsYSxyKXtpZighcilyZXR1cm4gdmkoWjAoZSxhKSk7aWYoIWEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBxMChlLGEpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBwaShlKXtmb3IodmFyIGE9ZS5GdWxsUGF0aHN8fHByKGUuZmlsZXMpLHI9W10sdD0wO3Q8YS5sZW5ndGg7Kyt0KWFbdF0uc2xpY2UoLTEpIT0iLyImJnIucHVzaChhW3RdLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpKTtyZXR1cm4gci5zb3J0KCl9ZnVuY3Rpb24gWWMoZSxhLHIpe2lmKGUuRnVsbFBhdGhzKXtpZihBcnJheS5pc0FycmF5KHIpJiZ0eXBlb2YgclswXT09InN0cmluZyImJihyPXIuam9pbigiIikpLHR5cGVvZiByPT0ic3RyaW5nIil7dmFyIHQ7cmV0dXJuIE5lP3Q9RWEocik6dD10YyhyKSxNZS51dGlscy5jZmJfYWRkKGUsYSx0KX1NZS51dGlscy5jZmJfYWRkKGUsYSxyKX1lbHNlIGUuZmlsZShhLHIpfWZ1bmN0aW9uIGdpKGUsYSl7c3dpdGNoKGEudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBNZS5yZWFkKGUse3R5cGU6ImJhc2U2NCJ9KTtjYXNlImJpbmFyeSI6cmV0dXJuIE1lLnJlYWQoZSx7dHlwZToiYmluYXJ5In0pO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpyZXR1cm4gTWUucmVhZChlLHt0eXBlOiJidWZmZXIifSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9ZnVuY3Rpb24gaGEoZSxhKXtpZihlLmNoYXJBdCgwKT09Ii8iKXJldHVybiBlLnNsaWNlKDEpO3ZhciByPWEuc3BsaXQoIi8iKTthLnNsaWNlKC0xKSE9Ii8iJiZyLnBvcCgpO2Zvcih2YXIgdD1lLnNwbGl0KCIvIik7dC5sZW5ndGghPT0wOyl7dmFyIG49dC5zaGlmdCgpO249PT0iLi4iP3IucG9wKCk6biE9PSIuIiYmci5wdXNoKG4pfXJldHVybiByLmpvaW4oIi8iKX12YXIgbWk9YDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz5ccgpgLF9pPS9ccyhbXiJccz8+XC9dKylccyo9XHMqKCg/OiIpKFteIl0qKSg/OiIpfCg/OicpKFteJ10qKSg/OicpfChbXiciPlxzXSspKS9nLGtpPS88W1wvXD9dP1thLXpBLVowLTk6Xy1dKyg/OlxzK1teIlxzPzw+XC9dK1xzKj1ccyooPzoiW14iXSoifCdbXiddKid8W14nIjw+XHM9XSspKSpccypbXC9cP10/Pi9tZyxKYz0vPFtePD5dKj4vZyxucj1taS5tYXRjaChraSk/a2k6SmMsWmM9Lzxcdyo6LyxxYz0vPChcLz8pXHcrOi87ZnVuY3Rpb24gb2UoZSxhLHIpe2Zvcih2YXIgdD17fSxuPTAsaT0wO24hPT1lLmxlbmd0aCYmISgoaT1lLmNoYXJDb2RlQXQobikpPT09MzJ8fGk9PT0xMHx8aT09PTEzKTsrK24pO2lmKGF8fCh0WzBdPWUuc2xpY2UoMCxuKSksbj09PWUubGVuZ3RoKXJldHVybiB0O3ZhciBmPWUubWF0Y2goX2kpLHM9MCxjPSIiLG89MCxsPSIiLHU9IiIseD0xO2lmKGYpZm9yKG89MDtvIT1mLmxlbmd0aDsrK28pe2Zvcih1PWZbb10uc2xpY2UoMSksaT0wO2khPXUubGVuZ3RoJiZ1LmNoYXJDb2RlQXQoaSkhPT02MTsrK2kpO2ZvcihsPXUuc2xpY2UoMCxpKS50cmltKCk7dS5jaGFyQ29kZUF0KGkrMSk9PTMyOykrK2k7Zm9yKHg9KG49dS5jaGFyQ29kZUF0KGkrMSkpPT0zNHx8bj09Mzk/MTowLGM9dS5zbGljZShpKzEreCx1Lmxlbmd0aC14KSxzPTA7cyE9bC5sZW5ndGgmJmwuY2hhckNvZGVBdChzKSE9PTU4Oysrcyk7aWYocz09PWwubGVuZ3RoKWwuaW5kZXhPZigiXyIpPjAmJihsPWwuc2xpY2UoMCxsLmluZGV4T2YoIl8iKSkpLHRbbF09YyxyfHwodFtsLnRvTG93ZXJDYXNlKCldPWMpO2Vsc2V7dmFyIGg9KHM9PT01JiZsLnNsaWNlKDAsNSk9PT0ieG1sbnMiPyJ4bWxucyI6IiIpK2wuc2xpY2UocysxKTtpZih0W2hdJiZsLnNsaWNlKHMtMyxzKT09ImV4dCIpY29udGludWU7dFtoXT1jLHJ8fCh0W2gudG9Mb3dlckNhc2UoKV09Yyl9fXJldHVybiB0fWZ1bmN0aW9uIFFjKGUsYSxyKXtmb3IodmFyIHQ9e30sbj0wLGk9MDtuIT09ZS5sZW5ndGgmJiEoKGk9ZS5jaGFyQ29kZUF0KG4pKT09PTMyfHxpPT09MTB8fGk9PT0xMyk7KytuKTtpZihhfHwodFswXT1lLnNsaWNlKDAsbikpLG49PT1lLmxlbmd0aClyZXR1cm4gdDt2YXIgZj1lLm1hdGNoKF9pKSxzPSIiLGM9MCxvPSIiLGw9IiIsdT0xO2lmKGYpZm9yKGM9MDtjIT1mLmxlbmd0aDsrK2Mpe2ZvcihsPWZbY10uc2xpY2UoMSksaT0wO2khPWwubGVuZ3RoJiZsLmNoYXJDb2RlQXQoaSkhPT02MTsrK2kpO2ZvcihvPWwuc2xpY2UoMCxpKS50cmltKCk7bC5jaGFyQ29kZUF0KGkrMSk9PTMyOykrK2k7dT0obj1sLmNoYXJDb2RlQXQoaSsxKSk9PTM0fHxuPT0zOT8xOjAscz1sLnNsaWNlKGkrMSt1LGwubGVuZ3RoLXUpLG8uaW5kZXhPZigiXyIpPjAmJihvPW8uc2xpY2UoMCxvLmluZGV4T2YoIl8iKSkpLHRbb109cyxyfHwodFtvLnRvTG93ZXJDYXNlKCldPXMpfXJldHVybiB0fWZ1bmN0aW9uIEFyKGUpe3JldHVybiBlLnJlcGxhY2UocWMsIjwkMSIpfXZhciB3aT17IiZxdW90OyI6JyInLCImYXBvczsiOiInIiwiJmd0OyI6Ij4iLCImbHQ7IjoiPCIsIiZhbXA7IjoiJiJ9LEZpPVkwKHdpKSxDZT1mdW5jdGlvbigpe3ZhciBlPS8mKD86cXVvdHxhcG9zfGd0fGx0fGFtcHwjeD8oW1xkYS1mQS1GXSspKTsvaWcsYT0vX3goW1xkYS1mQS1GXXs0fSlfL2c7ZnVuY3Rpb24gcih0KXt2YXIgbj10KyIiLGk9bi5pbmRleE9mKCI8IVtDREFUQVsiKTtpZihpPT0tMSlyZXR1cm4gbi5yZXBsYWNlKGUsZnVuY3Rpb24ocyxjKXtyZXR1cm4gd2lbc118fFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYyxzLmluZGV4T2YoIngiKT4tMT8xNjoxMCkpfHxzfSkucmVwbGFjZShhLGZ1bmN0aW9uKHMsYyl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYywxNikpfSk7dmFyIGY9bi5pbmRleE9mKCJdXT4iKTtyZXR1cm4gcihuLnNsaWNlKDAsaSkpK24uc2xpY2UoaSs5LGYpK3Iobi5zbGljZShmKzMpKX1yZXR1cm4gZnVuY3Rpb24obixpKXt2YXIgZj1yKG4pO3JldHVybiBpP2YucmVwbGFjZSgvXHJcbi9nLGAKYCk6Zn19KCksVGk9L1smPD4nIl0vZyxlbz0vW1x1MDAwMC1cdTAwMDhcdTAwMGItXHUwMDFmXHVGRkZFLVx1RkZGRl0vZztmdW5jdGlvbiBybyhlKXt2YXIgYT1lKyIiO3JldHVybiBhLnJlcGxhY2UoVGksZnVuY3Rpb24ocil7cmV0dXJuIEZpW3JdfSkucmVwbGFjZShlbyxmdW5jdGlvbihyKXtyZXR1cm4iX3giKygiMDAwIityLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIl8ifSl9dmFyIGFvPS9bXHUwMDAwLVx1MDAxZl0vZztmdW5jdGlvbiB4YShlKXt2YXIgYT1lKyIiO3JldHVybiBhLnJlcGxhY2UoVGksZnVuY3Rpb24ocil7cmV0dXJuIEZpW3JdfSkucmVwbGFjZSgvXG4vZywiPGJyLz4iKS5yZXBsYWNlKGFvLGZ1bmN0aW9uKHIpe3JldHVybiImI3giKygiMDAwIityLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIjsifSl9dmFyIEVpPWZ1bmN0aW9uKCl7dmFyIGU9LyYjKFxkKyk7L2c7ZnVuY3Rpb24gYShyLHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHQsMTApKX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShlLGEpfX0oKTtmdW5jdGlvbiBGZShlKXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UhMDpjYXNlIjEiOmNhc2UidHJ1ZSI6cmV0dXJuITA7Y2FzZSAwOmNhc2UhMTpjYXNlIjAiOmNhc2UiZmFsc2UiOnJldHVybiExfXJldHVybiExfWZ1bmN0aW9uIFEwKGUpe2Zvcih2YXIgYT0iIixyPTAsdD0wLG49MCxpPTAsZj0wLHM9MDtyPGUubGVuZ3RoOyl7aWYodD1lLmNoYXJDb2RlQXQocisrKSx0PDEyOCl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtjb250aW51ZX1pZihuPWUuY2hhckNvZGVBdChyKyspLHQ+MTkxJiZ0PDIyNCl7Zj0odCYzMSk8PDYsZnw9biY2MyxhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGYpO2NvbnRpbnVlfWlmKGk9ZS5jaGFyQ29kZUF0KHIrKyksdDwyNDApe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUoKHQmMTUpPDwxMnwobiY2Myk8PDZ8aSY2Myk7Y29udGludWV9Zj1lLmNoYXJDb2RlQXQocisrKSxzPSgodCY3KTw8MTh8KG4mNjMpPDwxMnwoaSY2Myk8PDZ8ZiY2MyktNjU1MzYsYSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5Nisocz4+PjEwJjEwMjMpKSxhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKyhzJjEwMjMpKX1yZXR1cm4gYX1mdW5jdGlvbiBBaShlKXt2YXIgYT1BYSgyKmUubGVuZ3RoKSxyLHQsbj0xLGk9MCxmPTAscztmb3IodD0wO3Q8ZS5sZW5ndGg7dCs9biluPTEsKHM9ZS5jaGFyQ29kZUF0KHQpKTwxMjg/cj1zOnM8MjI0PyhyPShzJjMxKSo2NCsoZS5jaGFyQ29kZUF0KHQrMSkmNjMpLG49Mik6czwyNDA/KHI9KHMmMTUpKjQwOTYrKGUuY2hhckNvZGVBdCh0KzEpJjYzKSo2NCsoZS5jaGFyQ29kZUF0KHQrMikmNjMpLG49Myk6KG49NCxyPShzJjcpKjI2MjE0NCsoZS5jaGFyQ29kZUF0KHQrMSkmNjMpKjQwOTYrKGUuY2hhckNvZGVBdCh0KzIpJjYzKSo2NCsoZS5jaGFyQ29kZUF0KHQrMykmNjMpLHItPTY1NTM2LGY9NTUyOTYrKHI+Pj4xMCYxMDIzKSxyPTU2MzIwKyhyJjEwMjMpKSxmIT09MCYmKGFbaSsrXT1mJjI1NSxhW2krK109Zj4+PjgsZj0wKSxhW2krK109ciUyNTYsYVtpKytdPXI+Pj44O3JldHVybiBhLnNsaWNlKDAsaSkudG9TdHJpbmcoInVjczIiKX1mdW5jdGlvbiB5aShlKXtyZXR1cm4gRWEoZSwiYmluYXJ5IikudG9TdHJpbmcoInV0ZjgiKX12YXIgbzA9ImZvbyBiYXIgYmF6w6LCmMKDw7DCn8KNwqMiLFZlPWZ1bmN0aW9uKCl7aWYoTmUpe2lmKHlpKG8wKT09UTAobzApKXJldHVybiB5aTtpZihBaShvMCk9PVEwKG8wKSlyZXR1cm4gQWl9cmV0dXJuIFEwfSgpLEN0PU5lP2Z1bmN0aW9uKGUpe3JldHVybiBFYShlLCJ1dGY4IikudG9TdHJpbmcoImJpbmFyeSIpfTpmdW5jdGlvbihlKXtmb3IodmFyIGE9W10scj0wLHQ9MCxuPTA7cjxlLmxlbmd0aDspc3dpdGNoKHQ9ZS5jaGFyQ29kZUF0KHIrKyksITApe2Nhc2UgdDwxMjg6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2JyZWFrO2Nhc2UgdDwyMDQ4OmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE5MisodD4+NikpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKHQmNjMpKSk7YnJlYWs7Y2FzZSh0Pj01NTI5NiYmdDw1NzM0NCk6dC09NTUyOTYsbj1lLmNoYXJDb2RlQXQocisrKS01NjMyMCsodDw8MTApLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDI0MCsobj4+MTgmNykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxNDQrKG4+PjEyJjYzKSkpLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsobj4+NiY2MykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKG4mNjMpKSk7YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyMjQrKHQ+PjEyKSkpLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsodD4+NiY2MykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKHQmNjMpKSl9cmV0dXJuIGEuam9pbigiIil9LFNpPWZ1bmN0aW9uKCl7dmFyIGU9W1sibmJzcCIsIiAiXSxbIm1pZGRvdCIsIsK3Il0sWyJxdW90IiwnIiddLFsiYXBvcyIsIiciXSxbImd0IiwiPiJdLFsibHQiLCI8Il0sWyJhbXAiLCImIl1dLm1hcChmdW5jdGlvbihhKXtyZXR1cm5bbmV3IFJlZ0V4cCgiJiIrYVswXSsiOyIsImlnIiksYVsxXV19KTtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciB0PXIucmVwbGFjZSgvXltcdFxuXHIgXSsvLCIiKS5yZXBsYWNlKC8oXnxbXlx0XG5cciBdKVtcdFxuXHIgXSskLywiJDEiKS5yZXBsYWNlKC8+XHMrL2csIj4iKS5yZXBsYWNlKC9cYlxzKzwvZywiPCIpLnJlcGxhY2UoL1tcdFxuXHIgXSsvZywiICIpLnJlcGxhY2UoLzxccypbYkJdW3JSXVxzKlwvPz4vZyxgCmApLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpLG49MDtuPGUubGVuZ3RoOysrbil0PXQucmVwbGFjZShlW25dWzBdLGVbbl1bMV0pO3JldHVybiB0fX0oKSx0bz0vPFwvPyg/OnZ0Oik/dmFyaWFudD4vZyxubz0vPCg/OnZ0OikoW148Iic+XSopPihbXHNcU10qKTwvO2Z1bmN0aW9uIENpKGUsYSl7dmFyIHI9b2UoZSksdD14aShlLHIuYmFzZVR5cGUpfHxbXSxuPVtdO2lmKHQubGVuZ3RoIT1yLnNpemUpe2lmKGEuV1RGKXRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCB2ZWN0b3IgbGVuZ3RoICIrdC5sZW5ndGgrIiAhPSAiK3Iuc2l6ZSk7cmV0dXJuIG59cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgZj1pLnJlcGxhY2UodG8sIiIpLm1hdGNoKG5vKTtmJiZuLnB1c2goe3Y6VmUoZlsyXSksdDpmWzFdfSl9KSxufXZhciBpbz0vKF5cc3xccyR8XG4pLztmdW5jdGlvbiBzbyhlKXtyZXR1cm4gcHIoZSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiIgIithKyc9IicrZVthXSsnIid9KS5qb2luKCIiKX1mdW5jdGlvbiBsMChlLGEscil7cmV0dXJuIjwiK2UrKHIhPW51bGw/c28ocik6IiIpKyhhIT1udWxsPyhhLm1hdGNoKGlvKT8nIHhtbDpzcGFjZT0icHJlc2VydmUiJzoiIikrIj4iK2ErIjwvIitlOiIvIikrIj4ifWZ1bmN0aW9uIHUwKGUpe2lmKE5lJiZCdWZmZXIuaXNCdWZmZXIoZSkpcmV0dXJuIGUudG9TdHJpbmcoInV0ZjgiKTtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7aWYodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gVmUoZmEoejAoZSkpKTt0aHJvdyBuZXcgRXJyb3IoIkJhZCBpbnB1dCBmb3JtYXQ6IGV4cGVjdGVkIEJ1ZmZlciBvciBzdHJpbmciKX12YXIgaXI9LzwoW1wvXT8pKFteXHM/PjwhXC86Il0qOnwpKFteXHM/PD46XC8iXSspKD86XHMrW148Pj0/Iidcc10rPSJbXiJdKj8iKSpccypbXC9dPz4vbWcsZm89e0NPUkVfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIixDVVNUX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9jdXN0b20tcHJvcGVydGllcyIsRVhUX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9leHRlbmRlZC1wcm9wZXJ0aWVzIixDVDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIixSRUxTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiLFRDTU5UOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTgvdGhyZWFkZWRjb21tZW50cyIsZGM6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIixkY3Rlcm1zOiJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIixkY21pdHlwZToiaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlLyIsbXg6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL21hYy9leGNlbC8yMDA4L21haW4iLHI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiLHNqczoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9zaGVldGpzL2NvcmUtcHJvcGVydGllcyIsdnQ6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzIix4c2k6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIix4c2Q6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIn0sY289WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9zcHJlYWRzaGVldG1sL21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzIiXTtmdW5jdGlvbiBvbyhlLGEpe2Zvcih2YXIgcj0xLTIqKGVbYSs3XT4+PjcpLHQ9KChlW2ErN10mMTI3KTw8NCkrKGVbYSs2XT4+PjQmMTUpLG49ZVthKzZdJjE1LGk9NTtpPj0wOy0taSluPW4qMjU2K2VbYStpXTtyZXR1cm4gdD09MjA0Nz9uPT0wP3IqKDEvMCk6TmFOOih0PT0wP3Q9LTEwMjI6KHQtPTEwMjMsbis9TWF0aC5wb3coMiw1MikpLHIqTWF0aC5wb3coMix0LTUyKSpuKX1mdW5jdGlvbiBsbyhlLGEscil7dmFyIHQ9KGE8MHx8MS9hPT0tMS8wPzE6MCk8PDcsbj0wLGk9MCxmPXQ/LWE6YTtpc0Zpbml0ZShmKT9mPT0wP249aT0wOihuPU1hdGguZmxvb3IoTWF0aC5sb2coZikvTWF0aC5MTjIpLGk9ZipNYXRoLnBvdygyLDUyLW4pLG48PS0xMDIzJiYoIWlzRmluaXRlKGkpfHxpPE1hdGgucG93KDIsNTIpKT9uPS0xMDIyOihpLT1NYXRoLnBvdygyLDUyKSxuKz0xMDIzKSk6KG49MjA0NyxpPWlzTmFOKGEpPzI2OTg1OjApO2Zvcih2YXIgcz0wO3M8PTU7KytzLGkvPTI1NillW3Irc109aSYyNTU7ZVtyKzZdPShuJjE1KTw8NHxpJjE1LGVbcis3XT1uPj40fHR9dmFyIGJpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgYT1bXSxyPTEwMjQwLHQ9MDt0PGVbMF0ubGVuZ3RoOysrdClpZihlWzBdW3RdKWZvcih2YXIgbj0wLGk9ZVswXVt0XS5sZW5ndGg7bjxpO24rPXIpYS5wdXNoLmFwcGx5KGEsZVswXVt0XS5zbGljZShuLG4rcikpO3JldHVybiBhfSxEaT1OZT9mdW5jdGlvbihlKXtyZXR1cm4gZVswXS5sZW5ndGg+MCYmQnVmZmVyLmlzQnVmZmVyKGVbMF1bMF0pP0J1ZmZlci5jb25jYXQoZVswXS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hOkVhKGEpfSkpOmJpKGUpfTpiaSxJaT1mdW5jdGlvbihlLGEscil7Zm9yKHZhciB0PVtdLG49YTtuPHI7bis9Mil0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShkYShlLG4pKSk7cmV0dXJuIHQuam9pbigiIikucmVwbGFjZShTciwiIil9LGVuPU5lP2Z1bmN0aW9uKGUsYSxyKXtyZXR1cm4hQnVmZmVyLmlzQnVmZmVyKGUpfHwhVHQ/SWkoZSxhLHIpOmUudG9TdHJpbmcoInV0ZjE2bGUiLGEscikucmVwbGFjZShTciwiIil9OklpLFJpPWZ1bmN0aW9uKGUsYSxyKXtmb3IodmFyIHQ9W10sbj1hO248YStyOysrbil0LnB1c2goKCIwIitlW25dLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKTtyZXR1cm4gdC5qb2luKCIiKX0sT2k9TmU/ZnVuY3Rpb24oZSxhLHIpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoZSk/ZS50b1N0cmluZygiaGV4IixhLGErcik6UmkoZSxhLHIpfTpSaSxOaT1mdW5jdGlvbihlLGEscil7Zm9yKHZhciB0PVtdLG49YTtuPHI7bisrKXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGZ0KGUsbikpKTtyZXR1cm4gdC5qb2luKCIiKX0sYnQ9TmU/ZnVuY3Rpb24oYSxyLHQpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoYSk/YS50b1N0cmluZygidXRmOCIscix0KTpOaShhLHIsdCl9Ok5pLE1pPWZ1bmN0aW9uKGUsYSl7dmFyIHI9TnIoZSxhKTtyZXR1cm4gcj4wP2J0KGUsYSs0LGErNCtyLTEpOiIifSxQaT1NaSxMaT1mdW5jdGlvbihlLGEpe3ZhciByPU5yKGUsYSk7cmV0dXJuIHI+MD9idChlLGErNCxhKzQrci0xKToiIn0sQmk9TGksVWk9ZnVuY3Rpb24oZSxhKXt2YXIgcj0yKk5yKGUsYSk7cmV0dXJuIHI+MD9idChlLGErNCxhKzQrci0xKToiIn0sSGk9VWksV2k9ZnVuY3Rpb24oYSxyKXt2YXIgdD1OcihhLHIpO3JldHVybiB0PjA/ZW4oYSxyKzQscis0K3QpOiIifSxWaT1XaSxHaT1mdW5jdGlvbihlLGEpe3ZhciByPU5yKGUsYSk7cmV0dXJuIHI+MD9idChlLGErNCxhKzQrcik6IiJ9LFhpPUdpLHppPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIG9vKGUsYSl9LGgwPXppLCRpPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpfHx0eXBlb2YgVWludDhBcnJheTwidSImJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5fTtOZSYmKFBpPWZ1bmN0aW9uKGEscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcihhKSlyZXR1cm4gTWkoYSxyKTt2YXIgdD1hLnJlYWRVSW50MzJMRShyKTtyZXR1cm4gdD4wP2EudG9TdHJpbmcoInV0ZjgiLHIrNCxyKzQrdC0xKToiIn0sQmk9ZnVuY3Rpb24oYSxyKXtpZighQnVmZmVyLmlzQnVmZmVyKGEpKXJldHVybiBMaShhLHIpO3ZhciB0PWEucmVhZFVJbnQzMkxFKHIpO3JldHVybiB0PjA/YS50b1N0cmluZygidXRmOCIscis0LHIrNCt0LTEpOiIifSxIaT1mdW5jdGlvbihhLHIpe2lmKCFCdWZmZXIuaXNCdWZmZXIoYSl8fCFUdClyZXR1cm4gVWkoYSxyKTt2YXIgdD0yKmEucmVhZFVJbnQzMkxFKHIpO3JldHVybiBhLnRvU3RyaW5nKCJ1dGYxNmxlIixyKzQscis0K3QtMSl9LFZpPWZ1bmN0aW9uKGEscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcihhKXx8IVR0KXJldHVybiBXaShhLHIpO3ZhciB0PWEucmVhZFVJbnQzMkxFKHIpO3JldHVybiBhLnRvU3RyaW5nKCJ1dGYxNmxlIixyKzQscis0K3QpfSxYaT1mdW5jdGlvbihhLHIpe2lmKCFCdWZmZXIuaXNCdWZmZXIoYSkpcmV0dXJuIEdpKGEscik7dmFyIHQ9YS5yZWFkVUludDMyTEUocik7cmV0dXJuIGEudG9TdHJpbmcoInV0ZjgiLHIrNCxyKzQrdCl9LGgwPWZ1bmN0aW9uKGEscil7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hLnJlYWREb3VibGVMRShyKTp6aShhLHIpfSwkaT1mdW5jdGlvbihhKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGEpfHxBcnJheS5pc0FycmF5KGEpfHx0eXBlb2YgVWludDhBcnJheTwidSImJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5fSk7dmFyIGZ0PWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYV19LGRhPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYSsxXSoyNTYrZVthXX0sdW89ZnVuY3Rpb24oZSxhKXt2YXIgcj1lW2ErMV0qMjU2K2VbYV07cmV0dXJuIHI8MzI3Njg/cjooNjU1MzUtcisxKSotMX0sTnI9ZnVuY3Rpb24oZSxhKXtyZXR1cm4gZVthKzNdKigxPDwyNCkrKGVbYSsyXTw8MTYpKyhlW2ErMV08PDgpK2VbYV19LFdhPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYSszXTw8MjR8ZVthKzJdPDwxNnxlW2ErMV08PDh8ZVthXX0saG89ZnVuY3Rpb24oZSxhKXtyZXR1cm4gZVthXTw8MjR8ZVthKzFdPDwxNnxlW2ErMl08PDh8ZVthKzNdfTtmdW5jdGlvbiBEdChlLGEpe3ZhciByPSIiLHQsbixpPVtdLGYscyxjLG87c3dpdGNoKGEpe2Nhc2UiZGJjcyI6aWYobz10aGlzLmwsTmUmJkJ1ZmZlci5pc0J1ZmZlcih0aGlzKSYmVHQpcj10aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrMiplKS50b1N0cmluZygidXRmMTZsZSIpO2Vsc2UgZm9yKGM9MDtjPGU7KytjKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUoZGEodGhpcyxvKSksbys9MjtlKj0yO2JyZWFrO2Nhc2UidXRmOCI6cj1idCh0aGlzLHRoaXMubCx0aGlzLmwrZSk7YnJlYWs7Y2FzZSJ1dGYxNmxlIjplKj0yLHI9ZW4odGhpcyx0aGlzLmwsdGhpcy5sK2UpO2JyZWFrO2Nhc2Uid3N0ciI6cmV0dXJuIER0LmNhbGwodGhpcyxlLCJkYmNzIik7Y2FzZSJscHN0ci1hbnNpIjpyPVBpKHRoaXMsdGhpcy5sKSxlPTQrTnIodGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2UibHBzdHItY3AiOnI9QmkodGhpcyx0aGlzLmwpLGU9NCtOcih0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHdzdHIiOnI9SGkodGhpcyx0aGlzLmwpLGU9NCsyKk5yKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxwcDQiOmU9NCtOcih0aGlzLHRoaXMubCkscj1WaSh0aGlzLHRoaXMubCksZSYyJiYoZSs9Mik7YnJlYWs7Y2FzZSI4bHBwNCI6ZT00K05yKHRoaXMsdGhpcy5sKSxyPVhpKHRoaXMsdGhpcy5sKSxlJjMmJihlKz00LShlJjMpKTticmVhaztjYXNlImNzdHIiOmZvcihlPTAscj0iIjsoZj1mdCh0aGlzLHRoaXMubCtlKyspKSE9PTA7KWkucHVzaCh0MChmKSk7cj1pLmpvaW4oIiIpO2JyZWFrO2Nhc2UiX3dzdHIiOmZvcihlPTAscj0iIjsoZj1kYSh0aGlzLHRoaXMubCtlKSkhPT0wOylpLnB1c2godDAoZikpLGUrPTI7ZSs9MixyPWkuam9pbigiIik7YnJlYWs7Y2FzZSJkYmNzLWNvbnQiOmZvcihyPSIiLG89dGhpcy5sLGM9MDtjPGU7KytjKXtpZih0aGlzLmxlbnMmJnRoaXMubGVucy5pbmRleE9mKG8pIT09LTEpcmV0dXJuIGY9ZnQodGhpcyxvKSx0aGlzLmw9bysxLHM9RHQuY2FsbCh0aGlzLGUtYyxmPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKSxpLmpvaW4oIiIpK3M7aS5wdXNoKHQwKGRhKHRoaXMsbykpKSxvKz0yfXI9aS5qb2luKCIiKSxlKj0yO2JyZWFrO2Nhc2UiY3BzdHIiOmNhc2Uic2Jjcy1jb250Ijpmb3Iocj0iIixvPXRoaXMubCxjPTA7YyE9ZTsrK2Mpe2lmKHRoaXMubGVucyYmdGhpcy5sZW5zLmluZGV4T2YobykhPT0tMSlyZXR1cm4gZj1mdCh0aGlzLG8pLHRoaXMubD1vKzEscz1EdC5jYWxsKHRoaXMsZS1jLGY/ImRiY3MtY29udCI6InNiY3MtY29udCIpLGkuam9pbigiIikrcztpLnB1c2godDAoZnQodGhpcyxvKSkpLG8rPTF9cj1pLmpvaW4oIiIpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gdD1mdCh0aGlzLHRoaXMubCksdGhpcy5sKyssdDtjYXNlIDI6cmV0dXJuIHQ9KGE9PT0iaSI/dW86ZGEpKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTIsdDtjYXNlIDQ6Y2FzZS00OnJldHVybiBhPT09ImkifHwhKHRoaXNbdGhpcy5sKzNdJjEyOCk/KHQ9KGU+MD9XYTpobykodGhpcyx0aGlzLmwpLHRoaXMubCs9NCx0KToobj1Ocih0aGlzLHRoaXMubCksdGhpcy5sKz00LG4pO2Nhc2UgODpjYXNlLTg6aWYoYT09PSJmIilyZXR1cm4gZT09OD9uPWgwKHRoaXMsdGhpcy5sKTpuPWgwKFt0aGlzW3RoaXMubCs3XSx0aGlzW3RoaXMubCs2XSx0aGlzW3RoaXMubCs1XSx0aGlzW3RoaXMubCs0XSx0aGlzW3RoaXMubCszXSx0aGlzW3RoaXMubCsyXSx0aGlzW3RoaXMubCsxXSx0aGlzW3RoaXMubCswXV0sMCksdGhpcy5sKz04LG47ZT04O2Nhc2UgMTY6cj1PaSh0aGlzLHRoaXMubCxlKTticmVha319cmV0dXJuIHRoaXMubCs9ZSxyfXZhciB4bz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+PjgmMjU1LGVbcisyXT1hPj4+MTYmMjU1LGVbciszXT1hPj4+MjQmMjU1fSx2bz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+OCYyNTUsZVtyKzJdPWE+PjE2JjI1NSxlW3IrM109YT4+MjQmMjU1fSxwbz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+PjgmMjU1fTtmdW5jdGlvbiBnbyhlLGEscil7dmFyIHQ9MCxuPTA7aWYocj09PSJkYmNzIil7Zm9yKG49MDtuIT1hLmxlbmd0aDsrK24pcG8odGhpcyxhLmNoYXJDb2RlQXQobiksdGhpcy5sKzIqbik7dD0yKmEubGVuZ3RofWVsc2UgaWYocj09PSJzYmNzInx8cj09ImNwc3RyIil7Zm9yKGE9YS5yZXBsYWNlKC9bXlx4MDAtXHg3Rl0vZywiXyIpLG49MDtuIT1hLmxlbmd0aDsrK24pdGhpc1t0aGlzLmwrbl09YS5jaGFyQ29kZUF0KG4pJjI1NTt0PWEubGVuZ3RofWVsc2UgaWYocj09PSJoZXgiKXtmb3IoO248ZTsrK24pdGhpc1t0aGlzLmwrK109cGFyc2VJbnQoYS5zbGljZSgyKm4sMipuKzIpLDE2KXx8MDtyZXR1cm4gdGhpc31lbHNlIGlmKHI9PT0idXRmMTZsZSIpe3ZhciBpPU1hdGgubWluKHRoaXMubCtlLHRoaXMubGVuZ3RoKTtmb3Iobj0wO248TWF0aC5taW4oYS5sZW5ndGgsZSk7KytuKXt2YXIgZj1hLmNoYXJDb2RlQXQobik7dGhpc1t0aGlzLmwrK109ZiYyNTUsdGhpc1t0aGlzLmwrK109Zj4+OH1mb3IoO3RoaXMubDxpOyl0aGlzW3RoaXMubCsrXT0wO3JldHVybiB0aGlzfWVsc2Ugc3dpdGNoKGUpe2Nhc2UgMTp0PTEsdGhpc1t0aGlzLmxdPWEmMjU1O2JyZWFrO2Nhc2UgMjp0PTIsdGhpc1t0aGlzLmxdPWEmMjU1LGE+Pj49OCx0aGlzW3RoaXMubCsxXT1hJjI1NTticmVhaztjYXNlIDM6dD0zLHRoaXNbdGhpcy5sXT1hJjI1NSxhPj4+PTgsdGhpc1t0aGlzLmwrMV09YSYyNTUsYT4+Pj04LHRoaXNbdGhpcy5sKzJdPWEmMjU1O2JyZWFrO2Nhc2UgNDp0PTQseG8odGhpcyxhLHRoaXMubCk7YnJlYWs7Y2FzZSA4OmlmKHQ9OCxyPT09ImYiKXtsbyh0aGlzLGEsdGhpcy5sKTticmVha31jYXNlIDE2OmJyZWFrO2Nhc2UtNDp0PTQsdm8odGhpcyxhLHRoaXMubCk7YnJlYWt9cmV0dXJuIHRoaXMubCs9dCx0aGlzfWZ1bmN0aW9uIEtpKGUsYSl7dmFyIHI9T2kodGhpcyx0aGlzLmwsZS5sZW5ndGg+PjEpO2lmKHIhPT1lKXRocm93IG5ldyBFcnJvcihhKyJFeHBlY3RlZCAiK2UrIiBzYXcgIityKTt0aGlzLmwrPWUubGVuZ3RoPj4xfWZ1bmN0aW9uIHNyKGUsYSl7ZS5sPWEsZS5yZWFkX3NoaWZ0PUR0LGUuY2hrPUtpLGUud3JpdGVfc2hpZnQ9Z299ZnVuY3Rpb24geXIoZSxhKXtlLmwrPWF9ZnVuY3Rpb24gZnIoZSl7dmFyIGE9QWEoZSk7cmV0dXJuIHNyKGEsMCksYX1mdW5jdGlvbiB2YShlLGEscil7aWYoZSl7dmFyIHQsbixpO3NyKGUsZS5sfHwwKTtmb3IodmFyIGY9ZS5sZW5ndGgscz0wLGM9MDtlLmw8Zjspe3M9ZS5yZWFkX3NoaWZ0KDEpLHMmMTI4JiYocz0ocyYxMjcpKygoZS5yZWFkX3NoaWZ0KDEpJjEyNyk8PDcpKTt2YXIgbz1iMFtzXXx8YjBbNjU1MzVdO2Zvcih0PWUucmVhZF9zaGlmdCgxKSxpPXQmMTI3LG49MTtuPDQmJnQmMTI4OysrbilpKz0oKHQ9ZS5yZWFkX3NoaWZ0KDEpKSYxMjcpPDw3Km47Yz1lLmwraTt2YXIgbD1vLmYmJm8uZihlLGkscik7aWYoZS5sPWMsYShsLG8scykpcmV0dXJufX19ZnVuY3Rpb24gcm4oKXt2YXIgZT1bXSxhPU5lPzE2Mzg0OjIwNDgscj1OZSYmdHlwZW9mIGZyKGEpLnN1YmFycmF5PT0iZnVuY3Rpb24iLHQ9ZnVuY3Rpb24odSl7dmFyIHg9ZnIodSk7cmV0dXJuIHNyKHgsMCkseH0sbj10KGEpLGk9ZnVuY3Rpb24oKXtuJiYobi5sJiYobi5sZW5ndGg+bi5sJiYobj1uLnNsaWNlKDAsbi5sKSxuLmw9bi5sZW5ndGgpLG4ubGVuZ3RoPjAmJmUucHVzaChuKSksbj1udWxsKX0sZj1mdW5jdGlvbih1KXtyZXR1cm4gbiYmdTxuLmxlbmd0aC1uLmw/bjooaSgpLG49dChNYXRoLm1heCh1KzEsYSkpKX0scz1mdW5jdGlvbigpe3JldHVybiBpKCkseWEoZSl9LGM9ZnVuY3Rpb24oKXtyZXR1cm4gaSgpLGV9LG89ZnVuY3Rpb24odSl7bi5sPjAmJmUucHVzaChuLnNsaWNlKDAsbi5sKSksZS5wdXNoKHUpLG49cj9uLnN1YmFycmF5KG4ubHx8MCk6bi5zbGljZShuLmx8fDApLHNyKG4sMCl9O3JldHVybntuZXh0OmYscHVzaDpvLGVuZDpzLF9idWZzOmUsZW5kMjpjfX1mdW5jdGlvbiBJdChlLGEscil7dmFyIHQ9VWUoZSk7aWYoYS5zPyh0LmNSZWwmJih0LmMrPWEucy5jKSx0LnJSZWwmJih0LnIrPWEucy5yKSk6KHQuY1JlbCYmKHQuYys9YS5jKSx0LnJSZWwmJih0LnIrPWEucikpLCFyfHxyLmJpZmY8MTIpe2Zvcig7dC5jPj0yNTY7KXQuYy09MjU2O2Zvcig7dC5yPj02NTUzNjspdC5yLT02NTUzNn1yZXR1cm4gdH1mdW5jdGlvbiBqaShlLGEscil7dmFyIHQ9VWUoZSk7cmV0dXJuIHQucz1JdCh0LnMsYS5zLHIpLHQuZT1JdCh0LmUsYS5zLHIpLHR9ZnVuY3Rpb24gUnQoZSxhKXtpZihlLmNSZWwmJmUuYzwwKWZvcihlPVVlKGUpO2UuYzwwOyllLmMrPWE+OD8xNjM4NDoyNTY7aWYoZS5yUmVsJiZlLnI8MClmb3IoZT1VZShlKTtlLnI8MDspZS5yKz1hPjg/MTA0ODU3NjphPjU/NjU1MzY6MTYzODQ7dmFyIHI9SWUoZSk7cmV0dXJuIWUuY1JlbCYmZS5jUmVsIT1udWxsJiYocj1rbyhyKSksIWUuclJlbCYmZS5yUmVsIT1udWxsJiYocj1tbyhyKSkscn1mdW5jdGlvbiBhbihlLGEpe3JldHVybiBlLnMucj09MCYmIWUucy5yUmVsJiZlLmUucj09KGEuYmlmZj49MTI/MTA0ODU3NTphLmJpZmY+PTg/NjU1MzY6MTYzODQpJiYhZS5lLnJSZWw/KGUucy5jUmVsPyIiOiIkIikrSGUoZS5zLmMpKyI6IisoZS5lLmNSZWw/IiI6IiQiKStIZShlLmUuYyk6ZS5zLmM9PTAmJiFlLnMuY1JlbCYmZS5lLmM9PShhLmJpZmY+PTEyPzE2MzgzOjI1NSkmJiFlLmUuY1JlbD8oZS5zLnJSZWw/IiI6IiQiKStHZShlLnMucikrIjoiKyhlLmUuclJlbD8iIjoiJCIpK0dlKGUuZS5yKTpSdChlLnMsYS5iaWZmKSsiOiIrUnQoZS5lLGEuYmlmZil9ZnVuY3Rpb24gdG4oZSl7cmV0dXJuIHBhcnNlSW50KF9vKGUpLDEwKS0xfWZ1bmN0aW9uIEdlKGUpe3JldHVybiIiKyhlKzEpfWZ1bmN0aW9uIG1vKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbQS1aXXxeKShcZCspJC8sIiQxJCQkMiIpfWZ1bmN0aW9uIF9vKGUpe3JldHVybiBlLnJlcGxhY2UoL1wkKFxkKykkLywiJDEiKX1mdW5jdGlvbiBubihlKXtmb3IodmFyIGE9d28oZSkscj0wLHQ9MDt0IT09YS5sZW5ndGg7Kyt0KXI9MjYqcithLmNoYXJDb2RlQXQodCktNjQ7cmV0dXJuIHItMX1mdW5jdGlvbiBIZShlKXtpZihlPDApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvbHVtbiAiK2UpO3ZhciBhPSIiO2ZvcigrK2U7ZTtlPU1hdGguZmxvb3IoKGUtMSkvMjYpKWE9U3RyaW5nLmZyb21DaGFyQ29kZSgoZS0xKSUyNis2NSkrYTtyZXR1cm4gYX1mdW5jdGlvbiBrbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC9eKFtBLVpdKS8sIiQkJDEiKX1mdW5jdGlvbiB3byhlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXCQoW0EtWl0pLywiJDEiKX1mdW5jdGlvbiBGbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXCQ/W0EtWl0qKShcJD9cZCopLywiJDEsJDIiKS5zcGxpdCgiLCIpfWZ1bmN0aW9uIGdyKGUpe2Zvcih2YXIgYT0wLHI9MCx0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciBuPWUuY2hhckNvZGVBdCh0KTtuPj00OCYmbjw9NTc/YT0xMCphKyhuLTQ4KTpuPj02NSYmbjw9OTAmJihyPTI2KnIrKG4tNjQpKX1yZXR1cm57YzpyLTEscjphLTF9fWZ1bmN0aW9uIEllKGUpe2Zvcih2YXIgYT1lLmMrMSxyPSIiO2E7YT0oYS0xKS8yNnwwKXI9U3RyaW5nLmZyb21DaGFyQ29kZSgoYS0xKSUyNis2NSkrcjtyZXR1cm4gcisoZS5yKzEpfWZ1bmN0aW9uIHBhKGUpe3ZhciBhPWUuaW5kZXhPZigiOiIpO3JldHVybiBhPT0tMT97czpncihlKSxlOmdyKGUpfTp7czpncihlLnNsaWNlKDAsYSkpLGU6Z3IoZS5zbGljZShhKzEpKX19ZnVuY3Rpb24gRGUoZSxhKXtyZXR1cm4gdHlwZW9mIGE+InUifHx0eXBlb2YgYT09Im51bWJlciI/RGUoZS5zLGUuZSk6KHR5cGVvZiBlIT0ic3RyaW5nIiYmKGU9SWUoZSkpLHR5cGVvZiBhIT0ic3RyaW5nIiYmKGE9SWUoYSkpLGU9PWE/ZTplKyI6IithKX1mdW5jdGlvbiBUbyhlLGEpe2lmKCFlJiYhKGEmJmEuYmlmZjw9NSYmYS5iaWZmPj0yKSl0aHJvdyBuZXcgRXJyb3IoImVtcHR5IHNoZWV0IG5hbWUiKTtyZXR1cm4vW15cd1x1NEUwMC1cdTlGRkZcdTMwNDAtXHUzMEZGXS8udGVzdChlKT8iJyIrZS5yZXBsYWNlKC8nL2csIicnIikrIiciOmV9ZnVuY3Rpb24gWmUoZSl7dmFyIGE9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSxyPTAsdD0wLG49MCxpPWUubGVuZ3RoO2ZvcihyPTA7dDxpJiYhKChuPWUuY2hhckNvZGVBdCh0KS02NCk8MXx8bj4yNik7Kyt0KXI9MjYqcituO2ZvcihhLnMuYz0tLXIscj0wO3Q8aSYmISgobj1lLmNoYXJDb2RlQXQodCktNDgpPDB8fG4+OSk7Kyt0KXI9MTAqcituO2lmKGEucy5yPS0tcix0PT09aXx8biE9MTApcmV0dXJuIGEuZS5jPWEucy5jLGEuZS5yPWEucy5yLGE7Zm9yKCsrdCxyPTA7dCE9aSYmISgobj1lLmNoYXJDb2RlQXQodCktNjQpPDF8fG4+MjYpOysrdClyPTI2KnIrbjtmb3IoYS5lLmM9LS1yLHI9MDt0IT1pJiYhKChuPWUuY2hhckNvZGVBdCh0KS00OCk8MHx8bj45KTsrK3Qpcj0xMCpyK247cmV0dXJuIGEuZS5yPS0tcixhfWZ1bmN0aW9uIFlpKGUsYSl7dmFyIHI9ZS50PT0iZCImJmEgaW5zdGFuY2VvZiBEYXRlO2lmKGUueiE9bnVsbCl0cnl7cmV0dXJuIGUudz1ScihlLnoscj9vcihhKTphKX1jYXRjaHt9dHJ5e3JldHVybiBlLnc9UnIoKGUuWEZ8fHt9KS5udW1GbXRJZHx8KHI/MTQ6MCkscj9vcihhKTphKX1jYXRjaHtyZXR1cm4iIithfX1mdW5jdGlvbiBnYShlLGEscil7cmV0dXJuIGU9PW51bGx8fGUudD09bnVsbHx8ZS50PT0ieiI/IiI6ZS53IT09dm9pZCAwP2UudzooZS50PT0iZCImJiFlLnomJnImJnIuZGF0ZU5GJiYoZS56PXIuZGF0ZU5GKSxlLnQ9PSJlIj9icltlLnZdfHxlLnY6YT09bnVsbD9ZaShlLGUudik6WWkoZSxhKSl9ZnVuY3Rpb24gQ2EoZSxhKXt2YXIgcj1hJiZhLnNoZWV0P2Euc2hlZXQ6IlNoZWV0MSIsdD17fTtyZXR1cm4gdFtyXT1lLHtTaGVldE5hbWVzOltyXSxTaGVldHM6dH19ZnVuY3Rpb24gRW8oZSl7dmFyIGE9e30scj1lfHx7fTtyZXR1cm4gci5kZW5zZSYmKGFbIiFkYXRhIl09W10pLGF9ZnVuY3Rpb24gSmkoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT9lWyIhZGF0YSJdIT1udWxsOnQuZGVuc2UsaT1lfHwobj97IiFkYXRhIjpbXX06e30pO24mJiFpWyIhZGF0YSJdJiYoaVsiIWRhdGEiXT1bXSk7dmFyIGY9MCxzPTA7aWYoaSYmdC5vcmlnaW4hPW51bGwpaWYodHlwZW9mIHQub3JpZ2luPT0ibnVtYmVyIilmPXQub3JpZ2luO2Vsc2V7dmFyIGM9dHlwZW9mIHQub3JpZ2luPT0ic3RyaW5nIj9ncih0Lm9yaWdpbik6dC5vcmlnaW47Zj1jLnIscz1jLmN9dmFyIG89e3M6e2M6MWU3LHI6MWU3fSxlOntjOjAscjowfX07aWYoaVsiIXJlZiJdKXt2YXIgbD1aZShpWyIhcmVmIl0pO28ucy5jPWwucy5jLG8ucy5yPWwucy5yLG8uZS5jPU1hdGgubWF4KG8uZS5jLGwuZS5jKSxvLmUucj1NYXRoLm1heChvLmUucixsLmUuciksZj09LTEmJihvLmUucj1mPWlbIiFyZWYiXT9sLmUucisxOjApfWVsc2Ugby5zLmM9by5lLmM9by5zLnI9by5lLnI9MDtmb3IodmFyIHU9W10seD0hMSxoPTA7aCE9YS5sZW5ndGg7KytoKWlmKGFbaF0pe2lmKCFBcnJheS5pc0FycmF5KGFbaF0pKXRocm93IG5ldyBFcnJvcigiYW9hX3RvX3NoZWV0IGV4cGVjdHMgYW4gYXJyYXkgb2YgYXJyYXlzIik7dmFyIGc9ZitoO24mJihpWyIhZGF0YSJdW2ddfHwoaVsiIWRhdGEiXVtnXT1bXSksdT1pWyIhZGF0YSJdW2ddKTtmb3IodmFyIG09YVtoXSxkPTA7ZCE9bS5sZW5ndGg7KytkKWlmKCEodHlwZW9mIG1bZF0+InUiKSl7dmFyIHA9e3Y6bVtkXSx0OiIifSx3PXMrZDtpZihvLnMucj5nJiYoby5zLnI9Zyksby5zLmM+dyYmKG8ucy5jPXcpLG8uZS5yPGcmJihvLmUucj1nKSxvLmUuYzx3JiYoby5lLmM9dykseD0hMCxtW2RdJiZ0eXBlb2YgbVtkXT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KG1bZF0pJiYhKG1bZF1pbnN0YW5jZW9mIERhdGUpKXA9bVtkXTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocC52KSYmKHAuZj1tW2RdWzFdLHAudj1wLnZbMF0pLHAudj09PW51bGwpaWYocC5mKXAudD0ibiI7ZWxzZSBpZih0Lm51bGxFcnJvcilwLnQ9ImUiLHAudj0wO2Vsc2UgaWYodC5zaGVldFN0dWJzKXAudD0ieiI7ZWxzZSBjb250aW51ZTtlbHNlIHR5cGVvZiBwLnY9PSJudW1iZXIiP2lzRmluaXRlKHAudik/cC50PSJuIjppc05hTihwLnYpPyhwLnQ9ImUiLHAudj0xNSk6KHAudD0iZSIscC52PTcpOnR5cGVvZiBwLnY9PSJib29sZWFuIj9wLnQ9ImIiOnAudiBpbnN0YW5jZW9mIERhdGU/KHAuej10LmRhdGVORnx8VGVbMTRdLHQuVVRDfHwocC52PWMwKHAudikpLHQuY2VsbERhdGVzPyhwLnQ9ImQiLHAudz1ScihwLnosb3IocC52LHQuZGF0ZTE5MDQpKSk6KHAudD0ibiIscC52PW9yKHAudix0LmRhdGUxOTA0KSxwLnc9UnIocC56LHAudikpKTpwLnQ9InMiO2lmKG4pdVt3XSYmdVt3XS56JiYocC56PXVbd10ueiksdVt3XT1wO2Vsc2V7dmFyIF89SGUodykrKGcrMSk7aVtfXSYmaVtfXS56JiYocC56PWlbX10ueiksaVtfXT1wfX19cmV0dXJuIHgmJm8ucy5jPDEwNGU1JiYoaVsiIXJlZiJdPURlKG8pKSxpfWZ1bmN0aW9uIGN0KGUsYSl7cmV0dXJuIEppKG51bGwsZSxhKX1mdW5jdGlvbiBBbyhlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDQsImkiKX1mdW5jdGlvbiBtcihlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIGE9PT0wPyIiOmUucmVhZF9zaGlmdChhLCJkYmNzIil9ZnVuY3Rpb24geW8oZSl7cmV0dXJue2ljaDplLnJlYWRfc2hpZnQoMiksaWZudDplLnJlYWRfc2hpZnQoMil9fWZ1bmN0aW9uIHNuKGUsYSl7dmFyIHI9ZS5sLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49bXIoZSksaT1bXSxmPXt0Om4saDpufTtpZih0JjEpe2Zvcih2YXIgcz1lLnJlYWRfc2hpZnQoNCksYz0wO2MhPXM7KytjKWkucHVzaCh5byhlKSk7Zi5yPWl9ZWxzZSBmLnI9W3tpY2g6MCxpZm50OjB9XTtyZXR1cm4gZS5sPXIrYSxmfXZhciBTbz1zbjtmdW5jdGlvbiBYcihlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIHIrPWUucmVhZF9zaGlmdCgxKTw8MTYsZS5sKysse2M6YSxpU3R5bGVSZWY6cn19ZnVuY3Rpb24gVmEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBhKz1lLnJlYWRfc2hpZnQoMSk8PDE2LGUubCsrLHtjOi0xLGlTdHlsZVJlZjphfX12YXIgQ289bXI7ZnVuY3Rpb24geDAoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiBhPT09MHx8YT09PTQyOTQ5NjcyOTU/IiI6ZS5yZWFkX3NoaWZ0KGEsImRiY3MiKX12YXIgYm89bXIsZm49eDA7ZnVuY3Rpb24gZDAoZSl7dmFyIGE9ZS5zbGljZShlLmwsZS5sKzQpLHI9YVswXSYxLHQ9YVswXSYyO2UubCs9NDt2YXIgbj10PT09MD9oMChbMCwwLDAsMCxhWzBdJjI1MixhWzFdLGFbMl0sYVszXV0sMCk6V2EoYSwwKT4+MjtyZXR1cm4gcj9uLzEwMDpufWZ1bmN0aW9uIFppKGUpe3ZhciBhPXtzOnt9LGU6e319O3JldHVybiBhLnMucj1lLnJlYWRfc2hpZnQoNCksYS5lLnI9ZS5yZWFkX3NoaWZ0KDQpLGEucy5jPWUucmVhZF9zaGlmdCg0KSxhLmUuYz1lLnJlYWRfc2hpZnQoNCksYX12YXIgR2E9Wmk7ZnVuY3Rpb24gX3IoZSl7aWYoZS5sZW5ndGgtZS5sPDgpdGhyb3ciWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvdyI7cmV0dXJuIGUucmVhZF9zaGlmdCg4LCJmIil9ZnVuY3Rpb24gRG8oZSl7dmFyIGE9e30scj1lLnJlYWRfc2hpZnQoMSksdD1yPj4+MSxuPWUucmVhZF9zaGlmdCgxKSxpPWUucmVhZF9zaGlmdCgyLCJpIiksZj1lLnJlYWRfc2hpZnQoMSkscz1lLnJlYWRfc2hpZnQoMSksYz1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGUubCsrLHQpe2Nhc2UgMDphLmF1dG89MTticmVhaztjYXNlIDE6YS5pbmRleD1uO3ZhciBvPXRhW25dO28mJihhLnJnYj1qYShvKSk7YnJlYWs7Y2FzZSAyOmEucmdiPWphKFtmLHMsY10pO2JyZWFrO2Nhc2UgMzphLnRoZW1lPW47YnJlYWt9cmV0dXJuIGkhPTAmJihhLnRpbnQ9aT4wP2kvMzI3Njc6aS8zMjc2OCksYX1mdW5jdGlvbiBJbyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk7ZS5sKys7dmFyIHI9e2ZCb2xkOmEmMSxmSXRhbGljOmEmMixmVW5kZXJsaW5lOmEmNCxmU3RyaWtlb3V0OmEmOCxmT3V0bGluZTphJjE2LGZTaGFkb3c6YSYzMixmQ29uZGVuc2U6YSY2NCxmRXh0ZW5kOmEmMTI4fTtyZXR1cm4gcn1mdW5jdGlvbiBxaShlLGEpe3ZhciByPXsyOiJCSVRNQVAiLDM6Ik1FVEFGSUxFUElDVCIsODoiRElCIiwxNDoiRU5ITUVUQUZJTEUifSx0PWUucmVhZF9zaGlmdCg0KTtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiIiO2Nhc2UgNDI5NDk2NzI5NTpjYXNlIDQyOTQ5NjcyOTQ6cmV0dXJuIHJbZS5yZWFkX3NoaWZ0KDQpXXx8IiJ9aWYodD40MDApdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDbGlwYm9hcmQ6ICIrdC50b1N0cmluZygxNikpO3JldHVybiBlLmwtPTQsZS5yZWFkX3NoaWZ0KDAsYT09MT8ibHBzdHIiOiJscHdzdHIiKX1mdW5jdGlvbiBSbyhlKXtyZXR1cm4gcWkoZSwxKX1mdW5jdGlvbiBPbyhlKXtyZXR1cm4gcWkoZSwyKX12YXIgY249MixDcj0zLHYwPTExLFFpPTEyLHAwPTE5LGcwPTY0LE5vPTY1LE1vPTcxLFBvPTQxMDgsTG89NDEyNix1cj04MCxlcz04MSxCbz1bdXIsZXNdLFVvPXsxOntuOiJDb2RlUGFnZSIsdDpjbn0sMjp7bjoiQ2F0ZWdvcnkiLHQ6dXJ9LDM6e246IlByZXNlbnRhdGlvbkZvcm1hdCIsdDp1cn0sNDp7bjoiQnl0ZUNvdW50Iix0OkNyfSw1OntuOiJMaW5lQ291bnQiLHQ6Q3J9LDY6e246IlBhcmFncmFwaENvdW50Iix0OkNyfSw3OntuOiJTbGlkZUNvdW50Iix0OkNyfSw4OntuOiJOb3RlQ291bnQiLHQ6Q3J9LDk6e246IkhpZGRlbkNvdW50Iix0OkNyfSwxMDp7bjoiTXVsdGltZWRpYUNsaXBDb3VudCIsdDpDcn0sMTE6e246IlNjYWxlQ3JvcCIsdDp2MH0sMTI6e246IkhlYWRpbmdQYWlycyIsdDpQb30sMTM6e246IlRpdGxlc09mUGFydHMiLHQ6TG99LDE0OntuOiJNYW5hZ2VyIix0OnVyfSwxNTp7bjoiQ29tcGFueSIsdDp1cn0sMTY6e246IkxpbmtzVXBUb0RhdGUiLHQ6djB9LDE3OntuOiJDaGFyYWN0ZXJDb3VudCIsdDpDcn0sMTk6e246IlNoYXJlZERvYyIsdDp2MH0sMjI6e246Ikh5cGVybGlua3NDaGFuZ2VkIix0OnYwfSwyMzp7bjoiQXBwVmVyc2lvbiIsdDpDcixwOiJ2ZXJzaW9uIn0sMjQ6e246IkRpZ1NpZyIsdDpOb30sMjY6e246IkNvbnRlbnRUeXBlIix0OnVyfSwyNzp7bjoiQ29udGVudFN0YXR1cyIsdDp1cn0sMjg6e246Ikxhbmd1YWdlIix0OnVyfSwyOTp7bjoiVmVyc2lvbiIsdDp1cn0sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDpwMH0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6cDB9LDE5MTkwNTQ0MzQ6e319LEhvPXsxOntuOiJDb2RlUGFnZSIsdDpjbn0sMjp7bjoiVGl0bGUiLHQ6dXJ9LDM6e246IlN1YmplY3QiLHQ6dXJ9LDQ6e246IkF1dGhvciIsdDp1cn0sNTp7bjoiS2V5d29yZHMiLHQ6dXJ9LDY6e246IkNvbW1lbnRzIix0OnVyfSw3OntuOiJUZW1wbGF0ZSIsdDp1cn0sODp7bjoiTGFzdEF1dGhvciIsdDp1cn0sOTp7bjoiUmV2TnVtYmVyIix0OnVyfSwxMDp7bjoiRWRpdFRpbWUiLHQ6ZzB9LDExOntuOiJMYXN0UHJpbnRlZCIsdDpnMH0sMTI6e246IkNyZWF0ZWREYXRlIix0OmcwfSwxMzp7bjoiTW9kaWZpZWREYXRlIix0OmcwfSwxNDp7bjoiUGFnZUNvdW50Iix0OkNyfSwxNTp7bjoiV29yZENvdW50Iix0OkNyfSwxNjp7bjoiQ2hhckNvdW50Iix0OkNyfSwxNzp7bjoiVGh1bWJuYWlsIix0Ok1vfSwxODp7bjoiQXBwbGljYXRpb24iLHQ6dXJ9LDE5OntuOiJEb2NTZWN1cml0eSIsdDpDcn0sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDpwMH0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6cDB9LDE5MTkwNTQ0MzQ6e319LHJzPXsxOiJVUyIsMjoiQ0EiLDM6IiIsNzoiUlUiLDIwOiJFRyIsMzA6IkdSIiwzMToiTkwiLDMyOiJCRSIsMzM6IkZSIiwzNDoiRVMiLDM2OiJIVSIsMzk6IklUIiw0MToiQ0giLDQzOiJBVCIsNDQ6IkdCIiw0NToiREsiLDQ2OiJTRSIsNDc6Ik5PIiw0ODoiUEwiLDQ5OiJERSIsNTI6Ik1YIiw1NToiQlIiLDYxOiJBVSIsNjQ6Ik5aIiw2NjoiVEgiLDgxOiJKUCIsODI6IktSIiw4NDoiVk4iLDg2OiJDTiIsOTA6IlRSIiwxMDU6IkpTIiwyMTM6IkRaIiwyMTY6Ik1BIiwyMTg6IkxZIiwzNTE6IlBUIiwzNTQ6IklTIiwzNTg6IkZJIiw0MjA6IkNaIiw4ODY6IlRXIiw5NjE6IkxCIiw5NjI6IkpPIiw5NjM6IlNZIiw5NjQ6IklRIiw5NjU6IktXIiw5NjY6IlNBIiw5NzE6IkFFIiw5NzI6IklMIiw5NzQ6IlFBIiw5ODE6IklSIiw2NTUzNToiVVMifSxXbz1bbnVsbCwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdodEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRhcmtEb3duIiwiZGFya1VwIiwiZGFya0dyaWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIsImxpZ2h0VmVydGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlzIiwiZ3JheTEyNSIsImdyYXkwNjI1Il07ZnVuY3Rpb24gVm8oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGEpe3JldHVyblthPj4xNiYyNTUsYT4+OCYyNTUsYSYyNTVdfSl9dmFyIEdvPVZvKFswLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSwwLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSw4Mzg4NjA4LDMyNzY4LDEyOCw4NDIxMzc2LDgzODg3MzYsMzI4OTYsMTI2MzIyNTYsODQyMTUwNCwxMDA2NjQzMSwxMDA0MDE2NiwxNjc3NzE2NCwxMzQzNDg3OSw2Njg0Nzc0LDE2NzQ0NTc2LDI2MzE2LDEzNDIxODIzLDEyOCwxNjcxMTkzNSwxNjc3Njk2MCw2NTUzNSw4Mzg4NzM2LDgzODg2MDgsMzI4OTYsMjU1LDUyNDc5LDEzNDM0ODc5LDEzNDM0ODI4LDE2Nzc3MTEzLDEwMDc5NDg3LDE2NzUxMDUyLDEzNDA4NzY3LDE2NzY0MDU3LDMzNjg3MDMsMzM5NDc2NCwxMDA3OTIzMiwxNjc2MzkwNCwxNjc1MDg0OCwxNjczNzc5Miw2NzEwOTM3LDk4Njg5NTAsMTMxNTgsMzM4MTYwNiwxMzA1NiwzMzU1MzkyLDEwMDQwMDY0LDEwMDQwMTY2LDMzNTU1NDUsMzM1NTQ0MywwLDE2Nzc3MjE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSx0YT1VZShHbyksYnI9ezA6IiNOVUxMISIsNzoiI0RJVi8wISIsMTU6IiNWQUxVRSEiLDIzOiIjUkVGISIsMjk6IiNOQU1FPyIsMzY6IiNOVU0hIiw0MjoiI04vQSIsNDM6IiNHRVRUSU5HX0RBVEEiLDI1NToiI1dURj8ifSxkcj17IiNOVUxMISI6MCwiI0RJVi8wISI6NywiI1ZBTFVFISI6MTUsIiNSRUYhIjoyMywiI05BTUU/IjoyOSwiI05VTSEiOjM2LCIjTi9BIjo0MiwiI0dFVFRJTkdfREFUQSI6NDMsIiNXVEY/IjoyNTV9LGFzPVsiX3hsbm0uQ29uc29saWRhdGVfQXJlYSIsIl94bG5tLkF1dG9fT3BlbiIsIl94bG5tLkF1dG9fQ2xvc2UiLCJfeGxubS5FeHRyYWN0IiwiX3hsbm0uRGF0YWJhc2UiLCJfeGxubS5Dcml0ZXJpYSIsIl94bG5tLlByaW50X0FyZWEiLCJfeGxubS5QcmludF9UaXRsZXMiLCJfeGxubS5SZWNvcmRlciIsIl94bG5tLkRhdGFfRm9ybSIsIl94bG5tLkF1dG9fQWN0aXZhdGUiLCJfeGxubS5BdXRvX0RlYWN0aXZhdGUiLCJfeGxubS5TaGVldF9UaXRsZSIsIl94bG5tLl9GaWx0ZXJEYXRhYmFzZSJdLHRzPXsiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLm1haW4reG1sIjoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpbiI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbCI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiOiJzaGVldHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0Ijoic2hlZXRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4V3MiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWwiOiJjaGFydHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2hhcnRzaGVldCI6ImNoYXJ0cyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0K3htbCI6Im1hY3JvcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0IjoibWFjcm9zIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmludGxtYWNyb3NoZWV0IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleE1zIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbCI6ImRpYWxvZ3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZGlhbG9nc2hlZXQiOiJkaWFsb2dzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiOiJzdHJzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0cmluZ3MiOiJzdHJzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCI6InN0eWxlcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zdHlsZXMiOiJzdHlsZXMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5jb3JlLXByb3BlcnRpZXMreG1sIjoiY29yZXByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbS1wcm9wZXJ0aWVzK3htbCI6ImN1c3Rwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbCI6ImV4dHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbVhtbFByb3BlcnRpZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmN1c3RvbVByb3BlcnR5IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbCI6ImNvbW1lbnRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzIjoiY29tbWVudHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGhyZWFkZWRjb21tZW50cyt4bWwiOiJ0aHJlYWRlZGNvbW1lbnRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBlcnNvbit4bWwiOiJwZW9wbGUiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldE1ldGFkYXRhK3htbCI6Im1ldGFkYXRhIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGEiOiJtZXRhZGF0YSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90VGFibGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRjb2xvcnN0eWxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0c3R5bGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRleCt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNhbGNDaGFpbiI6ImNhbGNjaGFpbnMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjQ2hhaW4reG1sIjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnByaW50ZXJTZXR0aW5ncyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5leHRlcm5hbExpbmsiOiJsaW5rcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmV4dGVybmFsTGluayt4bWwiOiJsaW5rcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlRGVmaW5pdGlvbiI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZURlZmluaXRpb24reG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVSZWNvcmRzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucXVlcnlUYWJsZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeVRhYmxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudXNlck5hbWVzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkhlYWRlcnMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uTG9nIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uSGVhZGVycyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25Mb2creG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJOYW1lcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlU2luZ2xlQ2VsbHMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVTaW5nbGVDZWxscyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlciI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlcit4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlckNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud3NTb3J0TWFwIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbCI6InRoZW1lcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZU92ZXJyaWRlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuVGltZWxpbmUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZUNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiOiJ2YmEiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RTaWduYXR1cmUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52b2xhdGlsZURlcGVuZGVuY2llcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9wZXJ0aWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQubW9kZWwrZGF0YSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuU3VydmV5K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZyt4bWwiOiJkcmF3aW5ncyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnRzaGFwZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbUNvbG9ycyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtRGF0YSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtTGF5b3V0K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1TdHlsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbERyYXdpbmciOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwiOiJyZWxzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm9sZU9iamVjdCI6IlRPRE8iLCJpbWFnZS9wbmciOiJUT0RPIixzaGVldDoianMifTtmdW5jdGlvbiBYbygpe3JldHVybnt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sdGhyZWFkZWRjb21tZW50czpbXSxsaW5rczpbXSxjb3JlcHJvcHM6W10sZXh0cHJvcHM6W10sY3VzdHByb3BzOltdLHRoZW1lczpbXSxzdHlsZXM6W10sY2FsY2NoYWluczpbXSx2YmE6W10sZHJhd2luZ3M6W10sbWV0YWRhdGE6W10scGVvcGxlOltdLFRPRE86W10seG1sbnM6IiJ9fWZ1bmN0aW9uIHpvKGUpe3ZhciBhPVhvKCk7aWYoIWV8fCFlLm1hdGNoKXJldHVybiBhO3ZhciByPXt9O2lmKChlLm1hdGNoKG5yKXx8W10pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49b2UodCk7c3dpdGNoKG5bMF0ucmVwbGFjZShaYywiPCIpKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxUeXBlcyI6YS54bWxucz1uWyJ4bWxucyIrKG5bMF0ubWF0Y2goLzwoXHcrKTovKXx8WyIiLCIiXSlbMV1dO2JyZWFrO2Nhc2UiPERlZmF1bHQiOnJbbi5FeHRlbnNpb24udG9Mb3dlckNhc2UoKV09bi5Db250ZW50VHlwZTticmVhaztjYXNlIjxPdmVycmlkZSI6YVt0c1tuLkNvbnRlbnRUeXBlXV0hPT12b2lkIDAmJmFbdHNbbi5Db250ZW50VHlwZV1dLnB1c2gobi5QYXJ0TmFtZSk7YnJlYWt9fSksYS54bWxucyE9PWZvLkNUKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIrYS54bWxucyk7cmV0dXJuIGEuY2FsY2NoYWluPWEuY2FsY2NoYWlucy5sZW5ndGg+MD9hLmNhbGNjaGFpbnNbMF06IiIsYS5zc3Q9YS5zdHJzLmxlbmd0aD4wP2Euc3Ryc1swXToiIixhLnN0eWxlPWEuc3R5bGVzLmxlbmd0aD4wP2Euc3R5bGVzWzBdOiIiLGEuZGVmYXVsdHM9cixkZWxldGUgYS5jYWxjY2hhaW5zLGF9dmFyIG90PXtXQjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIsU0hFRVQ6Imh0dHA6Ly9zaGVldGpzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLEhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2h5cGVybGluayIsVk1MOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmciLFhQQVRIOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGlua1BhdGgiLFhNSVNTOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxFeHRlcm5hbExpbmtQYXRoL3hsUGF0aE1pc3NpbmciLFhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGluayIsQ1hNTDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWwiLENYTUxQOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbFByb3BzIixDTU5UOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NvbW1lbnRzIixDT1JFX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIixFWFRfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIsQ1VTVF9QUk9QUzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b20tcHJvcGVydGllcyIsU1NUOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiLFNUWToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiLFRIRU1FOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIixDSEFSVDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydCIsQ0hBUlRFWDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNC9yZWxhdGlvbnNoaXBzL2NoYXJ0RXgiLENTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0c2hlZXQiLFdTOlsiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9vZmZpY2VEb2N1bWVudC9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCJdLERTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RpYWxvZ3NoZWV0IixNUzoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3hsTWFjcm9zaGVldCIsSU1HOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlIixEUkFXOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RyYXdpbmciLFhMTUVUQToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGVldE1ldGFkYXRhIixUQ01OVDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3RocmVhZGVkQ29tbWVudCIsUEVPUExFOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE3LzEwL3JlbGF0aW9uc2hpcHMvcGVyc29uIixDT05OOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2Nvbm5lY3Rpb25zIixWQkE6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy92YmFQcm9qZWN0In07ZnVuY3Rpb24gT3QoZSl7dmFyIGE9ZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBlLnNsaWNlKDAsYSsxKSsiX3JlbHMvIitlLnNsaWNlKGErMSkrIi5yZWxzIn1mdW5jdGlvbiBYYShlLGEpe3ZhciByPXsiIWlkIjp7fX07aWYoIWUpcmV0dXJuIHI7YS5jaGFyQXQoMCkhPT0iLyImJihhPSIvIithKTt2YXIgdD17fTtyZXR1cm4oZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBpPW9lKG4pO2lmKGlbMF09PT0iPFJlbGF0aW9uc2hpcCIpe3ZhciBmPXt9O2YuVHlwZT1pLlR5cGUsZi5UYXJnZXQ9Q2UoaS5UYXJnZXQpLGYuSWQ9aS5JZCxpLlRhcmdldE1vZGUmJihmLlRhcmdldE1vZGU9aS5UYXJnZXRNb2RlKTt2YXIgcz1pLlRhcmdldE1vZGU9PT0iRXh0ZXJuYWwiP2kuVGFyZ2V0OmhhKGkuVGFyZ2V0LGEpO3Jbc109Zix0W2kuSWRdPWZ9fSksclsiIWlkIl09dCxyfXZhciAkbz0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCI7ZnVuY3Rpb24gS28oZSxhKXtmb3IodmFyIHI9dTAoZSksdCxuO3Q9aXIuZXhlYyhyKTspc3dpdGNoKHRbM10pe2Nhc2UibWFuaWZlc3QiOmJyZWFrO2Nhc2UiZmlsZS1lbnRyeSI6aWYobj1vZSh0WzBdLCExKSxuLnBhdGg9PSIvIiYmbi50eXBlIT09JG8pdGhyb3cgbmV3IEVycm9yKCJUaGlzIE9wZW5Eb2N1bWVudCBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2JyZWFrO2Nhc2UiZW5jcnlwdGlvbi1kYXRhIjpjYXNlImFsZ29yaXRobSI6Y2FzZSJzdGFydC1rZXktZ2VuZXJhdGlvbiI6Y2FzZSJrZXktZGVyaXZhdGlvbiI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBPRFMgRW5jcnlwdGlvbiIpO2RlZmF1bHQ6aWYoYSYmYS5XVEYpdGhyb3cgdH19dmFyIG5zPVtbImNwOmNhdGVnb3J5IiwiQ2F0ZWdvcnkiXSxbImNwOmNvbnRlbnRTdGF0dXMiLCJDb250ZW50U3RhdHVzIl0sWyJjcDprZXl3b3JkcyIsIktleXdvcmRzIl0sWyJjcDpsYXN0TW9kaWZpZWRCeSIsIkxhc3RBdXRob3IiXSxbImNwOmxhc3RQcmludGVkIiwiTGFzdFByaW50ZWQiXSxbImNwOnJldmlzaW9uIiwiUmV2TnVtYmVyIl0sWyJjcDp2ZXJzaW9uIiwiVmVyc2lvbiJdLFsiZGM6Y3JlYXRvciIsIkF1dGhvciJdLFsiZGM6ZGVzY3JpcHRpb24iLCJDb21tZW50cyJdLFsiZGM6aWRlbnRpZmllciIsIklkZW50aWZpZXIiXSxbImRjOmxhbmd1YWdlIiwiTGFuZ3VhZ2UiXSxbImRjOnN1YmplY3QiLCJTdWJqZWN0Il0sWyJkYzp0aXRsZSIsIlRpdGxlIl0sWyJkY3Rlcm1zOmNyZWF0ZWQiLCJDcmVhdGVkRGF0ZSIsImRhdGUiXSxbImRjdGVybXM6bW9kaWZpZWQiLCJNb2RpZmllZERhdGUiLCJkYXRlIl1dO2Z1bmN0aW9uIGlzKGUpe3ZhciBhPXt9O2U9VmUoZSk7Zm9yKHZhciByPTA7cjxucy5sZW5ndGg7KytyKXt2YXIgdD1uc1tyXSxuPUhhKGUsdFswXSk7biE9bnVsbCYmbi5sZW5ndGg+MCYmKGFbdFsxXV09Q2UoblsxXSkpLHRbMl09PT0iZGF0ZSImJmFbdFsxXV0mJihhW3RbMV1dPXhyKGFbdFsxXV0pKX1yZXR1cm4gYX12YXIgam89W1siQXBwbGljYXRpb24iLCJBcHBsaWNhdGlvbiIsInN0cmluZyJdLFsiQXBwVmVyc2lvbiIsIkFwcFZlcnNpb24iLCJzdHJpbmciXSxbIkNvbXBhbnkiLCJDb21wYW55Iiwic3RyaW5nIl0sWyJEb2NTZWN1cml0eSIsIkRvY1NlY3VyaXR5Iiwic3RyaW5nIl0sWyJNYW5hZ2VyIiwiTWFuYWdlciIsInN0cmluZyJdLFsiSHlwZXJsaW5rc0NoYW5nZWQiLCJIeXBlcmxpbmtzQ2hhbmdlZCIsImJvb2wiXSxbIlNoYXJlZERvYyIsIlNoYXJlZERvYyIsImJvb2wiXSxbIkxpbmtzVXBUb0RhdGUiLCJMaW5rc1VwVG9EYXRlIiwiYm9vbCJdLFsiU2NhbGVDcm9wIiwiU2NhbGVDcm9wIiwiYm9vbCJdLFsiSGVhZGluZ1BhaXJzIiwiSGVhZGluZ1BhaXJzIiwicmF3Il0sWyJUaXRsZXNPZlBhcnRzIiwiVGl0bGVzT2ZQYXJ0cyIsInJhdyJdXTtmdW5jdGlvbiBzcyhlLGEscix0KXt2YXIgbj1bXTtpZih0eXBlb2YgZT09InN0cmluZyIpbj1DaShlLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpbj1uLmNvbmNhdChlW2ldLm1hcChmdW5jdGlvbihsKXtyZXR1cm57djpsfX0pKTt2YXIgZj10eXBlb2YgYT09InN0cmluZyI/Q2koYSx0KS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGwudn0pOmEscz0wLGM9MDtpZihmLmxlbmd0aD4wKWZvcih2YXIgbz0wO28hPT1uLmxlbmd0aDtvKz0yKXtzd2l0Y2goYz0rbltvKzFdLnYsbltvXS52KXtjYXNlIldvcmtzaGVldHMiOmNhc2Ui5bel5L2c6KGoIjpjYXNlItCb0LjRgdGC0YsiOmNhc2Ui2KPZiNix2KfZgiDYp9mE2LnZhdmEIjpjYXNlIuODr+ODvOOCr+OCt+ODvOODiCI6Y2FzZSLXktec15nXldeg15XXqiDXoteR15XXk9eUIjpjYXNlIkFyYmVpdHNibMOkdHRlciI6Y2FzZSLDh2FsxLHFn21hIFNheWZhbGFyxLEiOmNhc2UiRmV1aWxsZXMgZGUgY2FsY3VsIjpjYXNlIkZvZ2xpIGRpIGxhdm9ybyI6Y2FzZSJGb2xoYXMgZGUgY8OhbGN1bG8iOmNhc2UiUGxhbmlsaGFzIjpjYXNlIlJlZ25lYXJrIjpjYXNlIkhvamFzIGRlIGPDoWxjdWxvIjpjYXNlIldlcmtibGFkZW4iOnIuV29ya3NoZWV0cz1jLHIuU2hlZXROYW1lcz1mLnNsaWNlKHMscytjKTticmVhaztjYXNlIk5hbWVkIFJhbmdlcyI6Y2FzZSJSYW5nb3MgY29uIG5vbWJyZSI6Y2FzZSLlkI3liY3ku5jjgY3kuIDopqciOmNhc2UiQmVuYW5udGUgQmVyZWljaGUiOmNhc2UiTmF2bmdpdm5lIG9tcsOlZGVyIjpyLk5hbWVkUmFuZ2VzPWMsci5EZWZpbmVkTmFtZXM9Zi5zbGljZShzLHMrYyk7YnJlYWs7Y2FzZSJDaGFydHMiOmNhc2UiRGlhZ3JhbW1lIjpyLkNoYXJ0c2hlZXRzPWMsci5DaGFydE5hbWVzPWYuc2xpY2UocyxzK2MpO2JyZWFrfXMrPWN9fWZ1bmN0aW9uIFlvKGUsYSxyKXt2YXIgdD17fTtyZXR1cm4gYXx8KGE9e30pLGU9VmUoZSksam8uZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT0oTGUoZSxuWzBdKXx8W10pWzFdO3N3aXRjaChuWzJdKXtjYXNlInN0cmluZyI6aSYmKGFbblsxXV09Q2UoaSkpO2JyZWFrO2Nhc2UiYm9vbCI6YVtuWzFdXT1pPT09InRydWUiO2JyZWFrO2Nhc2UicmF3Ijp2YXIgZj1IYShlLG5bMF0pO2YmJmYubGVuZ3RoPjAmJih0W25bMV1dPWZbMV0pO2JyZWFrfX0pLHQuSGVhZGluZ1BhaXJzJiZ0LlRpdGxlc09mUGFydHMmJnNzKHQuSGVhZGluZ1BhaXJzLHQuVGl0bGVzT2ZQYXJ0cyxhLHIpLGF9dmFyIEpvPS88W148Pl0rPltePF0qL2c7ZnVuY3Rpb24gWm8oZSxhKXt2YXIgcj17fSx0PSIiLG49ZS5tYXRjaChKbyk7aWYobilmb3IodmFyIGk9MDtpIT1uLmxlbmd0aDsrK2kpe3ZhciBmPW5baV0scz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPD94bWwiOmJyZWFrO2Nhc2UiPFByb3BlcnRpZXMiOmJyZWFrO2Nhc2UiPHByb3BlcnR5Ijp0PUNlKHMubmFtZSk7YnJlYWs7Y2FzZSI8L3Byb3BlcnR5PiI6dD1udWxsO2JyZWFrO2RlZmF1bHQ6aWYoZi5pbmRleE9mKCI8dnQ6Iik9PT0wKXt2YXIgYz1mLnNwbGl0KCI+Iiksbz1jWzBdLnNsaWNlKDQpLGw9Y1sxXTtzd2l0Y2gobyl7Y2FzZSJscHN0ciI6Y2FzZSJic3RyIjpjYXNlImxwd3N0ciI6clt0XT1DZShsKTticmVhaztjYXNlImJvb2wiOnJbdF09RmUobCk7YnJlYWs7Y2FzZSJpMSI6Y2FzZSJpMiI6Y2FzZSJpNCI6Y2FzZSJpOCI6Y2FzZSJpbnQiOmNhc2UidWludCI6clt0XT1wYXJzZUludChsLDEwKTticmVhaztjYXNlInI0IjpjYXNlInI4IjpjYXNlImRlY2ltYWwiOnJbdF09cGFyc2VGbG9hdChsKTticmVhaztjYXNlImZpbGV0aW1lIjpjYXNlImRhdGUiOnJbdF09eHIobCk7YnJlYWs7Y2FzZSJjeSI6Y2FzZSJlcnJvciI6clt0XT1DZShsKTticmVhaztkZWZhdWx0OmlmKG8uc2xpY2UoLTEpPT0iLyIpYnJlYWs7YS5XVEYmJnR5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS53YXJuKCJVbmV4cGVjdGVkIixmLG8sYyl9fWVsc2UgaWYoZi5zbGljZSgwLDIpIT09IjwvIil7aWYoYS5XVEYpdGhyb3cgbmV3IEVycm9yKGYpfX19cmV0dXJuIHJ9dmFyIHFvPXtUaXRsZToiVGl0bGUiLFN1YmplY3Q6IlN1YmplY3QiLEF1dGhvcjoiQXV0aG9yIixLZXl3b3JkczoiS2V5d29yZHMiLENvbW1lbnRzOiJEZXNjcmlwdGlvbiIsTGFzdEF1dGhvcjoiTGFzdEF1dGhvciIsUmV2TnVtYmVyOiJSZXZpc2lvbiIsQXBwbGljYXRpb246IkFwcE5hbWUiLExhc3RQcmludGVkOiJMYXN0UHJpbnRlZCIsQ3JlYXRlZERhdGU6IkNyZWF0ZWQiLE1vZGlmaWVkRGF0ZToiTGFzdFNhdmVkIixDYXRlZ29yeToiQ2F0ZWdvcnkiLE1hbmFnZXI6Ik1hbmFnZXIiLENvbXBhbnk6IkNvbXBhbnkiLEFwcFZlcnNpb246IlZlcnNpb24iLENvbnRlbnRTdGF0dXM6IkNvbnRlbnRTdGF0dXMiLElkZW50aWZpZXI6IklkZW50aWZpZXIiLExhbmd1YWdlOiJMYW5ndWFnZSJ9LG9uO2Z1bmN0aW9uIFFvKGUsYSxyKXtvbnx8KG9uPVkwKHFvKSksYT1vblthXXx8YSxlW2FdPXJ9ZnVuY3Rpb24gbG4oZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpLHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiBuZXcgRGF0ZSgoci8xZTcqTWF0aC5wb3coMiwzMikrYS8xZTctMTE2NDQ0NzM2MDApKjFlMykudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLjAwMC8sIiIpfWZ1bmN0aW9uIGVsKGUsYSxyKXt2YXIgdD1lLmwsbj1lLnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKTtpZihyKWZvcig7ZS5sLXQmMzspKytlLmw7cmV0dXJuIG59ZnVuY3Rpb24gcmwoZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgwLCJscHdzdHIiKTtyZXR1cm4gciYmKGUubCs9NC0odC5sZW5ndGgrMSYzKSYzKSx0fWZ1bmN0aW9uIGZzKGUsYSxyKXtyZXR1cm4gYT09PTMxP3JsKGUpOmVsKGUsYSxyKX1mdW5jdGlvbiBOdChlLGEscil7cmV0dXJuIGZzKGUsYSxyPT09ITE/MDo0KX1mdW5jdGlvbiBhbChlLGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcigiVnRVbmFsaWduZWRTdHJpbmcgbXVzdCBoYXZlIHBvc2l0aXZlIGxlbmd0aCIpO3JldHVybiBmcyhlLGEsMCl9ZnVuY3Rpb24gdGwoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCg0KSxyPVtdLHQ9MDt0IT1hOysrdCl7dmFyIG49ZS5sO3JbdF09ZS5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpLnJlcGxhY2UoU3IsIiIpLGUubC1uJjImJihlLmwrPTIpfXJldHVybiByfWZ1bmN0aW9uIG5sKGUpe2Zvcih2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1bXSx0PTA7dCE9YTsrK3Qpclt0XT1lLnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gcn1mdW5jdGlvbiBpbChlKXt2YXIgYT1lLmwscj1tMChlLGVzKTtlW2UubF09PTAmJmVbZS5sKzFdPT0wJiZlLmwtYSYyJiYoZS5sKz0yKTt2YXIgdD1tMChlLENyKTtyZXR1cm5bcix0XX1mdW5jdGlvbiBzbChlKXtmb3IodmFyIGE9ZS5yZWFkX3NoaWZ0KDQpLHI9W10sdD0wO3Q8YS8yOysrdClyLnB1c2goaWwoZSkpO3JldHVybiByfWZ1bmN0aW9uIGNzKGUsYSl7Zm9yKHZhciByPWUucmVhZF9zaGlmdCg0KSx0PXt9LG49MDtuIT1yOysrbil7dmFyIGk9ZS5yZWFkX3NoaWZ0KDQpLGY9ZS5yZWFkX3NoaWZ0KDQpO3RbaV09ZS5yZWFkX3NoaWZ0KGYsYT09PTEyMDA/InV0ZjE2bGUiOiJ1dGY4IikucmVwbGFjZShTciwiIikucmVwbGFjZShFdCwiISIpLGE9PT0xMjAwJiZmJTImJihlLmwrPTIpfXJldHVybiBlLmwmMyYmKGUubD1lLmw+PjIrMTw8MiksdH1mdW5jdGlvbiBvcyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1lLnNsaWNlKGUubCxlLmwrYSk7cmV0dXJuIGUubCs9YSwoYSYzKT4wJiYoZS5sKz00LShhJjMpJjMpLHJ9ZnVuY3Rpb24gZmwoZSl7dmFyIGE9e307cmV0dXJuIGEuU2l6ZT1lLnJlYWRfc2hpZnQoNCksZS5sKz1hLlNpemUrMy0oYS5TaXplLTEpJTQsYX1mdW5jdGlvbiBtMChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG4saT1yfHx7fTtpZihlLmwrPTIsYSE9PVFpJiZ0IT09YSYmQm8uaW5kZXhPZihhKT09PS0xJiYhKChhJjY1NTM0KT09NDEyNiYmKHQmNjU1MzQpPT00MTI2KSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHR5cGUgIithKyIgc2F3ICIrdCk7c3dpdGNoKGE9PT1RaT90OmEpe2Nhc2UgMjpyZXR1cm4gbj1lLnJlYWRfc2hpZnQoMiwiaSIpLGkucmF3fHwoZS5sKz0yKSxuO2Nhc2UgMzpyZXR1cm4gbj1lLnJlYWRfc2hpZnQoNCwiaSIpLG47Y2FzZSAxMTpyZXR1cm4gZS5yZWFkX3NoaWZ0KDQpIT09MDtjYXNlIDE5OnJldHVybiBuPWUucmVhZF9zaGlmdCg0KSxuO2Nhc2UgMzA6ZS5sKz00LHZhbD1OdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgMzE6ZS5sKz00LHZhbD1OdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgNjQ6cmV0dXJuIGxuKGUpO2Nhc2UgNjU6cmV0dXJuIG9zKGUpO2Nhc2UgNzE6cmV0dXJuIGZsKGUpO2Nhc2UgODA6cmV0dXJuIE50KGUsdCwhaS5yYXcpLnJlcGxhY2UoU3IsIiIpO2Nhc2UgODE6cmV0dXJuIGFsKGUsdCkucmVwbGFjZShTciwiIik7Y2FzZSA0MTA4OnJldHVybiBzbChlKTtjYXNlIDQxMjY6Y2FzZSA0MTI3OnJldHVybiB0PT00MTI3P3RsKGUpOm5sKGUpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgIithKyIgIit0KX19ZnVuY3Rpb24gbHMoZSxhKXt2YXIgcj1lLmwsdD1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCksaT1bXSxmPTAscz0wLGM9LTEsbz17fTtmb3IoZj0wO2YhPW47KytmKXt2YXIgbD1lLnJlYWRfc2hpZnQoNCksdT1lLnJlYWRfc2hpZnQoNCk7aVtmXT1bbCx1K3JdfWkuc29ydChmdW5jdGlvbih3LF8pe3JldHVybiB3WzFdLV9bMV19KTt2YXIgeD17fTtmb3IoZj0wO2YhPW47KytmKXtpZihlLmwhPT1pW2ZdWzFdKXt2YXIgaD0hMDtpZihmPjAmJmEpc3dpdGNoKGFbaVtmLTFdWzBdXS50KXtjYXNlIDI6ZS5sKzI9PT1pW2ZdWzFdJiYoZS5sKz0yLGg9ITEpO2JyZWFrO2Nhc2UgODA6ZS5sPD1pW2ZdWzFdJiYoZS5sPWlbZl1bMV0saD0hMSk7YnJlYWs7Y2FzZSA0MTA4OmUubDw9aVtmXVsxXSYmKGUubD1pW2ZdWzFdLGg9ITEpO2JyZWFrfWlmKCghYXx8Zj09MCkmJmUubDw9aVtmXVsxXSYmKGg9ITEsZS5sPWlbZl1bMV0pLGgpdGhyb3cgbmV3IEVycm9yKCJSZWFkIEVycm9yOiBFeHBlY3RlZCBhZGRyZXNzICIraVtmXVsxXSsiIGF0ICIrZS5sKyIgOiIrZil9aWYoYSl7aWYoaVtmXVswXT09MCYmaS5sZW5ndGg+ZisxJiZpW2ZdWzFdPT1pW2YrMV1bMV0pY29udGludWU7dmFyIGc9YVtpW2ZdWzBdXTtpZih4W2cubl09bTAoZSxnLnQse3JhdzohMH0pLGcucD09PSJ2ZXJzaW9uIiYmKHhbZy5uXT1TdHJpbmcoeFtnLm5dPj4xNikrIi4iKygiMDAwMCIrU3RyaW5nKHhbZy5uXSY2NTUzNSkpLnNsaWNlKC00KSksZy5uPT0iQ29kZVBhZ2UiKXN3aXRjaCh4W2cubl0pe2Nhc2UgMDp4W2cubl09MTI1MjtjYXNlIDg3NDpjYXNlIDkzMjpjYXNlIDkzNjpjYXNlIDk0OTpjYXNlIDk1MDpjYXNlIDEyNTA6Y2FzZSAxMjUxOmNhc2UgMTI1MzpjYXNlIDEyNTQ6Y2FzZSAxMjU1OmNhc2UgMTI1NjpjYXNlIDEyNTc6Y2FzZSAxMjU4OmNhc2UgMWU0OmNhc2UgMTIwMDpjYXNlIDEyMDE6Y2FzZSAxMjUyOmNhc2UgNjVlMzpjYXNlLTUzNjpjYXNlIDY1MDAxOmNhc2UtNTM1OllyKHM9eFtnLm5dPj4+MCY2NTUzNSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvZGVQYWdlOiAiK3hbZy5uXSl9fWVsc2UgaWYoaVtmXVswXT09PTEpe2lmKHM9eC5Db2RlUGFnZT1tMChlLGNuKSxZcihzKSxjIT09LTEpe3ZhciBtPWUubDtlLmw9aVtjXVsxXSxvPWNzKGUscyksZS5sPW19fWVsc2UgaWYoaVtmXVswXT09PTApe2lmKHM9PT0wKXtjPWYsZS5sPWlbZisxXVsxXTtjb250aW51ZX1vPWNzKGUscyl9ZWxzZXt2YXIgZD1vW2lbZl1bMF1dLHA7c3dpdGNoKGVbZS5sXSl7Y2FzZSA2NTplLmwrPTQscD1vcyhlKTticmVhaztjYXNlIDMwOmUubCs9NCxwPU50KGUsZVtlLmwtNF0pLnJlcGxhY2UoLyhefFteXHUwMDAwXSlcdTAwMDArJC8sIiQxIik7YnJlYWs7Y2FzZSAzMTplLmwrPTQscD1OdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgMzplLmwrPTQscD1lLnJlYWRfc2hpZnQoNCwiaSIpO2JyZWFrO2Nhc2UgMTk6ZS5sKz00LHA9ZS5yZWFkX3NoaWZ0KDQpO2JyZWFrO2Nhc2UgNTplLmwrPTQscD1lLnJlYWRfc2hpZnQoOCwiZiIpO2JyZWFrO2Nhc2UgMTE6ZS5sKz00LHA9YXIoZSw0KTticmVhaztjYXNlIDY0OmUubCs9NCxwPXhyKGxuKGUpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5wYXJzZWQgdmFsdWU6ICIrZVtlLmxdKX14W2RdPXB9fXJldHVybiBlLmw9cit0LHh9ZnVuY3Rpb24gdXMoZSxhLHIpe3ZhciB0PWUuY29udGVudDtpZighdClyZXR1cm57fTtzcih0LDApO3ZhciBuLGksZixzLGM9MDt0LmNoaygiZmVmZiIsIkJ5dGUgT3JkZXI6ICIpLHQucmVhZF9zaGlmdCgyKTt2YXIgbz10LnJlYWRfc2hpZnQoNCksbD10LnJlYWRfc2hpZnQoMTYpO2lmKGwhPT1NZS51dGlscy5jb25zdHMuSEVBREVSX0NMU0lEJiZsIT09cil0aHJvdyBuZXcgRXJyb3IoIkJhZCBQcm9wZXJ0eVNldCBDTFNJRCAiK2wpO2lmKG49dC5yZWFkX3NoaWZ0KDQpLG4hPT0xJiZuIT09Mil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCAjU2V0czogIituKTtpZihpPXQucmVhZF9zaGlmdCgxNikscz10LnJlYWRfc2hpZnQoNCksbj09PTEmJnMhPT10LmwpdGhyb3cgbmV3IEVycm9yKCJMZW5ndGggbWlzbWF0Y2g6ICIrcysiICE9PSAiK3QubCk7bj09PTImJihmPXQucmVhZF9zaGlmdCgxNiksYz10LnJlYWRfc2hpZnQoNCkpO3ZhciB1PWxzKHQsYSkseD17U3lzdGVtSWRlbnRpZmllcjpvfTtmb3IodmFyIGggaW4gdSl4W2hdPXVbaF07aWYoeC5GTVRJRD1pLG49PT0xKXJldHVybiB4O2lmKGMtdC5sPT0yJiYodC5sKz0yKSx0LmwhPT1jKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoIDI6ICIrdC5sKyIgIT09ICIrYyk7dmFyIGc7dHJ5e2c9bHModCxudWxsKX1jYXRjaHt9Zm9yKGggaW4gZyl4W2hdPWdbaF07cmV0dXJuIHguRk1USUQ9W2ksZl0seH1mdW5jdGlvbiBiYShlLGEpe3JldHVybiBlLnJlYWRfc2hpZnQoYSksbnVsbH1mdW5jdGlvbiBjbChlLGEscil7Zm9yKHZhciB0PVtdLG49ZS5sK2E7ZS5sPG47KXQucHVzaChyKGUsbi1lLmwpKTtpZihuIT09ZS5sKXRocm93IG5ldyBFcnJvcigiU2x1cnAgZXJyb3IiKTtyZXR1cm4gdH1mdW5jdGlvbiBhcihlLGEpe3JldHVybiBlLnJlYWRfc2hpZnQoYSk9PT0xfWZ1bmN0aW9uIGVyKGUpe3JldHVybiBlLnJlYWRfc2hpZnQoMiwidSIpfWZ1bmN0aW9uIGhzKGUsYSl7cmV0dXJuIGNsKGUsYSxlcil9ZnVuY3Rpb24geHMoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiByPT09MT9hOmE9PT0xfWZ1bmN0aW9uIHphKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQociYmci5iaWZmPj0xMj8yOjEpLG49InNiY3MtY29udCIsaT1IcjtpZihyJiZyLmJpZmY+PTgmJihIcj0xMjAwKSwhcnx8ci5iaWZmPT04KXt2YXIgZj1lLnJlYWRfc2hpZnQoMSk7ZiYmKG49ImRiY3MtY29udCIpfWVsc2Ugci5iaWZmPT0xMiYmKG49IndzdHIiKTtyLmJpZmY+PTImJnIuYmlmZjw9NSYmKG49ImNwc3RyIik7dmFyIHM9dD9lLnJlYWRfc2hpZnQodCxuKToiIjtyZXR1cm4gSHI9aSxzfWZ1bmN0aW9uIG9sKGUpe3ZhciBhPUhyO0hyPTEyMDA7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49dCY0LGk9dCY4LGY9MSsodCYxKSxzPTAsYyxvPXt9O2kmJihzPWUucmVhZF9zaGlmdCgyKSksbiYmKGM9ZS5yZWFkX3NoaWZ0KDQpKTt2YXIgbD1mPT0yPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiLHU9cj09PTA/IiI6ZS5yZWFkX3NoaWZ0KHIsbCk7cmV0dXJuIGkmJihlLmwrPTQqcyksbiYmKGUubCs9Yyksby50PXUsaXx8KG8ucmF3PSI8dD4iK28udCsiPC90PiIsby5yPW8udCksSHI9YSxvfWZ1bmN0aW9uICRhKGUsYSxyKXt2YXIgdDtpZihyKXtpZihyLmJpZmY+PTImJnIuYmlmZjw9NSlyZXR1cm4gZS5yZWFkX3NoaWZ0KGEsImNwc3RyIik7aWYoci5iaWZmPj0xMilyZXR1cm4gZS5yZWFkX3NoaWZ0KGEsImRiY3MtY29udCIpfXZhciBuPWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gbj09PTA/dD1lLnJlYWRfc2hpZnQoYSwic2Jjcy1jb250Iik6dD1lLnJlYWRfc2hpZnQoYSwiZGJjcy1jb250IiksdH1mdW5jdGlvbiBNdChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpO3JldHVybiB0PT09MD8oci5iaWZmPD04JiZlLmwrKywiIik6JGEoZSx0LHIpfWZ1bmN0aW9uIEthKGUsYSxyKXtpZihyLmJpZmY+NSlyZXR1cm4gTXQoZSxhLHIpO3ZhciB0PWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gdD09PTA/KGUubCsrLCIiKTplLnJlYWRfc2hpZnQodCxyLmJpZmY8PTR8fCFlLmxlbnM/ImNwc3RyIjoic2Jjcy1jb250Iil9ZnVuY3Rpb24gbGwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpO2UubCsrO3ZhciByPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gZS5sKz0yLFthLHJdfWZ1bmN0aW9uIHVsKGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUubCx0PSExO2E+MjQmJihlLmwrPWEtMjQsZS5yZWFkX3NoaWZ0KDE2KT09PSI3OTU4ODFmNDNiMWQ3ZjQ4YWYyYzgyNWRjNDg1Mjc2MyImJih0PSEwKSxlLmw9cik7dmFyIG49ZS5yZWFkX3NoaWZ0KCh0P2EtMjQ6YSk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gdCYmKGUubCs9MjQpLG59ZnVuY3Rpb24gaGwoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCgyKSxyPSIiO2EtLSA+MDspcis9Ii4uLyI7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKTtpZihlLmwrPTIsZS5yZWFkX3NoaWZ0KDIpIT01NzAwNSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBGaWxlTW9uaWtlciIpO3ZhciBuPWUucmVhZF9zaGlmdCg0KTtpZihuPT09MClyZXR1cm4gcit0LnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgaT1lLnJlYWRfc2hpZnQoNCk7aWYoZS5yZWFkX3NoaWZ0KDIpIT0zKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7dmFyIGY9ZS5yZWFkX3NoaWZ0KGk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gcitmfWZ1bmN0aW9uIHhsKGUsYSl7dmFyIHI9ZS5yZWFkX3NoaWZ0KDE2KTtzd2l0Y2gocil7Y2FzZSJlMGM5ZWE3OWY5YmFjZTExOGM4MjAwYWEwMDRiYTkwYiI6cmV0dXJuIHVsKGUpO2Nhc2UiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDYiOnJldHVybiBobChlKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTW9uaWtlciAiK3IpfX1mdW5jdGlvbiBfMChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1hPjA/ZS5yZWFkX3NoaWZ0KGEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKToiIjtyZXR1cm4gcn1mdW5jdGlvbiBkbChlLGEpe3ZhciByPWUubCthLHQ9ZS5yZWFkX3NoaWZ0KDQpO2lmKHQhPT0yKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246ICIrdCk7dmFyIG49ZS5yZWFkX3NoaWZ0KDIpO2UubCs9Mjt2YXIgaSxmLHMsYyxvPSIiLGwsdTtuJjE2JiYoaT1fMChlLHItZS5sKSksbiYxMjgmJihmPV8wKGUsci1lLmwpKSwobiYyNTcpPT09MjU3JiYocz1fMChlLHItZS5sKSksKG4mMjU3KT09PTEmJihjPXhsKGUsci1lLmwpKSxuJjgmJihvPV8wKGUsci1lLmwpKSxuJjMyJiYobD1lLnJlYWRfc2hpZnQoMTYpKSxuJjY0JiYodT1sbihlKSksZS5sPXI7dmFyIHg9Znx8c3x8Y3x8IiI7eCYmbyYmKHgrPSIjIitvKSx4fHwoeD0iIyIrbyksbiYyJiZ4LmNoYXJBdCgwKT09Ii8iJiZ4LmNoYXJBdCgxKSE9Ii8iJiYoeD0iZmlsZTovLyIreCk7dmFyIGg9e1RhcmdldDp4fTtyZXR1cm4gbCYmKGguZ3VpZD1sKSx1JiYoaC50aW1lPXUpLGkmJihoLlRvb2x0aXA9aSksaH1mdW5jdGlvbiBkcyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSkscj1lLnJlYWRfc2hpZnQoMSksdD1lLnJlYWRfc2hpZnQoMSksbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2Escix0LG5dfWZ1bmN0aW9uIHZzKGUsYSl7dmFyIHI9ZHMoZSk7cmV0dXJuIHJbM109MCxyfWZ1bmN0aW9uIHFyKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT17cjp0LGM6bixpeGZlOjB9O2lmKHImJnIuYmlmZj09Mnx8YT09Nyl7dmFyIGY9ZS5yZWFkX3NoaWZ0KDEpO2kuaXhmZT1mJjYzLGUubCs9Mn1lbHNlIGkuaXhmZT1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGl9ZnVuY3Rpb24gdmwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTgse3R5cGU6YSxmbGFnczpyfX1mdW5jdGlvbiBwbChlLGEscil7cmV0dXJuIGE9PT0wPyIiOkthKGUsYSxyKX1mdW5jdGlvbiBnbChlLGEscil7dmFyIHQ9ci5iaWZmPjg/NDoyLG49ZS5yZWFkX3NoaWZ0KHQpLGk9ZS5yZWFkX3NoaWZ0KHQsImkiKSxmPWUucmVhZF9zaGlmdCh0LCJpIik7cmV0dXJuW24saSxmXX1mdW5jdGlvbiBwcyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMikscj1kMChlKTtyZXR1cm5bYSxyXX1mdW5jdGlvbiBtbChlLGEscil7ZS5sKz00LGEtPTQ7dmFyIHQ9ZS5sK2Esbj16YShlLGEsciksaT1lLnJlYWRfc2hpZnQoMik7aWYodC09ZS5sLGkhPT10KXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIEFkZGluVWRmOiBwYWRkaW5nID0gIit0KyIgIT0gIitpKTtyZXR1cm4gZS5sKz1pLG59ZnVuY3Rpb24gazAoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntzOntjOnQscjphfSxlOntjOm4scn19fWZ1bmN0aW9uIGdzKGUpe3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWUucmVhZF9zaGlmdCgxKSxuPWUucmVhZF9zaGlmdCgxKTtyZXR1cm57czp7Yzp0LHI6YX0sZTp7YzpuLHJ9fX12YXIgX2w9Z3M7ZnVuY3Rpb24gbXMoZSl7ZS5sKz00O3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gZS5sKz0xMixbcixhLHRdfWZ1bmN0aW9uIGtsKGUpe3ZhciBhPXt9O3JldHVybiBlLmwrPTQsZS5sKz0xNixhLmZTaGFyZWROb3RlPWUucmVhZF9zaGlmdCgyKSxlLmwrPTQsYX1mdW5jdGlvbiB3bChlKXt2YXIgYT17fTtyZXR1cm4gZS5sKz00LGUuY2Y9ZS5yZWFkX3NoaWZ0KDIpLGF9ZnVuY3Rpb24ga3IoZSl7ZS5sKz0yLGUubCs9ZS5yZWFkX3NoaWZ0KDIpfXZhciBGbD17MDprciw0OmtyLDU6a3IsNjprciw3OndsLDg6a3IsOTprciwxMDprciwxMTprciwxMjprciwxMzprbCwxNDprciwxNTprciwxNjprciwxNzprciwxODprciwxOTprciwyMDprciwyMTptc307ZnVuY3Rpb24gVGwoZSxhKXtmb3IodmFyIHI9ZS5sK2EsdD1bXTtlLmw8cjspe3ZhciBuPWUucmVhZF9zaGlmdCgyKTtlLmwtPTI7dHJ5e3Rbbl09Rmxbbl0oZSxyLWUubCl9Y2F0Y2h7cmV0dXJuIGUubD1yLHR9fXJldHVybiBlLmwhPXImJihlLmw9ciksdH1mdW5jdGlvbiB3MChlLGEpe3ZhciByPXtCSUZGVmVyOjAsZHQ6MH07c3dpdGNoKHIuQklGRlZlcj1lLnJlYWRfc2hpZnQoMiksYS09MixhPj0yJiYoci5kdD1lLnJlYWRfc2hpZnQoMiksZS5sLT0yKSxyLkJJRkZWZXIpe2Nhc2UgMTUzNjpjYXNlIDEyODA6Y2FzZSAxMDI0OmNhc2UgNzY4OmNhc2UgNTEyOmNhc2UgMjpjYXNlIDc6YnJlYWs7ZGVmYXVsdDppZihhPjYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIEJJRkYgVmVyICIrci5CSUZGVmVyKX1yZXR1cm4gZS5yZWFkX3NoaWZ0KGEpLHJ9ZnVuY3Rpb24gRWwoZSxhKXtyZXR1cm4gYT09PTB8fGUucmVhZF9zaGlmdCgyKSwxMjAwfWZ1bmN0aW9uIEFsKGUsYSxyKXtpZihyLmVuYylyZXR1cm4gZS5sKz1hLCIiO3ZhciB0PWUubCxuPUthKGUsMCxyKTtyZXR1cm4gZS5yZWFkX3NoaWZ0KGErdC1lLmwpLG59ZnVuY3Rpb24geWwoZSxhLHIpe3ZhciB0PXImJnIuYmlmZj09OHx8YT09Mj9lLnJlYWRfc2hpZnQoMik6KGUubCs9YSwwKTtyZXR1cm57ZkRpYWxvZzp0JjE2LGZCZWxvdzp0JjY0LGZSaWdodDp0JjEyOH19ZnVuY3Rpb24gU2woZSxhLHIpe3ZhciB0PSIiO2lmKHIuYmlmZj09NClyZXR1cm4gdD16YShlLDAsciksdC5sZW5ndGg9PT0wJiYodD0iU2hlZXQxIikse25hbWU6dH07dmFyIG49ZS5yZWFkX3NoaWZ0KDQpLGk9ZS5yZWFkX3NoaWZ0KDEpJjMsZj1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGYpe2Nhc2UgMDpmPSJXb3Jrc2hlZXQiO2JyZWFrO2Nhc2UgMTpmPSJNYWNyb3NoZWV0IjticmVhaztjYXNlIDI6Zj0iQ2hhcnRzaGVldCI7YnJlYWs7Y2FzZSA2OmY9IlZCQU1vZHVsZSI7YnJlYWt9cmV0dXJuIHQ9emEoZSwwLHIpLHQubGVuZ3RoPT09MCYmKHQ9IlNoZWV0MSIpLHtwb3M6bixoczppLGR0OmYsbmFtZTp0fX1mdW5jdGlvbiBDbChlLGEpe2Zvcih2YXIgcj1lLmwrYSx0PWUucmVhZF9zaGlmdCg0KSxuPWUucmVhZF9zaGlmdCg0KSxpPVtdLGY9MDtmIT1uJiZlLmw8cjsrK2YpaS5wdXNoKG9sKGUpKTtyZXR1cm4gaS5Db3VudD10LGkuVW5pcXVlPW4saX1mdW5jdGlvbiBibChlLGEpe3ZhciByPXt9O3JldHVybiByLmRzc3Q9ZS5yZWFkX3NoaWZ0KDIpLGUubCs9YS0yLHJ9ZnVuY3Rpb24gRGwoZSl7dmFyIGE9e307YS5yPWUucmVhZF9zaGlmdCgyKSxhLmM9ZS5yZWFkX3NoaWZ0KDIpLGEuY250PWUucmVhZF9zaGlmdCgyKS1hLmM7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpO2UubCs9NDt2YXIgdD1lLnJlYWRfc2hpZnQoMSk7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gYS5peGZlPW4mNDA5NSxhLmZsYWdzPW4+PjEyJjE1LHQmNyYmKGEubGV2ZWw9dCY3KSx0JjMyJiYoYS5oaWRkZW49ITApLHQmNjQmJihhLmhwdD1yLzIwKSxhfWZ1bmN0aW9uIElsKGUpe3ZhciBhPXZsKGUpO2lmKGEudHlwZSE9MjIxMSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRnV0dXJlIFJlY29yZCAiK2EudHlwZSk7dmFyIHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiByIT09MH1mdW5jdGlvbiBSbChlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDIpLGUucmVhZF9zaGlmdCg0KX1mdW5jdGlvbiBfcyhlLGEscil7dmFyIHQ9MDtyJiZyLmJpZmY9PTJ8fCh0PWUucmVhZF9zaGlmdCgyKSk7dmFyIG49ZS5yZWFkX3NoaWZ0KDIpO3ImJnIuYmlmZj09MiYmKHQ9MS0obj4+MTUpLG4mPTMyNzY3KTt2YXIgaT17VW5zeW5jZWQ6dCYxLER5WmVybzoodCYyKT4+MSxFeEFzYzoodCY0KT4+MixFeERzYzoodCY4KT4+M307cmV0dXJuW2ksbl19ZnVuY3Rpb24gT2woZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KDIpLHM9ZS5yZWFkX3NoaWZ0KDIpLGM9ZS5yZWFkX3NoaWZ0KDIpLG89ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntQb3M6W2Escl0sRGltOlt0LG5dLEZsYWdzOmksQ3VyVGFiOmYsRmlyc3RUYWI6cyxTZWxlY3RlZDpjLFRhYlJhdGlvOm99fWZ1bmN0aW9uIE5sKGUsYSxyKXtpZihyJiZyLmJpZmY+PTImJnIuYmlmZjw1KXJldHVybnt9O3ZhciB0PWUucmVhZF9zaGlmdCgyKTtyZXR1cm57UlRMOnQmNjR9fWZ1bmN0aW9uIE1sKCl7fWZ1bmN0aW9uIFBsKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXtkeUhlaWdodDplLnJlYWRfc2hpZnQoMiksZmw6ZS5yZWFkX3NoaWZ0KDIpfTtzd2l0Y2gobi5zej1uLmR5SGVpZ2h0LzIwLG4uaXRhbGljPSEhKG4uZmwmMiksbi5zdHJpa2U9ISEobi5mbCY4KSxuLm91dGxpbmU9ISEobi5mbCYxNiksbi5zaGFkb3c9ISEobi5mbCYzMiksbi5jb25kZW5zZT0hIShuLmZsJjY0KSxuLmV4dGVuZD0hIShuLmZsJjEyOCksciYmci5iaWZmfHw4KXtjYXNlIDI6YnJlYWs7Y2FzZSAzOmNhc2UgNDpuLmljdj1lLnJlYWRfc2hpZnQoMik7YnJlYWs7ZGVmYXVsdDpuLmljdj1lLnJlYWRfc2hpZnQoMiksbi5ibHM9ZS5yZWFkX3NoaWZ0KDIpLG4uYm9sZD1uLmJscz49NzAwLG4udmVydEFsaWduPWUucmVhZF9zaGlmdCgyKSxuLnVuZGVybGluZT1lLnJlYWRfc2hpZnQoMSksbi5mYW1pbHk9ZS5yZWFkX3NoaWZ0KDEpLG4uY2hhcnNldD1lLnJlYWRfc2hpZnQoMSksZS5sKys7YnJlYWt9cmV0dXJuIG4ubmFtZT1lLmw8dD96YShlLHQtZS5sLHIpOiIiLG59ZnVuY3Rpb24gTGwoZSxhLHIpe3ZhciB0PXFyKGUsYSxyKTtyZXR1cm4gdC5pc3N0PWUucmVhZF9zaGlmdCg0KSx0fWZ1bmN0aW9uIEJsKGUsYSxyKXtyLmJpZmZndWVzcyYmci5iaWZmPT0yJiYoci5iaWZmPTUpO3ZhciB0PWUubCthLG49cXIoZSxhLHIpLGk9TXQoZSx0LWUubCxyKTtyZXR1cm4gbi52YWw9aSxufWZ1bmN0aW9uIFVsKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1LYShlLDAscik7cmV0dXJuW3Qsbl19dmFyIEhsPUthO2Z1bmN0aW9uIGtzKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXIuYmlmZj09OHx8IXIuYmlmZj80OjIsaT1lLnJlYWRfc2hpZnQobiksZj1lLnJlYWRfc2hpZnQobikscz1lLnJlYWRfc2hpZnQoMiksYz1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubD10LHtzOntyOmksYzpzfSxlOntyOmYsY319fWZ1bmN0aW9uIFdsKGUpe3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PXBzKGUpO3JldHVybntyOmEsYzpyLGl4ZmU6dFswXSxya251bTp0WzFdfX1mdW5jdGlvbiBWbChlLGEpe2Zvcih2YXIgcj1lLmwrYS0yLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9W107ZS5sPHI7KWkucHVzaChwcyhlKSk7aWYoZS5sIT09cil0aHJvdyBuZXcgRXJyb3IoIk11bFJLIHJlYWQgZXJyb3IiKTt2YXIgZj1lLnJlYWRfc2hpZnQoMik7aWYoaS5sZW5ndGghPWYtbisxKXRocm93IG5ldyBFcnJvcigiTXVsUksgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6dCxjOm4sQzpmLHJrcmVjOml9fWZ1bmN0aW9uIEdsKGUsYSl7Zm9yKHZhciByPWUubCthLTIsdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT1bXTtlLmw8cjspaS5wdXNoKGUucmVhZF9zaGlmdCgyKSk7aWYoZS5sIT09cil0aHJvdyBuZXcgRXJyb3IoIk11bEJsYW5rIHJlYWQgZXJyb3IiKTt2YXIgZj1lLnJlYWRfc2hpZnQoMik7aWYoaS5sZW5ndGghPWYtbisxKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6dCxjOm4sQzpmLGl4ZmU6aX19ZnVuY3Rpb24gWGwoZSxhLHIsdCl7dmFyIG49e30saT1lLnJlYWRfc2hpZnQoNCksZj1lLnJlYWRfc2hpZnQoNCkscz1lLnJlYWRfc2hpZnQoNCksYz1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIG4ucGF0dGVyblR5cGU9V29bcz4+MjZdLG4uYWxjPWkmNyxuLmZXcmFwPWk+PjMmMSxuLmFsY1Y9aT4+NCY3LG4uZkp1c3RMYXN0PWk+PjcmMSxuLnRyb3Q9aT4+OCYyNTUsbi5jSW5kZW50PWk+PjE2JjE1LG4uZlNocmlua1RvRml0PWk+PjIwJjEsbi5pUmVhZE9yZGVyPWk+PjIyJjIsbi5mQXRyTnVtPWk+PjI2JjEsbi5mQXRyRm50PWk+PjI3JjEsbi5mQXRyQWxjPWk+PjI4JjEsbi5mQXRyQmRyPWk+PjI5JjEsbi5mQXRyUGF0PWk+PjMwJjEsbi5mQXRyUHJvdD1pPj4zMSYxLG4uZGdMZWZ0PWYmMTUsbi5kZ1JpZ2h0PWY+PjQmMTUsbi5kZ1RvcD1mPj44JjE1LG4uZGdCb3R0b209Zj4+MTImMTUsbi5pY3ZMZWZ0PWY+PjE2JjEyNyxuLmljdlJpZ2h0PWY+PjIzJjEyNyxuLmdyYml0RGlhZz1mPj4zMCYzLG4uaWN2VG9wPXMmMTI3LG4uaWN2Qm90dG9tPXM+PjcmMTI3LG4uaWN2RGlhZz1zPj4xNCYxMjcsbi5kZ0RpYWc9cz4+MjEmMTUsbi5pY3ZGb3JlPWMmMTI3LG4uaWN2QmFjaz1jPj43JjEyNyxuLmZzeEJ1dHRvbj1jPj4xNCYxLG59ZnVuY3Rpb24gemwoZSxhLHIpe3ZhciB0PXt9O3JldHVybiB0LmlmbnQ9ZS5yZWFkX3NoaWZ0KDIpLHQubnVtRm10SWQ9ZS5yZWFkX3NoaWZ0KDIpLHQuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpLHQubG9ja2VkPSEhKHQuZmxhZ3MmMSksdC5oaWRkZW49ISEodC5mbGFncyYyKSx0LmZTdHlsZT10LmZsYWdzPj4yJjEsdC54ZklkPXQuaXhmZVBhcmVudD10LmZsYWdzPj40JjQwOTUsYS09Nix0LmRhdGE9WGwoZSxhLHQuZlN0eWxlKSx0fWZ1bmN0aW9uICRsKGUpe3ZhciBhPXt9O3JldHVybiBhLmlmbnQ9ZS5yZWFkX3NoaWZ0KDEpLGUubCsrLGEuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDEpLGEubnVtRm10SWQ9YS5mbGFncyY2MyxhLmZsYWdzPj49NixhLmZTdHlsZT0wLGEuZGF0YT17fSxhfWZ1bmN0aW9uIEtsKGUpe3ZhciBhPXt9O3JldHVybiBhLmlmbnQ9ZS5yZWFkX3NoaWZ0KDEpLGEubnVtRm10SWQ9ZS5yZWFkX3NoaWZ0KDEpLGEuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpLGEuZlN0eWxlPWEuZmxhZ3M+PjImMSxhLmRhdGE9e30sYX1mdW5jdGlvbiBqbChlKXt2YXIgYT17fTtyZXR1cm4gYS5pZm50PWUucmVhZF9zaGlmdCgxKSxhLm51bUZtdElkPWUucmVhZF9zaGlmdCgxKSxhLmZsYWdzPWUucmVhZF9zaGlmdCgyKSxhLmZTdHlsZT1hLmZsYWdzPj4yJjEsYS5kYXRhPXt9LGF9ZnVuY3Rpb24gWWwoZSl7ZS5sKz00O3ZhciBhPVtlLnJlYWRfc2hpZnQoMiksZS5yZWFkX3NoaWZ0KDIpXTtpZihhWzBdIT09MCYmYVswXS0tLGFbMV0hPT0wJiZhWzFdLS0sYVswXT43fHxhWzFdPjcpdGhyb3cgbmV3IEVycm9yKCJCYWQgR3V0dGVyczogIithLmpvaW4oInwiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gSmwoZSxhLHIpe3ZhciB0PXFyKGUsNixyKSxuPXhzKGUpO3JldHVybiB0LnZhbD1uLHQudD1uPT09ITB8fG49PT0hMT8iYiI6ImUiLHR9ZnVuY3Rpb24gWmwoZSxhLHIpe3IuYmlmZmd1ZXNzJiZyLmJpZmY9PTImJihyLmJpZmY9NSk7dmFyIHQ9cXIoZSw2LHIpLG49X3IoZSk7cmV0dXJuIHQudmFsPW4sdH12YXIgd3M9cGw7ZnVuY3Rpb24gcWwoZSxhLHIpe3ZhciB0PWUubCthLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpO2lmKHIuc2JjY2g9aSxpPT0xMDI1fHxpPT0xNDg0OSlyZXR1cm5baSxuXTtpZihpPDF8fGk+MjU1KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTdXBCb29rIHR5cGU6ICIraSk7Zm9yKHZhciBmPSRhKGUsaSkscz1bXTt0PmUubDspcy5wdXNoKE10KGUsdC1lLmwscikpO3JldHVybltpLG4sZixzXX1mdW5jdGlvbiBGcyhlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG4saT17ZkJ1aWx0SW46dCYxLGZXYW50QWR2aXNlOnQ+Pj4xJjEsZldhbnRQaWN0OnQ+Pj4yJjEsZk9sZTp0Pj4+MyYxLGZPbGVMaW5rOnQ+Pj40JjEsY2Y6dD4+PjUmMTAyMyxmSWNvbjp0Pj4+MTUmMX07cmV0dXJuIHIuc2JjY2g9PT0xNDg0OSYmKG49bWwoZSxhLTIscikpLGkuYm9keT1ufHxlLnJlYWRfc2hpZnQoYS0yKSx0eXBlb2Ygbj09InN0cmluZyImJihpLk5hbWU9biksaX1mdW5jdGlvbiBUcyhlLGEscil7dmFyIHQ9ZS5sK2Esbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoMSksZj1lLnJlYWRfc2hpZnQoMSkscz1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6MiksYz0wOyghcnx8ci5iaWZmPj01KSYmKHIuYmlmZiE9NSYmKGUubCs9MiksYz1lLnJlYWRfc2hpZnQoMiksci5iaWZmPT01JiYoZS5sKz0yKSxlLmwrPTQpO3ZhciBvPSRhKGUsZixyKTtuJjMyJiYobz1hc1tvLmNoYXJDb2RlQXQoMCldKTt2YXIgbD10LWUubDtyJiZyLmJpZmY9PTImJi0tbDt2YXIgdT10PT1lLmx8fHM9PT0wfHwhKGw+MCk/W106SngoZSxsLHIscyk7cmV0dXJue2NoS2V5OmksTmFtZTpvLGl0YWI6YyxyZ2NlOnV9fWZ1bmN0aW9uIEVzKGUsYSxyKXtpZihyLmJpZmY8OHx8IShyLmJpZmY+OCkmJmE9PWVbZS5sXSsoZVtlLmwrMV09PTM/MTowKSsxKXJldHVybiBBcyhlLGEscik7Zm9yKHZhciB0PVtdLG49ZS5sK2EsaT1lLnJlYWRfc2hpZnQoci5iaWZmPjg/NDoyKTtpLS0hPT0wOyl0LnB1c2goZ2woZSxyLmJpZmY+OD8xMjo2LHIpKTtpZihlLmwhPW4pdGhyb3cgbmV3IEVycm9yKCJCYWQgRXh0ZXJuU2hlZXQ6ICIrZS5sKyIgIT0gIituKTtyZXR1cm4gdH1mdW5jdGlvbiBBcyhlLGEscil7ZVtlLmwrMV09PTMmJmVbZS5sXSsrO3ZhciB0PXphKGUsYSxyKTtyZXR1cm4gdC5jaGFyQ29kZUF0KDApPT0zP3Quc2xpY2UoMSk6dH1mdW5jdGlvbiBRbChlLGEscil7aWYoci5iaWZmPDgpe2UubCs9YTtyZXR1cm59dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9JGEoZSx0LHIpLGY9JGEoZSxuLHIpO3JldHVybltpLGZdfWZ1bmN0aW9uIGV1KGUsYSxyKXt2YXIgdD1ncyhlKTtlLmwrKzt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGEtPTgsW1p4KGUsYSxyKSxuLHRdfWZ1bmN0aW9uIHlzKGUsYSxyKXt2YXIgdD1fbChlKTtzd2l0Y2goci5iaWZmKXtjYXNlIDI6ZS5sKyssYS09NzticmVhaztjYXNlIDM6Y2FzZSA0OmUubCs9MixhLT04O2JyZWFrO2RlZmF1bHQ6ZS5sKz02LGEtPTEyfXJldHVyblt0LGp4KGUsYSxyKV19ZnVuY3Rpb24gcnUoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpIT09MCxyPWUucmVhZF9zaGlmdCg0KSE9PTAsdD1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuW2Escix0XX1mdW5jdGlvbiBhdShlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KDIpLHM9S2EoZSwwLHIpO3JldHVyblt7cjp0LGM6bn0scyxmLGldfWZ1bmN0aW9uIHR1KGUsYSxyKXtpZihyJiZyLmJpZmY8OCl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO2lmKHQ9PTY1NTM1fHx0PT0tMSlyZXR1cm47dmFyIGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KE1hdGgubWluKGksMjA0OCksImNwc3RyIik7cmV0dXJuW3tyOnQsYzpufSxmXX1yZXR1cm4gYXUoZSxhLHIpfWZ1bmN0aW9uIG51KGUsYSl7Zm9yKHZhciByPVtdLHQ9ZS5yZWFkX3NoaWZ0KDIpO3QtLTspci5wdXNoKGswKGUpKTtyZXR1cm4gcn1mdW5jdGlvbiBpdShlLGEscil7aWYociYmci5iaWZmPDgpcmV0dXJuIGZ1KGUsYSxyKTt2YXIgdD1tcyhlKSxuPVRsKGUsYS0yMix0WzFdKTtyZXR1cm57Y21vOnQsZnQ6bn19dmFyIHN1PXs4OmZ1bmN0aW9uKGUsYSl7dmFyIHI9ZS5sK2E7ZS5sKz0xMDt2YXIgdD1lLnJlYWRfc2hpZnQoMik7ZS5sKz00LGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9NDt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGUubCs9bixlLmw9cix7Zm10OnR9fX07ZnVuY3Rpb24gZnUoZSxhLHIpe2UubCs9NDt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoMik7ZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz02LGEtPTM2O3ZhciBmPVtdO3JldHVybiBmLnB1c2goKHN1W3RdfHx5cikoZSxhLHIpKSx7Y21vOltuLHQsaV0sZnQ6Zn19ZnVuY3Rpb24gY3UoZSxhLHIpe3ZhciB0PWUubCxuPSIiO3RyeXtlLmwrPTQ7dmFyIGk9KHIubGFzdG9ianx8e2NtbzpbMCwwXX0pLmNtb1sxXSxmO1swLDUsNywxMSwxMiwxNF0uaW5kZXhPZihpKT09LTE/ZS5sKz02OmY9bGwoZSw2LHIpO3ZhciBzPWUucmVhZF9zaGlmdCgyKTtlLnJlYWRfc2hpZnQoMiksZXIoZSwyKTt2YXIgYz1lLnJlYWRfc2hpZnQoMik7ZS5sKz1jO2Zvcih2YXIgbz0xO288ZS5sZW5zLmxlbmd0aC0xOysrbyl7aWYoZS5sLXQhPWUubGVuc1tvXSl0aHJvdyBuZXcgRXJyb3IoIlR4TzogYmFkIGNvbnRpbnVlIHJlY29yZCIpO3ZhciBsPWVbZS5sXSx1PSRhKGUsZS5sZW5zW28rMV0tZS5sZW5zW29dLTEpO2lmKG4rPXUsbi5sZW5ndGg+PShsP3M6MipzKSlicmVha31pZihuLmxlbmd0aCE9PXMmJm4ubGVuZ3RoIT09cyoyKXRocm93IG5ldyBFcnJvcigiY2NoVGV4dDogIitzKyIgIT0gIituLmxlbmd0aCk7cmV0dXJuIGUubD10K2Ese3Q6bn19Y2F0Y2h7cmV0dXJuIGUubD10K2Ese3Q6bn19fWZ1bmN0aW9uIG91KGUsYSl7dmFyIHI9azAoZSk7ZS5sKz0xNjt2YXIgdD1kbChlLGEtMjQpO3JldHVybltyLHRdfWZ1bmN0aW9uIGx1KGUsYSl7ZS5yZWFkX3NoaWZ0KDIpO3ZhciByPWswKGUpLHQ9ZS5yZWFkX3NoaWZ0KChhLTEwKS8yLCJkYmNzLWNvbnQiKTtyZXR1cm4gdD10LnJlcGxhY2UoU3IsIiIpLFtyLHRdfWZ1bmN0aW9uIHV1KGUpe3ZhciBhPVswLDBdLHI7cmV0dXJuIHI9ZS5yZWFkX3NoaWZ0KDIpLGFbMF09cnNbcl18fHIscj1lLnJlYWRfc2hpZnQoMiksYVsxXT1yc1tyXXx8cixhfWZ1bmN0aW9uIGh1KGUpe2Zvcih2YXIgYT1lLnJlYWRfc2hpZnQoMikscj1bXTthLS0gPjA7KXIucHVzaCh2cyhlKSk7cmV0dXJuIHJ9ZnVuY3Rpb24geHUoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCgyKSxyPVtdO2EtLSA+MDspci5wdXNoKHZzKGUpKTtyZXR1cm4gcn1mdW5jdGlvbiBkdShlKXtlLmwrPTI7dmFyIGE9e2N4ZnM6MCxjcmM6MH07cmV0dXJuIGEuY3hmcz1lLnJlYWRfc2hpZnQoMiksYS5jcmM9ZS5yZWFkX3NoaWZ0KDQpLGF9ZnVuY3Rpb24gU3MoZSxhLHIpe2lmKCFyLmNlbGxTdHlsZXMpcmV0dXJuIHlyKGUsYSk7dmFyIHQ9ciYmci5iaWZmPj0xMj80OjIsbj1lLnJlYWRfc2hpZnQodCksaT1lLnJlYWRfc2hpZnQodCksZj1lLnJlYWRfc2hpZnQodCkscz1lLnJlYWRfc2hpZnQodCksYz1lLnJlYWRfc2hpZnQoMik7dD09MiYmKGUubCs9Mik7dmFyIG89e3M6bixlOmksdzpmLGl4ZmU6cyxmbGFnczpjfTtyZXR1cm4oci5iaWZmPj01fHwhci5iaWZmKSYmKG8ubGV2ZWw9Yz4+OCY3KSxvfWZ1bmN0aW9uIHZ1KGUsYSl7dmFyIHI9e307cmV0dXJuIGE8MzJ8fChlLmwrPTE2LHIuaGVhZGVyPV9yKGUpLHIuZm9vdGVyPV9yKGUpLGUubCs9Mikscn1mdW5jdGlvbiBwdShlLGEscil7dmFyIHQ9e2FyZWE6ITF9O2lmKHIuYmlmZiE9NSlyZXR1cm4gZS5sKz1hLHQ7dmFyIG49ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiBlLmwrPTMsbiYxNiYmKHQuYXJlYT0hMCksdH12YXIgZ3U9cXIsbXU9aHMsX3U9TXQ7ZnVuY3Rpb24ga3UoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDQpLG49e2ZtdDphLGVudjpyLGxlbjp0LGRhdGE6ZS5zbGljZShlLmwsZS5sK3QpfTtyZXR1cm4gZS5sKz10LG59ZnVuY3Rpb24gd3UoZSxhLHIpe3IuYmlmZmd1ZXNzJiZyLmJpZmY9PTUmJihyLmJpZmY9Mik7dmFyIHQ9cXIoZSw3LHIpLG49S2EoZSxhLTcscik7cmV0dXJuIHQudD0ic3RyIix0LnZhbD1uLHR9ZnVuY3Rpb24gRnUoZSxhLHIpe3ZhciB0PXFyKGUsNyxyKSxuPV9yKGUpO3JldHVybiB0LnQ9Im4iLHQudmFsPW4sdH1mdW5jdGlvbiBUdShlLGEscil7dmFyIHQ9cXIoZSw3LHIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiB0LnQ9Im4iLHQudmFsPW4sdH1mdW5jdGlvbiBFdShlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGE9PT0wPyhlLmwrKywiIik6ZS5yZWFkX3NoaWZ0KGEsInNiY3MtY29udCIpfWZ1bmN0aW9uIEF1KGUsYSxyKXt2YXIgdD1lLmwrNyxuPXFyKGUsNixyKTtlLmw9dDt2YXIgaT14cyhlKTtyZXR1cm4gbi52YWw9aSxuLnQ9aT09PSEwfHxpPT09ITE/ImIiOiJlIixufWZ1bmN0aW9uIHl1KGUsYSl7ZS5sKz02LGUubCs9MixlLmwrPTEsZS5sKz0zLGUubCs9MSxlLmwrPWEtMTN9ZnVuY3Rpb24gU3UoZSxhLHIpe3ZhciB0PWUubCthLG49cXIoZSw2LHIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9JGEoZSxpLHIpO3JldHVybiBlLmw9dCxuLnQ9InN0ciIsbi52YWw9ZixufWZ1bmN0aW9uIEN1KGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUucmVhZF9zaGlmdCgxKSx0PWUucmVhZF9zaGlmdChyLCJzYmNzIik7cmV0dXJuIHQubGVuZ3RoPT09MCYmKHQ9IlNoZWV0MSIpLHtmbGFnczphLG5hbWU6dH19dmFyIGJ1PVsyLDMsNDgsNDksMTMxLDEzOSwxNDAsMjQ1XSxDcz1mdW5jdGlvbigpe3ZhciBlPXsxOjQzNywyOjg1MCwzOjEyNTIsNDoxZTQsMTAwOjg1MiwxMDE6ODY2LDEwMjo4NjUsMTAzOjg2MSwxMDQ6ODk1LDEwNTo2MjAsMTA2OjczNywxMDc6ODU3LDEyMDo5NTAsMTIxOjk0OSwxMjI6OTM2LDEyMzo5MzIsMTI0Ojg3NCwxMjU6MTI1NSwxMjY6MTI1NiwxNTA6MTAwMDcsMTUxOjEwMDI5LDE1MjoxMDAwNiwyMDA6MTI1MCwyMDE6MTI1MSwyMDI6MTI1NCwyMDM6MTI1MywwOjIwMTI3LDg6ODY1LDk6NDM3LDEwOjg1MCwxMTo0MzcsMTM6NDM3LDE0Ojg1MCwxNTo0MzcsMTY6ODUwLDE3OjQzNywxODo4NTAsMTk6OTMyLDIwOjg1MCwyMTo0MzcsMjI6ODUwLDIzOjg2NSwyNDo0MzcsMjU6NDM3LDI2Ojg1MCwyNzo0MzcsMjg6ODYzLDI5Ojg1MCwzMTo4NTIsMzQ6ODUyLDM1Ojg1MiwzNjo4NjAsMzc6ODUwLDM4Ojg2Niw1NTo4NTAsNjQ6ODUyLDc3OjkzNiw3ODo5NDksNzk6OTUwLDgwOjg3NCw4NzoxMjUyLDg4OjEyNTIsODk6MTI1MiwxMDg6ODYzLDEzNDo3MzcsMTM1Ojg1MiwxMzY6ODU3LDIwNDoxMjU3LDI1NToxNjk2OX0sYT1ZMCh7MTo0MzcsMjo4NTAsMzoxMjUyLDQ6MWU0LDEwMDo4NTIsMTAxOjg2NiwxMDI6ODY1LDEwMzo4NjEsMTA0Ojg5NSwxMDU6NjIwLDEwNjo3MzcsMTA3Ojg1NywxMjA6OTUwLDEyMTo5NDksMTIyOjkzNiwxMjM6OTMyLDEyNDo4NzQsMTI1OjEyNTUsMTI2OjEyNTYsMTUwOjEwMDA3LDE1MToxMDAyOSwxNTI6MTAwMDYsMjAwOjEyNTAsMjAxOjEyNTEsMjAyOjEyNTQsMjAzOjEyNTMsMDoyMDEyN30pO2Z1bmN0aW9uIHIocyxjKXt2YXIgbz1bXSxsPUFhKDEpO3N3aXRjaChjLnR5cGUpe2Nhc2UiYmFzZTY0IjpsPUlyKERyKHMpKTticmVhaztjYXNlImJpbmFyeSI6bD1JcihzKTticmVhaztjYXNlImJ1ZmZlciI6Y2FzZSJhcnJheSI6bD1zO2JyZWFrfXNyKGwsMCk7dmFyIHU9bC5yZWFkX3NoaWZ0KDEpLHg9ISEodSYxMzYpLGg9ITEsZz0hMTtzd2l0Y2godSl7Y2FzZSAyOmJyZWFrO2Nhc2UgMzpicmVhaztjYXNlIDQ4Omg9ITAseD0hMDticmVhaztjYXNlIDQ5Omg9ITAseD0hMDticmVhaztjYXNlIDEzMTpicmVhaztjYXNlIDEzOTpicmVhaztjYXNlIDE0MDpnPSEwO2JyZWFrO2Nhc2UgMjQ1OmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgVmVyc2lvbjogIit1LnRvU3RyaW5nKDE2KSl9dmFyIG09MCxkPTUyMTt1PT0yJiYobT1sLnJlYWRfc2hpZnQoMikpLGwubCs9Myx1IT0yJiYobT1sLnJlYWRfc2hpZnQoNCkpLG0+MTA0ODU3NiYmKG09MWU2KSx1IT0yJiYoZD1sLnJlYWRfc2hpZnQoMikpO3ZhciBwPWwucmVhZF9zaGlmdCgyKTtjLmNvZGVwYWdlLHUhPTImJihsLmwrPTE2LGwucmVhZF9zaGlmdCgxKSxsW2wubF0hPT0wJiZlW2xbbC5sXV0sbC5sKz0xLGwubCs9MiksZyYmKGwubCs9MzYpO2Zvcih2YXIgdz1bXSxfPXt9LHk9TWF0aC5taW4obC5sZW5ndGgsdT09Mj81MjE6ZC0xMC0oaD8yNjQ6MCkpLFI9Zz8zMjoxMTtsLmw8eSYmbFtsLmxdIT0xMzspc3dpdGNoKF89e30sXy5uYW1lPWZhKGwuc2xpY2UobC5sLGwubCtSKSkucmVwbGFjZSgvW1x1MDAwMFxyXG5dW1xTXHNdKiQvZywiIiksbC5sKz1SLF8udHlwZT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwucmVhZF9zaGlmdCgxKSksdSE9MiYmIWcmJihfLm9mZnNldD1sLnJlYWRfc2hpZnQoNCkpLF8ubGVuPWwucmVhZF9zaGlmdCgxKSx1PT0yJiYoXy5vZmZzZXQ9bC5yZWFkX3NoaWZ0KDIpKSxfLmRlYz1sLnJlYWRfc2hpZnQoMSksXy5uYW1lLmxlbmd0aCYmdy5wdXNoKF8pLHUhPTImJihsLmwrPWc/MTM6MTQpLF8udHlwZSl7Y2FzZSJCIjooIWh8fF8ubGVuIT04KSYmYy5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK18ubmFtZSsiOiIrXy50eXBlKTticmVhaztjYXNlIkciOmNhc2UiUCI6Yy5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK18ubmFtZSsiOiIrXy50eXBlKTticmVhaztjYXNlIisiOmNhc2UiMCI6Y2FzZSJAIjpjYXNlIkMiOmNhc2UiRCI6Y2FzZSJGIjpjYXNlIkkiOmNhc2UiTCI6Y2FzZSJNIjpjYXNlIk4iOmNhc2UiTyI6Y2FzZSJUIjpjYXNlIlkiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIEZpZWxkIFR5cGU6ICIrXy50eXBlKX1pZihsW2wubF0hPT0xMyYmKGwubD1kLTEpLGwucmVhZF9zaGlmdCgxKSE9PTEzKXRocm93IG5ldyBFcnJvcigiREJGIFRlcm1pbmF0b3Igbm90IGZvdW5kICIrbC5sKyIgIitsW2wubF0pO2wubD1kO3ZhciBQPTAsYj0wO2ZvcihvWzBdPVtdLGI9MDtiIT13Lmxlbmd0aDsrK2Ipb1swXVtiXT13W2JdLm5hbWU7Zm9yKDttLS0gPjA7KXtpZihsW2wubF09PT00Mil7bC5sKz1wO2NvbnRpbnVlfWZvcigrK2wubCxvWysrUF09W10sYj0wLGI9MDtiIT13Lmxlbmd0aDsrK2Ipe3ZhciBOPWwuc2xpY2UobC5sLGwubCt3W2JdLmxlbik7bC5sKz13W2JdLmxlbixzcihOLDApO3ZhciBEPWZhKE4pO3N3aXRjaCh3W2JdLnR5cGUpe2Nhc2UiQyI6RC50cmltKCkubGVuZ3RoJiYob1tQXVtiXT1ELnJlcGxhY2UoLyhbXlxzXSlccyskLywiJDEiKSk7YnJlYWs7Y2FzZSJEIjpELmxlbmd0aD09PTg/KG9bUF1bYl09bmV3IERhdGUoRGF0ZS5VVEMoK0Quc2xpY2UoMCw0KSwrRC5zbGljZSg0LDYpLTEsK0Quc2xpY2UoNiw4KSwwLDAsMCwwKSksYyYmYy5VVEN8fChvW1BdW2JdPVVhKG9bUF1bYl0pKSk6b1tQXVtiXT1EO2JyZWFrO2Nhc2UiRiI6b1tQXVtiXT1wYXJzZUZsb2F0KEQudHJpbSgpKTticmVhaztjYXNlIisiOmNhc2UiSSI6b1tQXVtiXT1nP04ucmVhZF9zaGlmdCgtNCwiaSIpXjIxNDc0ODM2NDg6Ti5yZWFkX3NoaWZ0KDQsImkiKTticmVhaztjYXNlIkwiOnN3aXRjaChELnRyaW0oKS50b1VwcGVyQ2FzZSgpKXtjYXNlIlkiOmNhc2UiVCI6b1tQXVtiXT0hMDticmVhaztjYXNlIk4iOmNhc2UiRiI6b1tQXVtiXT0hMTticmVhaztjYXNlIiI6Y2FzZSJcMCI6Y2FzZSI/IjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVucmVjb2duaXplZCBMOnwiK0QrInwiKX1icmVhaztjYXNlIk0iOmlmKCF4KXRocm93IG5ldyBFcnJvcigiREJGIFVuZXhwZWN0ZWQgTUVNTyBmb3IgdHlwZSAiK3UudG9TdHJpbmcoMTYpKTtvW1BdW2JdPSIjI01FTU8jIyIrKGc/cGFyc2VJbnQoRC50cmltKCksMTApOk4ucmVhZF9zaGlmdCg0KSk7YnJlYWs7Y2FzZSJOIjpEPUQucmVwbGFjZSgvXHUwMDAwL2csIiIpLnRyaW0oKSxEJiZEIT0iLiImJihvW1BdW2JdPStEfHwwKTticmVhaztjYXNlIkAiOm9bUF1bYl09bmV3IERhdGUoTi5yZWFkX3NoaWZ0KC04LCJmIiktNjIxMzU2ODMyZTUpO2JyZWFrO2Nhc2UiVCI6e3ZhciBCPU4ucmVhZF9zaGlmdCg0KSxMPU4ucmVhZF9zaGlmdCg0KTtpZihCPT0wJiZMPT0wKWJyZWFrO29bUF1bYl09bmV3IERhdGUoKEItMjQ0MDU4OCkqODY0ZTUrTCksYyYmYy5VVEN8fChvW1BdW2JdPVVhKG9bUF1bYl0pKX1icmVhaztjYXNlIlkiOm9bUF1bYl09Ti5yZWFkX3NoaWZ0KDQsImkiKS8xZTQrTi5yZWFkX3NoaWZ0KDQsImkiKS8xZTQqTWF0aC5wb3coMiwzMik7YnJlYWs7Y2FzZSJPIjpvW1BdW2JdPS1OLnJlYWRfc2hpZnQoLTgsImYiKTticmVhaztjYXNlIkIiOmlmKGgmJndbYl0ubGVuPT04KXtvW1BdW2JdPU4ucmVhZF9zaGlmdCg4LCJmIik7YnJlYWt9Y2FzZSJHIjpjYXNlIlAiOk4ubCs9d1tiXS5sZW47YnJlYWs7Y2FzZSIwIjppZih3W2JdLm5hbWU9PT0iX051bGxGbGFncyIpYnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnN1cHBvcnRlZCBkYXRhIHR5cGUgIit3W2JdLnR5cGUpfX19aWYodSE9MiYmbC5sPGwubGVuZ3RoJiZsW2wubCsrXSE9MjYpdGhyb3cgbmV3IEVycm9yKCJEQkYgRU9GIE1hcmtlciBtaXNzaW5nICIrKGwubC0xKSsiIG9mICIrbC5sZW5ndGgrIiAiK2xbbC5sLTFdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGMmJmMuc2hlZXRSb3dzJiYobz1vLnNsaWNlKDAsYy5zaGVldFJvd3MpKSxjLkRCRj13LG99ZnVuY3Rpb24gdChzLGMpe3ZhciBvPWN8fHt9O28uZGF0ZU5GfHwoby5kYXRlTkY9Inl5eXltbWRkIik7dmFyIGw9Y3QocihzLG8pLG8pO3JldHVybiBsWyIhY29scyJdPW8uREJGLm1hcChmdW5jdGlvbih1KXtyZXR1cm57d2NoOnUubGVuLERCRjp1fX0pLGRlbGV0ZSBvLkRCRixsfWZ1bmN0aW9uIG4ocyxjKXt0cnl7dmFyIG89Q2EodChzLGMpLGMpO3JldHVybiBvLmJvb2tUeXBlPSJkYmYiLG99Y2F0Y2gobCl7aWYoYyYmYy5XVEYpdGhyb3cgbH1yZXR1cm57U2hlZXROYW1lczpbXSxTaGVldHM6e319fXZhciBpPXtCOjgsQzoyNTAsTDoxLEQ6OCwiPyI6MCwiIjowfTtmdW5jdGlvbiBmKHMsYyl7aWYoIXNbIiFyZWYiXSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHBvcnQgZW1wdHkgc2hlZXQgdG8gREJGIik7dmFyIG89Y3x8e30sbD1IcjtpZigrby5jb2RlcGFnZT49MCYmWXIoK28uY29kZXBhZ2UpLG8udHlwZT09InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgd3JpdGUgREJGIHRvIEpTIHN0cmluZyIpO3ZhciB1PXJuKCkseD1PbihzLHtoZWFkZXI6MSxyYXc6ITAsY2VsbERhdGVzOiEwfSksaD14WzBdLGc9eC5zbGljZSgxKSxtPXNbIiFjb2xzIl18fFtdLGQ9MCxwPTAsdz0wLF89MTtmb3IoZD0wO2Q8aC5sZW5ndGg7KytkKXtpZigoKG1bZF18fHt9KS5EQkZ8fHt9KS5uYW1lKXtoW2RdPW1bZF0uREJGLm5hbWUsKyt3O2NvbnRpbnVlfWlmKGhbZF0hPW51bGwpe2lmKCsrdyx0eXBlb2YgaFtkXT09Im51bWJlciImJihoW2RdPWhbZF0udG9TdHJpbmcoMTApKSx0eXBlb2YgaFtkXSE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJEQkYgSW52YWxpZCBjb2x1bW4gbmFtZSAiK2hbZF0rIiB8Iit0eXBlb2YgaFtkXSsifCIpO2lmKGguaW5kZXhPZihoW2RdKSE9PWQpe2ZvcihwPTA7cDwxMDI0OysrcClpZihoLmluZGV4T2YoaFtkXSsiXyIrcCk9PS0xKXtoW2RdKz0iXyIrcDticmVha319fX12YXIgeT1aZShzWyIhcmVmIl0pLFI9W10sUD1bXSxiPVtdO2ZvcihkPTA7ZDw9eS5lLmMteS5zLmM7KytkKXt2YXIgTj0iIixEPSIiLEI9MCxMPVtdO2ZvcihwPTA7cDxnLmxlbmd0aDsrK3ApZ1twXVtkXSE9bnVsbCYmTC5wdXNoKGdbcF1bZF0pO2lmKEwubGVuZ3RoPT0wfHxoW2RdPT1udWxsKXtSW2RdPSI/Ijtjb250aW51ZX1mb3IocD0wO3A8TC5sZW5ndGg7KytwKXtzd2l0Y2godHlwZW9mIExbcF0pe2Nhc2UibnVtYmVyIjpEPSJCIjticmVhaztjYXNlInN0cmluZyI6RD0iQyI7YnJlYWs7Y2FzZSJib29sZWFuIjpEPSJMIjticmVhaztjYXNlIm9iamVjdCI6RD1MW3BdaW5zdGFuY2VvZiBEYXRlPyJEIjoiQyI7YnJlYWs7ZGVmYXVsdDpEPSJDIn1CPU1hdGgubWF4KEIsU3RyaW5nKExbcF0pLmxlbmd0aCksTj1OJiZOIT1EPyJDIjpEfUI+MjUwJiYoQj0yNTApLEQ9KChtW2RdfHx7fSkuREJGfHx7fSkudHlwZSxEPT0iQyImJm1bZF0uREJGLmxlbj5CJiYoQj1tW2RdLkRCRi5sZW4pLE49PSJCIiYmRD09Ik4iJiYoTj0iTiIsYltkXT1tW2RdLkRCRi5kZWMsQj1tW2RdLkRCRi5sZW4pLFBbZF09Tj09IkMifHxEPT0iTiI/QjppW05dfHwwLF8rPVBbZF0sUltkXT1OfXZhciBHPXUubmV4dCgzMik7Zm9yKEcud3JpdGVfc2hpZnQoNCwzMTg5MDI1NzYpLEcud3JpdGVfc2hpZnQoNCxnLmxlbmd0aCksRy53cml0ZV9zaGlmdCgyLDI5NiszMip3KSxHLndyaXRlX3NoaWZ0KDIsXyksZD0wO2Q8NDsrK2QpRy53cml0ZV9zaGlmdCg0LDApO3ZhciBpZT0rYVtIcl18fDM7Zm9yKEcud3JpdGVfc2hpZnQoNCwwfGllPDw4KSxlW2llXSE9K28uY29kZXBhZ2UmJihvLmNvZGVwYWdlJiZjb25zb2xlLmVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgY29kZXBhZ2UgIitIcisiLCB1c2luZyAxMjUyIiksSHI9MTI1MiksZD0wLHA9MDtkPGgubGVuZ3RoOysrZClpZihoW2RdIT1udWxsKXt2YXIgbmU9dS5uZXh0KDMyKSxxPShoW2RdLnNsaWNlKC0xMCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiKS5zbGljZSgwLDExKTtuZS53cml0ZV9zaGlmdCgxLHEsInNiY3MiKSxuZS53cml0ZV9zaGlmdCgxLFJbZF09PSI/Ij8iQyI6UltkXSwic2JjcyIpLG5lLndyaXRlX3NoaWZ0KDQscCksbmUud3JpdGVfc2hpZnQoMSxQW2RdfHxpW1JbZF1dfHwwKSxuZS53cml0ZV9zaGlmdCgxLGJbZF18fDApLG5lLndyaXRlX3NoaWZ0KDEsMiksbmUud3JpdGVfc2hpZnQoNCwwKSxuZS53cml0ZV9zaGlmdCgxLDApLG5lLndyaXRlX3NoaWZ0KDQsMCksbmUud3JpdGVfc2hpZnQoNCwwKSxwKz1QW2RdfHxpW1JbZF1dfHwwfXZhciBsZT11Lm5leHQoMjY0KTtmb3IobGUud3JpdGVfc2hpZnQoNCwxMyksZD0wO2Q8NjU7KytkKWxlLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKGQ9MDtkPGcubGVuZ3RoOysrZCl7dmFyIFE9dS5uZXh0KF8pO2ZvcihRLndyaXRlX3NoaWZ0KDEsMCkscD0wO3A8aC5sZW5ndGg7KytwKWlmKGhbcF0hPW51bGwpc3dpdGNoKFJbcF0pe2Nhc2UiTCI6US53cml0ZV9zaGlmdCgxLGdbZF1bcF09PW51bGw/NjM6Z1tkXVtwXT84NDo3MCk7YnJlYWs7Y2FzZSJCIjpRLndyaXRlX3NoaWZ0KDgsZ1tkXVtwXXx8MCwiZiIpO2JyZWFrO2Nhc2UiTiI6dmFyIGdlPSIwIjtmb3IodHlwZW9mIGdbZF1bcF09PSJudW1iZXIiJiYoZ2U9Z1tkXVtwXS50b0ZpeGVkKGJbcF18fDApKSxnZS5sZW5ndGg+UFtwXSYmKGdlPWdlLnNsaWNlKDAsUFtwXSkpLHc9MDt3PFBbcF0tZ2UubGVuZ3RoOysrdylRLndyaXRlX3NoaWZ0KDEsMzIpO1Eud3JpdGVfc2hpZnQoMSxnZSwic2JjcyIpO2JyZWFrO2Nhc2UiRCI6Z1tkXVtwXT8oUS53cml0ZV9zaGlmdCg0LCgiMDAwMCIrZ1tkXVtwXS5nZXRGdWxsWWVhcigpKS5zbGljZSgtNCksInNiY3MiKSxRLndyaXRlX3NoaWZ0KDIsKCIwMCIrKGdbZF1bcF0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCJzYmNzIiksUS53cml0ZV9zaGlmdCgyLCgiMDAiK2dbZF1bcF0uZ2V0RGF0ZSgpKS5zbGljZSgtMiksInNiY3MiKSk6US53cml0ZV9zaGlmdCg4LCIwMDAwMDAwMCIsInNiY3MiKTticmVhaztjYXNlIkMiOnZhciB1ZT1RLmwsaj1TdHJpbmcoZ1tkXVtwXSE9bnVsbD9nW2RdW3BdOiIiKS5zbGljZSgwLFBbcF0pO2ZvcihRLndyaXRlX3NoaWZ0KDEsaiwiY3BzdHIiKSx1ZSs9UFtwXS1RLmwsdz0wO3c8dWU7Kyt3KVEud3JpdGVfc2hpZnQoMSwzMik7YnJlYWt9fXJldHVybiBIcj1sLHUubmV4dCgxKS53cml0ZV9zaGlmdCgxLDI2KSx1LmVuZCgpfXJldHVybnt0b193b3JrYm9vazpuLHRvX3NoZWV0OnQsZnJvbV9zaGVldDpmfX0oKSxEdT1mdW5jdGlvbigpe3ZhciBlPXtBQToiw4AiLEJBOiLDgSIsQ0E6IsOCIixEQToxOTUsSEE6IsOEIixKQToxOTcsQUU6IsOIIixCRToiw4kiLENFOiLDiiIsSEU6IsOLIixBSToiw4wiLEJJOiLDjSIsQ0k6IsOOIixISToiw48iLEFPOiLDkiIsQk86IsOTIixDTzoiw5QiLERPOjIxMyxITzoiw5YiLEFVOiLDmSIsQlU6IsOaIixDVToiw5siLEhVOiLDnCIsQWE6IsOgIixCYToiw6EiLENhOiLDoiIsRGE6MjI3LEhhOiLDpCIsSmE6MjI5LEFlOiLDqCIsQmU6IsOpIixDZToiw6oiLEhlOiLDqyIsQWk6IsOsIixCaToiw60iLENpOiLDriIsSGk6IsOvIixBbzoiw7IiLEJvOiLDsyIsQ286IsO0IixEbzoyNDUsSG86IsO2IixBdToiw7kiLEJ1OiLDuiIsQ3U6IsO7IixIdToiw7wiLEtDOiLDhyIsS2M6IsOnIixxOiLDpiIsejoixZMiLGE6IsOGIixqOiLFkiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDoxNzYsMToxNzcsMjoxNzgsMzoxNzksNToxODEsNjoxODIsNzoxODMsUToxODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMsIigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0iOjE4OSwiPiI6MTkwLCI/IjoxOTEsInsiOjIyM30sYT1uZXcgUmVnRXhwKCJceDFCTigiK3ByKGUpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKS5yZXBsYWNlKCJ7IiwiXFx7IikrInxcXHwpIiwiZ20iKTt0cnl7YT1uZXcgUmVnRXhwKCJceDFCTigiK3ByKGUpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKSsifFxcfCkiLCJnbSIpfWNhdGNoe312YXIgcj1mdW5jdGlvbihoLGcpe3ZhciBtPWVbZ107cmV0dXJuIHR5cGVvZiBtPT0ibnVtYmVyIj96bihtKTptfSx0PWZ1bmN0aW9uKGgsZyxtKXt2YXIgZD1nLmNoYXJDb2RlQXQoMCktMzI8PDR8bS5jaGFyQ29kZUF0KDApLTQ4O3JldHVybiBkPT01OT9oOnpuKGQpfTtlWyJ8Il09MjU0O3ZhciBuPWZ1bmN0aW9uKGgpe3JldHVybiBoLnJlcGxhY2UoL1xuL2csIlx4MUIgOiIpLnJlcGxhY2UoL1xyL2csIlx4MUIgPSIpfTtmdW5jdGlvbiBpKGgsZyl7c3dpdGNoKGcudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBmKERyKGgpLGcpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gZihoLGcpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gZihOZSYmQnVmZmVyLmlzQnVmZmVyKGgpP2gudG9TdHJpbmcoImJpbmFyeSIpOmZhKGgpLGcpO2Nhc2UiYXJyYXkiOnJldHVybiBmKEJhKGgpLGcpfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitnLnR5cGUpfWZ1bmN0aW9uIGYoaCxnKXt2YXIgbT1oLnNwbGl0KC9bXG5ccl0rLyksZD0tMSxwPS0xLHc9MCxfPTAseT1bXSxSPVtdLFA9bnVsbCxiPXt9LE49W10sRD1bXSxCPVtdLEw9MCxHLGllPXtXb3JrYm9vazp7V0JQcm9wczp7fSxOYW1lczpbXX19O2ZvcigrZy5jb2RlcGFnZT49MCYmWXIoK2cuY29kZXBhZ2UpO3chPT1tLmxlbmd0aDsrK3cpe0w9MDt2YXIgbmU9bVt3XS50cmltKCkucmVwbGFjZSgvXHgxQihbXHgyMC1ceDJGXSkoW1x4MzAtXHgzRl0pL2csdCkucmVwbGFjZShhLHIpLHE9bmUucmVwbGFjZSgvOzsvZywiXDAiKS5zcGxpdCgiOyIpLm1hcChmdW5jdGlvbihJKXtyZXR1cm4gSS5yZXBsYWNlKC9cdTAwMDAvZywiOyIpfSksbGU9cVswXSxRO2lmKG5lLmxlbmd0aD4wKXN3aXRjaChsZSl7Y2FzZSJJRCI6YnJlYWs7Y2FzZSJFIjpicmVhaztjYXNlIkIiOmJyZWFrO2Nhc2UiTyI6Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiViI6e3ZhciBnZT1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKTtnZT49MSYmZ2U8PTQmJihpZS5Xb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0PSEwKX1icmVha31icmVhaztjYXNlIlciOmJyZWFrO2Nhc2UiUCI6c3dpdGNoKHFbMV0uY2hhckF0KDApKXtjYXNlIlAiOlIucHVzaChuZS5zbGljZSgzKS5yZXBsYWNlKC87Oy9nLCI7IikpO2JyZWFrfWJyZWFrO2Nhc2UiTk4iOnt2YXIgdWU9e1NoZWV0OjB9O2ZvcihfPTE7XzxxLmxlbmd0aDsrK18pc3dpdGNoKHFbX10uY2hhckF0KDApKXtjYXNlIk4iOnVlLk5hbWU9cVtfXS5zbGljZSgxKTticmVhaztjYXNlIkUiOnVlLlJlZj0oZyYmZy5zaGVldHx8IlNoZWV0MSIpKyIhIitxYShxW19dLnNsaWNlKDEpKTticmVha31pZS5Xb3JrYm9vay5OYW1lcy5wdXNoKHVlKX1icmVhaztjYXNlIkMiOnZhciBqPSExLHllPSExLGJlPSExLG1lPSExLFo9LTEsT2U9LTEsd2U9IiIsQWU9InoiLEE9IiI7Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiQSI6QT1xW19dLnNsaWNlKDEpO2JyZWFrO2Nhc2UiWCI6cD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLHllPSEwO2JyZWFrO2Nhc2UiWSI6Zm9yKGQ9cGFyc2VJbnQocVtfXS5zbGljZSgxKSwxMCktMSx5ZXx8KHA9MCksRz15Lmxlbmd0aDtHPD1kOysrRyl5W0ddPVtdO2JyZWFrO2Nhc2UiSyI6UT1xW19dLnNsaWNlKDEpLFEuY2hhckF0KDApPT09JyInPyhRPVEuc2xpY2UoMSxRLmxlbmd0aC0xKSxBZT0icyIpOlE9PT0iVFJVRSJ8fFE9PT0iRkFMU0UiPyhRPVE9PT0iVFJVRSIsQWU9ImIiKTpRLmNoYXJBdCgwKT09IiMiJiZkcltRXSE9bnVsbD8oQWU9ImUiLFE9ZHJbUV0pOmlzTmFOKE9yKFEpKXx8KFE9T3IoUSksQWU9Im4iLFAhPT1udWxsJiZacihQKSYmZy5jZWxsRGF0ZXMmJihRPVNhKGllLldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQ/USsxNDYyOlEpLEFlPXR5cGVvZiBRPT0ibnVtYmVyIj8ibiI6ImQiKSksaj0hMDticmVhaztjYXNlIkUiOm1lPSEwLHdlPXFhKHFbX10uc2xpY2UoMSkse3I6ZCxjOnB9KTticmVhaztjYXNlIlMiOmJlPSEwO2JyZWFrO2Nhc2UiRyI6YnJlYWs7Y2FzZSJSIjpaPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTE7YnJlYWs7Y2FzZSJDIjpPZT1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xO2JyZWFrO2RlZmF1bHQ6aWYoZyYmZy5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIituZSl9aWYoaiYmKHlbZF1bcF0/KHlbZF1bcF0udD1BZSx5W2RdW3BdLnY9USk6eVtkXVtwXT17dDpBZSx2OlF9LFAmJih5W2RdW3BdLno9UCksZy5jZWxsVGV4dCE9PSExJiZQJiYoeVtkXVtwXS53PVJyKHlbZF1bcF0ueix5W2RdW3BdLnYse2RhdGUxOTA0OmllLldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDR9KSksUD1udWxsKSxiZSl7aWYobWUpdGhyb3cgbmV3IEVycm9yKCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBoYXZlIG93biBmb3JtdWxhIik7dmFyIFU9Wj4tMSYmeVtaXVtPZV07aWYoIVV8fCFVWzFdKXRocm93IG5ldyBFcnJvcigiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgZmluZCBiYXNlIik7d2U9anMoVVsxXSx7cjpkLVosYzpwLU9lfSl9d2UmJih5W2RdW3BdP3lbZF1bcF0uZj13ZTp5W2RdW3BdPXt0OiJuIixmOndlfSksQSYmKHlbZF1bcF18fCh5W2RdW3BdPXt0OiJ6In0pLHlbZF1bcF0uYz1be2E6IlNoZWV0SlNZTEsiLHQ6QX1dKTticmVhaztjYXNlIkYiOnZhciBPPTA7Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiWCI6cD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLCsrTzticmVhaztjYXNlIlkiOmZvcihkPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTEsRz15Lmxlbmd0aDtHPD1kOysrRyl5W0ddPVtdO2JyZWFrO2Nhc2UiTSI6TD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS8yMDticmVhaztjYXNlIkYiOmJyZWFrO2Nhc2UiRyI6YnJlYWs7Y2FzZSJQIjpQPVJbcGFyc2VJbnQocVtfXS5zbGljZSgxKSwxMCldO2JyZWFrO2Nhc2UiUyI6YnJlYWs7Y2FzZSJEIjpicmVhaztjYXNlIk4iOmJyZWFrO2Nhc2UiVyI6Zm9yKEI9cVtfXS5zbGljZSgxKS5zcGxpdCgiICIpLEc9cGFyc2VJbnQoQlswXSwxMCk7Rzw9cGFyc2VJbnQoQlsxXSwxMCk7KytHKUw9cGFyc2VJbnQoQlsyXSwxMCksRFtHLTFdPUw9PT0wP3toaWRkZW46ITB9Ont3Y2g6TH07YnJlYWs7Y2FzZSJDIjpwPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTEsRFtwXXx8KERbcF09e30pO2JyZWFrO2Nhc2UiUiI6ZD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLE5bZF18fChOW2RdPXt9KSxMPjA/KE5bZF0uaHB0PUwsTltkXS5ocHg9QnQoTCkpOkw9PT0wJiYoTltkXS5oaWRkZW49ITApO2JyZWFrO2RlZmF1bHQ6aWYoZyYmZy5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIituZSl9TzwxJiYoUD1udWxsKTticmVhaztkZWZhdWx0OmlmKGcmJmcuV1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrbmUpfX1yZXR1cm4gTi5sZW5ndGg+MCYmKGJbIiFyb3dzIl09TiksRC5sZW5ndGg+MCYmKGJbIiFjb2xzIl09RCksRC5mb3JFYWNoKGZ1bmN0aW9uKEkpe3V0KEkpfSksZyYmZy5zaGVldFJvd3MmJih5PXkuc2xpY2UoMCxnLnNoZWV0Um93cykpLFt5LGIsaWVdfWZ1bmN0aW9uIHMoaCxnKXt2YXIgbT1pKGgsZyksZD1tWzBdLHA9bVsxXSx3PW1bMl0sXz1VZShnKTtfLmRhdGUxOTA0PSgoKHd8fHt9KS5Xb3JrYm9va3x8e30pLldCUHJvcHN8fHt9KS5kYXRlMTkwNDt2YXIgeT1jdChkLF8pO3ByKHApLmZvckVhY2goZnVuY3Rpb24oUCl7eVtQXT1wW1BdfSk7dmFyIFI9Q2EoeSxnKTtyZXR1cm4gcHIodykuZm9yRWFjaChmdW5jdGlvbihQKXtSW1BdPXdbUF19KSxSLmJvb2tUeXBlPSJzeWxrIixSfWZ1bmN0aW9uIGMoaCxnLG0sZCxwLHcpe3ZhciBfPSJDO1kiKyhtKzEpKyI7WCIrKGQrMSkrIjtLIjtzd2l0Y2goaC50KXtjYXNlIm4iOl8rPWlzRmluaXRlKGgudik/aC52fHwwOmJyW2lzTmFOKGgudik/MzY6N10saC5mJiYhaC5GJiYoXys9IjtFIitPMShoLmYse3I6bSxjOmR9KSk7YnJlYWs7Y2FzZSJiIjpfKz1oLnY/IlRSVUUiOiJGQUxTRSI7YnJlYWs7Y2FzZSJlIjpfKz1oLnd8fGJyW2gudl18fGgudjticmVhaztjYXNlImQiOl8rPW9yKHhyKGgudix3KSx3KTticmVhaztjYXNlInMiOl8rPSciJysoaC52PT1udWxsPyIiOlN0cmluZyhoLnYpKS5yZXBsYWNlKC8iL2csIiIpLnJlcGxhY2UoLzsvZywiOzsiKSsnIic7YnJlYWt9cmV0dXJuIF99ZnVuY3Rpb24gbyhoLGcsbSl7dmFyIGQ9IkM7WSIrKGcrMSkrIjtYIisobSsxKSsiO0EiO3JldHVybiBkKz1uKGgubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLnR9KS5qb2luKCIiKSksZH1mdW5jdGlvbiBsKGgsZyl7Zy5mb3JFYWNoKGZ1bmN0aW9uKG0sZCl7dmFyIHA9IkY7VyIrKGQrMSkrIiAiKyhkKzEpKyIgIjttLmhpZGRlbj9wKz0iMCI6KHR5cGVvZiBtLndpZHRoPT0ibnVtYmVyIiYmIW0ud3B4JiYobS53cHg9X2EobS53aWR0aCkpLHR5cGVvZiBtLndweD09Im51bWJlciImJiFtLndjaCYmKG0ud2NoPUphKG0ud3B4KSksdHlwZW9mIG0ud2NoPT0ibnVtYmVyIiYmKHArPU1hdGgucm91bmQobS53Y2gpKSkscC5jaGFyQXQocC5sZW5ndGgtMSkhPSIgIiYmaC5wdXNoKHApfSl9ZnVuY3Rpb24gdShoLGcpe2cuZm9yRWFjaChmdW5jdGlvbihtLGQpe3ZhciBwPSJGOyI7bS5oaWRkZW4/cCs9Ik0wOyI6bS5ocHQ/cCs9Ik0iKzIwKm0uaHB0KyI7IjptLmhweCYmKHArPSJNIisyMCpIcyhtLmhweCkrIjsiKSxwLmxlbmd0aD4yJiZoLnB1c2gocCsiUiIrKGQrMSkpfSl9ZnVuY3Rpb24geChoLGcsbSl7Z3x8KGc9e30pLGcuX2Zvcm1hdHM9WyJHZW5lcmFsIl07dmFyIGQ9WyJJRDtQU2hlZXRKUztOO0UiXSxwPVtdLHc9WmUoaFsiIXJlZiJdfHwiQTEiKSxfLHk9aFsiIWRhdGEiXSE9bnVsbCxSPWBccgpgLFA9KCgobXx8e30pLldvcmtib29rfHx7fSkuV0JQcm9wc3x8e30pLmRhdGUxOTA0LGI9IkdlbmVyYWwiO2QucHVzaCgiUDtQR2VuZXJhbCIpO3ZhciBOPXcucy5yLEQ9dy5zLmMsQj1bXTtpZihoWyIhcmVmIl0pe2ZvcihOPXcucy5yO048PXcuZS5yOysrTilpZighKHkmJiFoWyIhZGF0YSJdW05dKSl7Zm9yKEI9W10sRD13LnMuYztEPD13LmUuYzsrK0QpXz15P2hbIiFkYXRhIl1bTl1bRF06aFtIZShEKStHZShOKV0sISghX3x8IV8uYykmJkIucHVzaChvKF8uYyxOLEQpKTtCLmxlbmd0aCYmcC5wdXNoKEIuam9pbihSKSl9fWlmKGhbIiFyZWYiXSl7Zm9yKE49dy5zLnI7Tjw9dy5lLnI7KytOKWlmKCEoeSYmIWhbIiFkYXRhIl1bTl0pKXtmb3IoQj1bXSxEPXcucy5jO0Q8PXcuZS5jOysrRClpZihfPXk/aFsiIWRhdGEiXVtOXVtEXTpoW0hlKEQpK0dlKE4pXSwhKCFffHxfLnY9PW51bGwmJighXy5mfHxfLkYpKSl7aWYoKF8uenx8KF8udD09ImQiP1RlWzE0XToiR2VuZXJhbCIpKSE9Yil7dmFyIEw9Zy5fZm9ybWF0cy5pbmRleE9mKF8ueik7TD09LTEmJihnLl9mb3JtYXRzLnB1c2goXy56KSxMPWcuX2Zvcm1hdHMubGVuZ3RoLTEsZC5wdXNoKCJQO1AiK18uei5yZXBsYWNlKC87L2csIjs7IikpKSxCLnB1c2goIkY7UCIrTCsiO1kiKyhOKzEpKyI7WCIrKEQrMSkpfUIucHVzaChjKF8saCxOLEQsZyxQKSl9cC5wdXNoKEIuam9pbihSKSl9fXJldHVybiBkLnB1c2goIkY7UDA7REcwRzg7TTI1NSIpLGhbIiFjb2xzIl0mJmwoZCxoWyIhY29scyJdKSxoWyIhcm93cyJdJiZ1KGQsaFsiIXJvd3MiXSksaFsiIXJlZiJdJiZkLnB1c2goIkI7WSIrKHcuZS5yLXcucy5yKzEpKyI7WCIrKHcuZS5jLXcucy5jKzEpKyI7RCIrW3cucy5jLHcucy5yLHcuZS5jLHcuZS5yXS5qb2luKCIgIikpLGQucHVzaCgiTztMO0Q7QiIrKFA/IjtWNCI6IiIpKyI7SzQ3O0cxMDAgMC4wMDEiKSxkZWxldGUgZy5fZm9ybWF0cyxkLmpvaW4oUikrUitwLmpvaW4oUikrUisiRSIrUn1yZXR1cm57dG9fd29ya2Jvb2s6cyxmcm9tX3NoZWV0Onh9fSgpLEl1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShzLGMpe3N3aXRjaChjLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gYShEcihzKSxjKTtjYXNlImJpbmFyeSI6cmV0dXJuIGEocyxjKTtjYXNlImJ1ZmZlciI6cmV0dXJuIGEoTmUmJkJ1ZmZlci5pc0J1ZmZlcihzKT9zLnRvU3RyaW5nKCJiaW5hcnkiKTpmYShzKSxjKTtjYXNlImFycmF5IjpyZXR1cm4gYShCYShzKSxjKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrYy50eXBlKX1mdW5jdGlvbiBhKHMsYyl7Zm9yKHZhciBvPXMuc3BsaXQoYApgKSxsPS0xLHU9LTEseD0wLGg9W107eCE9PW8ubGVuZ3RoOysreCl7aWYob1t4XS50cmltKCk9PT0iQk9UIil7aFsrK2xdPVtdLHU9MDtjb250aW51ZX1pZighKGw8MCkpe3ZhciBnPW9beF0udHJpbSgpLnNwbGl0KCIsIiksbT1nWzBdLGQ9Z1sxXTsrK3g7Zm9yKHZhciBwPW9beF18fCIiOyhwLm1hdGNoKC9bIl0vZyl8fFtdKS5sZW5ndGgmMSYmeDxvLmxlbmd0aC0xOylwKz1gCmArb1srK3hdO3N3aXRjaChwPXAudHJpbSgpLCttKXtjYXNlLTE6aWYocD09PSJCT1QiKXtoWysrbF09W10sdT0wO2NvbnRpbnVlfWVsc2UgaWYocCE9PSJFT0QiKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIERJRiBzcGVjaWFsIGNvbW1hbmQgIitwKTticmVhaztjYXNlIDA6cD09PSJUUlVFIj9oW2xdW3VdPSEwOnA9PT0iRkFMU0UiP2hbbF1bdV09ITE6aXNOYU4oT3IoZCkpP2lzTmFOKHl0KGQpLmdldERhdGUoKSk/aFtsXVt1XT1kOihoW2xdW3VdPXhyKGQpLGMmJmMuVVRDfHwoaFtsXVt1XT1VYShoW2xdW3VdKSkpOmhbbF1bdV09T3IoZCksKyt1O2JyZWFrO2Nhc2UgMTpwPXAuc2xpY2UoMSxwLmxlbmd0aC0xKSxwPXAucmVwbGFjZSgvIiIvZywnIicpLHAmJnAubWF0Y2goL149Ii4qIiQvKSYmKHA9cC5zbGljZSgyLC0xKSksaFtsXVt1KytdPXAhPT0iIj9wOm51bGw7YnJlYWt9aWYocD09PSJFT0QiKWJyZWFrfX1yZXR1cm4gYyYmYy5zaGVldFJvd3MmJihoPWguc2xpY2UoMCxjLnNoZWV0Um93cykpLGh9ZnVuY3Rpb24gcihzLGMpe3JldHVybiBjdChlKHMsYyksYyl9ZnVuY3Rpb24gdChzLGMpe3ZhciBvPUNhKHIocyxjKSxjKTtyZXR1cm4gby5ib29rVHlwZT0iZGlmIixvfWZ1bmN0aW9uIG4ocyxjKXtyZXR1cm4iMCwiK1N0cmluZyhzKStgXHIKYCtjfWZ1bmN0aW9uIGkocyl7cmV0dXJuYDEsMFxyCiJgK3MucmVwbGFjZSgvIi9nLCciIicpKyciJ31mdW5jdGlvbiBmKHMpe2lmKCFzWyIhcmVmIl0pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXhwb3J0IGVtcHR5IHNoZWV0IHRvIERJRiIpO2Zvcih2YXIgYz1aZShzWyIhcmVmIl0pLG89c1siIWRhdGEiXSE9bnVsbCxsPVtgVEFCTEVccgowLDFccgoic2hlZXRqcyJccgpgLGBWRUNUT1JTXHIKMCxgKyhjLmUuci1jLnMucisxKStgXHIKIiJccgpgLGBUVVBMRVNccgowLGArKGMuZS5jLWMucy5jKzEpK2BccgoiIlxyCmAsYERBVEFccgowLDBccgoiIlxyCmBdLHU9Yy5zLnI7dTw9Yy5lLnI7Kyt1KXtmb3IodmFyIHg9bz9zWyIhZGF0YSJdW3VdOltdLGg9YC0xLDBccgpCT1RccgpgLGc9Yy5zLmM7Zzw9Yy5lLmM7KytnKXt2YXIgbT1vP3gmJnhbZ106c1tJZSh7cjp1LGM6Z30pXTtpZihtPT1udWxsKXtoKz1gMSwwXHIKIiJccgpgO2NvbnRpbnVlfXN3aXRjaChtLnQpe2Nhc2UibiI6bS53IT1udWxsP2grPSIwLCIrbS53K2BccgpWYDptLnYhPW51bGw/aCs9bihtLnYsIlYiKTptLmYhPW51bGwmJiFtLkY/aCs9aSgiPSIrbS5mKTpoKz1gMSwwXHIKIiJgO2JyZWFrO2Nhc2UiYiI6aCs9bS52P24oMSwiVFJVRSIpOm4oMCwiRkFMU0UiKTticmVhaztjYXNlInMiOmgrPWkoaXNOYU4oK20udik/bS52Oic9IicrbS52KyciJyk7YnJlYWs7Y2FzZSJkIjptLnd8fChtLnc9UnIobS56fHxUZVsxNF0sb3IoeHIobS52KSkpKSxoKz1uKG0udywiViIpO2JyZWFrO2RlZmF1bHQ6aCs9YDEsMFxyCiIiYH1oKz1gXHIKYH1sLnB1c2goaCl9cmV0dXJuIGwuam9pbigiIikrYC0xLDBccgpFT0RgfXJldHVybnt0b193b3JrYm9vazp0LHRvX3NoZWV0OnIsZnJvbV9zaGVldDpmfX0oKSxSdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodSl7cmV0dXJuIHUucmVwbGFjZSgvXFxiL2csIlxcIikucmVwbGFjZSgvXFxjL2csIjoiKS5yZXBsYWNlKC9cXG4vZyxgCmApfWZ1bmN0aW9uIGEodSl7cmV0dXJuIHUucmVwbGFjZSgvXFwvZywiXFxiIikucmVwbGFjZSgvOi9nLCJcXGMiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKX1mdW5jdGlvbiByKHUseCl7Zm9yKHZhciBoPXUuc3BsaXQoYApgKSxnPS0xLG09LTEsZD0wLHA9W107ZCE9PWgubGVuZ3RoOysrZCl7dmFyIHc9aFtkXS50cmltKCkuc3BsaXQoIjoiKTtpZih3WzBdPT09ImNlbGwiKXt2YXIgXz1ncih3WzFdKTtpZihwLmxlbmd0aDw9Xy5yKWZvcihnPXAubGVuZ3RoO2c8PV8ucjsrK2cpcFtnXXx8KHBbZ109W10pO3N3aXRjaChnPV8ucixtPV8uYyx3WzJdKXtjYXNlInQiOnBbZ11bbV09ZSh3WzNdKTticmVhaztjYXNlInYiOnBbZ11bbV09K3dbM107YnJlYWs7Y2FzZSJ2dGYiOnZhciB5PXdbdy5sZW5ndGgtMV07Y2FzZSJ2dGMiOnN3aXRjaCh3WzNdKXtjYXNlIm5sIjpwW2ddW21dPSEhK3dbNF07YnJlYWs7ZGVmYXVsdDpwW2ddW21dPXdbdy5sZW5ndGgtMV0uY2hhckF0KDApPT0iIyI/e3Q6ImUiLHY6ZHJbd1t3Lmxlbmd0aC0xXV19Oit3WzRdO2JyZWFrfXdbMl09PSJ2dGYiJiYocFtnXVttXT1bcFtnXVttXSx5XSl9fX1yZXR1cm4geCYmeC5zaGVldFJvd3MmJihwPXAuc2xpY2UoMCx4LnNoZWV0Um93cykpLHB9ZnVuY3Rpb24gdCh1LHgpe3JldHVybiBjdChyKHUseCkseCl9ZnVuY3Rpb24gbih1LHgpe3JldHVybiBDYSh0KHUseCkseCl9dmFyIGk9WyJzb2NpYWxjYWxjOnZlcnNpb246MS41IiwiTUlNRS1WZXJzaW9uOiAxLjAiLCJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9U29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiXS5qb2luKGAKYCksZj1bIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiLCJDb250ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgiXS5qb2luKGAKYCkrYApgLHM9WyIjIFNvY2lhbENhbGMgU3ByZWFkc2hlZXQgQ29udHJvbCBTYXZlIiwicGFydDpzaGVldCJdLmpvaW4oYApgKSxjPSItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlLS0iO2Z1bmN0aW9uIG8odSl7aWYoIXV8fCF1WyIhcmVmIl0pcmV0dXJuIiI7Zm9yKHZhciB4PVtdLGg9W10sZyxtPSIiLGQ9cGEodVsiIXJlZiJdKSxwPXVbIiFkYXRhIl0hPW51bGwsdz1kLnMucjt3PD1kLmUucjsrK3cpZm9yKHZhciBfPWQucy5jO188PWQuZS5jOysrXylpZihtPUllKHtyOncsYzpffSksZz1wPyh1WyIhZGF0YSJdW3ddfHxbXSlbX106dVttXSwhKCFnfHxnLnY9PW51bGx8fGcudD09PSJ6Iikpe3N3aXRjaChoPVsiY2VsbCIsbSwidCJdLGcudCl7Y2FzZSJzIjpoLnB1c2goYShnLnYpKTticmVhaztjYXNlImIiOmhbMl09InZ0IisoZy5mPyJmIjoiYyIpLGhbM109Im5sIixoWzRdPWcudj8iMSI6IjAiLGhbNV09YShnLmZ8fChnLnY/IlRSVUUiOiJGQUxTRSIpKTticmVhaztjYXNlImQiOnZhciB5PW9yKHhyKGcudikpO2hbMl09InZ0YyIsaFszXT0ibmQiLGhbNF09IiIreSxoWzVdPWcud3x8UnIoZy56fHxUZVsxNF0seSk7YnJlYWs7Y2FzZSJuIjppc0Zpbml0ZShnLnYpP2cuZj8oaFsyXT0idnRmIixoWzNdPSJuIixoWzRdPWcudixoWzVdPWEoZy5mKSk6KGhbMl09InYiLGhbM109Zy52KTooaFsyXT0idnQiKyhnLmY/ImYiOiJjIiksaFszXT0iZSIrYnJbaXNOYU4oZy52KT8zNjo3XSxoWzRdPSIwIixoWzVdPWcuZnx8aFszXS5zbGljZSgxKSxoWzZdPSJlIixoWzddPWhbM10uc2xpY2UoMSkpO2JyZWFrO2Nhc2UiZSI6Y29udGludWV9eC5wdXNoKGguam9pbigiOiIpKX1yZXR1cm4geC5wdXNoKCJzaGVldDpjOiIrKGQuZS5jLWQucy5jKzEpKyI6cjoiKyhkLmUuci1kLnMucisxKSsiOnR2ZjoxIikseC5wdXNoKCJ2YWx1ZWZvcm1hdDoxOnRleHQtd2lraSIpLHguam9pbihgCmApfWZ1bmN0aW9uIGwodSl7cmV0dXJuW2ksZixzLGYsbyh1KSxjXS5qb2luKGAKYCl9cmV0dXJue3RvX3dvcmtib29rOm4sdG9fc2hlZXQ6dCxmcm9tX3NoZWV0Omx9fSgpLGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShsLHUseCxoLGcpe2cucmF3P3VbeF1baF09bDpsPT09IiJ8fChsPT09IlRSVUUiP3VbeF1baF09ITA6bD09PSJGQUxTRSI/dVt4XVtoXT0hMTppc05hTihPcihsKSk/aXNOYU4oeXQobCkuZ2V0RGF0ZSgpKT9sLmNoYXJDb2RlQXQoMCk9PTM1JiZkcltsXSE9bnVsbD91W3hdW2hdPXt0OiJlIix2OmRyW2xdLHc6bH06dVt4XVtoXT1sOnVbeF1baF09eHIobCk6dVt4XVtoXT1PcihsKSl9ZnVuY3Rpb24gYShsLHUpe3ZhciB4PXV8fHt9LGg9W107aWYoIWx8fGwubGVuZ3RoPT09MClyZXR1cm4gaDtmb3IodmFyIGc9bC5zcGxpdCgvW1xyXG5dLyksbT1nLmxlbmd0aC0xO20+PTAmJmdbbV0ubGVuZ3RoPT09MDspLS1tO2Zvcih2YXIgZD0xMCxwPTAsdz0wO3c8PW07Kyt3KXA9Z1t3XS5pbmRleE9mKCIgIikscD09LTE/cD1nW3ddLmxlbmd0aDpwKyssZD1NYXRoLm1heChkLHApO2Zvcih3PTA7dzw9bTsrK3cpe2hbd109W107dmFyIF89MDtmb3IoZShnW3ddLnNsaWNlKDAsZCkudHJpbSgpLGgsdyxfLHgpLF89MTtfPD0oZ1t3XS5sZW5ndGgtZCkvMTArMTsrK18pZShnW3ddLnNsaWNlKGQrKF8tMSkqMTAsZCtfKjEwKS50cmltKCksaCx3LF8seCl9cmV0dXJuIHguc2hlZXRSb3dzJiYoaD1oLnNsaWNlKDAseC5zaGVldFJvd3MpKSxofXZhciByPXs0NDoiLCIsOToiCSIsNTk6IjsiLDEyNDoifCJ9LHQ9ezQ0OjMsOToyLDU5OjEsMTI0OjB9O2Z1bmN0aW9uIG4obCl7Zm9yKHZhciB1PXt9LHg9ITEsaD0wLGc9MDtoPGwubGVuZ3RoOysraCkoZz1sLmNoYXJDb2RlQXQoaCkpPT0zND94PSF4OiF4JiZnIGluIHImJih1W2ddPSh1W2ddfHwwKSsxKTtnPVtdO2ZvcihoIGluIHUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUsaCkmJmcucHVzaChbdVtoXSxoXSk7aWYoIWcubGVuZ3RoKXt1PXQ7Zm9yKGggaW4gdSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxoKSYmZy5wdXNoKFt1W2hdLGhdKX1yZXR1cm4gZy5zb3J0KGZ1bmN0aW9uKG0sZCl7cmV0dXJuIG1bMF0tZFswXXx8dFttWzFdXS10W2RbMV1dfSkscltnLnBvcCgpWzFdXXx8NDR9ZnVuY3Rpb24gaShsLHUpe3ZhciB4PXV8fHt9LGg9IiIsZz17fTt4LmRlbnNlJiYoZ1siIWRhdGEiXT1bXSk7dmFyIG09e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtsLnNsaWNlKDAsNCk9PSJzZXA9Ij9sLmNoYXJDb2RlQXQoNSk9PTEzJiZsLmNoYXJDb2RlQXQoNik9PTEwPyhoPWwuY2hhckF0KDQpLGw9bC5zbGljZSg3KSk6bC5jaGFyQ29kZUF0KDUpPT0xM3x8bC5jaGFyQ29kZUF0KDUpPT0xMD8oaD1sLmNoYXJBdCg0KSxsPWwuc2xpY2UoNikpOmg9bihsLnNsaWNlKDAsMTAyNCkpOngmJnguRlM/aD14LkZTOmg9bihsLnNsaWNlKDAsMTAyNCkpO3ZhciBkPTAscD0wLHc9MCxfPTAseT0wLFI9aC5jaGFyQ29kZUF0KDApLFA9ITEsYj0wLE49bC5jaGFyQ29kZUF0KDApLEQ9eC5kYXRlTkYhPW51bGw/U2MoeC5kYXRlTkYpOm51bGw7ZnVuY3Rpb24gQigpe3ZhciBMPWwuc2xpY2UoXyx5KTtMLnNsaWNlKC0xKT09IlxyIiYmKEw9TC5zbGljZSgwLC0xKSk7dmFyIEc9e307aWYoTC5jaGFyQXQoMCk9PSciJyYmTC5jaGFyQXQoTC5sZW5ndGgtMSk9PSciJyYmKEw9TC5zbGljZSgxLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpLHguY2VsbFRleHQhPT0hMSYmKEcudz1MKSxMLmxlbmd0aD09PTApRy50PSJ6IjtlbHNlIGlmKHgucmF3KUcudD0icyIsRy52PUw7ZWxzZSBpZihMLnRyaW0oKS5sZW5ndGg9PT0wKUcudD0icyIsRy52PUw7ZWxzZSBpZihMLmNoYXJDb2RlQXQoMCk9PTYxKUwuY2hhckNvZGVBdCgxKT09MzQmJkwuY2hhckNvZGVBdChMLmxlbmd0aC0xKT09MzQ/KEcudD0icyIsRy52PUwuc2xpY2UoMiwtMSkucmVwbGFjZSgvIiIvZywnIicpKTpOMShMKT8oRy50PSJzIixHLmY9TC5zbGljZSgxKSxHLnY9TCk6KEcudD0icyIsRy52PUwpO2Vsc2UgaWYoTD09IlRSVUUiKUcudD0iYiIsRy52PSEwO2Vsc2UgaWYoTD09IkZBTFNFIilHLnQ9ImIiLEcudj0hMTtlbHNlIGlmKCFpc05hTih3PU9yKEwpKSlHLnQ9Im4iLEcudj13O2Vsc2UgaWYoIWlzTmFOKCh3PXl0KEwpKS5nZXREYXRlKCkpfHxEJiZMLm1hdGNoKEQpKXtpZihHLno9eC5kYXRlTkZ8fFRlWzE0XSxEJiZMLm1hdGNoKEQpKXt2YXIgaWU9Q2MoTCx4LmRhdGVORixMLm1hdGNoKEQpfHxbXSk7dz14cihpZSkseCYmeC5VVEM9PT0hMSYmKHc9VWEodykpfWVsc2UgeCYmeC5VVEM9PT0hMT93PVVhKHcpOnguY2VsbFRleHQhPT0hMSYmeC5kYXRlTkYmJihHLnc9UnIoRy56LHcpKTt4LmNlbGxEYXRlcz8oRy50PSJkIixHLnY9dyk6KEcudD0ibiIsRy52PW9yKHcpKSx4LmNlbGxORnx8ZGVsZXRlIEcuen1lbHNlIEwuY2hhckNvZGVBdCgwKT09MzUmJmRyW0xdIT1udWxsPyhHLnQ9ImUiLEcudz1MLEcudj1kcltMXSk6KEcudD0icyIsRy52PUwpO2lmKEcudD09InoifHwoeC5kZW5zZT8oZ1siIWRhdGEiXVtkXXx8KGdbIiFkYXRhIl1bZF09W10pLGdbIiFkYXRhIl1bZF1bcF09Ryk6Z1tJZSh7YzpwLHI6ZH0pXT1HKSxfPXkrMSxOPWwuY2hhckNvZGVBdChfKSxtLmUuYzxwJiYobS5lLmM9cCksbS5lLnI8ZCYmKG0uZS5yPWQpLGI9PVIpKytwO2Vsc2UgaWYocD0wLCsrZCx4LnNoZWV0Um93cyYmeC5zaGVldFJvd3M8PWQpcmV0dXJuITB9ZTpmb3IoO3k8bC5sZW5ndGg7Kyt5KXN3aXRjaChiPWwuY2hhckNvZGVBdCh5KSl7Y2FzZSAzNDpOPT09MzQmJihQPSFQKTticmVhaztjYXNlIDEzOmlmKFApYnJlYWs7bC5jaGFyQ29kZUF0KHkrMSk9PTEwJiYrK3k7Y2FzZSBSOmNhc2UgMTA6aWYoIVAmJkIoKSlicmVhayBlO2JyZWFrfXJldHVybiB5LV8+MCYmQigpLGdbIiFyZWYiXT1EZShtKSxnfWZ1bmN0aW9uIGYobCx1KXtyZXR1cm4hKHUmJnUuUFJOKXx8dS5GU3x8bC5zbGljZSgwLDQpPT0ic2VwPSJ8fGwuaW5kZXhPZigiCSIpPj0wfHxsLmluZGV4T2YoIiwiKT49MHx8bC5pbmRleE9mKCI7Iik+PTA/aShsLHUpOmN0KGEobCx1KSx1KX1mdW5jdGlvbiBzKGwsdSl7dmFyIHg9IiIsaD11LnR5cGU9PSJzdHJpbmciP1swLDAsMCwwXTpJbihsLHUpO3N3aXRjaCh1LnR5cGUpe2Nhc2UiYmFzZTY0Ijp4PURyKGwpO2JyZWFrO2Nhc2UiYmluYXJ5Ijp4PWw7YnJlYWs7Y2FzZSJidWZmZXIiOnUuY29kZXBhZ2U9PTY1MDAxP3g9bC50b1N0cmluZygidXRmOCIpOnUuY29kZXBhZ2UmJnR5cGVvZiBudDwidSI/eD1udC51dGlscy5kZWNvZGUodS5jb2RlcGFnZSxsKTp4PU5lJiZCdWZmZXIuaXNCdWZmZXIobCk/bC50b1N0cmluZygiYmluYXJ5Iik6ZmEobCk7YnJlYWs7Y2FzZSJhcnJheSI6eD1CYShsKTticmVhaztjYXNlInN0cmluZyI6eD1sO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK3UudHlwZSl9cmV0dXJuIGhbMF09PTIzOSYmaFsxXT09MTg3JiZoWzJdPT0xOTE/eD1WZSh4LnNsaWNlKDMpKTp1LnR5cGUhPSJzdHJpbmciJiZ1LnR5cGUhPSJidWZmZXIiJiZ1LmNvZGVwYWdlPT02NTAwMT94PVZlKHgpOnUudHlwZT09ImJpbmFyeSImJnR5cGVvZiBudDwidSImJnUuY29kZXBhZ2UmJih4PW50LnV0aWxzLmRlY29kZSh1LmNvZGVwYWdlLG50LnV0aWxzLmVuY29kZSgyODU5MSx4KSkpLHguc2xpY2UoMCwxOSk9PSJzb2NpYWxjYWxjOnZlcnNpb246Ij9SdS50b19zaGVldCh1LnR5cGU9PSJzdHJpbmciP3g6VmUoeCksdSk6Zih4LHUpfWZ1bmN0aW9uIGMobCx1KXtyZXR1cm4gQ2EocyhsLHUpLHUpfWZ1bmN0aW9uIG8obCl7dmFyIHU9W107aWYoIWxbIiFyZWYiXSlyZXR1cm4iIjtmb3IodmFyIHg9WmUobFsiIXJlZiJdKSxoLGc9bFsiIWRhdGEiXSE9bnVsbCxtPXgucy5yO208PXguZS5yOysrbSl7Zm9yKHZhciBkPVtdLHA9eC5zLmM7cDw9eC5lLmM7KytwKXt2YXIgdz1JZSh7cjptLGM6cH0pO2lmKGg9Zz8obFsiIWRhdGEiXVttXXx8W10pW3BdOmxbd10sIWh8fGgudj09bnVsbCl7ZC5wdXNoKCIgICAgICAgICAgIik7Y29udGludWV9Zm9yKHZhciBfPShoLnd8fChnYShoKSxoLncpfHwiIikuc2xpY2UoMCwxMCk7Xy5sZW5ndGg8MTA7KV8rPSIgIjtkLnB1c2goXysocD09PTA/IiAiOiIiKSl9dS5wdXNoKGQuam9pbigiIikpfXJldHVybiB1LmpvaW4oYApgKX1yZXR1cm57dG9fd29ya2Jvb2s6Yyx0b19zaGVldDpzLGZyb21fc2hlZXQ6b319KCk7ZnVuY3Rpb24gT3UoZSxhKXt2YXIgcj1hfHx7fSx0PSEhci5XVEY7ci5XVEY9ITA7dHJ5e3ZhciBuPUR1LnRvX3dvcmtib29rKGUscik7cmV0dXJuIHIuV1RGPXQsbn1jYXRjaChpKXtpZihyLldURj10LGkubWVzc2FnZS5pbmRleE9mKCJTWUxLIGJhZCByZWNvcmQgSUQiKT09LTEmJnQpdGhyb3cgaTtyZXR1cm4gbHQudG9fd29ya2Jvb2soZSxhKX19ZnVuY3Rpb24gTnUoZSxhKXt2YXIgcj1hfHx7fSx0PSEhci5XVEY7ci5XVEY9ITA7dHJ5e3ZhciBuPUl1LnRvX3dvcmtib29rKGUscik7aWYoIW58fCFuLlNoZWV0cyl0aHJvdyJESUYgYmFkIHdvcmtib29rIjt2YXIgaT1uLlNoZWV0c1tuLlNoZWV0TmFtZXNbMF1dO2lmKCFpfHwhaVsiIXJlZiJdKXRocm93IkRJRiBlbXB0eSB3b3Jrc2hlZXQiO3JldHVybiByLldURj10LG59Y2F0Y2h7cmV0dXJuIHIuV1RGPXQsbHQudG9fd29ya2Jvb2soZSxhKX19dmFyIFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShBLFUsTyl7aWYoQSl7c3IoQSxBLmx8fDApO2Zvcih2YXIgST1PLkVudW18fG1lO0EubDxBLmxlbmd0aDspe3ZhciB6PUEucmVhZF9zaGlmdCgyKSxwZT1JW3pdfHxJWzY1NTM1XSxKPUEucmVhZF9zaGlmdCgyKSxyZT1BLmwrSixlZT1wZS5mJiZwZS5mKEEsSixPKTtpZihBLmw9cmUsVShlZSxwZSx6KSlyZXR1cm59fX1mdW5jdGlvbiBhKEEsVSl7c3dpdGNoKFUudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiB0KElyKERyKEEpKSxVKTtjYXNlImJpbmFyeSI6cmV0dXJuIHQoSXIoQSksVSk7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJldHVybiB0KEEsVSl9dGhyb3ciVW5zdXBwb3J0ZWQgdHlwZSAiK1UudHlwZX12YXIgcj1bIm1tbW0iLCJkZC1tbW0teXl5eSIsImRkLW1tbSIsIm1tbS15eXl5IiwiQCIsIm1tL2RkIiwiaGg6bW06c3MgQU0vUE0iLCJoaDptbSBBTS9QTSIsIm1tL2RkL3l5eXkiLCJtbS9kZCIsImhoOm1tOnNzIiwiaGg6bW0iXTtmdW5jdGlvbiB0KEEsVSl7aWYoIUEpcmV0dXJuIEE7dmFyIE89VXx8e30sST17fSx6PSJTaGVldDEiLHBlPSIiLEo9MCxyZT17fSxlZT1bXSxrZT1bXSxoZT1bXTtPLmRlbnNlJiYoaGU9SVsiIWRhdGEiXT1bXSk7dmFyIHhlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sWGU9Ty5zaGVldFJvd3N8fDAsemU9e307aWYoQVs0XT09ODEmJkFbNV09PTgwJiZBWzZdPT04NylyZXR1cm4gQWUoQSxVKTtpZihBWzJdPT0wJiYoQVszXT09OHx8QVszXT09OSkmJkEubGVuZ3RoPj0xNiYmQVsxNF09PTUmJkFbMTVdPT09MTA4KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgV29ya3MgMyBmb3IgTWFjIGZpbGUiKTtpZihBWzJdPT0yKU8uRW51bT1tZSxlKEEsZnVuY3Rpb24oZmUsc2EsanIpe3N3aXRjaChqcil7Y2FzZSAwOk8udmVycz1mZSxmZT49NDA5NiYmKE8ucXBybz0hMCk7YnJlYWs7Y2FzZSAyNTU6Ty52ZXJzPWZlLE8ud29ya3M9ITA7YnJlYWs7Y2FzZSA2OnhlPWZlO2JyZWFrO2Nhc2UgMjA0OmZlJiYocGU9ZmUpO2JyZWFrO2Nhc2UgMjIyOnBlPWZlO2JyZWFrO2Nhc2UgMTU6Y2FzZSA1MTooIU8ucXBybyYmIU8ud29ya3N8fGpyPT01MSkmJmZlWzFdLnYuY2hhckNvZGVBdCgwKTw0OCYmKGZlWzFdLnY9ZmVbMV0udi5zbGljZSgxKSksKE8ud29ya3N8fE8ud29ya3MyKSYmKGZlWzFdLnY9ZmVbMV0udi5yZXBsYWNlKC9cclxuL2csYApgKSk7Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTY6KGZlWzJdJjExMik9PTExMiYmKGZlWzJdJjE1KT4xJiYoZmVbMl0mMTUpPDE1JiYoZmVbMV0uej1PLmRhdGVORnx8clsoZmVbMl0mMTUpLTFdfHxUZVsxNF0sTy5jZWxsRGF0ZXMmJihmZVsxXS52PVNhKGZlWzFdLnYpLGZlWzFdLnQ9dHlwZW9mIGZlWzFdLnY9PSJudW1iZXIiPyJuIjoiZCIpKSxPLnFwcm8mJmZlWzNdPkomJihJWyIhcmVmIl09RGUoeGUpLHJlW3pdPUksZWUucHVzaCh6KSxJPXt9LE8uZGVuc2UmJihoZT1JWyIhZGF0YSJdPVtdKSx4ZT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LEo9ZmVbM10sej1wZXx8IlNoZWV0IisoSisxKSxwZT0iIik7dmFyIFllPU8uZGVuc2U/KGhlW2ZlWzBdLnJdfHxbXSlbZmVbMF0uY106SVtJZShmZVswXSldO2lmKFllKXtZZS50PWZlWzFdLnQsWWUudj1mZVsxXS52LGZlWzFdLnohPW51bGwmJihZZS56PWZlWzFdLnopLGZlWzFdLmYhPW51bGwmJihZZS5mPWZlWzFdLmYpLHplPVllO2JyZWFrfU8uZGVuc2U/KGhlW2ZlWzBdLnJdfHwoaGVbZmVbMF0ucl09W10pLGhlW2ZlWzBdLnJdW2ZlWzBdLmNdPWZlWzFdKTpJW0llKGZlWzBdKV09ZmVbMV0semU9ZmVbMV07YnJlYWs7Y2FzZSAyMTUwOTpPLndvcmtzMj0hMDticmVhaztjYXNlIDIxNTA2OmZlPT01MjgxJiYoemUuej0iaGg6bW06c3MiLE8uY2VsbERhdGVzJiZ6ZS50PT0ibiImJih6ZS52PVNhKHplLnYpLHplLnQ9dHlwZW9mIHplLnY9PSJudW1iZXIiPyJuIjoiZCIpKTticmVha319LE8pO2Vsc2UgaWYoQVsyXT09MjZ8fEFbMl09PTE0KU8uRW51bT1aLEFbMl09PTE0JiYoTy5xcHJvPSEwLEEubD0wKSxlKEEsZnVuY3Rpb24oZmUsc2EsanIpe3N3aXRjaChqcil7Y2FzZSAyMDQ6ej1mZTticmVhaztjYXNlIDIyOmZlWzFdLnYuY2hhckNvZGVBdCgwKTw0OCYmKGZlWzFdLnY9ZmVbMV0udi5zbGljZSgxKSksZmVbMV0udj1mZVsxXS52LnJlcGxhY2UoL1x4MEYuL2csZnVuY3Rpb24oWWUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKFllLmNoYXJDb2RlQXQoMSktMzIpfSkucmVwbGFjZSgvXHJcbi9nLGAKYCk7Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjU6Y2FzZSAzNzpjYXNlIDM5OmNhc2UgNDA6aWYoZmVbM10+SiYmKElbIiFyZWYiXT1EZSh4ZSkscmVbel09SSxlZS5wdXNoKHopLEk9e30sTy5kZW5zZSYmKGhlPUlbIiFkYXRhIl09W10pLHhlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sSj1mZVszXSx6PSJTaGVldCIrKEorMSkpLFhlPjAmJmZlWzBdLnI+PVhlKWJyZWFrO08uZGVuc2U/KGhlW2ZlWzBdLnJdfHwoaGVbZmVbMF0ucl09W10pLGhlW2ZlWzBdLnJdW2ZlWzBdLmNdPWZlWzFdKTpJW0llKGZlWzBdKV09ZmVbMV0seGUuZS5jPGZlWzBdLmMmJih4ZS5lLmM9ZmVbMF0uYykseGUuZS5yPGZlWzBdLnImJih4ZS5lLnI9ZmVbMF0ucik7YnJlYWs7Y2FzZSAyNzpmZVsxNGUzXSYmKGtlW2ZlWzE0ZTNdWzBdXT1mZVsxNGUzXVsxXSk7YnJlYWs7Y2FzZSAxNTM3OmtlW2ZlWzBdXT1mZVsxXSxmZVswXT09SiYmKHo9ZmVbMV0pO2JyZWFrfX0sTyk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBMT1RVUyBCT0YgIitBWzJdKTtpZihJWyIhcmVmIl09RGUoeGUpLHJlW3BlfHx6XT1JLGVlLnB1c2gocGV8fHopLCFrZS5sZW5ndGgpcmV0dXJue1NoZWV0TmFtZXM6ZWUsU2hlZXRzOnJlfTtmb3IodmFyIGplPXt9LGRlPVtdLFdlPTA7V2U8a2UubGVuZ3RoOysrV2UpcmVbZWVbV2VdXT8oZGUucHVzaChrZVtXZV18fGVlW1dlXSksamVba2VbV2VdXT1yZVtrZVtXZV1dfHxyZVtlZVtXZV1dKTooZGUucHVzaChrZVtXZV0pLGplW2tlW1dlXV09eyIhcmVmIjoiQTEifSk7cmV0dXJue1NoZWV0TmFtZXM6ZGUsU2hlZXRzOmplfX1mdW5jdGlvbiBuKEEsVSl7dmFyIE89VXx8e307aWYoK08uY29kZXBhZ2U+PTAmJllyKCtPLmNvZGVwYWdlKSxPLnR5cGU9PSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIFdLMSB0byBKUyBzdHJpbmciKTt2YXIgST1ybigpO2lmKCFBWyIhcmVmIl0pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXhwb3J0IGVtcHR5IHNoZWV0IHRvIFdLMSIpO3ZhciB6PVplKEFbIiFyZWYiXSkscGU9QVsiIWRhdGEiXSE9bnVsbCxKPVtdO1ByKEksMCxmKDEwMzApKSxQcihJLDYsbyh6KSk7Zm9yKHZhciByZT1NYXRoLm1pbih6LmUuciw4MTkxKSxlZT16LnMuYztlZTw9ei5lLmM7KytlZSlKW2VlXT1IZShlZSk7Zm9yKHZhciBrZT16LnMucjtrZTw9cmU7KytrZSl7dmFyIGhlPUdlKGtlKTtmb3IoZWU9ei5zLmM7ZWU8PXouZS5jOysrZWUpe3ZhciB4ZT1wZT8oQVsiIWRhdGEiXVtrZV18fFtdKVtlZV06QVtKW2VlXStoZV07aWYoISgheGV8fHhlLnQ9PSJ6Iikpc3dpdGNoKHhlLnQpe2Nhc2UibiI6KHhlLnZ8MCk9PXhlLnYmJnhlLnY+PS0zMjc2OCYmeGUudjw9MzI3Njc/UHIoSSwxMyxkKGtlLGVlLHhlKSk6UHIoSSwxNCx3KGtlLGVlLHhlKSk7YnJlYWs7Y2FzZSJkIjp2YXIgWGU9b3IoeGUudik7KFhlfDApPT1YZSYmWGU+PS0zMjc2OCYmWGU8PTMyNzY3P1ByKEksMTMsZChrZSxlZSx7dDoibiIsdjpYZSx6OnhlLnp8fFRlWzE0XX0pKTpQcihJLDE0LHcoa2UsZWUse3Q6Im4iLHY6WGUsejp4ZS56fHxUZVsxNF19KSk7YnJlYWs7ZGVmYXVsdDp2YXIgemU9Z2EoeGUpO1ByKEksMTUsaChrZSxlZSx6ZS5zbGljZSgwLDIzOSkpKX19fXJldHVybiBQcihJLDEpLEkuZW5kKCl9ZnVuY3Rpb24gaShBLFUpe3ZhciBPPVV8fHt9O2lmKCtPLmNvZGVwYWdlPj0wJiZZcigrTy5jb2RlcGFnZSksTy50eXBlPT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nIik7dmFyIEk9cm4oKTtQcihJLDAscyhBKSk7Zm9yKHZhciB6PTAscGU9MDt6PEEuU2hlZXROYW1lcy5sZW5ndGg7Kyt6KShBLlNoZWV0c1tBLlNoZWV0TmFtZXNbel1dfHx7fSlbIiFyZWYiXSYmUHIoSSwyNyxiZShBLlNoZWV0TmFtZXNbel0scGUrKykpO3ZhciBKPTA7Zm9yKHo9MDt6PEEuU2hlZXROYW1lcy5sZW5ndGg7Kyt6KXt2YXIgcmU9QS5TaGVldHNbQS5TaGVldE5hbWVzW3pdXTtpZighKCFyZXx8IXJlWyIhcmVmIl0pKXtmb3IodmFyIGVlPVplKHJlWyIhcmVmIl0pLGtlPXJlWyIhZGF0YSJdIT1udWxsLGhlPVtdLHhlPU1hdGgubWluKGVlLmUuciw4MTkxKSxYZT1lZS5zLnI7WGU8PXhlOysrWGUpZm9yKHZhciB6ZT1HZShYZSksamU9ZWUucy5jO2plPD1lZS5lLmM7KytqZSl7WGU9PT1lZS5zLnImJihoZVtqZV09SGUoamUpKTt2YXIgZGU9aGVbamVdK3plLFdlPWtlPyhyZVsiIWRhdGEiXVtYZV18fFtdKVtqZV06cmVbZGVdO2lmKCEoIVdlfHxXZS50PT0ieiIpKWlmKFdlLnQ9PSJuIilQcihJLDIzLGllKFhlLGplLEosV2UudikpO2Vsc2V7dmFyIGZlPWdhKFdlKTtQcihJLDIyLEIoWGUsamUsSixmZS5zbGljZSgwLDIzOSkpKX19KytKfX1yZXR1cm4gUHIoSSwxKSxJLmVuZCgpfWZ1bmN0aW9uIGYoQSl7dmFyIFU9ZnIoMik7cmV0dXJuIFUud3JpdGVfc2hpZnQoMixBKSxVfWZ1bmN0aW9uIHMoQSl7dmFyIFU9ZnIoMjYpO1Uud3JpdGVfc2hpZnQoMiw0MDk2KSxVLndyaXRlX3NoaWZ0KDIsNCksVS53cml0ZV9zaGlmdCg0LDApO2Zvcih2YXIgTz0wLEk9MCx6PTAscGU9MDtwZTxBLlNoZWV0TmFtZXMubGVuZ3RoOysrcGUpe3ZhciBKPUEuU2hlZXROYW1lc1twZV0scmU9QS5TaGVldHNbSl07aWYoISghcmV8fCFyZVsiIXJlZiJdKSl7Kyt6O3ZhciBlZT1wYShyZVsiIXJlZiJdKTtPPGVlLmUuciYmKE89ZWUuZS5yKSxJPGVlLmUuYyYmKEk9ZWUuZS5jKX19cmV0dXJuIE8+ODE5MSYmKE89ODE5MSksVS53cml0ZV9zaGlmdCgyLE8pLFUud3JpdGVfc2hpZnQoMSx6KSxVLndyaXRlX3NoaWZ0KDEsSSksVS53cml0ZV9zaGlmdCgyLDApLFUud3JpdGVfc2hpZnQoMiwwKSxVLndyaXRlX3NoaWZ0KDEsMSksVS53cml0ZV9zaGlmdCgxLDIpLFUud3JpdGVfc2hpZnQoNCwwKSxVLndyaXRlX3NoaWZ0KDQsMCksVX1mdW5jdGlvbiBjKEEsVSxPKXt2YXIgST17czp7YzowLHI6MH0sZTp7YzowLHI6MH19O3JldHVybiBVPT04JiZPLnFwcm8/KEkucy5jPUEucmVhZF9zaGlmdCgxKSxBLmwrKyxJLnMucj1BLnJlYWRfc2hpZnQoMiksSS5lLmM9QS5yZWFkX3NoaWZ0KDEpLEEubCsrLEkuZS5yPUEucmVhZF9zaGlmdCgyKSxJKTooSS5zLmM9QS5yZWFkX3NoaWZ0KDIpLEkucy5yPUEucmVhZF9zaGlmdCgyKSxVPT0xMiYmTy5xcHJvJiYoQS5sKz0yKSxJLmUuYz1BLnJlYWRfc2hpZnQoMiksSS5lLnI9QS5yZWFkX3NoaWZ0KDIpLFU9PTEyJiZPLnFwcm8mJihBLmwrPTIpLEkucy5jPT02NTUzNSYmKEkucy5jPUkuZS5jPUkucy5yPUkuZS5yPTApLEkpfWZ1bmN0aW9uIG8oQSl7dmFyIFU9ZnIoOCk7cmV0dXJuIFUud3JpdGVfc2hpZnQoMixBLnMuYyksVS53cml0ZV9zaGlmdCgyLEEucy5yKSxVLndyaXRlX3NoaWZ0KDIsQS5lLmMpLFUud3JpdGVfc2hpZnQoMixBLmUuciksVX1mdW5jdGlvbiBsKEEsVSxPKXt2YXIgST1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDAsMF07cmV0dXJuIE8ucXBybyYmTy52ZXJzIT0yMDc2OD8oSVswXS5jPUEucmVhZF9zaGlmdCgxKSxJWzNdPUEucmVhZF9zaGlmdCgxKSxJWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLEEubCs9Mik6Ty53b3Jrcz8oSVswXS5jPUEucmVhZF9zaGlmdCgyKSxJWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLElbMl09QS5yZWFkX3NoaWZ0KDIpKTooSVsyXT1BLnJlYWRfc2hpZnQoMSksSVswXS5jPUEucmVhZF9zaGlmdCgyKSxJWzBdLnI9QS5yZWFkX3NoaWZ0KDIpKSxJfWZ1bmN0aW9uIHUoQSl7cmV0dXJuIEEueiYmWnIoQS56KT8yNDB8KHIuaW5kZXhPZihBLnopKzF8fDIpOjI1NX1mdW5jdGlvbiB4KEEsVSxPKXt2YXIgST1BLmwrVSx6PWwoQSxVLE8pO2lmKHpbMV0udD0icyIsKE8udmVycyY2NTUzNCk9PTIwNzY4KXtBLmwrKzt2YXIgcGU9QS5yZWFkX3NoaWZ0KDEpO3JldHVybiB6WzFdLnY9QS5yZWFkX3NoaWZ0KHBlLCJ1dGY4Iiksen1yZXR1cm4gTy5xcHJvJiZBLmwrKyx6WzFdLnY9QS5yZWFkX3NoaWZ0KEktQS5sLCJjc3RyIiksen1mdW5jdGlvbiBoKEEsVSxPKXt2YXIgST1mcig3K08ubGVuZ3RoKTtJLndyaXRlX3NoaWZ0KDEsMjU1KSxJLndyaXRlX3NoaWZ0KDIsVSksSS53cml0ZV9zaGlmdCgyLEEpLEkud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciB6PTA7ejxJLmxlbmd0aDsrK3ope3ZhciBwZT1PLmNoYXJDb2RlQXQoeik7SS53cml0ZV9zaGlmdCgxLHBlPj0xMjg/OTU6cGUpfXJldHVybiBJLndyaXRlX3NoaWZ0KDEsMCksSX1mdW5jdGlvbiBnKEEsVSxPKXt2YXIgST1BLmwrVSx6PWwoQSxVLE8pO2lmKHpbMV0udD0icyIsTy52ZXJzPT0yMDc2OCl7dmFyIHBlPUEucmVhZF9zaGlmdCgxKTtyZXR1cm4gelsxXS52PUEucmVhZF9zaGlmdChwZSwidXRmOCIpLHp9cmV0dXJuIHpbMV0udj1BLnJlYWRfc2hpZnQoSS1BLmwsImNzdHIiKSx6fWZ1bmN0aW9uIG0oQSxVLE8pe3ZhciBJPWwoQSxVLE8pO3JldHVybiBJWzFdLnY9QS5yZWFkX3NoaWZ0KDIsImkiKSxJfWZ1bmN0aW9uIGQoQSxVLE8pe3ZhciBJPWZyKDcpO3JldHVybiBJLndyaXRlX3NoaWZ0KDEsdShPKSksSS53cml0ZV9zaGlmdCgyLFUpLEkud3JpdGVfc2hpZnQoMixBKSxJLndyaXRlX3NoaWZ0KDIsTy52LCJpIiksSX1mdW5jdGlvbiBwKEEsVSxPKXt2YXIgST1sKEEsVSxPKTtyZXR1cm4gSVsxXS52PUEucmVhZF9zaGlmdCg4LCJmIiksSX1mdW5jdGlvbiB3KEEsVSxPKXt2YXIgST1mcigxMyk7cmV0dXJuIEkud3JpdGVfc2hpZnQoMSx1KE8pKSxJLndyaXRlX3NoaWZ0KDIsVSksSS53cml0ZV9zaGlmdCgyLEEpLEkud3JpdGVfc2hpZnQoOCxPLnYsImYiKSxJfWZ1bmN0aW9uIF8oQSxVLE8pe3ZhciBJPUEubCtVLHo9bChBLFUsTyk7aWYoelsxXS52PUEucmVhZF9zaGlmdCg4LCJmIiksTy5xcHJvKUEubD1JO2Vsc2V7dmFyIHBlPUEucmVhZF9zaGlmdCgyKTtiKEEuc2xpY2UoQS5sLEEubCtwZSkseiksQS5sKz1wZX1yZXR1cm4gen1mdW5jdGlvbiB5KEEsVSxPKXt2YXIgST1VJjMyNzY4O3JldHVybiBVJj0tMzI3NjksVT0oST9BOjApKyhVPj04MTkyP1UtMTYzODQ6VSksKEk/IiI6IiQiKSsoTz9IZShVKTpHZShVKSl9dmFyIFI9ezMxOlsiTkEiLDBdLDMzOlsiQUJTIiwxXSwzNDpbIlRSVU5DIiwxXSwzNTpbIlNRUlQiLDFdLDM2OlsiTE9HIiwxXSwzNzpbIkxOIiwxXSwzODpbIlBJIiwwXSwzOTpbIlNJTiIsMV0sNDA6WyJDT1MiLDFdLDQxOlsiVEFOIiwxXSw0MjpbIkFUQU4yIiwyXSw0MzpbIkFUQU4iLDFdLDQ0OlsiQVNJTiIsMV0sNDU6WyJBQ09TIiwxXSw0NjpbIkVYUCIsMV0sNDc6WyJNT0QiLDJdLDQ5OlsiSVNOQSIsMV0sNTA6WyJJU0VSUiIsMV0sNTE6WyJGQUxTRSIsMF0sNTI6WyJUUlVFIiwwXSw1MzpbIlJBTkQiLDBdLDU0OlsiREFURSIsM10sNjM6WyJST1VORCIsMl0sNjQ6WyJUSU1FIiwzXSw2ODpbIklTTlVNQkVSIiwxXSw2OTpbIklTVEVYVCIsMV0sNzA6WyJMRU4iLDFdLDcxOlsiVkFMVUUiLDFdLDczOlsiTUlEIiwzXSw3NDpbIkNIQVIiLDFdLDgwOlsiU1VNIiw2OV0sODE6WyJBVkVSQUdFQSIsNjldLDgyOlsiQ09VTlRBIiw2OV0sODM6WyJNSU5BIiw2OV0sODQ6WyJNQVhBIiw2OV0sMTAyOlsiVVBQRVIiLDFdLDEwMzpbIkxPV0VSIiwxXSwxMDc6WyJQUk9QRVIiLDFdLDEwOTpbIlRSSU0iLDFdLDExMTpbIlQiLDFdfSxQPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiKyIsIi0iLCIqIiwiLyIsIl4iLCI9IiwiPD4iLCI8PSIsIj49IiwiPCIsIj4iLCIiLCIiLCIiLCIiLCImIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl07ZnVuY3Rpb24gYihBLFUpe3NyKEEsMCk7Zm9yKHZhciBPPVtdLEk9MCx6PSIiLHBlPSIiLEo9IiIscmU9IiI7QS5sPEEubGVuZ3RoOyl7dmFyIGVlPUFbQS5sKytdO3N3aXRjaChlZSl7Y2FzZSAwOk8ucHVzaChBLnJlYWRfc2hpZnQoOCwiZiIpKTticmVhaztjYXNlIDE6cGU9eShVWzBdLmMsQS5yZWFkX3NoaWZ0KDIpLCEwKSx6PXkoVVswXS5yLEEucmVhZF9zaGlmdCgyKSwhMSksTy5wdXNoKHBlK3opO2JyZWFrO2Nhc2UgMjp7dmFyIGtlPXkoVVswXS5jLEEucmVhZF9zaGlmdCgyKSwhMCksaGU9eShVWzBdLnIsQS5yZWFkX3NoaWZ0KDIpLCExKTtwZT15KFVbMF0uYyxBLnJlYWRfc2hpZnQoMiksITApLHo9eShVWzBdLnIsQS5yZWFkX3NoaWZ0KDIpLCExKSxPLnB1c2goa2UraGUrIjoiK3BlK3opfWJyZWFrO2Nhc2UgMzppZihBLmw8QS5sZW5ndGgpe2NvbnNvbGUuZXJyb3IoIldLMSBwcmVtYXR1cmUgZm9ybXVsYSBlbmQiKTtyZXR1cm59YnJlYWs7Y2FzZSA0Ok8ucHVzaCgiKCIrTy5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgNTpPLnB1c2goQS5yZWFkX3NoaWZ0KDIpKTticmVhaztjYXNlIDY6e2Zvcih2YXIgeGU9IiI7ZWU9QVtBLmwrK107KXhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVlKTtPLnB1c2goJyInK3hlLnJlcGxhY2UoLyIvZywnIiInKSsnIicpfWJyZWFrO2Nhc2UgODpPLnB1c2goIi0iK08ucG9wKCkpO2JyZWFrO2Nhc2UgMjM6Ty5wdXNoKCIrIitPLnBvcCgpKTticmVhaztjYXNlIDIyOk8ucHVzaCgiTk9UKCIrTy5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgMjA6Y2FzZSAyMTpyZT1PLnBvcCgpLEo9Ty5wb3AoKSxPLnB1c2goWyJBTkQiLCJPUiJdW2VlLTIwXSsiKCIrSisiLCIrcmUrIikiKTticmVhaztkZWZhdWx0OmlmKGVlPDMyJiZQW2VlXSlyZT1PLnBvcCgpLEo9Ty5wb3AoKSxPLnB1c2goSitQW2VlXStyZSk7ZWxzZSBpZihSW2VlXSl7aWYoST1SW2VlXVsxXSxJPT02OSYmKEk9QVtBLmwrK10pLEk+Ty5sZW5ndGgpe2NvbnNvbGUuZXJyb3IoIldLMSBiYWQgZm9ybXVsYSBwYXJzZSAweCIrZWUudG9TdHJpbmcoMTYpKyI6fCIrTy5qb2luKCJ8IikrInwiKTtyZXR1cm59dmFyIFhlPU8uc2xpY2UoLUkpO08ubGVuZ3RoLT1JLE8ucHVzaChSW2VlXVswXSsiKCIrWGUuam9pbigiLCIpKyIpIil9ZWxzZSByZXR1cm4gZWU8PTc/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MjQ/Y29uc29sZS5lcnJvcigiV0sxIHVuc3VwcG9ydGVkIG9wICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MzA/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MTE1P2NvbnNvbGUuZXJyb3IoIldLMSB1bnN1cHBvcnRlZCBmdW5jdGlvbiBvcGNvZGUgIitlZS50b1N0cmluZygxNikpOmNvbnNvbGUuZXJyb3IoIldLMSB1bnJlY29nbml6ZWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKX19Ty5sZW5ndGg9PTE/VVsxXS5mPSIiK09bMF06Y29uc29sZS5lcnJvcigiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIHwiK08uam9pbigifCIpKyJ8Iil9ZnVuY3Rpb24gTihBKXt2YXIgVT1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDBdO3JldHVybiBVWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLFVbM109QVtBLmwrK10sVVswXS5jPUFbQS5sKytdLFV9ZnVuY3Rpb24gRChBLFUpe3ZhciBPPU4oQSk7cmV0dXJuIE9bMV0udD0icyIsT1sxXS52PUEucmVhZF9zaGlmdChVLTQsImNzdHIiKSxPfWZ1bmN0aW9uIEIoQSxVLE8sSSl7dmFyIHo9ZnIoNitJLmxlbmd0aCk7ei53cml0ZV9zaGlmdCgyLEEpLHoud3JpdGVfc2hpZnQoMSxPKSx6LndyaXRlX3NoaWZ0KDEsVSksei53cml0ZV9zaGlmdCgxLDM5KTtmb3IodmFyIHBlPTA7cGU8SS5sZW5ndGg7KytwZSl7dmFyIEo9SS5jaGFyQ29kZUF0KHBlKTt6LndyaXRlX3NoaWZ0KDEsSj49MTI4Pzk1OkopfXJldHVybiB6LndyaXRlX3NoaWZ0KDEsMCksen1mdW5jdGlvbiBMKEEsVSl7dmFyIE89TihBKTtPWzFdLnY9QS5yZWFkX3NoaWZ0KDIpO3ZhciBJPU9bMV0udj4+MTtpZihPWzFdLnYmMSlzd2l0Y2goSSY3KXtjYXNlIDA6ST0oST4+MykqNWUzO2JyZWFrO2Nhc2UgMTpJPShJPj4zKSo1MDA7YnJlYWs7Y2FzZSAyOkk9KEk+PjMpLzIwO2JyZWFrO2Nhc2UgMzpJPShJPj4zKS8yMDA7YnJlYWs7Y2FzZSA0Okk9KEk+PjMpLzJlMzticmVhaztjYXNlIDU6ST0oST4+MykvMmU0O2JyZWFrO2Nhc2UgNjpJPShJPj4zKS8xNjticmVhaztjYXNlIDc6ST0oST4+MykvNjQ7YnJlYWt9cmV0dXJuIE9bMV0udj1JLE99ZnVuY3Rpb24gRyhBLFUpe3ZhciBPPU4oQSksST1BLnJlYWRfc2hpZnQoNCksej1BLnJlYWRfc2hpZnQoNCkscGU9QS5yZWFkX3NoaWZ0KDIpO2lmKHBlPT02NTUzNSlyZXR1cm4gST09PTAmJno9PT0zMjIxMjI1NDcyPyhPWzFdLnQ9ImUiLE9bMV0udj0xNSk6ST09PTAmJno9PT0zNDg5NjYwOTI4PyhPWzFdLnQ9ImUiLE9bMV0udj00Mik6T1sxXS52PTAsTzt2YXIgSj1wZSYzMjc2ODtyZXR1cm4gcGU9KHBlJjMyNzY3KS0xNjQ0NixPWzFdLnY9KDEtSioyKSooeipNYXRoLnBvdygyLHBlKzMyKStJKk1hdGgucG93KDIscGUpKSxPfWZ1bmN0aW9uIGllKEEsVSxPLEkpe3ZhciB6PWZyKDE0KTtpZih6LndyaXRlX3NoaWZ0KDIsQSksei53cml0ZV9zaGlmdCgxLE8pLHoud3JpdGVfc2hpZnQoMSxVKSxJPT0wKXJldHVybiB6LndyaXRlX3NoaWZ0KDQsMCksei53cml0ZV9zaGlmdCg0LDApLHoud3JpdGVfc2hpZnQoMiw2NTUzNSksejt2YXIgcGU9MCxKPTAscmU9MCxlZT0wO3JldHVybiBJPDAmJihwZT0xLEk9LUkpLEo9TWF0aC5sb2cyKEkpfDAsSS89TWF0aC5wb3coMixKLTMxKSxlZT1JPj4+MCxlZSYyMTQ3NDgzNjQ4fHwoSS89MiwrK0osZWU9ST4+PjApLEktPWVlLGVlfD0yMTQ3NDgzNjQ4LGVlPj4+PTAsSSo9TWF0aC5wb3coMiwzMikscmU9ST4+PjAsei53cml0ZV9zaGlmdCg0LHJlKSx6LndyaXRlX3NoaWZ0KDQsZWUpLEorPTE2MzgzKyhwZT8zMjc2ODowKSx6LndyaXRlX3NoaWZ0KDIsSiksen1mdW5jdGlvbiBuZShBLFUpe3ZhciBPPUcoQSk7cmV0dXJuIEEubCs9VS0xNCxPfWZ1bmN0aW9uIHEoQSxVKXt2YXIgTz1OKEEpLEk9QS5yZWFkX3NoaWZ0KDQpO3JldHVybiBPWzFdLnY9ST4+NixPfWZ1bmN0aW9uIGxlKEEsVSl7dmFyIE89TihBKSxJPUEucmVhZF9zaGlmdCg4LCJmIik7cmV0dXJuIE9bMV0udj1JLE99ZnVuY3Rpb24gUShBLFUpe3ZhciBPPWxlKEEpO3JldHVybiBBLmwrPVUtMTIsT31mdW5jdGlvbiBnZShBLFUpe3JldHVybiBBW0EubCtVLTFdPT0wP0EucmVhZF9zaGlmdChVLCJjc3RyIik6IiJ9ZnVuY3Rpb24gdWUoQSxVKXt2YXIgTz1BW0EubCsrXTtPPlUtMSYmKE89VS0xKTtmb3IodmFyIEk9IiI7SS5sZW5ndGg8TzspSSs9U3RyaW5nLmZyb21DaGFyQ29kZShBW0EubCsrXSk7cmV0dXJuIEl9ZnVuY3Rpb24gaihBLFUsTyl7aWYoISghTy5xcHJvfHxVPDIxKSl7dmFyIEk9QS5yZWFkX3NoaWZ0KDEpO0EubCs9MTcsQS5sKz0xLEEubCs9Mjt2YXIgej1BLnJlYWRfc2hpZnQoVS0yMSwiY3N0ciIpO3JldHVybltJLHpdfX1mdW5jdGlvbiB5ZShBLFUpe2Zvcih2YXIgTz17fSxJPUEubCtVO0EubDxJOyl7dmFyIHo9QS5yZWFkX3NoaWZ0KDIpO2lmKHo9PTE0ZTMpe2ZvcihPW3pdPVswLCIiXSxPW3pdWzBdPUEucmVhZF9zaGlmdCgyKTtBW0EubF07KU9bel1bMV0rPVN0cmluZy5mcm9tQ2hhckNvZGUoQVtBLmxdKSxBLmwrKztBLmwrK319cmV0dXJuIE99ZnVuY3Rpb24gYmUoQSxVKXt2YXIgTz1mcig1K0EubGVuZ3RoKTtPLndyaXRlX3NoaWZ0KDIsMTRlMyksTy53cml0ZV9zaGlmdCgyLFUpO2Zvcih2YXIgST0wO0k8QS5sZW5ndGg7KytJKXt2YXIgej1BLmNoYXJDb2RlQXQoSSk7T1tPLmwrK109ej4xMjc/OTU6en1yZXR1cm4gT1tPLmwrK109MCxPfXZhciBtZT17MDp7bjoiQk9GIixmOmVyfSwxOntuOiJFT0YifSwyOntuOiJDQUxDTU9ERSJ9LDM6e246IkNBTENPUkRFUiJ9LDQ6e246IlNQTElUIn0sNTp7bjoiU1lOQyJ9LDY6e246IlJBTkdFIixmOmN9LDc6e246IldJTkRPVzEifSw4OntuOiJDT0xXMSJ9LDk6e246IldJTlRXTyJ9LDEwOntuOiJDT0xXMiJ9LDExOntuOiJOQU1FIn0sMTI6e246IkJMQU5LIn0sMTM6e246IklOVEVHRVIiLGY6bX0sMTQ6e246Ik5VTUJFUiIsZjpwfSwxNTp7bjoiTEFCRUwiLGY6eH0sMTY6e246IkZPUk1VTEEiLGY6X30sMjQ6e246IlRBQkxFIn0sMjU6e246Ik9SQU5HRSJ9LDI2OntuOiJQUkFOR0UifSwyNzp7bjoiU1JBTkdFIn0sMjg6e246IkZSQU5HRSJ9LDI5OntuOiJLUkFOR0UxIn0sMzI6e246IkhSQU5HRSJ9LDM1OntuOiJLUkFOR0UyIn0sMzY6e246IlBST1RFQyJ9LDM3OntuOiJGT09URVIifSwzODp7bjoiSEVBREVSIn0sMzk6e246IlNFVFVQIn0sNDA6e246Ik1BUkdJTlMifSw0MTp7bjoiTEFCRUxGTVQifSw0Mjp7bjoiVElUTEVTIn0sNDM6e246IlNIRUVUSlMifSw0NTp7bjoiR1JBUEgifSw0Njp7bjoiTkdSQVBIIn0sNDc6e246IkNBTENDT1VOVCJ9LDQ4OntuOiJVTkZPUk1BVFRFRCJ9LDQ5OntuOiJDVVJTT1JXMTIifSw1MDp7bjoiV0lORE9XIn0sNTE6e246IlNUUklORyIsZjpnfSw1NTp7bjoiUEFTU1dPUkQifSw1Njp7bjoiTE9DS0VEIn0sNjA6e246IlFVRVJZIn0sNjE6e246IlFVRVJZTkFNRSJ9LDYyOntuOiJQUklOVCJ9LDYzOntuOiJQUklOVE5BTUUifSw2NDp7bjoiR1JBUEgyIn0sNjU6e246IkdSQVBITkFNRSJ9LDY2OntuOiJaT09NIn0sNjc6e246IlNZTVNQTElUIn0sNjg6e246Ik5TUk9XUyJ9LDY5OntuOiJOU0NPTFMifSw3MDp7bjoiUlVMRVIifSw3MTp7bjoiTk5BTUUifSw3Mjp7bjoiQUNPTU0ifSw3Mzp7bjoiQU1BQ1JPIn0sNzQ6e246IlBBUlNFIn0sMTAyOntuOiJQUkFOR0VTPz8ifSwxMDM6e246IlJSQU5HRVM/PyJ9LDEwNDp7bjoiRk5BTUU/PyJ9LDEwNTp7bjoiTVJBTkdFUz8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpnZX0sMjIyOntuOiJTSEVFVE5BTUVMUCIsZjp1ZX0sMjU1OntuOiJCT0YiLGY6ZXJ9LDIxNTA2OntuOiJXS1NORiIsZjplcn0sNjU1MzU6e246IiJ9fSxaPXswOntuOiJCT0YifSwxOntuOiJFT0YifSwyOntuOiJQQVNTV09SRCJ9LDM6e246IkNBTENTRVQifSw0OntuOiJXSU5ET1dTRVQifSw1OntuOiJTSEVFVENFTExQVFIifSw2OntuOiJTSEVFVExBWU9VVCJ9LDc6e246IkNPTFVNTldJRFRIIn0sODp7bjoiSElEREVOQ09MVU1OIn0sOTp7bjoiVVNFUlJBTkdFIn0sMTA6e246IlNZU1RFTVJBTkdFIn0sMTE6e246IlpFUk9GT1JDRSJ9LDEyOntuOiJTT1JUS0VZRElSIn0sMTM6e246IkZJTEVTRUFMIn0sMTQ6e246IkRBVEFGSUxMTlVNUyJ9LDE1OntuOiJQUklOVE1BSU4ifSwxNjp7bjoiUFJJTlRTVFJJTkcifSwxNzp7bjoiR1JBUEhNQUlOIn0sMTg6e246IkdSQVBIU1RSSU5HIn0sMTk6e246Ij8/In0sMjA6e246IkVSUkNFTEwifSwyMTp7bjoiTkFDRUxMIn0sMjI6e246IkxBQkVMMTYiLGY6RH0sMjM6e246Ik5VTUJFUjE3IixmOkd9LDI0OntuOiJOVU1CRVIxOCIsZjpMfSwyNTp7bjoiRk9STVVMQTE5IixmOm5lfSwyNjp7bjoiRk9STVVMQTFBIn0sMjc6e246IlhGT1JNQVQiLGY6eWV9LDI4OntuOiJEVExBQkVMTUlTQyJ9LDI5OntuOiJEVExBQkVMQ0VMTCJ9LDMwOntuOiJHUkFQSFdJTkRPVyJ9LDMxOntuOiJDUEEifSwzMjp7bjoiTFBMQVVUTyJ9LDMzOntuOiJRVUVSWSJ9LDM0OntuOiJISURERU5TSEVFVCJ9LDM1OntuOiI/PyJ9LDM3OntuOiJOVU1CRVIyNSIsZjpxfSwzODp7bjoiPz8ifSwzOTp7bjoiTlVNQkVSMjciLGY6bGV9LDQwOntuOiJGT1JNVUxBMjgiLGY6UX0sMTQyOntuOiI/PyJ9LDE0Nzp7bjoiPz8ifSwxNTA6e246Ij8/In0sMTUxOntuOiI/PyJ9LDE1Mjp7bjoiPz8ifSwxNTM6e246Ij8/In0sMTU0OntuOiI/PyJ9LDE1NTp7bjoiPz8ifSwxNTY6e246Ij8/In0sMTYzOntuOiI/PyJ9LDE3NDp7bjoiPz8ifSwxNzU6e246Ij8/In0sMTc2OntuOiI/PyJ9LDE3Nzp7bjoiPz8ifSwxODQ6e246Ij8/In0sMTg1OntuOiI/PyJ9LDE4Njp7bjoiPz8ifSwxODc6e246Ij8/In0sMTg4OntuOiI/PyJ9LDE5NTp7bjoiPz8ifSwyMDE6e246Ij8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpnZX0sMjA1OntuOiI/PyJ9LDIwNjp7bjoiPz8ifSwyMDc6e246Ij8/In0sMjA4OntuOiI/PyJ9LDI1Njp7bjoiPz8ifSwyNTk6e246Ij8/In0sMjYwOntuOiI/PyJ9LDI2MTp7bjoiPz8ifSwyNjI6e246Ij8/In0sMjYzOntuOiI/PyJ9LDI2NTp7bjoiPz8ifSwyNjY6e246Ij8/In0sMjY3OntuOiI/PyJ9LDI2ODp7bjoiPz8ifSwyNzA6e246Ij8/In0sMjcxOntuOiI/PyJ9LDM4NDp7bjoiPz8ifSwzODk6e246Ij8/In0sMzkwOntuOiI/PyJ9LDM5Mzp7bjoiPz8ifSwzOTY6e246Ij8/In0sNTEyOntuOiI/PyJ9LDUxNDp7bjoiPz8ifSw1MTM6e246Ij8/In0sNTE2OntuOiI/PyJ9LDUxNzp7bjoiPz8ifSw2NDA6e246Ij8/In0sNjQxOntuOiI/PyJ9LDY0Mjp7bjoiPz8ifSw2NDM6e246Ij8/In0sNjQ0OntuOiI/PyJ9LDY0NTp7bjoiPz8ifSw2NDY6e246Ij8/In0sNjQ3OntuOiI/PyJ9LDY0ODp7bjoiPz8ifSw2NTg6e246Ij8/In0sNjU5OntuOiI/PyJ9LDY2MDp7bjoiPz8ifSw2NjE6e246Ij8/In0sNjYyOntuOiI/PyJ9LDY2NTp7bjoiPz8ifSw2NjY6e246Ij8/In0sNzY4OntuOiI/PyJ9LDc3Mjp7bjoiPz8ifSwxNTM3OntuOiJTSEVFVElORk9RUCIsZjpqfSwxNjAwOntuOiI/PyJ9LDE2MDI6e246Ij8/In0sMTc5Mzp7bjoiPz8ifSwxNzk0OntuOiI/PyJ9LDE3OTU6e246Ij8/In0sMTc5Njp7bjoiPz8ifSwxOTIwOntuOiI/PyJ9LDIwNDg6e246Ij8/In0sMjA0OTp7bjoiPz8ifSwyMDUyOntuOiI/PyJ9LDI2ODg6e246Ij8/In0sMTA5OTg6e246Ij8/In0sMTI4NDk6e246Ij8/In0sMjgyMzM6e246Ij8/In0sMjg0ODQ6e246Ij8/In0sNjU1MzU6e246IiJ9fSxPZT17NToiZGQtbW1tLXl5Iiw2OiJkZC1tbW0iLDc6Im1tbS15eSIsODoibW0vZGQveXkiLDEwOiJoaDptbTpzcyBBTS9QTSIsMTE6ImhoOm1tIEFNL1BNIiwxNDoiZGQtbW1tLXl5eXkiLDE1OiJtbW0teXl5eSIsMzQ6IjAuMDAiLDUwOiIwLjAwO1tSZWRdMC4wMCIsNjY6IjAuMDA7KDAuMDApIiw4MjoiMC4wMDtbUmVkXSgwLjAwKSIsMTYyOiciJCIjLCMjMC4wMDtcXCgiJCIjLCMjMC4wMFxcKScsMjg4OiIwJSIsMzA0OiIwRSswMCIsMzIwOiIjID8vPyJ9O2Z1bmN0aW9uIHdlKEEpe3ZhciBVPUEucmVhZF9zaGlmdCgyKSxPPUEucmVhZF9zaGlmdCgxKTtpZihPIT0wKXRocm93InVuc3VwcG9ydGVkIFFQVyBzdHJpbmcgdHlwZSAiK08udG9TdHJpbmcoMTYpO3JldHVybiBBLnJlYWRfc2hpZnQoVSwic2Jjcy1jb250Iil9ZnVuY3Rpb24gQWUoQSxVKXtzcihBLDApO3ZhciBPPVV8fHt9LEk9e307Ty5kZW5zZSYmKElbIiFkYXRhIl09W10pO3ZhciB6PVtdLHBlPSIiLEo9e3M6e3I6LTEsYzotMX0sZTp7cjotMSxjOi0xfX0scmU9MCxlZT0wLGtlPTAsaGU9MCx4ZT17U2hlZXROYW1lczpbXSxTaGVldHM6e319LFhlPVtdO2U6Zm9yKDtBLmw8QS5sZW5ndGg7KXt2YXIgemU9QS5yZWFkX3NoaWZ0KDIpLGplPUEucmVhZF9zaGlmdCgyKSxkZT1BLnNsaWNlKEEubCxBLmwramUpO3N3aXRjaChzcihkZSwwKSx6ZSl7Y2FzZSAxOmlmKGRlLnJlYWRfc2hpZnQoNCkhPTk2MjAyMzUwNSl0aHJvdyJCYWQgUVBXOSBCT0YhIjticmVhaztjYXNlIDI6YnJlYWsgZTtjYXNlIDg6YnJlYWs7Y2FzZSAxMDpmb3IodmFyIFdlPWRlLnJlYWRfc2hpZnQoNCksZmU9KGRlLmxlbmd0aC1kZS5sKS9XZXwwLHNhPTA7c2E8V2U7KytzYSl7dmFyIGpyPWRlLmwrZmUsWWU9e307ZGUubCs9MixZZS5udW1GbXRJZD1kZS5yZWFkX3NoaWZ0KDIpLE9lW1llLm51bUZtdElkXSYmKFllLno9T2VbWWUubnVtRm10SWRdKSxkZS5sPWpyLFhlLnB1c2goWWUpfWJyZWFrO2Nhc2UgMTAyNTpicmVhaztjYXNlIDEwMjY6YnJlYWs7Y2FzZSAxMDMxOmZvcihkZS5sKz0xMjtkZS5sPGRlLmxlbmd0aDspcmU9ZGUucmVhZF9zaGlmdCgyKSxlZT1kZS5yZWFkX3NoaWZ0KDEpLHoucHVzaChkZS5yZWFkX3NoaWZ0KHJlLCJjc3RyIikpO2JyZWFrO2Nhc2UgMTAzMjpicmVhaztjYXNlIDE1Mzc6e3ZhciBSYT1kZS5yZWFkX3NoaWZ0KDIpO0k9e30sTy5kZW5zZSYmKElbIiFkYXRhIl09W10pLEoucy5jPWRlLnJlYWRfc2hpZnQoMiksSi5lLmM9ZGUucmVhZF9zaGlmdCgyKSxKLnMucj1kZS5yZWFkX3NoaWZ0KDQpLEouZS5yPWRlLnJlYWRfc2hpZnQoNCksZGUubCs9NCxkZS5sKzI8ZGUubGVuZ3RoJiYocmU9ZGUucmVhZF9zaGlmdCgyKSxlZT1kZS5yZWFkX3NoaWZ0KDEpLHBlPXJlPT0wPyIiOmRlLnJlYWRfc2hpZnQocmUsImNzdHIiKSkscGV8fChwZT1IZShSYSkpfWJyZWFrO2Nhc2UgMTUzODp7aWYoSi5zLmM+MjU1fHxKLnMucj45OTk5OTkpYnJlYWs7Si5lLmM8Si5zLmMmJihKLmUuYz1KLnMuYyksSi5lLnI8Si5zLnImJihKLmUucj1KLnMuciksSVsiIXJlZiJdPURlKEopLEp0KHhlLEkscGUpfWJyZWFrO2Nhc2UgMjU2MTprZT1kZS5yZWFkX3NoaWZ0KDIpLEouZS5jPGtlJiYoSi5lLmM9a2UpLEoucy5jPmtlJiYoSi5zLmM9a2UpLGhlPWRlLnJlYWRfc2hpZnQoNCksSi5zLnI+aGUmJihKLnMucj1oZSksaGU9ZGUucmVhZF9zaGlmdCg0KSxKLmUucjxoZSYmKEouZS5yPWhlKTticmVhaztjYXNlIDMwNzM6e2hlPWRlLnJlYWRfc2hpZnQoNCkscmU9ZGUucmVhZF9zaGlmdCg0KSxKLnMucj5oZSYmKEoucy5yPWhlKSxKLmUucjxoZStyZS0xJiYoSi5lLnI9aGUrcmUtMSk7Zm9yKHZhciBPYT1IZShrZSk7ZGUubDxkZS5sZW5ndGg7KXt2YXIgRWU9e3Q6InoifSxycj1kZS5yZWFkX3NoaWZ0KDEpLEZyPS0xO3JyJjEyOCYmKEZyPWRlLnJlYWRfc2hpZnQoMikpO3ZhciBGYT1yciY2ND9kZS5yZWFkX3NoaWZ0KDIpLTE6MDtzd2l0Y2gocnImMzEpe2Nhc2UgMDpicmVhaztjYXNlIDE6YnJlYWs7Y2FzZSAyOkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoMil9O2JyZWFrO2Nhc2UgMzpFZT17dDoibiIsdjpkZS5yZWFkX3NoaWZ0KDIsImkiKX07YnJlYWs7Y2FzZSA0OkVlPXt0OiJuIix2OmQwKGRlKX07YnJlYWs7Y2FzZSA1OkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoOCwiZiIpfTticmVhaztjYXNlIDc6RWU9e3Q6InMiLHY6eltlZT1kZS5yZWFkX3NoaWZ0KDQpLTFdfTticmVhaztjYXNlIDg6RWU9e3Q6Im4iLHY6ZGUucmVhZF9zaGlmdCg4LCJmIil9LGRlLmwrPTIsZGUubCs9NCxpc05hTihFZS52KSYmKEVlPXt0OiJlIix2OjE1fSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnJlY29nbml6ZWQgUVBXIGNlbGwgdHlwZSAiKyhyciYzMSl9RnIhPS0xJiYoWGVbRnItMV18fHt9KS56JiYoRWUuej1YZVtGci0xXS56KTt2YXIgQz0wO2lmKHJyJjMyKXN3aXRjaChyciYzMSl7Y2FzZSAyOkM9ZGUucmVhZF9zaGlmdCgyKTticmVhaztjYXNlIDM6Qz1kZS5yZWFkX3NoaWZ0KDIsImkiKTticmVhaztjYXNlIDc6Qz1kZS5yZWFkX3NoaWZ0KDIpO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5zdXBwb3J0ZWQgZGVsdGEgZm9yIFFQVyBjZWxsIHR5cGUgIisocnImMzEpfWlmKCEoIU8uc2hlZXRTdHVicyYmRWUudD09InoiKSl7dmFyIEJyPVVlKEVlKTtFZS50PT0ibiImJkVlLnomJlpyKEVlLnopJiZPLmNlbGxEYXRlcyYmKEJyLnY9U2EoRWUudiksQnIudD10eXBlb2YgQnIudj09Im51bWJlciI/Im4iOiJkIiksSVsiIWRhdGEiXSE9bnVsbD8oSVsiIWRhdGEiXVtoZV18fChJWyIhZGF0YSJdW2hlXT1bXSksSVsiIWRhdGEiXVtoZV1ba2VdPUJyKTpJW09hK0dlKGhlKV09QnJ9Zm9yKCsraGUsLS1yZTtGYS0tID4wJiZyZT49MDspe2lmKHJyJjMyKXN3aXRjaChyciYzMSl7Y2FzZSAyOkVlPXt0OiJuIix2OkVlLnYrQyY2NTUzNX07YnJlYWs7Y2FzZSAzOkVlPXt0OiJuIix2OkVlLnYrQyY2NTUzNX0sRWUudj4zMjc2NyYmKEVlLnYtPTY1NTM2KTticmVhaztjYXNlIDc6RWU9e3Q6InMiLHY6eltlZT1lZStDPj4+MF19O2JyZWFrO2RlZmF1bHQ6dGhyb3ciQ2Fubm90IGFwcGx5IGRlbHRhIGZvciBRUFcgY2VsbCB0eXBlICIrKHJyJjMxKX1lbHNlIHN3aXRjaChyciYzMSl7Y2FzZSAxOkVlPXt0OiJ6In07YnJlYWs7Y2FzZSAyOkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoMil9O2JyZWFrO2Nhc2UgNzpFZT17dDoicyIsdjp6W2VlPWRlLnJlYWRfc2hpZnQoNCktMV19O2JyZWFrO2RlZmF1bHQ6dGhyb3ciQ2Fubm90IGFwcGx5IHJlcGVhdCBmb3IgUVBXIGNlbGwgdHlwZSAiKyhyciYzMSl9IU8uc2hlZXRTdHVicyYmRWUudD09InoifHwoSVsiIWRhdGEiXSE9bnVsbD8oSVsiIWRhdGEiXVtoZV18fChJWyIhZGF0YSJdW2hlXT1bXSksSVsiIWRhdGEiXVtoZV1ba2VdPUVlKTpJW09hK0dlKGhlKV09RWUpLCsraGUsLS1yZX19fWJyZWFrO2Nhc2UgMzA3NDp7a2U9ZGUucmVhZF9zaGlmdCgyKSxoZT1kZS5yZWFkX3NoaWZ0KDQpO3ZhciBtdD13ZShkZSk7SVsiIWRhdGEiXSE9bnVsbD8oSVsiIWRhdGEiXVtoZV18fChJWyIhZGF0YSJdW2hlXT1bXSksSVsiIWRhdGEiXVtoZV1ba2VdPXt0OiJzIix2Om10fSk6SVtIZShrZSkrR2UoaGUpXT17dDoicyIsdjptdH19YnJlYWt9QS5sKz1qZX1yZXR1cm4geGV9cmV0dXJue3NoZWV0X3RvX3drMTpuLGJvb2tfdG9fd2szOmksdG9fd29ya2Jvb2s6YX19KCk7ZnVuY3Rpb24gTXUoZSl7dmFyIGE9e30scj1lLm1hdGNoKG5yKSx0PTAsbj0hMTtpZihyKWZvcig7dCE9ci5sZW5ndGg7Kyt0KXt2YXIgaT1vZShyW3RdKTtzd2l0Y2goaVswXS5yZXBsYWNlKC88XHcqOi9nLCI8Iikpe2Nhc2UiPGNvbmRlbnNlIjpicmVhaztjYXNlIjxleHRlbmQiOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHNoYWRvdz4iOmNhc2UiPHNoYWRvdy8+IjphLnNoYWRvdz0xO2JyZWFrO2Nhc2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjaGFyc2V0IjppZihpLnZhbD09IjEiKWJyZWFrO2EuY3A9VjBbcGFyc2VJbnQoaS52YWwsMTApXTticmVhaztjYXNlIjxvdXRsaW5lIjppZighaS52YWwpYnJlYWs7Y2FzZSI8b3V0bGluZT4iOmNhc2UiPG91dGxpbmUvPiI6YS5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpicmVhaztjYXNlIjxyRm9udCI6YS5uYW1lPWkudmFsO2JyZWFrO2Nhc2UiPHN6IjphLnN6PWkudmFsO2JyZWFrO2Nhc2UiPHN0cmlrZSI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHN0cmlrZT4iOmNhc2UiPHN0cmlrZS8+IjphLnN0cmlrZT0xO2JyZWFrO2Nhc2UiPC9zdHJpa2U+IjpicmVhaztjYXNlIjx1IjppZighaS52YWwpYnJlYWs7c3dpdGNoKGkudmFsKXtjYXNlImRvdWJsZSI6YS51dmFsPSJkb3VibGUiO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6YS51dmFsPSJzaW5nbGUtYWNjb3VudGluZyI7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjphLnV2YWw9ImRvdWJsZS1hY2NvdW50aW5nIjticmVha31jYXNlIjx1PiI6Y2FzZSI8dS8+IjphLnU9MTticmVhaztjYXNlIjwvdT4iOmJyZWFrO2Nhc2UiPGIiOmlmKGkudmFsPT0iMCIpYnJlYWs7Y2FzZSI8Yj4iOmNhc2UiPGIvPiI6YS5iPTE7YnJlYWs7Y2FzZSI8L2I+IjpicmVhaztjYXNlIjxpIjppZihpLnZhbD09IjAiKWJyZWFrO2Nhc2UiPGk+IjpjYXNlIjxpLz4iOmEuaT0xO2JyZWFrO2Nhc2UiPC9pPiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmkucmdiJiYoYS5jb2xvcj1pLnJnYi5zbGljZSgyLDgpKTticmVhaztjYXNlIjxjb2xvcj4iOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPGZhbWlseSI6YS5mYW1pbHk9aS52YWw7YnJlYWs7Y2FzZSI8ZmFtaWx5PiI6Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOmEudmFsaWduPWkudmFsO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbj4iOmNhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpicmVhaztjYXNlIjxzY2hlbWU+IjpjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6bj0hMDticmVhaztjYXNlIjwvZXh0PiI6bj0hMTticmVhaztkZWZhdWx0OmlmKGlbMF0uY2hhckNvZGVBdCgxKSE9PTQ3JiYhbil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCByaWNoIGZvcm1hdCAiK2lbMF0pfX1yZXR1cm4gYX12YXIgUHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciBuPUxlKHQsInQiKTtpZighbilyZXR1cm57dDoicyIsdjoiIn07dmFyIGk9e3Q6InMiLHY6Q2UoblsxXSl9LGY9TGUodCwiclByIik7cmV0dXJuIGYmJihpLnM9TXUoZlsxXSkpLGl9dmFyIGE9LzwoPzpcdys6KT9yPi9nLHI9LzxcLyg/Olx3KzopP3I+LztyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZShhLCIiKS5zcGxpdChyKS5tYXAoZSkuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBpLnZ9KX19KCksTHU9ZnVuY3Rpb24oKXt2YXIgYT0vKFxyXG58XG4pL2c7ZnVuY3Rpb24gcihuLGksZil7dmFyIHM9W107bi51JiZzLnB1c2goInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIpLG4udXZhbCYmcy5wdXNoKCJ0ZXh0LXVuZGVybGluZS1zdHlsZToiK24udXZhbCsiOyIpLG4uc3omJnMucHVzaCgiZm9udC1zaXplOiIrbi5zeisicHQ7Iiksbi5vdXRsaW5lJiZzLnB1c2goInRleHQtZWZmZWN0OiBvdXRsaW5lOyIpLG4uc2hhZG93JiZzLnB1c2goInRleHQtc2hhZG93OiBhdXRvOyIpLGkucHVzaCgnPHNwYW4gc3R5bGU9Iicrcy5qb2luKCIiKSsnIj4nKSxuLmImJihpLnB1c2goIjxiPiIpLGYucHVzaCgiPC9iPiIpKSxuLmkmJihpLnB1c2goIjxpPiIpLGYucHVzaCgiPC9pPiIpKSxuLnN0cmlrZSYmKGkucHVzaCgiPHM+IiksZi5wdXNoKCI8L3M+IikpO3ZhciBjPW4udmFsaWdufHwiIjtyZXR1cm4gYz09InN1cGVyc2NyaXB0Inx8Yz09InN1cGVyIj9jPSJzdXAiOmM9PSJzdWJzY3JpcHQiJiYoYz0ic3ViIiksYyE9IiImJihpLnB1c2goIjwiK2MrIj4iKSxmLnB1c2goIjwvIitjKyI+IikpLGYucHVzaCgiPC9zcGFuPiIpLG59ZnVuY3Rpb24gdChuKXt2YXIgaT1bW10sbi52LFtdXTtyZXR1cm4gbi52PyhuLnMmJnIobi5zLGlbMF0saVsyXSksaVswXS5qb2luKCIiKStpWzFdLnJlcGxhY2UoYSwiPGJyLz4iKStpWzJdLmpvaW4oIiIpKToiIn1yZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGkubWFwKHQpLmpvaW4oIiIpfX0oKSxCdT0vPCg/Olx3KzopP3RcYltePD5dKj4oW148XSopPFwvKD86XHcrOik/dD4vZyxVdT0vPCg/Olx3KzopP3JcYltePD5dKj4vO2Z1bmN0aW9uIHVuKGUsYSl7dmFyIHI9YT9hLmNlbGxIVE1MOiEwLHQ9e307cmV0dXJuIGU/KGUubWF0Y2goL15ccyo8KD86XHcrOik/dFtePl0qPi8pPyh0LnQ9Q2UoVmUoZS5zbGljZShlLmluZGV4T2YoIj4iKSsxKS5zcGxpdCgvPFwvKD86XHcrOik/dD4vKVswXXx8IiIpLCEwKSx0LnI9VmUoZSksciYmKHQuaD14YSh0LnQpKSk6ZS5tYXRjaChVdSkmJih0LnI9VmUoZSksdC50PUNlKFZlKCgkYyhlLCJyUGgiKS5tYXRjaChCdSl8fFtdKS5qb2luKCIiKS5yZXBsYWNlKG5yLCIiKSksITApLHImJih0Lmg9THUoUHUodC5yKSkpKSx0KTp7dDoiIn19dmFyIEh1PS88KD86XHcrOik/KD86c2l8c3N0SXRlbSk+L2csV3U9LzxcLyg/Olx3KzopPyg/OnNpfHNzdEl0ZW0pPi87ZnVuY3Rpb24gVnUoZSxhKXt2YXIgcj1bXSx0PSIiO2lmKCFlKXJldHVybiByO3ZhciBuPUxlKGUsInNzdCIpO2lmKG4pe3Q9blsxXS5yZXBsYWNlKEh1LCIiKS5zcGxpdChXdSk7Zm9yKHZhciBpPTA7aSE9dC5sZW5ndGg7KytpKXt2YXIgZj11bih0W2ldLnRyaW0oKSxhKTtmIT1udWxsJiYocltyLmxlbmd0aF09Zil9bj1vZShuWzBdLnNsaWNlKDAsblswXS5pbmRleE9mKCI+IikpKSxyLkNvdW50PW4uY291bnQsci5VbmlxdWU9bi51bmlxdWVDb3VudH1yZXR1cm4gcn1mdW5jdGlvbiBHdShlKXtyZXR1cm5bZS5yZWFkX3NoaWZ0KDQpLGUucmVhZF9zaGlmdCg0KV19ZnVuY3Rpb24gWHUoZSxhKXt2YXIgcj1bXSx0PSExO3JldHVybiB2YShlLGZ1bmN0aW9uKGksZixzKXtzd2l0Y2gocyl7Y2FzZSAxNTk6ci5Db3VudD1pWzBdLHIuVW5pcXVlPWlbMV07YnJlYWs7Y2FzZSAxOTpyLnB1c2goaSk7YnJlYWs7Y2FzZSAxNjA6cmV0dXJuITA7Y2FzZSAzNTp0PSEwO2JyZWFrO2Nhc2UgMzY6dD0hMTticmVhaztkZWZhdWx0OmlmKGYuVCwhdHx8YS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrcy50b1N0cmluZygxNikpfX0pLHJ9ZnVuY3Rpb24gYnMoZSl7Zm9yKHZhciBhPVtdLHI9ZS5zcGxpdCgiIiksdD0wO3Q8ci5sZW5ndGg7Kyt0KWFbdF09clt0XS5jaGFyQ29kZUF0KDApO3JldHVybiBhfWZ1bmN0aW9uIG1hKGUsYSl7dmFyIHI9e307cmV0dXJuIHIuTWFqb3I9ZS5yZWFkX3NoaWZ0KDIpLHIuTWlub3I9ZS5yZWFkX3NoaWZ0KDIpLGE+PTQmJihlLmwrPWEtNCkscn1mdW5jdGlvbiB6dShlKXt2YXIgYT17fTtyZXR1cm4gYS5pZD1lLnJlYWRfc2hpZnQoMCwibHBwNCIpLGEuUj1tYShlLDQpLGEuVT1tYShlLDQpLGEuVz1tYShlLDQpLGF9ZnVuY3Rpb24gJHUoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUubCthLTQsdD17fSxuPWUucmVhZF9zaGlmdCg0KSxpPVtdO24tLSA+MDspaS5wdXNoKHt0OmUucmVhZF9zaGlmdCg0KSx2OmUucmVhZF9zaGlmdCgwLCJscHA0Iil9KTtpZih0Lm5hbWU9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSx0LmNvbXBzPWksZS5sIT1yKXRocm93IG5ldyBFcnJvcigiQmFkIERhdGFTcGFjZU1hcEVudHJ5OiAiK2UubCsiICE9ICIrcik7cmV0dXJuIHR9ZnVuY3Rpb24gS3UoZSl7dmFyIGE9W107ZS5sKz00O2Zvcih2YXIgcj1lLnJlYWRfc2hpZnQoNCk7ci0tID4wOylhLnB1c2goJHUoZSkpO3JldHVybiBhfWZ1bmN0aW9uIGp1KGUpe3ZhciBhPVtdO2UubCs9NDtmb3IodmFyIHI9ZS5yZWFkX3NoaWZ0KDQpO3ItLSA+MDspYS5wdXNoKGUucmVhZF9zaGlmdCgwLCJscHA0IikpO3JldHVybiBhfWZ1bmN0aW9uIFl1KGUpe3ZhciBhPXt9O3JldHVybiBlLnJlYWRfc2hpZnQoNCksZS5sKz00LGEuaWQ9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxhLm5hbWU9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxhLlI9bWEoZSw0KSxhLlU9bWEoZSw0KSxhLlc9bWEoZSw0KSxhfWZ1bmN0aW9uIEp1KGUpe3ZhciBhPVl1KGUpO2lmKGEuZW5hbWU9ZS5yZWFkX3NoaWZ0KDAsIjhscHA0IiksYS5ibGtzej1lLnJlYWRfc2hpZnQoNCksYS5jbW9kZT1lLnJlYWRfc2hpZnQoNCksZS5yZWFkX3NoaWZ0KDQpIT00KXRocm93IG5ldyBFcnJvcigiQmFkICFQcmltYXJ5IHJlY29yZCIpO3JldHVybiBhfWZ1bmN0aW9uIERzKGUsYSl7dmFyIHI9ZS5sK2EsdD17fTt0LkZsYWdzPWUucmVhZF9zaGlmdCg0KSY2MyxlLmwrPTQsdC5BbGdJRD1lLnJlYWRfc2hpZnQoNCk7dmFyIG49ITE7c3dpdGNoKHQuQWxnSUQpe2Nhc2UgMjYxMjY6Y2FzZSAyNjEyNzpjYXNlIDI2MTI4Om49dC5GbGFncz09MzY7YnJlYWs7Y2FzZSAyNjYyNTpuPXQuRmxhZ3M9PTQ7YnJlYWs7Y2FzZSAwOm49dC5GbGFncz09MTZ8fHQuRmxhZ3M9PTR8fHQuRmxhZ3M9PTM2O2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAiK3QuQWxnSUR9aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9uIEZsYWdzL0FsZ0lEIG1pc21hdGNoIik7cmV0dXJuIHQuQWxnSURIYXNoPWUucmVhZF9zaGlmdCg0KSx0LktleVNpemU9ZS5yZWFkX3NoaWZ0KDQpLHQuUHJvdmlkZXJUeXBlPWUucmVhZF9zaGlmdCg0KSxlLmwrPTgsdC5DU1BOYW1lPWUucmVhZF9zaGlmdChyLWUubD4+MSwidXRmMTZsZSIpLGUubD1yLHR9ZnVuY3Rpb24gSXMoZSxhKXt2YXIgcj17fSx0PWUubCthO3JldHVybiBlLmwrPTQsci5TYWx0PWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixyLlZlcmlmaWVyPWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixlLnJlYWRfc2hpZnQoNCksci5WZXJpZmllckhhc2g9ZS5zbGljZShlLmwsdCksZS5sPXQscn1mdW5jdGlvbiBadShlKXt2YXIgYT1tYShlKTtzd2l0Y2goYS5NaW5vcil7Y2FzZSAyOnJldHVyblthLk1pbm9yLHF1KGUpXTtjYXNlIDM6cmV0dXJuW2EuTWlub3IsUXUoKV07Y2FzZSA0OnJldHVyblthLk1pbm9yLGVoKGUpXX10aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIHVucmVjb2duaXplZCBWZXJzaW9uOiAiK2EuTWlub3IpfWZ1bmN0aW9uIHF1KGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KTtpZigoYSY2MykhPTM2KXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbkluZm8gbWlzbWF0Y2giKTt2YXIgcj1lLnJlYWRfc2hpZnQoNCksdD1EcyhlLHIpLG49SXMoZSxlLmxlbmd0aC1lLmwpO3JldHVybnt0OiJTdGQiLGg6dCx2Om59fWZ1bmN0aW9uIFF1KCl7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZSIpfWZ1bmN0aW9uIGVoKGUpe3ZhciBhPVsic2FsdFNpemUiLCJibG9ja1NpemUiLCJrZXlCaXRzIiwiaGFzaFNpemUiLCJjaXBoZXJBbGdvcml0aG0iLCJjaXBoZXJDaGFpbmluZyIsImhhc2hBbGdvcml0aG0iLCJzYWx0VmFsdWUiXTtlLmwrPTQ7dmFyIHI9ZS5yZWFkX3NoaWZ0KGUubGVuZ3RoLWUubCwidXRmOCIpLHQ9e307cmV0dXJuIHIucmVwbGFjZShucixmdW5jdGlvbihpKXt2YXIgZj1vZShpKTtzd2l0Y2goQXIoZlswXSkpe2Nhc2UiPD94bWwiOmJyZWFrO2Nhc2UiPGVuY3J5cHRpb24iOmNhc2UiPC9lbmNyeXB0aW9uPiI6YnJlYWs7Y2FzZSI8a2V5RGF0YSI6YS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3Rbc109ZltzXX0pO2JyZWFrO2Nhc2UiPGRhdGFJbnRlZ3JpdHkiOnQuZW5jcnlwdGVkSG1hY0tleT1mLmVuY3J5cHRlZEhtYWNLZXksdC5lbmNyeXB0ZWRIbWFjVmFsdWU9Zi5lbmNyeXB0ZWRIbWFjVmFsdWU7YnJlYWs7Y2FzZSI8a2V5RW5jcnlwdG9ycz4iOmNhc2UiPGtleUVuY3J5cHRvcnMiOnQuZW5jcz1bXTticmVhaztjYXNlIjwva2V5RW5jcnlwdG9ycz4iOmJyZWFrO2Nhc2UiPGtleUVuY3J5cHRvciI6dC51cmk9Zi51cmk7YnJlYWs7Y2FzZSI8L2tleUVuY3J5cHRvcj4iOmJyZWFrO2Nhc2UiPGVuY3J5cHRlZEtleSI6dC5lbmNzLnB1c2goZik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBmWzBdfX0pLHR9ZnVuY3Rpb24gcmgoZSxhKXt2YXIgcj17fSx0PXIuRW5jcnlwdGlvblZlcnNpb25JbmZvPW1hKGUsNCk7aWYoYS09NCx0Lk1pbm9yIT0yKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIG1pbm9yIHZlcnNpb24gY29kZTogIit0Lk1pbm9yKTtpZih0Lk1ham9yPjR8fHQuTWFqb3I8Mil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtYWpvciB2ZXJzaW9uIGNvZGU6ICIrdC5NYWpvcik7ci5GbGFncz1lLnJlYWRfc2hpZnQoNCksYS09NDt2YXIgbj1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIGEtPTQsci5FbmNyeXB0aW9uSGVhZGVyPURzKGUsbiksYS09bixyLkVuY3J5cHRpb25WZXJpZmllcj1JcyhlLGEpLHJ9ZnVuY3Rpb24gYWgoZSl7dmFyIGE9e30scj1hLkVuY3J5cHRpb25WZXJzaW9uSW5mbz1tYShlLDQpO2lmKHIuTWFqb3IhPTF8fHIuTWlub3IhPTEpdGhyb3cidW5yZWNvZ25pemVkIHZlcnNpb24gY29kZSAiK3IuTWFqb3IrIiA6ICIrci5NaW5vcjtyZXR1cm4gYS5TYWx0PWUucmVhZF9zaGlmdCgxNiksYS5FbmNyeXB0ZWRWZXJpZmllcj1lLnJlYWRfc2hpZnQoMTYpLGEuRW5jcnlwdGVkVmVyaWZpZXJIYXNoPWUucmVhZF9zaGlmdCgxNiksYX1mdW5jdGlvbiB0aChlKXt2YXIgYT0wLHIsdD1icyhlKSxuPXQubGVuZ3RoKzEsaSxmLHMsYyxvO2ZvcihyPUFhKG4pLHJbMF09dC5sZW5ndGgsaT0xO2khPW47KytpKXJbaV09dFtpLTFdO2ZvcihpPW4tMTtpPj0wOy0taSlmPXJbaV0scz1hJjE2Mzg0PzE6MCxjPWE8PDEmMzI3Njcsbz1zfGMsYT1vXmY7cmV0dXJuIGFeNTI4MTF9dmFyIFJzPWZ1bmN0aW9uKCl7dmFyIGU9WzE4NywyNTUsMjU1LDE4NiwyNTUsMjU1LDE4NSwxMjgsMCwxOTAsMTUsMCwxOTEsMTUsMF0sYT1bNTc4NDAsNzQzOSw1MjM4MCwzMzk4NCw0MzY0LDM2MDAsNjE5MDIsMTI2MDYsNjI1OCw1NzY1Nyw1NDI4NywzNDA0MSwxMDI1Miw0MzM3MCwyMDE2M10scj1bNDQ3OTYsMTk5MjksMzk4NTgsMTAwNTMsMjAxMDYsNDAyMTIsMTA3NjEsMzE1ODUsNjMxNzAsNjQ5MzMsNjAyNjcsNTA5MzUsNDAzOTksMTExOTksMTc3NjMsMzU1MjYsMTQ1MywyOTA2LDU4MTIsMTE2MjQsMjMyNDgsODg1LDE3NzAsMzU0MCw3MDgwLDE0MTYwLDI4MzIwLDU2NjQwLDU1MzY5LDQxMTM5LDIwODA3LDQxNjE0LDIxODIxLDQzNjQyLDE3NjIxLDI4NDg1LDU2OTcwLDQ0MzQxLDE5MDE5LDM4MDM4LDE0NjA1LDI5MjEwLDYwMTk1LDUwNzkxLDQwMTc1LDEwNzUxLDIxNTAyLDQzMDA0LDI0NTM3LDE4Mzg3LDM2Nzc0LDM5NDksNzg5OCwxNTc5NiwzMTU5Miw2MzE4NCw0NzIwMSwyNDgwMyw0OTYwNiwzNzgwNSwxNDIwMywyODQwNiw1NjgxMiwxNzgyNCwzNTY0OCwxNjk3LDMzOTQsNjc4OCwxMzU3NiwyNzE1Miw0MzYwMSwxNzUzOSwzNTA3OCw1NTcsMTExNCwyMjI4LDQ0NTYsMzAzODgsNjA3NzYsNTE5NTMsMzQyNDMsNzA3OSwxNDE1OCwyODMxNiwxNDEyOCwyODI1Niw1NjUxMiw0MzQyNSwxNzI1MSwzNDUwMiw3NTk3LDEzMTA1LDI2MjEwLDUyNDIwLDM1MjQxLDg4MywxNzY2LDM1MzIsNDEyOSw4MjU4LDE2NTE2LDMzMDMyLDQ2NTcsOTMxNCwxODYyOF0sdD1mdW5jdGlvbihmKXtyZXR1cm4oZi8yfGYqMTI4KSYyNTV9LG49ZnVuY3Rpb24oZixzKXtyZXR1cm4gdChmXnMpfSxpPWZ1bmN0aW9uKGYpe2Zvcih2YXIgcz1hW2YubGVuZ3RoLTFdLGM9MTA0LG89Zi5sZW5ndGgtMTtvPj0wOy0tbylmb3IodmFyIGw9ZltvXSx1PTA7dSE9NzsrK3UpbCY2NCYmKHNePXJbY10pLGwqPTIsLS1jO3JldHVybiBzfTtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBzPWJzKGYpLGM9aShzKSxvPXMubGVuZ3RoLGw9QWEoMTYpLHU9MDt1IT0xNjsrK3UpbFt1XT0wO3ZhciB4LGgsZztmb3IoKG8mMSk9PT0xJiYoeD1jPj44LGxbb109bihlWzBdLHgpLC0tbyx4PWMmMjU1LGg9c1tzLmxlbmd0aC0xXSxsW29dPW4oaCx4KSk7bz4wOyktLW8seD1jPj44LGxbb109bihzW29dLHgpLC0tbyx4PWMmMjU1LGxbb109bihzW29dLHgpO2ZvcihvPTE1LGc9MTUtcy5sZW5ndGg7Zz4wOyl4PWM+PjgsbFtvXT1uKGVbZ10seCksLS1vLC0tZyx4PWMmMjU1LGxbb109bihzW29dLHgpLC0tbywtLWc7cmV0dXJuIGx9fSgpLG5oPWZ1bmN0aW9uKGUsYSxyLHQsbil7bnx8KG49YSksdHx8KHQ9UnMoZSkpO3ZhciBpLGY7Zm9yKGk9MDtpIT1hLmxlbmd0aDsrK2kpZj1hW2ldLGZePXRbcl0sZj0oZj4+NXxmPDwzKSYyNTUsbltpXT1mLCsrcjtyZXR1cm5bbixyLHRdfSxpaD1mdW5jdGlvbihlKXt2YXIgYT0wLHI9UnMoZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPW5oKCIiLHQsYSxyKTtyZXR1cm4gYT1uWzFdLG5bMF19fTtmdW5jdGlvbiBzaChlLGEscix0KXt2YXIgbj17a2V5OmVyKGUpLHZlcmlmaWNhdGlvbkJ5dGVzOmVyKGUpfTtyZXR1cm4gci5wYXNzd29yZCYmKG4udmVyaWZpZXI9dGgoci5wYXNzd29yZCkpLHQudmFsaWQ9bi52ZXJpZmljYXRpb25CeXRlcz09PW4udmVyaWZpZXIsdC52YWxpZCYmKHQuaW5zaXR1PWloKHIucGFzc3dvcmQpKSxufWZ1bmN0aW9uIGZoKGUsYSxyKXt2YXIgdD1yfHx7fTtyZXR1cm4gdC5JbmZvPWUucmVhZF9zaGlmdCgyKSxlLmwtPTIsdC5JbmZvPT09MT90LkRhdGE9YWgoZSk6dC5EYXRhPXJoKGUsYSksdH1mdW5jdGlvbiBjaChlLGEscil7dmFyIHQ9e1R5cGU6ci5iaWZmPj04P2UucmVhZF9zaGlmdCgyKTowfTtyZXR1cm4gdC5UeXBlP2ZoKGUsYS0yLHQpOnNoKGUsci5iaWZmPj04P2E6YS0yLHIsdCksdH1mdW5jdGlvbiBvaChlLGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gRjAoRHIoZSksYSk7Y2FzZSJiaW5hcnkiOnJldHVybiBGMChlLGEpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gRjAoTmUmJkJ1ZmZlci5pc0J1ZmZlcihlKT9lLnRvU3RyaW5nKCJiaW5hcnkiKTpmYShlKSxhKTtjYXNlImFycmF5IjpyZXR1cm4gRjAoQmEoZSksYSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9ZnVuY3Rpb24gRjAoZSxhKXt2YXIgcj1hfHx7fSx0PXt9LG49ci5kZW5zZTtuJiYodFsiIWRhdGEiXT1bXSk7dmFyIGk9dWEoZSwiXFx0cm93ZCIsIlxccm93Iik7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJSVEYgbWlzc2luZyB0YWJsZSIpO3ZhciBmPXtzOntjOjAscjowfSxlOntjOjAscjppLmxlbmd0aC0xfX0scz1bXTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGMsbyl7biYmKHM9dFsiIWRhdGEiXVtvXT1bXSk7Zm9yKHZhciBsPS9cXFtcd1wtXStcYi9nLHU9MCx4LGg9LTEsZz1bXTsoeD1sLmV4ZWMoYykpIT1udWxsOyl7dmFyIG09Yy5zbGljZSh1LGwubGFzdEluZGV4LXhbMF0ubGVuZ3RoKTtzd2l0Y2gobS5jaGFyQ29kZUF0KDApPT0zMiYmKG09bS5zbGljZSgxKSksbS5sZW5ndGgmJmcucHVzaChtKSx4WzBdKXtjYXNlIlxcY2VsbCI6aWYoKytoLGcubGVuZ3RoKXt2YXIgZD17djpnLmpvaW4oIiIpLHQ6InMifTtkLnY9PSJUUlVFInx8ZC52PT0iRkFMU0UiPyhkLnY9ZC52PT0iVFJVRSIsZC50PSJiIik6aXNOYU4oT3IoZC52KSk/ZHJbZC52XSE9bnVsbCYmKGQudD0iZSIsZC53PWQudixkLnY9ZHJbZC52XSk6KGQudD0ibiIsci5jZWxsVGV4dCE9PSExJiYoZC53PWQudiksZC52PU9yKGQudikpLG4/c1toXT1kOnRbSWUoe3I6byxjOmh9KV09ZH1nPVtdO2JyZWFrO2Nhc2UiXFxwYXIiOmcucHVzaChgCmApO2JyZWFrfXU9bC5sYXN0SW5kZXh9aD5mLmUuYyYmKGYuZS5jPWgpfSksdFsiIXJlZiJdPURlKGYpLHR9ZnVuY3Rpb24gbGgoZSxhKXt2YXIgcj1DYShvaChlLGEpLGEpO3JldHVybiByLmJvb2tUeXBlPSJydGYiLHJ9ZnVuY3Rpb24gdWgoZSl7dmFyIGE9ZS5zbGljZShlWzBdPT09IiMiPzE6MCkuc2xpY2UoMCw2KTtyZXR1cm5bcGFyc2VJbnQoYS5zbGljZSgwLDIpLDE2KSxwYXJzZUludChhLnNsaWNlKDIsNCksMTYpLHBhcnNlSW50KGEuc2xpY2UoNCw2KSwxNildfWZ1bmN0aW9uIGphKGUpe2Zvcih2YXIgYT0wLHI9MTthIT0zOysrYSlyPXIqMjU2KyhlW2FdPjI1NT8yNTU6ZVthXTwwPzA6ZVthXSk7cmV0dXJuIHIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSl9ZnVuY3Rpb24gaGgoZSl7dmFyIGE9ZVswXS8yNTUscj1lWzFdLzI1NSx0PWVbMl0vMjU1LG49TWF0aC5tYXgoYSxyLHQpLGk9TWF0aC5taW4oYSxyLHQpLGY9bi1pO2lmKGY9PT0wKXJldHVyblswLDAsYV07dmFyIHM9MCxjPTAsbz1uK2k7c3dpdGNoKGM9Zi8obz4xPzItbzpvKSxuKXtjYXNlIGE6cz0oKHItdCkvZis2KSU2O2JyZWFrO2Nhc2UgcjpzPSh0LWEpL2YrMjticmVhaztjYXNlIHQ6cz0oYS1yKS9mKzQ7YnJlYWt9cmV0dXJuW3MvNixjLG8vMl19ZnVuY3Rpb24geGgoZSl7dmFyIGE9ZVswXSxyPWVbMV0sdD1lWzJdLG49cioyKih0PC41P3Q6MS10KSxpPXQtbi8yLGY9W2ksaSxpXSxzPTYqYSxjO2lmKHIhPT0wKXN3aXRjaChzfDApe2Nhc2UgMDpjYXNlIDY6Yz1uKnMsZlswXSs9bixmWzFdKz1jO2JyZWFrO2Nhc2UgMTpjPW4qKDItcyksZlswXSs9YyxmWzFdKz1uO2JyZWFrO2Nhc2UgMjpjPW4qKHMtMiksZlsxXSs9bixmWzJdKz1jO2JyZWFrO2Nhc2UgMzpjPW4qKDQtcyksZlsxXSs9YyxmWzJdKz1uO2JyZWFrO2Nhc2UgNDpjPW4qKHMtNCksZlsyXSs9bixmWzBdKz1jO2JyZWFrO2Nhc2UgNTpjPW4qKDYtcyksZlsyXSs9YyxmWzBdKz1uO2JyZWFrfWZvcih2YXIgbz0wO28hPTM7KytvKWZbb109TWF0aC5yb3VuZChmW29dKjI1NSk7cmV0dXJuIGZ9ZnVuY3Rpb24gaG4oZSxhKXtpZihhPT09MClyZXR1cm4gZTt2YXIgcj1oaCh1aChlKSk7cmV0dXJuIGE8MD9yWzJdPXJbMl0qKDErYSk6clsyXT0xLSgxLXJbMl0pKigxLWEpLGphKHhoKHIpKX1mdW5jdGlvbiB6cihlLGEpe3ZhciByPXt9O2lmKGU9PW51bGwpcmV0dXJuIHI7aWYoZS5hdXRvIT1udWxsJiYoci5hdXRvPUZlKGUuYXV0bykpLGUucmdiIT1udWxsJiYoci5yZ2I9ZS5yZ2Iuc2xpY2UoLTYpLnRvVXBwZXJDYXNlKCkpLGUuaW5kZXhlZCE9bnVsbCl7ci5pbmRleGVkPXBhcnNlSW50KGUuaW5kZXhlZCwxMCksci5pbmRleD1yLmluZGV4ZWQ7dmFyIHQ9dGFbci5pbmRleGVkXTtyLmluZGV4ZWQ9PTgxJiYodD10YVsxXSksdHx8KHQ9dGFbMV0pLHQmJihyLnJnYj1qYSh0KSl9cmV0dXJuIGUudGhlbWUhPW51bGwmJihyLnRoZW1lPXBhcnNlSW50KGUudGhlbWUsMTApLGUudGludCE9bnVsbCYmKHIudGludD1wYXJzZUZsb2F0KGUudGludCkpLGEmJmEudGhlbWVFbGVtZW50cyYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtyLnRoZW1lXSYmKHIucmF3X3JnYj1hLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3IudGhlbWVdLnJnYixyLnJnYj1obihyLnJhd19yZ2Isci50aW50fHwwKSkpLGUudGludCE9bnVsbCYmci50aW50PT1udWxsJiYoci50aW50PXBhcnNlRmxvYXQoZS50aW50KSkscn1mdW5jdGlvbiBZYShlLGEpe2lmKCFlKXJldHVybiBlO3ZhciByPVVlKGUpO2lmKHIucmdiJiYoci5yZ2I9KCIiK3IucmdiKS5zbGljZSgtNikudG9VcHBlckNhc2UoKSksci5pbmRleGVkIT1udWxsJiYhci5yZ2Ipe3ZhciB0PXRhW3IuaW5kZXhlZF07ci5pbmRleGVkPT04MSYmKHQ9dGFbMV0pLHR8fCh0PXRhWzFdKSx0JiYoci5yZ2I9amEodCkpfXJldHVybiByLmluZGV4IT1udWxsJiZyLmluZGV4ZWQ9PW51bGwmJihyLmluZGV4ZWQ9ci5pbmRleCksci50aGVtZSE9bnVsbCYmYSYmYS50aGVtZUVsZW1lbnRzJiZhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lJiZhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3IudGhlbWVdJiYoci5yYXdfcmdiPWEudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbci50aGVtZV0ucmdiLHIucmdiPWhuKHIucmF3X3JnYixyLnRpbnR8fDApKSxyfWZ1bmN0aW9uIFQwKGUsYSl7aWYoIWUpcmV0dXJuIGU7dmFyIHI9VWUoZSk7cmV0dXJuIHIuY29sb3ImJihyLmNvbG9yPVlhKHIuY29sb3IsYSkpLHIuZmdDb2xvciYmKHIuZmdDb2xvcj1ZYShyLmZnQ29sb3IsYSkpLHIuYmdDb2xvciYmKHIuYmdDb2xvcj1ZYShyLmJnQ29sb3IsYSkpLFsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiZGlhZ29uYWwiLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJzdGFydCIsImVuZCJdLmZvckVhY2goZnVuY3Rpb24odCl7clt0XSYmclt0XS5jb2xvciYmKHJbdF0uY29sb3I9WWEoclt0XS5jb2xvcixhKSl9KSxyLmdyYWRpZW50RmlsbCYmci5ncmFkaWVudEZpbGwuc3RvcHMmJnIuZ3JhZGllbnRGaWxsLnN0b3BzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jb2xvciYmKHQuY29sb3I9WWEodC5jb2xvcixhKSl9KSxyfXZhciBPcz02LGRoPTE1LHZoPTEscWU9T3M7ZnVuY3Rpb24gX2EoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUrTWF0aC5yb3VuZCgxMjgvcWUpLzI1NikqcWUpfWZ1bmN0aW9uIEphKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTUpL3FlKjEwMCsuNSkvMTAwfWZ1bmN0aW9uIFphKGUpe3JldHVybiBNYXRoLnJvdW5kKChlKnFlKzUpL3FlKjI1NikvMjU2fWZ1bmN0aW9uIHhuKGUpe3JldHVybiBaYShKYShfYShlKSkpfWZ1bmN0aW9uIGRuKGUpe3ZhciBhPU1hdGguYWJzKGUteG4oZSkpLHI9cWU7aWYoYT4uMDA1KWZvcihxZT12aDtxZTxkaDsrK3FlKU1hdGguYWJzKGUteG4oZSkpPD1hJiYoYT1NYXRoLmFicyhlLXhuKGUpKSxyPXFlKTtxZT1yfWZ1bmN0aW9uIHV0KGUpe2Uud2lkdGg/KGUud3B4PV9hKGUud2lkdGgpLGUud2NoPUphKGUud3B4KSxlLk1EVz1xZSk6ZS53cHg/KGUud2NoPUphKGUud3B4KSxlLndpZHRoPVphKGUud2NoKSxlLk1EVz1xZSk6dHlwZW9mIGUud2NoPT0ibnVtYmVyIiYmKGUud2lkdGg9WmEoZS53Y2gpLGUud3B4PV9hKGUud2lkdGgpLGUuTURXPXFlKSxlLmN1c3RvbVdpZHRoJiZkZWxldGUgZS5jdXN0b21XaWR0aH12YXIgdm49MjU1LE5zPTU7ZnVuY3Rpb24gcGgoZSl7cmV0dXJuIGU+dm4/dm46ZTwwPzA6ZX1mdW5jdGlvbiBnaChlKXt2YXIgYT1aYShKYShNYXRoLm1heCgwLGUpKSk7cmV0dXJuIHBoKGEpfWZ1bmN0aW9uIE1zKGUpe3JldHVybiBlP2Uud3B4IT1udWxsP2Uud3B4OmUud2lkdGghPW51bGw/X2EoZS53aWR0aCk6ZS53Y2ghPW51bGw/X2EoWmEoZS53Y2gpKTo2NDo2NH1mdW5jdGlvbiBtaChlLGEpe3JldHVybiBlfHwoZT17fSksZS53cHg9TWF0aC5tYXgoMCxNYXRoLmNlaWwoYSkpLGUud2NoPUphKGUud3B4KSxlLndpZHRoPWdoKGUud3B4KSxlLk1EVz1xZSxlLmJlc3RGaXQ9ITAsZS5jdXN0b21XaWR0aD0hMCxlfWZ1bmN0aW9uIEx0KGUpe3ZhciBhPWUmJmUuZm9udHx8e30scj0rYS5zejtyZXR1cm4gcj4wP3I6MTF9ZnVuY3Rpb24gX2goZSl7dmFyIGE9ZSYmZS5mb250fHx7fTtyZXR1cm4gYS5uYW1lfHwiQ2FsaWJyaSJ9ZnVuY3Rpb24gUHMoZSl7dmFyIGE9ZSYmZS5mb250fHx7fSxyPVtdO2EuaXRhbGljJiZyLnB1c2goIml0YWxpYyIpLGEuYm9sZCYmci5wdXNoKCJib2xkIiksci5wdXNoKEx0KGUpKyJwdCIpO3ZhciB0PV9oKGUpO3JldHVybi9bLFxzJyJdLy50ZXN0KHQpJiYodD0nIicrU3RyaW5nKHQpLnJlcGxhY2UoLyIvZywnXFwiJykrJyInKSxyLnB1c2godCksci5qb2luKCIgIil9ZnVuY3Rpb24ga2goZSxhKXt2YXIgcj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIHI9PTl8fHI9PTMyP2EqLjMzOnI+PTQ4JiZyPD01Nz9hKi41MjpyPj02NSYmcjw9OTA/YSouNjI6cj49OTcmJnI8PTEyMj8iaWxqdGZyIi5pbmRleE9mKGUpPi0xP2EqLjI4OiJtdyIuaW5kZXhPZihlKT4tMT9hKi44MjphKi41OnI+PTExOTA0P2E6YSouNTJ9ZnVuY3Rpb24gd2goZSxhKXtmb3IodmFyIHI9VXQoTHQoYSkpLHQ9MCxuPTA7bjxlLmxlbmd0aDsrK24pdCs9a2goZS5jaGFyQXQobikscik7cmV0dXJuIHR9ZnVuY3Rpb24gTHMoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT09bnVsbD8iIjpTdHJpbmcoZSksaT1uLnNwbGl0KC9cclxufFxufFxyL2cpLGY9MCxzPTAsYz0wO2lmKHQubWVhc3VyZVRleHQpZm9yKHM9MDtzPGkubGVuZ3RoOysrcyljPSt0Lm1lYXN1cmVUZXh0KGlbc10sUHMoYSksYXx8e30pLGlzRmluaXRlKGMpJiZjPmYmJihmPWMpO2Vsc2V7dmFyIG89dC5jYW52YXMsbD1udWxsO2lmKCFvJiZ0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KXRyeXtvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpfWNhdGNoe310cnl7bD1vJiZvLmdldENvbnRleHQmJm8uZ2V0Q29udGV4dCgiMmQiKX1jYXRjaHtsPW51bGx9aWYobCYmbC5tZWFzdXJlVGV4dClmb3IobC5mb250PVBzKGEpLHM9MDtzPGkubGVuZ3RoOysrcyljPWwubWVhc3VyZVRleHQoaVtzXSkud2lkdGgsaXNGaW5pdGUoYykmJmM+ZiYmKGY9Yyk7ZWxzZSBmb3Iocz0wO3M8aS5sZW5ndGg7KytzKWM9d2goaVtzXSxhfHx7fSksaXNGaW5pdGUoYykmJmM+ZiYmKGY9Yyl9cmV0dXJuIGZ9ZnVuY3Rpb24gRmgoZSxhKXtyZXR1cm4hZXx8ZS52PT1udWxsPyIiOihlLnc9PW51bGwmJmUudCE9InoiJiZnYShlKSxTdHJpbmcoZS53IT1udWxsP2UudzplLnYpKX1mdW5jdGlvbiBUaChlLGEpe3ZhciByPVN0cmluZyhlPz8iIikuc3BsaXQoL1xyXG58XG58XHIvZyksdD1bXSxuPTAsaT0wLGY9bnVsbDtpZighYSlyZXR1cm4gcjtmb3Iobj0wO248ci5sZW5ndGg7KytuKXtmb3IoZj1yW25dLnNwbGl0KC9bXHQgXHUwMEEwXC1cL10rLyksaT0wO2k8Zi5sZW5ndGg7KytpKWZbaV0mJnQucHVzaChmW2ldKTsoIWYubGVuZ3RofHxmLmxlbmd0aD09MSYmIWZbMF0pJiZ0LnB1c2gocltuXSl9cmV0dXJuIHQubGVuZ3RoP3Q6WyIiXX1mdW5jdGlvbiBFaChlLGEscix0KXt2YXIgbj17fSxpPWVbIiFjb2xzIl18fFtdLGY9ZVsiIXJvd3MiXXx8W107cmV0dXJuIGlbdF0mJmlbdF0ucyYma2EobixpW3RdLnMpLGZbcl0mJmZbcl0ucyYma2EobixmW3JdLnMpLGEmJmEucyYma2EobixhLnMpLG59ZnVuY3Rpb24gQnMoZSxhLHIpe2Zvcih2YXIgdD1yfHx7fSxuPUZoKGUpLGk9YSYmYS5hbGlnbm1lbnR8fHt9LGY9ISFpLndyYXBUZXh0LHM9VGgobixmKSxjPTAsbz0wLGw9MDtsPHMubGVuZ3RoOysrbClvPUxzKHNbbF0sYSx0KSxvPmMmJihjPW8pO3ZhciB1PStpLmluZGVudHx8MDt1PjAmJihjKz11KjMqTWF0aC5tYXgoMSxxZSkpO3ZhciB4PStpLnRleHRSb3RhdGlvbnx8MDtpZih4PT0yNTUmJih4PTkwKSx4PjkwJiYoeD05MC14KSx4PDAmJih4PS14KSx4PjAmJng8OTApe3ZhciBoPXgqTWF0aC5QSS8xODAsZz1VdChMdChhKSk7Yz1NYXRoLmFicyhjKk1hdGguY29zKGgpKStNYXRoLmFicyhnKk1hdGguc2luKGgpKX1lbHNlIHg+PTkwJiYoYz1NYXRoLm1heChxZStOcyxVdChMdChhKSkrMikpO3JldHVybiBjKyh0LnBhZGRpbmchPW51bGw/K3QucGFkZGluZzpOcyl9ZnVuY3Rpb24gQWgoZSl7Zm9yKHZhciBhPXt9LHI9MDtyPGUubGVuZ3RoOysrcilhW2Vbcl0ucy5yKyI6IitlW3JdLnMuY109ZVtyXTtyZXR1cm4gYX1mdW5jdGlvbiB5aChlLGEscil7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciBuPWVbdF07aWYobi5zLnI8PWEmJmE8PW4uZS5yJiZuLnMuYzw9ciYmcjw9bi5lLmMpcmV0dXJuIShuLnMucj09YSYmbi5zLmM9PXIpfXJldHVybiExfWZ1bmN0aW9uIHBuKGUsYSl7dmFyIHI9YXx8e30sdD1xZTtyLk1EVyYmKHFlPStyLk1EV3x8cWUpO3ZhciBuPXIucmFuZ2U/dHlwZW9mIHIucmFuZ2U9PSJzdHJpbmciP3BhKHIucmFuZ2UpOnIucmFuZ2U6cGEoZVsiIXJlZiJdfHwiQTEiKSxpPWVbIiFjb2xzIl18fFtdLGY9ZVsiIXJvd3MiXXx8W10scz1bXSxjPVtdLG89ci5taW5QeCE9bnVsbD8rci5taW5QeDpyLm1pbiE9bnVsbD9fYShaYSgrci5taW4pKTowLGw9ci5tYXhQeCE9bnVsbD8rci5tYXhQeDpfYSh2biksdT1yLmluY2x1ZGVNZXJnZWQ9PT0hMT9bXTplWyIhbWVyZ2VzIl18fFtdLHg9QWgodSksaD1lWyIhZGF0YSJdIT1udWxsLGc9MCxtPTAsZD0wLHA9bnVsbCx3PTAsXz1udWxsLHk9bnVsbCxSPTAsUD0wO2ZvcihnPW4ucy5jO2c8PW4uZS5jOysrZylzW2ddPVVlKGlbZ118fHt9KSwhKHNbZ10mJnNbZ10uaGlkZGVuJiZyLnNraXBIaWRkZW4pJiYoY1tnXT1zW2ddJiYoc1tnXS53cHghPW51bGx8fHNbZ10ud2lkdGghPW51bGx8fHNbZ10ud2NoIT1udWxsKT9NcyhzW2ddKTpvKTtmb3IobT1uLnMucjttPD1uLmUucjsrK20paWYoIShmW21dJiZmW21dLmhpZGRlbiYmci5za2lwSGlkZGVuKSl7Zm9yKGc9bi5zLmM7Zzw9bi5lLmM7KytnKWlmKCEoc1tnXSYmc1tnXS5oaWRkZW4mJnIuc2tpcEhpZGRlbikmJiF5aCh1LG0sZykmJihfPWg/KGVbIiFkYXRhIl1bbV18fFtdKVtnXTplW0llKHtyOm0sYzpnfSldLCEoIV98fF8udj09bnVsbCkpKWlmKHk9RWgoZSxfLG0sZyksUj1CcyhfLHkscikseSYmeS5hbGlnbm1lbnQmJnkuYWxpZ25tZW50LnNocmlua1RvRml0JiZjW2ddJiYoUj1NYXRoLm1pbihSLGNbZ10pKSxwPXhbbSsiOiIrZ10sZD1wP3AuZS5jLXAucy5jKzE6MSxkPjEpe2ZvcihQPTAsdz0wO3c8ZDsrK3cpUCs9Y1tnK3ddfHxvO2lmKFI+UClmb3Iodz0wO3c8ZDsrK3cpY1tnK3ddPU1hdGgubWluKGwsTWF0aC5tYXgoY1tnK3ddfHxvLChjW2crd118fG8pKyhSLVApL2QpKX1lbHNlIGNbZ109TWF0aC5taW4obCxNYXRoLm1heChjW2ddfHxvLFIpKX1mb3IoZz1uLnMuYztnPD1uLmUuYzsrK2cpY1tnXSE9bnVsbCYmKHNbZ109bWgoc1tnXXx8e30sTWF0aC5taW4obCxNYXRoLm1heChvLGNbZ10pKSkpO3JldHVybiByLnNldD09PSExPyhxZT10LHMpOihlWyIhY29scyJdPXMscWU9dCxzKX12YXIgU2g9OTYsVXM9U2g7ZnVuY3Rpb24gSHMoZSl7cmV0dXJuIGUqOTYvVXN9ZnVuY3Rpb24gQnQoZSl7cmV0dXJuIGUqVXMvOTZ9ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIGUqOTYvNzJ9ZnVuY3Rpb24gQ2goZSl7cmV0dXJuIGUqNzIvOTZ9dmFyIGJoPXtOb25lOiJub25lIixTb2xpZDoic29saWQiLEdyYXk1MDoibWVkaXVtR3JheSIsR3JheTc1OiJkYXJrR3JheSIsR3JheTI1OiJsaWdodEdyYXkiLEhvcnpTdHJpcGU6ImRhcmtIb3Jpem9udGFsIixWZXJ0U3RyaXBlOiJkYXJrVmVydGljYWwiLFJldmVyc2VEaWFnU3RyaXBlOiJkYXJrRG93biIsRGlhZ1N0cmlwZToiZGFya1VwIixEaWFnQ3Jvc3M6ImRhcmtHcmlkIixUaGlja0RpYWdDcm9zczoiZGFya1RyZWxsaXMiLFRoaW5Ib3J6U3RyaXBlOiJsaWdodEhvcml6b250YWwiLFRoaW5WZXJ0U3RyaXBlOiJsaWdodFZlcnRpY2FsIixUaGluUmV2ZXJzZURpYWdTdHJpcGU6ImxpZ2h0RG93biIsVGhpbkhvcnpDcm9zczoibGlnaHRHcmlkIn07ZnVuY3Rpb24gRGgoZSxhLHIsdCl7YS5Cb3JkZXJzPVtdO3ZhciBuPXt9LGk9IiIsZj0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3ZhciBjPW9lKHMpO3N3aXRjaChBcihjWzBdKSl7Y2FzZSI8Ym9yZGVycyI6Y2FzZSI8Ym9yZGVycz4iOmNhc2UiPC9ib3JkZXJzPiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpjYXNlIjxib3JkZXIvPiI6bj17fSxjLmRpYWdvbmFsVXAmJihuLmRpYWdvbmFsVXA9RmUoYy5kaWFnb25hbFVwKSksYy5kaWFnb25hbERvd24mJihuLmRpYWdvbmFsRG93bj1GZShjLmRpYWdvbmFsRG93bikpLGEuQm9yZGVycy5wdXNoKG4pO2JyZWFrO2Nhc2UiPC9ib3JkZXI+IjpicmVhaztjYXNlIjxsZWZ0Lz4iOm4ubGVmdD17fSxjLnN0eWxlJiYobi5sZWZ0LnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGxlZnQiOmNhc2UiPGxlZnQ+IjppPSJsZWZ0IixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9sZWZ0PiI6aT0iIjticmVhaztjYXNlIjxyaWdodC8+IjpuLnJpZ2h0PXt9LGMuc3R5bGUmJihuLnJpZ2h0LnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPHJpZ2h0IjpjYXNlIjxyaWdodD4iOmk9InJpZ2h0IixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9yaWdodD4iOmk9IiI7YnJlYWs7Y2FzZSI8dG9wLz4iOm4udG9wPXt9LGMuc3R5bGUmJihuLnRvcC5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjx0b3AiOmNhc2UiPHRvcD4iOmk9InRvcCIsbltpXT1uW2ldfHx7fSxjLnN0eWxlJiYobltpXS5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjwvdG9wPiI6aT0iIjticmVhaztjYXNlIjxib3R0b20vPiI6bi5ib3R0b209e30sYy5zdHlsZSYmKG4uYm90dG9tLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGJvdHRvbSI6Y2FzZSI8Ym90dG9tPiI6aT0iYm90dG9tIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9ib3R0b20+IjppPSIiO2JyZWFrO2Nhc2UiPGRpYWdvbmFsLz4iOm4uZGlhZ29uYWw9e30sYy5zdHlsZSYmKG4uZGlhZ29uYWwuc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8ZGlhZ29uYWwiOmNhc2UiPGRpYWdvbmFsPiI6aT0iZGlhZ29uYWwiLG5baV09bltpXXx8e30sYy5zdHlsZSYmKG5baV0uc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6aT0iIjticmVhaztjYXNlIjxob3Jpem9udGFsLz4iOm4uaG9yaXpvbnRhbD17fSxjLnN0eWxlJiYobi5ob3Jpem9udGFsLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGhvcml6b250YWwiOmNhc2UiPGhvcml6b250YWw+IjppPSJob3Jpem9udGFsIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9ob3Jpem9udGFsPiI6aT0iIjticmVhaztjYXNlIjx2ZXJ0aWNhbC8+IjpuLnZlcnRpY2FsPXt9LGMuc3R5bGUmJihuLnZlcnRpY2FsLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPHZlcnRpY2FsIjpjYXNlIjx2ZXJ0aWNhbD4iOmk9InZlcnRpY2FsIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOmk9IiI7YnJlYWs7Y2FzZSI8c3RhcnQvPiI6bi5zdGFydD17fSxjLnN0eWxlJiYobi5zdGFydC5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjxzdGFydCI6Y2FzZSI8c3RhcnQ+IjppPSJzdGFydCIsbltpXT1uW2ldfHx7fSxjLnN0eWxlJiYobltpXS5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjwvc3RhcnQ+IjppPSIiO2JyZWFrO2Nhc2UiPGVuZC8+IjpuLmVuZD17fSxjLnN0eWxlJiYobi5lbmQuc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8ZW5kIjpjYXNlIjxlbmQ+IjppPSJlbmQiLG5baV09bltpXXx8e30sYy5zdHlsZSYmKG5baV0uc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8L2VuZD4iOmk9IiI7YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yPiI6aSYmKG5baV0uY29sb3I9enIoYyxyKSk7YnJlYWs7Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0IjpmPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpmPSExO2JyZWFrO2RlZmF1bHQ6aWYodCYmdC5XVEYmJiFmKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrY1swXSsiIGluIGJvcmRlcnMiKX19KX1mdW5jdGlvbiBJaChlLGEscix0KXthLkZpbGxzPVtdO3ZhciBuPXt9LGk9bnVsbCxmPW51bGwscz0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBvPW9lKGMpO3N3aXRjaChBcihvWzBdKSl7Y2FzZSI8ZmlsbHMiOmNhc2UiPGZpbGxzPiI6Y2FzZSI8L2ZpbGxzPiI6YnJlYWs7Y2FzZSI8ZmlsbD4iOmNhc2UiPGZpbGwiOmNhc2UiPGZpbGwvPiI6bj17fSxhLkZpbGxzLnB1c2gobik7YnJlYWs7Y2FzZSI8L2ZpbGw+IjpicmVhaztjYXNlIjxncmFkaWVudEZpbGw+IjppPXtzdG9wczpbXX0sbi5ncmFkaWVudEZpbGw9aTticmVhaztjYXNlIjxncmFkaWVudEZpbGwiOmk9e3N0b3BzOltdfSxvLnR5cGUmJihpLnR5cGU9by50eXBlKSxvLmRlZ3JlZSYmKGkuZGVncmVlPXBhcnNlRmxvYXQoby5kZWdyZWUpKSxbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLmZvckVhY2goZnVuY3Rpb24obCl7b1tsXSE9bnVsbCYmKGlbbF09cGFyc2VGbG9hdChvW2xdKSl9KSxuLmdyYWRpZW50RmlsbD1pO2JyZWFrO2Nhc2UiPC9ncmFkaWVudEZpbGw+IjppPW51bGw7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6by5wYXR0ZXJuVHlwZSYmKG4ucGF0dGVyblR5cGU9by5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6YnJlYWs7Y2FzZSI8YmdDb2xvciI6bi5iZ0NvbG9yPXpyKG8scik7YnJlYWs7Y2FzZSI8YmdDb2xvci8+IjpjYXNlIjwvYmdDb2xvcj4iOmJyZWFrO2Nhc2UiPGZnQ29sb3IiOm4uZmdDb2xvcj16cihvLHIpO2JyZWFrO2Nhc2UiPGZnQ29sb3IvPiI6Y2FzZSI8L2ZnQ29sb3I+IjpicmVhaztjYXNlIjxzdG9wIjpmPXt9LG8ucG9zaXRpb24hPW51bGwmJihmLnBvc2l0aW9uPXBhcnNlRmxvYXQoby5wb3NpdGlvbikpLGkmJmkuc3RvcHMucHVzaChmKTticmVhaztjYXNlIjxzdG9wLz4iOmkmJihmPXt9LG8ucG9zaXRpb24hPW51bGwmJihmLnBvc2l0aW9uPXBhcnNlRmxvYXQoby5wb3NpdGlvbikpLGkuc3RvcHMucHVzaChmKSksZj1udWxsO2JyZWFrO2Nhc2UiPC9zdG9wPiI6Zj1udWxsO2JyZWFrO2Nhc2UiPGNvbG9yIjpmJiYoZi5jb2xvcj16cihvLHIpKTticmVhaztjYXNlIjxjb2xvci8+IjpmJiYoZi5jb2xvcj16cihvLHIpKTticmVhaztjYXNlIjwvY29sb3I+IjpicmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOnM9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOnM9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIXMpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitvWzBdKyIgaW4gZmlsbHMiKX19KX1mdW5jdGlvbiBSaChlLGEscix0KXthLkZvbnRzPVtdO3ZhciBuPXt9LGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPGZvbnRzIjpjYXNlIjxmb250cz4iOmNhc2UiPC9mb250cz4iOmJyZWFrO2Nhc2UiPGZvbnQiOmNhc2UiPGZvbnQ+IjpicmVhaztjYXNlIjwvZm9udD4iOmNhc2UiPGZvbnQvPiI6YS5Gb250cy5wdXNoKG4pLG49e307YnJlYWs7Y2FzZSI8bmFtZSI6cy52YWwmJihuLm5hbWU9VmUocy52YWwpKTticmVhaztjYXNlIjxuYW1lLz4iOmNhc2UiPC9uYW1lPiI6YnJlYWs7Y2FzZSI8YiI6bi5ib2xkPXMudmFsP0ZlKHMudmFsKToxO2JyZWFrO2Nhc2UiPGIvPiI6bi5ib2xkPTE7YnJlYWs7Y2FzZSI8L2I+IjpjYXNlIjwvYiI6YnJlYWs7Y2FzZSI8aSI6bi5pdGFsaWM9cy52YWw/RmUocy52YWwpOjE7YnJlYWs7Y2FzZSI8aS8+IjpuLml0YWxpYz0xO2JyZWFrO2Nhc2UiPC9pPiI6Y2FzZSI8L2kiOmJyZWFrO2Nhc2UiPHUiOnN3aXRjaChzLnZhbCl7Y2FzZSJub25lIjpuLnVuZGVybGluZT0wO2JyZWFrO2Nhc2Uic2luZ2xlIjpuLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiZG91YmxlIjpuLnVuZGVybGluZT0yO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6bi51bmRlcmxpbmU9MzM7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjpuLnVuZGVybGluZT0zNDticmVha31icmVhaztjYXNlIjx1Lz4iOm4udW5kZXJsaW5lPTE7YnJlYWs7Y2FzZSI8L3U+IjpjYXNlIjwvdSI6YnJlYWs7Y2FzZSI8c3RyaWtlIjpuLnN0cmlrZT1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxzdHJpa2UvPiI6bi5zdHJpa2U9MTticmVhaztjYXNlIjwvc3RyaWtlPiI6Y2FzZSI8L3N0cmlrZSI6YnJlYWs7Y2FzZSI8b3V0bGluZSI6bi5vdXRsaW5lPXMudmFsP0ZlKHMudmFsKToxO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6bi5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpjYXNlIjwvb3V0bGluZSI6YnJlYWs7Y2FzZSI8c2hhZG93IjpuLnNoYWRvdz1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxzaGFkb3cvPiI6bi5zaGFkb3c9MTticmVhaztjYXNlIjwvc2hhZG93PiI6Y2FzZSI8L3NoYWRvdyI6YnJlYWs7Y2FzZSI8Y29uZGVuc2UiOm4uY29uZGVuc2U9cy52YWw/RmUocy52YWwpOjE7YnJlYWs7Y2FzZSI8Y29uZGVuc2UvPiI6bi5jb25kZW5zZT0xO2JyZWFrO2Nhc2UiPC9jb25kZW5zZT4iOmNhc2UiPC9jb25kZW5zZSI6YnJlYWs7Y2FzZSI8ZXh0ZW5kIjpuLmV4dGVuZD1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxleHRlbmQvPiI6bi5leHRlbmQ9MTticmVhaztjYXNlIjwvZXh0ZW5kPiI6Y2FzZSI8L2V4dGVuZCI6YnJlYWs7Y2FzZSI8c3oiOnMudmFsJiYobi5zej0rcy52YWwpO2JyZWFrO2Nhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmNhc2UiPC9zeiI6YnJlYWs7Y2FzZSI8dmVydEFsaWduIjpzLnZhbCYmKG4udmVydEFsaWduPXMudmFsKTticmVhaztjYXNlIjx2ZXJ0QWxpZ24vPiI6Y2FzZSI8L3ZlcnRBbGlnbj4iOmNhc2UiPC92ZXJ0QWxpZ24iOmJyZWFrO2Nhc2UiPGZhbWlseSI6cy52YWwmJihuLmZhbWlseT1wYXJzZUludChzLnZhbCwxMCkpO2JyZWFrO2Nhc2UiPGZhbWlseS8+IjpjYXNlIjwvZmFtaWx5PiI6Y2FzZSI8L2ZhbWlseSI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpzLnZhbCYmKG4uc2NoZW1lPXMudmFsKTticmVhaztjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmNhc2UiPC9zY2hlbWUiOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKHMudmFsPT0iMSIpYnJlYWs7cy5jb2RlcGFnZT1WMFtwYXJzZUludChzLnZhbCwxMCldO2JyZWFrO2Nhc2UiPGNoYXJzZXQvPiI6Y2FzZSI8L2NoYXJzZXQ+IjpjYXNlIjwvY2hhcnNldCI6YnJlYWs7Y2FzZSI8Y29sb3IiOm4uY29sb3I9enIocyxyKTticmVhaztjYXNlIjxjb2xvci8+IjpjYXNlIjwvY29sb3I+IjpjYXNlIjwvY29sb3IiOmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmk9ITA7YnJlYWs7Y2FzZSI8L0FsdGVybmF0ZUNvbnRlbnQ+IjpjYXNlIjwvQWx0ZXJuYXRlQ29udGVudCI6aT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gZm9udHMiKX19KX1mdW5jdGlvbiBPaChlLGEscil7YS5OdW1iZXJGbXQ9W107Zm9yKHZhciB0PXByKFRlKSxuPTA7bjx0Lmxlbmd0aDsrK24pYS5OdW1iZXJGbXRbdFtuXV09VGVbdFtuXV07dmFyIGk9ZS5tYXRjaChucik7aWYoaSlmb3Iobj0wO248aS5sZW5ndGg7KytuKXt2YXIgZj1vZShpW25dKTtzd2l0Y2goQXIoZlswXSkpe2Nhc2UiPG51bUZtdHMiOmNhc2UiPC9udW1GbXRzPiI6Y2FzZSI8bnVtRm10cy8+IjpjYXNlIjxudW1GbXRzPiI6YnJlYWs7Y2FzZSI8bnVtRm10Ijp7dmFyIHM9Q2UoVmUoZi5mb3JtYXRDb2RlKSksYz1wYXJzZUludChmLm51bUZtdElkLDEwKTtpZihhLk51bWJlckZtdFtjXT1zLGM+MCl7aWYoYz4zOTIpe2ZvcihjPTM5MjtjPjYwJiZhLk51bWJlckZtdFtjXSE9bnVsbDstLWMpO2EuTnVtYmVyRm10W2NdPXN9TGEocyxjKX19YnJlYWs7Y2FzZSI8L251bUZtdD4iOmJyZWFrO2RlZmF1bHQ6aWYoci5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitmWzBdKyIgaW4gbnVtRm10cyIpfX19dmFyIEUwPVsibnVtRm10SWQiLCJmaWxsSWQiLCJmb250SWQiLCJib3JkZXJJZCIsInhmSWQiXSxBMD1bImFwcGx5QWxpZ25tZW50IiwiYXBwbHlCb3JkZXIiLCJhcHBseUZpbGwiLCJhcHBseUZvbnQiLCJhcHBseU51bWJlckZvcm1hdCIsImFwcGx5UHJvdGVjdGlvbiIsInBpdm90QnV0dG9uIiwicXVvdGVQcmVmaXgiXTtmdW5jdGlvbiBXcyhlLGEscix0KXthW3RdPVtdO3ZhciBuLGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKSxjPTA7c3dpdGNoKEFyKHNbMF0pKXtjYXNlIjxjZWxsWGZzIjpjYXNlIjxjZWxsWGZzPiI6Y2FzZSI8Y2VsbFhmcy8+IjpjYXNlIjwvY2VsbFhmcz4iOmNhc2UiPGNlbGxTdHlsZVhmcyI6Y2FzZSI8Y2VsbFN0eWxlWGZzPiI6Y2FzZSI8Y2VsbFN0eWxlWGZzLz4iOmNhc2UiPC9jZWxsU3R5bGVYZnM+IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Y2FzZSI8eGY+Ijpmb3Iobj1zLGRlbGV0ZSBuWzBdLGM9MDtjPEUwLmxlbmd0aDsrK2MpbltFMFtjXV0mJihuW0UwW2NdXT1wYXJzZUludChuW0UwW2NdXSwxMCkpO2ZvcihjPTA7YzxBMC5sZW5ndGg7KytjKW5bQTBbY11dJiYobltBMFtjXV09RmUobltBMFtjXV0pKTtpZihhLk51bWJlckZtdCYmbi5udW1GbXRJZD4zOTIpe2ZvcihjPTM5MjtjPjYwOy0tYylpZihhLk51bWJlckZtdFtuLm51bUZtdElkXT09YS5OdW1iZXJGbXRbY10pe24ubnVtRm10SWQ9YzticmVha319YVt0XS5wdXNoKG4pO2JyZWFrO2Nhc2UiPC94Zj4iOmJyZWFrO2Nhc2UiPGFsaWdubWVudCI6Y2FzZSI8YWxpZ25tZW50Lz4iOmNhc2UiPGFsaWdubWVudD4iOnZhciBvPXt9O3MudmVydGljYWwmJihvLnZlcnRpY2FsPXMudmVydGljYWwpLHMuaG9yaXpvbnRhbCYmKG8uaG9yaXpvbnRhbD1zLmhvcml6b250YWwpLHMudGV4dFJvdGF0aW9uIT1udWxsJiYoby50ZXh0Um90YXRpb249cGFyc2VJbnQocy50ZXh0Um90YXRpb24sMTApKSxzLmluZGVudCYmKG8uaW5kZW50PXBhcnNlSW50KHMuaW5kZW50LDEwKSkscy5yZWxhdGl2ZUluZGVudCYmKG8ucmVsYXRpdmVJbmRlbnQ9cGFyc2VJbnQocy5yZWxhdGl2ZUluZGVudCwxMCkpLHMucmVhZGluZ09yZGVyJiYoby5yZWFkaW5nT3JkZXI9cGFyc2VJbnQocy5yZWFkaW5nT3JkZXIsMTApKSxzLndyYXBUZXh0JiYoby53cmFwVGV4dD1GZShzLndyYXBUZXh0KSkscy5zaHJpbmtUb0ZpdCYmKG8uc2hyaW5rVG9GaXQ9RmUocy5zaHJpbmtUb0ZpdCkpLHMuanVzdGlmeUxhc3RMaW5lJiYoby5qdXN0aWZ5TGFzdExpbmU9RmUocy5qdXN0aWZ5TGFzdExpbmUpKSxuLmFsaWdubWVudD1vO2JyZWFrO2Nhc2UiPC9hbGlnbm1lbnQ+IjpicmVhaztjYXNlIjxwcm90ZWN0aW9uIjpjYXNlIjxwcm90ZWN0aW9uPiI6dmFyIGw9e307cy5sb2NrZWQhPW51bGwmJihsLmxvY2tlZD1GZShzLmxvY2tlZCkpLHMuaGlkZGVuIT1udWxsJiYobC5oaWRkZW49RmUocy5oaWRkZW4pKSxuLnByb3RlY3Rpb249bDticmVhaztjYXNlIjxwcm90ZWN0aW9uLz4iOmw9e30scy5sb2NrZWQhPW51bGwmJihsLmxvY2tlZD1GZShzLmxvY2tlZCkpLHMuaGlkZGVuIT1udWxsJiYobC5oaWRkZW49RmUocy5oaWRkZW4pKSxuLnByb3RlY3Rpb249bDticmVhaztjYXNlIjwvcHJvdGVjdGlvbj4iOmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQ+IjppPSEwO2JyZWFrO2Nhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6aT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZihyJiZyLldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gY2VsbFhmcyIpfX0pfWZ1bmN0aW9uIE5oKGUsYSxyKXtXcyhlLGEsciwiQ2VsbFhmIil9ZnVuY3Rpb24gTWgoZSxhLHIpe1dzKGUsYSxyLCJDZWxsU3R5bGVYZiIpfWZ1bmN0aW9uIFBoKGUsYSxyKXthLkNlbGxTdHlsZXM9W10sKGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj1vZSh0KTtzd2l0Y2goQXIoblswXSkpe2Nhc2UiPGNlbGxTdHlsZXMiOmNhc2UiPGNlbGxTdHlsZXM+IjpjYXNlIjxjZWxsU3R5bGVzLz4iOmNhc2UiPC9jZWxsU3R5bGVzPiI6YnJlYWs7Y2FzZSI8Y2VsbFN0eWxlIjpjYXNlIjxjZWxsU3R5bGUvPiI6ZGVsZXRlIG5bMF0sbi54ZklkIT1udWxsJiYobi54ZklkPXBhcnNlSW50KG4ueGZJZCwxMCkpLG4uYnVpbHRpbklkIT1udWxsJiYobi5idWlsdGluSWQ9cGFyc2VJbnQobi5idWlsdGluSWQsMTApKSxuLmlMZXZlbCE9bnVsbCYmKG4uaUxldmVsPXBhcnNlSW50KG4uaUxldmVsLDEwKSksbi5jdXN0b21CdWlsdGluIT1udWxsJiYobi5jdXN0b21CdWlsdGluPUZlKG4uY3VzdG9tQnVpbHRpbikpLG4uaGlkZGVuIT1udWxsJiYobi5oaWRkZW49RmUobi5oaWRkZW4pKSxuLm5hbWUmJihuLm5hbWU9VmUobi5uYW1lKSksYS5DZWxsU3R5bGVzLnB1c2gobik7YnJlYWs7Y2FzZSI8L2NlbGxTdHlsZT4iOmJyZWFrO2RlZmF1bHQ6aWYociYmci5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIituWzBdKyIgaW4gY2VsbFN0eWxlcyIpfX0pfWZ1bmN0aW9uIExoKGUsYSxyLHQpe2EuRHhmcz1bXTt2YXIgbj1udWxsLGk9bnVsbCxmPW51bGwscz1udWxsLGM9IiIsbz0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciB1PW9lKGwpO3N3aXRjaChBcih1WzBdKSl7Y2FzZSI8ZHhmcyI6Y2FzZSI8ZHhmcz4iOmNhc2UiPGR4ZnMvPiI6Y2FzZSI8L2R4ZnM+IjpicmVhaztjYXNlIjxkeGYiOmNhc2UiPGR4Zj4iOm49e30sYS5EeGZzLnB1c2gobik7YnJlYWs7Y2FzZSI8ZHhmLz4iOmEuRHhmcy5wdXNoKHt9KSxuPW51bGw7YnJlYWs7Y2FzZSI8L2R4Zj4iOm49bnVsbDticmVhaztjYXNlIjxmb250IjpjYXNlIjxmb250PiI6aT17fSxuJiYobi5mb250PWkpO2JyZWFrO2Nhc2UiPC9mb250PiI6Y2FzZSI8Zm9udC8+IjppPW51bGw7YnJlYWs7Y2FzZSI8bmFtZSI6aSYmdS52YWwmJihpLm5hbWU9VmUodS52YWwpKTticmVhaztjYXNlIjxuYW1lLz4iOmNhc2UiPC9uYW1lPiI6YnJlYWs7Y2FzZSI8YiI6aSYmKGkuYm9sZD11LnZhbD9GZSh1LnZhbCk6MSk7YnJlYWs7Y2FzZSI8Yi8+IjppJiYoaS5ib2xkPTEpO2JyZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6aSYmKGkuaXRhbGljPXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxpLz4iOmkmJihpLml0YWxpYz0xKTticmVhaztjYXNlIjwvaT4iOmJyZWFrO2Nhc2UiPHUiOmkmJihpLnVuZGVybGluZT11LnZhbHx8MSk7YnJlYWs7Y2FzZSI8dS8+IjppJiYoaS51bmRlcmxpbmU9MSk7YnJlYWs7Y2FzZSI8L3U+IjpicmVhaztjYXNlIjxzdHJpa2UiOmkmJihpLnN0cmlrZT11LnZhbD9GZSh1LnZhbCk6MSk7YnJlYWs7Y2FzZSI8c3RyaWtlLz4iOmkmJihpLnN0cmlrZT0xKTticmVhaztjYXNlIjwvc3RyaWtlPiI6YnJlYWs7Y2FzZSI8c3oiOmkmJnUudmFsJiYoaS5zej0rdS52YWwpO2JyZWFrO2Nhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmJyZWFrO2Nhc2UiPG91dGxpbmUiOmkmJihpLm91dGxpbmU9dS52YWw/RmUodS52YWwpOjEpO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6aSYmKGkub3V0bGluZT0xKTticmVhaztjYXNlIjwvb3V0bGluZT4iOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aSYmKGkuc2hhZG93PXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxzaGFkb3cvPiI6aSYmKGkuc2hhZG93PTEpO2JyZWFrO2Nhc2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjb25kZW5zZSI6aSYmKGkuY29uZGVuc2U9dS52YWw/RmUodS52YWwpOjEpO2JyZWFrO2Nhc2UiPGNvbmRlbnNlLz4iOmkmJihpLmNvbmRlbnNlPTEpO2JyZWFrO2Nhc2UiPC9jb25kZW5zZT4iOmJyZWFrO2Nhc2UiPGV4dGVuZCI6aSYmKGkuZXh0ZW5kPXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxleHRlbmQvPiI6aSYmKGkuZXh0ZW5kPTEpO2JyZWFrO2Nhc2UiPC9leHRlbmQ+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOmkmJnUudmFsJiYoaS52ZXJ0QWxpZ249dS52YWwpO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6YnJlYWs7Y2FzZSI8ZmFtaWx5IjppJiZ1LnZhbCYmKGkuZmFtaWx5PXBhcnNlSW50KHUudmFsLDEwKSk7YnJlYWs7Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpicmVhaztjYXNlIjxzY2hlbWUiOmkmJnUudmFsJiYoaS5zY2hlbWU9dS52YWwpO2JyZWFrO2Nhc2UiPHNjaGVtZS8+IjpjYXNlIjwvc2NoZW1lPiI6YnJlYWs7Y2FzZSI8Y2hhcnNldCI6aSYmdS52YWwhPW51bGwmJihpLmNoYXJzZXQ9cGFyc2VJbnQodS52YWwsMTApKTticmVhaztjYXNlIjxjaGFyc2V0Lz4iOmNhc2UiPC9jaGFyc2V0PiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmk/aS5jb2xvcj16cih1LHIpOmMmJnMmJihzW2NdLmNvbG9yPXpyKHUscikpO2JyZWFrO2Nhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPGZpbGwiOmNhc2UiPGZpbGw+IjpmPXt9LG4mJihuLmZpbGw9Zik7YnJlYWs7Y2FzZSI8ZmlsbC8+IjpmPW51bGw7YnJlYWs7Y2FzZSI8L2ZpbGw+IjpmPW51bGw7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6ZiYmdS5wYXR0ZXJuVHlwZSYmKGYucGF0dGVyblR5cGU9dS5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6YnJlYWs7Y2FzZSI8ZmdDb2xvciI6ZiYmKGYuZmdDb2xvcj16cih1LHIpKTticmVhaztjYXNlIjxmZ0NvbG9yLz4iOmNhc2UiPC9mZ0NvbG9yPiI6YnJlYWs7Y2FzZSI8YmdDb2xvciI6ZiYmKGYuYmdDb2xvcj16cih1LHIpKTticmVhaztjYXNlIjxiZ0NvbG9yLz4iOmNhc2UiPC9iZ0NvbG9yPiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpzPXt9LG4mJihuLmJvcmRlcj1zKTticmVhaztjYXNlIjxib3JkZXIvPiI6cz1udWxsO2JyZWFrO2Nhc2UiPC9ib3JkZXI+IjpzPW51bGw7YnJlYWs7Y2FzZSI8bGVmdCI6Y2FzZSI8bGVmdD4iOmNhc2UiPGxlZnQvPiI6Yz0ibGVmdCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L2xlZnQ+IjpjPSIiO2JyZWFrO2Nhc2UiPHJpZ2h0IjpjYXNlIjxyaWdodD4iOmNhc2UiPHJpZ2h0Lz4iOmM9InJpZ2h0IixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvcmlnaHQ+IjpjPSIiO2JyZWFrO2Nhc2UiPHRvcCI6Y2FzZSI8dG9wPiI6Y2FzZSI8dG9wLz4iOmM9InRvcCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L3RvcD4iOmM9IiI7YnJlYWs7Y2FzZSI8Ym90dG9tIjpjYXNlIjxib3R0b20+IjpjYXNlIjxib3R0b20vPiI6Yz0iYm90dG9tIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvYm90dG9tPiI6Yz0iIjticmVhaztjYXNlIjxkaWFnb25hbCI6Y2FzZSI8ZGlhZ29uYWw+IjpjYXNlIjxkaWFnb25hbC8+IjpjPSJkaWFnb25hbCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6Yz0iIjticmVhaztjYXNlIjxob3Jpem9udGFsIjpjYXNlIjxob3Jpem9udGFsPiI6Y2FzZSI8aG9yaXpvbnRhbC8+IjpjPSJob3Jpem9udGFsIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvaG9yaXpvbnRhbD4iOmM9IiI7YnJlYWs7Y2FzZSI8dmVydGljYWwiOmNhc2UiPHZlcnRpY2FsPiI6Y2FzZSI8dmVydGljYWwvPiI6Yz0idmVydGljYWwiLHMmJihzW2NdPXNbY118fHt9LHUuc3R5bGUmJihzW2NdLnN0eWxlPXUuc3R5bGUpKSx1WzBdLnNsaWNlKC0yKT09Ii8+IiYmKGM9IiIpO2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOmM9IiI7YnJlYWs7Y2FzZSI8c3RhcnQiOmNhc2UiPHN0YXJ0PiI6Y2FzZSI8c3RhcnQvPiI6Yz0ic3RhcnQiLHMmJihzW2NdPXNbY118fHt9LHUuc3R5bGUmJihzW2NdLnN0eWxlPXUuc3R5bGUpKSx1WzBdLnNsaWNlKC0yKT09Ii8+IiYmKGM9IiIpO2JyZWFrO2Nhc2UiPC9zdGFydD4iOmM9IiI7YnJlYWs7Y2FzZSI8ZW5kIjpjYXNlIjxlbmQ+IjpjYXNlIjxlbmQvPiI6Yz0iZW5kIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvZW5kPiI6Yz0iIjticmVhaztjYXNlIjxhbGlnbm1lbnQiOm4mJihuLmFsaWdubWVudD17fSx1LnZlcnRpY2FsJiYobi5hbGlnbm1lbnQudmVydGljYWw9dS52ZXJ0aWNhbCksdS5ob3Jpem9udGFsJiYobi5hbGlnbm1lbnQuaG9yaXpvbnRhbD11Lmhvcml6b250YWwpLHUud3JhcFRleHQmJihuLmFsaWdubWVudC53cmFwVGV4dD1GZSh1LndyYXBUZXh0KSkpO2JyZWFrO2Nhc2UiPGFsaWdubWVudC8+IjpjYXNlIjwvYWxpZ25tZW50PiI6YnJlYWs7Y2FzZSI8bnVtRm10IjpuJiYobi5udW1GbXQ9e251bUZtdElkOnUubnVtRm10SWQhPW51bGw/cGFyc2VJbnQodS5udW1GbXRJZCwxMCk6dm9pZCAwLGZvcm1hdENvZGU6dS5mb3JtYXRDb2RlP0NlKFZlKHUuZm9ybWF0Q29kZSkpOnZvaWQgMH0pO2JyZWFrO2Nhc2UiPG51bUZtdC8+IjpjYXNlIjwvbnVtRm10PiI6YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbiI6biYmKG4ucHJvdGVjdGlvbj17fSx1LmxvY2tlZCE9bnVsbCYmKG4ucHJvdGVjdGlvbi5sb2NrZWQ9RmUodS5sb2NrZWQpKSx1LmhpZGRlbiE9bnVsbCYmKG4ucHJvdGVjdGlvbi5oaWRkZW49RmUodS5oaWRkZW4pKSk7YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNlIjwvcHJvdGVjdGlvbj4iOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6bz0hMDticmVhaztjYXNlIjwvZXh0PiI6bz0hMTticmVhaztkZWZhdWx0OmlmKHQmJnQuV1RGJiYhbyl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK3VbMF0rIiBpbiBkeGZzIil9fSl9ZnVuY3Rpb24gQmgoZSxhLHIsdCl7YS5Db2xvcnM9e2luZGV4ZWRDb2xvcnM6W10sbXJ1Q29sb3JzOltdLHRoZW1lQ29sb3JzOltdfTt2YXIgbj1udWxsLGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPGNvbG9ycyI6Y2FzZSI8Y29sb3JzPiI6Y2FzZSI8L2NvbG9ycz4iOmJyZWFrO2Nhc2UiPGluZGV4ZWRDb2xvcnMiOmNhc2UiPGluZGV4ZWRDb2xvcnM+IjpuPWEuQ29sb3JzLmluZGV4ZWRDb2xvcnM7YnJlYWs7Y2FzZSI8L2luZGV4ZWRDb2xvcnM+IjpuPW51bGw7YnJlYWs7Y2FzZSI8dGhlbWVDb2xvcnMiOmNhc2UiPHRoZW1lQ29sb3JzPiI6bj1hLkNvbG9ycy50aGVtZUNvbG9yczticmVhaztjYXNlIjwvdGhlbWVDb2xvcnM+IjpuPW51bGw7YnJlYWs7Y2FzZSI8bXJ1Q29sb3JzIjpjYXNlIjxtcnVDb2xvcnM+IjpuPWEuQ29sb3JzLm1ydUNvbG9yczticmVhaztjYXNlIjwvbXJ1Q29sb3JzPiI6bj1udWxsO2JyZWFrO2Nhc2UiPHJnYkNvbG9yIjpjYXNlIjxyZ2JDb2xvci8+IjpuJiZuLnB1c2goenIocyxyKSk7YnJlYWs7Y2FzZSI8L3JnYkNvbG9yPiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yLz4iOm4mJm4ucHVzaCh6cihzLHIpKTticmVhaztjYXNlIjwvY29sb3I+IjpicmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gY29sb3JzIil9fSl9dmFyIFVoPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHIsdCxuKXt2YXIgaT17fTtpZighcilyZXR1cm4gaTtyPUowKFN0KHIsIjwhLS0iLCItLT4iKSk7dmFyIGY7cmV0dXJuKGY9TGUociwibnVtRm10cyIpKSYmT2goZlswXSxpLG4pLChmPUxlKHIsImZvbnRzIikpJiZSaChmWzBdLGksdCxuKSwoZj1MZShyLCJmaWxscyIpKSYmSWgoZlswXSxpLHQsbiksKGY9TGUociwiYm9yZGVycyIpKSYmRGgoZlswXSxpLHQsbiksKGY9TGUociwiY2VsbFN0eWxlWGZzIikpJiZNaChmWzBdLGksbiksKGY9TGUociwiY2VsbFN0eWxlcyIpKSYmUGgoZlswXSxpLG4pLChmPUxlKHIsImNlbGxYZnMiKSkmJk5oKGZbMF0saSxuKSwoZj1MZShyLCJkeGZzIikpJiZMaChmWzBdLGksdCxuKSwoZj1MZShyLCJjb2xvcnMiKSkmJkJoKGZbMF0saSx0LG4pLGl9fSgpO2Z1bmN0aW9uIEhoKGUsYSl7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9bXIoZSk7cmV0dXJuW3IsdF19ZnVuY3Rpb24gV2goZSxhLHIpe3ZhciB0PXt9O3Quc3o9ZS5yZWFkX3NoaWZ0KDIpLzIwO3ZhciBuPUlvKGUpO24uZkl0YWxpYyYmKHQuaXRhbGljPTEpLG4uZkNvbmRlbnNlJiYodC5jb25kZW5zZT0xKSxuLmZFeHRlbmQmJih0LmV4dGVuZD0xKSxuLmZTaGFkb3cmJih0LnNoYWRvdz0xKSxuLmZPdXRsaW5lJiYodC5vdXRsaW5lPTEpLG4uZlN0cmlrZW91dCYmKHQuc3RyaWtlPTEpO3ZhciBpPWUucmVhZF9zaGlmdCgyKTtzd2l0Y2goaT09PTcwMCYmKHQuYm9sZD0xKSxlLnJlYWRfc2hpZnQoMikpe2Nhc2UgMTp0LnZlcnRBbGlnbj0ic3VwZXJzY3JpcHQiO2JyZWFrO2Nhc2UgMjp0LnZlcnRBbGlnbj0ic3Vic2NyaXB0IjticmVha312YXIgZj1lLnJlYWRfc2hpZnQoMSk7ZiE9MCYmKHQudW5kZXJsaW5lPWYpO3ZhciBzPWUucmVhZF9zaGlmdCgxKTtzPjAmJih0LmZhbWlseT1zKTt2YXIgYz1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGM+MCYmKHQuY2hhcnNldD1jKSxlLmwrKyx0LmNvbG9yPURvKGUpLGUucmVhZF9zaGlmdCgxKSl7Y2FzZSAxOnQuc2NoZW1lPSJtYWpvciI7YnJlYWs7Y2FzZSAyOnQuc2NoZW1lPSJtaW5vciI7YnJlYWt9cmV0dXJuIHQubmFtZT1tcihlKSx0fXZhciBWaD15cjtmdW5jdGlvbiBHaChlLGEpe3ZhciByPWUubCthLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmw9cix7aXhmZTp0LG51bUZtdElkOm59fXZhciBYaD15cjtmdW5jdGlvbiB6aChlLGEscil7dmFyIHQ9e307dC5OdW1iZXJGbXQ9W107Zm9yKHZhciBuIGluIFRlKXQuTnVtYmVyRm10W25dPVRlW25dO3QuQ2VsbFhmPVtdLHQuRm9udHM9W107dmFyIGk9W10sZj0hMTtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNDQ6dC5OdW1iZXJGbXRbY1swXV09Y1sxXSxMYShjWzFdLGNbMF0pO2JyZWFrO2Nhc2UgNDM6dC5Gb250cy5wdXNoKGMpLGMuY29sb3IudGhlbWUhPW51bGwmJmEmJmEudGhlbWVFbGVtZW50cyYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKGMuY29sb3IucmdiPWhuKGEudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbYy5jb2xvci50aGVtZV0ucmdiLGMuY29sb3IudGludHx8MCkpO2JyZWFrO2Nhc2UgMTAyNTpicmVhaztjYXNlIDQ1OmJyZWFrO2Nhc2UgNDY6YnJlYWs7Y2FzZSA0NzppW2kubGVuZ3RoLTFdPT02MTcmJnQuQ2VsbFhmLnB1c2goYyk7YnJlYWs7Y2FzZSA0ODpjYXNlIDUwNzpjYXNlIDU3MjpjYXNlIDQ3NTpicmVhaztjYXNlIDExNzE6Y2FzZSAyMTAyOmNhc2UgMTEzMDpjYXNlIDUxMjpjYXNlIDIwOTU6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6Zj0hMDticmVhaztjYXNlIDM2OmY9ITE7YnJlYWs7Y2FzZSAzNzppLnB1c2gobCksZj0hMDticmVhaztjYXNlIDM4OmkucG9wKCksZj0hMTticmVhaztkZWZhdWx0OmlmKG8uVD4wKWkucHVzaChsKTtlbHNlIGlmKG8uVDwwKWkucG9wKCk7ZWxzZSBpZighZnx8ci5XVEYmJmlbaS5sZW5ndGgtMV0hPTM3KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgMHgiK2wudG9TdHJpbmcoMTYpKX19KSx0fXZhciAkaD1bIjwvYTpsdDE+IiwiPC9hOmRrMT4iLCI8L2E6bHQyPiIsIjwvYTpkazI+IiwiPC9hOmFjY2VudDE+IiwiPC9hOmFjY2VudDI+IiwiPC9hOmFjY2VudDM+IiwiPC9hOmFjY2VudDQ+IiwiPC9hOmFjY2VudDU+IiwiPC9hOmFjY2VudDY+IiwiPC9hOmhsaW5rPiIsIjwvYTpmb2xIbGluaz4iXTtmdW5jdGlvbiBLaChlLGEscil7YS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZT1bXTt2YXIgdD17fTsoZVswXS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBpPW9lKG4pO3N3aXRjaChpWzBdKXtjYXNlIjxhOmNsclNjaGVtZSI6Y2FzZSI8L2E6Y2xyU2NoZW1lPiI6YnJlYWs7Y2FzZSI8YTpzcmdiQ2xyIjp0LnJnYj1pLnZhbDticmVhaztjYXNlIjwvYTpzcmdiQ2xyPiI6YnJlYWs7Y2FzZSI8YTpzeXNDbHIiOnQucmdiPWkubGFzdENscjticmVhaztjYXNlIjwvYTpzeXNDbHI+IjpicmVhaztjYXNlIjwvYTpkazE+IjpjYXNlIjwvYTpsdDE+IjpjYXNlIjxhOmRrMT4iOmNhc2UiPGE6bHQxPiI6Y2FzZSI8YTpkazI+IjpjYXNlIjwvYTpkazI+IjpjYXNlIjxhOmx0Mj4iOmNhc2UiPC9hOmx0Mj4iOmNhc2UiPGE6YWNjZW50MT4iOmNhc2UiPC9hOmFjY2VudDE+IjpjYXNlIjxhOmFjY2VudDI+IjpjYXNlIjwvYTphY2NlbnQyPiI6Y2FzZSI8YTphY2NlbnQzPiI6Y2FzZSI8L2E6YWNjZW50Mz4iOmNhc2UiPGE6YWNjZW50ND4iOmNhc2UiPC9hOmFjY2VudDQ+IjpjYXNlIjxhOmFjY2VudDU+IjpjYXNlIjwvYTphY2NlbnQ1PiI6Y2FzZSI8YTphY2NlbnQ2PiI6Y2FzZSI8L2E6YWNjZW50Nj4iOmNhc2UiPGE6aGxpbms+IjpjYXNlIjwvYTpobGluaz4iOmNhc2UiPGE6Zm9sSGxpbms+IjpjYXNlIjwvYTpmb2xIbGluaz4iOmlbMF0uY2hhckF0KDEpPT09Ii8iPyhhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lWyRoLmluZGV4T2YoaVswXSldPXQsdD17fSk6dC5uYW1lPWlbMF0uc2xpY2UoMyxpWzBdLmxlbmd0aC0xKTticmVhaztkZWZhdWx0OmlmKHImJnIuV1RGKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkICIraVswXSsiIGluIGNsclNjaGVtZSIpfX0pfWZ1bmN0aW9uIGpoKGUsYSxyKXthLnRoZW1lRWxlbWVudHM9e307dmFyIHQ7aWYoISh0PUhhKGUsImE6Y2xyU2NoZW1lIikpKXRocm93IG5ldyBFcnJvcigiY2xyU2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7aWYoS2godCxhLHIpLCEodD1IYShlLCJhOmZvbnRTY2hlbWUiKSkpdGhyb3cgbmV3IEVycm9yKCJmb250U2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7aWYoISh0PUhhKGUsImE6Zm10U2NoZW1lIikpKXRocm93IG5ldyBFcnJvcigiZm10U2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIil9ZnVuY3Rpb24gVnMoZSxhKXsoIWV8fGUubGVuZ3RoPT09MCkmJihlPVloKCkpO3ZhciByLHQ9e307aWYoIShyPUhhKGUsImE6dGhlbWVFbGVtZW50cyIpKSl0aHJvdyBuZXcgRXJyb3IoInRoZW1lRWxlbWVudHMgbm90IGZvdW5kIGluIHRoZW1lIik7cmV0dXJuIGpoKHJbMF0sdCxhKSx0LnJhdz1lLHR9ZnVuY3Rpb24gWWgoZSxhKXtpZihhJiZhLnRoZW1lWExTWClyZXR1cm4gYS50aGVtZVhMU1g7aWYoZSYmdHlwZW9mIGUucmF3PT0ic3RyaW5nIilyZXR1cm4gZS5yYXc7dmFyIHI9W21pXTtyZXR1cm4gcltyLmxlbmd0aF09JzxhOnRoZW1lIHhtbG5zOmE9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIiBuYW1lPSJPZmZpY2UgVGhlbWUiPicscltyLmxlbmd0aF09IjxhOnRoZW1lRWxlbWVudHM+IixyW3IubGVuZ3RoXT0nPGE6Y2xyU2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxyW3IubGVuZ3RoXT0nPGE6ZGsxPjxhOnN5c0NsciB2YWw9IndpbmRvd1RleHQiIGxhc3RDbHI9IjAwMDAwMCIvPjwvYTpkazE+JyxyW3IubGVuZ3RoXT0nPGE6bHQxPjxhOnN5c0NsciB2YWw9IndpbmRvdyIgbGFzdENscj0iRkZGRkZGIi8+PC9hOmx0MT4nLHJbci5sZW5ndGhdPSc8YTpkazI+PGE6c3JnYkNsciB2YWw9IjFGNDk3RCIvPjwvYTpkazI+JyxyW3IubGVuZ3RoXT0nPGE6bHQyPjxhOnNyZ2JDbHIgdmFsPSJFRUVDRTEiLz48L2E6bHQyPicscltyLmxlbmd0aF09JzxhOmFjY2VudDE+PGE6c3JnYkNsciB2YWw9IjRGODFCRCIvPjwvYTphY2NlbnQxPicscltyLmxlbmd0aF09JzxhOmFjY2VudDI+PGE6c3JnYkNsciB2YWw9IkMwNTA0RCIvPjwvYTphY2NlbnQyPicscltyLmxlbmd0aF09JzxhOmFjY2VudDM+PGE6c3JnYkNsciB2YWw9IjlCQkI1OSIvPjwvYTphY2NlbnQzPicscltyLmxlbmd0aF09JzxhOmFjY2VudDQ+PGE6c3JnYkNsciB2YWw9IjgwNjRBMiIvPjwvYTphY2NlbnQ0PicscltyLmxlbmd0aF09JzxhOmFjY2VudDU+PGE6c3JnYkNsciB2YWw9IjRCQUNDNiIvPjwvYTphY2NlbnQ1PicscltyLmxlbmd0aF09JzxhOmFjY2VudDY+PGE6c3JnYkNsciB2YWw9IkY3OTY0NiIvPjwvYTphY2NlbnQ2PicscltyLmxlbmd0aF09JzxhOmhsaW5rPjxhOnNyZ2JDbHIgdmFsPSIwMDAwRkYiLz48L2E6aGxpbms+JyxyW3IubGVuZ3RoXT0nPGE6Zm9sSGxpbms+PGE6c3JnYkNsciB2YWw9IjgwMDA4MCIvPjwvYTpmb2xIbGluaz4nLHJbci5sZW5ndGhdPSI8L2E6Y2xyU2NoZW1lPiIscltyLmxlbmd0aF09JzxhOmZvbnRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLHJbci5sZW5ndGhdPSI8YTptYWpvckZvbnQ+IixyW3IubGVuZ3RoXT0nPGE6bGF0aW4gdHlwZWZhY2U9IkNhbWJyaWEiLz4nLHJbci5sZW5ndGhdPSc8YTplYSB0eXBlZmFjZT0iIi8+JyxyW3IubGVuZ3RoXT0nPGE6Y3MgdHlwZWZhY2U9IiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJKcGFuIiB0eXBlZmFjZT0i77yt77yzIO+8sOOCtOOCt+ODg+OCryIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5nIiB0eXBlZmFjZT0i66eR7J2AIOqzoOuUlSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5zIiB0eXBlZmFjZT0i5a6L5L2TIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnQiIHR5cGVmYWNlPSLmlrDntLDmmI7pq5QiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQXJhYiIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iTW9vbEJvcmFuIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktuZGEiIHR5cGVmYWNlPSJUdW5nYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdXJ1IiB0eXBlZmFjZT0iUmFhdmkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2FucyIgdHlwZWZhY2U9IkV1cGhlbWlhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNoZXIiIHR5cGVmYWNlPSJQbGFudGFnZW5ldCBDaGVyb2tlZSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJZaWlpIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFlpIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRpYnQiIHR5cGVmYWNlPSJNaWNyb3NvZnQgSGltYWxheWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhYSIgdHlwZWZhY2U9Ik1WIEJvbGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRGV2YSIgdHlwZWZhY2U9Ik1hbmdhbCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUZWx1IiB0eXBlZmFjZT0iR2F1dGFtaSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUYW1sIiB0eXBlZmFjZT0iTGF0aGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU3lyYyIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik9yeWEiIHR5cGVmYWNlPSJLYWxpbmdhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1seW0iIHR5cGVmYWNlPSJLYXJ0aWthIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikxhb28iIHR5cGVmYWNlPSJEb2tDaGFtcGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU2luaCIgdHlwZWZhY2U9Iklza29vbGEgUG90YSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNb25nIiB0eXBlZmFjZT0iTW9uZ29saWFuIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlZpZXQiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz4nLHJbci5sZW5ndGhdPSI8L2E6bWFqb3JGb250PiIscltyLmxlbmd0aF09IjxhOm1pbm9yRm9udD4iLHJbci5sZW5ndGhdPSc8YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSIvPicscltyLmxlbmd0aF09JzxhOmVhIHR5cGVmYWNlPSIiLz4nLHJbci5sZW5ndGhdPSc8YTpjcyB0eXBlZmFjZT0iIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLvvK3vvLMg77yw44K044K344OD44KvIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbmciIHR5cGVmYWNlPSLrp5HsnYAg6rOg65SVIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSLlrovkvZMiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9IuaWsOe0sOaYjumrlCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJBcmFiIiB0eXBlZmFjZT0iQXJpYWwiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IkFyaWFsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iRGF1blBlbmgiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZhY2U9IlR1bmdhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDYW5zIiB0eXBlZmFjZT0iRXVwaGVtaWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlwZWZhY2U9IlBsYW50YWdlbmV0IENoZXJva2VlIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNyb3NvZnQgWWkgQmFpdGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGlidCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBIaW1hbGF5YSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRlbHUiIHR5cGVmYWNlPSJHYXV0YW1pIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iT3J5YSIgdHlwZWZhY2U9IkthbGluZ2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTaW5oIiB0eXBlZmFjZT0iSXNrb29sYSBQb3RhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJNb25nb2xpYW4gQmFpdGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVmlldCIgdHlwZWZhY2U9IkFyaWFsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+JyxyW3IubGVuZ3RoXT0iPC9hOm1pbm9yRm9udD4iLHJbci5sZW5ndGhdPSI8L2E6Zm9udFNjaGVtZT4iLHJbci5sZW5ndGhdPSc8YTpmbXRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLHJbci5sZW5ndGhdPSI8YTpmaWxsU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0nPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD4nLHJbci5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicscltyLmxlbmd0aF09IjxhOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI1MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMzUwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMzcwMDAiLz48YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIxNTAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIxIi8+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxyW3IubGVuZ3RoXT0iPGE6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjEwMDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNTAwMDAiLz48YTpzaGFkZSB2YWw9IjEwMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIwIi8+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09IjwvYTpmaWxsU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6bG5TdHlsZUxzdD4iLHJbci5sZW5ndGhdPSc8YTpsbiB3PSI5NTI1IiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZhbD0iOTUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLHJbci5sZW5ndGhdPSc8YTpsbiB3PSIyNTQwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicscltyLmxlbmd0aF09JzxhOmxuIHc9IjM4MTAwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxyW3IubGVuZ3RoXT0iPC9hOmxuU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0THN0PiIscltyLmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjAwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM4MDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIscltyLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0nPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMzAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzUwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicscltyLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFwZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzNTAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSc8YTpzY2VuZTNkPjxhOmNhbWVyYSBwcnN0PSJvcnRob2dyYXBoaWNGcm9udCI+PGE6cm90IGxhdD0iMCIgbG9uPSIwIiByZXY9IjAiLz48L2E6Y2FtZXJhPjxhOmxpZ2h0UmlnIHJpZz0idGhyZWVQdCIgZGlyPSJ0Ij48YTpyb3QgbGF0PSIwIiBsb249IjAiIHJldj0iMTIwMDAwMCIvPjwvYTpsaWdodFJpZz48L2E6c2NlbmUzZD4nLHJbci5sZW5ndGhdPSc8YTpzcDNkPjxhOmJldmVsVCB3PSI2MzUwMCIgaD0iMjU0MDAiLz48L2E6c3AzZD4nLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlTHN0PiIscltyLmxlbmd0aF09IjxhOmJnRmlsbFN0eWxlTHN0PiIscltyLmxlbmd0aF09JzxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+JyxyW3IubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLHJbci5sZW5ndGhdPSI8YTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNDAwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjQwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjQ1MDAwIi8+PGE6c2hhZGUgdmFsPSI5OTAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSIyMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjI1NTAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpwYXRoIHBhdGg9ImNpcmNsZSI+PGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iLTgwMDAwIiByPSI1MDAwMCIgYj0iMTgwMDAwIi8+PC9hOnBhdGg+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxyW3IubGVuZ3RoXT0iPGE6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjgwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9IjMwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMjAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0iPC9hOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOnBhdGggcGF0aD0iY2lyY2xlIj48YTpmaWxsVG9SZWN0IGw9IjUwMDAwIiB0PSI1MDAwMCIgcj0iNTAwMDAiIGI9IjUwMDAwIi8+PC9hOnBhdGg+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09IjwvYTpiZ0ZpbGxTdHlsZUxzdD4iLHJbci5sZW5ndGhdPSI8L2E6Zm10U2NoZW1lPiIscltyLmxlbmd0aF09IjwvYTp0aGVtZUVsZW1lbnRzPiIscltyLmxlbmd0aF09IjxhOm9iamVjdERlZmF1bHRzPiIscltyLmxlbmd0aF09IjxhOnNwRGVmPiIscltyLmxlbmd0aF09JzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD0iMSI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD0iMyI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PSJtaW5vciI+PGE6c2NoZW1lQ2xyIHZhbD0ibHQxIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPicscltyLmxlbmd0aF09IjwvYTpzcERlZj4iLHJbci5sZW5ndGhdPSI8YTpsbkRlZj4iLHJbci5sZW5ndGhdPSc8YTpzcFByLz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9IjAiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PSIxIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD0ibWlub3IiPjxhOnNjaGVtZUNsciB2YWw9InR4MSIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nLHJbci5sZW5ndGhdPSI8L2E6bG5EZWY+IixyW3IubGVuZ3RoXT0iPC9hOm9iamVjdERlZmF1bHRzPiIscltyLmxlbmd0aF09IjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz4iLHJbci5sZW5ndGhdPSI8L2E6dGhlbWU+IixyLmpvaW4oIiIpfWZ1bmN0aW9uIEpoKGUsYSxyKXt2YXIgdD1lLmwrYSxuPWUucmVhZF9zaGlmdCg0KTtpZihuIT09MTI0MjI2KXtpZighci5jZWxsU3R5bGVzKXtlLmw9dDtyZXR1cm59dmFyIGk9ZS5zbGljZShlLmwpO2UubD10O3ZhciBmO3RyeXtmPWdpKGkse3R5cGU6ImFycmF5In0pfWNhdGNoe3JldHVybn12YXIgcz1scihmLCJ0aGVtZS90aGVtZS90aGVtZTEueG1sIiwhMCk7aWYocylyZXR1cm4gVnMocyxyKX19ZnVuY3Rpb24gWmgoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCg0KX1mdW5jdGlvbiBxaChlKXt2YXIgYT17fTtzd2l0Y2goYS54Y2xyVHlwZT1lLnJlYWRfc2hpZnQoMiksYS5uVGludFNoYWRlPWUucmVhZF9zaGlmdCgyLCJpIiksYS54Y2xyVHlwZSl7Y2FzZSAwOmUubCs9NDticmVhaztjYXNlIDE6YS54Y2xyVmFsdWU9UWgoZSw0KTticmVhaztjYXNlIDI6YS54Y2xyVmFsdWU9ZHMoZSk7YnJlYWs7Y2FzZSAzOmEueGNsclZhbHVlPVpoKGUpO2JyZWFrO2Nhc2UgNDplLmwrPTQ7YnJlYWt9cmV0dXJuIGUubCs9OCxhfWZ1bmN0aW9uIFFoKGUsYSl7dmFyIHI9ZS5sK2EsdD1lLnJlYWRfc2hpZnQoMikmMTI3O3JldHVybiBlLmw9cix0fWZ1bmN0aW9uIGUxKGUsYSl7cmV0dXJuIHlyKGUsYSl9ZnVuY3Rpb24gcjEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLTQsdD1bYV07c3dpdGNoKGEpe2Nhc2UgNDpjYXNlIDU6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6dFsxXT1xaChlKTticmVhaztjYXNlIDY6dFsxXT1lMShlLHIpO2JyZWFrO2Nhc2UgMTQ6Y2FzZSAxNTp0WzFdPWUucmVhZF9zaGlmdChyPT09MT8xOjIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRXh0UHJvcCB0eXBlOiAiK2ErIiAiK3IpfXJldHVybiB0fWZ1bmN0aW9uIGExKGUsYSl7dmFyIHI9ZS5sK2E7ZS5sKz0yO3ZhciB0PWUucmVhZF9zaGlmdCgyKTtlLmwrPTI7Zm9yKHZhciBuPWUucmVhZF9zaGlmdCgyKSxpPVtdO24tLSA+MDspaS5wdXNoKHIxKGUsci1lLmwpKTtyZXR1cm57aXhmZTp0LGV4dDppfX1mdW5jdGlvbiB0MShlLGEpe2UmJihlLmRhdGF8fChlLmRhdGE9e30pLGEuZm9yRWFjaChmdW5jdGlvbihyKXtzd2l0Y2goclswXSl7Y2FzZSA0OmUuZGF0YS54ZmV4dEZvcmU9clsxXTticmVhaztjYXNlIDU6ZS5kYXRhLnhmZXh0QmFjaz1yWzFdO2JyZWFrO2Nhc2UgNjplLmRhdGEuZ3JhZGllbnRGaWxsPXJbMV07YnJlYWs7Y2FzZSA3OmUuZGF0YS54ZmV4dFRvcD1yWzFdO2JyZWFrO2Nhc2UgODplLmRhdGEueGZleHRCb3R0b209clsxXTticmVhaztjYXNlIDk6ZS5kYXRhLnhmZXh0TGVmdD1yWzFdO2JyZWFrO2Nhc2UgMTA6ZS5kYXRhLnhmZXh0UmlnaHQ9clsxXTticmVhaztjYXNlIDExOmUuZGF0YS54ZmV4dERpYWc9clsxXTticmVhaztjYXNlIDEzOmUueGZleHRGb250PXJbMV07YnJlYWs7Y2FzZSAxNDplLmZvbnRTY2hlbWU9clsxXTticmVhaztjYXNlIDE1OmUuZGF0YS5jSW5kZW50PXJbMV07YnJlYWt9fSkpfWZ1bmN0aW9uIG4xKGUsYSl7cmV0dXJue2ZsYWdzOmUucmVhZF9zaGlmdCg0KSx2ZXJzaW9uOmUucmVhZF9zaGlmdCg0KSxuYW1lOm1yKGUpfX1mdW5jdGlvbiBpMShlKXtmb3IodmFyIGE9W10scj1lLnJlYWRfc2hpZnQoNCk7ci0tID4wOylhLnB1c2goW2UucmVhZF9zaGlmdCg0KSxlLnJlYWRfc2hpZnQoNCldKTtyZXR1cm4gYX1mdW5jdGlvbiBzMShlKXtyZXR1cm4gZS5sKz00LGUucmVhZF9zaGlmdCg0KSE9MH1mdW5jdGlvbiBmMShlLGEscil7dmFyIHQ9e1R5cGVzOltdLENlbGw6W10sVmFsdWU6W119LG49cnx8e30saT1bXSxmPSExLHM9MjtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNTg6YnJlYWs7Y2FzZSA1OTpicmVhaztjYXNlIDMzNTp0LlR5cGVzLnB1c2goe25hbWU6Yy5uYW1lfSk7YnJlYWs7Y2FzZSA1MTpjLmZvckVhY2goZnVuY3Rpb24odSl7cz09MT90LkNlbGwucHVzaCh7dHlwZTp0LlR5cGVzW3VbMF0tMV0ubmFtZSxpbmRleDp1WzFdfSk6cz09MCYmdC5WYWx1ZS5wdXNoKHt0eXBlOnQuVHlwZXNbdVswXS0xXS5uYW1lLGluZGV4OnVbMV19KX0pO2JyZWFrO2Nhc2UgMzM3OnM9Yz8xOjA7YnJlYWs7Y2FzZSAzMzg6cz0yO2JyZWFrO2Nhc2UgMzU6aS5wdXNoKGwpLGY9ITA7YnJlYWs7Y2FzZSAzNjppLnBvcCgpLGY9ITE7YnJlYWs7ZGVmYXVsdDppZighby5UKXtpZighZnx8bi5XVEYmJmlbaS5sZW5ndGgtMV0hPTM1KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgMHgiK2wudG9TdHJpbmcoMTYpKX19fSksdH1mdW5jdGlvbiBjMShlLGEscil7dmFyIHQ9e1R5cGVzOltdLENlbGw6W10sVmFsdWU6W119O2lmKCFlKXJldHVybiB0O3ZhciBuPSExLGk9MixmO3JldHVybiBlLnJlcGxhY2UobnIsZnVuY3Rpb24ocyl7dmFyIGM9b2Uocyk7c3dpdGNoKEFyKGNbMF0pKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxtZXRhZGF0YSI6Y2FzZSI8L21ldGFkYXRhPiI6YnJlYWs7Y2FzZSI8bWV0YWRhdGFUeXBlcyI6Y2FzZSI8L21ldGFkYXRhVHlwZXM+IjpicmVhaztjYXNlIjxtZXRhZGF0YVR5cGUiOnQuVHlwZXMucHVzaCh7bmFtZTpjLm5hbWV9KTticmVhaztjYXNlIjwvbWV0YWRhdGFUeXBlPiI6YnJlYWs7Y2FzZSI8ZnV0dXJlTWV0YWRhdGEiOmZvcih2YXIgbz0wO288dC5UeXBlcy5sZW5ndGg7KytvKXQuVHlwZXNbb10ubmFtZT09Yy5uYW1lJiYoZj10LlR5cGVzW29dKTticmVhaztjYXNlIjwvZnV0dXJlTWV0YWRhdGE+IjpicmVhaztjYXNlIjxiaz4iOmJyZWFrO2Nhc2UiPC9iaz4iOmJyZWFrO2Nhc2UiPHJjIjppPT0xP3QuQ2VsbC5wdXNoKHt0eXBlOnQuVHlwZXNbYy50LTFdLm5hbWUsaW5kZXg6K2Mudn0pOmk9PTAmJnQuVmFsdWUucHVzaCh7dHlwZTp0LlR5cGVzW2MudC0xXS5uYW1lLGluZGV4OitjLnZ9KTticmVhaztjYXNlIjwvcmM+IjpicmVhaztjYXNlIjxjZWxsTWV0YWRhdGEiOmk9MTticmVhaztjYXNlIjwvY2VsbE1ldGFkYXRhPiI6aT0yO2JyZWFrO2Nhc2UiPHZhbHVlTWV0YWRhdGEiOmk9MDticmVhaztjYXNlIjwvdmFsdWVNZXRhZGF0YT4iOmk9MjticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8ZXh0IjpuPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpuPSExO2JyZWFrO2Nhc2UiPHJ2YiI6aWYoIWYpYnJlYWs7Zi5vZmZzZXRzfHwoZi5vZmZzZXRzPVtdKSxmLm9mZnNldHMucHVzaCgrYy5pKTticmVhaztkZWZhdWx0OmlmKCFuJiZyPy5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitjWzBdKyIgaW4gbWV0YWRhdGEiKX1yZXR1cm4gc30pLHR9ZnVuY3Rpb24gbzEoZSl7dmFyIGE9W107aWYoIWUpcmV0dXJuIGE7dmFyIHI9MTtyZXR1cm4oZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPW9lKHQpO3N3aXRjaChuWzBdKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxjYWxjQ2hhaW4iOmNhc2UiPGNhbGNDaGFpbj4iOmNhc2UiPC9jYWxjQ2hhaW4+IjpicmVhaztjYXNlIjxjIjpkZWxldGUgblswXSxuLmk/cj1uLmk6bi5pPXIsYS5wdXNoKG4pO2JyZWFrfX0pLGF9ZnVuY3Rpb24gbDEoZSl7dmFyIGE9e307YS5pPWUucmVhZF9zaGlmdCg0KTt2YXIgcj17fTtyLnI9ZS5yZWFkX3NoaWZ0KDQpLHIuYz1lLnJlYWRfc2hpZnQoNCksYS5yPUllKHIpO3ZhciB0PWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gdCYyJiYoYS5sPSIxIiksdCY4JiYoYS5hPSIxIiksYX1mdW5jdGlvbiB1MShlLGEscil7dmFyIHQ9W107cmV0dXJuIHZhKGUsZnVuY3Rpb24oaSxmLHMpe3N3aXRjaChzKXtjYXNlIDYzOnQucHVzaChpKTticmVhaztkZWZhdWx0OmlmKCFmLlQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrcy50b1N0cmluZygxNikpfX0pLHR9ZnVuY3Rpb24gc2coKXt9ZnVuY3Rpb24gaDEoZSxhLHIsdCl7aWYoIWUpcmV0dXJuIGU7dmFyIG49dHx8e30saT0hMTt2YShlLGZ1bmN0aW9uKHMsYyxvKXtzd2l0Y2gobyl7Y2FzZSAzNTk6Y2FzZSAzNjM6Y2FzZSAzNjQ6Y2FzZSAzNjY6Y2FzZSAzNjc6Y2FzZSAzNjg6Y2FzZSAzNjk6Y2FzZSAzNzA6Y2FzZSAzNzE6Y2FzZSA0NzI6Y2FzZSA1Nzc6Y2FzZSA1Nzg6Y2FzZSA1Nzk6Y2FzZSA1ODA6Y2FzZSA1ODE6Y2FzZSA1ODI6Y2FzZSA1ODM6Y2FzZSA1ODQ6Y2FzZSA1ODU6Y2FzZSA1ODY6Y2FzZSA1ODc6Y2FzZSA1MTA4OmJyZWFrO2Nhc2UgMzU6aT0hMDticmVhaztjYXNlIDM2Omk9ITE7YnJlYWs7ZGVmYXVsdDppZighYy5UKXtpZighaXx8bi5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrby50b1N0cmluZygxNikpfX19LG4pfWZ1bmN0aW9uIEdzKGUsYSl7aWYoIWUpcmV0dXJue2NoYXJ0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdLHJhdzoiIn07dmFyIHI9e2NoYXJ0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdLHJhdzplfTthfHwoYT17IiFpZCI6e319KTt2YXIgdD0vPCg/Olx3KzopPyh0d29DZWxsQW5jaG9yfG9uZUNlbGxBbmNob3J8YWJzb2x1dGVBbmNob3IpXGJbXj5dKj5bXHNcU10qPzxcLyg/Olx3KzopP1wxPi9nLG49ZS5tYXRjaCh0KXx8W2VdO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIGY9eDEoaSk7KGkubWF0Y2goLzxjOmNoYXJ0XGJbXjw+XSpyOmlkPSIoW148PiJdKikiL2cpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgbz1jLm1hdGNoKC9yOmlkPSIoW148PiJdKikiLyk7aWYobyl7dmFyIGw9YVsiIWlkIl1bb1sxXV18fHt9O3IuY2hhcnRzLnB1c2goe2lkOm9bMV0scmVsOmwsdGFyZ2V0OmwuVGFyZ2V0LGFuY2hvcjpmfSl9fSksKGkubWF0Y2goLzxhOmJsaXBcYltePD5dKig/OnI6ZW1iZWR8cjpsaW5rKT0iKFtePD4iXSopIi9nKXx8W10pLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIG89Yy5tYXRjaCgvKD86cjplbWJlZHxyOmxpbmspPSIoW148PiJdKikiLyk7aWYobyl7dmFyIGw9YVsiIWlkIl1bb1sxXV18fHt9O3IuaW1hZ2VzLnB1c2goe2lkOm9bMV0scmVsOmwsdGFyZ2V0OmwuVGFyZ2V0LGFuY2hvcjpmfSl9fSk7dmFyIHM9ZDEoaSk7cyYmci5zaGFwZXMucHVzaCh7dGV4dDpzLGFuY2hvcjpmLHJhdzppfSl9KSxyLmNoYXJ0PXIuY2hhcnRzWzBdJiZyLmNoYXJ0c1swXS50YXJnZXQscn1mdW5jdGlvbiBYcyhlLGEpe3ZhciByPUxlKGUsYSksdD1yJiZyWzFdfHwiIjtmdW5jdGlvbiBuKGkpe3ZhciBmPUxlKHQsaSk7cmV0dXJuIGYmJmZbMV0hPW51bGw/cGFyc2VJbnQoZlsxXSwxMCk6MH1yZXR1cm57Y29sOm4oImNvbCIpLGNvbE9mZjpuKCJjb2xPZmYiKSxyb3c6bigicm93Iikscm93T2ZmOm4oInJvd09mZiIpfX1mdW5jdGlvbiB4MShlKXt2YXIgYT0oZS5tYXRjaCgvXjwoPzpcdys6KT8oXHcrKS8pfHxbXSlbMV18fCJhbmNob3IiLHI9e3R5cGU6YX07KGUuaW5kZXhPZigiPHhkcjpmcm9tIik+PTB8fGUuaW5kZXhPZigiPGZyb20iKT49MCkmJihyLmZyb209WHMoZSwiZnJvbSIpKSwoZS5pbmRleE9mKCI8eGRyOnRvIik+PTB8fGUuaW5kZXhPZigiPHRvIik+PTApJiYoci50bz1YcyhlLCJ0byIpKTt2YXIgdD1lLm1hdGNoKC88KD86XHcrOik/cG9zXGJbXjw+XSpcLz4vKTtpZih0KXt2YXIgbj1vZSh0WzBdKTtyLnBvcz17eDpuLng/cGFyc2VJbnQobi54LDEwKTowLHk6bi55P3BhcnNlSW50KG4ueSwxMCk6MH19dmFyIGk9ZS5tYXRjaCgvPCg/Olx3KzopP2V4dFxiW148Pl0qXC8+Lyk7aWYoaSl7dmFyIGY9b2UoaVswXSk7ci5leHQ9e2N4OmYuY3g/cGFyc2VJbnQoZi5jeCwxMCk6MCxjeTpmLmN5P3BhcnNlSW50KGYuY3ksMTApOjB9fXJldHVybiByfWZ1bmN0aW9uIGQxKGUpe3ZhciBhPVtdO3JldHVybihlLm1hdGNoKC88YTp0XGJbXj5dKj5bXHNcU10qPzxcL2E6dD4vZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2EucHVzaChDZShyLnJlcGxhY2UoLzxbXj5dKj4vZywiIikpKX0pLGEuam9pbigiIil9ZnVuY3Rpb24gdjEoZSxhLHIpe3ZhciB0PWUuc2xpY2UoZS5sLGUubCthKTtyZXR1cm4gZS5sKz1hLCFyfHwhci5kcmF3aW5ncyYmIXIuY2hhcnRzP3tyYXc6dCxibGlwczpbXSxzaGFwZXM6W10saW1hZ2VzOltdLGNoYXJ0czpbXSxncm91cHM6ITB9OnpzKHQsITApfWZ1bmN0aW9uIHAxKGUsYSxyKXt2YXIgdD1lLnNsaWNlKGUubCxlLmwrYSk7cmV0dXJuIGUubCs9YSwhcnx8IXIuZHJhd2luZ3MmJiFyLmNoYXJ0cz97cmF3OnQsYmxpcHM6W10sc2hhcGVzOltdLGltYWdlczpbXSxjaGFydHM6W10sZ3JvdXBzOiExfTp6cyh0LCExKX1mdW5jdGlvbiBNcihlLGEpe3JldHVybiBlW2FdfGVbYSsxXTw8OH1mdW5jdGlvbiBodChlLGEpe3JldHVybihlW2FdfGVbYSsxXTw8OHxlW2ErMl08PDE2fGVbYSszXTw8MjQpPj4+MH1mdW5jdGlvbiB6cyhlLGEpe3ZhciByPXtyYXc6ZSxibGlwczpbXSxzaGFwZXM6W10saW1hZ2VzOltdLGNoYXJ0czpbXSxncm91cHM6ISFhfSx0PXtvdXQ6cixjdXJyZW50Om51bGx9O3RyeXtnbihlLDAsZS5sZW5ndGgsdCl9Y2F0Y2gobil7ci5lcnJvcj1uLm1lc3NhZ2V8fFN0cmluZyhuKX1yZXR1cm4gcn1mdW5jdGlvbiBnbihlLGEscix0KXtmb3IodmFyIG49YTtuKzg8PXImJm4rODw9ZS5sZW5ndGg7KXt2YXIgaT1NcihlLG4pLGY9TXIoZSxuKzIpLHM9aHQoZSxuKzQpLGM9aSYxNSxvPWk+PjQsbD1uKzgsdT1sK3M7aWYodT5lLmxlbmd0aCYmKHU9ZS5sZW5ndGgpLGY9PTYxNDQ0KXt2YXIgeD17cmF3OmUuc2xpY2Uobix1KSxwcm9wczp7fX07dC5vdXQuc2hhcGVzLnB1c2goeCk7dmFyIGg9dC5jdXJyZW50O3QuY3VycmVudD14LGduKGUsbCx1LHQpLHQuY3VycmVudD1ofWVsc2UgZj09NjE0NDc/dC5vdXQuYmxpcHMucHVzaChfMShlLGwsdSxvKSk6Zj09NjE0NTAmJnQuY3VycmVudD8odC5jdXJyZW50LnNwaWQ9aHQoZSxsKSx0LmN1cnJlbnQuZmxhZ3M9aHQoZSxsKzQpKTpmPT02MTQ1MSYmdC5jdXJyZW50Pyh0LmN1cnJlbnQucHJvcHM9ZzEoZSxsLHUsbyksdC5jdXJyZW50LnByb3BzLnBpYiE9bnVsbCYmKHQuY3VycmVudC5ibGlwSWQ9dC5jdXJyZW50LnByb3BzLnBpYikpOmY9PTYxNDU2JiZ0LmN1cnJlbnQ/dC5jdXJyZW50LmFuY2hvcj1tMShlLGwsdSk6Zj09NjE0NTcmJnQuY3VycmVudD90LmN1cnJlbnQuY2xpZW50RGF0YT1lLnNsaWNlKGwsdSk6Yz09MTUmJmduKGUsbCx1LHQpO249dX19ZnVuY3Rpb24gZzEoZSxhLHIsdCl7Zm9yKHZhciBuPXt9LGk9W10sZj1hLHM9MDtzPHQmJmYrNjw9cjsrK3MsZis9Nil7dmFyIGM9TXIoZSxmKSxvPWh0KGUsZisyKSxsPWMmMTYzODM7bltsXT1vLGMmMTYzODQmJmkucHVzaChbbCxvXSksbD09MjYwJiYobi5waWI9byksbD09MjYxJiYobi5waWJOYW1lPW8pLGw9PTg5NiYmKG4uZmlsbENvbG9yPW8pLGw9PTg5NyYmKG4uZmlsbE9wYWNpdHk9byksbD09OTU5JiYobi5saW5lQ29sb3I9byl9cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbih1KXtmK3VbMV08PXImJihuWyJjb21wbGV4XyIrdVswXV09ZS5zbGljZShmLGYrdVsxXSkpLGYrPXVbMV19KSxufWZ1bmN0aW9uIG0xKGUsYSxyKXtpZihyLWE8MTgpcmV0dXJue307dmFyIHQ9YSxuPU1yKGUsdCk7dCs9Mjt2YXIgaT1NcihlLHQpLGY9TXIoZSx0KzIpLHM9TXIoZSx0KzQpLGM9TXIoZSx0KzYpO3QrPTg7dmFyIG89TXIoZSx0KSxsPU1yKGUsdCsyKSx1PU1yKGUsdCs0KSx4PU1yKGUsdCs2KTtyZXR1cm57dHlwZToidHdvQ2VsbEFuY2hvciIsZmxhZ3M6bixmcm9tOntjb2w6aSxjb2xPZmY6Zio5NTI1LzEwMjQscm93OnMscm93T2ZmOmMqOTUyNS8yNTZ9LHRvOntjb2w6byxjb2xPZmY6bCo5NTI1LzEwMjQscm93OnUscm93T2ZmOngqOTUyNS8yNTZ9fX1mdW5jdGlvbiAkcyhlLGEscil7Zm9yKHZhciB0PWE7dCs4PD1yOysrdCl7aWYoZVt0XT09MTM3JiZlW3QrMV09PTgwJiZlW3QrMl09PTc4JiZlW3QrM109PTcxKXJldHVyblt0LCJpbWFnZS9wbmciXTtpZihlW3RdPT0yNTUmJmVbdCsxXT09MjE2JiZlW3QrMl09PTI1NSlyZXR1cm5bdCwiaW1hZ2UvanBlZyJdO2lmKGVbdF09PTY2JiZlW3QrMV09PTc3KXJldHVyblt0LCJpbWFnZS9ibXAiXX1yZXR1cm5bYSwiIl19ZnVuY3Rpb24gXzEoZSxhLHIsdCl7dmFyIG49e2luZGV4OnQscmF3OmUuc2xpY2UoYSxyKX07aWYoci1hPDM2KXJldHVybiBuO24uYnRXaW4zMj1lW2FdLG4uYnRNYWNPUz1lW2ErMV0sbi5zaXplPWh0KGUsYSsyMCksbi5jUmVmPWh0KGUsYSsyNCk7dmFyIGk9YSszNjtpZihpKzg8PXIpe24uYmxpcFR5cGU9TXIoZSxpKzIpO3ZhciBmPWkrOCxzPXIsYz0kcyhlLGYscyk7Y1sxXSYmKG4uY29udGVudFR5cGU9Y1sxXSxuLmRhdGE9ZS5zbGljZShjWzBdLHMpLG4uZGF0YVVSST0iZGF0YToiK24uY29udGVudFR5cGUrIjtiYXNlNjQsIitYMChuLmRhdGEpKX1yZXR1cm4gbn1mdW5jdGlvbiBrMShlLGEscil7dmFyIHQ9MDsoeGkoZSwiKD86c2hhcGV8cmVjdCkiKXx8W10pLmZvckVhY2goZnVuY3Rpb24obil7dmFyIGk9IiIsZj0hMCxzPS0xLGM9LTEsbz0tMTtzd2l0Y2gobi5yZXBsYWNlKG5yLGZ1bmN0aW9uKHUseCl7dmFyIGg9b2UodSk7c3dpdGNoKEFyKGhbMF0pKXtjYXNlIjxDbGllbnREYXRhIjpoLk9iamVjdFR5cGUmJihpPWguT2JqZWN0VHlwZSk7YnJlYWs7Y2FzZSI8VmlzaWJsZSI6Y2FzZSI8VmlzaWJsZS8+IjpmPSExO2JyZWFrO2Nhc2UiPFJvdyI6Y2FzZSI8Um93PiI6cz14K3UubGVuZ3RoO2JyZWFrO2Nhc2UiPC9Sb3c+IjpjPStuLnNsaWNlKHMseCkudHJpbSgpO2JyZWFrO2Nhc2UiPENvbHVtbiI6Y2FzZSI8Q29sdW1uPiI6cz14K3UubGVuZ3RoO2JyZWFrO2Nhc2UiPC9Db2x1bW4+IjpvPStuLnNsaWNlKHMseCkudHJpbSgpO2JyZWFrfXJldHVybiIifSksaSl7Y2FzZSJOb3RlIjp2YXIgbD1ZdChhLGM+PTAmJm8+PTA/SWUoe3I6YyxjOm99KTpyW3RdLnJlZik7bC5jJiYobC5jLmhpZGRlbj1mKSwrK3Q7YnJlYWt9fSl9ZnVuY3Rpb24gS3MoZSxhLHIsdCl7dmFyIG49ZVsiIWRhdGEiXSE9bnVsbCxpO2EuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1ncihmLnJlZik7aWYoIShzLnI8MHx8cy5jPDApKXtpZihuPyhlWyIhZGF0YSJdW3Mucl18fChlWyIhZGF0YSJdW3Mucl09W10pLGk9ZVsiIWRhdGEiXVtzLnJdW3MuY10pOmk9ZVtmLnJlZl0sIWkpe2k9e3Q6InoifSxuP2VbIiFkYXRhIl1bcy5yXVtzLmNdPWk6ZVtmLnJlZl09aTt2YXIgYz1aZShlWyIhcmVmIl18fCJCRFdHTzEwMDAwMDE6QTEiKTtjLnMucj5zLnImJihjLnMucj1zLnIpLGMuZS5yPHMuciYmKGMuZS5yPXMuciksYy5zLmM+cy5jJiYoYy5zLmM9cy5jKSxjLmUuYzxzLmMmJihjLmUuYz1zLmMpO3ZhciBvPURlKGMpO2VbIiFyZWYiXT1vfWkuY3x8KGkuYz1bXSk7dmFyIGw9e2E6Zi5hdXRob3IsdDpmLnQscjpmLnIsVDpyfTtmLmgmJihsLmg9Zi5oKTtmb3IodmFyIHU9aS5jLmxlbmd0aC0xO3U+PTA7LS11KXtpZighciYmaS5jW3VdLlQpcmV0dXJuO3ImJiFpLmNbdV0uVCYmaS5jLnNwbGljZSh1LDEpfWlmKHImJnQpe2Zvcih1PTA7dTx0Lmxlbmd0aDsrK3UpaWYobC5hPT10W3VdLmlkKXtsLmE9dFt1XS5uYW1lfHxsLmE7YnJlYWt9fWkuYy5wdXNoKGwpfX0pfWZ1bmN0aW9uIHcxKGUsYSl7aWYoZS5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRzICpcLz4vKSlyZXR1cm5bXTt2YXIgcj1bXSx0PVtdLG49TGUoZSwiYXV0aG9ycyIpO24mJm5bMV0mJm5bMV0uc3BsaXQoLzxcL1x3Kjo/YXV0aG9yPi8pLmZvckVhY2goZnVuY3Rpb24oZil7aWYoIShmPT09IiJ8fGYudHJpbSgpPT09IiIpKXt2YXIgcz1mLm1hdGNoKC88KD86XHcrOik/YXV0aG9yW148Pl0qPiguKikvKTtzJiZyLnB1c2goc1sxXSl9fSk7dmFyIGk9TGUoZSwiY29tbWVudExpc3QiKTtyZXR1cm4gaSYmaVsxXSYmaVsxXS5zcGxpdCgvPFwvXHcqOj9jb21tZW50Pi8pLmZvckVhY2goZnVuY3Rpb24oZil7aWYoIShmPT09IiJ8fGYudHJpbSgpPT09IiIpKXt2YXIgcz1mLm1hdGNoKC88KD86XHcrOik/Y29tbWVudFtePD5dKj4vKTtpZihzKXt2YXIgYz1vZShzWzBdKSxvPXthdXRob3I6Yy5hdXRob3JJZCYmcltjLmF1dGhvcklkXXx8InNoZWV0anNnaG9zdCIscmVmOmMucmVmLGd1aWQ6Yy5ndWlkfSxsPWdyKGMucmVmKTtpZighKGEuc2hlZXRSb3dzJiZhLnNoZWV0Um93czw9bC5yKSl7dmFyIHU9TGUoZiwidGV4dCIpLHg9ISF1JiYhIXVbMV0mJnVuKHVbMV0pfHx7cjoiIix0OiIiLGg6IiJ9O28ucj14LnIseC5yPT0iPHQ+PC90PiImJih4LnQ9eC5oPSIiKSxvLnQ9KHgudHx8IiIpLnJlcGxhY2UoL1xyXG4vZyxgCmApLnJlcGxhY2UoL1xyL2csYApgKSxhLmNlbGxIVE1MJiYoby5oPXguaCksdC5wdXNoKG8pfX19fSksdH1mdW5jdGlvbiBGMShlLGEpe3ZhciByPVtdLHQ9ITEsbj17fSxpPTA7cmV0dXJuIGUucmVwbGFjZShucixmdW5jdGlvbihzLGMpe3ZhciBvPW9lKHMpO3N3aXRjaChBcihvWzBdKSl7Y2FzZSI8P3htbCI6YnJlYWs7Y2FzZSI8VGhyZWFkZWRDb21tZW50cyI6YnJlYWs7Y2FzZSI8L1RocmVhZGVkQ29tbWVudHM+IjpicmVhaztjYXNlIjx0aHJlYWRlZENvbW1lbnQiOm49e2F1dGhvcjpvLnBlcnNvbklkLGd1aWQ6by5pZCxyZWY6by5yZWYsVDoxfTticmVhaztjYXNlIjwvdGhyZWFkZWRDb21tZW50PiI6bi50IT1udWxsJiZyLnB1c2gobik7YnJlYWs7Y2FzZSI8dGV4dD4iOmNhc2UiPHRleHQiOmk9YytzLmxlbmd0aDticmVhaztjYXNlIjwvdGV4dD4iOm4udD1lLnNsaWNlKGksYykucmVwbGFjZSgvXHJcbi9nLGAKYCkucmVwbGFjZSgvXHIvZyxgCmApO2JyZWFrO2Nhc2UiPG1lbnRpb25zIjpjYXNlIjxtZW50aW9ucz4iOnQ9ITA7YnJlYWs7Y2FzZSI8L21lbnRpb25zPiI6dD0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8ZXh0Ijp0PSEwO2JyZWFrO2Nhc2UiPC9leHQ+Ijp0PSExO2JyZWFrO2RlZmF1bHQ6aWYoIXQmJmEuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrb1swXSsiIGluIHRocmVhZGVkIGNvbW1lbnRzIil9cmV0dXJuIHN9KSxyfWZ1bmN0aW9uIFQxKGUsYSl7dmFyIHI9W10sdD0hMTtyZXR1cm4gZS5yZXBsYWNlKG5yLGZ1bmN0aW9uKGkpe3ZhciBmPW9lKGkpO3N3aXRjaChBcihmWzBdKSl7Y2FzZSI8P3htbCI6YnJlYWs7Y2FzZSI8cGVyc29uTGlzdCI6YnJlYWs7Y2FzZSI8L3BlcnNvbkxpc3Q+IjpicmVhaztjYXNlIjxwZXJzb24iOnIucHVzaCh7bmFtZTpmLmRpc3BsYXluYW1lLGlkOmYuaWR9KTticmVhaztjYXNlIjwvcGVyc29uPiI6YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmJyZWFrO2Nhc2UiPGV4dCI6dD0hMDticmVhaztjYXNlIjwvZXh0PiI6dD0hMTticmVhaztkZWZhdWx0OmlmKCF0JiZhLldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK2ZbMF0rIiBpbiB0aHJlYWRlZCBjb21tZW50cyIpfXJldHVybiBpfSkscn1mdW5jdGlvbiBFMShlKXt2YXIgYT17fTthLmlhdXRob3I9ZS5yZWFkX3NoaWZ0KDQpO3ZhciByPUdhKGUpO3JldHVybiBhLnJmeD1yLnMsYS5yZWY9SWUoci5zKSxlLmwrPTE2LGF9dmFyIEExPW1yO2Z1bmN0aW9uIHkxKGUsYSl7dmFyIHI9W10sdD1bXSxuPXt9LGk9ITE7cmV0dXJuIHZhKGUsZnVuY3Rpb24ocyxjLG8pe3N3aXRjaChvKXtjYXNlIDYzMjp0LnB1c2gocyk7YnJlYWs7Y2FzZSA2MzU6bj1zO2JyZWFrO2Nhc2UgNjM3Om4udD1zLnQsbi5oPXMuaCxuLnI9cy5yO2JyZWFrO2Nhc2UgNjM2OmlmKG4uYXV0aG9yPXRbbi5pYXV0aG9yXSxkZWxldGUgbi5pYXV0aG9yLGEuc2hlZXRSb3dzJiZuLnJmeCYmYS5zaGVldFJvd3M8PW4ucmZ4LnIpYnJlYWs7bi50fHwobi50PSIiKSxkZWxldGUgbi5yZngsci5wdXNoKG4pO2JyZWFrO2Nhc2UgMzA3MjpicmVhaztjYXNlIDM1Omk9ITA7YnJlYWs7Y2FzZSAzNjppPSExO2JyZWFrO2Nhc2UgMzc6YnJlYWs7Y2FzZSAzODpicmVhaztkZWZhdWx0OmlmKCFjLlQpe2lmKCFpfHxhLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkIDB4IitvLnRvU3RyaW5nKDE2KSl9fX0pLHJ9dmFyIFMxPSJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiO2Z1bmN0aW9uIEMxKGUpe3ZhciBhPU1lLnV0aWxzLmNmYl9uZXcoe3Jvb3Q6IlIifSk7cmV0dXJuIGUuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24ocix0KXtpZighKHIuc2xpY2UoLTEpPT09Ii8ifHwhci5tYXRjaCgvX1ZCQV9QUk9KRUNUX0NVUi8pKSl7dmFyIG49ci5yZXBsYWNlKC9eW15cL10qLywiUiIpLnJlcGxhY2UoL1wvX1ZCQV9QUk9KRUNUX0NVUlx1MDAwMCovLCIiKTtNZS51dGlscy5jZmJfYWRkKGEsbixlLkZpbGVJbmRleFt0XS5jb250ZW50KX19KSxNZS53cml0ZShhKX1mdW5jdGlvbiBiMSgpe3JldHVybnsiIXR5cGUiOiJkaWFsb2cifX1mdW5jdGlvbiBEMSgpe3JldHVybnsiIXR5cGUiOiJkaWFsb2cifX1mdW5jdGlvbiBJMSgpe3JldHVybnsiIXR5cGUiOiJtYWNybyJ9fWZ1bmN0aW9uIFIxKCl7cmV0dXJueyIhdHlwZSI6Im1hY3JvIn19dmFyIHFhPWZ1bmN0aW9uKCl7dmFyIGU9LyhefFteQS1aYS16X10pUihcWz8tP1xkK1xdfFsxLTldXGQqfClDKFxbPy0/XGQrXF18WzEtOV1cZCp8KSg/IVtBLVphLXowLTlfXSkvZyxhPXtyOjAsYzowfTtmdW5jdGlvbiByKHQsbixpLGYpe3ZhciBzPSExLGM9ITE7aS5sZW5ndGg9PTA/Yz0hMDppLmNoYXJBdCgwKT09IlsiJiYoYz0hMCxpPWkuc2xpY2UoMSwtMSkpLGYubGVuZ3RoPT0wP3M9ITA6Zi5jaGFyQXQoMCk9PSJbIiYmKHM9ITAsZj1mLnNsaWNlKDEsLTEpKTt2YXIgbz1pLmxlbmd0aD4wP3BhcnNlSW50KGksMTApfDA6MCxsPWYubGVuZ3RoPjA/cGFyc2VJbnQoZiwxMCl8MDowO3JldHVybiBzP2wrPWEuYzotLWwsYz9vKz1hLnI6LS1vLG4rKHM/IiI6IiQiKStIZShsKSsoYz8iIjoiJCIpK0dlKG8pfXJldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBhPWksbi5yZXBsYWNlKGUscil9fSgpLG1uPS8oXnxbXi5fQS1aYS16MC05XSkoXCQ/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoXCQ/KShcZHsxLDd9KSg/IVtfLlwoQS1aYS16MC05XSkvZzt0cnl7bW49LyhefFteLl9BLVphLXowLTldKShbJF0/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoWyRdPykoMTBbMC0zXVxkezR9fDEwNFswLTddXGR7M318MTA0OFswLTRdXGR7Mn18MTA0ODVbMC02XVxkfDEwNDg1N1swLTZdfFsxLTldXGR7MCw1fSkoPyFbXy5cKEEtWmEtejAtOV0pL2d9Y2F0Y2h7fXZhciBPMT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLHIpe3JldHVybiBhLnJlcGxhY2UobW4sZnVuY3Rpb24odCxuLGksZixzLGMpe3ZhciBvPW5uKGYpLShpPzA6ci5jKSxsPXRuKGMpLShzPzA6ci5yKSx1PXM9PSIkIj9sKzE6bD09MD8iIjoiWyIrbCsiXSIseD1pPT0iJCI/bysxOm89PTA/IiI6IlsiK28rIl0iO3JldHVybiBuKyJSIit1KyJDIit4fSl9fSgpO2Z1bmN0aW9uIGpzKGUsYSl7cmV0dXJuIGUucmVwbGFjZShtbixmdW5jdGlvbihyLHQsbixpLGYscyl7cmV0dXJuIHQrKG49PSIkIj9uK2k6SGUobm4oaSkrYS5jKSkrKGY9PSIkIj9mK3M6R2UodG4ocykrYS5yKSl9KX1mdW5jdGlvbiBZcyhlLGEscil7dmFyIHQ9cGEoYSksbj10LnMsaT1ncihyKSxmPXtyOmkuci1uLnIsYzppLmMtbi5jfTtyZXR1cm4ganMoZSxmKX1mdW5jdGlvbiBOMShlKXtyZXR1cm4gZS5sZW5ndGghPTF9ZnVuY3Rpb24gSnMoZSl7cmV0dXJuIGUucmVwbGFjZSgvX3hsZm5cLi9nLCIiKX1mdW5jdGlvbiBjcihlKXtlLmwrPTF9ZnVuY3Rpb24gRGEoZSxhKXt2YXIgcj1lLnJlYWRfc2hpZnQoYT09MT8xOjIpO3JldHVybltyJjE2MzgzLHI+PjE0JjEscj4+MTUmMV19ZnVuY3Rpb24gWnMoZSxhLHIpe3ZhciB0PTI7aWYocil7aWYoci5iaWZmPj0yJiZyLmJpZmY8PTUpcmV0dXJuIHFzKGUpO3IuYmlmZj09MTImJih0PTQpfXZhciBuPWUucmVhZF9zaGlmdCh0KSxpPWUucmVhZF9zaGlmdCh0KSxmPURhKGUsMikscz1EYShlLDIpO3JldHVybntzOntyOm4sYzpmWzBdLGNSZWw6ZlsxXSxyUmVsOmZbMl19LGU6e3I6aSxjOnNbMF0sY1JlbDpzWzFdLHJSZWw6c1syXX19fWZ1bmN0aW9uIHFzKGUpe3ZhciBhPURhKGUsMikscj1EYShlLDIpLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49ZS5yZWFkX3NoaWZ0KDEpO3JldHVybntzOntyOmFbMF0sYzp0LGNSZWw6YVsxXSxyUmVsOmFbMl19LGU6e3I6clswXSxjOm4sY1JlbDpyWzFdLHJSZWw6clsyXX19fWZ1bmN0aW9uIE0xKGUsYSxyKXtpZihyLmJpZmY8OClyZXR1cm4gcXMoZSk7dmFyIHQ9ZS5yZWFkX3NoaWZ0KHIuYmlmZj09MTI/NDoyKSxuPWUucmVhZF9zaGlmdChyLmJpZmY9PTEyPzQ6MiksaT1EYShlLDIpLGY9RGEoZSwyKTtyZXR1cm57czp7cjp0LGM6aVswXSxjUmVsOmlbMV0sclJlbDppWzJdfSxlOntyOm4sYzpmWzBdLGNSZWw6ZlsxXSxyUmVsOmZbMl19fX1mdW5jdGlvbiBRcyhlLGEscil7aWYociYmci5iaWZmPj0yJiZyLmJpZmY8PTUpcmV0dXJuIFAxKGUpO3ZhciB0PWUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTEyPzQ6Miksbj1EYShlLDIpO3JldHVybntyOnQsYzpuWzBdLGNSZWw6blsxXSxyUmVsOm5bMl19fWZ1bmN0aW9uIFAxKGUpe3ZhciBhPURhKGUsMikscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJue3I6YVswXSxjOnIsY1JlbDphWzFdLHJSZWw6YVsyXX19ZnVuY3Rpb24gTDEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntyOmEsYzpyJjI1NSxmUXVvdGVkOiEhKHImMTYzODQpLGNSZWw6cj4+MTUsclJlbDpyPj4xNX19ZnVuY3Rpb24gQjEoZSxhLHIpe3ZhciB0PXImJnIuYmlmZj9yLmJpZmY6ODtpZih0Pj0yJiZ0PD01KXJldHVybiBVMShlKTt2YXIgbj1lLnJlYWRfc2hpZnQodD49MTI/NDoyKSxpPWUucmVhZF9zaGlmdCgyKSxmPShpJjE2Mzg0KT4+MTQscz0oaSYzMjc2OCk+PjE1O2lmKGkmPTE2MzgzLHM9PTEpZm9yKDtuPjUyNDI4Nzspbi09MTA0ODU3NjtpZihmPT0xKWZvcig7aT44MTkxOylpPWktMTYzODQ7cmV0dXJue3I6bixjOmksY1JlbDpmLHJSZWw6c319ZnVuY3Rpb24gVTEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDEpLHQ9KGEmMzI3NjgpPj4xNSxuPShhJjE2Mzg0KT4+MTQ7cmV0dXJuIGEmPTE2MzgzLHQ9PTEmJmE+PTgxOTImJihhPWEtMTYzODQpLG49PTEmJnI+PTEyOCYmKHI9ci0yNTYpLHtyOmEsYzpyLGNSZWw6bixyUmVsOnR9fWZ1bmN0aW9uIEgxKGUsYSxyKXt2YXIgdD0oZVtlLmwrK10mOTYpPj41LG49WnMoZSxyLmJpZmY+PTImJnIuYmlmZjw9NT82Ojgscik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gVzEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjUsbj1lLnJlYWRfc2hpZnQoMiwiaSIpLGk9ODtpZihyKXN3aXRjaChyLmJpZmYpe2Nhc2UgNTplLmwrPTEyLGk9NjticmVhaztjYXNlIDEyOmk9MTI7YnJlYWt9dmFyIGY9WnMoZSxpLHIpO3JldHVyblt0LG4sZl19ZnVuY3Rpb24gVjEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjU7cmV0dXJuIGUubCs9ciYmci5iaWZmPjg/MTI6ci5iaWZmPDg/Njo4LFt0XX1mdW5jdGlvbiBHMShlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NSxuPWUucmVhZF9zaGlmdCgyKSxpPTg7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6ZS5sKz0xMixpPTY7YnJlYWs7Y2FzZSAxMjppPTEyO2JyZWFrfXJldHVybiBlLmwrPWksW3Qsbl19ZnVuY3Rpb24gWDEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjUsbj1NMShlLGEtMSxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiB6MShlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NTtyZXR1cm4gZS5sKz1yLmJpZmY9PTI/NjpyLmJpZmY9PTEyPzE0OjcsW3RdfWZ1bmN0aW9uIGVmKGUpe3ZhciBhPWVbZS5sKzFdJjEscj0xO3JldHVybiBlLmwrPTQsW2Escl19ZnVuY3Rpb24gJDEoZSxhLHIpe2UubCs9Mjtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpLG49W10saT0wO2k8PXQ7KytpKW4ucHVzaChlLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6MikpO3JldHVybiBufWZ1bmN0aW9uIEsxKGUsYSxyKXt2YXIgdD1lW2UubCsxXSYyNTU/MTowO3JldHVybiBlLmwrPTIsW3QsZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpXX1mdW5jdGlvbiBqMShlLGEscil7dmFyIHQ9ZVtlLmwrMV0mMjU1PzE6MDtyZXR1cm4gZS5sKz0yLFt0LGUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTI/MToyKV19ZnVuY3Rpb24gWTEoZSl7dmFyIGE9ZVtlLmwrMV0mMjU1PzE6MDtyZXR1cm4gZS5sKz0yLFthLGUucmVhZF9zaGlmdCgyKV19ZnVuY3Rpb24gSjEoZSxhLHIpe3ZhciB0PWVbZS5sKzFdJjI1NT8xOjA7cmV0dXJuIGUubCs9ciYmci5iaWZmPT0yPzM6NCxbdF19ZnVuY3Rpb24gcmYoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVyblthLHJdfWZ1bmN0aW9uIFoxKGUpe3JldHVybiBlLnJlYWRfc2hpZnQoMikscmYoZSl9ZnVuY3Rpb24gcTEoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCgyKSxyZihlKX1mdW5jdGlvbiBRMShlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPVFzKGUsMCxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiBleChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPUIxKGUsMCxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiByeChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyJiZyLmJpZmY9PTUmJihlLmwrPTEyKTt2YXIgaT1RcyhlLDAscik7cmV0dXJuW3QsbixpXX1mdW5jdGlvbiBheChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdChyJiZyLmJpZmY8PTM/MToyKTtyZXR1cm5bdGRbbl0sZmZbbl0sdF19ZnVuY3Rpb24gdHgoZSxhLHIpe3ZhciB0PWVbZS5sKytdLG49ZS5yZWFkX3NoaWZ0KDEpLGk9ciYmci5iaWZmPD0zP1t0PT04OD8tMTowLGUucmVhZF9zaGlmdCgxKV06bngoZSk7cmV0dXJuW24sKGlbMF09PT0wP2ZmOmFkKVtpWzFdXV19ZnVuY3Rpb24gbngoZSl7cmV0dXJuW2VbZS5sKzFdPj43LGUucmVhZF9zaGlmdCgyKSYzMjc2N119ZnVuY3Rpb24gaXgoZSxhLHIpe2UubCs9ciYmci5iaWZmPT0yPzM6NH1mdW5jdGlvbiBzeChlLGEscil7aWYoZS5sKyssciYmci5iaWZmPT0xMilyZXR1cm5bZS5yZWFkX3NoaWZ0KDQsImkiKSwwXTt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6Mik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gZngoZSl7cmV0dXJuIGUubCsrLGJyW2UucmVhZF9zaGlmdCgxKV19ZnVuY3Rpb24gY3goZSl7cmV0dXJuIGUubCsrLGUucmVhZF9zaGlmdCgyKX1mdW5jdGlvbiBveChlKXtyZXR1cm4gZS5sKyssZS5yZWFkX3NoaWZ0KDEpIT09MH1mdW5jdGlvbiBseChlKXtyZXR1cm4gZS5sKyssX3IoZSl9ZnVuY3Rpb24gdXgoZSxhLHIpe3JldHVybiBlLmwrKyx6YShlLGEtMSxyKX1mdW5jdGlvbiBoeChlLGEpe3ZhciByPVtlLnJlYWRfc2hpZnQoMSldO2lmKGE9PTEyKXN3aXRjaChyWzBdKXtjYXNlIDI6clswXT00O2JyZWFrO2Nhc2UgNDpyWzBdPTE2O2JyZWFrO2Nhc2UgMDpyWzBdPTE7YnJlYWs7Y2FzZSAxOnJbMF09MjticmVha31zd2l0Y2goclswXSl7Y2FzZSA0OnJbMV09YXIoZSwxKT8iVFJVRSI6IkZBTFNFIixhIT0xMiYmKGUubCs9Nyk7YnJlYWs7Y2FzZSAzNzpjYXNlIDE2OnJbMV09YnJbZVtlLmxdXSxlLmwrPWE9PTEyPzQ6ODticmVhaztjYXNlIDA6ZS5sKz04O2JyZWFrO2Nhc2UgMTpyWzFdPV9yKGUpO2JyZWFrO2Nhc2UgMjpyWzFdPUthKGUsMCx7YmlmZjphPjAmJmE8OD8yOmF9KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIFNlckFyOiAiK3JbMF0pfXJldHVybiByfWZ1bmN0aW9uIHh4KGUsYSxyKXtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KHIuYmlmZj09MTI/NDoyKSxuPVtdLGk9MDtpIT10OysraSluLnB1c2goKHIuYmlmZj09MTI/R2E6azApKGUpKTtyZXR1cm4gbn1mdW5jdGlvbiBkeChlLGEscil7dmFyIHQ9MCxuPTA7ci5iaWZmPT0xMj8odD1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCkpOihuPTErZS5yZWFkX3NoaWZ0KDEpLHQ9MStlLnJlYWRfc2hpZnQoMikpLHIuYmlmZj49MiYmci5iaWZmPDgmJigtLXQsLS1uPT0wJiYobj0yNTYpKTtmb3IodmFyIGk9MCxmPVtdO2khPXQmJihmW2ldPVtdKTsrK2kpZm9yKHZhciBzPTA7cyE9bjsrK3MpZltpXVtzXT1oeChlLHIuYmlmZik7cmV0dXJuIGZ9ZnVuY3Rpb24gdngoZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgxKT4+PjUmMyxuPSFyfHxyLmJpZmY+PTg/NDoyLGk9ZS5yZWFkX3NoaWZ0KG4pO3N3aXRjaChyLmJpZmYpe2Nhc2UgMjplLmwrPTU7YnJlYWs7Y2FzZSAzOmNhc2UgNDplLmwrPTg7YnJlYWs7Y2FzZSA1OmUubCs9MTI7YnJlYWt9cmV0dXJuW3QsMCxpXX1mdW5jdGlvbiBweChlLGEscil7aWYoci5iaWZmPT01KXJldHVybiBneChlKTt2YXIgdD1lLnJlYWRfc2hpZnQoMSk+Pj41JjMsbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuW3QsbixpXX1mdW5jdGlvbiBneChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk+Pj41JjMscj1lLnJlYWRfc2hpZnQoMiwiaSIpO2UubCs9ODt2YXIgdD1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubCs9MTIsW2Escix0XX1mdW5jdGlvbiBteChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpPj4+NSYzO2UubCs9ciYmci5iaWZmPT0yPzM6NDt2YXIgbj1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6Mik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gX3goZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgxKT4+PjUmMyxuPWUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTI/MToyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiBreChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpPj4+NSYzO3JldHVybiBlLmwrPTQsci5iaWZmPDgmJmUubC0tLHIuYmlmZj09MTImJihlLmwrPTIpLFt0XX1mdW5jdGlvbiB3eChlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NSxuPWUucmVhZF9zaGlmdCgyKSxpPTQ7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6aT0xNTticmVhaztjYXNlIDEyOmk9NjticmVha31yZXR1cm4gZS5sKz1pLFt0LG5dfXZhciBGeD15cixUeD15cixFeD15cjtmdW5jdGlvbiBIdChlLGEscil7cmV0dXJuIGUubCs9MixbTDEoZSldfWZ1bmN0aW9uIF9uKGUpe3JldHVybiBlLmwrPTYsW119dmFyIEF4PUh0LHl4PV9uLFN4PV9uLEN4PUh0O2Z1bmN0aW9uIGFmKGUpe3JldHVybiBlLmwrPTIsW2VyKGUpLGUucmVhZF9zaGlmdCgyKSYxXX12YXIgYng9SHQsRHg9YWYsSXg9X24sUng9SHQsT3g9SHQsTng9WyJEYXRhIiwiQWxsIiwiSGVhZGVycyIsIj8/IiwiP0RhdGEyIiwiPz8iLCI/RGF0YUhlYWRlcnMiLCI/PyIsIlRvdGFscyIsIj8/IiwiPz8iLCI/PyIsIj9EYXRhVG90YWxzIiwiPz8iLCI/PyIsIj8/IiwiP0N1cnJlbnQiXTtmdW5jdGlvbiBNeChlKXtlLmwrPTI7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDQpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9Tnhbcj4+MiYzMV07cmV0dXJue2l4dGk6YSxjb2x0eXBlOnImMyxydDpmLGlkeDp0LGM6bixDOml9fWZ1bmN0aW9uIFB4KGUpe3JldHVybiBlLmwrPTIsW2UucmVhZF9zaGlmdCg0KV19ZnVuY3Rpb24gTHgoZSxhLHIpe3JldHVybiBlLmwrPTUsZS5sKz0yLGUubCs9ci5iaWZmPT0yPzE6NCxbIlBUR1NIRUVUIl19ZnVuY3Rpb24gQngoZSxhLHIpe3JldHVybiBlLmwrPXIuYmlmZj09Mj80OjUsWyJQVEdFTkRTSEVFVCJdfWZ1bmN0aW9uIFV4KGUpe3ZhciBhPWUucmVhZF9zaGlmdCgxKT4+PjUmMyxyPWUucmVhZF9zaGlmdCgyKTtyZXR1cm5bYSxyXX1mdW5jdGlvbiBIeChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk+Pj41JjMscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuW2Escl19ZnVuY3Rpb24gV3goZSl7cmV0dXJuIGUubCs9NCxbMCwwXX12YXIgdGY9ezE6e246IlB0Z0V4cCIsZjpzeH0sMjp7bjoiUHRnVGJsIixmOkV4fSwzOntuOiJQdGdBZGQiLGY6Y3J9LDQ6e246IlB0Z1N1YiIsZjpjcn0sNTp7bjoiUHRnTXVsIixmOmNyfSw2OntuOiJQdGdEaXYiLGY6Y3J9LDc6e246IlB0Z1Bvd2VyIixmOmNyfSw4OntuOiJQdGdDb25jYXQiLGY6Y3J9LDk6e246IlB0Z0x0IixmOmNyfSwxMDp7bjoiUHRnTGUiLGY6Y3J9LDExOntuOiJQdGdFcSIsZjpjcn0sMTI6e246IlB0Z0dlIixmOmNyfSwxMzp7bjoiUHRnR3QiLGY6Y3J9LDE0OntuOiJQdGdOZSIsZjpjcn0sMTU6e246IlB0Z0lzZWN0IixmOmNyfSwxNjp7bjoiUHRnVW5pb24iLGY6Y3J9LDE3OntuOiJQdGdSYW5nZSIsZjpjcn0sMTg6e246IlB0Z1VwbHVzIixmOmNyfSwxOTp7bjoiUHRnVW1pbnVzIixmOmNyfSwyMDp7bjoiUHRnUGVyY2VudCIsZjpjcn0sMjE6e246IlB0Z1BhcmVuIixmOmNyfSwyMjp7bjoiUHRnTWlzc0FyZyIsZjpjcn0sMjM6e246IlB0Z1N0ciIsZjp1eH0sMjY6e246IlB0Z1NoZWV0IixmOkx4fSwyNzp7bjoiUHRnRW5kU2hlZXQiLGY6Qnh9LDI4OntuOiJQdGdFcnIiLGY6Znh9LDI5OntuOiJQdGdCb29sIixmOm94fSwzMDp7bjoiUHRnSW50IixmOmN4fSwzMTp7bjoiUHRnTnVtIixmOmx4fSwzMjp7bjoiUHRnQXJyYXkiLGY6ejF9LDMzOntuOiJQdGdGdW5jIixmOmF4fSwzNDp7bjoiUHRnRnVuY1ZhciIsZjp0eH0sMzU6e246IlB0Z05hbWUiLGY6dnh9LDM2OntuOiJQdGdSZWYiLGY6UTF9LDM3OntuOiJQdGdBcmVhIixmOkgxfSwzODp7bjoiUHRnTWVtQXJlYSIsZjpteH0sMzk6e246IlB0Z01lbUVyciIsZjpGeH0sNDA6e246IlB0Z01lbU5vTWVtIixmOlR4fSw0MTp7bjoiUHRnTWVtRnVuYyIsZjpfeH0sNDI6e246IlB0Z1JlZkVyciIsZjpreH0sNDM6e246IlB0Z0FyZWFFcnIiLGY6VjF9LDQ0OntuOiJQdGdSZWZOIixmOmV4fSw0NTp7bjoiUHRnQXJlYU4iLGY6WDF9LDQ2OntuOiJQdGdNZW1BcmVhTiIsZjpVeH0sNDc6e246IlB0Z01lbU5vTWVtTiIsZjpIeH0sNTc6e246IlB0Z05hbWVYIixmOnB4fSw1ODp7bjoiUHRnUmVmM2QiLGY6cnh9LDU5OntuOiJQdGdBcmVhM2QiLGY6VzF9LDYwOntuOiJQdGdSZWZFcnIzZCIsZjp3eH0sNjE6e246IlB0Z0FyZWFFcnIzZCIsZjpHMX0sMjU1Ont9fSxWeD17NjQ6MzIsOTY6MzIsNjU6MzMsOTc6MzMsNjY6MzQsOTg6MzQsNjc6MzUsOTk6MzUsNjg6MzYsMTAwOjM2LDY5OjM3LDEwMTozNyw3MDozOCwxMDI6MzgsNzE6MzksMTAzOjM5LDcyOjQwLDEwNDo0MCw3Mzo0MSwxMDU6NDEsNzQ6NDIsMTA2OjQyLDc1OjQzLDEwNzo0Myw3Njo0NCwxMDg6NDQsNzc6NDUsMTA5OjQ1LDc4OjQ2LDExMDo0Niw3OTo0NywxMTE6NDcsODg6MzQsMTIwOjM0LDg5OjU3LDEyMTo1Nyw5MDo1OCwxMjI6NTgsOTE6NTksMTIzOjU5LDkyOjYwLDEyNDo2MCw5Mzo2MSwxMjU6NjF9LEd4PXsxOntuOiJQdGdFbGZMZWwiLGY6YWZ9LDI6e246IlB0Z0VsZlJ3IixmOlJ4fSwzOntuOiJQdGdFbGZDb2wiLGY6QXh9LDY6e246IlB0Z0VsZlJ3ViIsZjpPeH0sNzp7bjoiUHRnRWxmQ29sViIsZjpDeH0sMTA6e246IlB0Z0VsZlJhZGljYWwiLGY6Ynh9LDExOntuOiJQdGdFbGZSYWRpY2FsUyIsZjpJeH0sMTM6e246IlB0Z0VsZkNvbFMiLGY6eXh9LDE1OntuOiJQdGdFbGZDb2xTViIsZjpTeH0sMTY6e246IlB0Z0VsZlJhZGljYWxMZWwiLGY6RHh9LDI1OntuOiJQdGdMaXN0IixmOk14fSwyOTp7bjoiUHRnU3hOYW1lIixmOlB4fSwyNTU6e319LFh4PXswOntuOiJQdGdBdHRyTm9vcCIsZjpXeH0sMTp7bjoiUHRnQXR0clNlbWkiLGY6SjF9LDI6e246IlB0Z0F0dHJJZiIsZjpqMX0sNDp7bjoiUHRnQXR0ckNob29zZSIsZjokMX0sODp7bjoiUHRnQXR0ckdvdG8iLGY6SzF9LDE2OntuOiJQdGdBdHRyU3VtIixmOml4fSwzMjp7bjoiUHRnQXR0ckJheGNlbCIsZjplZn0sMzM6e246IlB0Z0F0dHJCYXhjZWwiLGY6ZWZ9LDY0OntuOiJQdGdBdHRyU3BhY2UiLGY6WjF9LDY1OntuOiJQdGdBdHRyU3BhY2VTZW1pIixmOnExfSwxMjg6e246IlB0Z0F0dHJJZkVycm9yIixmOlkxfSwyNTU6e319O2Z1bmN0aW9uIFd0KGUsYSxyLHQpe2lmKHQuYmlmZjw4KXJldHVybiB5cihlLGEpO2Zvcih2YXIgbj1lLmwrYSxpPVtdLGY9MDtmIT09ci5sZW5ndGg7KytmKXN3aXRjaChyW2ZdWzBdKXtjYXNlIlB0Z0FycmF5IjpyW2ZdWzFdPWR4KGUsMCx0KSxpLnB1c2gocltmXVsxXSk7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhIjpyW2ZdWzJdPXh4KGUscltmXVsxXSx0KSxpLnB1c2gocltmXVsyXSk7YnJlYWs7Y2FzZSJQdGdFeHAiOnQmJnQuYmlmZj09MTImJihyW2ZdWzFdWzFdPWUucmVhZF9zaGlmdCg0KSxpLnB1c2gocltmXVsxXSkpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6Y2FzZSJQdGdFbGZSYWRpY2FsUyI6Y2FzZSJQdGdFbGZDb2xTIjpjYXNlIlB0Z0VsZkNvbFNWIjp0aHJvdyJVbnN1cHBvcnRlZCAiK3JbZl1bMF19cmV0dXJuIGE9bi1lLmwsYSE9PTAmJmkucHVzaCh5cihlLGEpKSxpfWZ1bmN0aW9uIFZ0KGUsYSxyKXtmb3IodmFyIHQ9ZS5sK2EsbixpLGY9W107dCE9ZS5sOylhPXQtZS5sLGk9ZVtlLmxdLG49dGZbaV18fHRmW1Z4W2ldXSwoaT09PTI0fHxpPT09MjUpJiYobj0oaT09PTI0P0d4Olh4KVtlW2UubCsxXV0pLCFufHwhbi5mP3lyKGUsYSk6Zi5wdXNoKFtuLm4sbi5mKGUsYSxyKV0pO3JldHVybiBmfWZ1bmN0aW9uIHp4KGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aDsrK3Ipe2Zvcih2YXIgdD1lW3JdLG49W10saT0wO2k8dC5sZW5ndGg7KytpKXt2YXIgZj10W2ldO2lmKGYpc3dpdGNoKGZbMF0pe2Nhc2UgMjpuLnB1c2goJyInK2ZbMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7ZGVmYXVsdDpuLnB1c2goZlsxXSl9ZWxzZSBuLnB1c2goIiIpfWEucHVzaChuLmpvaW4oIiwiKSl9cmV0dXJuIGEuam9pbigiOyIpfXZhciAkeD17UHRnQWRkOiIrIixQdGdDb25jYXQ6IiYiLFB0Z0RpdjoiLyIsUHRnRXE6Ij0iLFB0Z0dlOiI+PSIsUHRnR3Q6Ij4iLFB0Z0xlOiI8PSIsUHRnTHQ6IjwiLFB0Z011bDoiKiIsUHRnTmU6Ijw+IixQdGdQb3dlcjoiXiIsUHRnU3ViOiItIn07ZnVuY3Rpb24gS3goZSxhKXt2YXIgcj1lLmxhc3RJbmRleE9mKCIhIiksdD1hLmxhc3RJbmRleE9mKCIhIik7cmV0dXJuIHI9PS0xJiZ0PT0tMT9lKyI6IithOnI+MCYmdD4wJiZlLnNsaWNlKDAscikudG9Mb3dlckNhc2UoKT09YS5zbGljZSgwLHQpLnRvTG93ZXJDYXNlKCk/ZSsiOiIrYS5zbGljZSh0KzEpOihjb25zb2xlLmVycm9yKCJDYW5ub3QgaHlkcmF0ZSByYW5nZSIsZSxhKSxlKyI6IithKX1mdW5jdGlvbiBuZihlLGEscil7aWYoIWUpcmV0dXJuIlNIMzNUSlNFUlIwIjtpZihyLmJpZmY+OCYmKCFlLlhUSXx8IWUuWFRJW2FdKSlyZXR1cm4gZS5TaGVldE5hbWVzW2FdO2lmKCFlLlhUSSlyZXR1cm4iU0gzM1RKU0VSUjYiO3ZhciB0PWUuWFRJW2FdO2lmKHIuYmlmZjw4KXJldHVybiBhPjFlNCYmKGEtPTY1NTM2KSxhPDAmJihhPS1hKSxhPT0wPyIiOmUuWFRJW2EtMV07aWYoIXQpcmV0dXJuIlNIMzNUSlNFUlIxIjt2YXIgbj0iIjtpZihyLmJpZmY+OClzd2l0Y2goZVt0WzBdXVswXSl7Y2FzZSAzNTc6cmV0dXJuIG49dFsxXT09LTE/IiNSRUYiOmUuU2hlZXROYW1lc1t0WzFdXSx0WzFdPT10WzJdP246bisiOiIrZS5TaGVldE5hbWVzW3RbMl1dO2Nhc2UgMzU4OnJldHVybiByLlNJRCE9bnVsbD9lLlNoZWV0TmFtZXNbci5TSURdOiJTSDMzVEpTU0FNRSIrZVt0WzBdXVswXTtjYXNlIDM1NTpkZWZhdWx0OnJldHVybiJTSDMzVEpTU1JDIitlW3RbMF1dWzBdfXN3aXRjaChlW3RbMF1dWzBdWzBdKXtjYXNlIDEwMjU6cmV0dXJuIG49dFsxXT09LTE/IiNSRUYiOmUuU2hlZXROYW1lc1t0WzFdXXx8IlNIMzNUSlNFUlIzIix0WzFdPT10WzJdP246bisiOiIrZS5TaGVldE5hbWVzW3RbMl1dO2Nhc2UgMTQ4NDk6cmV0dXJuIGVbdFswXV0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpLk5hbWV9KS5qb2luKCI7OyIpO2RlZmF1bHQ6cmV0dXJuIGVbdFswXV1bMF1bM10/KG49dFsxXT09LTE/IiNSRUYiOmVbdFswXV1bMF1bM11bdFsxXV18fCJTSDMzVEpTRVJSNCIsdFsxXT09dFsyXT9uOm4rIjoiK2VbdFswXV1bMF1bM11bdFsyXV0pOiJTSDMzVEpTRVJSMiJ9fWZ1bmN0aW9uIHNmKGUsYSxyKXt2YXIgdD1uZihlLGEscik7cmV0dXJuIHQ9PSIjUkVGIj90OlRvKHQscil9ZnVuY3Rpb24gd3IoZSxhLHIsdCxuKXt2YXIgaT1uJiZuLmJpZmZ8fDgsZj17czp7YzowLHI6MH0sZTp7YzowLHI6MH19LHM9W10sYyxvLGwsdT0wLHg9MCxoLGc9IiI7aWYoIWVbMF18fCFlWzBdWzBdKXJldHVybiIiO2Zvcih2YXIgbT0tMSxkPSIiLHA9MCx3PWVbMF0ubGVuZ3RoO3A8dzsrK3Ape3ZhciBfPWVbMF1bcF07c3dpdGNoKF9bMF0pe2Nhc2UiUHRnVW1pbnVzIjpzLnB1c2goIi0iK3MucG9wKCkpO2JyZWFrO2Nhc2UiUHRnVXBsdXMiOnMucHVzaCgiKyIrcy5wb3AoKSk7YnJlYWs7Y2FzZSJQdGdQZXJjZW50IjpzLnB1c2gocy5wb3AoKSsiJSIpO2JyZWFrO2Nhc2UiUHRnQWRkIjpjYXNlIlB0Z0NvbmNhdCI6Y2FzZSJQdGdEaXYiOmNhc2UiUHRnRXEiOmNhc2UiUHRnR2UiOmNhc2UiUHRnR3QiOmNhc2UiUHRnTGUiOmNhc2UiUHRnTHQiOmNhc2UiUHRnTXVsIjpjYXNlIlB0Z05lIjpjYXNlIlB0Z1Bvd2VyIjpjYXNlIlB0Z1N1YiI6aWYoYz1zLnBvcCgpLG89cy5wb3AoKSxtPj0wKXtzd2l0Y2goZVswXVttXVsxXVswXSl7Y2FzZSAwOmQ9UGUoIiAiLGVbMF1bbV1bMV1bMV0pO2JyZWFrO2Nhc2UgMTpkPVBlKCJcciIsZVswXVttXVsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihkPSIiLG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZVswXVttXVsxXVswXSl9bz1vK2QsbT0tMX1zLnB1c2gobyskeFtfWzBdXStjKTticmVhaztjYXNlIlB0Z0lzZWN0IjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChvKyIgIitjKTticmVhaztjYXNlIlB0Z1VuaW9uIjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChvKyIsIitjKTticmVhaztjYXNlIlB0Z1JhbmdlIjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChLeChvLGMpKTticmVhaztjYXNlIlB0Z0F0dHJDaG9vc2UiOmJyZWFrO2Nhc2UiUHRnQXR0ckdvdG8iOmJyZWFrO2Nhc2UiUHRnQXR0cklmIjpicmVhaztjYXNlIlB0Z0F0dHJJZkVycm9yIjpicmVhaztjYXNlIlB0Z1JlZiI6bD1JdChfWzFdWzFdLGYsbikscy5wdXNoKFJ0KGwsaSkpO2JyZWFrO2Nhc2UiUHRnUmVmTiI6bD1yP0l0KF9bMV1bMV0scixuKTpfWzFdWzFdLHMucHVzaChSdChsLGkpKTticmVhaztjYXNlIlB0Z1JlZjNkIjp1PV9bMV1bMV0sbD1JdChfWzFdWzJdLGYsbiksZz1zZih0LHUsbikscy5wdXNoKGcrIiEiK1J0KGwsaSkpO2JyZWFrO2Nhc2UiUHRnRnVuYyI6Y2FzZSJQdGdGdW5jVmFyIjp2YXIgeT1fWzFdWzBdLFI9X1sxXVsxXTt5fHwoeT0wKSx5Jj0xMjc7dmFyIFA9eT09MD9bXTpzLnNsaWNlKC15KTtzLmxlbmd0aC09eSxSPT09IlVzZXIiJiYoUj1QLnNoaWZ0KCkpLHMucHVzaChSKyIoIitQLmpvaW4oIiwiKSsiKSIpO2JyZWFrO2Nhc2UiUHRnQm9vbCI6cy5wdXNoKF9bMV0/IlRSVUUiOiJGQUxTRSIpO2JyZWFrO2Nhc2UiUHRnSW50IjpzLnB1c2goX1sxXSk7YnJlYWs7Y2FzZSJQdGdOdW0iOnMucHVzaChTdHJpbmcoX1sxXSkpO2JyZWFrO2Nhc2UiUHRnU3RyIjpzLnB1c2goJyInK19bMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7Y2FzZSJQdGdFcnIiOnMucHVzaChfWzFdKTticmVhaztjYXNlIlB0Z0FyZWFOIjpoPWppKF9bMV1bMV0scj97czpyfTpmLG4pLHMucHVzaChhbihoLG4pKTticmVhaztjYXNlIlB0Z0FyZWEiOmg9amkoX1sxXVsxXSxmLG4pLHMucHVzaChhbihoLG4pKTticmVhaztjYXNlIlB0Z0FyZWEzZCI6dT1fWzFdWzFdLGg9X1sxXVsyXSxnPXNmKHQsdSxuKSxzLnB1c2goZysiISIrYW4oaCxuKSk7YnJlYWs7Y2FzZSJQdGdBdHRyU3VtIjpzLnB1c2goIlNVTSgiK3MucG9wKCkrIikiKTticmVhaztjYXNlIlB0Z0F0dHJCYXhjZWwiOmNhc2UiUHRnQXR0clNlbWkiOmJyZWFrO2Nhc2UiUHRnTmFtZSI6eD1fWzFdWzJdO3ZhciBiPSh0Lm5hbWVzfHxbXSlbeC0xXXx8KHRbMF18fFtdKVt4XSxOPWI/Yi5OYW1lOiJTSDMzVEpTTkFNRSIrU3RyaW5nKHgpO04mJk4uc2xpY2UoMCw2KT09Il94bGZuLiImJiFuLnhsZm4mJihOPU4uc2xpY2UoNikpLHMucHVzaChOKTticmVhaztjYXNlIlB0Z05hbWVYIjp2YXIgRD1fWzFdWzFdO3g9X1sxXVsyXTt2YXIgQjtpZihuLmJpZmY8PTUpRDwwJiYoRD0tRCksdFtEXSYmKEI9dFtEXVt4XSk7ZWxzZXt2YXIgTD0iIjtpZigoKHRbRF18fFtdKVswXXx8W10pWzBdPT0xNDg0OXx8KCgodFtEXXx8W10pWzBdfHxbXSlbMF09PTEwMjU/dFtEXVt4XSYmdFtEXVt4XS5pdGFiPjAmJihMPXQuU2hlZXROYW1lc1t0W0RdW3hdLml0YWItMV0rIiEiKTpMPXQuU2hlZXROYW1lc1t4LTFdKyIhIiksdFtEXSYmdFtEXVt4XSlMKz10W0RdW3hdLk5hbWU7ZWxzZSBpZih0WzBdJiZ0WzBdW3hdKUwrPXRbMF1beF0uTmFtZTtlbHNle3ZhciBHPShuZih0LEQsbil8fCIiKS5zcGxpdCgiOzsiKTtHW3gtMV0/TD1HW3gtMV06TCs9IlNIMzNUSlNFUlJYIn1zLnB1c2goTCk7YnJlYWt9Qnx8KEI9e05hbWU6IlNIMzNUSlNFUlJZIn0pLHMucHVzaChCLk5hbWUpO2JyZWFrO2Nhc2UiUHRnUGFyZW4iOnZhciBpZT0iKCIsbmU9IikiO2lmKG0+PTApe3N3aXRjaChkPSIiLGVbMF1bbV1bMV1bMF0pe2Nhc2UgMjppZT1QZSgiICIsZVswXVttXVsxXVsxXSkraWU7YnJlYWs7Y2FzZSAzOmllPVBlKCJcciIsZVswXVttXVsxXVsxXSkraWU7YnJlYWs7Y2FzZSA0Om5lPVBlKCIgIixlWzBdW21dWzFdWzFdKStuZTticmVhaztjYXNlIDU6bmU9UGUoIlxyIixlWzBdW21dWzFdWzFdKStuZTticmVhaztkZWZhdWx0OmlmKG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZVswXVttXVsxXVswXSl9bT0tMX1zLnB1c2goaWUrcy5wb3AoKStuZSk7YnJlYWs7Y2FzZSJQdGdSZWZFcnIiOnMucHVzaCgiI1JFRiEiKTticmVhaztjYXNlIlB0Z1JlZkVycjNkIjpzLnB1c2goIiNSRUYhIik7YnJlYWs7Y2FzZSJQdGdFeHAiOmw9e2M6X1sxXVsxXSxyOl9bMV1bMF19O3ZhciBxPXtjOnIuYyxyOnIucn07aWYodC5zaGFyZWRmW0llKGwpXSl7dmFyIGxlPXQuc2hhcmVkZltJZShsKV07cy5wdXNoKHdyKGxlLGYscSx0LG4pKX1lbHNle3ZhciBRPSExO2ZvcihjPTA7YyE9dC5hcnJheWYubGVuZ3RoOysrYylpZihvPXQuYXJyYXlmW2NdLCEobC5jPG9bMF0ucy5jfHxsLmM+b1swXS5lLmMpJiYhKGwucjxvWzBdLnMucnx8bC5yPm9bMF0uZS5yKSl7cy5wdXNoKHdyKG9bMV0sZixxLHQsbikpLFE9ITA7YnJlYWt9UXx8cy5wdXNoKF9bMV0pfWJyZWFrO2Nhc2UiUHRnQXJyYXkiOnMucHVzaCgieyIrengoX1sxXSkrIn0iKTticmVhaztjYXNlIlB0Z01lbUFyZWEiOmJyZWFrO2Nhc2UiUHRnQXR0clNwYWNlIjpjYXNlIlB0Z0F0dHJTcGFjZVNlbWkiOm09cDticmVhaztjYXNlIlB0Z1RibCI6YnJlYWs7Y2FzZSJQdGdNZW1FcnIiOmJyZWFrO2Nhc2UiUHRnTWlzc0FyZyI6cy5wdXNoKCIiKTticmVhaztjYXNlIlB0Z0FyZWFFcnIiOnMucHVzaCgiI1JFRiEiKTticmVhaztjYXNlIlB0Z0FyZWFFcnIzZCI6cy5wdXNoKCIjUkVGISIpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6cy5wdXNoKCJUYWJsZSIrX1sxXS5pZHgrIlsjIitfWzFdLnJ0KyJdIik7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhTiI6Y2FzZSJQdGdNZW1Ob01lbU4iOmNhc2UiUHRnQXR0ck5vb3AiOmNhc2UiUHRnU2hlZXQiOmNhc2UiUHRnRW5kU2hlZXQiOmJyZWFrO2Nhc2UiUHRnTWVtRnVuYyI6YnJlYWs7Y2FzZSJQdGdNZW1Ob01lbSI6YnJlYWs7Y2FzZSJQdGdFbGZDb2wiOmNhc2UiUHRnRWxmQ29sUyI6Y2FzZSJQdGdFbGZDb2xTViI6Y2FzZSJQdGdFbGZDb2xWIjpjYXNlIlB0Z0VsZkxlbCI6Y2FzZSJQdGdFbGZSYWRpY2FsIjpjYXNlIlB0Z0VsZlJhZGljYWxMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbFMiOmNhc2UiUHRnRWxmUnciOmNhc2UiUHRnRWxmUndWIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIEVMRnMiKTtjYXNlIlB0Z1N4TmFtZSI6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogIitTdHJpbmcoXykpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogIitTdHJpbmcoXykpfXZhciBnZT1bIlB0Z0F0dHJTcGFjZSIsIlB0Z0F0dHJTcGFjZVNlbWkiLCJQdGdBdHRyR290byJdO2lmKG4uYmlmZiE9MyYmbT49MCYmZ2UuaW5kZXhPZihlWzBdW3BdWzBdKT09LTEpe189ZVswXVttXTt2YXIgdWU9ITA7c3dpdGNoKF9bMV1bMF0pe2Nhc2UgNDp1ZT0hMTtjYXNlIDA6ZD1QZSgiICIsX1sxXVsxXSk7YnJlYWs7Y2FzZSA1OnVlPSExO2Nhc2UgMTpkPVBlKCJcciIsX1sxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihkPSIiLG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrX1sxXVswXSl9cy5wdXNoKCh1ZT9kOiIiKStzLnBvcCgpKyh1ZT8iIjpkKSksbT0tMX19aWYocy5sZW5ndGg+MSYmbi5XVEYpdGhyb3cgbmV3IEVycm9yKCJiYWQgZm9ybXVsYSBzdGFjayIpO3JldHVybiBzWzBdPT0iVFJVRSI/ITA6c1swXT09IkZBTFNFIj8hMTpzWzBdfWZ1bmN0aW9uIGp4KGUsYSxyKXt2YXIgdD1lLmwrYSxuPXIuYmlmZj09Mj8xOjIsaSxmPWUucmVhZF9zaGlmdChuKTtpZihmPT02NTUzNSlyZXR1cm5bW10seXIoZSxhLTIpXTt2YXIgcz1WdChlLGYscik7cmV0dXJuIGEhPT1mK24mJihpPVd0KGUsYS1mLW4scyxyKSksZS5sPXQsW3MsaV19ZnVuY3Rpb24gWXgoZSxhLHIpe3ZhciB0PWUubCthLG49ci5iaWZmPT0yPzE6MixpLGY9ZS5yZWFkX3NoaWZ0KG4pO2lmKGY9PTY1NTM1KXJldHVybltbXSx5cihlLGEtMildO3ZhciBzPVZ0KGUsZixyKTtyZXR1cm4gYSE9PWYrbiYmKGk9V3QoZSxhLWYtbixzLHIpKSxlLmw9dCxbcyxpXX1mdW5jdGlvbiBKeChlLGEscix0KXt2YXIgbj1lLmwrYSxpPVZ0KGUsdCxyKSxmO3JldHVybiBuIT09ZS5sJiYoZj1XdChlLG4tZS5sLGkscikpLFtpLGZdfWZ1bmN0aW9uIFp4KGUsYSxyKXt2YXIgdD1lLmwrYSxuLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9VnQoZSxpLHIpO3JldHVybiBpPT02NTUzNT9bW10seXIoZSxhLTIpXTooYSE9PWkrMiYmKG49V3QoZSx0LWktMixmLHIpKSxbZixuXSl9ZnVuY3Rpb24gcXgoZSl7dmFyIGE7aWYoZGEoZSxlLmwrNikhPT02NTUzNSlyZXR1cm5bX3IoZSksIm4iXTtzd2l0Y2goZVtlLmxdKXtjYXNlIDA6cmV0dXJuIGUubCs9OCxbIlN0cmluZyIsInMiXTtjYXNlIDE6cmV0dXJuIGE9ZVtlLmwrMl09PT0xLGUubCs9OCxbYSwiYiJdO2Nhc2UgMjpyZXR1cm4gYT1lW2UubCsyXSxlLmwrPTgsW2EsImUiXTtjYXNlIDM6cmV0dXJuIGUubCs9OCxbIiIsInMiXX1yZXR1cm5bXX1mdW5jdGlvbiBrbihlLGEscil7dmFyIHQ9ZS5sK2Esbj1xcihlLDYsciksaT1xeChlKSxmPWUucmVhZF9zaGlmdCgxKTtyLmJpZmYhPTImJihlLnJlYWRfc2hpZnQoMSksci5iaWZmPj01JiZlLnJlYWRfc2hpZnQoNCkpO3ZhciBzPVl4KGUsdC1lLmwscik7cmV0dXJue2NlbGw6bix2YWw6aVswXSxmb3JtdWxhOnMsc2hhcmVkOmY+PjMmMSx0dDppWzFdfX1mdW5jdGlvbiB5MChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDQpLG49VnQoZSx0LHIpLGk9ZS5yZWFkX3NoaWZ0KDQpLGY9aT4wP1d0KGUsaSxuLHIpOm51bGw7cmV0dXJuW24sZl19dmFyIFF4PXkwLFMwPXkwLGVkPXkwLHJkPXkwLGFkPXswOiJCRUVQIiwxOiJPUEVOIiwyOiJPUEVOLkxJTktTIiwzOiJDTE9TRS5BTEwiLDQ6IlNBVkUiLDU6IlNBVkUuQVMiLDY6IkZJTEUuREVMRVRFIiw3OiJQQUdFLlNFVFVQIiw4OiJQUklOVCIsOToiUFJJTlRFUi5TRVRVUCIsMTA6IlFVSVQiLDExOiJORVcuV0lORE9XIiwxMjoiQVJSQU5HRS5BTEwiLDEzOiJXSU5ET1cuU0laRSIsMTQ6IldJTkRPVy5NT1ZFIiwxNToiRlVMTCIsMTY6IkNMT1NFIiwxNzoiUlVOIiwyMjoiU0VULlBSSU5ULkFSRUEiLDIzOiJTRVQuUFJJTlQuVElUTEVTIiwyNDoiU0VULlBBR0UuQlJFQUsiLDI1OiJSRU1PVkUuUEFHRS5CUkVBSyIsMjY6IkZPTlQiLDI3OiJESVNQTEFZIiwyODoiUFJPVEVDVC5ET0NVTUVOVCIsMjk6IlBSRUNJU0lPTiIsMzA6IkExLlIxQzEiLDMxOiJDQUxDVUxBVEUuTk9XIiwzMjoiQ0FMQ1VMQVRJT04iLDM0OiJEQVRBLkZJTkQiLDM1OiJFWFRSQUNUIiwzNjoiREFUQS5ERUxFVEUiLDM3OiJTRVQuREFUQUJBU0UiLDM4OiJTRVQuQ1JJVEVSSUEiLDM5OiJTT1JUIiw0MDoiREFUQS5TRVJJRVMiLDQxOiJUQUJMRSIsNDI6IkZPUk1BVC5OVU1CRVIiLDQzOiJBTElHTk1FTlQiLDQ0OiJTVFlMRSIsNDU6IkJPUkRFUiIsNDY6IkNFTEwuUFJPVEVDVElPTiIsNDc6IkNPTFVNTi5XSURUSCIsNDg6IlVORE8iLDQ5OiJDVVQiLDUwOiJDT1BZIiw1MToiUEFTVEUiLDUyOiJDTEVBUiIsNTM6IlBBU1RFLlNQRUNJQUwiLDU0OiJFRElULkRFTEVURSIsNTU6IklOU0VSVCIsNTY6IkZJTEwuUklHSFQiLDU3OiJGSUxMLkRPV04iLDYxOiJERUZJTkUuTkFNRSIsNjI6IkNSRUFURS5OQU1FUyIsNjM6IkZPUk1VTEEuR09UTyIsNjQ6IkZPUk1VTEEuRklORCIsNjU6IlNFTEVDVC5MQVNULkNFTEwiLDY2OiJTSE9XLkFDVElWRS5DRUxMIiw2NzoiR0FMTEVSWS5BUkVBIiw2ODoiR0FMTEVSWS5CQVIiLDY5OiJHQUxMRVJZLkNPTFVNTiIsNzA6IkdBTExFUlkuTElORSIsNzE6IkdBTExFUlkuUElFIiw3MjoiR0FMTEVSWS5TQ0FUVEVSIiw3MzoiQ09NQklOQVRJT04iLDc0OiJQUkVGRVJSRUQiLDc1OiJBREQuT1ZFUkxBWSIsNzY6IkdSSURMSU5FUyIsNzc6IlNFVC5QUkVGRVJSRUQiLDc4OiJBWEVTIiw3OToiTEVHRU5EIiw4MDoiQVRUQUNILlRFWFQiLDgxOiJBREQuQVJST1ciLDgyOiJTRUxFQ1QuQ0hBUlQiLDgzOiJTRUxFQ1QuUExPVC5BUkVBIiw4NDoiUEFUVEVSTlMiLDg1OiJNQUlOLkNIQVJUIiw4NjoiT1ZFUkxBWSIsODc6IlNDQUxFIiw4ODoiRk9STUFULkxFR0VORCIsODk6IkZPUk1BVC5URVhUIiw5MDoiRURJVC5SRVBFQVQiLDkxOiJQQVJTRSIsOTI6IkpVU1RJRlkiLDkzOiJISURFIiw5NDoiVU5ISURFIiw5NToiV09SS1NQQUNFIiw5NjoiRk9STVVMQSIsOTc6IkZPUk1VTEEuRklMTCIsOTg6IkZPUk1VTEEuQVJSQVkiLDk5OiJEQVRBLkZJTkQuTkVYVCIsMTAwOiJEQVRBLkZJTkQuUFJFViIsMTAxOiJGT1JNVUxBLkZJTkQuTkVYVCIsMTAyOiJGT1JNVUxBLkZJTkQuUFJFViIsMTAzOiJBQ1RJVkFURSIsMTA0OiJBQ1RJVkFURS5ORVhUIiwxMDU6IkFDVElWQVRFLlBSRVYiLDEwNjoiVU5MT0NLRUQuTkVYVCIsMTA3OiJVTkxPQ0tFRC5QUkVWIiwxMDg6IkNPUFkuUElDVFVSRSIsMTA5OiJTRUxFQ1QiLDExMDoiREVMRVRFLk5BTUUiLDExMToiREVMRVRFLkZPUk1BVCIsMTEyOiJWTElORSIsMTEzOiJITElORSIsMTE0OiJWUEFHRSIsMTE1OiJIUEFHRSIsMTE2OiJWU0NST0xMIiwxMTc6IkhTQ1JPTEwiLDExODoiQUxFUlQiLDExOToiTkVXIiwxMjA6IkNBTkNFTC5DT1BZIiwxMjE6IlNIT1cuQ0xJUEJPQVJEIiwxMjI6Ik1FU1NBR0UiLDEyNDoiUEFTVEUuTElOSyIsMTI1OiJBUFAuQUNUSVZBVEUiLDEyNjoiREVMRVRFLkFSUk9XIiwxMjc6IlJPVy5IRUlHSFQiLDEyODoiRk9STUFULk1PVkUiLDEyOToiRk9STUFULlNJWkUiLDEzMDoiRk9STVVMQS5SRVBMQUNFIiwxMzE6IlNFTkQuS0VZUyIsMTMyOiJTRUxFQ1QuU1BFQ0lBTCIsMTMzOiJBUFBMWS5OQU1FUyIsMTM0OiJSRVBMQUNFLkZPTlQiLDEzNToiRlJFRVpFLlBBTkVTIiwxMzY6IlNIT1cuSU5GTyIsMTM3OiJTUExJVCIsMTM4OiJPTi5XSU5ET1ciLDEzOToiT04uREFUQSIsMTQwOiJESVNBQkxFLklOUFVUIiwxNDI6Ik9VVExJTkUiLDE0MzoiTElTVC5OQU1FUyIsMTQ0OiJGSUxFLkNMT1NFIiwxNDU6IlNBVkUuV09SS0JPT0siLDE0NjoiREFUQS5GT1JNIiwxNDc6IkNPUFkuQ0hBUlQiLDE0ODoiT04uVElNRSIsMTQ5OiJXQUlUIiwxNTA6IkZPUk1BVC5GT05UIiwxNTE6IkZJTEwuVVAiLDE1MjoiRklMTC5MRUZUIiwxNTM6IkRFTEVURS5PVkVSTEFZIiwxNTU6IlNIT1JULk1FTlVTIiwxNTk6IlNFVC5VUERBVEUuU1RBVFVTIiwxNjE6IkNPTE9SLlBBTEVUVEUiLDE2MjoiREVMRVRFLlNUWUxFIiwxNjM6IldJTkRPVy5SRVNUT1JFIiwxNjQ6IldJTkRPVy5NQVhJTUlaRSIsMTY2OiJDSEFOR0UuTElOSyIsMTY3OiJDQUxDVUxBVEUuRE9DVU1FTlQiLDE2ODoiT04uS0VZIiwxNjk6IkFQUC5SRVNUT1JFIiwxNzA6IkFQUC5NT1ZFIiwxNzE6IkFQUC5TSVpFIiwxNzI6IkFQUC5NSU5JTUlaRSIsMTczOiJBUFAuTUFYSU1JWkUiLDE3NDoiQlJJTkcuVE8uRlJPTlQiLDE3NToiU0VORC5UTy5CQUNLIiwxODU6Ik1BSU4uQ0hBUlQuVFlQRSIsMTg2OiJPVkVSTEFZLkNIQVJULlRZUEUiLDE4NzoiU0VMRUNULkVORCIsMTg4OiJPUEVOLk1BSUwiLDE4OToiU0VORC5NQUlMIiwxOTA6IlNUQU5EQVJELkZPTlQiLDE5MToiQ09OU09MSURBVEUiLDE5MjoiU09SVC5TUEVDSUFMIiwxOTM6IkdBTExFUlkuM0QuQVJFQSIsMTk0OiJHQUxMRVJZLjNELkNPTFVNTiIsMTk1OiJHQUxMRVJZLjNELkxJTkUiLDE5NjoiR0FMTEVSWS4zRC5QSUUiLDE5NzoiVklFVy4zRCIsMTk4OiJHT0FMLlNFRUsiLDE5OToiV09SS0dST1VQIiwyMDA6IkZJTEwuR1JPVVAiLDIwMToiVVBEQVRFLkxJTksiLDIwMjoiUFJPTU9URSIsMjAzOiJERU1PVEUiLDIwNDoiU0hPVy5ERVRBSUwiLDIwNjoiVU5HUk9VUCIsMjA3OiJPQkpFQ1QuUFJPUEVSVElFUyIsMjA4OiJTQVZFLk5FVy5PQkpFQ1QiLDIwOToiU0hBUkUiLDIxMDoiU0hBUkUuTkFNRSIsMjExOiJEVVBMSUNBVEUiLDIxMjoiQVBQTFkuU1RZTEUiLDIxMzoiQVNTSUdOLlRPLk9CSkVDVCIsMjE0OiJPQkpFQ1QuUFJPVEVDVElPTiIsMjE1OiJISURFLk9CSkVDVCIsMjE2OiJTRVQuRVhUUkFDVCIsMjE3OiJDUkVBVEUuUFVCTElTSEVSIiwyMTg6IlNVQlNDUklCRS5UTyIsMjE5OiJBVFRSSUJVVEVTIiwyMjA6IlNIT1cuVE9PTEJBUiIsMjIyOiJQUklOVC5QUkVWSUVXIiwyMjM6IkVESVQuQ09MT1IiLDIyNDoiU0hPVy5MRVZFTFMiLDIyNToiRk9STUFULk1BSU4iLDIyNjoiRk9STUFULk9WRVJMQVkiLDIyNzoiT04uUkVDQUxDIiwyMjg6IkVESVQuU0VSSUVTIiwyMjk6IkRFRklORS5TVFlMRSIsMjQwOiJMSU5FLlBSSU5UIiwyNDM6IkVOVEVSLkRBVEEiLDI0OToiR0FMTEVSWS5SQURBUiIsMjUwOiJNRVJHRS5TVFlMRVMiLDI1MToiRURJVElPTi5PUFRJT05TIiwyNTI6IlBBU1RFLlBJQ1RVUkUiLDI1MzoiUEFTVEUuUElDVFVSRS5MSU5LIiwyNTQ6IlNQRUxMSU5HIiwyNTY6IlpPT00iLDI1OToiSU5TRVJULk9CSkVDVCIsMjYwOiJXSU5ET1cuTUlOSU1JWkUiLDI2NToiU09VTkQuTk9URSIsMjY2OiJTT1VORC5QTEFZIiwyNjc6IkZPUk1BVC5TSEFQRSIsMjY4OiJFWFRFTkQuUE9MWUdPTiIsMjY5OiJGT1JNQVQuQVVUTyIsMjcyOiJHQUxMRVJZLjNELkJBUiIsMjczOiJHQUxMRVJZLjNELlNVUkZBQ0UiLDI3NDoiRklMTC5BVVRPIiwyNzY6IkNVU1RPTUlaRS5UT09MQkFSIiwyNzc6IkFERC5UT09MIiwyNzg6IkVESVQuT0JKRUNUIiwyNzk6Ik9OLkRPVUJMRUNMSUNLIiwyODA6Ik9OLkVOVFJZIiwyODE6IldPUktCT09LLkFERCIsMjgyOiJXT1JLQk9PSy5NT1ZFIiwyODM6IldPUktCT09LLkNPUFkiLDI4NDoiV09SS0JPT0suT1BUSU9OUyIsMjg1OiJTQVZFLldPUktTUEFDRSIsMjg4OiJDSEFSVC5XSVpBUkQiLDI4OToiREVMRVRFLlRPT0wiLDI5MDoiTU9WRS5UT09MIiwyOTE6IldPUktCT09LLlNFTEVDVCIsMjkyOiJXT1JLQk9PSy5BQ1RJVkFURSIsMjkzOiJBU1NJR04uVE8uVE9PTCIsMjk1OiJDT1BZLlRPT0wiLDI5NjoiUkVTRVQuVE9PTCIsMjk3OiJDT05TVFJBSU4uTlVNRVJJQyIsMjk4OiJQQVNURS5UT09MIiwzMDI6IldPUktCT09LLk5FVyIsMzA1OiJTQ0VOQVJJTy5DRUxMUyIsMzA2OiJTQ0VOQVJJTy5ERUxFVEUiLDMwNzoiU0NFTkFSSU8uQUREIiwzMDg6IlNDRU5BUklPLkVESVQiLDMwOToiU0NFTkFSSU8uU0hPVyIsMzEwOiJTQ0VOQVJJTy5TSE9XLk5FWFQiLDMxMToiU0NFTkFSSU8uU1VNTUFSWSIsMzEyOiJQSVZPVC5UQUJMRS5XSVpBUkQiLDMxMzoiUElWT1QuRklFTEQuUFJPUEVSVElFUyIsMzE0OiJQSVZPVC5GSUVMRCIsMzE1OiJQSVZPVC5JVEVNIiwzMTY6IlBJVk9ULkFERC5GSUVMRFMiLDMxODoiT1BUSU9OUy5DQUxDVUxBVElPTiIsMzE5OiJPUFRJT05TLkVESVQiLDMyMDoiT1BUSU9OUy5WSUVXIiwzMjE6IkFERElOLk1BTkFHRVIiLDMyMjoiTUVOVS5FRElUT1IiLDMyMzoiQVRUQUNILlRPT0xCQVJTIiwzMjQ6IlZCQUFjdGl2YXRlIiwzMjU6Ik9QVElPTlMuQ0hBUlQiLDMyODoiVkJBLklOU0VSVC5GSUxFIiwzMzA6IlZCQS5QUk9DRURVUkUuREVGSU5JVElPTiIsMzM2OiJST1VUSU5HLlNMSVAiLDMzODoiUk9VVEUuRE9DVU1FTlQiLDMzOToiTUFJTC5MT0dPTiIsMzQyOiJJTlNFUlQuUElDVFVSRSIsMzQzOiJFRElULlRPT0wiLDM0NDoiR0FMTEVSWS5ET1VHSE5VVCIsMzUwOiJDSEFSVC5UUkVORCIsMzUyOiJQSVZPVC5JVEVNLlBST1BFUlRJRVMiLDM1NDoiV09SS0JPT0suSU5TRVJUIiwzNTU6Ik9QVElPTlMuVFJBTlNJVElPTiIsMzU2OiJPUFRJT05TLkdFTkVSQUwiLDM3MDoiRklMVEVSLkFEVkFOQ0VEIiwzNzM6Ik1BSUwuQURELk1BSUxFUiIsMzc0OiJNQUlMLkRFTEVURS5NQUlMRVIiLDM3NToiTUFJTC5SRVBMWSIsMzc2OiJNQUlMLlJFUExZLkFMTCIsMzc3OiJNQUlMLkZPUldBUkQiLDM3ODoiTUFJTC5ORVhULkxFVFRFUiIsMzc5OiJEQVRBLkxBQkVMIiwzODA6IklOU0VSVC5USVRMRSIsMzgxOiJGT05ULlBST1BFUlRJRVMiLDM4MjoiTUFDUk8uT1BUSU9OUyIsMzgzOiJXT1JLQk9PSy5ISURFIiwzODQ6IldPUktCT09LLlVOSElERSIsMzg1OiJXT1JLQk9PSy5ERUxFVEUiLDM4NjoiV09SS0JPT0suTkFNRSIsMzg4OiJHQUxMRVJZLkNVU1RPTSIsMzkwOiJBREQuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkxOiJERUxFVEUuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkyOiJDSEFSVC5BREQuREFUQSIsMzkzOiJBVVRPLk9VVExJTkUiLDM5NDoiVEFCLk9SREVSIiwzOTU6IlNIT1cuRElBTE9HIiwzOTY6IlNFTEVDVC5BTEwiLDM5NzoiVU5HUk9VUC5TSEVFVFMiLDM5ODoiU1VCVE9UQUwuQ1JFQVRFIiwzOTk6IlNVQlRPVEFMLlJFTU9WRSIsNDAwOiJSRU5BTUUuT0JKRUNUIiw0MTI6IldPUktCT09LLlNDUk9MTCIsNDEzOiJXT1JLQk9PSy5ORVhUIiw0MTQ6IldPUktCT09LLlBSRVYiLDQxNToiV09SS0JPT0suVEFCLlNQTElUIiw0MTY6IkZVTEwuU0NSRUVOIiw0MTc6IldPUktCT09LLlBST1RFQ1QiLDQyMDoiU0NST0xMQkFSLlBST1BFUlRJRVMiLDQyMToiUElWT1QuU0hPVy5QQUdFUyIsNDIyOiJURVhULlRPLkNPTFVNTlMiLDQyMzoiRk9STUFULkNIQVJUVFlQRSIsNDI0OiJMSU5LLkZPUk1BVCIsNDI1OiJUUkFDRVIuRElTUExBWSIsNDMwOiJUUkFDRVIuTkFWSUdBVEUiLDQzMToiVFJBQ0VSLkNMRUFSIiw0MzI6IlRSQUNFUi5FUlJPUiIsNDMzOiJQSVZPVC5GSUVMRC5HUk9VUCIsNDM0OiJQSVZPVC5GSUVMRC5VTkdST1VQIiw0MzU6IkNIRUNLQk9YLlBST1BFUlRJRVMiLDQzNjoiTEFCRUwuUFJPUEVSVElFUyIsNDM3OiJMSVNUQk9YLlBST1BFUlRJRVMiLDQzODoiRURJVEJPWC5QUk9QRVJUSUVTIiw0Mzk6IlBJVk9ULlJFRlJFU0giLDQ0MDoiTElOSy5DT01CTyIsNDQxOiJPUEVOLlRFWFQiLDQ0MjoiSElERS5ESUFMT0ciLDQ0MzoiU0VULkRJQUxPRy5GT0NVUyIsNDQ0OiJFTkFCTEUuT0JKRUNUIiw0NDU6IlBVU0hCVVRUT04uUFJPUEVSVElFUyIsNDQ2OiJTRVQuRElBTE9HLkRFRkFVTFQiLDQ0NzoiRklMVEVSIiw0NDg6IkZJTFRFUi5TSE9XLkFMTCIsNDQ5OiJDTEVBUi5PVVRMSU5FIiw0NTA6IkZVTkNUSU9OLldJWkFSRCIsNDUxOiJBREQuTElTVC5JVEVNIiw0NTI6IlNFVC5MSVNULklURU0iLDQ1MzoiUkVNT1ZFLkxJU1QuSVRFTSIsNDU0OiJTRUxFQ1QuTElTVC5JVEVNIiw0NTU6IlNFVC5DT05UUk9MLlZBTFVFIiw0NTY6IlNBVkUuQ09QWS5BUyIsNDU4OiJPUFRJT05TLkxJU1RTLkFERCIsNDU5OiJPUFRJT05TLkxJU1RTLkRFTEVURSIsNDYwOiJTRVJJRVMuQVhFUyIsNDYxOiJTRVJJRVMuWCIsNDYyOiJTRVJJRVMuWSIsNDYzOiJFUlJPUkJBUi5YIiw0NjQ6IkVSUk9SQkFSLlkiLDQ2NToiRk9STUFULkNIQVJUIiw0NjY6IlNFUklFUy5PUkRFUiIsNDY3OiJNQUlMLkxPR09GRiIsNDY4OiJDTEVBUi5ST1VUSU5HLlNMSVAiLDQ2OToiQVBQLkFDVElWQVRFLk1JQ1JPU09GVCIsNDcwOiJNQUlMLkVESVQuTUFJTEVSIiw0NzE6Ik9OLlNIRUVUIiw0NzI6IlNUQU5EQVJELldJRFRIIiw0NzM6IlNDRU5BUklPLk1FUkdFIiw0NzQ6IlNVTU1BUlkuSU5GTyIsNDc1OiJGSU5ELkZJTEUiLDQ3NjoiQUNUSVZFLkNFTEwuRk9OVCIsNDc3OiJFTkFCTEUuVElQV0laQVJEIiw0Nzg6IlZCQS5NQUtFLkFERElOIiw0ODA6IklOU0VSVERBVEFUQUJMRSIsNDgxOiJXT1JLR1JPVVAuT1BUSU9OUyIsNDgyOiJNQUlMLlNFTkQuTUFJTEVSIiw0ODU6IkFVVE9DT1JSRUNUIiw0ODk6IlBPU1QuRE9DVU1FTlQiLDQ5MToiUElDS0xJU1QiLDQ5MzoiVklFVy5TSE9XIiw0OTQ6IlZJRVcuREVGSU5FIiw0OTU6IlZJRVcuREVMRVRFIiw1MDk6IlNIRUVULkJBQ0tHUk9VTkQiLDUxMDoiSU5TRVJULk1BUC5PQkpFQ1QiLDUxMToiT1BUSU9OUy5NRU5PTk8iLDUxNzoiTVNPQ0hFQ0tTIiw1MTg6Ik5PUk1BTCIsNTE5OiJMQVlPVVQiLDUyMDoiUk0uUFJJTlQuQVJFQSIsNTIxOiJDTEVBUi5QUklOVC5BUkVBIiw1MjI6IkFERC5QUklOVC5BUkVBIiw1MjM6Ik1PVkUuQlJLIiw1NDU6IkhJREVDVVJSLk5PVEUiLDU0NjoiSElERUFMTC5OT1RFUyIsNTQ3OiJERUxFVEUuTk9URSIsNTQ4OiJUUkFWRVJTRS5OT1RFUyIsNTQ5OiJBQ1RJVkFURS5OT1RFUyIsNjIwOiJQUk9URUNULlJFVklTSU9OUyIsNjIxOiJVTlBST1RFQ1QuUkVWSVNJT05TIiw2NDc6Ik9QVElPTlMuTUUiLDY1MzoiV0VCLlBVQkxJU0giLDY2NzoiTkVXV0VCUVVFUlkiLDY3MzoiUElWT1QuVEFCTEUuQ0hBUlQiLDc1MzoiT1BUSU9OUy5TQVZFIiw3NTU6Ik9QVElPTlMuU1BFTEwiLDgwODoiSElERUFMTC5JTktBTk5PVFMifSxmZj17MDoiQ09VTlQiLDE6IklGIiwyOiJJU05BIiwzOiJJU0VSUk9SIiw0OiJTVU0iLDU6IkFWRVJBR0UiLDY6Ik1JTiIsNzoiTUFYIiw4OiJST1ciLDk6IkNPTFVNTiIsMTA6Ik5BIiwxMToiTlBWIiwxMjoiU1RERVYiLDEzOiJET0xMQVIiLDE0OiJGSVhFRCIsMTU6IlNJTiIsMTY6IkNPUyIsMTc6IlRBTiIsMTg6IkFUQU4iLDE5OiJQSSIsMjA6IlNRUlQiLDIxOiJFWFAiLDIyOiJMTiIsMjM6IkxPRzEwIiwyNDoiQUJTIiwyNToiSU5UIiwyNjoiU0lHTiIsMjc6IlJPVU5EIiwyODoiTE9PS1VQIiwyOToiSU5ERVgiLDMwOiJSRVBUIiwzMToiTUlEIiwzMjoiTEVOIiwzMzoiVkFMVUUiLDM0OiJUUlVFIiwzNToiRkFMU0UiLDM2OiJBTkQiLDM3OiJPUiIsMzg6Ik5PVCIsMzk6Ik1PRCIsNDA6IkRDT1VOVCIsNDE6IkRTVU0iLDQyOiJEQVZFUkFHRSIsNDM6IkRNSU4iLDQ0OiJETUFYIiw0NToiRFNUREVWIiw0NjoiVkFSIiw0NzoiRFZBUiIsNDg6IlRFWFQiLDQ5OiJMSU5FU1QiLDUwOiJUUkVORCIsNTE6IkxPR0VTVCIsNTI6IkdST1dUSCIsNTM6IkdPVE8iLDU0OiJIQUxUIiw1NToiUkVUVVJOIiw1NjoiUFYiLDU3OiJGViIsNTg6Ik5QRVIiLDU5OiJQTVQiLDYwOiJSQVRFIiw2MToiTUlSUiIsNjI6IklSUiIsNjM6IlJBTkQiLDY0OiJNQVRDSCIsNjU6IkRBVEUiLDY2OiJUSU1FIiw2NzoiREFZIiw2ODoiTU9OVEgiLDY5OiJZRUFSIiw3MDoiV0VFS0RBWSIsNzE6IkhPVVIiLDcyOiJNSU5VVEUiLDczOiJTRUNPTkQiLDc0OiJOT1ciLDc1OiJBUkVBUyIsNzY6IlJPV1MiLDc3OiJDT0xVTU5TIiw3ODoiT0ZGU0VUIiw3OToiQUJTUkVGIiw4MDoiUkVMUkVGIiw4MToiQVJHVU1FTlQiLDgyOiJTRUFSQ0giLDgzOiJUUkFOU1BPU0UiLDg0OiJFUlJPUiIsODU6IlNURVAiLDg2OiJUWVBFIiw4NzoiRUNITyIsODg6IlNFVC5OQU1FIiw4OToiQ0FMTEVSIiw5MDoiREVSRUYiLDkxOiJXSU5ET1dTIiw5MjoiU0VSSUVTIiw5MzoiRE9DVU1FTlRTIiw5NDoiQUNUSVZFLkNFTEwiLDk1OiJTRUxFQ1RJT04iLDk2OiJSRVNVTFQiLDk3OiJBVEFOMiIsOTg6IkFTSU4iLDk5OiJBQ09TIiwxMDA6IkNIT09TRSIsMTAxOiJITE9PS1VQIiwxMDI6IlZMT09LVVAiLDEwMzoiTElOS1MiLDEwNDoiSU5QVVQiLDEwNToiSVNSRUYiLDEwNjoiR0VULkZPUk1VTEEiLDEwNzoiR0VULk5BTUUiLDEwODoiU0VULlZBTFVFIiwxMDk6IkxPRyIsMTEwOiJFWEVDIiwxMTE6IkNIQVIiLDExMjoiTE9XRVIiLDExMzoiVVBQRVIiLDExNDoiUFJPUEVSIiwxMTU6IkxFRlQiLDExNjoiUklHSFQiLDExNzoiRVhBQ1QiLDExODoiVFJJTSIsMTE5OiJSRVBMQUNFIiwxMjA6IlNVQlNUSVRVVEUiLDEyMToiQ09ERSIsMTIyOiJOQU1FUyIsMTIzOiJESVJFQ1RPUlkiLDEyNDoiRklORCIsMTI1OiJDRUxMIiwxMjY6IklTRVJSIiwxMjc6IklTVEVYVCIsMTI4OiJJU05VTUJFUiIsMTI5OiJJU0JMQU5LIiwxMzA6IlQiLDEzMToiTiIsMTMyOiJGT1BFTiIsMTMzOiJGQ0xPU0UiLDEzNDoiRlNJWkUiLDEzNToiRlJFQURMTiIsMTM2OiJGUkVBRCIsMTM3OiJGV1JJVEVMTiIsMTM4OiJGV1JJVEUiLDEzOToiRlBPUyIsMTQwOiJEQVRFVkFMVUUiLDE0MToiVElNRVZBTFVFIiwxNDI6IlNMTiIsMTQzOiJTWUQiLDE0NDoiRERCIiwxNDU6IkdFVC5ERUYiLDE0NjoiUkVGVEVYVCIsMTQ3OiJURVhUUkVGIiwxNDg6IklORElSRUNUIiwxNDk6IlJFR0lTVEVSIiwxNTA6IkNBTEwiLDE1MToiQURELkJBUiIsMTUyOiJBREQuTUVOVSIsMTUzOiJBREQuQ09NTUFORCIsMTU0OiJFTkFCTEUuQ09NTUFORCIsMTU1OiJDSEVDSy5DT01NQU5EIiwxNTY6IlJFTkFNRS5DT01NQU5EIiwxNTc6IlNIT1cuQkFSIiwxNTg6IkRFTEVURS5NRU5VIiwxNTk6IkRFTEVURS5DT01NQU5EIiwxNjA6IkdFVC5DSEFSVC5JVEVNIiwxNjE6IkRJQUxPRy5CT1giLDE2MjoiQ0xFQU4iLDE2MzoiTURFVEVSTSIsMTY0OiJNSU5WRVJTRSIsMTY1OiJNTVVMVCIsMTY2OiJGSUxFUyIsMTY3OiJJUE1UIiwxNjg6IlBQTVQiLDE2OToiQ09VTlRBIiwxNzA6IkNBTkNFTC5LRVkiLDE3MToiRk9SIiwxNzI6IldISUxFIiwxNzM6IkJSRUFLIiwxNzQ6Ik5FWFQiLDE3NToiSU5JVElBVEUiLDE3NjoiUkVRVUVTVCIsMTc3OiJQT0tFIiwxNzg6IkVYRUNVVEUiLDE3OToiVEVSTUlOQVRFIiwxODA6IlJFU1RBUlQiLDE4MToiSEVMUCIsMTgyOiJHRVQuQkFSIiwxODM6IlBST0RVQ1QiLDE4NDoiRkFDVCIsMTg1OiJHRVQuQ0VMTCIsMTg2OiJHRVQuV09SS1NQQUNFIiwxODc6IkdFVC5XSU5ET1ciLDE4ODoiR0VULkRPQ1VNRU5UIiwxODk6IkRQUk9EVUNUIiwxOTA6IklTTk9OVEVYVCIsMTkxOiJHRVQuTk9URSIsMTkyOiJOT1RFIiwxOTM6IlNUREVWUCIsMTk0OiJWQVJQIiwxOTU6IkRTVERFVlAiLDE5NjoiRFZBUlAiLDE5NzoiVFJVTkMiLDE5ODoiSVNMT0dJQ0FMIiwxOTk6IkRDT1VOVEEiLDIwMDoiREVMRVRFLkJBUiIsMjAxOiJVTlJFR0lTVEVSIiwyMDQ6IlVTRE9MTEFSIiwyMDU6IkZJTkRCIiwyMDY6IlNFQVJDSEIiLDIwNzoiUkVQTEFDRUIiLDIwODoiTEVGVEIiLDIwOToiUklHSFRCIiwyMTA6Ik1JREIiLDIxMToiTEVOQiIsMjEyOiJST1VORFVQIiwyMTM6IlJPVU5ERE9XTiIsMjE0OiJBU0MiLDIxNToiREJDUyIsMjE2OiJSQU5LIiwyMTk6IkFERFJFU1MiLDIyMDoiREFZUzM2MCIsMjIxOiJUT0RBWSIsMjIyOiJWREIiLDIyMzoiRUxTRSIsMjI0OiJFTFNFLklGIiwyMjU6IkVORC5JRiIsMjI2OiJGT1IuQ0VMTCIsMjI3OiJNRURJQU4iLDIyODoiU1VNUFJPRFVDVCIsMjI5OiJTSU5IIiwyMzA6IkNPU0giLDIzMToiVEFOSCIsMjMyOiJBU0lOSCIsMjMzOiJBQ09TSCIsMjM0OiJBVEFOSCIsMjM1OiJER0VUIiwyMzY6IkNSRUFURS5PQkpFQ1QiLDIzNzoiVk9MQVRJTEUiLDIzODoiTEFTVC5FUlJPUiIsMjM5OiJDVVNUT00uVU5ETyIsMjQwOiJDVVNUT00uUkVQRUFUIiwyNDE6IkZPUk1VTEEuQ09OVkVSVCIsMjQyOiJHRVQuTElOSy5JTkZPIiwyNDM6IlRFWFQuQk9YIiwyNDQ6IklORk8iLDI0NToiR1JPVVAiLDI0NjoiR0VULk9CSkVDVCIsMjQ3OiJEQiIsMjQ4OiJQQVVTRSIsMjUxOiJSRVNVTUUiLDI1MjoiRlJFUVVFTkNZIiwyNTM6IkFERC5UT09MQkFSIiwyNTQ6IkRFTEVURS5UT09MQkFSIiwyNTU6IlVzZXIiLDI1NjoiUkVTRVQuVE9PTEJBUiIsMjU3OiJFVkFMVUFURSIsMjU4OiJHRVQuVE9PTEJBUiIsMjU5OiJHRVQuVE9PTCIsMjYwOiJTUEVMTElORy5DSEVDSyIsMjYxOiJFUlJPUi5UWVBFIiwyNjI6IkFQUC5USVRMRSIsMjYzOiJXSU5ET1cuVElUTEUiLDI2NDoiU0FWRS5UT09MQkFSIiwyNjU6IkVOQUJMRS5UT09MIiwyNjY6IlBSRVNTLlRPT0wiLDI2NzoiUkVHSVNURVIuSUQiLDI2ODoiR0VULldPUktCT09LIiwyNjk6IkFWRURFViIsMjcwOiJCRVRBRElTVCIsMjcxOiJHQU1NQUxOIiwyNzI6IkJFVEFJTlYiLDI3MzoiQklOT01ESVNUIiwyNzQ6IkNISURJU1QiLDI3NToiQ0hJSU5WIiwyNzY6IkNPTUJJTiIsMjc3OiJDT05GSURFTkNFIiwyNzg6IkNSSVRCSU5PTSIsMjc5OiJFVkVOIiwyODA6IkVYUE9ORElTVCIsMjgxOiJGRElTVCIsMjgyOiJGSU5WIiwyODM6IkZJU0hFUiIsMjg0OiJGSVNIRVJJTlYiLDI4NToiRkxPT1IiLDI4NjoiR0FNTUFESVNUIiwyODc6IkdBTU1BSU5WIiwyODg6IkNFSUxJTkciLDI4OToiSFlQR0VPTURJU1QiLDI5MDoiTE9HTk9STURJU1QiLDI5MToiTE9HSU5WIiwyOTI6Ik5FR0JJTk9NRElTVCIsMjkzOiJOT1JNRElTVCIsMjk0OiJOT1JNU0RJU1QiLDI5NToiTk9STUlOViIsMjk2OiJOT1JNU0lOViIsMjk3OiJTVEFOREFSRElaRSIsMjk4OiJPREQiLDI5OToiUEVSTVVUIiwzMDA6IlBPSVNTT04iLDMwMToiVERJU1QiLDMwMjoiV0VJQlVMTCIsMzAzOiJTVU1YTVkyIiwzMDQ6IlNVTVgyTVkyIiwzMDU6IlNVTVgyUFkyIiwzMDY6IkNISVRFU1QiLDMwNzoiQ09SUkVMIiwzMDg6IkNPVkFSIiwzMDk6IkZPUkVDQVNUIiwzMTA6IkZURVNUIiwzMTE6IklOVEVSQ0VQVCIsMzEyOiJQRUFSU09OIiwzMTM6IlJTUSIsMzE0OiJTVEVZWCIsMzE1OiJTTE9QRSIsMzE2OiJUVEVTVCIsMzE3OiJQUk9CIiwzMTg6IkRFVlNRIiwzMTk6IkdFT01FQU4iLDMyMDoiSEFSTUVBTiIsMzIxOiJTVU1TUSIsMzIyOiJLVVJUIiwzMjM6IlNLRVciLDMyNDoiWlRFU1QiLDMyNToiTEFSR0UiLDMyNjoiU01BTEwiLDMyNzoiUVVBUlRJTEUiLDMyODoiUEVSQ0VOVElMRSIsMzI5OiJQRVJDRU5UUkFOSyIsMzMwOiJNT0RFIiwzMzE6IlRSSU1NRUFOIiwzMzI6IlRJTlYiLDMzNDoiTU9WSUUuQ09NTUFORCIsMzM1OiJHRVQuTU9WSUUiLDMzNjoiQ09OQ0FURU5BVEUiLDMzNzoiUE9XRVIiLDMzODoiUElWT1QuQURELkRBVEEiLDMzOToiR0VULlBJVk9ULlRBQkxFIiwzNDA6IkdFVC5QSVZPVC5GSUVMRCIsMzQxOiJHRVQuUElWT1QuSVRFTSIsMzQyOiJSQURJQU5TIiwzNDM6IkRFR1JFRVMiLDM0NDoiU1VCVE9UQUwiLDM0NToiU1VNSUYiLDM0NjoiQ09VTlRJRiIsMzQ3OiJDT1VOVEJMQU5LIiwzNDg6IlNDRU5BUklPLkdFVCIsMzQ5OiJPUFRJT05TLkxJU1RTLkdFVCIsMzUwOiJJU1BNVCIsMzUxOiJEQVRFRElGIiwzNTI6IkRBVEVTVFJJTkciLDM1MzoiTlVNQkVSU1RSSU5HIiwzNTQ6IlJPTUFOIiwzNTU6Ik9QRU4uRElBTE9HIiwzNTY6IlNBVkUuRElBTE9HIiwzNTc6IlZJRVcuR0VUIiwzNTg6IkdFVFBJVk9UREFUQSIsMzU5OiJIWVBFUkxJTksiLDM2MDoiUEhPTkVUSUMiLDM2MToiQVZFUkFHRUEiLDM2MjoiTUFYQSIsMzYzOiJNSU5BIiwzNjQ6IlNUREVWUEEiLDM2NToiVkFSUEEiLDM2NjoiU1RERVZBIiwzNjc6IlZBUkEiLDM2ODoiQkFIVFRFWFQiLDM2OToiVEhBSURBWU9GV0VFSyIsMzcwOiJUSEFJRElHSVQiLDM3MToiVEhBSU1PTlRIT0ZZRUFSIiwzNzI6IlRIQUlOVU1TT1VORCIsMzczOiJUSEFJTlVNU1RSSU5HIiwzNzQ6IlRIQUlTVFJJTkdMRU5HVEgiLDM3NToiSVNUSEFJRElHSVQiLDM3NjoiUk9VTkRCQUhURE9XTiIsMzc3OiJST1VOREJBSFRVUCIsMzc4OiJUSEFJWUVBUiIsMzc5OiJSVEQiLDM4MDoiQ1VCRVZBTFVFIiwzODE6IkNVQkVNRU1CRVIiLDM4MjoiQ1VCRU1FTUJFUlBST1BFUlRZIiwzODM6IkNVQkVSQU5LRURNRU1CRVIiLDM4NDoiSEVYMkJJTiIsMzg1OiJIRVgyREVDIiwzODY6IkhFWDJPQ1QiLDM4NzoiREVDMkJJTiIsMzg4OiJERUMySEVYIiwzODk6IkRFQzJPQ1QiLDM5MDoiT0NUMkJJTiIsMzkxOiJPQ1QySEVYIiwzOTI6Ik9DVDJERUMiLDM5MzoiQklOMkRFQyIsMzk0OiJCSU4yT0NUIiwzOTU6IkJJTjJIRVgiLDM5NjoiSU1TVUIiLDM5NzoiSU1ESVYiLDM5ODoiSU1QT1dFUiIsMzk5OiJJTUFCUyIsNDAwOiJJTVNRUlQiLDQwMToiSU1MTiIsNDAyOiJJTUxPRzIiLDQwMzoiSU1MT0cxMCIsNDA0OiJJTVNJTiIsNDA1OiJJTUNPUyIsNDA2OiJJTUVYUCIsNDA3OiJJTUFSR1VNRU5UIiw0MDg6IklNQ09OSlVHQVRFIiw0MDk6IklNQUdJTkFSWSIsNDEwOiJJTVJFQUwiLDQxMToiQ09NUExFWCIsNDEyOiJJTVNVTSIsNDEzOiJJTVBST0RVQ1QiLDQxNDoiU0VSSUVTU1VNIiw0MTU6IkZBQ1RET1VCTEUiLDQxNjoiU1FSVFBJIiw0MTc6IlFVT1RJRU5UIiw0MTg6IkRFTFRBIiw0MTk6IkdFU1RFUCIsNDIwOiJJU0VWRU4iLDQyMToiSVNPREQiLDQyMjoiTVJPVU5EIiw0MjM6IkVSRiIsNDI0OiJFUkZDIiw0MjU6IkJFU1NFTEoiLDQyNjoiQkVTU0VMSyIsNDI3OiJCRVNTRUxZIiw0Mjg6IkJFU1NFTEkiLDQyOToiWElSUiIsNDMwOiJYTlBWIiw0MzE6IlBSSUNFTUFUIiw0MzI6IllJRUxETUFUIiw0MzM6IklOVFJBVEUiLDQzNDoiUkVDRUlWRUQiLDQzNToiRElTQyIsNDM2OiJQUklDRURJU0MiLDQzNzoiWUlFTERESVNDIiw0Mzg6IlRCSUxMRVEiLDQzOToiVEJJTExQUklDRSIsNDQwOiJUQklMTFlJRUxEIiw0NDE6IlBSSUNFIiw0NDI6IllJRUxEIiw0NDM6IkRPTExBUkRFIiw0NDQ6IkRPTExBUkZSIiw0NDU6Ik5PTUlOQUwiLDQ0NjoiRUZGRUNUIiw0NDc6IkNVTVBSSU5DIiw0NDg6IkNVTUlQTVQiLDQ0OToiRURBVEUiLDQ1MDoiRU9NT05USCIsNDUxOiJZRUFSRlJBQyIsNDUyOiJDT1VQREFZQlMiLDQ1MzoiQ09VUERBWVMiLDQ1NDoiQ09VUERBWVNOQyIsNDU1OiJDT1VQTkNEIiw0NTY6IkNPVVBOVU0iLDQ1NzoiQ09VUFBDRCIsNDU4OiJEVVJBVElPTiIsNDU5OiJNRFVSQVRJT04iLDQ2MDoiT0RETFBSSUNFIiw0NjE6Ik9ERExZSUVMRCIsNDYyOiJPRERGUFJJQ0UiLDQ2MzoiT0RERllJRUxEIiw0NjQ6IlJBTkRCRVRXRUVOIiw0NjU6IldFRUtOVU0iLDQ2NjoiQU1PUkRFR1JDIiw0Njc6IkFNT1JMSU5DIiw0Njg6IkNPTlZFUlQiLDcyNDoiU0hFRVRKUyIsNDY5OiJBQ0NSSU5UIiw0NzA6IkFDQ1JJTlRNIiw0NzE6IldPUktEQVkiLDQ3MjoiTkVUV09SS0RBWVMiLDQ3MzoiR0NEIiw0NzQ6Ik1VTFRJTk9NSUFMIiw0NzU6IkxDTSIsNDc2OiJGVlNDSEVEVUxFIiw0Nzc6IkNVQkVLUElNRU1CRVIiLDQ3ODoiQ1VCRVNFVCIsNDc5OiJDVUJFU0VUQ09VTlQiLDQ4MDoiSUZFUlJPUiIsNDgxOiJDT1VOVElGUyIsNDgyOiJTVU1JRlMiLDQ4MzoiQVZFUkFHRUlGIiw0ODQ6IkFWRVJBR0VJRlMifSx0ZD17MjoxLDM6MSwxMDowLDE1OjEsMTY6MSwxNzoxLDE4OjEsMTk6MCwyMDoxLDIxOjEsMjI6MSwyMzoxLDI0OjEsMjU6MSwyNjoxLDI3OjIsMzA6MiwzMTozLDMyOjEsMzM6MSwzNDowLDM1OjAsMzg6MSwzOToyLDQwOjMsNDE6Myw0MjozLDQzOjMsNDQ6Myw0NTozLDQ3OjMsNDg6Miw1MzoxLDYxOjMsNjM6MCw2NTozLDY2OjMsNjc6MSw2ODoxLDY5OjEsNzA6MSw3MToxLDcyOjEsNzM6MSw3NDowLDc1OjEsNzY6MSw3NzoxLDc5OjIsODA6Miw4MzoxLDg1OjAsODY6MSw4OTowLDkwOjEsOTQ6MCw5NTowLDk3OjIsOTg6MSw5OToxLDEwMTozLDEwMjozLDEwNToxLDEwNjoxLDEwODoyLDExMToxLDExMjoxLDExMzoxLDExNDoxLDExNzoyLDExODoxLDExOTo0LDEyMToxLDEyNjoxLDEyNzoxLDEyODoxLDEyOToxLDEzMDoxLDEzMToxLDEzMzoxLDEzNDoxLDEzNToxLDEzNjoyLDEzNzoyLDEzODoyLDE0MDoxLDE0MToxLDE0MjozLDE0Mzo0LDE0NDo0LDE2MToxLDE2MjoxLDE2MzoxLDE2NDoxLDE2NToyLDE3MjoxLDE3NToyLDE3NjoyLDE3NzozLDE3ODoyLDE3OToxLDE4NDoxLDE4NjoxLDE4OTozLDE5MDoxLDE5NTozLDE5NjozLDE5NzoxLDE5ODoxLDE5OTozLDIwMToxLDIwNzo0LDIxMDozLDIxMToxLDIxMjoyLDIxMzoyLDIxNDoxLDIxNToxLDIyNTowLDIyOToxLDIzMDoxLDIzMToxLDIzMjoxLDIzMzoxLDIzNDoxLDIzNTozLDI0NDoxLDI0Nzo0LDI1MjoyLDI1NzoxLDI2MToxLDI3MToxLDI3Mzo0LDI3NDoyLDI3NToyLDI3NjoyLDI3NzozLDI3ODozLDI3OToxLDI4MDozLDI4MTozLDI4MjozLDI4MzoxLDI4NDoxLDI4NToyLDI4Njo0LDI4NzozLDI4ODoyLDI4OTo0LDI5MDozLDI5MTozLDI5MjozLDI5Mzo0LDI5NDoxLDI5NTozLDI5NjoxLDI5NzozLDI5ODoxLDI5OToyLDMwMDozLDMwMTozLDMwMjo0LDMwMzoyLDMwNDoyLDMwNToyLDMwNjoyLDMwNzoyLDMwODoyLDMwOTozLDMxMDoyLDMxMToyLDMxMjoyLDMxMzoyLDMxNDoyLDMxNToyLDMxNjo0LDMyNToyLDMyNjoyLDMyNzoyLDMyODoyLDMzMToyLDMzMjoyLDMzNzoyLDM0MjoxLDM0MzoxLDM0NjoyLDM0NzoxLDM1MDo0LDM1MTozLDM1MjoxLDM1MzoyLDM2MDoxLDM2ODoxLDM2OToxLDM3MDoxLDM3MToxLDM3MjoxLDM3MzoxLDM3NDoxLDM3NToxLDM3NjoxLDM3NzoxLDM3ODoxLDM4MjozLDM4NToxLDM5MjoxLDM5MzoxLDM5NjoyLDM5NzoyLDM5ODoyLDM5OToxLDQwMDoxLDQwMToxLDQwMjoxLDQwMzoxLDQwNDoxLDQwNToxLDQwNjoxLDQwNzoxLDQwODoxLDQwOToxLDQxMDoxLDQxNDo0LDQxNToxLDQxNjoxLDQxNzoyLDQyMDoxLDQyMToxLDQyMjoyLDQyNDoxLDQyNToyLDQyNjoyLDQyNzoyLDQyODoyLDQzMDozLDQzODozLDQzOTozLDQ0MDozLDQ0MzoyLDQ0NDoyLDQ0NToyLDQ0NjoyLDQ0Nzo2LDQ0ODo2LDQ0OToyLDQ1MDoyLDQ2NDoyLDQ2ODozLDQ3NjoyLDQ3OToxLDQ4MDoyLDY1NTM1OjB9O2Z1bmN0aW9uIGNmKGUpe3JldHVybiBlLnNsaWNlKDAsMyk9PSJvZjoiJiYoZT1lLnNsaWNlKDMpKSxlLmNoYXJDb2RlQXQoMCk9PTYxJiYoZT1lLnNsaWNlKDEpLGUuY2hhckNvZGVBdCgwKT09NjEmJihlPWUuc2xpY2UoMSkpKSxlPWUucmVwbGFjZSgvQ09NXC5NSUNST1NPRlRcLi9nLCIiKSxlPWUucmVwbGFjZSgvXFsoKD86XC5bQS1aXStbMC05XSspKD86OlwuW0EtWl0rWzAtOV0rKT8pXF0vZyxmdW5jdGlvbihhLHIpe3JldHVybiByLnJlcGxhY2UoL1wuL2csIiIpfSksZT1lLnJlcGxhY2UoL1wkJyhbXiddfCcnKSsnL2csZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2xpY2UoMSl9KSxlPWUucmVwbGFjZSgvXCQoW15cXVwuICMkXSspL2csZnVuY3Rpb24oYSxyKXtyZXR1cm4gci5tYXRjaCgvXihbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSk/KDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAsNX0pPyQvKT9hOnJ9KSxlPWUucmVwbGFjZSgvXFsuKCNbQS1aXSpbPyFdKVxdL2csIiQxIiksZS5yZXBsYWNlKC9bO35dL2csIiwiKS5yZXBsYWNlKC9cfC9nLCI7Iil9ZnVuY3Rpb24gd24oZSl7ZT1lLnJlcGxhY2UoL1wkJyhbXiddfCcnKSsnL2csZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMSl9KSxlPWUucmVwbGFjZSgvXCQoW15cXVwuICMkXSspL2csZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5tYXRjaCgvXihbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSk/KDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAsNX0pPyQvKT90Om59KTt2YXIgYT1lLnNwbGl0KCI6Iikscj1hWzBdLnNwbGl0KCIuIilbMF07cmV0dXJuW3IsYVswXS5zcGxpdCgiLiIpWzFdKyhhLmxlbmd0aD4xPyI6IisoYVsxXS5zcGxpdCgiLiIpWzFdfHxhWzFdLnNwbGl0KCIuIilbMF0pOiIiKV19dmFyIEd0PXt9LHh0PXt9O2Z1bmN0aW9uIFh0KGUsYSl7aWYoZSl7dmFyIHI9Wy43LC43LC43NSwuNzUsLjMsLjNdO2E9PSJ4bG1sIiYmKHI9WzEsMSwxLDEsLjUsLjVdKSxlLmxlZnQ9PW51bGwmJihlLmxlZnQ9clswXSksZS5yaWdodD09bnVsbCYmKGUucmlnaHQ9clsxXSksZS50b3A9PW51bGwmJihlLnRvcD1yWzJdKSxlLmJvdHRvbT09bnVsbCYmKGUuYm90dG9tPXJbM10pLGUuaGVhZGVyPT1udWxsJiYoZS5oZWFkZXI9cls0XSksZS5mb290ZXI9PW51bGwmJihlLmZvb3Rlcj1yWzVdKX19ZnVuY3Rpb24ga2EoZSxhKXtyZXR1cm4gYSYmcHIoYSkuZm9yRWFjaChmdW5jdGlvbihyKXtlW3JdPVVlKGFbcl0pfSksZX1mdW5jdGlvbiBvZihlLGEpe3JldHVybiBhJiYoYS5wYXR0ZXJuVHlwZSE9bnVsbCYmKGUucGF0dGVyblR5cGU9YS5wYXR0ZXJuVHlwZSksYS5mZ0NvbG9yIT1udWxsJiYoZS5mZ0NvbG9yPVVlKGEuZmdDb2xvcikpLGEuYmdDb2xvciE9bnVsbCYmKGUuYmdDb2xvcj1VZShhLmJnQ29sb3IpKSxhLmdyYWRpZW50RmlsbCE9bnVsbCYmKGUuZ3JhZGllbnRGaWxsPVVlKGEuZ3JhZGllbnRGaWxsKSkpLGV9ZnVuY3Rpb24gbmQoZSxhLHIsdCl7aWYoIWV8fCFhKXJldHVybiBudWxsO3ZhciBuPXt9O2EueGZJZCE9bnVsbCYmZS5DZWxsU3R5bGVYZiYmZS5DZWxsU3R5bGVYZlthLnhmSWRdJiZrYShuLGUuQ2VsbFN0eWxlWGZbYS54ZklkXSksa2EobixhKTt2YXIgaT17aWQ6dCx4ZjpVZShuKX07cmV0dXJuIG4ubnVtRm10SWQhPW51bGwmJihpLm51bUZtdElkPW4ubnVtRm10SWQsZS5OdW1iZXJGbXQmJmUuTnVtYmVyRm10W24ubnVtRm10SWRdIT1udWxsJiYoaS5udW1GbXQ9ZS5OdW1iZXJGbXRbbi5udW1GbXRJZF0pKSxuLmZvbnRJZCE9bnVsbCYmZS5Gb250cyYmZS5Gb250c1tuLmZvbnRJZF0mJihpLmZvbnQ9VDAoZS5Gb250c1tuLmZvbnRJZF0scikpLG4uZmlsbElkIT1udWxsJiZlLkZpbGxzJiZlLkZpbGxzW24uZmlsbElkXSYmKGkuZmlsbD1UMChlLkZpbGxzW24uZmlsbElkXSxyKSxvZihpLGkuZmlsbCkpLG4uYm9yZGVySWQhPW51bGwmJmUuQm9yZGVycyYmZS5Cb3JkZXJzW24uYm9yZGVySWRdJiYoaS5ib3JkZXI9VDAoZS5Cb3JkZXJzW24uYm9yZGVySWRdLHIpKSxuLmFsaWdubWVudCYmKGkuYWxpZ25tZW50PVVlKG4uYWxpZ25tZW50KSksbi5wcm90ZWN0aW9uJiYoaS5wcm90ZWN0aW9uPVVlKG4ucHJvdGVjdGlvbikpLGl9ZnVuY3Rpb24gbGYoZSxhLHIsdCxuLGksZixzLGMpe3RyeXt0LmNlbGxORiYmKGUuej1UZVthXSl9Y2F0Y2godSl7aWYodC5XVEYpdGhyb3cgdX1pZighKGUudD09PSJ6IiYmIXQuY2VsbFN0eWxlcykpe2lmKGUudD09PSJkIiYmdHlwZW9mIGUudj09InN0cmluZyImJihlLnY9eHIoZS52KSksKCF0fHx0LmNlbGxUZXh0IT09ITEpJiZlLnQhPT0ieiIpdHJ5e2lmKFRlW2FdPT1udWxsJiZMYSh5Y1thXXx8IkdlbmVyYWwiLGEpLGUudD09PSJlIillLnc9ZS53fHxicltlLnZdO2Vsc2UgaWYoYT09PTApaWYoZS50PT09Im4iKShlLnZ8MCk9PT1lLnY/ZS53PWUudi50b1N0cmluZygxMCk6ZS53PUF0KGUudik7ZWxzZSBpZihlLnQ9PT0iZCIpe3ZhciBvPW9yKGUudiwhIWYpOyhvfDApPT09bz9lLnc9by50b1N0cmluZygxMCk6ZS53PUF0KG8pfWVsc2V7aWYoZS52PT09dm9pZCAwKXJldHVybiIiO2Uudz1QYShlLnYseHQpfWVsc2UgZS50PT09ImQiP2Uudz1ScihhLG9yKGUudiwhIWYpLHh0KTplLnc9UnIoYSxlLnYseHQpfWNhdGNoKHUpe2lmKHQuV1RGKXRocm93IHV9aWYodC5jZWxsU3R5bGVzKXtpZihzIT1udWxsKXRyeXt2YXIgbD1uZChpLHMsbixjKTtpZihsKXtlLnM9bDtyZXR1cm59fWNhdGNoKHUpe2lmKHQuV1RGKXRocm93IHV9aWYociE9bnVsbCl0cnl7ZS5zPVQwKGkuRmlsbHNbcl0sbil9Y2F0Y2godSl7aWYodC5XVEYmJmkuRmlsbHMpdGhyb3cgdX19fX1mdW5jdGlvbiBpZChlLGEpe3JldHVybiEoZS5lLnI8YS5zLnJ8fGEuZS5yPGUucy5yfHxlLmUuYzxhLnMuY3x8YS5lLmM8ZS5zLmMpfWZ1bmN0aW9uIEZuKGUsYSl7Zm9yKHZhciByPWUmJmVbIiFtZXJnZXMiXXx8W10sdD1bXSxuPWUmJmVbIiFyZWYiXT9aZShlWyIhcmVmIl0pOm51bGwsaT17fSxmPTA7ZjxyLmxlbmd0aDsrK2Ype3ZhciBzPXJbZl0sYz0iIjtpZighc3x8IXMuc3x8IXMuZSl7dC5wdXNoKHtjb2RlOiJFX01FUkdFX1JBTkdFIixtZXNzYWdlOiJNZXJnZSByYW5nZSBpcyBtYWxmb3JtZWQiLGluZGV4OmZ9KTtjb250aW51ZX1pZihzLnMucjwwfHxzLnMuYzwwfHxzLmUucjxzLnMucnx8cy5lLmM8cy5zLmMpe3QucHVzaCh7Y29kZToiRV9NRVJHRV9SQU5HRSIsbWVzc2FnZToiTWVyZ2UgcmFuZ2UgaXMgaW52YWxpZCIsaW5kZXg6ZixyYW5nZTpzfSk7Y29udGludWV9Yz1EZShzKSxpW2NdIT1udWxsJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfRFVQIixtZXNzYWdlOiJNZXJnZSByYW5nZSBpcyBkdXBsaWNhdGVkIixpbmRleDpmLG90aGVyOmlbY10scmFuZ2U6Y30pLGlbY109ZixuJiYocy5zLnI8bi5zLnJ8fHMucy5jPG4ucy5jfHxzLmUucj5uLmUucnx8cy5lLmM+bi5lLmMpJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfQk9VTkRTIixtZXNzYWdlOiJNZXJnZSByYW5nZSBleGNlZWRzIHdvcmtzaGVldCByYW5nZSIsaW5kZXg6ZixyYW5nZTpjLHJlZjpEZShuKX0pO2Zvcih2YXIgbz0wO288ZjsrK28pIXJbb118fCFyW29dLnN8fCFyW29dLmV8fGlkKHMscltvXSkmJkRlKHJbb10pIT1jJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfT1ZFUkxBUCIsbWVzc2FnZToiTWVyZ2UgcmFuZ2VzIG92ZXJsYXAiLGluZGV4OmYsb3RoZXI6byxyYW5nZTpjLG90aGVyUmFuZ2U6RGUocltvXSl9KX1pZih0Lmxlbmd0aCYmYSYmYS5XVEYpdGhyb3cgbmV3IEVycm9yKHRbMF0ubWVzc2FnZSsiICgiKyh0WzBdLnJhbmdlfHx0WzBdLmluZGV4KSsiKSIpO3JldHVybiB0fWZ1bmN0aW9uIHNkKGUsYSl7dmFyIHI9WmUoYSk7ci5zLnI8PXIuZS5yJiZyLnMuYzw9ci5lLmMmJnIucy5yPj0wJiZyLnMuYz49MCYmKGVbIiFyZWYiXT1EZShyKSl9dmFyIGZkPS88KD86XHcrOik/bWVyZ2VDZWxsIHJlZj1bIiddW0EtWjAtOTpdK1snIl1ccypbXC9dPz4vZyxjZD0vPCg/Olx3KzopP2h5cGVybGluayBbXjw+XSo+L21nLG9kPS8iKFx3KjpcdyopIi8sbGQ9LzwoPzpcdys6KT9jb2xcYltePD5dKltcL10/Pi9nLHVkPS88KD86XHc6KT9hdXRvRmlsdGVyW14+XSooW1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9hdXRvRmlsdGVyKT4vZyxoZD0vPCg/Olx3KzopP3BhZ2VNYXJnaW5zW148Pl0qXC8+L2csdWY9LzwoPzpcdys6KT9zaGVldFByXGJbXjw+XSo/XC8+LztmdW5jdGlvbiB4ZChlLGEscix0LG4saSxmKXtpZighZSlyZXR1cm4gZTt0fHwodD17IiFpZCI6e319KTt2YXIgcz17fTthLmRlbnNlJiYoc1siIWRhdGEiXT1bXSk7dmFyIGM9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sbz0iIixsPSIiLHU9TGUoZSwic2hlZXREYXRhIik7dT8obz1lLnNsaWNlKDAsdS5pbmRleCksbD1lLnNsaWNlKHUuaW5kZXgrdVswXS5sZW5ndGgpKTpvPWw9ZTt2YXIgeD1vLm1hdGNoKHVmKTt4P1RuKHhbMF0scyxuLHIpOih4PUxlKG8sInNoZWV0UHIiKSkmJmRkKHhbMF0seFsxXXx8IiIscyxuLHIpO3ZhciBoPShvLm1hdGNoKC88KD86XHcqOik/ZGltZW5zaW9uLyl8fHtpbmRleDotMX0pLmluZGV4O2lmKGg+MCl7dmFyIGc9by5zbGljZShoLGgrNTApLm1hdGNoKG9kKTtnJiYhKGEmJmEubm9kaW0pJiZzZChzLGdbMV0pfXZhciBtPUxlKG8sInNoZWV0Vmlld3MiKTttJiZtWzFdJiZrZChtWzFdLG4pO3ZhciBkPVtdO2lmKGEuY2VsbFN0eWxlcyl7dmFyIHA9by5tYXRjaChsZCk7cCYmZ2QoZCxwKX11JiZ3ZCh1WzFdLHMsYSxjLGksZixuKTt2YXIgdz1sLm1hdGNoKHVkKTt3JiYoc1siIWF1dG9maWx0ZXIiXT1tZCh3WzBdKSk7dmFyIF89W10seT1sLm1hdGNoKGZkKTtpZih5KWZvcihoPTA7aCE9eS5sZW5ndGg7KytoKV9baF09WmUoeVtoXS5zbGljZSh5W2hdLmluZGV4T2YoIj0iKSsyKSk7dmFyIFI9bC5tYXRjaChjZCk7UiYmdmQocyxSLHQpO3ZhciBQPWwubWF0Y2goaGQpO1AmJihzWyIhbWFyZ2lucyJdPXBkKG9lKFBbMF0pKSk7dmFyIGI7aWYoKGI9bC5tYXRjaCgvPCg/Olx3KzopP2RyYXdpbmdcYltePD5dKnI6aWQ9IiguKj8pIi8pKSYmKHNbIiFyZWwiXT1iWzFdKSwoYj1sLm1hdGNoKC9sZWdhY3lEcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKHNbIiFsZWdyZWwiXT1iWzFdKSxhJiZhLm5vZGltJiYoYy5zLmM9Yy5zLnI9MCksIXNbIiFyZWYiXSYmYy5lLmM+PWMucy5jJiZjLmUucj49Yy5zLnImJihzWyIhcmVmIl09RGUoYykpLGEuc2hlZXRSb3dzPjAmJnNbIiFyZWYiXSl7dmFyIE49WmUoc1siIXJlZiJdKTthLnNoZWV0Um93czw9K04uZS5yJiYoTi5lLnI9YS5zaGVldFJvd3MtMSxOLmUucj5jLmUuciYmKE4uZS5yPWMuZS5yKSxOLmUucjxOLnMuciYmKE4ucy5yPU4uZS5yKSxOLmUuYz5jLmUuYyYmKE4uZS5jPWMuZS5jKSxOLmUuYzxOLnMuYyYmKE4ucy5jPU4uZS5jKSxzWyIhZnVsbHJlZiJdPXNbIiFyZWYiXSxzWyIhcmVmIl09RGUoTikpfWlmKGQubGVuZ3RoPjAmJihzWyIhY29scyJdPWQpLF8ubGVuZ3RoPjApe3NbIiFtZXJnZXMiXT1fO3ZhciBEPUZuKHMse1dURjohIShhJiYoYS5XVEZ8fGEudmFsaWRhdGVNZXJnZXMpKX0pO0QubGVuZ3RoJiYoc1siIW1lcmdlRXJyb3JzIl09RCl9cmV0dXJuIHRbIiFpZCJdW3NbIiFyZWwiXV0mJihzWyIhZHJhd2VsIl09dFsiIWlkIl1bc1siIXJlbCJdXSksdFsiIWlkIl1bc1siIWxlZ3JlbCJdXSYmKHNbIiFsZWdkcmF3ZWwiXT10WyIhaWQiXVtzWyIhbGVncmVsIl1dKSxzfWZ1bmN0aW9uIFRuKGUsYSxyLHQpe3ZhciBuPW9lKGUpO3IuU2hlZXRzW3RdfHwoci5TaGVldHNbdF09e30pLG4uY29kZU5hbWUmJihyLlNoZWV0c1t0XS5Db2RlTmFtZT1DZShWZShuLmNvZGVOYW1lKSkpfWZ1bmN0aW9uIGRkKGUsYSxyLHQsbil7VG4oZS5zbGljZSgwLGUuaW5kZXhPZigiPiIpKSxyLHQsbil9ZnVuY3Rpb24gdmQoZSxhLHIpe2Zvcih2YXIgdD1lWyIhZGF0YSJdIT1udWxsLG49MDtuIT1hLmxlbmd0aDsrK24pe3ZhciBpPW9lKFZlKGFbbl0pLCEwKTtpZighaS5yZWYpcmV0dXJuO3ZhciBmPSgocnx8e30pWyIhaWQiXXx8W10pW2kuaWRdO2Y/KGkuVGFyZ2V0PWYuVGFyZ2V0LGkubG9jYXRpb24mJihpLlRhcmdldCs9IiMiK0NlKGkubG9jYXRpb24pKSk6KGkuVGFyZ2V0PSIjIitDZShpLmxvY2F0aW9uKSxmPXtUYXJnZXQ6aS5UYXJnZXQsVGFyZ2V0TW9kZToiSW50ZXJuYWwifSksaS5SZWw9ZixpLnRvb2x0aXAmJihpLlRvb2x0aXA9aS50b29sdGlwLGRlbGV0ZSBpLnRvb2x0aXApO2Zvcih2YXIgcz1aZShpLnJlZiksYz1zLnMucjtjPD1zLmUucjsrK2MpZm9yKHZhciBvPXMucy5jO288PXMuZS5jOysrbyl7dmFyIGw9SGUobykrR2UoYyk7dD8oZVsiIWRhdGEiXVtjXXx8KGVbIiFkYXRhIl1bY109W10pLGVbIiFkYXRhIl1bY11bb118fChlWyIhZGF0YSJdW2NdW29dPXt0OiJ6Iix2OnZvaWQgMH0pLGVbIiFkYXRhIl1bY11bb10ubD1pKTooZVtsXXx8KGVbbF09e3Q6InoiLHY6dm9pZCAwfSksZVtsXS5sPWkpfX19ZnVuY3Rpb24gcGQoZSl7dmFyIGE9e307cmV0dXJuWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJoZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2Vbcl0mJihhW3JdPXBhcnNlRmxvYXQoZVtyXSkpfSksYX1mdW5jdGlvbiBnZChlLGEpe2Zvcih2YXIgcj0hMSx0PTA7dCE9YS5sZW5ndGg7Kyt0KXt2YXIgbj1vZShhW3RdLCEwKTtuLmhpZGRlbiYmKG4uaGlkZGVuPUZlKG4uaGlkZGVuKSksbi5iZXN0Rml0JiYobi5iZXN0Rml0PUZlKG4uYmVzdEZpdCkpLG4uY3VzdG9tV2lkdGgmJihuLmN1c3RvbVdpZHRoPUZlKG4uY3VzdG9tV2lkdGgpKTt2YXIgaT1wYXJzZUludChuLm1pbiwxMCktMSxmPXBhcnNlSW50KG4ubWF4LDEwKS0xO2ZvcihuLm91dGxpbmVMZXZlbCYmKG4ubGV2ZWw9K24ub3V0bGluZUxldmVsfHwwKSxkZWxldGUgbi5taW4sZGVsZXRlIG4ubWF4LG4ud2lkdGg9K24ud2lkdGgsIXImJm4ud2lkdGgmJihyPSEwLGRuKG4ud2lkdGgpKSx1dChuKTtpPD1mOyllW2krK109VWUobil9fWZ1bmN0aW9uIG1kKGUpe3ZhciBhPXtyZWY6KGUubWF0Y2goL3JlZj1bIiddKFteIiddKilbIiddLyl8fFtdKVsxXX07cmV0dXJuIGF9dmFyIF9kPS88KD86XHc6KT9zaGVldFZpZXcoPzpbXjw+YS16XVtePD5dKik/XC8/Pi9nO2Z1bmN0aW9uIGtkKGUsYSl7YS5WaWV3c3x8KGEuVmlld3M9W3t9XSksKGUubWF0Y2goX2QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihyLHQpe3ZhciBuPW9lKHIpO2EuVmlld3NbdF18fChhLlZpZXdzW3RdPXt9KSwrbi56b29tU2NhbGUmJihhLlZpZXdzW3RdLnpvb209K24uem9vbVNjYWxlKSxuLnJpZ2h0VG9MZWZ0JiZGZShuLnJpZ2h0VG9MZWZ0KSYmKGEuVmlld3NbdF0uUlRMPSEwKX0pfXZhciB3ZD1mdW5jdGlvbigpe3ZhciBlPS88KD86XHcrOik/Y1sgXC8+XS8sYT0vPFwvKD86XHcrOik/cm93Pi8scj0vcj1bIiddKFteIiddKilbIiddLyx0PS9yZWY9WyInXShbXiInXSopWyInXS87cmV0dXJuIGZ1bmN0aW9uKGksZixzLGMsbyxsLHUpe2Zvcih2YXIgeD0wLGg9IiIsZz1bXSxtPVtdLGQ9MCxwPTAsdz0wLF89IiIseSxSLFA9MCxiPTAsTixELEI9MCxMPTAsRz0tMSxpZT1BcnJheS5pc0FycmF5KGwuQ2VsbFhmKSxuZSxxPVtdLGxlPVtdLFE9ZlsiIWRhdGEiXSE9bnVsbCxnZT1bXSx1ZT17fSxqPSExLHllPSEhcy5zaGVldFN0dWJzLGJlPSEhKCh1fHx7fSkuV0JQcm9wc3x8e30pLmRhdGUxOTA0LG1lPWkuc3BsaXQoYSksWj0wLE9lPW1lLmxlbmd0aDtaIT1PZTsrK1ope2g9bWVbWl0udHJpbSgpO3ZhciB3ZT1oLmxlbmd0aDtpZih3ZSE9PTApe3ZhciBBZT0wO2U6Zm9yKHg9MDt4PHdlOysreClzd2l0Y2goaFt4XSl7Y2FzZSI+IjppZihoW3gtMV0hPSIvIil7Kyt4O2JyZWFrIGV9aWYocyYmcy5jZWxsU3R5bGVzKXtpZihSPW9lKGguc2xpY2UoQWUseCksITApLFA9Ui5yIT1udWxsP3BhcnNlSW50KFIuciwxMCk6UCsxLGI9LTEscy5zaGVldFJvd3MmJnMuc2hlZXRSb3dzPFApY29udGludWU7dWU9e30saj0hMSxSLmh0JiYoaj0hMCx1ZS5ocHQ9cGFyc2VGbG9hdChSLmh0KSx1ZS5ocHg9QnQodWUuaHB0KSksUi5oaWRkZW4mJkZlKFIuaGlkZGVuKSYmKGo9ITAsdWUuaGlkZGVuPSEwKSxSLm91dGxpbmVMZXZlbCE9bnVsbCYmKGo9ITAsdWUubGV2ZWw9K1Iub3V0bGluZUxldmVsKSxqJiYoZ2VbUC0xXT11ZSl9YnJlYWs7Y2FzZSI8IjpBZT14O2JyZWFrfWlmKEFlPj14KWJyZWFrO2lmKFI9b2UoaC5zbGljZShBZSx4KSwhMCksUD1SLnIhPW51bGw/cGFyc2VJbnQoUi5yLDEwKTpQKzEsYj0tMSwhKHMuc2hlZXRSb3dzJiZzLnNoZWV0Um93czxQKSl7cy5ub2RpbXx8KGMucy5yPlAtMSYmKGMucy5yPVAtMSksYy5lLnI8UC0xJiYoYy5lLnI9UC0xKSkscyYmcy5jZWxsU3R5bGVzJiYodWU9e30saj0hMSxSLmh0JiYoaj0hMCx1ZS5ocHQ9cGFyc2VGbG9hdChSLmh0KSx1ZS5ocHg9QnQodWUuaHB0KSksUi5oaWRkZW4mJkZlKFIuaGlkZGVuKSYmKGo9ITAsdWUuaGlkZGVuPSEwKSxSLm91dGxpbmVMZXZlbCE9bnVsbCYmKGo9ITAsdWUubGV2ZWw9K1Iub3V0bGluZUxldmVsKSxqJiYoZ2VbUC0xXT11ZSkpLGc9aC5zbGljZSh4KS5zcGxpdChlKTtmb3IodmFyIEE9MDtBIT1nLmxlbmd0aCYmZ1tBXS50cmltKCkuY2hhckF0KDApPT0iPCI7KytBKTtmb3IoZz1nLnNsaWNlKEEpLHg9MDt4IT1nLmxlbmd0aDsrK3gpaWYoaD1nW3hdLnRyaW0oKSxoLmxlbmd0aCE9PTApe2lmKG09aC5tYXRjaChyKSxkPXgscD0wLHc9MCxoPSI8YyAiKyhoLnNsaWNlKDAsMSk9PSI8Ij8iPiI6IiIpK2gsbSE9bnVsbCYmbS5sZW5ndGg9PT0yKXtmb3IoZD0wLF89bVsxXSxwPTA7cCE9Xy5sZW5ndGgmJiEoKHc9Xy5jaGFyQ29kZUF0KHApLTY0KTwxfHx3PjI2KTsrK3ApZD0yNipkK3c7LS1kLGI9ZH1lbHNlKytiO2ZvcihwPTA7cCE9aC5sZW5ndGgmJmguY2hhckNvZGVBdChwKSE9PTYyOysrcCk7aWYoKytwLFI9b2UoaC5zbGljZSgwLHApLCEwKSxSLnJ8fChSLnI9SWUoe3I6UC0xLGM6Yn0pKSxfPWguc2xpY2UocCkseT17dDoiIn0sKG09TGUoXywidiIpKSE9bnVsbCYmbVsxXSE9PSIiJiYoeS52PUNlKG1bMV0pKSxzLmNlbGxGb3JtdWxhKXtpZigobT1MZShfLCJmIikpIT1udWxsKXtpZihtWzFdPT0iIiltWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSYmKEQ9b2UobVswXSksbGVbRC5zaV0mJih5LmY9WXMobGVbRC5zaV1bMV0sbGVbRC5zaV1bMl0sUi5yKSkpO2Vsc2UgaWYoeS5mPUNlKFZlKG1bMV0pLCEwKSxzLnhsZm58fCh5LmY9SnMoeS5mKSksbVswXS5pbmRleE9mKCd0PSJhcnJheSInKT4tMSl5LkY9KF8ubWF0Y2godCl8fFtdKVsxXSx5LkYuaW5kZXhPZigiOiIpPi0xJiZxLnB1c2goW1plKHkuRikseS5GXSk7ZWxzZSBpZihtWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSl7RD1vZShtWzBdKTt2YXIgVT1DZShWZShtWzFdKSwhMCk7cy54bGZufHwoVT1KcyhVKSksbGVbcGFyc2VJbnQoRC5zaSwxMCldPVtELFUsUi5yXX19ZWxzZShtPV8ubWF0Y2goLzxmW148Pl0qXC8+LykpJiYoRD1vZShtWzBdKSxsZVtELnNpXSYmKHkuZj1ZcyhsZVtELnNpXVsxXSxsZVtELnNpXVsyXSxSLnIpKSk7dmFyIE89Z3IoUi5yKTtmb3IocD0wO3A8cS5sZW5ndGg7KytwKU8ucj49cVtwXVswXS5zLnImJk8ucjw9cVtwXVswXS5lLnImJk8uYz49cVtwXVswXS5zLmMmJk8uYzw9cVtwXVswXS5lLmMmJih5LkY9cVtwXVsxXSl9aWYoUi50PT1udWxsJiZ5LnY9PT12b2lkIDApaWYoeS5mfHx5LkYpeS52PTAseS50PSJuIjtlbHNlIGlmKHllKXkudD0ieiI7ZWxzZSBjb250aW51ZTtlbHNlIHkudD1SLnR8fCJuIjtzd2l0Y2goYy5zLmM+YiYmKGMucy5jPWIpLGMuZS5jPGImJihjLmUuYz1iKSx5LnQpe2Nhc2UibiI6aWYoeS52PT0iInx8eS52PT1udWxsKXtpZigheWUpY29udGludWU7eS50PSJ6In1lbHNlIHkudj1wYXJzZUZsb2F0KHkudik7YnJlYWs7Y2FzZSJzIjppZih0eXBlb2YgeS52PiJ1Iil7aWYoIXllKWNvbnRpbnVlO3kudD0ieiJ9ZWxzZSBOPUd0W3BhcnNlSW50KHkudiwxMCldLHkudj1OLnQseS5yPU4ucixzLmNlbGxIVE1MJiYoeS5oPU4uaCk7YnJlYWs7Y2FzZSJzdHIiOnkudD0icyIseS52PXkudiE9bnVsbD9DZShWZSh5LnYpLCEwKToiIixzLmNlbGxIVE1MJiYoeS5oPXhhKHkudikpO2JyZWFrO2Nhc2UiaW5saW5lU3RyIjptPUxlKF8sImlzIikseS50PSJzIixtIT1udWxsJiYoTj11bihtWzFdKSk/KHkudj1OLnQscy5jZWxsSFRNTCYmKHkuaD1OLmgpKTp5LnY9IiI7YnJlYWs7Y2FzZSJiIjp5LnY9RmUoeS52KTticmVhaztjYXNlImQiOnMuY2VsbERhdGVzP3kudj14cih5LnYsYmUpOih5LnY9b3IoeHIoeS52LGJlKSxiZSkseS50PSJuIik7YnJlYWs7Y2FzZSJlIjooIXN8fHMuY2VsbFRleHQhPT0hMSkmJih5Lnc9eS52KSx5LnY9ZHJbeS52XTticmVha31pZihCPUw9MCxHPS0xLG5lPW51bGwsaWUmJlIucyE9PXZvaWQgMCYmKEc9cGFyc2VJbnQoUi5zLDEwKSxuZT1sLkNlbGxYZltHXSxuZSE9bnVsbCYmKG5lLm51bUZtdElkIT1udWxsJiYoQj1uZS5udW1GbXRJZCkscy5jZWxsU3R5bGVzJiZuZS5maWxsSWQhPW51bGwmJihMPW5lLmZpbGxJZCkpKSxsZih5LEIsTCxzLG8sbCxiZSxuZSxHKSxzLmNlbGxEYXRlcyYmaWUmJnkudD09Im4iJiZacihUZVtCXSkmJih5LnY9U2EoeS52KyhiZT8xNDYyOjApKSx5LnQ9dHlwZW9mIHkudj09Im51bWJlciI/Im4iOiJkIiksUi5jbSYmcy54bG1ldGEpe3ZhciBJPShzLnhsbWV0YS5DZWxsfHxbXSlbK1IuY20tMV07SSYmSS50eXBlPT0iWExEQVBSIiYmKHkuRD0hMCl9dmFyIHo7cy5ub2RpbSYmKHo9Z3IoUi5yKSxjLnMucj56LnImJihjLnMucj16LnIpLGMuZS5yPHouciYmKGMuZS5yPXoucikpLFE/KHo9Z3IoUi5yKSxmWyIhZGF0YSJdW3oucl18fChmWyIhZGF0YSJdW3oucl09W10pLGZbIiFkYXRhIl1bei5yXVt6LmNdPXkpOmZbUi5yXT15fX19fWdlLmxlbmd0aD4wJiYoZlsiIXJvd3MiXT1nZSl9fSgpO2Z1bmN0aW9uIEZkKGUsYSl7dmFyIHI9e30sdD1lLmwrYTtyLnI9ZS5yZWFkX3NoaWZ0KDQpLGUubCs9NDt2YXIgbj1lLnJlYWRfc2hpZnQoMik7ZS5sKz0xO3ZhciBpPWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gZS5sPXQsaSY3JiYoci5sZXZlbD1pJjcpLGkmMTYmJihyLmhpZGRlbj0hMCksaSYzMiYmKHIuaHB0PW4vMjApLHJ9dmFyIFRkPUdhO2Z1bmN0aW9uIEVkKCl7fWZ1bmN0aW9uIEFkKGUsYSl7dmFyIHI9e30sdD1lW2UubF07cmV0dXJuKytlLmwsci5hYm92ZT0hKHQmNjQpLHIubGVmdD0hKHQmMTI4KSxlLmwrPTE4LHIubmFtZT1DbyhlKSxyfWZ1bmN0aW9uIHlkKGUpe3ZhciBhPVhyKGUpO3JldHVyblthXX1mdW5jdGlvbiBTZChlKXt2YXIgYT1WYShlKTtyZXR1cm5bYV19ZnVuY3Rpb24gQ2QoZSl7dmFyIGE9WHIoZSkscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2EsciwiYiJdfWZ1bmN0aW9uIGJkKGUpe3ZhciBhPVZhKGUpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVyblthLHIsImIiXX1mdW5jdGlvbiBEZChlKXt2YXIgYT1YcihlKSxyPWUucmVhZF9zaGlmdCgxKTtyZXR1cm5bYSxyLCJlIl19ZnVuY3Rpb24gSWQoZSl7dmFyIGE9VmEoZSkscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2EsciwiZSJdfWZ1bmN0aW9uIFJkKGUpe3ZhciBhPVhyKGUpLHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVyblthLHIsInMiXX1mdW5jdGlvbiBPZChlKXt2YXIgYT1WYShlKSxyPWUucmVhZF9zaGlmdCg0KTtyZXR1cm5bYSxyLCJzIl19ZnVuY3Rpb24gTmQoZSl7dmFyIGE9WHIoZSkscj1fcihlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gaGYoZSl7dmFyIGE9VmEoZSkscj1fcihlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gTWQoZSl7dmFyIGE9WHIoZSkscj1kMChlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gUGQoZSl7dmFyIGE9VmEoZSkscj1kMChlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gTGQoZSl7dmFyIGE9WHIoZSkscj1zbihlKTtyZXR1cm5bYSxyLCJpcyJdfWZ1bmN0aW9uIEJkKGUpe3ZhciBhPVhyKGUpLHI9bXIoZSk7cmV0dXJuW2Esciwic3RyIl19ZnVuY3Rpb24gVWQoZSl7dmFyIGE9VmEoZSkscj1tcihlKTtyZXR1cm5bYSxyLCJzdHIiXX1mdW5jdGlvbiBIZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPWUucmVhZF9zaGlmdCgxKSxmPVtuLGksImIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9UzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn1mdW5jdGlvbiBXZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPWUucmVhZF9zaGlmdCgxKSxmPVtuLGksImUiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9UzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn1mdW5jdGlvbiBWZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPV9yKGUpLGY9W24saSwibiJdO2lmKHIuY2VsbEZvcm11bGEpe2UubCs9Mjt2YXIgcz1TMChlLHQtZS5sLHIpO2ZbM109d3IocyxudWxsLG4sci5zdXBib29rcyxyKX1lbHNlIGUubD10O3JldHVybiBmfWZ1bmN0aW9uIEdkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPVhyKGUpO24ucj1yWyIhcm93Il07dmFyIGk9bXIoZSksZj1bbixpLCJzdHIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9UzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn12YXIgWGQ9R2E7ZnVuY3Rpb24gemQoZSxhKXt2YXIgcj1lLmwrYSx0PUdhKGUpLG49eDAoZSksaT1tcihlKSxmPW1yKGUpLHM9bXIoZSk7ZS5sPXI7dmFyIGM9e3JmeDp0LHJlbElkOm4sbG9jOmksZGlzcGxheTpzfTtyZXR1cm4gZiYmKGMuVG9vbHRpcD1mKSxjfWZ1bmN0aW9uICRkKCl7fWZ1bmN0aW9uIEtkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPVppKGUpLGk9ZS5yZWFkX3NoaWZ0KDEpLGY9W25dO2lmKGZbMl09aSxyLmNlbGxGb3JtdWxhKXt2YXIgcz1ReChlLHQtZS5sLHIpO2ZbMV09c31lbHNlIGUubD10O3JldHVybiBmfWZ1bmN0aW9uIGpkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPUdhKGUpLGk9W25dO2lmKHIuY2VsbEZvcm11bGEpe3ZhciBmPXJkKGUsdC1lLmwscik7aVsxXT1mLGUubD10fWVsc2UgZS5sPXQ7cmV0dXJuIGl9dmFyIFlkPVsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiaGVhZGVyIiwiZm9vdGVyIl07ZnVuY3Rpb24gSmQoZSl7dmFyIGE9e307cmV0dXJuIFlkLmZvckVhY2goZnVuY3Rpb24ocil7YVtyXT1fcihlKX0pLGF9ZnVuY3Rpb24gWmQoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTI4LHtSVEw6YSYzMn19ZnVuY3Rpb24gcWQoKXt9ZnVuY3Rpb24gUWQoKXt9ZnVuY3Rpb24gZXYoZSxhLHIsdCxuLGksZil7aWYoIWUpcmV0dXJuIGU7dmFyIHM9YXx8e307dHx8KHQ9eyIhaWQiOnt9fSk7dmFyIGM9e307cy5kZW5zZSYmKGNbIiFkYXRhIl09W10pO3ZhciBvLGw9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sdT0hMSx4PSExLGgsZyxtLGQscCx3LF8seSxSLFA9W107cy5iaWZmPTEyLHNbIiFyb3ciXT0wO3ZhciBiPTAsTj0hMSxEPVtdLEI9e30sTD1zLnN1cGJvb2tzfHxuLnN1cGJvb2tzfHxbW11dO2lmKEwuc2hhcmVkZj1CLEwuYXJyYXlmPUQsTC5TaGVldE5hbWVzPW4uU2hlZXROYW1lc3x8bi5TaGVldHMubWFwKGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWUubmFtZX0pLCFzLnN1cGJvb2tzJiYocy5zdXBib29rcz1MLG4uTmFtZXMpKWZvcih2YXIgRz0wO0c8bi5OYW1lcy5sZW5ndGg7KytHKUxbMF1bRysxXT1uLk5hbWVzW0ddO3ZhciBpZT1bXSxuZT1bXSxxPSExO2IwWzE2XT17bjoiQnJ0U2hvcnRSZWFsIixmOmhmfTt2YXIgbGUsUT0xNDYyKishISgobnx8e30pLldCUHJvcHN8fHt9KS5kYXRlMTkwNDtpZih2YShlLGZ1bmN0aW9uKGoseWUsYmUpe2lmKCF4KXN3aXRjaChiZSl7Y2FzZSAxNDg6bz1qO2JyZWFrO2Nhc2UgMDpoPWoscy5zaGVldFJvd3MmJnMuc2hlZXRSb3dzPD1oLnImJih4PSEwKSx5PUdlKGQ9aC5yKSxzWyIhcm93Il09aC5yLChqLmhpZGRlbnx8ai5ocHR8fGoubGV2ZWwhPW51bGwpJiYoai5ocHQmJihqLmhweD1CdChqLmhwdCkpLG5lW2oucl09aik7YnJlYWs7Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmNhc2UgNjpjYXNlIDc6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6Y2FzZSA2Mjpzd2l0Y2goZz17dDpqWzJdfSxqWzJdKXtjYXNlIm4iOmcudj1qWzFdO2JyZWFrO2Nhc2UicyI6Xz1HdFtqWzFdXSxnLnY9Xy50LGcucj1fLnI7YnJlYWs7Y2FzZSJiIjpnLnY9ISFqWzFdO2JyZWFrO2Nhc2UiZSI6Zy52PWpbMV0scy5jZWxsVGV4dCE9PSExJiYoZy53PWJyW2cudl0pO2JyZWFrO2Nhc2Uic3RyIjpnLnQ9InMiLGcudj1qWzFdO2JyZWFrO2Nhc2UiaXMiOmcudD0icyIsZy52PWpbMV0udDticmVha31pZigobT1mLkNlbGxYZltqWzBdLmlTdHlsZVJlZl0pJiZsZihnLG0ubnVtRm10SWQsbnVsbCxzLGksZixRPjAsbSxqWzBdLmlTdHlsZVJlZikscD1qWzBdLmM9PS0xP3ArMTpqWzBdLmMscy5kZW5zZT8oY1siIWRhdGEiXVtkXXx8KGNbIiFkYXRhIl1bZF09W10pLGNbIiFkYXRhIl1bZF1bcF09Zyk6Y1tIZShwKSt5XT1nLHMuY2VsbEZvcm11bGEpe2ZvcihOPSExLGI9MDtiPEQubGVuZ3RoOysrYil7dmFyIG1lPURbYl07aC5yPj1tZVswXS5zLnImJmgucjw9bWVbMF0uZS5yJiZwPj1tZVswXS5zLmMmJnA8PW1lWzBdLmUuYyYmKGcuRj1EZShtZVswXSksTj0hMCl9IU4mJmoubGVuZ3RoPjMmJihnLmY9alszXSl9aWYobC5zLnI+aC5yJiYobC5zLnI9aC5yKSxsLnMuYz5wJiYobC5zLmM9cCksbC5lLnI8aC5yJiYobC5lLnI9aC5yKSxsLmUuYzxwJiYobC5lLmM9cCkscy5jZWxsRGF0ZXMmJm0mJmcudD09Im4iJiZacihUZVttLm51bUZtdElkXSkpe3ZhciBaPWNhKGcuditRKTtaJiYoZy50PSJkIixnLnY9bmV3IERhdGUoRGF0ZS5VVEMoWi55LFoubS0xLFouZCxaLkgsWi5NLFouUyxaLnUpKSl9bGUmJihsZS50eXBlPT0iWExEQVBSIiYmKGcuRD0hMCksbGU9dm9pZCAwKTticmVhaztjYXNlIDE6Y2FzZSAxMjppZighcy5zaGVldFN0dWJzfHx1KWJyZWFrO2c9e3Q6InoiLHY6dm9pZCAwfSxwPWpbMF0uYz09LTE/cCsxOmpbMF0uYyxzLmRlbnNlPyhjWyIhZGF0YSJdW2RdfHwoY1siIWRhdGEiXVtkXT1bXSksY1siIWRhdGEiXVtkXVtwXT1nKTpjW0hlKHApK3ldPWcsbC5zLnI+aC5yJiYobC5zLnI9aC5yKSxsLnMuYz5wJiYobC5zLmM9cCksbC5lLnI8aC5yJiYobC5lLnI9aC5yKSxsLmUuYzxwJiYobC5lLmM9cCksbGUmJihsZS50eXBlPT0iWExEQVBSIiYmKGcuRD0hMCksbGU9dm9pZCAwKTticmVhaztjYXNlIDE3NjpQLnB1c2goaik7YnJlYWs7Y2FzZSA0OTpsZT0oKHMueGxtZXRhfHx7fSkuQ2VsbHx8W10pW2otMV07YnJlYWs7Y2FzZSA0OTQ6dmFyIE9lPXRbIiFpZCJdW2oucmVsSWRdO2ZvcihPZT8oai5UYXJnZXQ9T2UuVGFyZ2V0LGoubG9jJiYoai5UYXJnZXQrPSIjIitqLmxvYyksai5SZWw9T2UpOmoucmVsSWQ9PSIiJiYoai5UYXJnZXQ9IiMiK2oubG9jKSxkPWoucmZ4LnMucjtkPD1qLnJmeC5lLnI7KytkKWZvcihwPWoucmZ4LnMuYztwPD1qLnJmeC5lLmM7KytwKXMuZGVuc2U/KGNbIiFkYXRhIl1bZF18fChjWyIhZGF0YSJdW2RdPVtdKSxjWyIhZGF0YSJdW2RdW3BdfHwoY1siIWRhdGEiXVtkXVtwXT17dDoieiIsdjp2b2lkIDB9KSxjWyIhZGF0YSJdW2RdW3BdLmw9aik6KHc9SGUocCkrR2UoZCksY1t3XXx8KGNbd109e3Q6InoiLHY6dm9pZCAwfSksY1t3XS5sPWopO2JyZWFrO2Nhc2UgNDI2OmlmKCFzLmNlbGxGb3JtdWxhKWJyZWFrO0QucHVzaChqKSxSPXMuZGVuc2U/Y1siIWRhdGEiXVtkXVtwXTpjW0hlKHApK3ldLFIuZj13cihqWzFdLGwse3I6aC5yLGM6cH0sTCxzKSxSLkY9RGUoalswXSk7YnJlYWs7Y2FzZSA0Mjc6aWYoIXMuY2VsbEZvcm11bGEpYnJlYWs7QltJZShqWzBdLnMpXT1qWzFdLFI9cy5kZW5zZT9jWyIhZGF0YSJdW2RdW3BdOmNbSGUocCkreV0sUi5mPXdyKGpbMV0sbCx7cjpoLnIsYzpwfSxMLHMpO2JyZWFrO2Nhc2UgNjA6aWYoIXMuY2VsbFN0eWxlcylicmVhaztmb3IoO2ouZT49ai5zOylpZVtqLmUtLV09e3dpZHRoOmoudy8yNTYsaGlkZGVuOiEhKGouZmxhZ3MmMSksbGV2ZWw6ai5sZXZlbH0scXx8KHE9ITAsZG4oai53LzI1NikpLHV0KGllW2ouZSsxXSk7YnJlYWs7Y2FzZSA1NTE6aiYmKGNbIiFsZWdyZWwiXT1qKTticmVhaztjYXNlIDE2MTpjWyIhYXV0b2ZpbHRlciJdPXtyZWY6RGUoail9O2JyZWFrO2Nhc2UgNDc2OmNbIiFtYXJnaW5zIl09ajticmVhaztjYXNlIDE0NzpuLlNoZWV0c1tyXXx8KG4uU2hlZXRzW3JdPXt9KSxqLm5hbWUmJihuLlNoZWV0c1tyXS5Db2RlTmFtZT1qLm5hbWUpLChqLmFib3ZlfHxqLmxlZnQpJiYoY1siIW91dGxpbmUiXT17YWJvdmU6ai5hYm92ZSxsZWZ0OmoubGVmdH0pO2JyZWFrO2Nhc2UgMTM3Om4uVmlld3N8fChuLlZpZXdzPVt7fV0pLG4uVmlld3NbMF18fChuLlZpZXdzWzBdPXt9KSxqLlJUTCYmKG4uVmlld3NbMF0uUlRMPSEwKTticmVhaztjYXNlIDQ4NTpicmVhaztjYXNlIDY0OmNhc2UgMTA1MzpicmVhaztjYXNlIDE1MTpicmVhaztjYXNlIDE1MjpjYXNlIDE3NTpjYXNlIDY0NDpjYXNlIDYyNTpjYXNlIDU2MjpjYXNlIDM5NjpjYXNlIDExMTI6Y2FzZSAxMTQ2OmNhc2UgNDcxOmNhc2UgMTA1MDpjYXNlIDY0OTpjYXNlIDExMDU6Y2FzZSA1ODk6Y2FzZSA2MDc6Y2FzZSA1NjQ6Y2FzZSAxMDU1OmNhc2UgMTY4OmNhc2UgMTc0OmNhc2UgMTE4MDpjYXNlIDQ5OTpjYXNlIDUwNzpjYXNlIDU1MDpjYXNlIDE3MTpjYXNlIDE2NzpjYXNlIDExNzc6Y2FzZSAxNjk6Y2FzZSAxMTgxOmNhc2UgNTUyOmNhc2UgNjYxOmNhc2UgNjM5OmNhc2UgNDc4OmNhc2UgNTM3OmNhc2UgNDc3OmNhc2UgNTM2OmNhc2UgMTEwMzpjYXNlIDY4MDpjYXNlIDExMDQ6Y2FzZSAxMDI0OmNhc2UgNjYzOmNhc2UgNTM1OmNhc2UgNjc4OmNhc2UgNTA0OmNhc2UgMTA0MzpjYXNlIDQyODpjYXNlIDE3MDpjYXNlIDMwNzI6Y2FzZSA1MDpjYXNlIDIwNzA6Y2FzZSAxMDQ1OmJyZWFrO2Nhc2UgMzU6dT0hMDticmVhaztjYXNlIDM2OnU9ITE7YnJlYWs7Y2FzZSAzNzp1PSEwO2JyZWFrO2Nhc2UgMzg6dT0hMTticmVhaztkZWZhdWx0OmlmKCF5ZS5UKXtpZighdXx8cy5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrYmUudG9TdHJpbmcoMTYpKX19fSxzKSxkZWxldGUgcy5zdXBib29rcyxkZWxldGUgc1siIXJvdyJdLCFjWyIhcmVmIl0mJihsLnMucjwyZTZ8fG8mJihvLmUucj4wfHxvLmUuYz4wfHxvLnMucj4wfHxvLnMuYz4wKSkmJihjWyIhcmVmIl09RGUob3x8bCkpLHMuc2hlZXRSb3dzJiZjWyIhcmVmIl0pe3ZhciBnZT1aZShjWyIhcmVmIl0pO3Muc2hlZXRSb3dzPD0rZ2UuZS5yJiYoZ2UuZS5yPXMuc2hlZXRSb3dzLTEsZ2UuZS5yPmwuZS5yJiYoZ2UuZS5yPWwuZS5yKSxnZS5lLnI8Z2Uucy5yJiYoZ2Uucy5yPWdlLmUuciksZ2UuZS5jPmwuZS5jJiYoZ2UuZS5jPWwuZS5jKSxnZS5lLmM8Z2Uucy5jJiYoZ2Uucy5jPWdlLmUuYyksY1siIWZ1bGxyZWYiXT1jWyIhcmVmIl0sY1siIXJlZiJdPURlKGdlKSl9cmV0dXJuIFAubGVuZ3RoPjAmJihjWyIhbWVyZ2VzIl09UCksaWUubGVuZ3RoPjAmJihjWyIhY29scyJdPWllKSxuZS5sZW5ndGg+MCYmKGNbIiFyb3dzIl09bmUpLHRbIiFpZCJdW2NbIiFsZWdyZWwiXV0mJihjWyIhbGVnZHJhd2VsIl09dFsiIWlkIl1bY1siIWxlZ3JlbCJdXSksY31mdW5jdGlvbiBFbihlKXt2YXIgYT1bXSxyPWUubWF0Y2goL148YzpudW1DYWNoZT4vKSx0OyhlLm1hdGNoKC88YzpwdCBpZHg9IihcZCopIltePD5cL10qPjxjOnY+KFtePF0qKTxcL2M6dj48XC9jOnB0Pi9tZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBmPWkubWF0Y2goLzxjOnB0IGlkeD0iKFxkKikiW148PlwvXSo+PGM6dj4oW148XSopPFwvYzp2PjxcL2M6cHQ+Lyk7ZiYmKGFbK2ZbMV1dPXI/K2ZbMl06ZlsyXSl9KTt2YXIgbj1DZSgoSGEoZSwiYzpmb3JtYXRDb2RlIil8fFsiIiwiR2VuZXJhbCJdKVsxXSk7cmV0dXJuKHVhKGUsIjxjOmY+IiwiPC9jOmY+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3Q9aS5yZXBsYWNlKC88W148Pl0qPi9nLCIiKX0pLFthLG4sdF19ZnVuY3Rpb24gcnYoZSl7dmFyIGE9dWEoZSwiPGM6bnVtQ2FjaGU+IiwiPC9jOm51bUNhY2hlPiIpO2lmKGEmJmEubGVuZ3RoKXt2YXIgcj1FbihhWzBdKTtyZXR1cm57dmFsdWVzOnJbMF0sZm9ybWF0Q29kZTpyWzFdLGZvcm11bGE6clsyXX19dmFyIHQ9dWEoZSwiPGM6c3RyQ2FjaGU+IiwiPC9jOnN0ckNhY2hlPiIpO2lmKHQmJnQubGVuZ3RoKXt2YXIgbj1Fbih0WzBdKTtyZXR1cm57dmFsdWVzOm5bMF0sZm9ybWF0Q29kZTpuWzFdLGZvcm11bGE6blsyXX19dmFyIGk9KHVhKGUsIjxjOmY+IiwiPC9jOmY+Iil8fFtdKVswXTtyZXR1cm57dmFsdWVzOltdLGZvcm11bGE6aT9pLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpOnZvaWQgMH19ZnVuY3Rpb24gYXYoZSl7dmFyIGE9dWEoZSwiPGM6dHg+IiwiPC9jOnR4PiIpO2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuIiI7dmFyIHI9TGUoYVswXSwidiIpO2lmKHImJnJbMV0pcmV0dXJuIENlKHJbMV0pO3ZhciB0PUxlKGFbMF0sImYiKTtyZXR1cm4gdCYmdFsxXT9DZSh0WzFdKToiIn1mdW5jdGlvbiB0dihlKXt2YXIgYT17bmFtZTphdihlKX0scj1MZShlLCJpZHgiKTtyJiYoYS5pZHg9KyhvZShyWzBdKS52YWx8fDApKTt2YXIgdD1MZShlLCJvcmRlciIpO3JldHVybiB0JiYoYS5vcmRlcj0rKG9lKHRbMF0pLnZhbHx8MCkpLFsiY2F0IiwidmFsIiwieFZhbCIsInlWYWwiLCJidWJibGVTaXplIl0uZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT1MZShlLG4pO2kmJihhW25dPXJ2KGlbMF0pKX0pLGEudmFsJiZhLnZhbC52YWx1ZXM/YS5kYXRhPWEudmFsLnZhbHVlczphLnlWYWwmJmEueVZhbC52YWx1ZXMmJihhLmRhdGE9YS55VmFsLnZhbHVlcyksYX1mdW5jdGlvbiBudihlKXt2YXIgYT1MZShlLCJ0aXRsZSIpO2lmKCFhKXJldHVybiIiO3ZhciByPVtdO3JldHVybihhWzBdLm1hdGNoKC88YTp0XGJbXj5dKj5bXHNcU10qPzxcL2E6dD4vZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IucHVzaChDZSh0LnJlcGxhY2UoLzxbXj5dKj4vZywiIikpKX0pLHIuam9pbigiIil9ZnVuY3Rpb24gaXYoZSxhLHIpe3ZhciB0PXt0YXJnZXQ6YSxyYXc6ZSxyZWxzOnIsc2VyaWVzOltdfTt0LnRpdGxlPW52KGUpO3ZhciBuPUxlKGUsInBsb3RBcmVhIiksaT1uP25bMV06ZTtbImJhckNoYXJ0IiwibGluZUNoYXJ0IiwiYXJlYUNoYXJ0Iiwic2NhdHRlckNoYXJ0IiwicGllQ2hhcnQiLCJkb3VnaG51dENoYXJ0IiwiYnViYmxlQ2hhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyh1YShpLCI8YzoiK2MrIj4iLCI8L2M6IitjKyI+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3QudHlwZXx8KHQudHlwZT1jKTt2YXIgbD1MZShvLCJncm91cGluZyIpO2wmJih0Lmdyb3VwaW5nPW9lKGxbMF0pLnZhbCksKHVhKG8sIjxjOnNlcj4iLCI8L2M6c2VyPiIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih1KXt2YXIgeD10dih1KTt4LmNoYXJ0VHlwZT1jLHQuc2VyaWVzLnB1c2goeCl9KX0pfSk7dmFyIGY9TGUoZSwibGVnZW5kIik7aWYoZil7dC5sZWdlbmQ9e307dmFyIHM9TGUoZlswXSwibGVnZW5kUG9zIik7cyYmKHQubGVnZW5kLnBvc2l0aW9uPW9lKHNbMF0pLnZhbCl9cmV0dXJuIHR9ZnVuY3Rpb24geGYoZSxhLHIsdCxuLGkpe3ZhciBmPWl8fHsiIXR5cGUiOiJjaGFydCJ9O2lmKCFlKXJldHVybiBpO2ZbIiFjaGFydCJdPWl2KGUsYSx0KTt2YXIgcz0wLGM9MCxvPSJBIixsPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19O3JldHVybih1YShlLCI8YzpudW1DYWNoZT4iLCI8L2M6bnVtQ2FjaGU+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe3ZhciB4PUVuKHUpO2wucy5yPWwucy5jPTAsbC5lLmM9cyxvPUhlKHMpLHhbMF0uZm9yRWFjaChmdW5jdGlvbihoLGcpe2ZbIiFkYXRhIl0/KGZbIiFkYXRhIl1bZ118fChmWyIhZGF0YSJdW2ddPVtdKSxmWyIhZGF0YSJdW2ddW3NdPXt0OiJuIix2Omgsejp4WzFdfSk6ZltvK0dlKGcpXT17dDoibiIsdjpoLHo6eFsxXX0sYz1nfSksbC5lLnI8YyYmKGwuZS5yPWMpLCsrc30pLHM+MCYmKGZbIiFyZWYiXT1EZShsKSksZn1mdW5jdGlvbiBzdihlLGEscix0LG4pe2lmKCFlKXJldHVybiBlO3R8fCh0PXsiIWlkIjp7fX0pO3ZhciBpPXsiIXR5cGUiOiJjaGFydCIsIiFkcmF3ZWwiOm51bGwsIiFyZWwiOiIifSxmLHM9ZS5tYXRjaCh1Zik7cmV0dXJuIHMmJlRuKHNbMF0saSxuLHIpLChmPWUubWF0Y2goL2RyYXdpbmcgcjppZD0iKC4qPykiLykpJiYoaVsiIXJlbCJdPWZbMV0pLHRbIiFpZCJdW2lbIiFyZWwiXV0mJihpWyIhZHJhd2VsIl09dFsiIWlkIl1baVsiIXJlbCJdXSksaX1mdW5jdGlvbiBmdihlLGEpe2UubCs9MTA7dmFyIHI9bXIoZSk7cmV0dXJue25hbWU6cn19ZnVuY3Rpb24gY3YoZSxhLHIsdCxuKXtpZighZSlyZXR1cm4gZTt0fHwodD17IiFpZCI6e319KTt2YXIgaT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoiIn0sZj0hMTtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNTUwOmlbIiFyZWwiXT1jO2JyZWFrO2Nhc2UgNjUxOm4uU2hlZXRzW3JdfHwobi5TaGVldHNbcl09e30pLGMubmFtZSYmKG4uU2hlZXRzW3JdLkNvZGVOYW1lPWMubmFtZSk7YnJlYWs7Y2FzZSA1NjI6Y2FzZSA2NTI6Y2FzZSA2Njk6Y2FzZSA2Nzk6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA0NzY6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6Zj0hMDticmVhaztjYXNlIDM2OmY9ITE7YnJlYWs7Y2FzZSAzNzpicmVhaztjYXNlIDM4OmJyZWFrO2RlZmF1bHQ6aWYoIShvLlQ+MCkpe2lmKCEoby5UPDApKXtpZighZnx8YS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrbC50b1N0cmluZygxNikpfX19fSxhKSx0WyIhaWQiXVtpWyIhcmVsIl1dJiYoaVsiIWRyYXdlbCJdPXRbIiFpZCJdW2lbIiFyZWwiXV0pLGl9dmFyIGRmPVtbImFsbG93UmVmcmVzaFF1ZXJ5IiwhMSwiYm9vbCJdLFsiYXV0b0NvbXByZXNzUGljdHVyZXMiLCEwLCJib29sIl0sWyJiYWNrdXBGaWxlIiwhMSwiYm9vbCJdLFsiY2hlY2tDb21wYXRpYmlsaXR5IiwhMSwiYm9vbCJdLFsiQ29kZU5hbWUiLCIiXSxbImRhdGUxOTA0IiwhMSwiYm9vbCJdLFsiZGVmYXVsdFRoZW1lVmVyc2lvbiIsMCwiaW50Il0sWyJmaWx0ZXJQcml2YWN5IiwhMSwiYm9vbCJdLFsiaGlkZVBpdm90RmllbGRMaXN0IiwhMSwiYm9vbCJdLFsicHJvbXB0ZWRTb2x1dGlvbnMiLCExLCJib29sIl0sWyJwdWJsaXNoSXRlbXMiLCExLCJib29sIl0sWyJyZWZyZXNoQWxsQ29ubmVjdGlvbnMiLCExLCJib29sIl0sWyJzYXZlRXh0ZXJuYWxMaW5rVmFsdWVzIiwhMCwiYm9vbCJdLFsic2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXMiLCEwLCJib29sIl0sWyJzaG93SW5rQW5ub3RhdGlvbiIsITAsImJvb2wiXSxbInNob3dPYmplY3RzIiwiYWxsIl0sWyJzaG93UGl2b3RDaGFydEZpbHRlciIsITEsImJvb2wiXSxbInVwZGF0ZUxpbmtzIiwidXNlclNldCJdXSxvdj1bWyJhY3RpdmVUYWIiLDAsImludCJdLFsiYXV0b0ZpbHRlckRhdGVHcm91cGluZyIsITAsImJvb2wiXSxbImZpcnN0U2hlZXQiLDAsImludCJdLFsibWluaW1pemVkIiwhMSwiYm9vbCJdLFsic2hvd0hvcml6b250YWxTY3JvbGwiLCEwLCJib29sIl0sWyJzaG93U2hlZXRUYWJzIiwhMCwiYm9vbCJdLFsic2hvd1ZlcnRpY2FsU2Nyb2xsIiwhMCwiYm9vbCJdLFsidGFiUmF0aW8iLDYwMCwiaW50Il0sWyJ2aXNpYmlsaXR5IiwidmlzaWJsZSJdXSxsdj1bXSx1dj1bWyJjYWxjQ29tcGxldGVkIiwidHJ1ZSJdLFsiY2FsY01vZGUiLCJhdXRvIl0sWyJjYWxjT25TYXZlIiwidHJ1ZSJdLFsiY29uY3VycmVudENhbGMiLCJ0cnVlIl0sWyJmdWxsQ2FsY09uTG9hZCIsImZhbHNlIl0sWyJmdWxsUHJlY2lzaW9uIiwidHJ1ZSJdLFsiaXRlcmF0ZSIsImZhbHNlIl0sWyJpdGVyYXRlQ291bnQiLCIxMDAiXSxbIml0ZXJhdGVEZWx0YSIsIjAuMDAxIl0sWyJyZWZNb2RlIiwiQTEiXV07ZnVuY3Rpb24gdmYoZSxhKXtmb3IodmFyIHI9MDtyIT1lLmxlbmd0aDsrK3IpZm9yKHZhciB0PWVbcl0sbj0wO24hPWEubGVuZ3RoOysrbil7dmFyIGk9YVtuXTtpZih0W2lbMF1dPT1udWxsKXRbaVswXV09aVsxXTtlbHNlIHN3aXRjaChpWzJdKXtjYXNlImJvb2wiOnR5cGVvZiB0W2lbMF1dPT0ic3RyaW5nIiYmKHRbaVswXV09RmUodFtpWzBdXSkpO2JyZWFrO2Nhc2UiaW50Ijp0eXBlb2YgdFtpWzBdXT09InN0cmluZyImJih0W2lbMF1dPXBhcnNlSW50KHRbaVswXV0sMTApKTticmVha319fWZ1bmN0aW9uIHBmKGUsYSl7Zm9yKHZhciByPTA7ciE9YS5sZW5ndGg7KytyKXt2YXIgdD1hW3JdO2lmKGVbdFswXV09PW51bGwpZVt0WzBdXT10WzFdO2Vsc2Ugc3dpdGNoKHRbMl0pe2Nhc2UiYm9vbCI6dHlwZW9mIGVbdFswXV09PSJzdHJpbmciJiYoZVt0WzBdXT1GZShlW3RbMF1dKSk7YnJlYWs7Y2FzZSJpbnQiOnR5cGVvZiBlW3RbMF1dPT0ic3RyaW5nIiYmKGVbdFswXV09cGFyc2VJbnQoZVt0WzBdXSwxMCkpO2JyZWFrfX19ZnVuY3Rpb24gZ2YoZSl7cGYoZS5XQlByb3BzLGRmKSxwZihlLkNhbGNQcix1diksdmYoZS5XQlZpZXcsb3YpLHZmKGUuU2hlZXRzLGx2KSx4dC5kYXRlMTkwND1GZShlLldCUHJvcHMuZGF0ZTE5MDQpfXZhciBodj0iOl1bKj8vXFwiLnNwbGl0KCIiKTtmdW5jdGlvbiB4dihlLGEpe3RyeXtpZihlPT0iIil0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGJlIGJsYW5rIik7aWYoZS5sZW5ndGg+MzEpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBuYW1lIGNhbm5vdCBleGNlZWQgMzEgY2hhcnMiKTtpZihlLmNoYXJDb2RlQXQoMCk9PTM5fHxlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk9PTM5KXRocm93IG5ldyBFcnJvcigiU2hlZXQgbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYXBvc3Ryb3BoZSAoJykiKTtpZihlLnRvTG93ZXJDYXNlKCk9PSJoaXN0b3J5Iil0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGJlICdIaXN0b3J5JyIpO2h2LmZvckVhY2goZnVuY3Rpb24ocil7aWYoZS5pbmRleE9mKHIpIT0tMSl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXCAvID8gKiBbIF0iKX0pfWNhdGNoKHIpe2lmKGEpcmV0dXJuITE7dGhyb3cgcn1yZXR1cm4hMH12YXIgZHY9Lzxcdys6d29ya2Jvb2svO2Z1bmN0aW9uIHZ2KGUsYSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBmaWxlIik7dmFyIHI9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSxOYW1lczpbXSx4bWxuczoiIn0sdD0hMSxuPSJ4bWxucyIsaT17fSxmPTA7aWYoZS5yZXBsYWNlKG5yLGZ1bmN0aW9uKGMsbyl7dmFyIGw9b2UoYyk7c3dpdGNoKEFyKGxbMF0pKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjx3b3JrYm9vayI6Yy5tYXRjaChkdikmJihuPSJ4bWxucyIrYy5tYXRjaCgvPChcdyspOi8pWzFdKSxyLnhtbG5zPWxbbl07YnJlYWs7Y2FzZSI8L3dvcmtib29rPiI6YnJlYWs7Y2FzZSI8ZmlsZVZlcnNpb24iOmRlbGV0ZSBsWzBdLHIuQXBwVmVyc2lvbj1sO2JyZWFrO2Nhc2UiPGZpbGVWZXJzaW9uLz4iOmNhc2UiPC9maWxlVmVyc2lvbj4iOmJyZWFrO2Nhc2UiPGZpbGVTaGFyaW5nIjpicmVhaztjYXNlIjxmaWxlU2hhcmluZy8+IjpicmVhaztjYXNlIjx3b3JrYm9va1ByIjpjYXNlIjx3b3JrYm9va1ByLz4iOmRmLmZvckVhY2goZnVuY3Rpb24odSl7aWYobFt1WzBdXSE9bnVsbClzd2l0Y2godVsyXSl7Y2FzZSJib29sIjpyLldCUHJvcHNbdVswXV09RmUobFt1WzBdXSk7YnJlYWs7Y2FzZSJpbnQiOnIuV0JQcm9wc1t1WzBdXT1wYXJzZUludChsW3VbMF1dLDEwKTticmVhaztkZWZhdWx0OnIuV0JQcm9wc1t1WzBdXT1sW3VbMF1dfX0pLGwuY29kZU5hbWUmJihyLldCUHJvcHMuQ29kZU5hbWU9VmUobC5jb2RlTmFtZSkpO2JyZWFrO2Nhc2UiPC93b3JrYm9va1ByPiI6YnJlYWs7Y2FzZSI8d29ya2Jvb2tQcm90ZWN0aW9uIjpicmVhaztjYXNlIjx3b3JrYm9va1Byb3RlY3Rpb24vPiI6YnJlYWs7Y2FzZSI8Ym9va1ZpZXdzIjpjYXNlIjxib29rVmlld3M+IjpjYXNlIjwvYm9va1ZpZXdzPiI6YnJlYWs7Y2FzZSI8d29ya2Jvb2tWaWV3IjpjYXNlIjx3b3JrYm9va1ZpZXcvPiI6ZGVsZXRlIGxbMF0sci5XQlZpZXcucHVzaChsKTticmVhaztjYXNlIjwvd29ya2Jvb2tWaWV3PiI6YnJlYWs7Y2FzZSI8c2hlZXRzIjpjYXNlIjxzaGVldHM+IjpjYXNlIjwvc2hlZXRzPiI6YnJlYWs7Y2FzZSI8c2hlZXQiOnN3aXRjaChsLnN0YXRlKXtjYXNlImhpZGRlbiI6bC5IaWRkZW49MTticmVhaztjYXNlInZlcnlIaWRkZW4iOmwuSGlkZGVuPTI7YnJlYWs7ZGVmYXVsdDpsLkhpZGRlbj0wfWRlbGV0ZSBsLnN0YXRlLGwubmFtZT1DZShWZShsLm5hbWUpKSxkZWxldGUgbFswXSxyLlNoZWV0cy5wdXNoKGwpO2JyZWFrO2Nhc2UiPC9zaGVldD4iOmJyZWFrO2Nhc2UiPGZ1bmN0aW9uR3JvdXBzIjpjYXNlIjxmdW5jdGlvbkdyb3Vwcy8+IjpicmVhaztjYXNlIjxmdW5jdGlvbkdyb3VwIjpicmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXMiOmNhc2UiPC9leHRlcm5hbFJlZmVyZW5jZXM+IjpjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXM+IjpicmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZSI6YnJlYWs7Y2FzZSI8ZGVmaW5lZE5hbWVzLz4iOmJyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOmNhc2UiPGRlZmluZWROYW1lcyI6dD0hMDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWVzPiI6dD0hMTticmVhaztjYXNlIjxkZWZpbmVkTmFtZSI6aT17fSxpLk5hbWU9VmUobC5uYW1lKSxsLmNvbW1lbnQmJihpLkNvbW1lbnQ9bC5jb21tZW50KSxsLmxvY2FsU2hlZXRJZCYmKGkuU2hlZXQ9K2wubG9jYWxTaGVldElkKSxGZShsLmhpZGRlbnx8IjAiKSYmKGkuSGlkZGVuPSEwKSxmPW8rYy5sZW5ndGg7YnJlYWs7Y2FzZSI8L2RlZmluZWROYW1lPiI6aS5SZWY9Q2UoVmUoZS5zbGljZShmLG8pKSksci5OYW1lcy5wdXNoKGkpO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lLz4iOmJyZWFrO2Nhc2UiPGNhbGNQciI6ZGVsZXRlIGxbMF0sci5DYWxjUHI9bDticmVhaztjYXNlIjxjYWxjUHIvPiI6ZGVsZXRlIGxbMF0sci5DYWxjUHI9bDticmVhaztjYXNlIjwvY2FsY1ByPiI6YnJlYWs7Y2FzZSI8b2xlU2l6ZSI6YnJlYWs7Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cz4iOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cyI6YnJlYWs7Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3IjpjYXNlIjwvY3VzdG9tV29ya2Jvb2tWaWV3PiI6YnJlYWs7Y2FzZSI8cGl2b3RDYWNoZXM+IjpjYXNlIjwvcGl2b3RDYWNoZXM+IjpjYXNlIjxwaXZvdENhY2hlcyI6YnJlYWs7Y2FzZSI8cGl2b3RDYWNoZSI6YnJlYWs7Y2FzZSI8c21hcnRUYWdQciI6Y2FzZSI8c21hcnRUYWdQci8+IjpicmVhaztjYXNlIjxzbWFydFRhZ1R5cGVzIjpjYXNlIjxzbWFydFRhZ1R5cGVzPiI6Y2FzZSI8L3NtYXJ0VGFnVHlwZXM+IjpicmVhaztjYXNlIjxzbWFydFRhZ1R5cGUiOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hpbmciOmNhc2UiPHdlYlB1Ymxpc2hpbmcvPiI6YnJlYWs7Y2FzZSI8ZmlsZVJlY292ZXJ5UHIiOmNhc2UiPGZpbGVSZWNvdmVyeVByLz4iOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hPYmplY3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHMiOmNhc2UiPC93ZWJQdWJsaXNoT2JqZWN0cz4iOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hPYmplY3QiOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpicmVhaztjYXNlIjxleHQiOnQ9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOnQ9ITE7YnJlYWs7Y2FzZSI8QXJjaElEIjpicmVhaztjYXNlIjxBbHRlcm5hdGVDb250ZW50IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50PiI6dD0hMDticmVhaztjYXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOnQ9ITE7YnJlYWs7Y2FzZSI8cmV2aXNpb25QdHIiOmJyZWFrO2RlZmF1bHQ6aWYoIXQmJmEuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrbFswXSsiIGluIHdvcmtib29rIil9cmV0dXJuIGN9KSxjby5pbmRleE9mKHIueG1sbnMpPT09LTEpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZTogIityLnhtbG5zKTtyZXR1cm4gZ2Yocikscn1mdW5jdGlvbiBwdihlLGEpe3ZhciByPXt9O3JldHVybiByLkhpZGRlbj1lLnJlYWRfc2hpZnQoNCksci5pVGFiSUQ9ZS5yZWFkX3NoaWZ0KDQpLHIuc3RyUmVsSUQ9Zm4oZSksci5uYW1lPW1yKGUpLHJ9ZnVuY3Rpb24gZ3YoZSxhKXt2YXIgcj17fSx0PWUucmVhZF9zaGlmdCg0KTtyLmRlZmF1bHRUaGVtZVZlcnNpb249ZS5yZWFkX3NoaWZ0KDQpO3ZhciBuPWE+OD9tcihlKToiIjtyZXR1cm4gbi5sZW5ndGg+MCYmKHIuQ29kZU5hbWU9biksci5hdXRvQ29tcHJlc3NQaWN0dXJlcz0hISh0JjY1NTM2KSxyLmJhY2t1cEZpbGU9ISEodCY2NCksci5jaGVja0NvbXBhdGliaWxpdHk9ISEodCY0MDk2KSxyLmRhdGUxOTA0PSEhKHQmMSksci5maWx0ZXJQcml2YWN5PSEhKHQmOCksci5oaWRlUGl2b3RGaWVsZExpc3Q9ISEodCYxMDI0KSxyLnByb21wdGVkU29sdXRpb25zPSEhKHQmMTYpLHIucHVibGlzaEl0ZW1zPSEhKHQmMjA0OCksci5yZWZyZXNoQWxsQ29ubmVjdGlvbnM9ISEodCYyNjIxNDQpLHIuc2F2ZUV4dGVybmFsTGlua1ZhbHVlcz0hISh0JjEyOCksci5zaG93Qm9yZGVyVW5zZWxlY3RlZFRhYmxlcz0hISh0JjQpLHIuc2hvd0lua0Fubm90YXRpb249ISEodCYzMiksci5zaG93T2JqZWN0cz1bImFsbCIsInBsYWNlaG9sZGVycyIsIm5vbmUiXVt0Pj4xMyYzXSxyLnNob3dQaXZvdENoYXJ0RmlsdGVyPSEhKHQmMzI3NjgpLHIudXBkYXRlTGlua3M9WyJ1c2VyU2V0IiwibmV2ZXIiLCJhbHdheXMiXVt0Pj44JjNdLHJ9ZnVuY3Rpb24gbXYoZSxhKXt2YXIgcj17fTtyZXR1cm4gZS5yZWFkX3NoaWZ0KDQpLHIuQXJjaElEPWUucmVhZF9zaGlmdCg0KSxlLmwrPWEtOCxyfWZ1bmN0aW9uIF92KGUsYSxyKXt2YXIgdD1lLmwrYSxuPWUucmVhZF9zaGlmdCg0KTtlLmwrPTE7dmFyIGk9ZS5yZWFkX3NoaWZ0KDQpLGY9Ym8oZSkscyxjPSIiO3RyeXtzPWVkKGUsMCxyKTt0cnl7Yz14MChlKX1jYXRjaHt9fWNhdGNoe2NvbnNvbGUuZXJyb3IoIkNvdWxkIG5vdCBwYXJzZSBkZWZpbmVkIG5hbWUgIitmKX1uJjMyJiYoZj0iX3hsbm0uIitmKSxlLmw9dDt2YXIgbz17TmFtZTpmLFB0ZzpzLEZsYWdzOm59O3JldHVybiBpPDI2ODQzNTQ1NSYmKG8uU2hlZXQ9aSksYyYmKG8uQ29tbWVudD1jKSxvfWZ1bmN0aW9uIGt2KGUsYSl7dmFyIHI9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSx4bWxuczoiIn0sdD1bXSxuPSExO2F8fChhPXt9KSxhLmJpZmY9MTI7dmFyIGk9W10sZj1bW11dO3JldHVybiBmLlNoZWV0TmFtZXM9W10sZi5YVEk9W10sYjBbMTZdPXtuOiJCcnRGUlRBcmNoSUQkIixmOm12fSx2YShlLGZ1bmN0aW9uKGMsbyxsKXtzd2l0Y2gobCl7Y2FzZSAxNTY6Zi5TaGVldE5hbWVzLnB1c2goYy5uYW1lKSxyLlNoZWV0cy5wdXNoKGMpO2JyZWFrO2Nhc2UgMTUzOnIuV0JQcm9wcz1jO2JyZWFrO2Nhc2UgMzk6Yy5TaGVldCE9bnVsbCYmKGEuU0lEPWMuU2hlZXQpLGMuUmVmPWMuUHRnP3dyKGMuUHRnLG51bGwsbnVsbCxmLGEpOiIjUkVGISIsZGVsZXRlIGEuU0lELGRlbGV0ZSBjLlB0ZyxpLnB1c2goYyk7YnJlYWs7Y2FzZSAxMDM2OmJyZWFrO2Nhc2UgMzU3OmNhc2UgMzU4OmNhc2UgMzU1OmNhc2UgNjY3OmZbMF0ubGVuZ3RoP2YucHVzaChbbCxjXSk6ZlswXT1bbCxjXSxmW2YubGVuZ3RoLTFdLlhUST1bXTticmVhaztjYXNlIDM2MjpmLmxlbmd0aD09PTAmJihmWzBdPVtdLGZbMF0uWFRJPVtdKSxmW2YubGVuZ3RoLTFdLlhUST1mW2YubGVuZ3RoLTFdLlhUSS5jb25jYXQoYyksZi5YVEk9Zi5YVEkuY29uY2F0KGMpO2JyZWFrO2Nhc2UgMzYxOmJyZWFrO2Nhc2UgMjA3MTpjYXNlIDE1ODpjYXNlIDE0MzpjYXNlIDY2NDpjYXNlIDM1MzpicmVhaztjYXNlIDMwNzI6Y2FzZSAzMDczOmNhc2UgNTM0OmNhc2UgNjc3OmNhc2UgMTU3OmNhc2UgNjEwOmNhc2UgMjA1MDpjYXNlIDE1NTpjYXNlIDU0ODpjYXNlIDY3NjpjYXNlIDEyODpjYXNlIDY2NTpjYXNlIDIxMjg6Y2FzZSAyMTI1OmNhc2UgNTQ5OmNhc2UgMjA1MzpjYXNlIDU5NjpjYXNlIDIwNzY6Y2FzZSAyMDc1OmNhc2UgMjA4MjpjYXNlIDM5NzpjYXNlIDE1NDpjYXNlIDExMTc6Y2FzZSA1NTM6Y2FzZSAyMDkxOmJyZWFrO2Nhc2UgMzU6dC5wdXNoKGwpLG49ITA7YnJlYWs7Y2FzZSAzNjp0LnBvcCgpLG49ITE7YnJlYWs7Y2FzZSAzNzp0LnB1c2gobCksbj0hMDticmVhaztjYXNlIDM4OnQucG9wKCksbj0hMTticmVhaztjYXNlIDE2OmJyZWFrO2RlZmF1bHQ6aWYoIW8uVCl7aWYoIW58fGEuV1RGJiZ0W3QubGVuZ3RoLTFdIT0zNyYmdFt0Lmxlbmd0aC0xXSE9MzUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrbC50b1N0cmluZygxNikpfX19LGEpLGdmKHIpLHIuTmFtZXM9aSxyLnN1cGJvb2tzPWYscn1mdW5jdGlvbiB3dihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP2t2KGUscik6dnYoZSxyKX1mdW5jdGlvbiBGdihlLGEscix0LG4saSxmLHMpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9ldihlLHQscixuLGksZixzKTp4ZChlLHQscixuLGksZixzKX1mdW5jdGlvbiBUdihlLGEscix0LG4saSxmLHMpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9jdihlLHQscixuLGkpOnN2KGUsdCxyLG4saSl9ZnVuY3Rpb24gRXYoZSxhLHIsdCxuLGksZixzKXtyZXR1cm4gYS5zbGljZSgtNCk9PT0iLmJpbiI/STEoKTpSMSgpfWZ1bmN0aW9uIEF2KGUsYSxyLHQsbixpLGYscyl7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP2IxKCk6RDEoKX1mdW5jdGlvbiB5dihlLGEscix0KXtyZXR1cm4gYS5zbGljZSgtNCk9PT0iLmJpbiI/emgoZSxyLHQpOlVoKGUscix0KX1mdW5jdGlvbiBTdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP1h1KGUscik6VnUoZSxyKX1mdW5jdGlvbiBDdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP3kxKGUscik6dzEoZSxyKX1mdW5jdGlvbiBidihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP3UxKGUpOm8xKGUpfWZ1bmN0aW9uIER2KGUsYSxyLHQpe3JldHVybiByLnNsaWNlKC00KT09PSIuYmluIj9oMShlLGEscix0KTp2b2lkIDB9ZnVuY3Rpb24gSXYoZSxhLHIpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9mMShlLGEscik6YzEoZSxhLHIpfXZhciBtZj0vXGIoKD86XHcrOik/W1x3XSspPSgoPzoiKShbXiJdKikoPzoiKXwoPzonKShbXiddKikoPzonKSkvZyxfZj0vXGIoKD86XHcrOik/W1x3XSspPSgoPzoiKSg/OlteIl0qKSg/OiIpfCg/OicpKD86W14nXSopKD86JykpLztmdW5jdGlvbiBRcihlLGEpe3ZhciByPWUuc3BsaXQoL1xzKy8pLHQ9W107aWYoYXx8KHRbMF09clswXSksci5sZW5ndGg9PT0xKXJldHVybiB0O3ZhciBuPWUubWF0Y2gobWYpLGksZixzLGM7aWYobilmb3IoYz0wO2MhPW4ubGVuZ3RoOysrYylpPW5bY10ubWF0Y2goX2YpLChmPWlbMV0uaW5kZXhPZigiOiIpKT09PS0xP3RbaVsxXV09aVsyXS5zbGljZSgxLGlbMl0ubGVuZ3RoLTEpOihpWzFdLnNsaWNlKDAsNik9PT0ieG1sbnM6Ij9zPSJ4bWxucyIraVsxXS5zbGljZSg2KTpzPWlbMV0uc2xpY2UoZisxKSx0W3NdPWlbMl0uc2xpY2UoMSxpWzJdLmxlbmd0aC0xKSk7cmV0dXJuIHR9ZnVuY3Rpb24gUnYoZSl7dmFyIGE9ZS5zcGxpdCgvXHMrLykscj17fTtpZihhLmxlbmd0aD09PTEpcmV0dXJuIHI7dmFyIHQ9ZS5tYXRjaChtZiksbixpLGYscztpZih0KWZvcihzPTA7cyE9dC5sZW5ndGg7KytzKW49dFtzXS5tYXRjaChfZiksKGk9blsxXS5pbmRleE9mKCI6IikpPT09LTE/cltuWzFdXT1uWzJdLnNsaWNlKDEsblsyXS5sZW5ndGgtMSk6KG5bMV0uc2xpY2UoMCw2KT09PSJ4bWxuczoiP2Y9InhtbG5zIituWzFdLnNsaWNlKDYpOmY9blsxXS5zbGljZShpKzEpLHJbZl09blsyXS5zbGljZSgxLG5bMl0ubGVuZ3RoLTEpKTtyZXR1cm4gcn12YXIgenQ7ZnVuY3Rpb24gT3YoZSxhLHIpe3ZhciB0PXp0W2VdfHxDZShlKTtyZXR1cm4gdD09PSJHZW5lcmFsIj9QYShhKTpScih0LGEse2RhdGUxOTA0OiEhcn0pfWZ1bmN0aW9uIE52KGUsYSxyLHQpe3ZhciBuPXQ7c3dpdGNoKChyWzBdLm1hdGNoKC9kdDpkdD0iKFtcdy5dKykiLyl8fFsiIiwiIl0pWzFdKXtjYXNlImJvb2xlYW4iOm49RmUodCk7YnJlYWs7Y2FzZSJpMiI6Y2FzZSJpbnQiOm49cGFyc2VJbnQodCwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJmbG9hdCI6bj1wYXJzZUZsb2F0KHQpO2JyZWFrO2Nhc2UiZGF0ZSI6Y2FzZSJkYXRlVGltZS50eiI6bj14cih0KTticmVhaztjYXNlImk4IjpjYXNlInN0cmluZyI6Y2FzZSJmaXhlZCI6Y2FzZSJ1dWlkIjpjYXNlImJpbi5iYXNlNjQiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJiYWQgY3VzdHByb3A6IityWzBdKX1lW0NlKGEpXT1ufWZ1bmN0aW9uIE12KGUsYSxyLHQpe2lmKGUudCE9PSJ6Iil7aWYoIXJ8fHIuY2VsbFRleHQhPT0hMSl0cnl7ZS50PT09ImUiP2Uudz1lLnd8fGJyW2Uudl06YT09PSJHZW5lcmFsIj9lLnQ9PT0ibiI/KGUudnwwKT09PWUudj9lLnc9ZS52LnRvU3RyaW5nKDEwKTplLnc9QXQoZS52KTplLnc9UGEoZS52KTplLnc9T3YoYXx8IkdlbmVyYWwiLGUudix0KX1jYXRjaChmKXtpZihyLldURil0aHJvdyBmfXRyeXt2YXIgbj16dFthXXx8YXx8IkdlbmVyYWwiO2lmKHIuY2VsbE5GJiYoZS56PW4pLHIuY2VsbERhdGVzJiZlLnQ9PSJuIiYmWnIobikpe3ZhciBpPWNhKGUudisodD8xNDYyOjApKTtpJiYoZS50PSJkIixlLnY9bmV3IERhdGUoRGF0ZS5VVEMoaS55LGkubS0xLGkuZCxpLkgsaS5NLGkuUyxpLnUpKSl9fWNhdGNoKGYpe2lmKHIuV1RGKXRocm93IGZ9fX1mdW5jdGlvbiBQdihlLGEscil7aWYoci5jZWxsU3R5bGVzJiZhLkludGVyaW9yKXt2YXIgdD1hLkludGVyaW9yO3QuUGF0dGVybiYmKHQucGF0dGVyblR5cGU9YmhbdC5QYXR0ZXJuXXx8dC5QYXR0ZXJuKX1lW2EuSURdPWF9ZnVuY3Rpb24gTHYoZSxhLHIsdCxuLGksZixzLGMsbyxsKXt2YXIgdT0iR2VuZXJhbCIseD10LlN0eWxlSUQsaD17fTtvPW98fHt9O3ZhciBnPVtdLG09MDtmb3IoeD09PXZvaWQgMCYmcyYmKHg9cy5TdHlsZUlEKSx4PT09dm9pZCAwJiZmJiYoeD1mLlN0eWxlSUQpO2lbeF0hPT12b2lkIDA7KXt2YXIgZD1pW3hdO2lmKGQubmYmJih1PWQubmYpLGQuSW50ZXJpb3ImJmcucHVzaChkLkludGVyaW9yKSwhZC5QYXJlbnQpYnJlYWs7eD1kLlBhcmVudH1zd2l0Y2goci5UeXBlKXtjYXNlIkJvb2xlYW4iOnQudD0iYiIsdC52PUZlKGUpO2JyZWFrO2Nhc2UiU3RyaW5nIjp0LnQ9InMiLHQucj1FaShDZShlKSksdC52PWUuaW5kZXhPZigiPCIpPi0xP0NlKGF8fGUpLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpOnQucjticmVhaztjYXNlIkRhdGVUaW1lIjplLnNsaWNlKC0xKSE9IloiJiYoZSs9IloiKSx0LnY9b3IoeHIoZSxsKSxsKSx0LnYhPT10LnYmJih0LnY9Q2UoZSkpLCghdXx8dT09IkdlbmVyYWwiKSYmKHU9Inl5eXktbW0tZGQiKTtjYXNlIk51bWJlciI6dC52PT09dm9pZCAwJiYodC52PStlKSx0LnR8fCh0LnQ9Im4iKTticmVhaztjYXNlIkVycm9yIjp0LnQ9ImUiLHQudj1kcltlXSxvLmNlbGxUZXh0IT09ITEmJih0Lnc9ZSk7YnJlYWs7ZGVmYXVsdDplPT0iIiYmYT09IiI/dC50PSJ6IjoodC50PSJzIix0LnY9RWkoYXx8ZSkpO2JyZWFrfWlmKE12KHQsdSxvLGwpLG8uY2VsbEZvcm11bGEhPT0hMSlpZih0LkZvcm11bGEpe3ZhciBwPUNlKHQuRm9ybXVsYSk7cC5jaGFyQ29kZUF0KDApPT02MSYmKHA9cC5zbGljZSgxKSksdC5mPXFhKHAsbiksZGVsZXRlIHQuRm9ybXVsYSx0LkFycmF5UmFuZ2U9PSJSQyI/dC5GPXFhKCJSQzpSQyIsbik6dC5BcnJheVJhbmdlJiYodC5GPXFhKHQuQXJyYXlSYW5nZSxuKSxjLnB1c2goW1plKHQuRiksdC5GXSkpfWVsc2UgZm9yKG09MDttPGMubGVuZ3RoOysrbSluLnI+PWNbbV1bMF0ucy5yJiZuLnI8PWNbbV1bMF0uZS5yJiZuLmM+PWNbbV1bMF0ucy5jJiZuLmM8PWNbbV1bMF0uZS5jJiYodC5GPWNbbV1bMV0pO28uY2VsbFN0eWxlcyYmKGcuZm9yRWFjaChmdW5jdGlvbih3KXshaC5wYXR0ZXJuVHlwZSYmdy5wYXR0ZXJuVHlwZSYmKGgucGF0dGVyblR5cGU9dy5wYXR0ZXJuVHlwZSl9KSx0LnM9aCksdC5TdHlsZUlEIT09dm9pZCAwJiYodC5peGZlPXQuU3R5bGVJRCl9ZnVuY3Rpb24gQnYoZSl7cmV0dXJuIGFzLmluZGV4T2YoIl94bG5tLiIrZSk+LTE/Il94bG5tLiIrZTplfWZ1bmN0aW9uIFV2KGUpe2UudD1lLnZ8fCIiLGUudD1lLnQucmVwbGFjZSgvXHJcbi9nLGAKYCkucmVwbGFjZSgvXHIvZyxgCmApLGUudj1lLnc9ZS5peGZlPXZvaWQgMH1mdW5jdGlvbiBBbihlLGEpe3ZhciByPWF8fHt9O29pKCk7dmFyIHQ9RnQodTAoZSkpOyhyLnR5cGU9PSJiaW5hcnkifHxyLnR5cGU9PSJhcnJheSJ8fHIudHlwZT09ImJhc2U2NCIpJiYodD1WZSh0KSk7dmFyIG49dC5zbGljZSgwLDEwMjQpLnRvTG93ZXJDYXNlKCksaT0hMTtpZihuPW4ucmVwbGFjZSgvIi4qPyIvZywiIiksKG4uaW5kZXhPZigiPiIpJjEwMjMpPk1hdGgubWluKG4uaW5kZXhPZigiLCIpJjEwMjMsbi5pbmRleE9mKCI7IikmMTAyMykpe3ZhciBmPVVlKHIpO3JldHVybiBmLnR5cGU9InN0cmluZyIsbHQudG9fd29ya2Jvb2sodCxmKX1pZihuLmluZGV4T2YoIjw/eG1sIik9PS0xJiZbImh0bWwiLCJ0YWJsZSIsImhlYWQiLCJtZXRhIiwic2NyaXB0Iiwic3R5bGUiLCJkaXYiXS5mb3JFYWNoKGZ1bmN0aW9uKGhlKXtuLmluZGV4T2YoIjwiK2hlKT49MCYmKGk9ITApfSksaSlyZXR1cm4gdjIodCxyKTt6dD17IkdlbmVyYWwgTnVtYmVyIjoiR2VuZXJhbCIsIkdlbmVyYWwgRGF0ZSI6VGVbMjJdLCJMb25nIERhdGUiOiJkZGRkLCBtbW1tIGRkLCB5eXl5IiwiTWVkaXVtIERhdGUiOlRlWzE1XSwiU2hvcnQgRGF0ZSI6VGVbMTRdLCJMb25nIFRpbWUiOlRlWzE5XSwiTWVkaXVtIFRpbWUiOlRlWzE4XSwiU2hvcnQgVGltZSI6VGVbMjBdLEN1cnJlbmN5OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLEZpeGVkOlRlWzJdLFN0YW5kYXJkOlRlWzRdLFBlcmNlbnQ6VGVbMTBdLFNjaWVudGlmaWM6VGVbMTFdLCJZZXMvTm8iOiciWWVzIjsiWWVzIjsiTm8iO0AnLCJUcnVlL0ZhbHNlIjonIlRydWUiOyJUcnVlIjsiRmFsc2UiO0AnLCJPbi9PZmYiOiciWWVzIjsiWWVzIjsiTm8iO0AnfTt2YXIgcyxjPVtdLG8sbD17fSx1PVtdLHg9e30saD0iIjtyLmRlbnNlJiYoeFsiIWRhdGEiXT1bXSk7dmFyIGc9e30sbT17fSxkPVFyKCc8RGF0YSBzczpUeXBlPSJTdHJpbmciPicpLHA9MCx3PTAsXz0wLHk9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sUj17fSxQPXt9LGI9IiIsTj0wLEQ9W10sQj17fSxMPXt9LEc9MCxpZT1bXSxuZT1bXSxxPXt9LGxlPVtdLFEsZ2U9ITEsdWU9W10saj1bXSx5ZT17fSxiZT0wLG1lPTAsWj17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfX0sT2U9e307aXIubGFzdEluZGV4PTAsdD1TdCh0LCI8IS0tIiwiLS0+Iik7Zm9yKHZhciB3ZT0iIjtzPWlyLmV4ZWModCk7KXN3aXRjaChzWzNdPSh3ZT1zWzNdKS50b0xvd2VyQ2FzZSgpKXtjYXNlImRhdGEiOmlmKHdlPT0iZGF0YSIpe2lmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSl9ZWxzZSBzWzBdLmNoYXJBdChzWzBdLmxlbmd0aC0yKSE9PSIvIiYmYy5wdXNoKFtzWzNdLCEwXSk7YnJlYWt9aWYoY1tjLmxlbmd0aC0xXVsxXSlicmVhaztzWzFdPT09Ii8iP0x2KHQuc2xpY2UocCxzLmluZGV4KSxiLGQsY1tjLmxlbmd0aC0xXVswXT09ImNvbW1lbnQiP3E6Zyx7Yzp3LHI6X30sUixsZVt3XSxtLHVlLHIsWi5XQlByb3BzLmRhdGUxOTA0KTooYj0iIixkPVFyKHNbMF0pLHA9cy5pbmRleCtzWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJjZWxsIjppZihzWzFdPT09Ii8iKWlmKG5lLmxlbmd0aD4wJiYoZy5jPW5lKSwoIXIuc2hlZXRSb3dzfHxyLnNoZWV0Um93cz5fKSYmZy52IT09dm9pZCAwJiYoci5kZW5zZT8oeFsiIWRhdGEiXVtfXXx8KHhbIiFkYXRhIl1bX109W10pLHhbIiFkYXRhIl1bX11bd109Zyk6eFtIZSh3KStHZShfKV09ZyksZy5IUmVmJiYoZy5sPXtUYXJnZXQ6Q2UoZy5IUmVmKX0sZy5IUmVmU2NyZWVuVGlwJiYoZy5sLlRvb2x0aXA9Zy5IUmVmU2NyZWVuVGlwKSxkZWxldGUgZy5IUmVmLGRlbGV0ZSBnLkhSZWZTY3JlZW5UaXApLChnLk1lcmdlQWNyb3NzfHxnLk1lcmdlRG93bikmJihiZT13KyhwYXJzZUludChnLk1lcmdlQWNyb3NzLDEwKXwwKSxtZT1fKyhwYXJzZUludChnLk1lcmdlRG93biwxMCl8MCksKGJlPnd8fG1lPl8pJiZELnB1c2goe3M6e2M6dyxyOl99LGU6e2M6YmUscjptZX19KSksIXIuc2hlZXRTdHVicylnLk1lcmdlQWNyb3NzP3c9YmUrMTorK3c7ZWxzZSBpZihnLk1lcmdlQWNyb3NzfHxnLk1lcmdlRG93bil7Zm9yKHZhciBBZT13O0FlPD1iZTsrK0FlKWZvcih2YXIgQT1fO0E8PW1lOysrQSkoQWU+d3x8QT5fKSYmKHIuZGVuc2U/KHhbIiFkYXRhIl1bQV18fCh4WyIhZGF0YSJdW0FdPVtdKSx4WyIhZGF0YSJdW0FdW0FlXT17dDoieiJ9KTp4W0hlKEFlKStHZShBKV09e3Q6InoifSk7dz1iZSsxfWVsc2UrK3c7ZWxzZSBnPVJ2KHNbMF0pLGcuSW5kZXgmJih3PStnLkluZGV4LTEpLHc8eS5zLmMmJih5LnMuYz13KSx3PnkuZS5jJiYoeS5lLmM9dyksc1swXS5zbGljZSgtMik9PT0iLz4iJiYrK3csbmU9W107YnJlYWs7Y2FzZSJyb3ciOnNbMV09PT0iLyJ8fHNbMF0uc2xpY2UoLTIpPT09Ii8+Ij8oXzx5LnMuciYmKHkucy5yPV8pLF8+eS5lLnImJih5LmUucj1fKSxzWzBdLnNsaWNlKC0yKT09PSIvPiImJihtPVFyKHNbMF0pLG0uSW5kZXgmJihfPSttLkluZGV4LTEpKSx3PTAsKytfKToobT1RcihzWzBdKSxtLkluZGV4JiYoXz0rbS5JbmRleC0xKSx5ZT17fSwobS5BdXRvRml0SGVpZ2h0PT0iMCJ8fG0uSGVpZ2h0KSYmKHllLmhweD1wYXJzZUludChtLkhlaWdodCwxMCkseWUuaHB0PUhzKHllLmhweCksaltfXT15ZSksbS5IaWRkZW49PSIxIiYmKHllLmhpZGRlbj0hMCxqW19dPXllKSk7YnJlYWs7Y2FzZSJ3b3Jrc2hlZXQiOmlmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSk7dS5wdXNoKGgpLHkucy5yPD15LmUuciYmeS5zLmM8PXkuZS5jJiYoeFsiIXJlZiJdPURlKHkpLHIuc2hlZXRSb3dzJiZyLnNoZWV0Um93czw9eS5lLnImJih4WyIhZnVsbHJlZiJdPXhbIiFyZWYiXSx5LmUucj1yLnNoZWV0Um93cy0xLHhbIiFyZWYiXT1EZSh5KSkpLEQubGVuZ3RoJiYoeFsiIW1lcmdlcyJdPUQpLGxlLmxlbmd0aD4wJiYoeFsiIWNvbHMiXT1sZSksai5sZW5ndGg+MCYmKHhbIiFyb3dzIl09aiksbFtoXT14fWVsc2UgeT17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxfPXc9MCxjLnB1c2goW3NbM10sITFdKSxvPVFyKHNbMF0pLGg9Q2Uoby5OYW1lKSx4PXt9LHIuZGVuc2UmJih4WyIhZGF0YSJdPVtdKSxEPVtdLHVlPVtdLGo9W10sT2U9e25hbWU6aCxIaWRkZW46MH0sWi5TaGVldHMucHVzaChPZSk7YnJlYWs7Y2FzZSJ0YWJsZSI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNle2lmKHNbMF0uc2xpY2UoLTIpPT0iLz4iKWJyZWFrO2MucHVzaChbc1szXSwhMV0pLGxlPVtdLGdlPSExfWJyZWFrO2Nhc2Uic3R5bGUiOnNbMV09PT0iLyI/UHYoUixQLHIpOlA9UXIoc1swXSk7YnJlYWs7Y2FzZSJudW1iZXJmb3JtYXQiOlAubmY9Q2UoUXIoc1swXSkuRm9ybWF0fHwiR2VuZXJhbCIpLHp0W1AubmZdJiYoUC5uZj16dFtQLm5mXSk7Zm9yKHZhciBVPTA7VSE9MzkyJiZUZVtVXSE9UC5uZjsrK1UpO2lmKFU9PTM5Mil7Zm9yKFU9NTc7VSE9MzkyOysrVSlpZihUZVtVXT09bnVsbCl7TGEoUC5uZixVKTticmVha319YnJlYWs7Y2FzZSJjb2x1bW4iOmlmKGNbYy5sZW5ndGgtMV1bMF0hPT0idGFibGUifHxzWzFdPT09Ii8iKWJyZWFrO2lmKFE9UXIoc1swXSksUS5IaWRkZW4mJihRLmhpZGRlbj0hMCxkZWxldGUgUS5IaWRkZW4pLFEuV2lkdGgmJihRLndweD1wYXJzZUludChRLldpZHRoLDEwKSksIWdlJiZRLndweD4xMCl7Z2U9ITAscWU9T3M7Zm9yKHZhciBPPTA7TzxsZS5sZW5ndGg7KytPKWxlW09dJiZ1dChsZVtPXSl9Z2UmJnV0KFEpLGxlW1EuSW5kZXgtMXx8bGUubGVuZ3RoXT1RO2Zvcih2YXIgST0wO0k8K1EuU3BhbjsrK0kpbGVbbGUubGVuZ3RoXT1VZShRKTticmVhaztjYXNlIm5hbWVkcmFuZ2UiOmlmKHNbMV09PT0iLyIpYnJlYWs7Wi5OYW1lc3x8KFouTmFtZXM9W10pO3ZhciB6PW9lKHNbMF0pLHBlPXtOYW1lOkJ2KHouTmFtZSksUmVmOnFhKHouUmVmZXJzVG8uc2xpY2UoMSkse3I6MCxjOjB9KX07Wi5TaGVldHMubGVuZ3RoPjAmJihwZS5TaGVldD1aLlNoZWV0cy5sZW5ndGgtMSksWi5OYW1lcy5wdXNoKHBlKTticmVhaztjYXNlIm5hbWVkY2VsbCI6YnJlYWs7Y2FzZSJiIjpicmVhaztjYXNlImkiOmJyZWFrO2Nhc2UidSI6YnJlYWs7Y2FzZSJzIjpicmVhaztjYXNlImVtIjpicmVhaztjYXNlImgyIjpicmVhaztjYXNlImgzIjpicmVhaztjYXNlInN1YiI6YnJlYWs7Y2FzZSJzdXAiOmJyZWFrO2Nhc2Uic3BhbiI6YnJlYWs7Y2FzZSJhbGlnbm1lbnQiOmJyZWFrO2Nhc2UiYm9yZGVycyI6YnJlYWs7Y2FzZSJib3JkZXIiOmJyZWFrO2Nhc2UiZm9udCI6aWYoc1swXS5zbGljZSgtMik9PT0iLz4iKWJyZWFrO3NbMV09PT0iLyI/Yis9dC5zbGljZShOLHMuaW5kZXgpOk49cy5pbmRleCtzWzBdLmxlbmd0aDticmVhaztjYXNlImludGVyaW9yIjppZighci5jZWxsU3R5bGVzKWJyZWFrO1AuSW50ZXJpb3I9UXIoc1swXSk7YnJlYWs7Y2FzZSJwcm90ZWN0aW9uIjpicmVhaztjYXNlImF1dGhvciI6Y2FzZSJ0aXRsZSI6Y2FzZSJkZXNjcmlwdGlvbiI6Y2FzZSJjcmVhdGVkIjpjYXNlImtleXdvcmRzIjpjYXNlInN1YmplY3QiOmNhc2UiY2F0ZWdvcnkiOmNhc2UiY29tcGFueSI6Y2FzZSJsYXN0YXV0aG9yIjpjYXNlImxhc3RzYXZlZCI6Y2FzZSJsYXN0cHJpbnRlZCI6Y2FzZSJ2ZXJzaW9uIjpjYXNlInJldmlzaW9uIjpjYXNlInRvdGFsdGltZSI6Y2FzZSJoeXBlcmxpbmtiYXNlIjpjYXNlIm1hbmFnZXIiOmNhc2UiY29udGVudHN0YXR1cyI6Y2FzZSJpZGVudGlmaWVyIjpjYXNlImxhbmd1YWdlIjpjYXNlImFwcG5hbWUiOmlmKHNbMF0uc2xpY2UoLTIpPT09Ii8+IilicmVhaztzWzFdPT09Ii8iP1FvKEIsd2UsdC5zbGljZShHLHMuaW5kZXgpKTpHPXMuaW5kZXgrc1swXS5sZW5ndGg7YnJlYWs7Y2FzZSJwYXJhZ3JhcGhzIjpicmVhaztjYXNlInN0eWxlcyI6Y2FzZSJ3b3JrYm9vayI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIGMucHVzaChbc1szXSwhMV0pO2JyZWFrO2Nhc2UiY29tbWVudCI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKTtVdihxKSxuZS5wdXNoKHEpfWVsc2UgYy5wdXNoKFtzWzNdLCExXSksbz1RcihzWzBdKSxGZShvLlNob3dBbHdheXN8fCIwIil8fChuZS5oaWRkZW49ITApLHE9e2E6by5BdXRob3J9O2JyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIGlmKHNbMF0uY2hhckF0KHNbMF0ubGVuZ3RoLTIpIT09Ii8iKXt2YXIgSj1RcihzWzBdKTt4WyIhYXV0b2ZpbHRlciJdPXtyZWY6cWEoSi5SYW5nZSkucmVwbGFjZSgvXCQvZywiIil9LGMucHVzaChbc1szXSwhMF0pfWJyZWFrO2Nhc2UibmFtZSI6YnJlYWs7Y2FzZSJkYXRhdmFsaWRhdGlvbiI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIHNbMF0uY2hhckF0KHNbMF0ubGVuZ3RoLTIpIT09Ii8iJiZjLnB1c2goW3NbM10sITBdKTticmVhaztjYXNlInBpeGVsc3BlcmluY2giOmJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6Y2FzZSJkb2N1bWVudHByb3BlcnRpZXMiOmNhc2UiY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIjpjYXNlIm9mZmljZWRvY3VtZW50c2V0dGluZ3MiOmNhc2UicGl2b3R0YWJsZSI6Y2FzZSJwaXZvdGNhY2hlIjpjYXNlIm5hbWVzIjpjYXNlIm1hcGluZm8iOmNhc2UicGFnZWJyZWFrcyI6Y2FzZSJxdWVyeXRhYmxlIjpjYXNlInNvcnRpbmciOmNhc2Uic2NoZW1hIjpjYXNlImNvbmRpdGlvbmFsZm9ybWF0dGluZyI6Y2FzZSJzbWFydHRhZ3R5cGUiOmNhc2Uic21hcnR0YWdzIjpjYXNlImV4Y2Vsd29ya2Jvb2siOmNhc2Uid29ya2Jvb2tvcHRpb25zIjpjYXNlIndvcmtzaGVldG9wdGlvbnMiOmlmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSl9ZWxzZSBzWzBdLmNoYXJBdChzWzBdLmxlbmd0aC0yKSE9PSIvIiYmYy5wdXNoKFtzWzNdLCEwXSk7YnJlYWs7Y2FzZSJudWxsIjpicmVhaztkZWZhdWx0OmlmKGMubGVuZ3RoPT0wJiZzWzNdPT0iZG9jdW1lbnQifHxjLmxlbmd0aD09MCYmc1szXT09InVvZiIpcmV0dXJuIE9mKHQscik7dmFyIHJlPSEwO3N3aXRjaChjW2MubGVuZ3RoLTFdWzBdKXtjYXNlIm9mZmljZWRvY3VtZW50c2V0dGluZ3MiOnN3aXRjaChzWzNdKXtjYXNlImFsbG93cG5nIjpicmVhaztjYXNlInJlbW92ZXBlcnNvbmFsaW5mb3JtYXRpb24iOmJyZWFrO2Nhc2UiZG93bmxvYWRjb21wb25lbnRzIjpicmVhaztjYXNlImxvY2F0aW9ub2Zjb21wb25lbnRzIjpicmVhaztjYXNlImNvbG9ycyI6YnJlYWs7Y2FzZSJjb2xvciI6YnJlYWs7Y2FzZSJpbmRleCI6YnJlYWs7Y2FzZSJyZ2IiOmJyZWFrO2Nhc2UidGFyZ2V0c2NyZWVuc2l6ZSI6YnJlYWs7Y2FzZSJyZWFkb25seXJlY29tbWVuZGVkIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6c3dpdGNoKHNbM10pe2Nhc2UidG9vbGJhciI6YnJlYWs7Y2FzZSJoaWRlb2ZmaWNlbG9nbyI6YnJlYWs7Y2FzZSJzcHJlYWRzaGVldGF1dG9maXQiOmJyZWFrO2Nhc2UibGFiZWwiOmJyZWFrO2Nhc2UiY2FwdGlvbiI6YnJlYWs7Y2FzZSJtYXhoZWlnaHQiOmJyZWFrO2Nhc2UibWF4d2lkdGgiOmJyZWFrO2Nhc2UibmV4dHNoZWV0bnVtYmVyIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiZXhjZWx3b3JrYm9vayI6c3dpdGNoKHNbM10pe2Nhc2UiZGF0ZTE5MDQiOlouV0JQcm9wcy5kYXRlMTkwND0hMDticmVhaztjYXNlImhpZGVob3Jpem9udGFsc2Nyb2xsYmFyIjpicmVhaztjYXNlImhpZGV2ZXJ0aWNhbHNjcm9sbGJhciI6YnJlYWs7Y2FzZSJoaWRld29ya2Jvb2t0YWJzIjpicmVhaztjYXNlIndpbmRvd2hlaWdodCI6YnJlYWs7Y2FzZSJ3aW5kb3d3aWR0aCI6YnJlYWs7Y2FzZSJ3aW5kb3d0b3B4IjpicmVhaztjYXNlIndpbmRvd3RvcHkiOmJyZWFrO2Nhc2UidGFicmF0aW8iOmJyZWFrO2Nhc2UicHJvdGVjdHN0cnVjdHVyZSI6YnJlYWs7Y2FzZSJwcm90ZWN0d2luZG93IjpicmVhaztjYXNlInByb3RlY3R3aW5kb3dzIjpicmVhaztjYXNlImFjdGl2ZXNoZWV0IjpicmVhaztjYXNlImRpc3BsYXlpbmtub3RlcyI6YnJlYWs7Y2FzZSJmaXJzdHZpc2libGVzaGVldCI6YnJlYWs7Y2FzZSJzdXBib29rIjpicmVhaztjYXNlInNoZWV0bmFtZSI6YnJlYWs7Y2FzZSJzaGVldGluZGV4IjpicmVhaztjYXNlInNoZWV0aW5kZXhmaXJzdCI6YnJlYWs7Y2FzZSJzaGVldGluZGV4bGFzdCI6YnJlYWs7Y2FzZSJkbGwiOmJyZWFrO2Nhc2UiYWNjZXB0bGFiZWxzaW5mb3JtdWxhcyI6YnJlYWs7Y2FzZSJkb25vdHNhdmVsaW5rdmFsdWVzIjpicmVhaztjYXNlIml0ZXJhdGlvbiI6YnJlYWs7Y2FzZSJtYXhpdGVyYXRpb25zIjpicmVhaztjYXNlIm1heGNoYW5nZSI6YnJlYWs7Y2FzZSJwYXRoIjpicmVhaztjYXNlInhjdCI6YnJlYWs7Y2FzZSJjb3VudCI6YnJlYWs7Y2FzZSJzZWxlY3RlZHNoZWV0cyI6YnJlYWs7Y2FzZSJjYWxjdWxhdGlvbiI6YnJlYWs7Y2FzZSJ1bmNhbGNlZCI6YnJlYWs7Y2FzZSJzdGFydHVwcHJvbXB0IjpicmVhaztjYXNlImNybiI6YnJlYWs7Y2FzZSJleHRlcm5uYW1lIjpicmVhaztjYXNlImZvcm11bGEiOmJyZWFrO2Nhc2UiY29sZmlyc3QiOmJyZWFrO2Nhc2UiY29sbGFzdCI6YnJlYWs7Y2FzZSJ3YW50YWR2aXNlIjpicmVhaztjYXNlImJvb2xlYW4iOmJyZWFrO2Nhc2UiZXJyb3IiOmJyZWFrO2Nhc2UidGV4dCI6YnJlYWs7Y2FzZSJvbGUiOmJyZWFrO2Nhc2Uibm9hdXRvcmVjb3ZlciI6YnJlYWs7Y2FzZSJwdWJsaXNob2JqZWN0cyI6YnJlYWs7Y2FzZSJkb25vdGNhbGN1bGF0ZWJlZm9yZXNhdmUiOmJyZWFrO2Nhc2UibnVtYmVyIjpicmVhaztjYXNlInJlZm1vZGVyMWMxIjpicmVhaztjYXNlImVtYmVkc2F2ZXNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlIndvcmtib29rb3B0aW9ucyI6c3dpdGNoKHNbM10pe2Nhc2Uib3djdmVyc2lvbiI6YnJlYWs7Y2FzZSJoZWlnaHQiOmJyZWFrO2Nhc2Uid2lkdGgiOmJyZWFrO2RlZmF1bHQ6cmU9ITF9YnJlYWs7Y2FzZSJ3b3Jrc2hlZXRvcHRpb25zIjpzd2l0Y2goc1szXSl7Y2FzZSJ2aXNpYmxlIjppZihzWzBdLnNsaWNlKC0yKSE9PSIvPiIpaWYoc1sxXT09PSIvIilzd2l0Y2godC5zbGljZShHLHMuaW5kZXgpKXtjYXNlIlNoZWV0SGlkZGVuIjpPZS5IaWRkZW49MTticmVhaztjYXNlIlNoZWV0VmVyeUhpZGRlbiI6T2UuSGlkZGVuPTI7YnJlYWt9ZWxzZSBHPXMuaW5kZXgrc1swXS5sZW5ndGg7YnJlYWs7Y2FzZSJoZWFkZXIiOnhbIiFtYXJnaW5zIl18fFh0KHhbIiFtYXJnaW5zIl09e30sInhsbWwiKSxpc05hTigrb2Uoc1swXSkuTWFyZ2luKXx8KHhbIiFtYXJnaW5zIl0uaGVhZGVyPStvZShzWzBdKS5NYXJnaW4pO2JyZWFrO2Nhc2UiZm9vdGVyIjp4WyIhbWFyZ2lucyJdfHxYdCh4WyIhbWFyZ2lucyJdPXt9LCJ4bG1sIiksaXNOYU4oK29lKHNbMF0pLk1hcmdpbil8fCh4WyIhbWFyZ2lucyJdLmZvb3Rlcj0rb2Uoc1swXSkuTWFyZ2luKTticmVhaztjYXNlInBhZ2VtYXJnaW5zIjp2YXIgZWU9b2Uoc1swXSk7eFsiIW1hcmdpbnMiXXx8WHQoeFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLGlzTmFOKCtlZS5Ub3ApfHwoeFsiIW1hcmdpbnMiXS50b3A9K2VlLlRvcCksaXNOYU4oK2VlLkxlZnQpfHwoeFsiIW1hcmdpbnMiXS5sZWZ0PStlZS5MZWZ0KSxpc05hTigrZWUuUmlnaHQpfHwoeFsiIW1hcmdpbnMiXS5yaWdodD0rZWUuUmlnaHQpLGlzTmFOKCtlZS5Cb3R0b20pfHwoeFsiIW1hcmdpbnMiXS5ib3R0b209K2VlLkJvdHRvbSk7YnJlYWs7Y2FzZSJkaXNwbGF5cmlnaHR0b2xlZnQiOlouVmlld3N8fChaLlZpZXdzPVtdKSxaLlZpZXdzWzBdfHwoWi5WaWV3c1swXT17fSksWi5WaWV3c1swXS5SVEw9ITA7YnJlYWs7Y2FzZSJmcmVlemVwYW5lcyI6YnJlYWs7Y2FzZSJmcm96ZW5ub3NwbGl0IjpicmVhaztjYXNlInNwbGl0aG9yaXpvbnRhbCI6Y2FzZSJzcGxpdHZlcnRpY2FsIjpicmVhaztjYXNlImRvbm90ZGlzcGxheWdyaWRsaW5lcyI6YnJlYWs7Y2FzZSJhY3RpdmVyb3ciOmJyZWFrO2Nhc2UiYWN0aXZlY29sIjpicmVhaztjYXNlInRvcHJvd2JvdHRvbXBhbmUiOmJyZWFrO2Nhc2UibGVmdGNvbHVtbnJpZ2h0cGFuZSI6YnJlYWs7Y2FzZSJ1bnN5bmNlZCI6YnJlYWs7Y2FzZSJwcmludCI6YnJlYWs7Y2FzZSJwcmludGVycm9ycyI6YnJlYWs7Y2FzZSJwYW5lcyI6YnJlYWs7Y2FzZSJzY2FsZSI6YnJlYWs7Y2FzZSJwYW5lIjpicmVhaztjYXNlIm51bWJlciI6YnJlYWs7Y2FzZSJsYXlvdXQiOmJyZWFrO2Nhc2UicGFnZXNldHVwIjpicmVhaztjYXNlInNlbGVjdGVkIjpicmVhaztjYXNlInByb3RlY3RvYmplY3RzIjpicmVhaztjYXNlImVuYWJsZXNlbGVjdGlvbiI6YnJlYWs7Y2FzZSJwcm90ZWN0c2NlbmFyaW9zIjpicmVhaztjYXNlInZhbGlkcHJpbnRlcmluZm8iOmJyZWFrO2Nhc2UiaG9yaXpvbnRhbHJlc29sdXRpb24iOmJyZWFrO2Nhc2UidmVydGljYWxyZXNvbHV0aW9uIjpicmVhaztjYXNlIm51bWJlcm9mY29waWVzIjpicmVhaztjYXNlImFjdGl2ZXBhbmUiOmJyZWFrO2Nhc2UidG9wcm93dmlzaWJsZSI6YnJlYWs7Y2FzZSJsZWZ0Y29sdW1udmlzaWJsZSI6YnJlYWs7Y2FzZSJmaXR0b3BhZ2UiOmJyZWFrO2Nhc2UicmFuZ2VzZWxlY3Rpb24iOmJyZWFrO2Nhc2UicGFwZXJzaXplaW5kZXgiOmJyZWFrO2Nhc2UicGFnZWxheW91dHpvb20iOmJyZWFrO2Nhc2UicGFnZWJyZWFrem9vbSI6YnJlYWs7Y2FzZSJmaWx0ZXJvbiI6YnJlYWs7Y2FzZSJmaXR3aWR0aCI6YnJlYWs7Y2FzZSJmaXRoZWlnaHQiOmJyZWFrO2Nhc2UiY29tbWVudHNsYXlvdXQiOmJyZWFrO2Nhc2Uiem9vbSI6YnJlYWs7Y2FzZSJsZWZ0dG9yaWdodCI6YnJlYWs7Y2FzZSJncmlkbGluZXMiOmJyZWFrO2Nhc2UiYWxsb3dzb3J0IjpicmVhaztjYXNlImFsbG93ZmlsdGVyIjpicmVhaztjYXNlImFsbG93aW5zZXJ0cm93cyI6YnJlYWs7Y2FzZSJhbGxvd2RlbGV0ZXJvd3MiOmJyZWFrO2Nhc2UiYWxsb3dpbnNlcnRjb2xzIjpicmVhaztjYXNlImFsbG93ZGVsZXRlY29scyI6YnJlYWs7Y2FzZSJhbGxvd2luc2VydGh5cGVybGlua3MiOmJyZWFrO2Nhc2UiYWxsb3dmb3JtYXRjZWxscyI6YnJlYWs7Y2FzZSJhbGxvd3NpemVjb2xzIjpicmVhaztjYXNlImFsbG93c2l6ZXJvd3MiOmJyZWFrO2Nhc2Uibm9zdW1tYXJ5cm93c2JlbG93ZGV0YWlsIjp4WyIhb3V0bGluZSJdfHwoeFsiIW91dGxpbmUiXT17fSkseFsiIW91dGxpbmUiXS5hYm92ZT0hMDticmVhaztjYXNlInRhYmNvbG9yaW5kZXgiOmJyZWFrO2Nhc2UiZG9ub3RkaXNwbGF5aGVhZGluZ3MiOmJyZWFrO2Nhc2Uic2hvd3BhZ2VsYXlvdXR6b29tIjpicmVhaztjYXNlIm5vc3VtbWFyeWNvbHVtbnNyaWdodGRldGFpbCI6eFsiIW91dGxpbmUiXXx8KHhbIiFvdXRsaW5lIl09e30pLHhbIiFvdXRsaW5lIl0ubGVmdD0hMDticmVhaztjYXNlImJsYWNrYW5kd2hpdGUiOmJyZWFrO2Nhc2UiZG9ub3RkaXNwbGF5emVyb3MiOmJyZWFrO2Nhc2UiZGlzcGxheXBhZ2VicmVhayI6YnJlYWs7Y2FzZSJyb3djb2xoZWFkaW5ncyI6YnJlYWs7Y2FzZSJkb25vdGRpc3BsYXlvdXRsaW5lIjpicmVhaztjYXNlIm5vb3JpZW50YXRpb24iOmJyZWFrO2Nhc2UiYWxsb3d1c2VwaXZvdHRhYmxlcyI6YnJlYWs7Y2FzZSJ6ZXJvaGVpZ2h0IjpicmVhaztjYXNlInZpZXdhYmxlcmFuZ2UiOmJyZWFrO2Nhc2Uic2VsZWN0aW9uIjpicmVhaztjYXNlInByb3RlY3Rjb250ZW50cyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlInBpdm90dGFibGUiOmNhc2UicGl2b3RjYWNoZSI6c3dpdGNoKHNbM10pe2Nhc2UiaW1tZWRpYXRlaXRlbXNvbmRyb3AiOmJyZWFrO2Nhc2Uic2hvd3BhZ2VtdWx0aXBsZWl0ZW1sYWJlbCI6YnJlYWs7Y2FzZSJjb21wYWN0cm93aW5kZW50IjpicmVhaztjYXNlImxvY2F0aW9uIjpicmVhaztjYXNlInBpdm90ZmllbGQiOmJyZWFrO2Nhc2Uib3JpZW50YXRpb24iOmJyZWFrO2Nhc2UibGF5b3V0Zm9ybSI6YnJlYWs7Y2FzZSJsYXlvdXRzdWJ0b3RhbGxvY2F0aW9uIjpicmVhaztjYXNlImxheW91dGNvbXBhY3Ryb3ciOmJyZWFrO2Nhc2UicG9zaXRpb24iOmJyZWFrO2Nhc2UicGl2b3RpdGVtIjpicmVhaztjYXNlImRhdGF0eXBlIjpicmVhaztjYXNlImRhdGFmaWVsZCI6YnJlYWs7Y2FzZSJzb3VyY2VuYW1lIjpicmVhaztjYXNlInBhcmVudGZpZWxkIjpicmVhaztjYXNlInB0bGluZWl0ZW1zIjpicmVhaztjYXNlInB0bGluZWl0ZW0iOmJyZWFrO2Nhc2UiY291bnRvZnNhbWVpdGVtcyI6YnJlYWs7Y2FzZSJpdGVtIjpicmVhaztjYXNlIml0ZW10eXBlIjpicmVhaztjYXNlInB0c291cmNlIjpicmVhaztjYXNlImNhY2hlaW5kZXgiOmJyZWFrO2Nhc2UiY29uc29saWRhdGlvbnJlZmVyZW5jZSI6YnJlYWs7Y2FzZSJmaWxlbmFtZSI6YnJlYWs7Y2FzZSJyZWZlcmVuY2UiOmJyZWFrO2Nhc2Uibm9jb2x1bW5ncmFuZCI6YnJlYWs7Y2FzZSJub3Jvd2dyYW5kIjpicmVhaztjYXNlImJsYW5rbGluZWFmdGVyaXRlbXMiOmJyZWFrO2Nhc2UiaGlkZGVuIjpicmVhaztjYXNlInN1YnRvdGFsIjpicmVhaztjYXNlImJhc2VmaWVsZCI6YnJlYWs7Y2FzZSJtYXBjaGlsZGl0ZW1zIjpicmVhaztjYXNlImZ1bmN0aW9uIjpicmVhaztjYXNlInJlZnJlc2hvbmZpbGVvcGVuIjpicmVhaztjYXNlInByaW50c2V0dGl0bGVzIjpicmVhaztjYXNlIm1lcmdlbGFiZWxzIjpicmVhaztjYXNlImRlZmF1bHR2ZXJzaW9uIjpicmVhaztjYXNlInJlZnJlc2huYW1lIjpicmVhaztjYXNlInJlZnJlc2hkYXRlIjpicmVhaztjYXNlInJlZnJlc2hkYXRlY29weSI6YnJlYWs7Y2FzZSJ2ZXJzaW9ubGFzdHJlZnJlc2giOmJyZWFrO2Nhc2UidmVyc2lvbmxhc3R1cGRhdGUiOmJyZWFrO2Nhc2UidmVyc2lvbnVwZGF0ZWFibGVtaW4iOmJyZWFrO2Nhc2UidmVyc2lvbnJlZnJlc2hhYmxlbWluIjpicmVhaztjYXNlImNhbGN1bGF0aW9uIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UicGFnZWJyZWFrcyI6c3dpdGNoKHNbM10pe2Nhc2UiY29sYnJlYWtzIjpicmVhaztjYXNlImNvbGJyZWFrIjpicmVhaztjYXNlInJvd2JyZWFrcyI6YnJlYWs7Y2FzZSJyb3dicmVhayI6YnJlYWs7Y2FzZSJjb2xzdGFydCI6YnJlYWs7Y2FzZSJjb2xlbmQiOmJyZWFrO2Nhc2Uicm93ZW5kIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6c3dpdGNoKHNbM10pe2Nhc2UiYXV0b2ZpbHRlcmNvbHVtbiI6YnJlYWs7Y2FzZSJhdXRvZmlsdGVyY29uZGl0aW9uIjpicmVhaztjYXNlImF1dG9maWx0ZXJhbmQiOmJyZWFrO2Nhc2UiYXV0b2ZpbHRlcm9yIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UicXVlcnl0YWJsZSI6c3dpdGNoKHNbM10pe2Nhc2UiaWQiOmJyZWFrO2Nhc2UiYXV0b2Zvcm1hdGZvbnQiOmJyZWFrO2Nhc2UiYXV0b2Zvcm1hdHBhdHRlcm4iOmJyZWFrO2Nhc2UicXVlcnlzb3VyY2UiOmJyZWFrO2Nhc2UicXVlcnl0eXBlIjpicmVhaztjYXNlImVuYWJsZXJlZGlyZWN0aW9ucyI6YnJlYWs7Y2FzZSJyZWZyZXNoZWRpbnhsOSI6YnJlYWs7Y2FzZSJ1cmxzdHJpbmciOmJyZWFrO2Nhc2UiaHRtbHRhYmxlcyI6YnJlYWs7Y2FzZSJjb25uZWN0aW9uIjpicmVhaztjYXNlImNvbW1hbmR0ZXh0IjpicmVhaztjYXNlInJlZnJlc2hpbmZvIjpicmVhaztjYXNlIm5vdGl0bGVzIjpicmVhaztjYXNlIm5leHRpZCI6YnJlYWs7Y2FzZSJjb2x1bW5pbmZvIjpicmVhaztjYXNlIm92ZXJ3cml0ZWNlbGxzIjpicmVhaztjYXNlImRvbm90cHJvbXB0Zm9yZmlsZSI6YnJlYWs7Y2FzZSJ0ZXh0d2l6YXJkc2V0dGluZ3MiOmJyZWFrO2Nhc2Uic291cmNlIjpicmVhaztjYXNlIm51bWJlciI6YnJlYWs7Y2FzZSJkZWNpbWFsIjpicmVhaztjYXNlInRob3VzYW5kc2VwYXJhdG9yIjpicmVhaztjYXNlInRyYWlsaW5nbWludXNudW1iZXJzIjpicmVhaztjYXNlImZvcm1hdHNldHRpbmdzIjpicmVhaztjYXNlImZpZWxkdHlwZSI6YnJlYWs7Y2FzZSJkZWxpbWl0ZXJzIjpicmVhaztjYXNlInRhYiI6YnJlYWs7Y2FzZSJjb21tYSI6YnJlYWs7Y2FzZSJhdXRvZm9ybWF0bmFtZSI6YnJlYWs7Y2FzZSJ2ZXJzaW9ubGFzdGVkaXQiOmJyZWFrO2Nhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiZGF0YXZhbGlkYXRpb24iOnN3aXRjaChzWzNdKXtjYXNlInJhbmdlIjpicmVhaztjYXNlInR5cGUiOmJyZWFrO2Nhc2UibWluIjpicmVhaztjYXNlIm1heCI6YnJlYWs7Y2FzZSJzb3J0IjpicmVhaztjYXNlImRlc2NlbmRpbmciOmJyZWFrO2Nhc2Uib3JkZXIiOmJyZWFrO2Nhc2UiY2FzZXNlbnNpdGl2ZSI6YnJlYWs7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJlcnJvcnN0eWxlIjpicmVhaztjYXNlImVycm9ybWVzc2FnZSI6YnJlYWs7Y2FzZSJlcnJvcnRpdGxlIjpicmVhaztjYXNlImlucHV0bWVzc2FnZSI6YnJlYWs7Y2FzZSJpbnB1dHRpdGxlIjpicmVhaztjYXNlImNvbWJvaGlkZSI6YnJlYWs7Y2FzZSJpbnB1dGhpZGUiOmJyZWFrO2Nhc2UiY29uZGl0aW9uIjpicmVhaztjYXNlInF1YWxpZmllciI6YnJlYWs7Y2FzZSJ1c2VibGFuayI6YnJlYWs7Y2FzZSJ2YWx1ZTEiOmJyZWFrO2Nhc2UidmFsdWUyIjpicmVhaztjYXNlImZvcm1hdCI6YnJlYWs7Y2FzZSJjZWxscmFuZ2VsaXN0IjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2Uic29ydGluZyI6Y2FzZSJjb25kaXRpb25hbGZvcm1hdHRpbmciOnN3aXRjaChzWzNdKXtjYXNlInJhbmdlIjpicmVhaztjYXNlInR5cGUiOmJyZWFrO2Nhc2UibWluIjpicmVhaztjYXNlIm1heCI6YnJlYWs7Y2FzZSJzb3J0IjpicmVhaztjYXNlImRlc2NlbmRpbmciOmJyZWFrO2Nhc2Uib3JkZXIiOmJyZWFrO2Nhc2UiY2FzZXNlbnNpdGl2ZSI6YnJlYWs7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJlcnJvcnN0eWxlIjpicmVhaztjYXNlImVycm9ybWVzc2FnZSI6YnJlYWs7Y2FzZSJlcnJvcnRpdGxlIjpicmVhaztjYXNlImNlbGxyYW5nZWxpc3QiOmJyZWFrO2Nhc2UiaW5wdXRtZXNzYWdlIjpicmVhaztjYXNlImlucHV0dGl0bGUiOmJyZWFrO2Nhc2UiY29tYm9oaWRlIjpicmVhaztjYXNlImlucHV0aGlkZSI6YnJlYWs7Y2FzZSJjb25kaXRpb24iOmJyZWFrO2Nhc2UicXVhbGlmaWVyIjpicmVhaztjYXNlInVzZWJsYW5rIjpicmVhaztjYXNlInZhbHVlMSI6YnJlYWs7Y2FzZSJ2YWx1ZTIiOmJyZWFrO2Nhc2UiZm9ybWF0IjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UibWFwaW5mbyI6Y2FzZSJzY2hlbWEiOmNhc2UiZGF0YSI6c3dpdGNoKHNbM10pe2Nhc2UibWFwIjpicmVhaztjYXNlImVudHJ5IjpicmVhaztjYXNlInJhbmdlIjpicmVhaztjYXNlInhwYXRoIjpicmVhaztjYXNlImZpZWxkIjpicmVhaztjYXNlInhzZHR5cGUiOmJyZWFrO2Nhc2UiZmlsdGVyb24iOmJyZWFrO2Nhc2UiYWdncmVnYXRlIjpicmVhaztjYXNlImVsZW1lbnR0eXBlIjpicmVhaztjYXNlImF0dHJpYnV0ZXR5cGUiOmJyZWFrO2Nhc2Uic2NoZW1hIjpjYXNlImVsZW1lbnQiOmNhc2UiY29tcGxleHR5cGUiOmNhc2UiZGF0YXR5cGUiOmNhc2UiYWxsIjpjYXNlImF0dHJpYnV0ZSI6Y2FzZSJleHRlbmRzIjpicmVhaztjYXNlInJvdyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlInNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpyZT0hMTticmVha31pZihyZXx8c1szXS5tYXRjaCgvIVxbQ0RBVEEvKSlicmVhaztpZighY1tjLmxlbmd0aC0xXVsxXSl0aHJvdyJVbnJlY29nbml6ZWQgdGFnOiAiK3NbM10rInwiK2Muam9pbigifCIpO2lmKGNbYy5sZW5ndGgtMV1bMF09PT0iY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIil7aWYoc1swXS5zbGljZSgtMik9PT0iLz4iKWJyZWFrO3NbMV09PT0iLyI/TnYoTCx3ZSxpZSx0LnNsaWNlKEcscy5pbmRleCkpOihpZT1zLEc9cy5pbmRleCtzWzBdLmxlbmd0aCk7YnJlYWt9aWYoci5XVEYpdGhyb3ciVW5yZWNvZ25pemVkIHRhZzogIitzWzNdKyJ8IitjLmpvaW4oInwiKX12YXIga2U9e307cmV0dXJuIXIuYm9va1NoZWV0cyYmIXIuYm9va1Byb3BzJiYoa2UuU2hlZXRzPWwpLGtlLlNoZWV0TmFtZXM9dSxrZS5Xb3JrYm9vaz1aLGtlLlNTRj1VZShUZSksa2UuUHJvcHM9QixrZS5DdXN0cHJvcHM9TCxrZS5ib29rVHlwZT0ieGxtbCIsa2V9ZnVuY3Rpb24geW4oZSxhKXtzd2l0Y2goRG4oYT1hfHx7fSksYS50eXBlfHwiYmFzZTY0Iil7Y2FzZSJiYXNlNjQiOnJldHVybiBBbihEcihlKSxhKTtjYXNlImJpbmFyeSI6Y2FzZSJidWZmZXIiOmNhc2UiZmlsZSI6cmV0dXJuIEFuKGUsYSk7Y2FzZSJhcnJheSI6cmV0dXJuIEFuKGZhKGUpLGEpfX1mdW5jdGlvbiBIdihlKXt2YXIgYT17fSxyPWUuY29udGVudDtpZihyLmw9MjgsYS5BbnNpVXNlclR5cGU9ci5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKSxhLkFuc2lDbGlwYm9hcmRGb3JtYXQ9Um8ociksci5sZW5ndGgtci5sPD00KXJldHVybiBhO3ZhciB0PXIucmVhZF9zaGlmdCg0KTtpZih0PT0wfHx0PjQwfHwoci5sLT00LGEuUmVzZXJ2ZWQxPXIucmVhZF9zaGlmdCgwLCJscHN0ci1hbnNpIiksci5sZW5ndGgtci5sPD00KXx8KHQ9ci5yZWFkX3NoaWZ0KDQpLHQhPT0xOTA3NTA1NjUyKXx8KGEuVW5pY29kZUNsaXBib2FyZEZvcm1hdD1PbyhyKSx0PXIucmVhZF9zaGlmdCg0KSx0PT0wfHx0PjQwKSlyZXR1cm4gYTtyLmwtPTQsYS5SZXNlcnZlZDI9ci5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpfXZhciBXdj1bNjAsMTA4NCwyMDY2LDIxNjUsMjE3NV07ZnVuY3Rpb24gVnYoZSxhLHIsdCxuKXt2YXIgaT10LGY9W10scz1yLnNsaWNlKHIubCxyLmwraSk7aWYobiYmbi5lbmMmJm4uZW5jLmluc2l0dSYmcy5sZW5ndGg+MClzd2l0Y2goZSl7Y2FzZSA5OmNhc2UgNTIxOmNhc2UgMTAzMzpjYXNlIDIwNTc6Y2FzZSA0NzpjYXNlIDQwNTpjYXNlIDIyNTpjYXNlIDQwNjpjYXNlIDMxMjpjYXNlIDQwNDpjYXNlIDEwOmJyZWFrO2Nhc2UgMTMzOmJyZWFrO2RlZmF1bHQ6bi5lbmMuaW5zaXR1KHMpfWYucHVzaChzKSxyLmwrPWk7Zm9yKHZhciBjPWRhKHIsci5sKSxvPVNuW2NdLGw9MDtvIT1udWxsJiZXdi5pbmRleE9mKGMpPi0xOylpPWRhKHIsci5sKzIpLGw9ci5sKzQsYz09MjA2Nj9sKz00OihjPT0yMTY1fHxjPT0yMTc1KSYmKGwrPTEyKSxzPXIuc2xpY2UobCxyLmwrNCtpKSxmLnB1c2gocyksci5sKz00K2ksbz1TbltjPWRhKHIsci5sKV07dmFyIHU9eWEoZik7c3IodSwwKTt2YXIgeD0wO3UubGVucz1bXTtmb3IodmFyIGg9MDtoPGYubGVuZ3RoOysraCl1LmxlbnMucHVzaCh4KSx4Kz1mW2hdLmxlbmd0aDtpZih1Lmxlbmd0aDx0KXRocm93IlhMUyBSZWNvcmQgMHgiK2UudG9TdHJpbmcoMTYpKyIgVHJ1bmNhdGVkOiAiK3UubGVuZ3RoKyIgPCAiK3Q7cmV0dXJuIGEuZih1LHUubGVuZ3RoLG4pfWZ1bmN0aW9uIG5hKGUsYSxyKXtpZihlLnQhPT0ieiImJmUuWEYpe3ZhciB0PTA7dHJ5e3Q9ZS56fHxlLlhGLm51bUZtdElkfHwwLGEuY2VsbE5GJiZlLno9PW51bGwmJihlLno9VGVbdF0pfWNhdGNoKGkpe2lmKGEuV1RGKXRocm93IGl9aWYoIWF8fGEuY2VsbFRleHQhPT0hMSl0cnl7ZS50PT09ImUiP2Uudz1lLnd8fGJyW2Uudl06dD09PTB8fHQ9PSJHZW5lcmFsIj9lLnQ9PT0ibiI/KGUudnwwKT09PWUudj9lLnc9ZS52LnRvU3RyaW5nKDEwKTplLnc9QXQoZS52KTplLnc9UGEoZS52KTplLnc9UnIodCxlLnYse2RhdGUxOTA0OiEhcixkYXRlTkY6YSYmYS5kYXRlTkZ9KX1jYXRjaChpKXtpZihhLldURil0aHJvdyBpfWlmKGEuY2VsbERhdGVzJiZ0JiZlLnQ9PSJuIiYmWnIoVGVbdF18fFN0cmluZyh0KSkpe3ZhciBuPWNhKGUudisocj8xNDYyOjApKTtuJiYoZS50PSJkIixlLnY9bmV3IERhdGUoRGF0ZS5VVEMobi55LG4ubS0xLG4uZCxuLkgsbi5NLG4uUyxuLnUpKSl9fX1mdW5jdGlvbiBDMChlLGEscil7cmV0dXJue3Y6ZSxpeGZlOmEsdDpyfX12YXIgR3Y9WyJub25lIiwidGhpbiIsIm1lZGl1bSIsImRhc2hlZCIsImRvdHRlZCIsInRoaWNrIiwiZG91YmxlIiwiaGFpciIsIm1lZGl1bURhc2hlZCIsImRhc2hEb3QiLCJtZWRpdW1EYXNoRG90IiwiZGFzaERvdERvdCIsIm1lZGl1bURhc2hEb3REb3QiLCJzbGFudERhc2hEb3QiXSxrZj1bbnVsbCwibGVmdCIsImNlbnRlciIsInJpZ2h0IiwiZmlsbCIsImp1c3RpZnkiLCJjZW50ZXJDb250aW51b3VzIiwiZGlzdHJpYnV0ZWQiXSx3Zj1bInRvcCIsImNlbnRlciIsImJvdHRvbSIsImp1c3RpZnkiLCJkaXN0cmlidXRlZCJdO2Z1bmN0aW9uIFh2KGUsYSl7dmFyIHI9ZS5sK2EsdD17fTtyZXR1cm4gYT49MTYmJih0Lng9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lnk9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lnc9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lmg9ZS5yZWFkX3NoaWZ0KDQsImkiKSksZS5sPXIsdH1mdW5jdGlvbiB6dihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTEyJiYodC5jYXRUeXBlPWUucmVhZF9zaGlmdCgyKSx0LnZhbFR5cGU9ZS5yZWFkX3NoaWZ0KDIpLHQuY0NhdD1lLnJlYWRfc2hpZnQoMiksdC5jVmFsPWUucmVhZF9zaGlmdCgyKSx0LmJ1YmJsZVR5cGU9ZS5yZWFkX3NoaWZ0KDIpLHQuY0J1YmJsZT1lLnJlYWRfc2hpZnQoMikpLGUubD1yLHR9ZnVuY3Rpb24gJHYoZSxhLHIpe3ZhciB0PWUubCthLG49e307YT49MiYmKG4uaWQ9ZS5yZWFkX3NoaWZ0KDIpKTt0cnl7ZS5sPHQmJihuLnRleHQ9emEoZSx0LWUubCxyKSl9Y2F0Y2h7ZS5sPXR9cmV0dXJuIGUubD10LG59ZnVuY3Rpb24gS3YoZSxhKXt2YXIgcj1lLmwrYSx0PXt9O3JldHVybiBhPj0yMCYmKHQueD1lLnJlYWRfc2hpZnQoNCwiaSIpLHQueT1lLnJlYWRfc2hpZnQoNCwiaSIpLHQudz1lLnJlYWRfc2hpZnQoNCwiaSIpLHQuaD1lLnJlYWRfc2hpZnQoNCwiaSIpLHQuZG9jaz1lLnJlYWRfc2hpZnQoMSksdC5zcGFjaW5nPWUucmVhZF9zaGlmdCgxKSx0LmZsYWdzPWUucmVhZF9zaGlmdCgyKSksZS5sPXIsdH1mdW5jdGlvbiBqdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTImJih0LmF4aXNUeXBlPWUucmVhZF9zaGlmdCgyKSksZS5sPXIsdH1mdW5jdGlvbiBZdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTMyJiYodC5oQWxpZ249ZS5yZWFkX3NoaWZ0KDEpLHQudkFsaWduPWUucmVhZF9zaGlmdCgxKSx0LmJnTW9kZT1lLnJlYWRfc2hpZnQoMiksdC5jb2xvcj1lLnJlYWRfc2hpZnQoNCksdC54PWUucmVhZF9zaGlmdCg0LCJpIiksdC55PWUucmVhZF9zaGlmdCg0LCJpIiksdC53PWUucmVhZF9zaGlmdCg0LCJpIiksdC5oPWUucmVhZF9zaGlmdCg0LCJpIikpLGUubD1yLHR9ZnVuY3Rpb24gSnYoZSxhKXt2YXIgcj1lLmwrYSx0PXt9O2lmKGE+PTYpe3QuaWQ9ZS5yZWFkX3NoaWZ0KDEpLHQucnQ9ZS5yZWFkX3NoaWZ0KDEpLHQuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpO3ZhciBuPWUucmVhZF9zaGlmdCgyKTt0LmNjZT1uLHQuZm9ybXVsYVJhdz1lLnNsaWNlKGUubCxNYXRoLm1pbihyLGUubCtuKSl9cmV0dXJuIGUubD1yLHR9ZnVuY3Rpb24gUWEoZSl7cmV0dXJuIGZ1bmN0aW9uKHIsdCl7dmFyIG49ci5sK3QsaT17dHlwZTplfTtyZXR1cm4gdD49MiYmKGkuZmxhZ3M9ci5yZWFkX3NoaWZ0KDIpKSxyLmw9bixpfX12YXIgWnY9UWEoImJhckNoYXJ0IikscXY9UWEoImxpbmVDaGFydCIpLFF2PVFhKCJwaWVDaGFydCIpLGUyPVFhKCJhcmVhQ2hhcnQiKSxyMj1RYSgic2NhdHRlckNoYXJ0IiksYTI9UWEoInJhZGFyQ2hhcnQiKSx0Mj1RYSgic3VyZmFjZUNoYXJ0Iik7ZnVuY3Rpb24gbjIoZSxhKXt2YXIgcj17b3B0czp7fX0sdD17fSxuPXt9O2EuZGVuc2UmJihuWyIhZGF0YSJdPVtdKTt2YXIgaT17fSxmPXt9LHM9bnVsbCxjPVtdLG89IiIsbD17fSx1LHg9IiIsaCxnLG0sZCxwPXt9LHc9W10sXyx5LFI9W10sUD1bXSxiPXt9LE49W10sRD17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfSxWaWV3czpbe31dfSxCPXt9LEw9ITEsRz1mdW5jdGlvbihNKXtyZXR1cm4gTTw4P3RhW01dOk08NjQmJk5bTS04XXx8dGFbTV19LGllPWZ1bmN0aW9uKE0pe2lmKE09PW51bGwpcmV0dXJuIG51bGw7dmFyIFk9RyhNKSx2PXtpbmRleGVkOk0saW5kZXg6TX07cmV0dXJuIFkmJih2LnJnYj1qYShZKSksWWEodixPZSl9LG5lPWZ1bmN0aW9uKE0pe2lmKCFNKXJldHVybiBudWxsO3ZhciBZPXt9O3N3aXRjaChNLnhjbHJUeXBlKXtjYXNlIDA6WS5hdXRvPTE7YnJlYWs7Y2FzZSAxOlk9aWUoTS54Y2xyVmFsdWUpfHx7fTticmVhaztjYXNlIDI6WS5yZ2I9amEoTS54Y2xyVmFsdWUpO2JyZWFrO2Nhc2UgMzpZLnRoZW1lPU0ueGNsclZhbHVlO2JyZWFrfXJldHVybiBNLm5UaW50U2hhZGUmJihZLnRpbnQ9TS5uVGludFNoYWRlPjA/TS5uVGludFNoYWRlLzMyNzY3Ok0ublRpbnRTaGFkZS8zMjc2OCksWWEoWSxPZSl9LHE9ZnVuY3Rpb24oTSxZKXtpZighTSlyZXR1cm4gbnVsbDt2YXIgdj17fTtyZXR1cm4gTS5uYW1lJiYodi5uYW1lPU0ubmFtZSksTS5zeiYmKHYuc3o9TS5zeiksTS5ib2xkJiYodi5ib2xkPSEwKSxNLml0YWxpYyYmKHYuaXRhbGljPSEwKSxNLnVuZGVybGluZSYmKHYudW5kZXJsaW5lPU0udW5kZXJsaW5lKSxNLnN0cmlrZSYmKHYuc3RyaWtlPSEwKSxNLm91dGxpbmUmJih2Lm91dGxpbmU9ITApLE0uc2hhZG93JiYodi5zaGFkb3c9ITApLE0uZmFtaWx5IT1udWxsJiYodi5mYW1pbHk9TS5mYW1pbHkpLE0uY2hhcnNldCE9bnVsbCYmKHYuY2hhcnNldD1NLmNoYXJzZXQpLE0udmVydEFsaWduPT0xP3YudmVydEFsaWduPSJzdXBlcnNjcmlwdCI6TS52ZXJ0QWxpZ249PTImJih2LnZlcnRBbGlnbj0ic3Vic2NyaXB0IiksWSYmWS5mb250U2NoZW1lIT1udWxsJiYodi5zY2hlbWU9WS5mb250U2NoZW1lPT0xPyJtYWpvciI6WS5mb250U2NoZW1lPT0yPyJtaW5vciI6Im5vbmUiKSx2LmNvbG9yPW5lKFkmJlkueGZleHRGb250KXx8aWUoTS5pY3YpLHYuY29sb3ImJnYuY29sb3IuYXV0byYmZGVsZXRlIHYuY29sb3Isdn0sbGU9ZnVuY3Rpb24oTSl7aWYoIU0pcmV0dXJuIG51bGw7dmFyIFk9e3BhdHRlcm5UeXBlOk0ucGF0dGVyblR5cGV8fCJub25lIn0sdj1uZShNLnhmZXh0Rm9yZSl8fGllKE0uaWN2Rm9yZSksVD1uZShNLnhmZXh0QmFjayl8fGllKE0uaWN2QmFjayk7cmV0dXJuIHYmJihZLmZnQ29sb3I9diksVCYmKFkuYmdDb2xvcj1UKSxNLmdyYWRpZW50RmlsbCYmKFkuZ3JhZGllbnRGaWxsPU0uZ3JhZGllbnRGaWxsKSxZfSxRPWZ1bmN0aW9uKE0sWSx2KXtpZighTSlyZXR1cm4gbnVsbDt2YXIgVD17c3R5bGU6R3ZbTV18fCJ0aGluIn0saz1uZSh2KXx8aWUoWSk7cmV0dXJuIGsmJihULmNvbG9yPWspLFR9LGdlPWZ1bmN0aW9uKE0pe2lmKCFNKXJldHVybiBudWxsO3ZhciBZPXt9LHY7cmV0dXJuKHY9UShNLmRnTGVmdCxNLmljdkxlZnQsTS54ZmV4dExlZnQpKSYmKFkubGVmdD12KSwodj1RKE0uZGdSaWdodCxNLmljdlJpZ2h0LE0ueGZleHRSaWdodCkpJiYoWS5yaWdodD12KSwodj1RKE0uZGdUb3AsTS5pY3ZUb3AsTS54ZmV4dFRvcCkpJiYoWS50b3A9diksKHY9UShNLmRnQm90dG9tLE0uaWN2Qm90dG9tLE0ueGZleHRCb3R0b20pKSYmKFkuYm90dG9tPXYpLCh2PVEoTS5kZ0RpYWcsTS5pY3ZEaWFnLE0ueGZleHREaWFnKSkmJihZLmRpYWdvbmFsPXYpLE0uZ3JiaXREaWFnJjEmJihZLmRpYWdvbmFsVXA9ITApLE0uZ3JiaXREaWFnJjImJihZLmRpYWdvbmFsRG93bj0hMCkscHIoWSkubGVuZ3RoP1k6bnVsbH0sdWU9ZnVuY3Rpb24oTSl7aWYoIU0pcmV0dXJuIG51bGw7dmFyIFk9e307cmV0dXJuIGtmW00uYWxjXSYmKFkuaG9yaXpvbnRhbD1rZltNLmFsY10pLHdmW00uYWxjVl0mJk0uYWxjViE9MiYmKFkudmVydGljYWw9d2ZbTS5hbGNWXSksTS5mV3JhcCYmKFkud3JhcFRleHQ9ITApLE0uZlNocmlua1RvRml0JiYoWS5zaHJpbmtUb0ZpdD0hMCksTS50cm90JiYoWS50ZXh0Um90YXRpb249TS50cm90KSxNLmNJbmRlbnQmJihZLmluZGVudD1NLmNJbmRlbnQpLE0uaVJlYWRPcmRlciYmKFkucmVhZGluZ09yZGVyPU0uaVJlYWRPcmRlcikscHIoWSkubGVuZ3RoP1k6bnVsbH0saj1mdW5jdGlvbihNLFkpe2lmKCFZKXJldHVybiBNO3ZhciB2PVkuZGF0YXx8e307WS5udW1GbXRJZCE9bnVsbCYmKE0ubnVtRm10SWQ9WS5udW1GbXRJZCxUZVtZLm51bUZtdElkXSE9bnVsbCYmKE0ubnVtRm10PVRlW1kubnVtRm10SWRdKSk7dmFyIFQ9cShQW1kuaWZudF0sWSk7VCYmKE0uZm9udD1UKTt2YXIgaz1sZSh2KTtrJiYoTS5maWxsPWssb2YoTSxrKSk7dmFyIEY9Z2Uodik7RiYmKE0uYm9yZGVyPUYpO3ZhciBFPXVlKHYpO3JldHVybiBFJiYoTS5hbGlnbm1lbnQ9RSksKFkubG9ja2VkfHxZLmhpZGRlbikmJihNLnByb3RlY3Rpb249e2xvY2tlZDpZLmxvY2tlZCxoaWRkZW46WS5oaWRkZW59KSxNfSx5ZT1mdW5jdGlvbihNLFkpe2lmKCFNKXJldHVybiBudWxsO2lmKFk9PW51bGwmJihZPVIuaW5kZXhPZihNKSksYltZXSlyZXR1cm4gYltZXTt2YXIgdj17aWQ6WSx4ZjpVZShNKX07cmV0dXJuIU0uZlN0eWxlJiZNLnhmSWQhPW51bGwmJk0ueGZJZCE9PVkmJlJbTS54ZklkXSYma2Eodix5ZShSW00ueGZJZF0sTS54ZklkKSksdi5pZD1ZLHYueGY9VWUoTSksaih2LE0pLGJbWV09dn0sYmU9ZnVuY3Rpb24oTSxZKXtpZighKCFNLlhGfHwhWXx8IVkuY2VsbFN0eWxlcykpe3ZhciB2PXllKE0uWEYsTS5peGZlKTt2JiYoTS5zPXYpfX0sbWU9ZnVuY3Rpb24oTSxZLHYpe2lmKCEoIUwmJmtlPjEpJiYhKHYuc2hlZXRSb3dzJiZNLnI+PXYuc2hlZXRSb3dzKSl7aWYodi5jZWxsU3R5bGVzJiZZLlhGJiZZLlhGLmRhdGEmJmJlKFksdiksZGVsZXRlIFkuaXhmZSxkZWxldGUgWS5YRix1PU0seD1JZShNKSwoIWZ8fCFmLnN8fCFmLmUpJiYoZj17czp7cjowLGM6MH0sZTp7cjowLGM6MH19KSxNLnI8Zi5zLnImJihmLnMucj1NLnIpLE0uYzxmLnMuYyYmKGYucy5jPU0uYyksTS5yKzE+Zi5lLnImJihmLmUucj1NLnIrMSksTS5jKzE+Zi5lLmMmJihmLmUuYz1NLmMrMSksdi5jZWxsRm9ybXVsYSYmWS5mKXtmb3IodmFyIFQ9MDtUPHcubGVuZ3RoOysrVClpZighKHdbVF1bMF0ucy5jPk0uY3x8d1tUXVswXS5zLnI+TS5yKSYmISh3W1RdWzBdLmUuYzxNLmN8fHdbVF1bMF0uZS5yPE0ucikpe1kuRj1EZSh3W1RdWzBdKSwod1tUXVswXS5zLmMhPU0uY3x8d1tUXVswXS5zLnIhPU0ucikmJmRlbGV0ZSBZLmYsWS5mJiYoWS5mPSIiK3dyKHdbVF1bMV0sZixNLHJlLFopKTticmVha319di5kZW5zZT8oblsiIWRhdGEiXVtNLnJdfHwoblsiIWRhdGEiXVtNLnJdPVtdKSxuWyIhZGF0YSJdW00ucl1bTS5jXT1ZKTpuW3hdPVl9fSxaPXtlbmM6ITEsc2JjY2g6MCxzbmFtZXM6W10sc2hhcmVkZjpwLGFycmF5Zjp3LHJydGFiaWQ6W10sbGFzdHVzZXI6IiIsYmlmZjo4LGNvZGVwYWdlOjAsd2lubG9ja2VkOjAsY2VsbFN0eWxlczohIWEmJiEhYS5jZWxsU3R5bGVzLGRyYXdpbmdzOiEhYSYmISFhLmRyYXdpbmdzLGNoYXJ0czohIWEmJiEhYS5jaGFydHMsV1RGOiEhYSYmISFhLldURn07YS5wYXNzd29yZCYmKFoucGFzc3dvcmQ9YS5wYXNzd29yZCk7dmFyIE9lLHdlPVtdLEFlPVtdLEE9W10sVT1bXSxPPSExLEk9e2JsaXBzOltdfSx6PW51bGwscGU9W10sSj1udWxsLHJlPVtdO3JlLlNoZWV0TmFtZXM9Wi5zbmFtZXMscmUuc2hhcmVkZj1aLnNoYXJlZGYscmUuYXJyYXlmPVouYXJyYXlmLHJlLm5hbWVzPVtdLHJlLlhUST1bXTt2YXIgZWU9MCxrZT0wLGhlPTAseGU9W10sWGU9W10semUsamU9ZnVuY3Rpb24oKXtyZXR1cm4genx8KHo9e3JhdzpbXSxpbWFnZXM6W10sc2hhcGVzOltdLGNoYXJ0czpbXX0pLHp9LGRlPWZ1bmN0aW9uKE0pe2lmKE0mJiEoIWEuZHJhd2luZ3MmJiFhLmNoYXJ0cykpaWYoTS5ncm91cHMmJk0uYmxpcHMpSS5ibGlwcz1JLmJsaXBzLmNvbmNhdChNLmJsaXBzKTtlbHNle3ZhciBZPWplKCk7TS5yYXcmJlkucmF3LnB1c2goTS5yYXcpLE0uYmxpcHMmJk0uYmxpcHMubGVuZ3RoJiYoSS5ibGlwcz1JLmJsaXBzLmNvbmNhdChNLmJsaXBzKSksKE0uc2hhcGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbih2KXtwZS5wdXNoKHYpO3ZhciBUPXYuYmxpcElkIT1udWxsP0kuYmxpcHNbdi5ibGlwSWQtMV06bnVsbDtUJiZULmRhdGFVUkk/WS5pbWFnZXMucHVzaCh7aWQ6Inhscy1pbWFnZS0iKyhZLmltYWdlcy5sZW5ndGgrMSksb2JqZWN0SWQ6di5zcGlkLGJpZmZUeXBlOiJtc29EcmF3aW5nIixhbmNob3I6di5hbmNob3IsZGF0YVVSSTpULmRhdGFVUkksY29udGVudFR5cGU6VC5jb250ZW50VHlwZSxyYXc6di5yYXd9KTpZLnNoYXBlcy5wdXNoKHtpZDoieGxzLXNoYXBlLSIrKFkuc2hhcGVzLmxlbmd0aCsxKSxvYmplY3RJZDp2LnNwaWQsYmlmZlR5cGU6Im1zb0RyYXdpbmciLGFuY2hvcjp2LmFuY2hvcixwcm9wczp2LnByb3BzLHJhdzp2LnJhd30pfSl9fSxXZT1mdW5jdGlvbihNKXtpZighKCFNfHwhTS5JbURhdGF8fCFNLkltRGF0YS5kYXRhKSYmISghYS5kcmF3aW5ncyYmIWEuY2hhcnRzKSl7dmFyIFk9amUoKSx2PU0uSW1EYXRhLmRhdGEsVD0kcyh2LDAsdi5sZW5ndGgpLGs9TS5fc2hhcGV8fHt9LEY9e2lkOiJ4bHMtaW1kYXRhLSIrKFkuaW1hZ2VzLmxlbmd0aCsxKSxvYmplY3RJZDpNLmNtbyYmTS5jbW9bMF0sYmlmZlR5cGU6ImltRGF0YSIsYW5jaG9yOmsuYW5jaG9yLHJhdzpNLkltRGF0YX07VFsxXT8oRi5jb250ZW50VHlwZT1UWzFdLEYuZGF0YVVSST0iZGF0YToiK1RbMV0rIjtiYXNlNjQsIitYMCh2LnNsaWNlKFRbMF0pKSxZLmltYWdlcy5wdXNoKEYpKTpZLnNoYXBlcy5wdXNoKHtpZDoieGxzLWltZGF0YS0iKyhZLnNoYXBlcy5sZW5ndGgrMSksb2JqZWN0SWQ6Ri5vYmplY3RJZCxiaWZmVHlwZToiaW1EYXRhIixhbmNob3I6ay5hbmNob3IscmF3Ok0uSW1EYXRhfSl9fSxmZT1mdW5jdGlvbigpe0o9e3R5cGU6bnVsbCx0aXRsZToiIixzZXJpZXM6W10sc2VyaWVzVGV4dDpbXSxyYXc6W10sY3VycmVudDpudWxsfX0sc2E9ZnVuY3Rpb24oTSxZKXtzd2l0Y2goSnx8ZmUoKSxKLnJhdy5wdXNoKHtydDpNLHY6WX0pLE0pe2Nhc2UgNDA5OTpKLmN1cnJlbnQ9e3JhdzpZLG5hbWU6IiIsZGF0YTpbXX0sSi5zZXJpZXMucHVzaChKLmN1cnJlbnQpO2JyZWFrO2Nhc2UgNDEwOTpZJiZZLnRleHQmJihKLmN1cnJlbnQmJiFKLmN1cnJlbnQubmFtZT9KLmN1cnJlbnQubmFtZT1ZLnRleHQ6Si50aXRsZT9KLnNlcmllc1RleHQucHVzaChZLnRleHQpOkoudGl0bGU9WS50ZXh0KTticmVhaztjYXNlIDQxMTk6Y2FzZSA0MTIwOmNhc2UgNDEyMTpjYXNlIDQxMjI6Y2FzZSA0MTIzOmNhc2UgNDE1ODpjYXNlIDQxNTk6WSYmWS50eXBlJiYoSi50eXBlPVkudHlwZSk7YnJlYWs7Y2FzZSA0MTc3OkouY3VycmVudCYmKEouY3VycmVudC5icmFpfHwoSi5jdXJyZW50LmJyYWk9W10pLEouY3VycmVudC5icmFpLnB1c2goWSkpO2JyZWFrfX0sanI9ZnVuY3Rpb24oTSl7aWYoIUp8fCFKLnJhdy5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIFk9e3R5cGU6Si50eXBlfHwiYmFyQ2hhcnQiLHRpdGxlOkoudGl0bGUsc2VyaWVzOltdLHJhdzpKLnJhd307aWYoTSYmTVsiIXJlZiJdKXt2YXIgdj1aZShNWyIhcmVmIl0pLFQ9TVsiIWRhdGEiXSE9bnVsbCxrLEYsRSxTPSExO2ZvcihGPXYucy5yO0Y8PXYuZS5yOysrRilFPVQ/KE1bIiFkYXRhIl1bRl18fFtdKVt2LnMuY106TVtJZSh7cjpGLGM6di5zLmN9KV0sRSYmRS50PT0ibiImJihTPSEwKTt2YXIgVz1bXTtpZighUyYmdi5lLmM+di5zLmMpZm9yKEY9di5zLnI7Rjw9di5lLnI7KytGKUU9VD8oTVsiIWRhdGEiXVtGXXx8W10pW3Yucy5jXTpNW0llKHtyOkYsYzp2LnMuY30pXSxXLnB1c2goRT9FLnd8fEUudjoiIik7Zm9yKGs9di5zLmMrKFcubGVuZ3RoPzE6MCk7azw9di5lLmM7KytrKXt2YXIgSz1bXSxIPShKLnNlcmllc1trLXYucy5jXXx8Si5zZXJpZXNbay12LnMuYy0xXXx8e30pLm5hbWV8fCIiO2ZvcihGPXYucy5yO0Y8PXYuZS5yOysrRilFPVQ/KE1bIiFkYXRhIl1bRl18fFtdKVtrXTpNW0llKHtyOkYsYzprfSldLEUmJkUudD09Im4iP0sucHVzaChFLnYpOkUmJkUudiE9bnVsbCYmIWlzTmFOKCtFLnYpJiZLLnB1c2goK0Uudik7Sy5sZW5ndGgmJlkuc2VyaWVzLnB1c2goe25hbWU6SCxkYXRhOkssdmFsOnt2YWx1ZXM6S30sY2F0Ont2YWx1ZXM6V319KX19cmV0dXJuIFkuc2VyaWVzLmxlbmd0aHx8Si5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihWKXtZLnNlcmllcy5wdXNoKHtuYW1lOlYubmFtZXx8IiIsZGF0YTpbXSxyYXc6Vn0pfSksWX0sWWU9ZnVuY3Rpb24oTSl7aWYoTVsiIW1lcmdlcyJdJiZNWyIhbWVyZ2VzIl0ubGVuZ3RoKXt2YXIgWT1GbihNLHtXVEY6ISEoYSYmKGEuV1RGfHxhLnZhbGlkYXRlTWVyZ2VzKSl9KTtZLmxlbmd0aCYmKE1bIiFtZXJnZUVycm9ycyJdPVkpfXomJih6LmltYWdlcy5sZW5ndGh8fHouc2hhcGVzLmxlbmd0aHx8ei5jaGFydHMubGVuZ3RofHx6LnJhdy5sZW5ndGgpJiYoTVsiIWRyYXdpbmdzIl09eik7dmFyIHY9YS5jaGFydHM/anIoTSk6bnVsbDt2JiYoTVsiIWNoYXJ0Il09dixNWyIhY2hhcnRzIl18fChNWyIhY2hhcnRzIl09W10pLHomJnouY2hhcnRzLmxlbmd0aD96LmNoYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKFQpe1QubW9kZWx8fChULm1vZGVsPXYpLE1bIiFjaGFydHMiXS5wdXNoKFQpfSk6TVsiIWNoYXJ0cyJdLnB1c2goe2lkOiJ4bHMtY2hhcnQtIitNWyIhY2hhcnRzIl0ubGVuZ3RoLHRpdGxlOnYudGl0bGUsbW9kZWw6dixyYXc6di5yYXcsYW5jaG9yOnt0eXBlOiJhYnNvbHV0ZUFuY2hvciIscG9zOnt4OjAseTowfSxleHQ6e2N4OjQ4MCo5NTI1LGN5OjI4OCo5NTI1fX19KSl9O1ouY29kZXBhZ2U9MTIwMCxZcigxMjAwKTtmb3IodmFyIFJhPSExO2UubDxlLmxlbmd0aC0xOyl7dmFyIE9hPWUubCxFZT1lLnJlYWRfc2hpZnQoMik7aWYoRWU9PT0wJiZlZT09PTEwKWJyZWFrO3ZhciBycj1lLmw9PT1lLmxlbmd0aD8wOmUucmVhZF9zaGlmdCgyKSxGcj1TbltFZV07aWYoa2U9PTAmJls5LDUyMSwxMDMzLDIwNTddLmluZGV4T2YoRWUpPT0tMSlicmVhaztpZihGciYmRnIuZil7aWYoYS5ib29rU2hlZXRzJiZlZT09PTEzMyYmRWUhPT0xMzMpYnJlYWs7aWYoZWU9RWUsRnIucj09PTJ8fEZyLnI9PTEyKXt2YXIgRmE9ZS5yZWFkX3NoaWZ0KDIpO2lmKHJyLT0yLCFaLmVuYyYmRmEhPT1FZSYmKChGYSYyNTUpPDw4fEZhPj44KSE9PUVlKXRocm93IG5ldyBFcnJvcigicnQgbWlzbWF0Y2g6ICIrRmErIiE9IitFZSk7RnIucj09MTImJihlLmwrPTEwLHJyLT0xMCl9dmFyIEM9e307aWYoRWU9PT0xMD9DPUZyLmYoZSxycixaKTpDPVZ2KEVlLEZyLGUscnIsWiksa2U9PTAmJls5LDUyMSwxMDMzLDIwNTddLmluZGV4T2YoZWUpPT09LTEpY29udGludWU7c3dpdGNoKEVlKXtjYXNlIDM0OnIub3B0cy5EYXRlMTkwND1ELldCUHJvcHMuZGF0ZTE5MDQ9QzticmVhaztjYXNlIDEzNDpyLm9wdHMuV3JpdGVQcm90ZWN0PSEwO2JyZWFrO2Nhc2UgNDc6aWYoWi5lbmN8fChlLmw9MCksWi5lbmM9QywhYS5wYXNzd29yZCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7aWYoQy52YWxpZD09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gc2NoZW1lIHVuc3VwcG9ydGVkIik7aWYoIUMudmFsaWQpdGhyb3cgbmV3IEVycm9yKCJQYXNzd29yZCBpcyBpbmNvcnJlY3QiKTticmVhaztjYXNlIDkyOloubGFzdHVzZXI9QzticmVhaztjYXNlIDY2OnZhciBCcj1OdW1iZXIoQyk7c3dpdGNoKEJyKXtjYXNlIDIxMDEwOkJyPTEyMDA7YnJlYWs7Y2FzZSAzMjc2ODpCcj0xZTQ7YnJlYWs7Y2FzZSAzMjc2OTpCcj0xMjUyO2JyZWFrfVlyKFouY29kZXBhZ2U9QnIpLFJhPSEwO2JyZWFrO2Nhc2UgMzE3OloucnJ0YWJpZD1DO2JyZWFrO2Nhc2UgMjU6Wi53aW5sb2NrZWQ9QzticmVhaztjYXNlIDQzOTpyLm9wdHMuUmVmcmVzaEFsbD1DO2JyZWFrO2Nhc2UgMTI6ci5vcHRzLkNhbGNDb3VudD1DO2JyZWFrO2Nhc2UgMTY6ci5vcHRzLkNhbGNEZWx0YT1DO2JyZWFrO2Nhc2UgMTc6ci5vcHRzLkNhbGNJdGVyPUM7YnJlYWs7Y2FzZSAxMzpyLm9wdHMuQ2FsY01vZGU9QzticmVhaztjYXNlIDE0OnIub3B0cy5DYWxjUHJlY2lzaW9uPUM7YnJlYWs7Y2FzZSA5NTpyLm9wdHMuQ2FsY1NhdmVSZWNhbGM9QzticmVhaztjYXNlIDE1OlouQ2FsY1JlZk1vZGU9QzticmVhaztjYXNlIDIyMTE6ci5vcHRzLkZ1bGxDYWxjPUM7YnJlYWs7Y2FzZSAxMjk6Qy5mRGlhbG9nJiYoblsiIXR5cGUiXT0iZGlhbG9nIiksQy5mQmVsb3d8fCgoblsiIW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5hYm92ZT0hMCksQy5mUmlnaHR8fCgoblsiIW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5sZWZ0PSEwKTticmVhaztjYXNlIDY3OmNhc2UgNTc5OmNhc2UgMTA5MTpjYXNlIDIyNDpSLnB1c2goQyk7YnJlYWs7Y2FzZSA0OTpQLnB1c2goQyksWi5iaWZmPj01JiZQLmxlbmd0aD09NCYmUC5wdXNoKG51bGwpO2JyZWFrO2Nhc2UgNDMwOnJlLnB1c2goW0NdKSxyZVtyZS5sZW5ndGgtMV0uWFRJPVtdO2JyZWFrO2Nhc2UgMzU6Y2FzZSA1NDc6cmVbcmUubGVuZ3RoLTFdLnB1c2goQyk7YnJlYWs7Y2FzZSAyNDpjYXNlIDUzNjp6ZT17TmFtZTpDLk5hbWUsUmVmOndyKEMucmdjZSxmLG51bGwscmUsWil9LEMuaXRhYj4wJiYoemUuU2hlZXQ9Qy5pdGFiLTEpLHJlLm5hbWVzLnB1c2goemUpLHJlWzBdfHwocmVbMF09W10scmVbMF0uWFRJPVtdKSxyZVtyZS5sZW5ndGgtMV0ucHVzaChDKSxDLk5hbWU9PSJfeGxubS5fRmlsdGVyRGF0YWJhc2UiJiZDLml0YWI+MCYmQy5yZ2NlJiZDLnJnY2VbMF0mJkMucmdjZVswXVswXSYmQy5yZ2NlWzBdWzBdWzBdPT0iUHRnQXJlYTNkIiYmKFhlW0MuaXRhYi0xXT17cmVmOkRlKEMucmdjZVswXVswXVsxXVsyXSl9KTticmVhaztjYXNlIDIyOlouRXh0ZXJuQ291bnQ9QzticmVhaztjYXNlIDIzOnJlLmxlbmd0aD09MCYmKHJlWzBdPVtdLHJlWzBdLlhUST1bXSkscmVbcmUubGVuZ3RoLTFdLlhUST1yZVtyZS5sZW5ndGgtMV0uWFRJLmNvbmNhdChDKSxyZS5YVEk9cmUuWFRJLmNvbmNhdChDKTticmVhaztjYXNlIDIxOTY6aWYoWi5iaWZmPDgpYnJlYWs7emUhPW51bGwmJih6ZS5Db21tZW50PUNbMV0pO2JyZWFrO2Nhc2UgMTg6blsiIXByb3RlY3QiXT1DO2JyZWFrO2Nhc2UgMTk6QyE9PTAmJlouV1RGJiZjb25zb2xlLmVycm9yKCJQYXNzd29yZCB2ZXJpZmllcjogIitDKTticmVhaztjYXNlIDEzMzppW1ouYmlmZj09ND9aLnNuYW1lcy5sZW5ndGg6Qy5wb3NdPUMsWi5zbmFtZXMucHVzaChDLm5hbWUpO2JyZWFrO2Nhc2UgMTA6e2lmKC0ta2U/IUw6TClicmVhaztpZihmLmUpe2lmKGYuZS5yPjAmJmYuZS5jPjApe2lmKGYuZS5yLS0sZi5lLmMtLSxuWyIhcmVmIl09RGUoZiksYS5zaGVldFJvd3MmJmEuc2hlZXRSb3dzPD1mLmUucil7dmFyIG10PWYuZS5yO2YuZS5yPWEuc2hlZXRSb3dzLTEsblsiIWZ1bGxyZWYiXT1uWyIhcmVmIl0sblsiIXJlZiJdPURlKGYpLGYuZS5yPW10fWYuZS5yKyssZi5lLmMrK313ZS5sZW5ndGg+MCYmKG5bIiFtZXJnZXMiXT13ZSksQWUubGVuZ3RoPjAmJihuWyIhb2JqZWN0cyJdPUFlKSxBLmxlbmd0aD4wJiYoblsiIWNvbHMiXT1BKSxVLmxlbmd0aD4wJiYoblsiIXJvd3MiXT1VKSxZZShuKSxELlNoZWV0cy5wdXNoKEIpfW89PT0iIj9sPW46dFtvXT1uLG49e30sYS5kZW5zZSYmKG5bIiFkYXRhIl09W10pfWJyZWFrO2Nhc2UgOTpjYXNlIDUyMTpjYXNlIDEwMzM6Y2FzZSAyMDU3OntpZihaLmJpZmY9PT04JiYoWi5iaWZmPXs5OjIsNTIxOjMsMTAzMzo0fVtFZV18fHs1MTI6Miw3Njg6MywxMDI0OjQsMTI4MDo1LDE1MzY6OCwyOjIsNzoyfVtDLkJJRkZWZXJdfHw4KSxaLmJpZmZndWVzcz1DLkJJRkZWZXI9PTAsQy5CSUZGVmVyPT0wJiZDLmR0PT00MDk2JiYoWi5iaWZmPTUsUmE9ITAsWXIoWi5jb2RlcGFnZT0yODU5MSkpLFouYmlmZj09NCYmQy5kdCYyNTYmJihMPSEwKSxaLmJpZmY9PTgmJkMuQklGRlZlcj09MCYmQy5kdD09MTYmJihaLmJpZmY9Miksa2UrKyYmIUwpYnJlYWs7aWYobj17fSxhLmRlbnNlJiYoblsiIWRhdGEiXT1bXSksWi5iaWZmPDgmJiFSYSYmKFJhPSEwLFlyKFouY29kZXBhZ2U9YS5jb2RlcGFnZXx8MTI1MikpLFouYmlmZj09NCYmTClvPShpW1ouc25hbWVzLmluZGV4T2YobykrMV18fHtuYW1lOiIifSkubmFtZTtlbHNlIGlmKFouYmlmZjw1fHxDLkJJRkZWZXI9PTAmJkMuZHQ9PTQwOTYpe289PT0iIiYmKG89IlNoZWV0MSIpLGY9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTt2YXIgcXQ9e3BvczplLmwtcnIsbmFtZTpvfTtpW3F0LnBvc109cXQsWi5zbmFtZXMucHVzaChvKX1lbHNlIG89KGlbT2FdfHx7bmFtZToiIn0pLm5hbWU7Qy5kdD09MzImJihuWyIhdHlwZSJdPSJjaGFydCIpLEMuZHQ9PTY0JiYoblsiIXR5cGUiXT0ibWFjcm8iKSx3ZT1bXSxBZT1bXSx6PW51bGwscGU9W10sZmUoKSxaLmFycmF5Zj13PVtdLEE9W10sVT1bXSxPPSExLEI9e0hpZGRlbjooaVtPYV18fHtoczowfSkuaHMsbmFtZTpvfX1icmVhaztjYXNlIDUxNTpjYXNlIDM6Y2FzZSAyOm5bIiF0eXBlIl09PSJjaGFydCImJihhLmRlbnNlPyhuWyIhZGF0YSJdW0Mucl18fFtdKVtDLmNdOm5bSGUoQy5jKStHZShDLnIpXSkmJisrQy5jLF89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXXx8e30sdjpDLnZhbCx0OiJuIn0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNTpjYXNlIDUxNzpfPXtpeGZlOkMuaXhmZSxYRjpSW0MuaXhmZV0sdjpDLnZhbCx0OkMudH0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNjM4Ol89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXSx2OkMucmtudW0sdDoibiJ9LGhlPjAmJihfLno9Xy5YRiYmXy5YRi5udW1GbXRJZCYmeGVbXy5YRi5udW1GbXRJZF18fHhlW18uaXhmZT4+OCY2M10pLG5hKF8sYSxyLm9wdHMuRGF0ZTE5MDQpLG1lKHtjOkMuYyxyOkMucn0sXyxhKTticmVhaztjYXNlIDE4OTpmb3IodmFyIE5hPUMuYztOYTw9Qy5DOysrTmEpe3ZhciBRdD1DLnJrcmVjW05hLUMuY11bMF07Xz17aXhmZTpRdCxYRjpSW1F0XSx2OkMucmtyZWNbTmEtQy5jXVsxXSx0OiJuIn0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6TmEscjpDLnJ9LF8sYSl9YnJlYWs7Y2FzZSA2OmNhc2UgNTE4OmNhc2UgMTAzMDp7aWYoQy52YWw9PSJTdHJpbmciKXtzPUM7YnJlYWt9aWYoXz1DMChDLnZhbCxDLmNlbGwuaXhmZSxDLnR0KSxfLlhGPVJbXy5peGZlXSxhLmNlbGxGb3JtdWxhKXt2YXIgTWE9Qy5mb3JtdWxhO2lmKE1hJiZNYVswXSYmTWFbMF1bMF0mJk1hWzBdWzBdWzBdPT0iUHRnRXhwIil7dmFyIEIwPU1hWzBdWzBdWzFdWzBdLGF0PU1hWzBdWzBdWzFdWzFdLFUwPUllKHtyOkIwLGM6YXR9KTtwW1UwXT9fLmY9IiIrd3IoQy5mb3JtdWxhLGYsQy5jZWxsLHJlLFopOl8uRj0oKGEuZGVuc2U/KG5bIiFkYXRhIl1bQjBdfHxbXSlbYXRdOm5bVTBdKXx8e30pLkZ9ZWxzZSBfLmY9IiIrd3IoQy5mb3JtdWxhLGYsQy5jZWxsLHJlLFopfWhlPjAmJihfLno9Xy5YRiYmXy5YRi5udW1GbXRJZCYmeGVbXy5YRi5udW1GbXRJZF18fHhlW18uaXhmZT4+OCY2M10pLG5hKF8sYSxyLm9wdHMuRGF0ZTE5MDQpLG1lKEMuY2VsbCxfLGEpLHM9Q31icmVhaztjYXNlIDc6Y2FzZSA1MTk6aWYocylzLnZhbD1DLF89QzAoQyxzLmNlbGwuaXhmZSwicyIpLF8uWEY9UltfLml4ZmVdLGEuY2VsbEZvcm11bGEmJihfLmY9IiIrd3Iocy5mb3JtdWxhLGYscy5jZWxsLHJlLFopKSxoZT4wJiYoXy56PV8uWEYmJl8uWEYubnVtRm10SWQmJnhlW18uWEYubnVtRm10SWRdfHx4ZVtfLml4ZmU+PjgmNjNdKSxuYShfLGEsci5vcHRzLkRhdGUxOTA0KSxtZShzLmNlbGwsXyxhKSxzPW51bGw7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhIik7YnJlYWs7Y2FzZSAzMzpjYXNlIDU0NTp7dy5wdXNoKEMpO3ZhciBIMD1JZShDWzBdLnMpO2lmKGg9YS5kZW5zZT8oblsiIWRhdGEiXVtDWzBdLnMucl18fFtdKVtDWzBdLnMuY106bltIMF0sYS5jZWxsRm9ybXVsYSYmaCl7aWYoIXN8fCFIMHx8IWgpYnJlYWs7aC5mPSIiK3dyKENbMV0sZixDWzBdLHJlLFopLGguRj1EZShDWzBdKX19YnJlYWs7Y2FzZSAxMjEyOntpZighYS5jZWxsRm9ybXVsYSlicmVhaztpZih4KXtpZighcylicmVhaztwW0llKHMuY2VsbCldPUNbMF0saD1hLmRlbnNlPyhuWyIhZGF0YSJdW3MuY2VsbC5yXXx8W10pW3MuY2VsbC5jXTpuW0llKHMuY2VsbCldLChofHx7fSkuZj0iIit3cihDWzBdLGYsdSxyZSxaKX19YnJlYWs7Y2FzZSAyNTM6Xz1DMChjW0MuaXNzdF0udCxDLml4ZmUsInMiKSxjW0MuaXNzdF0uaCYmKF8uaD1jW0MuaXNzdF0uaCksXy5YRj1SW18uaXhmZV0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNTEzOmEuc2hlZXRTdHVicyYmKF89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXSx0OiJ6In0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpKTticmVhaztjYXNlIDE5MDppZihhLnNoZWV0U3R1YnMpZm9yKHZhciBfdD1DLmM7X3Q8PUMuQzsrK190KXt2YXIgVzA9Qy5peGZlW190LUMuY107Xz17aXhmZTpXMCxYRjpSW1cwXSx0OiJ6In0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6X3QscjpDLnJ9LF8sYSl9YnJlYWs7Y2FzZSAyMTQ6Y2FzZSA1MTY6Y2FzZSA0Ol89QzAoQy52YWwsQy5peGZlLCJzIiksXy5YRj1SW18uaXhmZV0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgMDpjYXNlIDUxMjprZT09PTEmJihmPUMpO2JyZWFrO2Nhc2UgMjUyOmM9QzticmVhaztjYXNlIDEwNTQ6aWYoWi5iaWZmPj0zJiZaLmJpZmY8PTQpe3hlW2hlKytdPUNbMV07Zm9yKHZhciBrdD0wO2t0PGhlKzE2MyYmVGVba3RdIT1DWzFdOysra3QpO2t0Pj0xNjMmJkxhKENbMV0saGUrMTYzKX1lbHNlIExhKENbMV0sQ1swXSk7YnJlYWs7Y2FzZSAzMDp7eGVbaGUrK109Qztmb3IodmFyIHd0PTA7d3Q8aGUrMTYzJiZUZVt3dF0hPUM7Kyt3dCk7d3Q+PTE2MyYmTGEoQyxoZSsxNjMpfWJyZWFrO2Nhc2UgMjI5OndlPXdlLmNvbmNhdChDKTticmVhaztjYXNlIDIzNTpkZShDKTticmVhaztjYXNlIDIzNjpkZShDKTticmVhaztjYXNlIDkzOmlmKEFlW0MuY21vWzBdXT1aLmxhc3RvYmo9QyxwZS5sZW5ndGgmJihDLl9zaGFwZT1wZS5zaGlmdCgpLEMuX3NoYXBlLm9iamVjdD1DLEMuY21vWzFdPT01KSl7dmFyIEJuPWplKCk7Qm4uY2hhcnRzLnB1c2goe2lkOiJ4bHMtY2hhcnQtb2JqZWN0LSIrQy5jbW9bMF0sb2JqZWN0SWQ6Qy5jbW9bMF0sYmlmZlR5cGU6Im9iaiIsYW5jaG9yOkMuX3NoYXBlLmFuY2hvcixyYXc6Qy5fc2hhcGUucmF3fSl9YnJlYWs7Y2FzZSA0Mzg6Wi5sYXN0b2JqLlR4Tz1DO2JyZWFrO2Nhc2UgMTI3OloubGFzdG9iai5JbURhdGE9QyxXZShaLmxhc3RvYmopO2JyZWFrO2Nhc2UgNDQwOmZvcihkPUNbMF0ucy5yO2Q8PUNbMF0uZS5yOysrZClmb3IobT1DWzBdLnMuYzttPD1DWzBdLmUuYzsrK20paD1hLmRlbnNlPyhuWyIhZGF0YSJdW2RdfHxbXSlbbV06bltJZSh7YzptLHI6ZH0pXSxoJiYoaC5sPUNbMV0pO2JyZWFrO2Nhc2UgMjA0ODpmb3IoZD1DWzBdLnMucjtkPD1DWzBdLmUucjsrK2QpZm9yKG09Q1swXS5zLmM7bTw9Q1swXS5lLmM7KyttKWg9YS5kZW5zZT8oblsiIWRhdGEiXVtkXXx8W10pW21dOm5bSWUoe2M6bSxyOmR9KV0saCYmaC5sJiYoaC5sLlRvb2x0aXA9Q1sxXSk7YnJlYWs7Y2FzZSAyODp7aWYoaD1hLmRlbnNlPyhuWyIhZGF0YSJdW0NbMF0ucl18fFtdKVtDWzBdLmNdOm5bSWUoQ1swXSldLGh8fChhLmRlbnNlPyhuWyIhZGF0YSJdW0NbMF0ucl18fChuWyIhZGF0YSJdW0NbMF0ucl09W10pLGg9blsiIWRhdGEiXVtDWzBdLnJdW0NbMF0uY109e3Q6InoifSk6aD1uW0llKENbMF0pXT17dDoieiJ9LGYuZS5yPU1hdGgubWF4KGYuZS5yLENbMF0uciksZi5zLnI9TWF0aC5taW4oZi5zLnIsQ1swXS5yKSxmLmUuYz1NYXRoLm1heChmLmUuYyxDWzBdLmMpLGYucy5jPU1hdGgubWluKGYucy5jLENbMF0uYykpLGguY3x8KGguYz1bXSksWi5iaWZmPD01JiZaLmJpZmY+PTIpZz17YToiU2hlZXRKNSIsdDpDWzFdfTtlbHNle3ZhciBVbj1BZVtDWzJdXTtnPXthOkNbMV0sdDpVbi5UeE8udH0sQ1szXSE9bnVsbCYmIShDWzNdJjIpJiYoaC5jLmhpZGRlbj0hMCl9aC5jLnB1c2goZyl9YnJlYWs7Y2FzZSAyMTczOnQxKFJbQy5peGZlXSxDLmV4dCksYj17fTticmVhaztjYXNlIDEyNTp7aWYoIVouY2VsbFN0eWxlcylicmVhaztmb3IoO0MuZT49Qy5zOylBW0MuZS0tXT17d2lkdGg6Qy53LzI1NixsZXZlbDpDLmxldmVsfHwwLGhpZGRlbjohIShDLmZsYWdzJjEpfSxDLml4ZmUhPW51bGwmJlJbQy5peGZlXSYmKEFbQy5lKzFdLnM9eWUoUltDLml4ZmVdLEMuaXhmZSkpLE98fChPPSEwLGRuKEMudy8yNTYpKSx1dChBW0MuZSsxXSl9YnJlYWs7Y2FzZSA1MjA6e3ZhciBVcj17fTtDLmxldmVsIT1udWxsJiYoVVtDLnJdPVVyLFVyLmxldmVsPUMubGV2ZWwpLEMuaGlkZGVuJiYoVVtDLnJdPVVyLFVyLmhpZGRlbj0hMCksWi5jZWxsU3R5bGVzJiZDLml4ZmUhPW51bGwmJkMuaXhmZSE9NDA5NSYmUltDLml4ZmVdJiYoVVtDLnJdPVVyLFVyLnM9eWUoUltDLml4ZmVdLEMuaXhmZSkpLEMuaHB0JiYoVVtDLnJdPVVyLFVyLmhwdD1DLmhwdCxVci5ocHg9QnQoQy5ocHQpKX1icmVhaztjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDQxOm5bIiFtYXJnaW5zIl18fFh0KG5bIiFtYXJnaW5zIl09e30pLG5bIiFtYXJnaW5zIl1bezM4OiJsZWZ0IiwzOToicmlnaHQiLDQwOiJ0b3AiLDQxOiJib3R0b20ifVtFZV1dPUM7YnJlYWs7Y2FzZSAxNjE6blsiIW1hcmdpbnMiXXx8WHQoblsiIW1hcmdpbnMiXT17fSksblsiIW1hcmdpbnMiXS5oZWFkZXI9Qy5oZWFkZXIsblsiIW1hcmdpbnMiXS5mb290ZXI9Qy5mb290ZXI7YnJlYWs7Y2FzZSA1NzQ6Qy5SVEwmJihELlZpZXdzWzBdLlJUTD0hMCk7YnJlYWs7Y2FzZSAxNDY6Tj1DLGI9e307YnJlYWs7Y2FzZSAyMTk4Ok9lPUMsYj17fTticmVhaztjYXNlIDE0MDp5PUM7YnJlYWs7Y2FzZSA0MDk4OmNhc2UgNDA5OTpjYXNlIDQxMDk6Y2FzZSA0MTE2OmNhc2UgNDExNzpjYXNlIDQxMTk6Y2FzZSA0MTIwOmNhc2UgNDEyMTpjYXNlIDQxMjI6Y2FzZSA0MTIzOmNhc2UgNDEyNTpjYXNlIDQxMjc6Y2FzZSA0MTI4OmNhc2UgNDEzMzpjYXNlIDQxNDk6Y2FzZSA0MTU0OmNhc2UgNDE1ODpjYXNlIDQxNTk6Y2FzZSA0MTYxOmNhc2UgNDE2NTpjYXNlIDQxNzc6c2EoRWUsQyk7YnJlYWs7Y2FzZSA0NDI6bz9CLkNvZGVOYW1lPUN8fEIubmFtZTpELldCUHJvcHMuQ29kZU5hbWU9Q3x8IlRoaXNXb3JrYm9vayI7YnJlYWt9fWVsc2UgRnJ8fGNvbnNvbGUuZXJyb3IoIk1pc3NpbmcgSW5mbyBmb3IgWExTIFJlY29yZCAweCIrRWUudG9TdHJpbmcoMTYpKSxlLmwrPXJyfXJldHVybiByLlNoZWV0TmFtZXM9cHIoaSkuc29ydChmdW5jdGlvbigkZSxNKXtyZXR1cm4gTnVtYmVyKCRlKS1OdW1iZXIoTSl9KS5tYXAoZnVuY3Rpb24oJGUpe3JldHVybiBpWyRlXS5uYW1lfSksYS5ib29rU2hlZXRzfHwoci5TaGVldHM9dCksIXIuU2hlZXROYW1lcy5sZW5ndGgmJmxbIiFyZWYiXT8oci5TaGVldE5hbWVzLnB1c2goIlNoZWV0MSIpLHIuU2hlZXRzJiYoci5TaGVldHMuU2hlZXQxPWwpKTpyLlByZWFtYmxlPWwsci5TaGVldHMmJlhlLmZvckVhY2goZnVuY3Rpb24oJGUsTSl7ci5TaGVldHNbci5TaGVldE5hbWVzW01dXVsiIWF1dG9maWx0ZXIiXT0kZX0pLHIuU3RyaW5ncz1jLHIuU1NGPVVlKFRlKSxaLmVuYyYmKHIuRW5jcnlwdGlvbj1aLmVuYyksT2UmJihyLlRoZW1lcz1PZSksci5NZXRhZGF0YT17fSx5IT09dm9pZCAwJiYoci5NZXRhZGF0YS5Db3VudHJ5PXkpLHJlLm5hbWVzLmxlbmd0aD4wJiYoRC5OYW1lcz1yZS5uYW1lcyksci5Xb3JrYm9vaz1ELHJ9dmFyIEZmPXtTSToiZTA4NTlmZjJmOTRmNjgxMGFiOTEwODAwMmIyN2IzZDkiLERTSToiMDJkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUiLFVESToiMDVkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUifTtmdW5jdGlvbiBpMihlLGEscil7dmFyIHQ9TWUuZmluZChlLCIvIURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uIik7aWYodCYmdC5zaXplPjApdHJ5e3ZhciBuPXVzKHQsVW8sRmYuRFNJKTtmb3IodmFyIGkgaW4gbilhW2ldPW5baV19Y2F0Y2gobyl7ci5XVEYmJmNvbnNvbGUuZXJyb3IobyYmby5tZXNzYWdlfHxvKX12YXIgZj1NZS5maW5kKGUsIi8hU3VtbWFyeUluZm9ybWF0aW9uIik7aWYoZiYmZi5zaXplPjApdHJ5e3ZhciBzPXVzKGYsSG8sRmYuU0kpO2Zvcih2YXIgYyBpbiBzKWFbY109PW51bGwmJihhW2NdPXNbY10pfWNhdGNoKG8pe3IuV1RGJiZjb25zb2xlLmVycm9yKG8mJm8ubWVzc2FnZXx8byl9YS5IZWFkaW5nUGFpcnMmJmEuVGl0bGVzT2ZQYXJ0cyYmKHNzKGEuSGVhZGluZ1BhaXJzLGEuVGl0bGVzT2ZQYXJ0cyxhLHIpLGRlbGV0ZSBhLkhlYWRpbmdQYWlycyxkZWxldGUgYS5UaXRsZXNPZlBhcnRzKX1mdW5jdGlvbiBUZihlLGEpe2F8fChhPXt9KSxEbihhKSxXbigpLGEuY29kZXBhZ2UmJkcwKGEuY29kZXBhZ2UpO3ZhciByLHQ7aWYoZS5GdWxsUGF0aHMpe2lmKE1lLmZpbmQoZSwiL2VuY3J5cHRpb24iKSl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7cj1NZS5maW5kKGUsIiFDb21wT2JqIiksdD1NZS5maW5kKGUsIi9Xb3JrYm9vayIpfHxNZS5maW5kKGUsIi9Cb29rIil9ZWxzZXtzd2l0Y2goYS50eXBlKXtjYXNlImJhc2U2NCI6ZT1JcihEcihlKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOmU9SXIoZSk7YnJlYWs7Y2FzZSJidWZmZXIiOmJyZWFrO2Nhc2UiYXJyYXkiOkFycmF5LmlzQXJyYXkoZSl8fChlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTticmVha31zcihlLDApLHQ9e2NvbnRlbnQ6ZX19dmFyIG4saTtpZihyJiZIdihyKSxhLmJvb2tQcm9wcyYmIWEuYm9va1NoZWV0cyluPXt9O2Vsc2V7dmFyIGY9TmU/ImJ1ZmZlciI6ImFycmF5IjtpZih0JiZ0LmNvbnRlbnQpbj1uMih0LmNvbnRlbnQsYSk7ZWxzZSBpZigoaT1NZS5maW5kKGUsIlBlcmZlY3RPZmZpY2VfTUFJTiIpKSYmaS5jb250ZW50KW49UHQudG9fd29ya2Jvb2soaS5jb250ZW50LChhLnR5cGU9ZixhKSk7ZWxzZSBpZigoaT1NZS5maW5kKGUsIk5hdGl2ZUNvbnRlbnRfTUFJTiIpKSYmaS5jb250ZW50KW49UHQudG9fd29ya2Jvb2soaS5jb250ZW50LChhLnR5cGU9ZixhKSk7ZWxzZSB0aHJvdyhpPU1lLmZpbmQoZSwiTU4wIikpJiZpLmNvbnRlbnQ/bmV3IEVycm9yKCJVbnN1cHBvcnRlZCBXb3JrcyA0IGZvciBNYWMgZmlsZSIpOm5ldyBFcnJvcigiQ2Fubm90IGZpbmQgV29ya2Jvb2sgc3RyZWFtIik7YS5ib29rVkJBJiZlLkZ1bGxQYXRocyYmTWUuZmluZChlLCIvX1ZCQV9QUk9KRUNUX0NVUi9WQkEvZGlyIikmJihuLnZiYXJhdz1DMShlKSl9dmFyIHM9e307cmV0dXJuIGUuRnVsbFBhdGhzJiZpMihlLHMsYSksbi5Qcm9wcz1uLkN1c3Rwcm9wcz1zLGEuYm9va0ZpbGVzJiYobi5jZmI9ZSksbn12YXIgYjA9ezA6e2Y6RmR9LDE6e2Y6eWR9LDI6e2Y6TWR9LDM6e2Y6RGR9LDQ6e2Y6Q2R9LDU6e2Y6TmR9LDY6e2Y6QmR9LDc6e2Y6UmR9LDg6e2Y6R2R9LDk6e2Y6VmR9LDEwOntmOkhkfSwxMTp7ZjpXZH0sMTI6e2Y6U2R9LDEzOntmOlBkfSwxNDp7ZjpJZH0sMTU6e2Y6YmR9LDE2OntmOmhmfSwxNzp7ZjpVZH0sMTg6e2Y6T2R9LDE5OntmOnNufSwyMDp7fSwyMTp7fSwyMjp7fSwyMzp7fSwyNDp7fSwyNTp7fSwyNjp7fSwyNzp7fSwyODp7fSwyOTp7fSwzMDp7fSwzMTp7fSwzMjp7fSwzMzp7fSwzNDp7fSwzNTp7VDoxfSwzNjp7VDotMX0sMzc6e1Q6MX0sMzg6e1Q6LTF9LDM5OntmOl92fSw0MDp7fSw0Mjp7fSw0Mzp7ZjpXaH0sNDQ6e2Y6SGh9LDQ1OntmOlZofSw0Njp7ZjpYaH0sNDc6e2Y6R2h9LDQ4Ont9LDQ5OntmOkFvfSw1MDp7fSw1MTp7ZjppMX0sNTI6e1Q6MX0sNTM6e1Q6LTF9LDU0OntUOjF9LDU1OntUOi0xfSw1Njp7VDoxfSw1Nzp7VDotMX0sNTg6e30sNTk6e30sNjA6e2Y6U3N9LDYyOntmOkxkfSw2Mzp7ZjpsMX0sNjQ6e2Y6cWR9LDY1Ont9LDY2Ont9LDY3Ont9LDY4Ont9LDY5Ont9LDcwOnt9LDEyODp7fSwxMjk6e1Q6MX0sMTMwOntUOi0xfSwxMzE6e1Q6MSxmOnlyLHA6MH0sMTMyOntUOi0xfSwxMzM6e1Q6MX0sMTM0OntUOi0xfSwxMzU6e1Q6MX0sMTM2OntUOi0xfSwxMzc6e1Q6MSxmOlpkfSwxMzg6e1Q6LTF9LDEzOTp7VDoxfSwxNDA6e1Q6LTF9LDE0MTp7VDoxfSwxNDI6e1Q6LTF9LDE0Mzp7VDoxfSwxNDQ6e1Q6LTF9LDE0NTp7VDoxfSwxNDY6e1Q6LTF9LDE0Nzp7ZjpBZH0sMTQ4OntmOlRkLHA6MTZ9LDE1MTp7ZjokZH0sMTUyOnt9LDE1Mzp7Zjpndn0sMTU0Ont9LDE1NTp7fSwxNTY6e2Y6cHZ9LDE1Nzp7fSwxNTg6e30sMTU5OntUOjEsZjpHdX0sMTYwOntUOi0xfSwxNjE6e1Q6MSxmOkdhfSwxNjI6e1Q6LTF9LDE2Mzp7VDoxfSwxNjQ6e1Q6LTF9LDE2NTp7VDoxfSwxNjY6e1Q6LTF9LDE2Nzp7fSwxNjg6e30sMTY5Ont9LDE3MDp7fSwxNzE6e30sMTcyOntUOjF9LDE3Mzp7VDotMX0sMTc0Ont9LDE3NTp7fSwxNzY6e2Y6WGR9LDE3Nzp7VDoxfSwxNzg6e1Q6LTF9LDE3OTp7VDoxfSwxODA6e1Q6LTF9LDE4MTp7VDoxfSwxODI6e1Q6LTF9LDE4Mzp7VDoxfSwxODQ6e1Q6LTF9LDE4NTp7VDoxfSwxODY6e1Q6LTF9LDE4Nzp7VDoxfSwxODg6e1Q6LTF9LDE4OTp7VDoxfSwxOTA6e1Q6LTF9LDE5MTp7VDoxfSwxOTI6e1Q6LTF9LDE5Mzp7VDoxfSwxOTQ6e1Q6LTF9LDE5NTp7VDoxfSwxOTY6e1Q6LTF9LDE5Nzp7VDoxfSwxOTg6e1Q6LTF9LDE5OTp7VDoxfSwyMDA6e1Q6LTF9LDIwMTp7VDoxfSwyMDI6e1Q6LTF9LDIwMzp7VDoxfSwyMDQ6e1Q6LTF9LDIwNTp7VDoxfSwyMDY6e1Q6LTF9LDIwNzp7VDoxfSwyMDg6e1Q6LTF9LDIwOTp7VDoxfSwyMTA6e1Q6LTF9LDIxMTp7VDoxfSwyMTI6e1Q6LTF9LDIxMzp7VDoxfSwyMTQ6e1Q6LTF9LDIxNTp7VDoxfSwyMTY6e1Q6LTF9LDIxNzp7VDoxfSwyMTg6e1Q6LTF9LDIxOTp7VDoxfSwyMjA6e1Q6LTF9LDIyMTp7VDoxfSwyMjI6e1Q6LTF9LDIyMzp7VDoxfSwyMjQ6e1Q6LTF9LDIyNTp7VDoxfSwyMjY6e1Q6LTF9LDIyNzp7VDoxfSwyMjg6e1Q6LTF9LDIyOTp7VDoxfSwyMzA6e1Q6LTF9LDIzMTp7VDoxfSwyMzI6e1Q6LTF9LDIzMzp7VDoxfSwyMzQ6e1Q6LTF9LDIzNTp7VDoxfSwyMzY6e1Q6LTF9LDIzNzp7VDoxfSwyMzg6e1Q6LTF9LDIzOTp7VDoxfSwyNDA6e1Q6LTF9LDI0MTp7VDoxfSwyNDI6e1Q6LTF9LDI0Mzp7VDoxfSwyNDQ6e1Q6LTF9LDI0NTp7VDoxfSwyNDY6e1Q6LTF9LDI0Nzp7VDoxfSwyNDg6e1Q6LTF9LDI0OTp7VDoxfSwyNTA6e1Q6LTF9LDI1MTp7VDoxfSwyNTI6e1Q6LTF9LDI1Mzp7VDoxfSwyNTQ6e1Q6LTF9LDI1NTp7VDoxfSwyNTY6e1Q6LTF9LDI1Nzp7VDoxfSwyNTg6e1Q6LTF9LDI1OTp7VDoxfSwyNjA6e1Q6LTF9LDI2MTp7VDoxfSwyNjI6e1Q6LTF9LDI2Mzp7VDoxfSwyNjQ6e1Q6LTF9LDI2NTp7VDoxfSwyNjY6e1Q6LTF9LDI2Nzp7VDoxfSwyNjg6e1Q6LTF9LDI2OTp7VDoxfSwyNzA6e1Q6LTF9LDI3MTp7VDoxfSwyNzI6e1Q6LTF9LDI3Mzp7VDoxfSwyNzQ6e1Q6LTF9LDI3NTp7VDoxfSwyNzY6e1Q6LTF9LDI3Nzp7fSwyNzg6e1Q6MX0sMjc5OntUOi0xfSwyODA6e1Q6MX0sMjgxOntUOi0xfSwyODI6e1Q6MX0sMjgzOntUOjF9LDI4NDp7VDotMX0sMjg1OntUOjF9LDI4Njp7VDotMX0sMjg3OntUOjF9LDI4ODp7VDotMX0sMjg5OntUOjF9LDI5MDp7VDotMX0sMjkxOntUOjF9LDI5Mjp7VDotMX0sMjkzOntUOjF9LDI5NDp7VDotMX0sMjk1OntUOjF9LDI5Njp7VDotMX0sMjk3OntUOjF9LDI5ODp7VDotMX0sMjk5OntUOjF9LDMwMDp7VDotMX0sMzAxOntUOjF9LDMwMjp7VDotMX0sMzAzOntUOjF9LDMwNDp7VDotMX0sMzA1OntUOjF9LDMwNjp7VDotMX0sMzA3OntUOjF9LDMwODp7VDotMX0sMzA5OntUOjF9LDMxMDp7VDotMX0sMzExOntUOjF9LDMxMjp7VDotMX0sMzEzOntUOi0xfSwzMTQ6e1Q6MX0sMzE1OntUOi0xfSwzMTY6e1Q6MX0sMzE3OntUOi0xfSwzMTg6e1Q6MX0sMzE5OntUOi0xfSwzMjA6e1Q6MX0sMzIxOntUOi0xfSwzMjI6e1Q6MX0sMzIzOntUOi0xfSwzMjQ6e1Q6MX0sMzI1OntUOi0xfSwzMjY6e1Q6MX0sMzI3OntUOi0xfSwzMjg6e1Q6MX0sMzI5OntUOi0xfSwzMzA6e1Q6MX0sMzMxOntUOi0xfSwzMzI6e1Q6MX0sMzMzOntUOi0xfSwzMzQ6e1Q6MX0sMzM1OntmOm4xfSwzMzY6e1Q6LTF9LDMzNzp7ZjpzMSxUOjF9LDMzODp7VDotMX0sMzM5OntUOjF9LDM0MDp7VDotMX0sMzQxOntUOjF9LDM0Mjp7VDotMX0sMzQzOntUOjF9LDM0NDp7VDotMX0sMzQ1OntUOjF9LDM0Njp7VDotMX0sMzQ3OntUOjF9LDM0ODp7VDotMX0sMzQ5OntUOjF9LDM1MDp7VDotMX0sMzUxOnt9LDM1Mjp7fSwzNTM6e1Q6MX0sMzU0OntUOi0xfSwzNTU6e2Y6Zm59LDM1Nzp7fSwzNTg6e30sMzU5Ont9LDM2MDp7VDoxfSwzNjE6e30sMzYyOntmOkVzfSwzNjM6e30sMzY0Ont9LDM2Njp7fSwzNjc6e30sMzY4Ont9LDM2OTp7fSwzNzA6e30sMzcxOnt9LDM3Mjp7VDoxfSwzNzM6e1Q6LTF9LDM3NDp7VDoxfSwzNzU6e1Q6LTF9LDM3Njp7VDoxfSwzNzc6e1Q6LTF9LDM3ODp7VDoxfSwzNzk6e1Q6LTF9LDM4MDp7VDoxfSwzODE6e1Q6LTF9LDM4Mjp7VDoxfSwzODM6e1Q6LTF9LDM4NDp7VDoxfSwzODU6e1Q6LTF9LDM4Njp7VDoxfSwzODc6e1Q6LTF9LDM4ODp7VDoxfSwzODk6e1Q6LTF9LDM5MDp7VDoxfSwzOTE6e1Q6LTF9LDM5Mjp7VDoxfSwzOTM6e1Q6LTF9LDM5NDp7VDoxfSwzOTU6e1Q6LTF9LDM5Njp7fSwzOTc6e30sMzk4Ont9LDM5OTp7fSw0MDA6e30sNDAxOntUOjF9LDQwMzp7fSw0MDQ6e30sNDA1Ont9LDQwNjp7fSw0MDc6e30sNDA4Ont9LDQwOTp7fSw0MTA6e30sNDExOnt9LDQxMjp7fSw0MTM6e30sNDE0Ont9LDQxNTp7fSw0MTY6e30sNDE3Ont9LDQxODp7fSw0MTk6e30sNDIwOnt9LDQyMTp7fSw0MjI6e1Q6MX0sNDIzOntUOjF9LDQyNDp7VDotMX0sNDI1OntUOi0xfSw0MjY6e2Y6S2R9LDQyNzp7ZjpqZH0sNDI4Ont9LDQyOTp7VDoxfSw0MzA6e1Q6LTF9LDQzMTp7VDoxfSw0MzI6e1Q6LTF9LDQzMzp7VDoxfSw0MzQ6e1Q6LTF9LDQzNTp7VDoxfSw0MzY6e1Q6LTF9LDQzNzp7VDoxfSw0Mzg6e1Q6LTF9LDQzOTp7VDoxfSw0NDA6e1Q6LTF9LDQ0MTp7VDoxfSw0NDI6e1Q6LTF9LDQ0Mzp7VDoxfSw0NDQ6e1Q6LTF9LDQ0NTp7VDoxfSw0NDY6e1Q6LTF9LDQ0Nzp7VDoxfSw0NDg6e1Q6LTF9LDQ0OTp7VDoxfSw0NTA6e1Q6LTF9LDQ1MTp7VDoxfSw0NTI6e1Q6LTF9LDQ1Mzp7VDoxfSw0NTQ6e1Q6LTF9LDQ1NTp7VDoxfSw0NTY6e1Q6LTF9LDQ1Nzp7VDoxfSw0NTg6e1Q6LTF9LDQ1OTp7VDoxfSw0NjA6e1Q6LTF9LDQ2MTp7VDoxfSw0NjI6e1Q6LTF9LDQ2Mzp7VDoxfSw0NjQ6e1Q6LTF9LDQ2NTp7VDoxfSw0NjY6e1Q6LTF9LDQ2Nzp7VDoxfSw0Njg6e1Q6LTF9LDQ2OTp7VDoxfSw0NzA6e1Q6LTF9LDQ3MTp7fSw0NzI6e30sNDczOntUOjF9LDQ3NDp7VDotMX0sNDc1Ont9LDQ3Njp7ZjpKZH0sNDc3Ont9LDQ3ODp7fSw0Nzk6e1Q6MX0sNDgwOntUOi0xfSw0ODE6e1Q6MX0sNDgyOntUOi0xfSw0ODM6e1Q6MX0sNDg0OntUOi0xfSw0ODU6e2Y6RWR9LDQ4Njp7VDoxfSw0ODc6e1Q6LTF9LDQ4ODp7VDoxfSw0ODk6e1Q6LTF9LDQ5MDp7VDoxfSw0OTE6e1Q6LTF9LDQ5Mjp7VDoxfSw0OTM6e1Q6LTF9LDQ5NDp7Zjp6ZH0sNDk1OntUOjF9LDQ5Njp7VDotMX0sNDk3OntUOjF9LDQ5ODp7VDotMX0sNDk5Ont9LDUwMDp7VDoxfSw1MDE6e1Q6LTF9LDUwMjp7VDoxfSw1MDM6e1Q6LTF9LDUwNDp7fSw1MDU6e1Q6MX0sNTA2OntUOi0xfSw1MDc6e30sNTA4OntUOjF9LDUwOTp7VDotMX0sNTEwOntUOjF9LDUxMTp7VDotMX0sNTEyOnt9LDUxMzp7fSw1MTQ6e1Q6MX0sNTE1OntUOi0xfSw1MTY6e1Q6MX0sNTE3OntUOi0xfSw1MTg6e1Q6MX0sNTE5OntUOi0xfSw1MjA6e1Q6MX0sNTIxOntUOi0xfSw1MjI6e30sNTIzOnt9LDUyNDp7fSw1MjU6e30sNTI2Ont9LDUyNzp7fSw1Mjg6e1Q6MX0sNTI5OntUOi0xfSw1MzA6e1Q6MX0sNTMxOntUOi0xfSw1MzI6e1Q6MX0sNTMzOntUOi0xfSw1MzQ6e30sNTM1Ont9LDUzNjp7fSw1Mzc6e30sNTM4OntUOjF9LDUzOTp7VDotMX0sNTQwOntUOjF9LDU0MTp7VDotMX0sNTQyOntUOjF9LDU0ODp7fSw1NDk6e30sNTUwOntmOmZufSw1NTE6e2Y6eDB9LDU1Mjp7fSw1NTM6e30sNTU0OntUOjF9LDU1NTp7VDotMX0sNTU2OntUOjF9LDU1Nzp7VDotMX0sNTU4OntUOjF9LDU1OTp7VDotMX0sNTYwOntUOjF9LDU2MTp7VDotMX0sNTYyOnt9LDU2NDp7fSw1NjU6e1Q6MX0sNTY2OntUOi0xfSw1Njk6e1Q6MX0sNTcwOntUOi0xfSw1NzI6e30sNTczOntUOjF9LDU3NDp7VDotMX0sNTc3Ont9LDU3ODp7fSw1Nzk6e30sNTgwOnt9LDU4MTp7fSw1ODI6e30sNTgzOnt9LDU4NDp7fSw1ODU6e30sNTg2Ont9LDU4Nzp7fSw1ODg6e1Q6LTF9LDU4OTp7fSw1OTA6e1Q6MX0sNTkxOntUOi0xfSw1OTI6e1Q6MX0sNTkzOntUOi0xfSw1OTQ6e1Q6MX0sNTk1OntUOi0xfSw1OTY6e30sNTk3OntUOjF9LDU5ODp7VDotMX0sNTk5OntUOjF9LDYwMDp7VDotMX0sNjAxOntUOjF9LDYwMjp7VDotMX0sNjAzOntUOjF9LDYwNDp7VDotMX0sNjA1OntUOjF9LDYwNjp7VDotMX0sNjA3Ont9LDYwODp7VDoxfSw2MDk6e1Q6LTF9LDYxMDp7fSw2MTE6e1Q6MX0sNjEyOntUOi0xfSw2MTM6e1Q6MX0sNjE0OntUOi0xfSw2MTU6e1Q6MX0sNjE2OntUOi0xfSw2MTc6e1Q6MX0sNjE4OntUOi0xfSw2MTk6e1Q6MX0sNjIwOntUOi0xfSw2MjU6e30sNjI2OntUOjF9LDYyNzp7VDotMX0sNjI4OntUOjF9LDYyOTp7VDotMX0sNjMwOntUOjF9LDYzMTp7VDotMX0sNjMyOntmOkExfSw2MzM6e1Q6MX0sNjM0OntUOi0xfSw2MzU6e1Q6MSxmOkUxfSw2MzY6e1Q6LTF9LDYzNzp7ZjpTb30sNjM4OntUOjF9LDYzOTp7fSw2NDA6e1Q6LTF9LDY0MTp7VDoxfSw2NDI6e1Q6LTF9LDY0Mzp7VDoxfSw2NDQ6e30sNjQ1OntUOi0xfSw2NDY6e1Q6MX0sNjQ4OntUOjF9LDY0OTp7fSw2NTA6e1Q6LTF9LDY1MTp7Zjpmdn0sNjUyOnt9LDY1Mzp7VDoxfSw2NTQ6e1Q6LTF9LDY1NTp7VDoxfSw2NTY6e1Q6LTF9LDY1Nzp7VDoxfSw2NTg6e1Q6LTF9LDY1OTp7fSw2NjA6e1Q6MX0sNjYxOnt9LDY2Mjp7VDotMX0sNjYzOnt9LDY2NDp7VDoxfSw2NjU6e30sNjY2OntUOi0xfSw2Njc6e30sNjY4Ont9LDY2OTp7fSw2NzE6e1Q6MX0sNjcyOntUOi0xfSw2NzM6e1Q6MX0sNjc0OntUOi0xfSw2NzU6e30sNjc2Ont9LDY3Nzp7fSw2Nzg6e30sNjc5Ont9LDY4MDp7fSw2ODE6e30sMTAyNDp7fSwxMDI1Ont9LDEwMjY6e1Q6MX0sMTAyNzp7VDotMX0sMTAyODp7VDoxfSwxMDI5OntUOi0xfSwxMDMwOnt9LDEwMzE6e1Q6MX0sMTAzMjp7VDotMX0sMTAzMzp7VDoxfSwxMDM0OntUOi0xfSwxMDM1Ont9LDEwMzY6e30sMTAzNzp7fSwxMDM4OntUOjF9LDEwMzk6e1Q6LTF9LDEwNDA6e30sMTA0MTp7VDoxfSwxMDQyOntUOi0xfSwxMDQzOnt9LDEwNDQ6e30sMTA0NTp7fSwxMDQ2OntUOjF9LDEwNDc6e1Q6LTF9LDEwNDg6e1Q6MX0sMTA0OTp7VDotMX0sMTA1MDp7fSwxMDUxOntUOjF9LDEwNTI6e1Q6MX0sMTA1Mzp7ZjpRZH0sMTA1NDp7VDoxfSwxMDU1Ont9LDEwNTY6e1Q6MX0sMTA1Nzp7VDotMX0sMTA1ODp7VDoxfSwxMDU5OntUOi0xfSwxMDYxOnt9LDEwNjI6e1Q6MX0sMTA2Mzp7VDotMX0sMTA2NDp7VDoxfSwxMDY1OntUOi0xfSwxMDY2OntUOjF9LDEwNjc6e1Q6LTF9LDEwNjg6e1Q6MX0sMTA2OTp7VDotMX0sMTA3MDp7VDoxfSwxMDcxOntUOi0xfSwxMDcyOntUOjF9LDEwNzM6e1Q6LTF9LDEwNzU6e1Q6MX0sMTA3Njp7VDotMX0sMTA3Nzp7VDoxfSwxMDc4OntUOi0xfSwxMDc5OntUOjF9LDEwODA6e1Q6LTF9LDEwODE6e1Q6MX0sMTA4Mjp7VDotMX0sMTA4Mzp7VDoxfSwxMDg0OntUOi0xfSwxMDg1Ont9LDEwODY6e1Q6MX0sMTA4Nzp7VDotMX0sMTA4ODp7VDoxfSwxMDg5OntUOi0xfSwxMDkwOntUOjF9LDEwOTE6e1Q6LTF9LDEwOTI6e1Q6MX0sMTA5Mzp7VDotMX0sMTA5NDp7VDoxfSwxMDk1OntUOi0xfSwxMDk2Ont9LDEwOTc6e1Q6MX0sMTA5ODp7fSwxMDk5OntUOi0xfSwxMTAwOntUOjF9LDExMDE6e1Q6LTF9LDExMDI6e30sMTEwMzp7fSwxMTA0Ont9LDExMDU6e30sMTExMTp7fSwxMTEyOnt9LDExMTM6e1Q6MX0sMTExNDp7VDotMX0sMTExNTp7VDoxfSwxMTE2OntUOi0xfSwxMTE3Ont9LDExMTg6e1Q6MX0sMTExOTp7VDotMX0sMTEyMDp7VDoxfSwxMTIxOntUOi0xfSwxMTIyOntUOjF9LDExMjM6e1Q6LTF9LDExMjQ6e1Q6MX0sMTEyNTp7VDotMX0sMTEyNjp7fSwxMTI4OntUOjF9LDExMjk6e1Q6LTF9LDExMzA6e30sMTEzMTp7VDoxfSwxMTMyOntUOi0xfSwxMTMzOntUOjF9LDExMzQ6e1Q6LTF9LDExMzU6e1Q6MX0sMTEzNjp7VDotMX0sMTEzNzp7VDoxfSwxMTM4OntUOi0xfSwxMTM5OntUOjF9LDExNDA6e1Q6LTF9LDExNDE6e30sMTE0Mjp7VDoxfSwxMTQzOntUOi0xfSwxMTQ0OntUOjF9LDExNDU6e1Q6LTF9LDExNDY6e30sMTE0Nzp7VDoxfSwxMTQ4OntUOi0xfSwxMTQ5OntUOjF9LDExNTA6e1Q6LTF9LDExNTI6e1Q6MX0sMTE1Mzp7VDotMX0sMTE1NDp7VDotMX0sMTE1NTp7VDotMX0sMTE1Njp7VDotMX0sMTE1Nzp7VDoxfSwxMTU4OntUOi0xfSwxMTU5OntUOjF9LDExNjA6e1Q6LTF9LDExNjE6e1Q6MX0sMTE2Mjp7VDotMX0sMTE2Mzp7VDoxfSwxMTY0OntUOi0xfSwxMTY1OntUOjF9LDExNjY6e1Q6LTF9LDExNjc6e1Q6MX0sMTE2ODp7VDotMX0sMTE2OTp7VDoxfSwxMTcwOntUOi0xfSwxMTcxOnt9LDExNzI6e1Q6MX0sMTE3Mzp7VDotMX0sMTE3Nzp7fSwxMTc4OntUOjF9LDExODA6e30sMTE4MTp7fSwxMTgyOnt9LDIwNDg6e1Q6MX0sMjA0OTp7VDotMX0sMjA1MDp7fSwyMDUxOntUOjF9LDIwNTI6e1Q6LTF9LDIwNTM6e30sMjA1NDp7fSwyMDU1OntUOjF9LDIwNTY6e1Q6LTF9LDIwNTc6e1Q6MX0sMjA1ODp7VDotMX0sMjA2MDp7fSwyMDY3Ont9LDIwNjg6e1Q6MX0sMjA2OTp7VDotMX0sMjA3MDp7fSwyMDcxOnt9LDIwNzI6e1Q6MX0sMjA3Mzp7VDotMX0sMjA3NTp7fSwyMDc2Ont9LDIwNzc6e1Q6MX0sMjA3ODp7VDotMX0sMjA3OTp7fSwyMDgwOntUOjF9LDIwODE6e1Q6LTF9LDIwODI6e30sMjA4Mzp7VDoxfSwyMDg0OntUOi0xfSwyMDg1OntUOjF9LDIwODY6e1Q6LTF9LDIwODc6e1Q6MX0sMjA4ODp7VDotMX0sMjA4OTp7VDoxfSwyMDkwOntUOi0xfSwyMDkxOnt9LDIwOTI6e30sMjA5Mzp7VDoxfSwyMDk0OntUOi0xfSwyMDk1Ont9LDIwOTY6e1Q6MX0sMjA5Nzp7VDotMX0sMjA5ODp7VDoxfSwyMDk5OntUOi0xfSwyMTAwOntUOjF9LDIxMDE6e1Q6LTF9LDIxMDI6e30sMjEwMzp7VDoxfSwyMTA0OntUOi0xfSwyMTA1Ont9LDIxMDY6e1Q6MX0sMjEwNzp7VDotMX0sMjEwODp7fSwyMTA5OntUOjF9LDIxMTA6e1Q6LTF9LDIxMTE6e1Q6MX0sMjExMjp7VDotMX0sMjExMzp7VDoxfSwyMTE0OntUOi0xfSwyMTE1Ont9LDIxMTY6e30sMjExNzp7fSwyMTE4OntUOjF9LDIxMTk6e1Q6LTF9LDIxMjA6e30sMjEyMTp7VDoxfSwyMTIyOntUOi0xfSwyMTIzOntUOjF9LDIxMjQ6e1Q6LTF9LDIxMjU6e30sMjEyNjp7VDoxfSwyMTI3OntUOi0xfSwyMTI4Ont9LDIxMjk6e1Q6MX0sMjEzMDp7VDotMX0sMjEzMTp7VDoxfSwyMTMyOntUOi0xfSwyMTMzOntUOjF9LDIxMzQ6e30sMjEzNTp7fSwyMTM2Ont9LDIxMzc6e1Q6MX0sMjEzODp7VDotMX0sMjEzOTp7VDoxfSwyMTQwOntUOi0xfSwyMTQxOnt9LDMwNzI6e30sMzA3Mzp7fSw0MDk2OntUOjF9LDQwOTc6e1Q6LTF9LDUwMDI6e1Q6MX0sNTAwMzp7VDotMX0sNTA4MTp7VDoxfSw1MDgyOntUOi0xfSw1MDgzOnt9LDUwODQ6e1Q6MX0sNTA4NTp7VDotMX0sNTA4Njp7VDoxfSw1MDg3OntUOi0xfSw1MDg4Ont9LDUwODk6e30sNTA5MDp7fSw1MDkyOntUOjF9LDUwOTM6e1Q6LTF9LDUwOTQ6e30sNTA5NTp7VDoxfSw1MDk2OntUOi0xfSw1MDk3Ont9LDUwOTk6e30sNTEwMDp7fSw1MTAxOnt9LDUxMDI6e30sNTEwMzp7fSw1MTA1Ont9LDUxMDg6e30sNTEwOTp7fSw1MTEwOnt9LDUxMTE6e30sNTExMjp7fSw1MTEzOnt9LDUxMTQ6e30sNTExNzp7fSw1MTI3Ont9LDUxMzA6e30sNTEzMTp7fSw1MTMyOnt9LDUxMzQ6e30sNTEzNTp7fSw2NTUzNTp7bjoiIn19LFNuPXs2OntmOmtufSwxMDp7ZjpiYX0sMTI6e2Y6ZXJ9LDEzOntmOmVyfSwxNDp7Zjphcn0sMTU6e2Y6YXJ9LDE2OntmOl9yfSwxNzp7Zjphcn0sMTg6e2Y6YXJ9LDE5OntmOmVyfSwyMDp7Zjp3c30sMjE6e2Y6d3N9LDIzOntmOkVzfSwyNDp7ZjpUc30sMjU6e2Y6YXJ9LDI2Ont9LDI3Ont9LDI4OntmOnR1fSwyOTp7fSwzNDp7Zjphcn0sMzU6e2Y6RnN9LDM4OntmOl9yfSwzOTp7Zjpfcn0sNDA6e2Y6X3J9LDQxOntmOl9yfSw0Mjp7Zjphcn0sNDM6e2Y6YXJ9LDQ3OntmOmNofSw0OTp7ZjpQbH0sNTE6e2Y6ZXJ9LDYwOnt9LDYxOntmOk9sfSw2NDp7Zjphcn0sNjU6e2Y6TWx9LDY2OntmOmVyfSw3Nzp7fSw4MDp7fSw4MTp7fSw4Mjp7fSw4NTp7Zjplcn0sODk6e30sOTA6e30sOTE6e30sOTI6e2Y6QWx9LDkzOntmOml1fSw5NDp7fSw5NTp7Zjphcn0sOTY6e30sOTc6e30sOTk6e2Y6YXJ9LDEyNTp7ZjpTc30sMTI4OntmOllsfSwxMjk6e2Y6eWx9LDEzMDp7Zjplcn0sMTMxOntmOmFyfSwxMzI6e2Y6YXJ9LDEzMzp7ZjpTbH0sMTM0Ont9LDE0MDp7Zjp1dX0sMTQxOntmOmVyfSwxNDQ6e30sMTQ2OntmOnh1fSwxNTE6e30sMTUyOnt9LDE1Mzp7fSwxNTQ6e30sMTU1Ont9LDE1Njp7Zjplcn0sMTU3Ont9LDE1ODp7fSwxNjA6e2Y6bXV9LDE2MTp7Zjp2dX0sMTc0Ont9LDE3NTp7fSwxNzY6e30sMTc3Ont9LDE3ODp7fSwxODA6e30sMTgxOnt9LDE4Mjp7fSwxODQ6e30sMTg1Ont9LDE4OTp7ZjpWbH0sMTkwOntmOkdsfSwxOTM6e2Y6YmF9LDE5Nzp7fSwxOTg6e30sMTk5Ont9LDIwMDp7fSwyMDE6e30sMjAyOntmOmFyfSwyMDM6e30sMjA0Ont9LDIwNTp7fSwyMDY6e30sMjA3Ont9LDIwODp7fSwyMDk6e30sMjEwOnt9LDIxMTp7fSwyMTM6e30sMjE1Ont9LDIxNjp7fSwyMTc6e30sMjE4OntmOmVyfSwyMjA6e30sMjIxOntmOmFyfSwyMjI6e30sMjI0OntmOnpsfSwyMjU6e2Y6RWx9LDIyNjp7ZjpiYX0sMjI3Ont9LDIyOTp7ZjpudX0sMjMzOnt9LDIzNTp7Zjp2MX0sMjM2OntmOnAxfSwyMzc6e30sMjM5Ont9LDI0MDp7fSwyNDE6e30sMjQyOnt9LDI0NDp7fSwyNDU6e30sMjQ2Ont9LDI0Nzp7fSwyNDg6e30sMjQ5Ont9LDI1MTp7fSwyNTI6e2Y6Q2x9LDI1Mzp7ZjpMbH0sMjU1OntmOmJsfSwyNTY6e30sMjU5Ont9LDI5MDp7fSwzMTE6e30sMzEyOnt9LDMxNTp7fSwzMTc6e2Y6aHN9LDMxODp7fSwzMTk6e30sMzIwOnt9LDMzMDp7fSwzMzE6e30sMzMzOnt9LDMzNDp7fSwzMzU6e30sMzM2Ont9LDMzNzp7fSwzMzg6e30sMzM5Ont9LDM0MDp7fSwzNTE6e30sMzUyOntmOmFyfSwzNTM6e2Y6YmF9LDQwMTp7fSw0MDI6e30sNDAzOnt9LDQwNDp7fSw0MDU6e30sNDA2Ont9LDQwNzp7fSw0MDg6e30sNDI1Ont9LDQyNjp7fSw0Mjc6e30sNDI4Ont9LDQyOTp7fSw0MzA6e2Y6cWx9LDQzMTp7Zjphcn0sNDMyOnt9LDQzMzp7fSw0MzQ6e30sNDM3Ont9LDQzODp7ZjpjdX0sNDM5OntmOmFyfSw0NDA6e2Y6b3V9LDQ0MTp7fSw0NDI6e2Y6TXR9LDQ0Mzp7fSw0NDQ6e2Y6ZXJ9LDQ0NTp7fSw0NDY6e30sNDQ4OntmOmJhfSw0NDk6e2Y6UmwscjoyfSw0NTA6e2Y6YmF9LDUxMjp7Zjprc30sNTEzOntmOmd1fSw1MTU6e2Y6Wmx9LDUxNjp7ZjpCbH0sNTE3OntmOkpsfSw1MTk6e2Y6X3V9LDUyMDp7ZjpEbH0sNTIzOnt9LDU0NTp7Zjp5c30sNTQ5OntmOl9zfSw1NjY6e30sNTc0OntmOk5sfSw2Mzg6e2Y6V2x9LDY1OTp7fSwxMDQ4Ont9LDEwNTQ6e2Y6VWx9LDEwODQ6e30sMTIxMjp7ZjpldX0sMjA0ODp7ZjpsdX0sMjA0OTp7fSwyMDUwOnt9LDIwNTE6e30sMjA1Mjp7fSwyMDUzOnt9LDIwNTQ6e30sMjA1NTp7fSwyMDU2Ont9LDIwNTc6e2Y6dzB9LDIwNTg6e30sMjA1OTp7fSwyMDYwOnt9LDIwNjE6e30sMjA2Mjp7fSwyMDYzOnt9LDIwNjQ6e30sMjA2Njp7fSwyMDY3Ont9LDIxMjg6e30sMjEyOTp7fSwyMTMwOnt9LDIxMzE6e30sMjEzMjp7fSwyMTMzOnt9LDIxMzQ6e30sMjEzNTp7fSwyMTM2Ont9LDIxMzc6e30sMjEzODp7fSwyMTQ2Ont9LDIxNDc6e3I6MTJ9LDIxNDg6e30sMjE0OTp7fSwyMTUwOnt9LDIxNTE6e2Y6YmF9LDIxNTI6e30sMjE1NDp7fSwyMTU1Ont9LDIxNTY6e30sMjE2MTp7fSwyMTYyOnt9LDIxNjQ6e30sMjE2NTp7fSwyMTY2Ont9LDIxNjc6e30sMjE2ODp7fSwyMTY5Ont9LDIxNzA6e30sMjE3MTp7fSwyMTcyOntmOmR1LHI6MTJ9LDIxNzM6e2Y6YTEscjoxMn0sMjE3NDp7fSwyMTc1Ont9LDIxODA6e30sMjE4MTp7fSwyMTgyOnt9LDIxODM6e30sMjE4NDp7fSwyMTg1Ont9LDIxODY6e30sMjE4Nzp7fSwyMTg4OntmOmFyLHI6MTJ9LDIxODk6e30sMjE5MDp7cjoxMn0sMjE5MTp7fSwyMTkyOnt9LDIxOTQ6e30sMjE5NTp7fSwyMTk2OntmOlFsLHI6MTJ9LDIxOTc6e30sMjE5ODp7ZjpKaCxyOjEyfSwyMTk5Ont9LDIyMDA6e30sMjIwMTp7fSwyMjAyOntmOnJ1LHI6MTJ9LDIyMDM6e2Y6YmF9LDIyMDQ6e30sMjIwNTp7fSwyMjA2Ont9LDIyMDc6e30sMjIxMTp7ZjpJbH0sMjIxMjp7fSwyMjEzOnt9LDIyMTQ6e30sMjIxNTp7fSw0MDk3Ont9LDQwOTg6e2Y6WHZ9LDQwOTk6e2Y6enZ9LDQxMDI6e30sNDEwMzp7fSw0MTA1Ont9LDQxMDY6e30sNDEwNzp7fSw0MTA4Ont9LDQxMDk6e2Y6JHZ9LDQxMTY6e30sNDExNzp7ZjpLdn0sNDExODp7fSw0MTE5OntmOlp2fSw0MTIwOntmOnF2fSw0MTIxOntmOlF2fSw0MTIyOntmOmUyfSw0MTIzOntmOnIyfSw0MTI0Ont9LDQxMjU6e2Y6anZ9LDQxMjY6e30sNDEyNzp7fSw0MTI4Ont9LDQxMjk6e30sNDEzMDp7fSw0MTMyOnt9LDQxMzM6e2Y6WXZ9LDQxMzQ6e2Y6ZXJ9LDQxMzU6e30sNDE0Njp7fSw0MTQ3Ont9LDQxNDg6e30sNDE0OTp7fSw0MTU0Ont9LDQxNTY6e30sNDE1Nzp7fSw0MTU4OntmOmEyfSw0MTU5OntmOnQyfSw0MTYwOnt9LDQxNjE6e30sNDE2Mzp7fSw0MTY0OntmOnB1fSw0MTY1Ont9LDQxNjY6e30sNDE2ODp7fSw0MTcwOnt9LDQxNzE6e30sNDE3NDp7fSw0MTc1Ont9LDQxNzY6e30sNDE3Nzp7ZjpKdn0sNDE4Nzp7fSw0MTg4OntmOmh1fSw0MTg5Ont9LDQxOTE6e30sNDE5Mjp7fSw0MTkzOnt9LDQxOTQ6e30sNDE5NTp7fSw0MTk2Ont9LDQxOTc6e30sNDE5ODp7fSw0MTk5Ont9LDQyMDA6e30sMDp7Zjprc30sMTp7fSwyOntmOlR1fSwzOntmOkZ1fSw0OntmOnd1fSw1OntmOkF1fSw3OntmOkV1fSw4Ont9LDk6e2Y6dzB9LDExOnt9LDIyOntmOmVyfSwzMDp7ZjpIbH0sMzE6e30sMzI6e30sMzM6e2Y6eXN9LDM2Ont9LDM3OntmOl9zfSw1MDp7Zjp5dX0sNjI6e30sNTI6e30sNjc6e2Y6JGx9LDY4OntmOmVyfSw2OTp7fSw4Njp7fSwxMjY6e30sMTI3OntmOmt1fSwxMzU6e30sMTM2Ont9LDEzNzp7fSwxNDM6e2Y6Q3V9LDE0NTp7fSwxNDg6e30sMTQ5Ont9LDE1MDp7fSwxNjk6e30sMTcxOnt9LDE4ODp7fSwxOTE6e30sMTkyOnt9LDE5NDp7fSwxOTU6e30sMjE0OntmOlN1fSwyMjM6e30sMjM0Ont9LDM1NDp7fSw0MjE6e30sNTE4OntmOmtufSw1MjE6e2Y6dzB9LDUzNjp7ZjpUc30sNTQ3OntmOkZzfSw1NjE6e30sNTc5OntmOktsfSwxMDMwOntmOmtufSwxMDMzOntmOncwfSwxMDkxOntmOmpsfSwyMTU3Ont9LDIxNjM6e30sMjE3Nzp7fSwyMjQwOnt9LDIyNDE6e30sMjI0Mjp7fSwyMjQzOnt9LDIyNDQ6e30sMjI0NTp7fSwyMjQ2Ont9LDIyNDc6e30sMjI0ODp7fSwyMjQ5Ont9LDIyNTA6e30sMjI1MTp7fSwyMjYyOntyOjEyfSwxMDE6e30sMTAyOnt9LDEwNTp7fSwxMDY6e30sMTA3Ont9LDEwOTp7fSwxMTI6e30sMTE0Ont9LDI5MjgyOnt9fTtmdW5jdGlvbiBQcihlLGEscix0KXt2YXIgbj1hO2lmKCFpc05hTihuKSl7dmFyIGk9dHx8KHJ8fFtdKS5sZW5ndGh8fDAsZj1lLm5leHQoNCk7Zi53cml0ZV9zaGlmdCgyLG4pLGYud3JpdGVfc2hpZnQoMixpKSxpPjAmJiRpKHIpJiZlLnB1c2gocil9fWZ1bmN0aW9uIEVmKGUsYSl7dmFyIHI9YXx8e30sdD1yLmRlbnNlIT1udWxsP3IuZGVuc2U6YWMsbj17fTt0JiYoblsiIWRhdGEiXT1bXSksZT1TdChlLCI8IS0tIiwiLS0+Iik7dmFyIGk9ZS5tYXRjaCgvPHRhYmxlL2kpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+Iik7dmFyIGY9ZS5tYXRjaCgvPFwvdGFibGUvaSkscz1pLmluZGV4LGM9ZiYmZi5pbmRleHx8ZS5sZW5ndGgsbz1YYyhlLnNsaWNlKHMsYyksLyg6Pzx0cltePD5dKj4pL2ksIjx0cj4iKSxsPS0xLHU9MCx4PTAsaD0wLGc9e3M6e3I6MWU3LGM6MWU3fSxlOntyOjAsYzowfX0sbT1bXTtmb3Iocz0wO3M8by5sZW5ndGg7KytzKXt2YXIgZD1vW3NdLnRyaW0oKSxwPWQuc2xpY2UoMCwzKS50b0xvd2VyQ2FzZSgpO2lmKHA9PSI8dHIiKXtpZigrK2wsci5zaGVldFJvd3MmJnIuc2hlZXRSb3dzPD1sKXstLWw7YnJlYWt9dT0wO2NvbnRpbnVlfWlmKCEocCE9Ijx0ZCImJnAhPSI8dGgiKSl7dmFyIHc9ZC5zcGxpdCgvPFwvdFtkaF0+L2kpO2ZvcihjPTA7Yzx3Lmxlbmd0aDsrK2Mpe3ZhciBfPXdbY10udHJpbSgpO2lmKF8ubWF0Y2goLzx0W2RoXS9pKSl7Zm9yKHZhciB5PV8sUj0wO3kuY2hhckF0KDApPT0iPCImJihSPXkuaW5kZXhPZigiPiIpKT4tMTspeT15LnNsaWNlKFIrMSk7Zm9yKHZhciBQPTA7UDxtLmxlbmd0aDsrK1Ape3ZhciBiPW1bUF07Yi5zLmM9PXUmJmIucy5yPGwmJmw8PWIuZS5yJiYodT1iLmUuYysxLFA9LTEpfXZhciBOPW9lKF8uc2xpY2UoMCxfLmluZGV4T2YoIj4iKSkpO2g9Ti5jb2xzcGFuPytOLmNvbHNwYW46MSwoKHg9K04ucm93c3Bhbik+MXx8aD4xKSYmbS5wdXNoKHtzOntyOmwsYzp1fSxlOntyOmwrKHh8fDEpLTEsYzp1K2gtMX19KTt2YXIgRD1OLnR8fE5bImRhdGEtdCJdfHwiIjtpZigheS5sZW5ndGgpe3UrPWg7Y29udGludWV9aWYoeT1TaSh5KSxnLnMucj5sJiYoZy5zLnI9bCksZy5lLnI8bCYmKGcuZS5yPWwpLGcucy5jPnUmJihnLnMuYz11KSxnLmUuYzx1JiYoZy5lLmM9dSksIXkubGVuZ3RoKXt1Kz1oO2NvbnRpbnVlfXZhciBCPXt0OiJzIix2Onl9O3IucmF3fHwheS50cmltKCkubGVuZ3RofHxEPT0icyJ8fCh5PT09IlRSVUUiP0I9e3Q6ImIiLHY6ITB9Onk9PT0iRkFMU0UiP0I9e3Q6ImIiLHY6ITF9OmlzTmFOKE9yKHkpKT9pc05hTih5dCh5KS5nZXREYXRlKCkpP3kuY2hhckNvZGVBdCgwKT09MzUmJmRyW3ldIT1udWxsJiYoQi50PSJlIixCLnc9eSxCLnY9ZHJbeV0pOihCPXt0OiJkIix2OnhyKHkpfSxyLlVUQz09PSExJiYoQi52PVVhKEIudikpLHIuY2VsbERhdGVzfHwoQj17dDoibiIsdjpvcihCLnYpfSksQi56PXIuZGF0ZU5GfHxUZVsxNF0pOkI9e3Q6Im4iLHY6T3IoeSl9KSxCLmNlbGxUZXh0IT09ITEmJihCLnc9eSksdD8oblsiIWRhdGEiXVtsXXx8KG5bIiFkYXRhIl1bbF09W10pLG5bIiFkYXRhIl1bbF1bdV09Qik6bltJZSh7cjpsLGM6dX0pXT1CLHUrPWh9fX19cmV0dXJuIG5bIiFyZWYiXT1EZShnKSxtLmxlbmd0aCYmKG5bIiFtZXJnZXMiXT1tKSxufWZ1bmN0aW9uIHMyKGUpe3JldHVybiBybyhTdHJpbmcoZSkucmVwbGFjZSgvIi9nLCInIikpfWZ1bmN0aW9uICR0KGUpe3JldHVybiBlJiZlLnJnYj8iIyIrU3RyaW5nKGUucmdiKS5zbGljZSgtNik6IiJ9ZnVuY3Rpb24gZjIoZSl7cmV0dXJuIGU/IiciK3MyKGUpLnJlcGxhY2UoLycvZywiXFwnIikrIiciOiIifWZ1bmN0aW9uIGMyKGUpe3N3aXRjaChlKXtjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmNhc2UibWVkaXVtRGFzaGVkIjpyZXR1cm4iZGFzaGVkIjtjYXNlImRvdHRlZCI6Y2FzZSJoYWlyIjpyZXR1cm4iZG90dGVkIjtjYXNlImRvdWJsZSI6cmV0dXJuImRvdWJsZSI7Y2FzZSJub25lIjpyZXR1cm4ibm9uZSI7ZGVmYXVsdDpyZXR1cm4ic29saWQifX1mdW5jdGlvbiBvMihlKXtzd2l0Y2goZSl7Y2FzZSJtZWRpdW0iOmNhc2UibWVkaXVtRGFzaERvdCI6Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpjYXNlIm1lZGl1bURhc2hlZCI6cmV0dXJuIjJweCI7Y2FzZSJ0aGljayI6cmV0dXJuIjNweCI7Y2FzZSJoYWlyIjpyZXR1cm4iMXB4IjtkZWZhdWx0OnJldHVybiIxcHgifX1mdW5jdGlvbiBEMChlLGEscil7aWYoISghcnx8IXIuc3R5bGV8fHIuc3R5bGU9PSJub25lIikpe3ZhciB0PSR0KHIuY29sb3IpfHwiIzAwMDAwMCI7ZS5wdXNoKCJib3JkZXItIithKyI6IitvMihyLnN0eWxlKSsiICIrYzIoci5zdHlsZSkrIiAiK3QpfX1mdW5jdGlvbiBsMihlLGEpe2lmKCFhfHwhYS5jZWxsU3R5bGVzfHwhZXx8IWUucylyZXR1cm4iIjt2YXIgcj1lLnMsdD1bXSxuPXIuZm9udHx8e307bi5uYW1lJiZ0LnB1c2goImZvbnQtZmFtaWx5OiIrZjIobi5uYW1lKSksbi5zeiYmdC5wdXNoKCJmb250LXNpemU6IituLnN6KyJwdCIpLG4uYm9sZCYmdC5wdXNoKCJmb250LXdlaWdodDpib2xkIiksbi5pdGFsaWMmJnQucHVzaCgiZm9udC1zdHlsZTppdGFsaWMiKTt2YXIgaT1bXTtuLnVuZGVybGluZSYmaS5wdXNoKCJ1bmRlcmxpbmUiKSxuLnN0cmlrZSYmaS5wdXNoKCJsaW5lLXRocm91Z2giKSxpLmxlbmd0aCYmdC5wdXNoKCJ0ZXh0LWRlY29yYXRpb246IitpLmpvaW4oIiAiKSksbi5jb2xvciYmJHQobi5jb2xvcikmJnQucHVzaCgiY29sb3I6IiskdChuLmNvbG9yKSk7dmFyIGY9ci5maWxsfHxyLHM9IiI7Zi5wYXR0ZXJuVHlwZSE9Im5vbmUiJiZmLnBhdHRlcm5UeXBlIT0iZ3JheTEyNSImJihzPSR0KGYuZmdDb2xvcil8fCR0KGYuYmdDb2xvcikpLHMmJnQucHVzaCgiYmFja2dyb3VuZC1jb2xvcjoiK3MpO3ZhciBjPXIuYWxpZ25tZW50fHx7fTtpZihjLmhvcml6b250YWwmJnQucHVzaCgidGV4dC1hbGlnbjoiK2MuaG9yaXpvbnRhbCksYy52ZXJ0aWNhbCYmdC5wdXNoKCJ2ZXJ0aWNhbC1hbGlnbjoiK2MudmVydGljYWwpLGMudGV4dFJvdGF0aW9uIT1udWxsJiZjLnRleHRSb3RhdGlvbiE9PTApe3ZhciBvPWMudGV4dFJvdGF0aW9uPT0yNTU/OTA6Yy50ZXh0Um90YXRpb24+OTA/OTAtYy50ZXh0Um90YXRpb246Yy50ZXh0Um90YXRpb247dC5wdXNoKCJ0cmFuc2Zvcm06cm90YXRlKCIrbysiZGVnKSIpLHQucHVzaCgidHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIiKX12YXIgbD1yLmJvcmRlcnx8e307cmV0dXJuIEQwKHQsImxlZnQiLGwubGVmdHx8bC5zdGFydCksRDAodCwicmlnaHQiLGwucmlnaHR8fGwuZW5kKSxEMCh0LCJ0b3AiLGwudG9wKSxEMCh0LCJib3R0b20iLGwuYm90dG9tKSx0LmpvaW4oIjsiKX1mdW5jdGlvbiB1MihlLGEscix0LG4pe2lmKCFhfHwhZSlyZXR1cm4iIjt2YXIgaT1lLnN8fHt9LGY9aS5hbGlnbm1lbnR8fHt9LHM9W107aWYoKGEuYnJvd3NlclBpeGVsc3x8YS5hdXRvRml0KSYmcy5wdXNoKCJib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDJweDttaW4td2lkdGg6MCIpLGYud3JhcFRleHQ/cy5wdXNoKCJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDtvdmVyZmxvdy13cmFwOm5vcm1hbDt3b3JkLWJyZWFrOm5vcm1hbCIpOihzLnB1c2goIndoaXRlLXNwYWNlOnByZSIpLGYuc2hyaW5rVG9GaXR8fGEub3ZlcmZsb3c9PSJjbGlwInx8YS5vdmVyZmxvdz09ImhpZGRlbiI/cy5wdXNoKCJvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzpjbGlwIik6cy5wdXNoKCJvdmVyZmxvdzp2aXNpYmxlIikpLGYuc2hyaW5rVG9GaXQmJm4mJnIhPW51bGwpe2Zvcih2YXIgYz0wLG89dHx8MSxsPTA7bDxvOysrbCljKz1JMChuW3IrbF0pO3ZhciB1PUJzKGUsaSxhKTtpZihjPjAmJnU+Yyl7dmFyIHg9TWF0aC5tYXgoLjI1LE1hdGgubWluKDEsYy91KSk7cy5wdXNoKCJmb250LXNpemU6IitNYXRoLm1heCgxLEx0KGkpKngpKyJwdCIpfX1yZXR1cm4gcy5qb2luKCI7Iil9ZnVuY3Rpb24gSTAoZSl7cmV0dXJuIE1zKGUpfWZ1bmN0aW9uIENuKGUpe3JldHVybiBlP2UuaHB4IT1udWxsP2UuaHB4OmUuaHB0IT1udWxsP1V0KGUuaHB0KToyMDoyMH1mdW5jdGlvbiBoMihlLGEscix0KXtmb3IodmFyIG49ZVsiIW1lcmdlcyJdfHxbXSxpPVtdLGY9e30scz1lWyIhZGF0YSJdIT1udWxsLGM9KGVbIiFyb3dzIl18fFtdKVtyXSxvPXQmJnQuX2h0bWxDb2xzfHxlWyIhY29scyJdfHxbXSxsPWEucy5jO2w8PWEuZS5jOysrbCl7Zm9yKHZhciB1PTAseD0wLGg9MDtoPG4ubGVuZ3RoOysraClpZighKG5baF0ucy5yPnJ8fG5baF0ucy5jPmwpJiYhKG5baF0uZS5yPHJ8fG5baF0uZS5jPGwpKXtpZihuW2hdLnMucjxyfHxuW2hdLnMuYzxsKXt1PS0xO2JyZWFrfXU9bltoXS5lLnItbltoXS5zLnIrMSx4PW5baF0uZS5jLW5baF0ucy5jKzE7YnJlYWt9aWYoISh1PDApKXt2YXIgZz1IZShsKStHZShyKSxtPXM/KGVbIiFkYXRhIl1bcl18fFtdKVtsXTplW2ddLGQ9bTtpZihtJiZtLnQ9PSJuIiYmbS52IT1udWxsJiYhaXNGaW5pdGUobS52KSYmKGlzTmFOKG0udik/bT17dDoiZSIsdjozNix3OmJyWzM2XX06bT17dDoiZSIsdjo3LHc6YnJbN119LGQ9bSksdC5jZWxsU3R5bGVzKXt2YXIgcD17fTtvW2xdJiZvW2xdLnMmJmthKHAsb1tsXS5zKSxjJiZjLnMmJmthKHAsYy5zKSxtJiZtLnMmJmthKHAsbS5zKSxwcihwKS5sZW5ndGgmJihkPW0/VWUobSk6e3Q6InoifSxkLnM9cCl9dmFyIHc9bSYmbS52IT1udWxsJiYobS5ofHx4YShtLnd8fChnYShtKSxtLncpfHwiIikpfHwiIjtmPXt9LHU+MSYmKGYucm93c3Bhbj11KSx4PjEmJihmLmNvbHNwYW49eCksdC5lZGl0YWJsZT93PSc8c3BhbiBjb250ZW50ZWRpdGFibGU9InRydWUiPicrdysiPC9zcGFuPiI6bSYmKGZbImRhdGEtdCJdPW0mJm0udHx8InoiLG0udiE9bnVsbCYmKGZbImRhdGEtdiJdPXhhKG0udiBpbnN0YW5jZW9mIERhdGU/bS52LnRvSVNPU3RyaW5nKCk6bS52KSksbS56IT1udWxsJiYoZlsiZGF0YS16Il09bS56KSxtLmYhPW51bGwmJihmWyJkYXRhLWYiXT14YShtLmYpKSxtLmwmJihtLmwuVGFyZ2V0fHwiIyIpLmNoYXJBdCgwKSE9IiMiJiYoIXQuc2FuaXRpemVMaW5rc3x8KG0ubC5UYXJnZXR8fCIiKS5zbGljZSgwLDExKS50b0xvd2VyQ2FzZSgpIT0iamF2YXNjcmlwdDoiKSYmKHc9JzxhIGhyZWY9IicreGEobS5sLlRhcmdldCkrJyI+Jyt3KyI8L2E+IikpO3ZhciBfPWwyKGQsdCkseT11MihkLHQsbCx4LG8pO3kmJihfPV8/XysiOyIreTp5KSxfJiYoZi5zdHlsZT1fKSxmLmlkPSh0LmlkfHwic2pzIikrIi0iK2csaS5wdXNoKGwwKCJ0ZCIsdyxmKSl9fXZhciBSPXt9LFA9W107cmV0dXJuIGMmJihjLmhpZGRlbiYmUC5wdXNoKCJkaXNwbGF5Om5vbmUiKSx0LmJyb3dzZXJQaXhlbHMmJlAucHVzaCgiaGVpZ2h0OiIrQ24oYykrInB4IikpLFAubGVuZ3RoJiYoUi5zdHlsZT1QLmpvaW4oIjsiKSksbDAoInRyIixpLmpvaW4oIiIpLFIpfXZhciB4Mj0nPGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiLz48dGl0bGU+U2hlZXRKUyBUYWJsZSBFeHBvcnQ8L3RpdGxlPjwvaGVhZD48Ym9keT4nLGQyPSI8L2JvZHk+PC9odG1sPiI7ZnVuY3Rpb24gdjIoZSxhKXt2YXIgcj1LYyhlLCJ0YWJsZSIpO2lmKCFyfHxyLmxlbmd0aD09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgSFRNTDogY291bGQgbm90IGZpbmQgPHRhYmxlPiIpO2lmKHIubGVuZ3RoPT0xKXt2YXIgdD1DYShFZihyWzBdLGEpLGEpO3JldHVybiB0LmJvb2tUeXBlPSJodG1sIix0fXZhciBuPU5uKCk7cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihpLGYpe0p0KG4sRWYoaSxhKSwiU2hlZXQiKyhmKzEpKX0pLG4uYm9va1R5cGU9Imh0bWwiLG59dmFyIGR0PTk1MjU7ZnVuY3Rpb24gQWYoZSxhLHIpe2Zvcih2YXIgdD17bGVmdDowLHRvcDowLHdpZHRoOjQ4MCxoZWlnaHQ6Mjg4fSxuPXImJnIuX2h0bWxDb2xzfHxlWyIhY29scyJdfHxbXSxpPWVbIiFyb3dzIl18fFtdLGY9YSYmYS5mcm9tfHx7Y29sOjAscm93OjAsY29sT2ZmOjAscm93T2ZmOjB9LHM9YSYmYS50byxjPTA7YzwoZi5jb2x8fDApOysrYyl0LmxlZnQrPUkwKG5bY10pO2Zvcih2YXIgbz0wO288KGYucm93fHwwKTsrK28pdC50b3ArPUNuKGlbb10pO2lmKHQubGVmdCs9KGYuY29sT2ZmfHwwKS9kdCx0LnRvcCs9KGYucm93T2ZmfHwwKS9kdCxzKXt2YXIgbD0wLHU9MDtmb3IoYz0wO2M8KHMuY29sfHwwKTsrK2MpbCs9STAobltjXSk7Zm9yKG89MDtvPChzLnJvd3x8MCk7KytvKXUrPUNuKGlbb10pO2wrPShzLmNvbE9mZnx8MCkvZHQsdSs9KHMucm93T2ZmfHwwKS9kdCx0LndpZHRoPU1hdGgubWF4KDEsbC10LmxlZnQpLHQuaGVpZ2h0PU1hdGgubWF4KDEsdS10LnRvcCl9ZWxzZSBhJiZhLmV4dCYmKGEuZXh0LmN4JiYodC53aWR0aD1hLmV4dC5jeC9kdCksYS5leHQuY3kmJih0LmhlaWdodD1hLmV4dC5jeS9kdCkpO3JldHVybiB0fWZ1bmN0aW9uIHlmKGUpe3JldHVybiJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OiIrTWF0aC5yb3VuZChlLmxlZnQpKyJweDt0b3A6IitNYXRoLnJvdW5kKGUudG9wKSsicHg7d2lkdGg6IitNYXRoLnJvdW5kKGUud2lkdGgpKyJweDtoZWlnaHQ6IitNYXRoLnJvdW5kKGUuaGVpZ2h0KSsicHgifWZ1bmN0aW9uIFIwKGUpe3JldHVybiBlP2UudmFsJiZlLnZhbC52YWx1ZXM/ZS52YWwudmFsdWVzOmUueVZhbCYmZS55VmFsLnZhbHVlcz9lLnlWYWwudmFsdWVzOmUuZGF0YSYmZS5kYXRhLmxlbmd0aD9lLmRhdGE6W106W119ZnVuY3Rpb24gcDIoZSl7cmV0dXJuIGU/ZS5jYXQmJmUuY2F0LnZhbHVlcz9lLmNhdC52YWx1ZXM6ZS54VmFsJiZlLnhWYWwudmFsdWVzP2UueFZhbC52YWx1ZXM6W106W119ZnVuY3Rpb24gZzIoZSxhLHIpe3ZhciB0PWUmJihlLm1vZGVsfHxlWyIhY2hhcnQiXXx8ZSk7aWYoIXQpcmV0dXJuIiI7dmFyIG49dC5zZXJpZXN8fFtdLGk9KHQudHlwZXx8IiIpLnJlcGxhY2UoL0NoYXJ0JC8sIiIpLGY9TWF0aC5tYXgoMTYwLE1hdGgucm91bmQoYXx8NDgwKSkscz1NYXRoLm1heCgxMjAsTWF0aC5yb3VuZChyfHwyODgpKSxjPXQudGl0bGV8fGUudGl0bGV8fCIiLG89WyIjNEY4MUJEIiwiI0MwNTA0RCIsIiM5QkJCNTkiLCIjODA2NEEyIiwiIzRCQUNDNiIsIiNGNzk2NDYiXSxsPVsnPHN2ZyBjbGFzcz0ic2pzLWNoYXJ0LXN2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iJytmKyciIGhlaWdodD0iJytzKyciIHZpZXdCb3g9IjAgMCAnK2YrIiAiK3MrJyI+J107bC5wdXNoKCc8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iJytmKyciIGhlaWdodD0iJytzKyciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2QwZDdkZSIvPicpLGMmJmwucHVzaCgnPHRleHQgeD0iJytmLzIrJyIgeT0iMjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCI+Jyt4YShjKSsiPC90ZXh0PiIpO3ZhciB1PWM/MzQ6MTYseD00MixoPTE0LGc9MjgsbT1mLXgtaCxkPXMtdS1nLHA9W107bi5mb3JFYWNoKGZ1bmN0aW9uKGllKXtSMChpZSkuZm9yRWFjaChmdW5jdGlvbihuZSl7dHlwZW9mIG5lPT0ibnVtYmVyIiYmaXNGaW5pdGUobmUpJiZwLnB1c2gobmUpfSl9KTt2YXIgdz1NYXRoLm1heC5hcHBseShNYXRoLHAuY29uY2F0KFswXSkpLF89TWF0aC5taW4uYXBwbHkoTWF0aCxwLmNvbmNhdChbMF0pKTtpZihfPjAmJihfPTApLHc9PV8mJih3PV8rMSksbC5wdXNoKCc8bGluZSB4MT0iJyt4KyciIHkxPSInKyh1K2QpKyciIHgyPSInKyh4K20pKyciIHkyPSInKyh1K2QpKyciIHN0cm9rZT0iIzQ0NCIvPicpLGwucHVzaCgnPGxpbmUgeDE9IicreCsnIiB5MT0iJyt1KyciIHgyPSInK3grJyIgeTI9IicrKHUrZCkrJyIgc3Ryb2tlPSIjNDQ0Ii8+JyksaT09InBpZSJ8fGk9PSJkb3VnaG51dCIpe3ZhciB5PVIwKG5bMF18fHt9KSxSPXkucmVkdWNlKGZ1bmN0aW9uKGllLG5lKXtyZXR1cm4gaWUrKHR5cGVvZiBuZT09Im51bWJlciI/TWF0aC5tYXgoMCxuZSk6MCl9LDApfHwxLFA9Zi8yLGI9dStkLzIsTj1NYXRoLm1heCgxMCxNYXRoLm1pbihtLGQpLzItOCksRD0tTWF0aC5QSS8yO3JldHVybiB5LmZvckVhY2goZnVuY3Rpb24oaWUsbmUpe3ZhciBxPUQrTWF0aC5tYXgoMCwraWV8fDApL1IqTWF0aC5QSSoyLGxlPVArTipNYXRoLmNvcyhEKSxRPWIrTipNYXRoLnNpbihEKSxnZT1QK04qTWF0aC5jb3MocSksdWU9YitOKk1hdGguc2luKHEpLGo9cS1EPk1hdGguUEk/MTowO2wucHVzaCgnPHBhdGggZD0iTScrUCsiLCIrYisiIEwiK2xlKyIsIitRKyIgQSIrTisiLCIrTisiIDAgIitqKyIsMSAiK2dlKyIsIit1ZSsnIFoiIGZpbGw9Iicrb1tuZSVvLmxlbmd0aF0rJyIvPicpLEQ9cX0pLGk9PSJkb3VnaG51dCImJmwucHVzaCgnPGNpcmNsZSBjeD0iJytQKyciIGN5PSInK2IrJyIgcj0iJytOKi40NSsnIiBmaWxsPSIjZmZmIi8+JyksbC5wdXNoKCI8L3N2Zz4iKSxsLmpvaW4oIiIpfXZhciBCPTA7aWYobi5mb3JFYWNoKGZ1bmN0aW9uKGllKXtCPU1hdGgubWF4KEIsUjAoaWUpLmxlbmd0aCl9KSwhQilyZXR1cm4gbC5wdXNoKCI8L3N2Zz4iKSxsLmpvaW4oIiIpO3ZhciBMPW0vQjtuLmZvckVhY2goZnVuY3Rpb24oaWUsbmUpe3ZhciBxPVIwKGllKSxsZT1vW25lJW8ubGVuZ3RoXTtpZihpPT0ibGluZSJ8fGk9PSJzY2F0dGVyInx8aT09ImFyZWEiKXt2YXIgUT1bXTtxLmZvckVhY2goZnVuY3Rpb24odWUsail7aWYoISh0eXBlb2YgdWUhPSJudW1iZXIifHwhaXNGaW5pdGUodWUpKSl7dmFyIHllPXgrTCooaisuNSksYmU9dStkLSh1ZS1fKS8ody1fKSpkO1EucHVzaChbeWUsYmVdKX19KSxpPT0iYXJlYSImJlEubGVuZ3RoJiZsLnB1c2goJzxwb2x5Z29uIHBvaW50cz0iJytbW1FbMF1bMF0sdStkXV0uY29uY2F0KFEpLmNvbmNhdChbW1FbUS5sZW5ndGgtMV1bMF0sdStkXV0pLm1hcChmdW5jdGlvbih1ZSl7cmV0dXJuIHVlWzBdKyIsIit1ZVsxXX0pLmpvaW4oIiAiKSsnIiBmaWxsPSInK2xlKyciIG9wYWNpdHk9IjAuMzUiLz4nKSxRLmxlbmd0aCYmbC5wdXNoKCc8cG9seWxpbmUgcG9pbnRzPSInK1EubWFwKGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWVbMF0rIiwiK3VlWzFdfSkuam9pbigiICIpKyciIGZpbGw9Im5vbmUiIHN0cm9rZT0iJytsZSsnIiBzdHJva2Utd2lkdGg9IjIiLz4nKSxRLmZvckVhY2goZnVuY3Rpb24odWUpe2wucHVzaCgnPGNpcmNsZSBjeD0iJyt1ZVswXSsnIiBjeT0iJyt1ZVsxXSsnIiByPSIyLjUiIGZpbGw9IicrbGUrJyIvPicpfSl9ZWxzZXt2YXIgZ2U9TWF0aC5tYXgoMSxML01hdGgubWF4KG4ubGVuZ3RoLDEpKi43Mik7cS5mb3JFYWNoKGZ1bmN0aW9uKHVlLGope2lmKCEodHlwZW9mIHVlIT0ibnVtYmVyInx8IWlzRmluaXRlKHVlKSkpe3ZhciB5ZT14K0wqaisoTC1nZSpuLmxlbmd0aCkvMitnZSpuZSxiZT11K2QtKHVlLV8pLyh3LV8pKmQsbWU9dStkLSgwLV8pLyh3LV8pKmQ7bC5wdXNoKCc8cmVjdCB4PSInK3llKyciIHk9IicrTWF0aC5taW4oYmUsbWUpKyciIHdpZHRoPSInK2dlKyciIGhlaWdodD0iJytNYXRoLm1heCgxLE1hdGguYWJzKG1lLWJlKSkrJyIgZmlsbD0iJytsZSsnIi8+Jyl9fSl9aWUubmFtZSYmbC5wdXNoKCc8dGV4dCB4PSInKyh4KzgpKyciIHk9IicrKHUrMTQrbmUqMTQpKyciIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMSIgZmlsbD0iJytsZSsnIj4nK3hhKGllLm5hbWUpKyI8L3RleHQ+Iil9KTt2YXIgRz1wMihuWzBdfHx7fSk7cmV0dXJuIEcuc2xpY2UoMCxNYXRoLm1pbihHLmxlbmd0aCxCKSkuZm9yRWFjaChmdW5jdGlvbihpZSxuZSl7bmUlTWF0aC5jZWlsKEIvOCk9PTAmJmwucHVzaCgnPHRleHQgeD0iJysoeCtMKihuZSsuNSkpKyciIHk9IicrKHUrZCsxNikrJyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEwIj4nK3hhKFN0cmluZyhpZSkpKyI8L3RleHQ+Iil9KSxsLnB1c2goIjwvc3ZnPiIpLGwuam9pbigiIil9ZnVuY3Rpb24gbTIoZSxhKXt2YXIgcj1bXSx0PWVbIiFkcmF3aW5ncyJdfHx7fSxuPWVbIiFjaGFydHMiXXx8W107cmV0dXJuIGEmJmEuZHJhd2luZ3MmJnQuaW1hZ2VzJiZ0LmltYWdlcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKCEoIWl8fCFpLmRhdGFVUkkpKXt2YXIgZj1BZihlLGkuYW5jaG9yLGEpO3IucHVzaCgnPGltZyBjbGFzcz0ic2pzLWRyYXdpbmctaW1hZ2UiIHNyYz0iJytpLmRhdGFVUkkrJyIgc3R5bGU9IicreWYoZikrJyIvPicpfX0pLGEmJmEuY2hhcnRzJiZuLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIGY9QWYoZSxpLmFuY2hvcixhKTtyLnB1c2goJzxkaXYgY2xhc3M9InNqcy1jaGFydCIgc3R5bGU9IicreWYoZikrJyI+JytnMihpLGYud2lkdGgsZi5oZWlnaHQpKyI8L2Rpdj4iKX0pLHIubGVuZ3RoPyc8ZGl2IGNsYXNzPSJzanMtZHJhd2luZy1sYXllciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtwb2ludGVyLWV2ZW50czpub25lIj4nK3Iuam9pbigiIikrIjwvZGl2PiI6IiJ9ZnVuY3Rpb24gXzIoZSxhLHIpe3ZhciB0PVtdLG49e30saT1bXTtyJiZyLmlkJiYobi5pZD1yLmlkKSxyJiYoci5icm93c2VyUGl4ZWxzfHxyLmF1dG9GaXQpJiZpLnB1c2goImJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt0YWJsZS1sYXlvdXQ6Zml4ZWQiKSxpLmxlbmd0aCYmKG4uc3R5bGU9aS5qb2luKCI7IikpO3ZhciBmPWwwKCJ0YWJsZSIsIiIsbikucmVwbGFjZSgvPFwvdGFibGU+JC8sIiIpLHM9ciYmci5faHRtbENvbHN8fGVbIiFjb2xzIl07aWYociYmKHIuYnJvd3NlclBpeGVsc3x8ci5hdXRvRml0KSYmcyl7dC5wdXNoKCI8Y29sZ3JvdXA+Iik7Zm9yKHZhciBjPWEucy5jO2M8PWEuZS5jOysrYyl7dmFyIG89c1tjXSxsPVtdO2wucHVzaCgid2lkdGg6IitJMChvKSsicHgiKSxvJiZvLmhpZGRlbiYmbC5wdXNoKCJkaXNwbGF5Om5vbmUiKSx0LnB1c2gobDAoImNvbCIsbnVsbCx7c3R5bGU6bC5qb2luKCI7Iil9KSl9dC5wdXNoKCI8L2NvbGdyb3VwPiIpfXJldHVybiBmK3Quam9pbigiIil9ZnVuY3Rpb24gazIoZSxhKXt2YXIgcj17fTtpZihhKWZvcih2YXIgdCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHQpJiYoclt0XT1hW3RdKTtpZihyLmF1dG9GaXQpe3ZhciBuPXtzZXQ6ITF9O2lmKHR5cGVvZiByLmF1dG9GaXQ9PSJvYmplY3QiKWZvcih0IGluIHIuYXV0b0ZpdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoci5hdXRvRml0LHQpJiYoblt0XT1yLmF1dG9GaXRbdF0pO3IubWVhc3VyZVRleHQmJm4ubWVhc3VyZVRleHQ9PW51bGwmJihuLm1lYXN1cmVUZXh0PXIubWVhc3VyZVRleHQpLHIuY2FudmFzJiZuLmNhbnZhcz09bnVsbCYmKG4uY2FudmFzPXIuY2FudmFzKSxyLl9odG1sQ29scz1wbihlLG4pLHIuYnJvd3NlclBpeGVscz09bnVsbCYmKHIuYnJvd3NlclBpeGVscz0hMCl9dmFyIGk9ci5oZWFkZXIhPW51bGw/ci5oZWFkZXI6eDIsZj1yLmZvb3RlciE9bnVsbD9yLmZvb3RlcjpkMixzPVtpXSxjPXBhKGVbIiFyZWYiXXx8IkExIiksbz1yLmNoYXJ0cyYmZVsiIWNoYXJ0cyJdJiZlWyIhY2hhcnRzIl0ubGVuZ3RofHxyLmRyYXdpbmdzJiZlWyIhZHJhd2luZ3MiXTtpZihvJiZzLnB1c2goJzxkaXYgY2xhc3M9InNqcy1zaGVldCIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrIj4nKSxzLnB1c2goXzIoZSxjLHIpKSxlWyIhcmVmIl0pZm9yKHZhciBsPWMucy5yO2w8PWMuZS5yOysrbClzLnB1c2goaDIoZSxjLGwscikpO3JldHVybiBvPyhzLnB1c2goIjwvdGFibGU+Iikscy5wdXNoKG0yKGUscikpLHMucHVzaCgiPC9kaXY+Iikscy5wdXNoKGYpKTpzLnB1c2goIjwvdGFibGU+IitmKSxzLmpvaW4oIiIpfWZ1bmN0aW9uIFNmKGUsYSxyKXt2YXIgdD1yfHx7fSxuPWVbIiFkYXRhIl0hPW51bGwsaT0wLGY9MDtpZih0Lm9yaWdpbiE9bnVsbClpZih0eXBlb2YgdC5vcmlnaW49PSJudW1iZXIiKWk9dC5vcmlnaW47ZWxzZXt2YXIgcz10eXBlb2YgdC5vcmlnaW49PSJzdHJpbmciP2dyKHQub3JpZ2luKTp0Lm9yaWdpbjtpPXMucixmPXMuY312YXIgYz17czp7cjowLGM6MH0sZTp7cjppLGM6Zn19O2lmKGVbIiFyZWYiXSl7dmFyIG89cGEoZVsiIXJlZiJdKTtjLnMucj1NYXRoLm1pbihjLnMucixvLnMuciksYy5zLmM9TWF0aC5taW4oYy5zLmMsby5zLmMpLGMuZS5yPU1hdGgubWF4KGMuZS5yLG8uZS5yKSxjLmUuYz1NYXRoLm1heChjLmUuYyxvLmUuYyksaT09LTEmJihjLmUucj1pPW8uZS5yKzEpfXZhciBsPWEucm93cztpZighbCl0aHJvdyJVbnN1cHBvcnRlZCBvcmlnaW4gd2hlbiAiK2EudGFnTmFtZSsiIGlzIG5vdCBhIFRBQkxFIjt2YXIgdT1NYXRoLm1pbih0LnNoZWV0Um93c3x8MWU3LGwubGVuZ3RoKSx4PVtdLGg9MCxnPWVbIiFyb3dzIl18fChlWyIhcm93cyJdPVtdKSxtPTAsZD0wLHA9MCx3PTAsXz0wLHk9MDtmb3IoZVsiIWNvbHMiXXx8KGVbIiFjb2xzIl09W10pO208bC5sZW5ndGgmJmQ8dTsrK20pe3ZhciBSPWxbbV07aWYoYmYoUikpe2lmKHQuZGlzcGxheSljb250aW51ZTtnW2RdPXtoaWRkZW46ITB9fXZhciBQPVIuY2VsbHM7Zm9yKHA9dz0wO3A8UC5sZW5ndGg7KytwKXt2YXIgYj1QW3BdO2lmKCEodC5kaXNwbGF5JiZiZihiKSkpe3ZhciBOPWIuaGFzQXR0cmlidXRlKCJkYXRhLXYiKT9iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik6Yi5oYXNBdHRyaWJ1dGUoInYiKT9iLmdldEF0dHJpYnV0ZSgidiIpOlNpKGIuaW5uZXJIVE1MKSxEPWIuZ2V0QXR0cmlidXRlKCJkYXRhLXoiKXx8Yi5nZXRBdHRyaWJ1dGUoInoiKSxCPWIuaGFzQXR0cmlidXRlKCJkYXRhLWYiKT9iLmdldEF0dHJpYnV0ZSgiZGF0YS1mIik6Yi5oYXNBdHRyaWJ1dGUoImYiKT9iLmdldEF0dHJpYnV0ZSgiZiIpOm51bGw7Zm9yKGg9MDtoPHgubGVuZ3RoOysraCl7dmFyIEw9eFtoXTtMLnMuYz09dytmJiZMLnMucjxkK2kmJmQraTw9TC5lLnImJih3PUwuZS5jKzEtZixoPS0xKX15PStiLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpfHwxLCgoXz0rYi5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKXx8MSk+MXx8eT4xKSYmeC5wdXNoKHtzOntyOmQraSxjOncrZn0sZTp7cjpkK2krKF98fDEpLTEsYzp3K2YrKHl8fDEpLTF9fSk7dmFyIEc9e3Q6InMiLHY6Tn0saWU9Yi5nZXRBdHRyaWJ1dGUoImRhdGEtdCIpfHxiLmdldEF0dHJpYnV0ZSgidCIpfHwiIjtOIT1udWxsJiYoTi5sZW5ndGg9PTA/Ry50PWllfHwieiI6dC5yYXd8fE4udHJpbSgpLmxlbmd0aD09MHx8aWU9PSJzInx8KGllPT0iZSImJmJyWytOXT9HPXt0OiJlIix2OitOLHc6YnJbK05dfTpOPT09IlRSVUUiP0c9e3Q6ImIiLHY6ITB9Ok49PT0iRkFMU0UiP0c9e3Q6ImIiLHY6ITF9OmlzTmFOKE9yKE4pKT9pc05hTih5dChOKS5nZXREYXRlKCkpP04uY2hhckNvZGVBdCgwKT09MzUmJmRyW05dIT1udWxsJiYoRz17dDoiZSIsdjpkcltOXSx3Ok59KTooRz17dDoiZCIsdjp4cihOKX0sdC5VVEMmJihHLnY9YzAoRy52KSksdC5jZWxsRGF0ZXN8fChHPXt0OiJuIix2Om9yKEcudil9KSxHLno9dC5kYXRlTkZ8fFRlWzE0XSk6Rz17dDoibiIsdjpPcihOKX0pKSxHLno9PT12b2lkIDAmJkQhPW51bGwmJihHLno9RCk7dmFyIG5lPSIiLHE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQSIpO2lmKHEmJnEubGVuZ3RoKWZvcih2YXIgbGU9MDtsZTxxLmxlbmd0aCYmIShxW2xlXS5oYXNBdHRyaWJ1dGUoImhyZWYiKSYmKG5lPXFbbGVdLmdldEF0dHJpYnV0ZSgiaHJlZiIpLG5lLmNoYXJBdCgwKSE9IiMiKSk7KytsZSk7bmUmJm5lLmNoYXJBdCgwKSE9IiMiJiZuZS5zbGljZSgwLDExKS50b0xvd2VyQ2FzZSgpIT0iamF2YXNjcmlwdDoiJiYoRy5sPXtUYXJnZXQ6bmV9KSxCIT1udWxsJiYoRy5mPUIpLG4/KGVbIiFkYXRhIl1bZCtpXXx8KGVbIiFkYXRhIl1bZCtpXT1bXSksZVsiIWRhdGEiXVtkK2ldW3crZl09Ryk6ZVtJZSh7Yzp3K2YscjpkK2l9KV09RyxjLmUuYzx3K2YmJihjLmUuYz13K2YpLHcrPXl9fSsrZH1yZXR1cm4geC5sZW5ndGgmJihlWyIhbWVyZ2VzIl09KGVbIiFtZXJnZXMiXXx8W10pLmNvbmNhdCh4KSksYy5lLnI9TWF0aC5tYXgoYy5lLnIsZC0xK2kpLGVbIiFyZWYiXT1EZShjKSxkPj11JiYoZVsiIWZ1bGxyZWYiXT1EZSgoYy5lLnI9bC5sZW5ndGgtbStkLTEraSxjKSkpLGV9ZnVuY3Rpb24gQ2YoZSxhKXt2YXIgcj1hfHx7fSx0PXt9O3JldHVybiByLmRlbnNlJiYodFsiIWRhdGEiXT1bXSksU2YodCxlLGEpfWZ1bmN0aW9uIHcyKGUsYSl7dmFyIHI9Q2EoQ2YoZSxhKSxhKTtyZXR1cm4gcn1mdW5jdGlvbiBiZihlKXt2YXIgYT0iIixyPUYyKGUpO3JldHVybiByJiYoYT1yKGUpLmdldFByb3BlcnR5VmFsdWUoImRpc3BsYXkiKSksYXx8KGE9ZS5zdHlsZSYmZS5zdHlsZS5kaXNwbGF5KSxhPT09Im5vbmUifWZ1bmN0aW9uIEYyKGUpe3JldHVybiBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcmJnR5cGVvZiBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZT09ImZ1bmN0aW9uIj9lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZTp0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZT09ImZ1bmN0aW9uIj9nZXRDb21wdXRlZFN0eWxlOm51bGx9ZnVuY3Rpb24gVDIoZSl7dmFyIGE9ZS5yZXBsYWNlKC9bXHRcclxuXS9nLCIgIikudHJpbSgpLnJlcGxhY2UoLyArL2csIiAiKS5yZXBsYWNlKC88dGV4dDpzXC8+L2csIiAiKS5yZXBsYWNlKC88dGV4dDpzIHRleHQ6Yz0iKFxkKykiXC8+L2csZnVuY3Rpb24odCxuKXtyZXR1cm4gQXJyYXkocGFyc2VJbnQobiwxMCkrMSkuam9pbigiICIpfSkucmVwbGFjZSgvPHRleHQ6dGFiW148Pl0qXC8+L2csIgkiKS5yZXBsYWNlKC88dGV4dDpsaW5lLWJyZWFrXC8+L2csYApgKSxyPUNlKGEucmVwbGFjZSgvPFtePD5dKj4vZywiIikpO3JldHVybltyXX1mdW5jdGlvbiBEZihlLGEscil7dmFyIHQ9cnx8e30sbj11MChlKTtpci5sYXN0SW5kZXg9MCxuPUowKFN0KG4sIjwhLS0iLCItLT4iKSk7Zm9yKHZhciBpLGYscz0iIixjPSIiLG8sbD0wLHU9LTEseD0iIjtpPWlyLmV4ZWMobik7KXN3aXRjaChpWzNdPWlbM10ucmVwbGFjZSgvX1tcc1xTXSokLywiIikpe2Nhc2UibnVtYmVyLXN0eWxlIjpjYXNlImN1cnJlbmN5LXN0eWxlIjpjYXNlInBlcmNlbnRhZ2Utc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpjYXNlInRleHQtc3R5bGUiOmlbMV09PT0iLyI/KGZbInRydW5jYXRlLW9uLW92ZXJmbG93Il09PSJmYWxzZSImJihzLm1hdGNoKC9oLyk/cz1zLnJlcGxhY2UoL2grLywiWyQmXSIpOnMubWF0Y2goL20vKT9zPXMucmVwbGFjZSgvbSsvLCJbJCZdIik6cy5tYXRjaCgvcy8pJiYocz1zLnJlcGxhY2UoL3MrLywiWyQmXSIpKSksdFtmLm5hbWVdPXMscz0iIik6aVswXS5jaGFyQXQoaVswXS5sZW5ndGgtMikhPT0iLyImJihzPSIiLGY9b2UoaVswXSwhMSkpO2JyZWFrO2Nhc2UiYm9vbGVhbi1zdHlsZSI6aVsxXT09PSIvIj8odFtmLm5hbWVdPSJHZW5lcmFsIixzPSIiKTppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIiYmKHM9IiIsZj1vZShpWzBdLCExKSk7YnJlYWs7Y2FzZSJib29sZWFuIjpzKz0iR2VuZXJhbCI7YnJlYWs7Y2FzZSJ0ZXh0IjppWzFdPT09Ii8iPyh4PW4uc2xpY2UodSxpci5sYXN0SW5kZXgtaVswXS5sZW5ndGgpLHg9PSIlIiYmZlswXT09IjxudW1iZXI6cGVyY2VudGFnZS1zdHlsZSI/cys9IiUiOnMrPSciJyt4LnJlcGxhY2UoLyIvZywnIiInKSsnIicpOmlbMF0uY2hhckF0KGlbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1pci5sYXN0SW5kZXgpO2JyZWFrO2Nhc2UiZGF5Ijpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZCI7YnJlYWs7Y2FzZSJsb25nIjpzKz0iZGQiO2JyZWFrO2RlZmF1bHQ6cys9ImRkIjticmVha31icmVhaztjYXNlImRheS1vZi13ZWVrIjpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZGRkIjticmVhaztjYXNlImxvbmciOnMrPSJkZGRkIjticmVhaztkZWZhdWx0OnMrPSJkZGQiO2JyZWFrfWJyZWFrO2Nhc2UiZXJhIjpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZWUiO2JyZWFrO2Nhc2UibG9uZyI6cys9ImVlZWUiO2JyZWFrO2RlZmF1bHQ6cys9ImVlZWUiO2JyZWFrfWJyZWFrO2Nhc2UiaG91cnMiOnN3aXRjaChvPW9lKGlbMF0sITEpLG8uc3R5bGUpe2Nhc2Uic2hvcnQiOnMrPSJoIjticmVhaztjYXNlImxvbmciOnMrPSJoaCI7YnJlYWs7ZGVmYXVsdDpzKz0iaGgiO2JyZWFrfWJyZWFrO2Nhc2UibWludXRlcyI6c3dpdGNoKG89b2UoaVswXSwhMSksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Im0iO2JyZWFrO2Nhc2UibG9uZyI6cys9Im1tIjticmVhaztkZWZhdWx0OnMrPSJtbSI7YnJlYWt9YnJlYWs7Y2FzZSJtb250aCI6c3dpdGNoKG89b2UoaVswXSwhMSksby50ZXh0dWFsJiYocys9Im1tIiksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Im0iO2JyZWFrO2Nhc2UibG9uZyI6cys9Im1tIjticmVhaztkZWZhdWx0OnMrPSJtIjticmVha31icmVhaztjYXNlInNlY29uZHMiOntzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0icyI7YnJlYWs7Y2FzZSJsb25nIjpzKz0ic3MiO2JyZWFrO2RlZmF1bHQ6cys9InNzIjticmVha31vWyJkZWNpbWFsLXBsYWNlcyJdJiYocys9Ii4iK1BlKCIwIiwrb1siZGVjaW1hbC1wbGFjZXMiXSkpfWJyZWFrO2Nhc2UieWVhciI6c3dpdGNoKG89b2UoaVswXSwhMSksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Inl5IjticmVhaztjYXNlImxvbmciOnMrPSJ5eXl5IjticmVhaztkZWZhdWx0OnMrPSJ5eSI7YnJlYWt9YnJlYWs7Y2FzZSJhbS1wbSI6cys9IkFNL1BNIjticmVhaztjYXNlIndlZWstb2YteWVhciI6Y2FzZSJxdWFydGVyIjpjb25zb2xlLmVycm9yKCJFeGNlbCBkb2VzIG5vdCBzdXBwb3J0IE9EUyBmb3JtYXQgdG9rZW4gIitpWzNdKTticmVhaztjYXNlImZpbGwtY2hhcmFjdGVyIjppWzFdPT09Ii8iPyh4PW4uc2xpY2UodSxpci5sYXN0SW5kZXgtaVswXS5sZW5ndGgpLHMrPSciJyt4LnJlcGxhY2UoLyIvZywnIiInKSsnIionKTppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIiYmKHU9aXIubGFzdEluZGV4KTticmVhaztjYXNlInNjaWVudGlmaWMtbnVtYmVyIjpvPW9lKGlbMF0sITEpLHMrPSIwLiIrUGUoIjAiLCtvWyJtaW4tZGVjaW1hbC1wbGFjZXMiXXx8K29bImRlY2ltYWwtcGxhY2VzIl18fDIpK1BlKCI/Iiwrb1siZGVjaW1hbC1wbGFjZXMiXS0rb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApKyJFIisoRmUob1siZm9yY2VkLWV4cG9uZW50LXNpZ24iXSk/IisiOiIiKStQZSgiMCIsK29bIm1pbi1leHBvbmVudC1kaWdpdHMiXXx8Mik7YnJlYWs7Y2FzZSJmcmFjdGlvbiI6bz1vZShpWzBdLCExKSwrb1sibWluLWludGVnZXItZGlnaXRzIl0/cys9UGUoIjAiLCtvWyJtaW4taW50ZWdlci1kaWdpdHMiXSk6cys9IiMiLHMrPSIgIixzKz1QZSgiPyIsK29bIm1pbi1udW1lcmF0b3ItZGlnaXRzIl18fDEpLHMrPSIvIiwrb1siZGVub21pbmF0b3ItdmFsdWUiXT9zKz1vWyJkZW5vbWluYXRvci12YWx1ZSJdOnMrPVBlKCI/Iiwrb1sibWluLWRlbm9taW5hdG9yLWRpZ2l0cyJdfHwxKTticmVhaztjYXNlImN1cnJlbmN5LXN5bWJvbCI6aVsxXT09PSIvIj9zKz0nIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJzppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIj91PWlyLmxhc3RJbmRleDpzKz0iJCI7YnJlYWs7Y2FzZSJ0ZXh0LXByb3BlcnRpZXMiOnN3aXRjaChvPW9lKGlbMF0sITEpLChvLmNvbG9yfHwiIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCIjIiwiIikpe2Nhc2UiZmYwMDAwIjpjYXNlInJlZCI6cz0iW1JlZF0iK3M7YnJlYWt9YnJlYWs7Y2FzZSJ0ZXh0LWNvbnRlbnQiOnMrPSJAIjticmVhaztjYXNlIm1hcCI6bz1vZShpWzBdLCExKSxDZShvLmNvbmRpdGlvbik9PSJ2YWx1ZSgpPj0wIj9zPXRbb1siYXBwbHktc3R5bGUtbmFtZSJdXSsiOyIrczphJiZhLldURiYmY29uc29sZS5lcnJvcigiT0RTIG51bWJlciBmb3JtYXQgbWF5IGJlIGluY29ycmVjdDogIitvLmNvbmRpdGlvbik7YnJlYWs7Y2FzZSJudW1iZXIiOmlmKGlbMV09PT0iLyIpYnJlYWs7bz1vZShpWzBdLCExKSxjPSIiLGMrPVBlKCIwIiwrb1sibWluLWludGVnZXItZGlnaXRzIl18fDEpLEZlKG8uZ3JvdXBpbmcpJiYoYz1vYShQZSgiIyIsTWF0aC5tYXgoMCw0LWMubGVuZ3RoKSkrYykpLCgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fCtvWyJkZWNpbWFsLXBsYWNlcyJdKSYmKGMrPSIuIiksK29bIm1pbi1kZWNpbWFsLXBsYWNlcyJdJiYoYys9UGUoIjAiLCtvWyJtaW4tZGVjaW1hbC1wbGFjZXMiXXx8MSkpLCtvWyJkZWNpbWFsLXBsYWNlcyJdLSgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApJiYoYys9UGUoIjAiLCtvWyJkZWNpbWFsLXBsYWNlcyJdLSgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApKSkscys9YzticmVhaztjYXNlImVtYmVkZGVkLXRleHQiOmlbMV09PT0iLyI/bD09MD9zKz0nIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJzpzPXMuc2xpY2UoMCxsKSsnIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJytzLnNsaWNlKGwpOmlbMF0uY2hhckF0KGlbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1pci5sYXN0SW5kZXgsbD0tK29lKGlbMF0sITEpLnBvc2l0aW9ufHwwKTticmVha31yZXR1cm4gdH1mdW5jdGlvbiBJZihlLGEscil7dmFyIHQ9YXx8e30sbj11MChlKSxpPVtdLGYscyxjLG89IiIsbD0wLHUseCxoPXt9LGc9W10sbT17fTt0LmRlbnNlJiYobVsiIWRhdGEiXT1bXSk7dmFyIGQscCx3PXt2YWx1ZToiIn0sXz17fSx5PSIiLFI9MCxQPSIiLGI9MCxOPVtdLEQ9W10sQj0tMSxMPS0xLEc9e3M6e3I6MWU2LGM6MWU3fSxlOntyOjAsYzowfX0saWU9MCxuZT1yfHx7fSxxPXt9LGxlPXt9LFE9W10sZ2U9e30sdWU9MCxqPTAseWU9W10sYmU9MSxtZT0xLFo9W10sT2U9e05hbWVzOltdLFdCUHJvcHM6e30sU2hlZXRzOltdfSx3ZT17fSxBZT1bIiIsIiJdLEE9W10sVT17fSxPPSIiLEk9MCx6PSExLHBlPSExLEo9MDtmb3IoaXIubGFzdEluZGV4PTAsbj1KMChTdChuLCI8IS0tIiwiLS0+IikpO2Q9aXIuZXhlYyhuKTspc3dpdGNoKGRbM109ZFszXS5yZXBsYWNlKC9fW1xzXFNdKiQvLCIiKSl7Y2FzZSJ0YWJsZSI6Y2FzZSLlt6XkvZzooagiOmRbMV09PT0iLyI/KEcuZS5jPj1HLnMuYyYmRy5lLnI+PUcucy5yP21bIiFyZWYiXT1EZShHKTptWyIhcmVmIl09IkExOkExIix0LnNoZWV0Um93cz4wJiZ0LnNoZWV0Um93czw9Ry5lLnImJihtWyIhZnVsbHJlZiJdPW1bIiFyZWYiXSxHLmUucj10LnNoZWV0Um93cy0xLG1bIiFyZWYiXT1EZShHKSksUS5sZW5ndGgmJihtWyIhbWVyZ2VzIl09USkseWUubGVuZ3RoJiYobVsiIXJvd3MiXT15ZSksdS5uYW1lPXUu5ZCN56ewfHx1Lm5hbWUsdHlwZW9mIEpTT048InUiJiZKU09OLnN0cmluZ2lmeSh1KSxnLnB1c2godS5uYW1lKSxoW3UubmFtZV09bSxPZS5TaGVldHMucHVzaCh7SGlkZGVuOmxlW3VbInN0eWxlLW5hbWUiXV0mJmxlW3VbInN0eWxlLW5hbWUiXV0uZGlzcGxheT9GZShsZVt1WyJzdHlsZS1uYW1lIl1dLmRpc3BsYXkpPzA6MTowfSkscGU9ITEpOmRbMF0uY2hhckF0KGRbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1vZShkWzBdLCExKSxCPUw9LTEsRy5zLnI9Ry5zLmM9MWU3LEcuZS5yPUcuZS5jPTAsbT17fSx0LmRlbnNlJiYobVsiIWRhdGEiXT1bXSksUT1bXSx5ZT1bXSxwZT0hMCk7YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctZ3JvdXAiOmRbMV09PT0iLyI/LS1pZTorK2llO2JyZWFrO2Nhc2UidGFibGUtcm93IjpjYXNlIuihjCI6aWYoZFsxXT09PSIvIil7Qis9YmUsYmU9MTticmVha31pZih4PW9lKGRbMF0sITEpLHgu6KGM5Y+3P0I9eC7ooYzlj7ctMTpCPT0tMSYmKEI9MCksYmU9K3hbIm51bWJlci1yb3dzLXJlcGVhdGVkIl18fDEsYmU8MTApZm9yKEo9MDtKPGJlOysrSilpZT4wJiYoeWVbQitKXT17bGV2ZWw6aWV9KTtMPS0xO2JyZWFrO2Nhc2UiY292ZXJlZC10YWJsZS1jZWxsIjppZihkWzFdIT09Ii8iKWlmKCsrTCx3PW9lKGRbMF0sITEpLG1lPXBhcnNlSW50KHdbIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl18fCIxIiwxMCl8fDEsdC5zaGVldFN0dWJzKXtmb3IoO21lLS0gPjA7KXQuZGVuc2U/KG1bIiFkYXRhIl1bQl18fChtWyIhZGF0YSJdW0JdPVtdKSxtWyIhZGF0YSJdW0JdW0xdPXt0OiJ6In0pOm1bSWUoe3I6QixjOkx9KV09e3Q6InoifSwrK0w7LS1MfWVsc2UgTCs9bWUtMTt5PSIiLE49W107YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsIjpjYXNlIuaVsOaNriI6aWYoZFswXS5jaGFyQXQoZFswXS5sZW5ndGgtMik9PT0iLyIpKytMLHc9b2UoZFswXSwhMSksbWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKXx8MSxwPXt0OiJ6Iix2Om51bGx9LHcuZm9ybXVsYSYmdC5jZWxsRm9ybXVsYSE9ITEmJihwLmY9Y2YoQ2Uody5mb3JtdWxhKSkpLHdbInN0eWxlLW5hbWUiXSYmcVt3WyJzdHlsZS1uYW1lIl1dJiYocC56PXFbd1sic3R5bGUtbmFtZSJdXSksKHcu5pWw5o2u57G75Z6LfHx3WyJ2YWx1ZS10eXBlIl0pPT0ic3RyaW5nIiYmKHAudD0icyIscC52PUNlKHdbInN0cmluZy12YWx1ZSJdfHwiIiksdC5kZW5zZT8obVsiIWRhdGEiXVtCXXx8KG1bIiFkYXRhIl1bQl09W10pLG1bIiFkYXRhIl1bQl1bTF09cCk6bVtIZShMKStHZShCKV09cCksTCs9bWUtMTtlbHNlIGlmKGRbMV0hPT0iLyIpeysrTCx5PVA9IiIsUj1iPTAsTj1bXSxEPVtdLG1lPTE7dmFyIHJlPWJlP0IrYmUtMTpCO2lmKEw+Ry5lLmMmJihHLmUuYz1MKSxMPEcucy5jJiYoRy5zLmM9TCksQjxHLnMuciYmKEcucy5yPUIpLHJlPkcuZS5yJiYoRy5lLnI9cmUpLHc9b2UoZFswXSwhMSksXz1RYyhkWzBdLCEwKSxBPVtdLFU9e30scD17dDp3LuaVsOaNruexu+Wei3x8d1sidmFsdWUtdHlwZSJdLHY6bnVsbH0sd1sic3R5bGUtbmFtZSJdJiZxW3dbInN0eWxlLW5hbWUiXV0mJihwLno9cVt3WyJzdHlsZS1uYW1lIl1dKSx0LmNlbGxGb3JtdWxhKWlmKHcuZm9ybXVsYSYmKHcuZm9ybXVsYT1DZSh3LmZvcm11bGEpKSx3WyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdJiZ3WyJudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCJdJiYodWU9cGFyc2VJbnQod1sibnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsaj1wYXJzZUludCh3WyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCxnZT17czp7cjpCLGM6TH0sZTp7cjpCK3VlLTEsYzpMK2otMX19LHAuRj1EZShnZSksWi5wdXNoKFtnZSxwLkZdKSksdy5mb3JtdWxhKXAuZj1jZih3LmZvcm11bGEpO2Vsc2UgZm9yKEo9MDtKPFoubGVuZ3RoOysrSilCPj1aW0pdWzBdLnMuciYmQjw9WltKXVswXS5lLnImJkw+PVpbSl1bMF0ucy5jJiZMPD1aW0pdWzBdLmUuYyYmKHAuRj1aW0pdWzFdKTtzd2l0Y2goKHdbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8d1sibnVtYmVyLXJvd3Mtc3Bhbm5lZCJdKSYmKHVlPXBhcnNlSW50KHdbIm51bWJlci1yb3dzLXNwYW5uZWQiXXx8IjEiLDEwKXx8MSxqPXBhcnNlSW50KHdbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8IjEiLDEwKXx8MSx1ZSpqPjEmJihnZT17czp7cjpCLGM6TH0sZTp7cjpCK3VlLTEsYzpMK2otMX19LFEucHVzaChnZSkpKSx3WyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdJiYobWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXSwxMCkpLHAudCl7Y2FzZSJib29sZWFuIjpwLnQ9ImIiLHAudj1GZSh3WyJib29sZWFuLXZhbHVlIl0pfHwrd1siYm9vbGVhbi12YWx1ZSJdPj0xO2JyZWFrO2Nhc2UiZmxvYXQiOnAudD0ibiIscC52PXBhcnNlRmxvYXQody52YWx1ZSksdC5jZWxsRGF0ZXMmJnAueiYmWnIocC56KSYmKHAudj1TYShwLnYrKE9lLldCUHJvcHMuZGF0ZTE5MDQ/MTQ2MjowKSkscC50PXR5cGVvZiBwLnY9PSJudW1iZXIiPyJuIjoiZCIpO2JyZWFrO2Nhc2UicGVyY2VudGFnZSI6cC50PSJuIixwLnY9cGFyc2VGbG9hdCh3LnZhbHVlKTticmVhaztjYXNlImN1cnJlbmN5IjpwLnQ9Im4iLHAudj1wYXJzZUZsb2F0KHcudmFsdWUpO2JyZWFrO2Nhc2UiZGF0ZSI6cC50PSJkIixwLnY9eHIod1siZGF0ZS12YWx1ZSJdLE9lLldCUHJvcHMuZGF0ZTE5MDQpLHQuY2VsbERhdGVzfHwocC50PSJuIixwLnY9b3IocC52LE9lLldCUHJvcHMuZGF0ZTE5MDQpKSxwLnp8fChwLno9Im0vZC95eSIpO2JyZWFrO2Nhc2UidGltZSI6cC50PSJuIixwLnY9TmMod1sidGltZS12YWx1ZSJdKS84NjQwMCx0LmNlbGxEYXRlcyYmKHAudj1TYShwLnYpLHAudD10eXBlb2YgcC52PT0ibnVtYmVyIj8ibiI6ImQiKSxwLnp8fChwLno9IkhIOk1NOlNTIik7YnJlYWs7Y2FzZSJudW1iZXIiOnAudD0ibiIscC52PXBhcnNlRmxvYXQody7mlbDmja7mlbDlgLwpO2JyZWFrO2RlZmF1bHQ6aWYocC50PT09InN0cmluZyJ8fHAudD09PSJ0ZXh0Inx8IXAudClwLnQ9InMiLHdbInN0cmluZy12YWx1ZSJdIT1udWxsJiYoeT1DZSh3WyJzdHJpbmctdmFsdWUiXSksTj1bXSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHZhbHVlIHR5cGUgIitwLnQpfX1lbHNle2lmKHo9ITEsX1siY2FsY2V4dDp2YWx1ZS10eXBlIl09PSJlcnJvciImJmRyW3ldIT1udWxsJiYocC50PSJlIixwLnc9eSxwLnY9ZHJbeV0pLHAudD09PSJzIiYmKHAudj15fHwiIixOLmxlbmd0aCYmKHAuUj1OKSx6PVI9PTApLHdlLlRhcmdldCYmKHAubD13ZSksQS5sZW5ndGg+MCYmKHAuYz1BLEE9W10pLHkmJnQuY2VsbFRleHQhPT0hMSYmKHAudz15KSx6JiYocC50PSJ6IixkZWxldGUgcC52KSwoIXp8fHQuc2hlZXRTdHVicykmJiEodC5zaGVldFJvd3MmJnQuc2hlZXRSb3dzPD1CKSlmb3IodmFyIGVlPTA7ZWU8YmU7KytlZSl7aWYobWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSx0LmRlbnNlKWZvcihtWyIhZGF0YSJdW0IrZWVdfHwobVsiIWRhdGEiXVtCK2VlXT1bXSksbVsiIWRhdGEiXVtCK2VlXVtMXT1lZT09MD9wOlVlKHApOy0tbWU+MDspbVsiIWRhdGEiXVtCK2VlXVtMK21lXT1VZShwKTtlbHNlIGZvcihtW0llKHtyOkIrZWUsYzpMfSldPXA7LS1tZT4wOyltW0llKHtyOkIrZWUsYzpMK21lfSldPVVlKHApO0cuZS5jPD1MJiYoRy5lLmM9TCl9bWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxMKz1tZS0xLG1lPTAscD17fSx5PSIiLE49W119d2U9e307YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y2FzZSJkb2N1bWVudC1jb250ZW50IjpjYXNlIueUteWtkOihqOagvOaWh+ahoyI6Y2FzZSJzcHJlYWRzaGVldCI6Y2FzZSLkuLvkvZMiOmNhc2Uic2NyaXB0cyI6Y2FzZSJzdHlsZXMiOmNhc2UiZm9udC1mYWNlLWRlY2xzIjpjYXNlIm1hc3Rlci1zdHlsZXMiOmlmKGRbMV09PT0iLyIpe2lmKChmPWkucG9wKCkpWzBdIT09ZFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrZn1lbHNlIGRbMF0uY2hhckF0KGRbMF0ubGVuZ3RoLTIpIT09Ii8iJiZpLnB1c2goW2RbM10sITBdKTticmVhaztjYXNlImFubm90YXRpb24iOmlmKGRbMV09PT0iLyIpe2lmKChmPWkucG9wKCkpWzBdIT09ZFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrZjtVLnQ9eSxOLmxlbmd0aCYmKFUuUj1OKSxVLmE9TyxBLnB1c2goVSkseT1QLFI9YixOPUR9ZWxzZSBpZihkWzBdLmNoYXJBdChkWzBdLmxlbmd0aC0yKSE9PSIvIil7aS5wdXNoKFtkWzNdLCExXSk7dmFyIGtlPW9lKGRbMF0sITApO2tlLmRpc3BsYXkmJkZlKGtlLmRpc3BsYXkpfHwoQS5oaWRkZW49ITApLFA9eSxiPVIsRD1OLHk9IiIsUj0wLE49W119Tz0iIixJPTA7YnJlYWs7Y2FzZSJjcmVhdG9yIjpkWzFdPT09Ii8iP089bi5zbGljZShJLGQuaW5kZXgpOkk9ZC5pbmRleCtkWzBdLmxlbmd0aDticmVhaztjYXNlIm1ldGEiOmNhc2Ui5YWD5pWw5o2uIjpjYXNlInNldHRpbmdzIjpjYXNlImNvbmZpZy1pdGVtLXNldCI6Y2FzZSJjb25maWctaXRlbS1tYXAtaW5kZXhlZCI6Y2FzZSJjb25maWctaXRlbS1tYXAtZW50cnkiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLW5hbWVkIjpjYXNlInNoYXBlcyI6Y2FzZSJmcmFtZSI6Y2FzZSJ0ZXh0LWJveCI6Y2FzZSJpbWFnZSI6Y2FzZSJkYXRhLXBpbG90LXRhYmxlcyI6Y2FzZSJsaXN0LXN0eWxlIjpjYXNlImZvcm0iOmNhc2UiZGRlLWxpbmtzIjpjYXNlImV2ZW50LWxpc3RlbmVycyI6Y2FzZSJjaGFydCI6aWYoZFsxXT09PSIvIil7aWYoKGY9aS5wb3AoKSlbMF0hPT1kWzNdKXRocm93IkJhZCBzdGF0ZTogIitmfWVsc2UgZFswXS5jaGFyQXQoZFswXS5sZW5ndGgtMikhPT0iLyImJmkucHVzaChbZFszXSwhMV0pO3k9IiIsUj0wLE49W107YnJlYWs7Y2FzZSJzY2llbnRpZmljLW51bWJlciI6Y2FzZSJjdXJyZW5jeS1zeW1ib2wiOmNhc2UiZmlsbC1jaGFyYWN0ZXIiOmJyZWFrO2Nhc2UidGV4dC1zdHlsZSI6Y2FzZSJib29sZWFuLXN0eWxlIjpjYXNlIm51bWJlci1zdHlsZSI6Y2FzZSJjdXJyZW5jeS1zdHlsZSI6Y2FzZSJwZXJjZW50YWdlLXN0eWxlIjpjYXNlImRhdGUtc3R5bGUiOmNhc2UidGltZS1zdHlsZSI6aWYoZFsxXT09PSIvIil7dmFyIGhlPWlyLmxhc3RJbmRleDtEZihuLnNsaWNlKGMsaXIubGFzdEluZGV4KSxhLG5lKSxpci5sYXN0SW5kZXg9aGV9ZWxzZSBkWzBdLmNoYXJBdChkWzBdLmxlbmd0aC0yKSE9PSIvIiYmKGM9aXIubGFzdEluZGV4LWRbMF0ubGVuZ3RoKTticmVhaztjYXNlInNjcmlwdCI6YnJlYWs7Y2FzZSJsaWJyYXJpZXMiOmJyZWFrO2Nhc2UiYXV0b21hdGljLXN0eWxlcyI6YnJlYWs7Y2FzZSJkZWZhdWx0LXN0eWxlIjpjYXNlInBhZ2UtbGF5b3V0IjpicmVhaztjYXNlInN0eWxlIjp7dmFyIHhlPW9lKGRbMF0sITEpO3hlLmZhbWlseT09InRhYmxlLWNlbGwiJiZuZVt4ZVsiZGF0YS1zdHlsZS1uYW1lIl1dP3FbeGUubmFtZV09bmVbeGVbImRhdGEtc3R5bGUtbmFtZSJdXTp4ZS5mYW1pbHk9PSJ0YWJsZSImJihsZVt4ZS5uYW1lXT14ZSl9YnJlYWs7Y2FzZSJtYXAiOmJyZWFrO2Nhc2UiZm9udC1mYWNlIjpicmVhaztjYXNlInBhcmFncmFwaC1wcm9wZXJ0aWVzIjpicmVhaztjYXNlInRhYmxlLXByb3BlcnRpZXMiOnt2YXIgWGU9b2UoZFswXSwhMSk7eGUmJnhlLmZhbWlseT09InRhYmxlIiYmKHhlLmRpc3BsYXk9WGUuZGlzcGxheSl9YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4tcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsLXByb3BlcnRpZXMiOmJyZWFrO2Nhc2UibnVtYmVyIjpicmVhaztjYXNlImZyYWN0aW9uIjpicmVhaztjYXNlImRheSI6Y2FzZSJtb250aCI6Y2FzZSJ5ZWFyIjpjYXNlImVyYSI6Y2FzZSJkYXktb2Ytd2VlayI6Y2FzZSJ3ZWVrLW9mLXllYXIiOmNhc2UicXVhcnRlciI6Y2FzZSJob3VycyI6Y2FzZSJtaW51dGVzIjpjYXNlInNlY29uZHMiOmNhc2UiYW0tcG0iOmJyZWFrO2Nhc2UiYm9vbGVhbiI6YnJlYWs7Y2FzZSJ0ZXh0IjppZihkWzBdLnNsaWNlKC0yKT09PSIvPiIpYnJlYWs7aWYoZFsxXT09PSIvIilzd2l0Y2goaVtpLmxlbmd0aC0xXVswXSl7Y2FzZSJudW1iZXItc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpvKz1uLnNsaWNlKGwsZC5pbmRleCk7YnJlYWt9ZWxzZSBsPWQuaW5kZXgrZFswXS5sZW5ndGg7YnJlYWs7Y2FzZSJuYW1lZC1yYW5nZSI6cz1vZShkWzBdLCExKSxBZT13bihzWyJjZWxsLXJhbmdlLWFkZHJlc3MiXSk7dmFyIHplPXtOYW1lOnMubmFtZSxSZWY6QWVbMF0rIiEiK0FlWzFdfTtwZSYmKHplLlNoZWV0PWcubGVuZ3RoKSxPZS5OYW1lcy5wdXNoKHplKTticmVhaztjYXNlInRleHQtY29udGVudCI6YnJlYWs7Y2FzZSJ0ZXh0LXByb3BlcnRpZXMiOmJyZWFrO2Nhc2UiZW1iZWRkZWQtdGV4dCI6YnJlYWs7Y2FzZSJib2R5IjpjYXNlIueUteWtkOihqOagvCI6YnJlYWs7Y2FzZSJmb3JtcyI6YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4iOmJyZWFrO2Nhc2UidGFibGUtaGVhZGVyLXJvd3MiOmJyZWFrO2Nhc2UidGFibGUtcm93cyI6YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4tZ3JvdXAiOmJyZWFrO2Nhc2UidGFibGUtaGVhZGVyLWNvbHVtbnMiOmJyZWFrO2Nhc2UidGFibGUtY29sdW1ucyI6YnJlYWs7Y2FzZSJudWxsLWRhdGUiOnN3aXRjaChzPW9lKGRbMF0sITEpLHNbImRhdGUtdmFsdWUiXSl7Y2FzZSIxOTA0LTAxLTAxIjpPZS5XQlByb3BzLmRhdGUxOTA0PSEwO2JyZWFrfWJyZWFrO2Nhc2UiZ3JhcGhpYy1wcm9wZXJ0aWVzIjpicmVhaztjYXNlImNhbGN1bGF0aW9uLXNldHRpbmdzIjpicmVhaztjYXNlIm5hbWVkLWV4cHJlc3Npb25zIjpicmVhaztjYXNlImxhYmVsLXJhbmdlIjpicmVhaztjYXNlImxhYmVsLXJhbmdlcyI6YnJlYWs7Y2FzZSJuYW1lZC1leHByZXNzaW9uIjpicmVhaztjYXNlInNvcnQiOmJyZWFrO2Nhc2Uic29ydC1ieSI6YnJlYWs7Y2FzZSJzb3J0LWdyb3VwcyI6YnJlYWs7Y2FzZSJ0YWIiOmJyZWFrO2Nhc2UibGluZS1icmVhayI6YnJlYWs7Y2FzZSJzcGFuIjpicmVhaztjYXNlInAiOmNhc2Ui5paH5pys5LiyIjppZihbIm1hc3Rlci1zdHlsZXMiXS5pbmRleE9mKGlbaS5sZW5ndGgtMV1bMF0pPi0xKWJyZWFrO2lmKGRbMV09PT0iLyImJighd3x8IXdbInN0cmluZy12YWx1ZSJdKSl7dmFyIGplPVQyKG4uc2xpY2UoUixkLmluZGV4KSk7eT0oeS5sZW5ndGg+MD95K2AKYDoiIikramVbMF19ZWxzZSBkWzBdLnNsaWNlKC0yKT09Ii8+Ij95Kz1gCmA6KG9lKGRbMF0sITEpLFI9ZC5pbmRleCtkWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJzIjpicmVhaztjYXNlImRhdGFiYXNlLXJhbmdlIjppZihkWzFdPT09Ii8iKWJyZWFrO3RyeXtBZT13bihvZShkWzBdKVsidGFyZ2V0LXJhbmdlLWFkZHJlc3MiXSksaFtBZVswXV1bIiFhdXRvZmlsdGVyIl09e3JlZjpBZVsxXX19Y2F0Y2h7fWJyZWFrO2Nhc2UiZGF0ZSI6YnJlYWs7Y2FzZSJvYmplY3QiOmJyZWFrO2Nhc2UidGl0bGUiOmNhc2Ui5qCH6aKYIjpicmVhaztjYXNlImRlc2MiOmJyZWFrO2Nhc2UiYmluYXJ5LWRhdGEiOmJyZWFrO2Nhc2UidGFibGUtc291cmNlIjpicmVhaztjYXNlInNjZW5hcmlvIjpicmVhaztjYXNlIml0ZXJhdGlvbiI6YnJlYWs7Y2FzZSJjb250ZW50LXZhbGlkYXRpb25zIjpicmVhaztjYXNlImNvbnRlbnQtdmFsaWRhdGlvbiI6YnJlYWs7Y2FzZSJoZWxwLW1lc3NhZ2UiOmJyZWFrO2Nhc2UiZXJyb3ItbWVzc2FnZSI6YnJlYWs7Y2FzZSJkYXRhYmFzZS1yYW5nZXMiOmJyZWFrO2Nhc2UiZmlsdGVyIjpicmVhaztjYXNlImZpbHRlci1hbmQiOmJyZWFrO2Nhc2UiZmlsdGVyLW9yIjpicmVhaztjYXNlImZpbHRlci1jb25kaXRpb24iOmJyZWFrO2Nhc2UiZmlsdGVyLXNldC1pdGVtIjpicmVhaztjYXNlImxpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0IjpicmVhaztjYXNlImxpc3QtbGV2ZWwtc3R5bGUtbnVtYmVyIjpicmVhaztjYXNlImxpc3QtbGV2ZWwtcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJzZW5kZXItZmlyc3RuYW1lIjpjYXNlInNlbmRlci1sYXN0bmFtZSI6Y2FzZSJzZW5kZXItaW5pdGlhbHMiOmNhc2Uic2VuZGVyLXRpdGxlIjpjYXNlInNlbmRlci1wb3NpdGlvbiI6Y2FzZSJzZW5kZXItZW1haWwiOmNhc2Uic2VuZGVyLXBob25lLXByaXZhdGUiOmNhc2Uic2VuZGVyLWZheCI6Y2FzZSJzZW5kZXItY29tcGFueSI6Y2FzZSJzZW5kZXItcGhvbmUtd29yayI6Y2FzZSJzZW5kZXItc3RyZWV0IjpjYXNlInNlbmRlci1jaXR5IjpjYXNlInNlbmRlci1wb3N0YWwtY29kZSI6Y2FzZSJzZW5kZXItY291bnRyeSI6Y2FzZSJzZW5kZXItc3RhdGUtb3ItcHJvdmluY2UiOmNhc2UiYXV0aG9yLW5hbWUiOmNhc2UiYXV0aG9yLWluaXRpYWxzIjpjYXNlImNoYXB0ZXIiOmNhc2UiZmlsZS1uYW1lIjpjYXNlInRlbXBsYXRlLW5hbWUiOmNhc2Uic2hlZXQtbmFtZSI6YnJlYWs7Y2FzZSJldmVudC1saXN0ZW5lciI6YnJlYWs7Y2FzZSJpbml0aWFsLWNyZWF0b3IiOmNhc2UiY3JlYXRpb24tZGF0ZSI6Y2FzZSJwcmludC1kYXRlIjpjYXNlImdlbmVyYXRvciI6Y2FzZSJkb2N1bWVudC1zdGF0aXN0aWMiOmNhc2UidXNlci1kZWZpbmVkIjpjYXNlImVkaXRpbmctZHVyYXRpb24iOmNhc2UiZWRpdGluZy1jeWNsZXMiOmJyZWFrO2Nhc2UiY29uZmlnLWl0ZW0iOmJyZWFrO2Nhc2UicGFnZS1udW1iZXIiOmJyZWFrO2Nhc2UicGFnZS1jb3VudCI6YnJlYWs7Y2FzZSJ0aW1lIjpicmVhaztjYXNlImNlbGwtcmFuZ2Utc291cmNlIjpicmVhaztjYXNlImRldGVjdGl2ZSI6YnJlYWs7Y2FzZSJvcGVyYXRpb24iOmJyZWFrO2Nhc2UiaGlnaGxpZ2h0ZWQtcmFuZ2UiOmJyZWFrO2Nhc2UiZGF0YS1waWxvdC10YWJsZSI6Y2FzZSJzb3VyY2UtY2VsbC1yYW5nZSI6Y2FzZSJzb3VyY2Utc2VydmljZSI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkIjpjYXNlImRhdGEtcGlsb3QtbGV2ZWwiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbHMiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbCI6Y2FzZSJkYXRhLXBpbG90LW1lbWJlcnMiOmNhc2UiZGF0YS1waWxvdC1tZW1iZXIiOmNhc2UiZGF0YS1waWxvdC1kaXNwbGF5LWluZm8iOmNhc2UiZGF0YS1waWxvdC1zb3J0LWluZm8iOmNhc2UiZGF0YS1waWxvdC1sYXlvdXQtaW5mbyI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkLXJlZmVyZW5jZSI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwcyI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwIjpjYXNlImRhdGEtcGlsb3QtZ3JvdXAtbWVtYmVyIjpicmVhaztjYXNlInJlY3QiOmJyZWFrO2Nhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbHMiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbCI6Y2FzZSJkZGUtbGluayI6Y2FzZSJkZGUtc291cmNlIjpicmVhaztjYXNlInByb3BlcnRpZXMiOmJyZWFrO2Nhc2UicHJvcGVydHkiOmJyZWFrO2Nhc2UiYSI6aWYoZFsxXSE9PSIvIil7aWYod2U9b2UoZFswXSwhMSksIXdlLmhyZWYpYnJlYWs7d2UuVGFyZ2V0PUNlKHdlLmhyZWYpLGRlbGV0ZSB3ZS5ocmVmLHdlLlRhcmdldC5jaGFyQXQoMCk9PSIjIiYmd2UuVGFyZ2V0LmluZGV4T2YoIi4iKT4tMT8oQWU9d24od2UuVGFyZ2V0LnNsaWNlKDEpKSx3ZS5UYXJnZXQ9IiMiK0FlWzBdKyIhIitBZVsxXSk6d2UuVGFyZ2V0Lm1hdGNoKC9eXC5cLltcXFwvXS8pJiYod2UuVGFyZ2V0PXdlLlRhcmdldC5zbGljZSgzKSksd2UudGl0bGUmJih3ZS5Ub29sdGlwPUNlKHdlLnRpdGxlKSxkZWxldGUgd2UudGl0bGUpfWJyZWFrO2Nhc2UidGFibGUtcHJvdGVjdGlvbiI6YnJlYWs7Y2FzZSJkYXRhLXBpbG90LWdyYW5kLXRvdGFsIjpicmVhaztjYXNlIm9mZmljZS1kb2N1bWVudC1jb21tb24tYXR0cnMiOmJyZWFrO2RlZmF1bHQ6c3dpdGNoKGRbMl0pe2Nhc2UiZGM6IjpjYXNlImNhbGNleHQ6IjpjYXNlImxvZXh0OiI6Y2FzZSJvb286IjpjYXNlImNoYXJ0b29vOiI6Y2FzZSJkcmF3OiI6Y2FzZSJzdHlsZToiOmNhc2UiY2hhcnQ6IjpjYXNlImZvcm06IjpjYXNlInVvZjoiOmNhc2Ui6KGoOiI6Y2FzZSLlrZc6IjpicmVhaztkZWZhdWx0OmlmKHQuV1RGKXRocm93IG5ldyBFcnJvcihkKX19dmFyIGRlPXtTaGVldHM6aCxTaGVldE5hbWVzOmcsV29ya2Jvb2s6T2V9O3JldHVybiB0LmJvb2tTaGVldHMmJmRlbGV0ZSBkZS5TaGVldHMsZGV9ZnVuY3Rpb24gUmYoZSxhKXthPWF8fHt9LEdyKGUsIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIpJiZLbyh0cihlLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSxhKTt2YXIgcj1scihlLCJzdHlsZXMueG1sIiksdD1yJiZEZihWZShyKSxhKSxuPWxyKGUsImNvbnRlbnQueG1sIik7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIGNvbnRlbnQueG1sIGluIE9EUyAvIFVPRiBmaWxlIik7dmFyIGk9SWYoVmUobiksYSx0KTtyZXR1cm4gR3IoZSwibWV0YS54bWwiKSYmKGkuUHJvcHM9aXModHIoZSwibWV0YS54bWwiKSkpLGkuYm9va1R5cGU9Im9kcyIsaX1mdW5jdGlvbiBPZihlLGEpe3ZhciByPUlmKGUsYSk7cmV0dXJuIHIuYm9va1R5cGU9ImZvZHMiLHJ9LyohIHNoZWV0anMgKEMpIDIwMTMtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL3ZhciB2cj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gdHlwZW9mIFVpbnQ4QXJyYXk+InUifHx0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuc3ViYXJyYXk+InUiPyJzbGljZSI6dHlwZW9mIEJ1ZmZlcjwidSI/dHlwZW9mIEJ1ZmZlci5wcm90b3R5cGUuc3ViYXJyYXk+InUiPyJzbGljZSI6KHR5cGVvZiBCdWZmZXIuZnJvbT09ImZ1bmN0aW9uIj9CdWZmZXIuZnJvbShbNzIsNjJdKTpuZXcgQnVmZmVyKFs3Miw2Ml0pKWluc3RhbmNlb2YgVWludDhBcnJheT8ic3ViYXJyYXkiOiJzbGljZSI6InN1YmFycmF5In1jYXRjaHtyZXR1cm4ic2xpY2UifX0oKTtmdW5jdGlvbiBLdChlKXtyZXR1cm4gbmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfWZ1bmN0aW9uIHZ0KGUpe3JldHVybiB0eXBlb2YgVGV4dERlY29kZXI8InUiP25ldyBUZXh0RGVjb2RlcigpLmRlY29kZShlKTpWZShmYShlKSl9ZnVuY3Rpb24gTmYoZSl7Zm9yKHZhciBhPTAscj0wO3I8ZS5sZW5ndGg7KytyKWErPWVbcl0ubGVuZ3RoO3ZhciB0PW5ldyBVaW50OEFycmF5KGEpLG49MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgaT1lW3JdLGY9aS5sZW5ndGg7aWYoZjwyNTApZm9yKHZhciBzPTA7czxmOysrcyl0W24rK109aVtzXTtlbHNlIHQuc2V0KGksbiksbis9Zn1yZXR1cm4gdH1mdW5jdGlvbiBqdChlKXtyZXR1cm4gZS09ZT4+MSYxNDMxNjU1NzY1LGU9KGUmODU4OTkzNDU5KSsoZT4+MiY4NTg5OTM0NTkpLChlKyhlPj40KSYyNTI2NDUxMzUpKjE2ODQzMDA5Pj4+MjR9ZnVuY3Rpb24gRTIoZSxhKXtmb3IodmFyIHI9KGVbYSsxNV0mMTI3KTw8N3xlW2ErMTRdPj4xLHQ9ZVthKzE0XSYxLG49YSsxMztuPj1hOy0tbil0PXQqMjU2K2Vbbl07cmV0dXJuKGVbYSsxNV0mMTI4Py10OnQpKk1hdGgucG93KDEwLHItNjE3Nil9ZnVuY3Rpb24gTzAoZSxhKXt2YXIgcj1hLmwsdD1lW3JdJjEyNztlOmlmKGVbcisrXT49MTI4JiYodHw9KGVbcl0mMTI3KTw8NyxlW3IrK108MTI4fHwodHw9KGVbcl0mMTI3KTw8MTQsZVtyKytdPDEyOCl8fCh0fD0oZVtyXSYxMjcpPDwyMSxlW3IrK108MTI4KXx8KHQrPShlW3JdJjEyNykqTWF0aC5wb3coMiwyOCksKytyLGVbcisrXTwxMjgpfHwodCs9KGVbcl0mMTI3KSpNYXRoLnBvdygyLDM1KSwrK3IsZVtyKytdPDEyOCl8fCh0Kz0oZVtyXSYxMjcpKk1hdGgucG93KDIsNDIpLCsrcixlW3IrK108MTI4KSkpYnJlYWsgZTtyZXR1cm4gYS5sPXIsdH1mdW5jdGlvbiBCZShlKXt2YXIgYT0wLHI9ZVthXSYxMjc7cmV0dXJuIGVbYSsrXTwxMjh8fChyfD0oZVthXSYxMjcpPDw3LGVbYSsrXTwxMjgpfHwocnw9KGVbYV0mMTI3KTw8MTQsZVthKytdPDEyOCl8fChyfD0oZVthXSYxMjcpPDwyMSxlW2ErK108MTI4KXx8KHJ8PShlW2FdJjE1KTw8MjgpLHJ9ZnVuY3Rpb24gUmUoZSl7Zm9yKHZhciBhPVtdLHI9e2w6MH07ci5sPGUubGVuZ3RoOyl7dmFyIHQ9ci5sLG49TzAoZSxyKSxpPW4mNztuPW4vOHwwO3ZhciBmLHM9ci5sO3N3aXRjaChpKXtjYXNlIDA6e2Zvcig7ZVtzKytdPj0xMjg7KTtmPWVbdnJdKHIubCxzKSxyLmw9c31icmVhaztjYXNlIDE6Zj1lW3ZyXShzLHMrOCksci5sPXMrODticmVhaztjYXNlIDI6e3ZhciBjPU8wKGUscik7Zj1lW3ZyXShyLmwsci5sK2MpLHIubCs9Y31icmVhaztjYXNlIDU6Zj1lW3ZyXShzLHMrNCksci5sPXMrNDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiUEIgVHlwZSAiLmNvbmNhdChpLCIgZm9yIEZpZWxkICIpLmNvbmNhdChuLCIgYXQgb2Zmc2V0ICIpLmNvbmNhdCh0KSl9dmFyIG89e2RhdGE6Zix0eXBlOml9O2Fbbl09PW51bGwmJihhW25dPVtdKSxhW25dLnB1c2gobyl9cmV0dXJuIGF9ZnVuY3Rpb24gTjAoZSxhKXtyZXR1cm4gZT8ubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBhKHIuZGF0YSl9KXx8W119ZnVuY3Rpb24gQTIoZSl7Zm9yKHZhciBhLHI9W10sdD17bDowfTt0Lmw8ZS5sZW5ndGg7KXt2YXIgbj1PMChlLHQpLGk9UmUoZVt2cl0odC5sLHQubCtuKSk7dC5sKz1uO3ZhciBmPXtpZDpCZShpWzFdWzBdLmRhdGEpLG1lc3NhZ2VzOltdfTtpWzJdLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGM9UmUocy5kYXRhKSxvPUJlKGNbM11bMF0uZGF0YSk7Zi5tZXNzYWdlcy5wdXNoKHttZXRhOmMsZGF0YTplW3ZyXSh0LmwsdC5sK28pfSksdC5sKz1vfSksKGE9aVszXSkhPW51bGwmJmFbMF0mJihmLm1lcmdlPUJlKGlbM11bMF0uZGF0YSk+Pj4wPjApLHIucHVzaChmKX1yZXR1cm4gcn1mdW5jdGlvbiB5MihlLGEpe2lmKGUhPTApdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFNuYXBweSBjaHVuayB0eXBlICIuY29uY2F0KGUpKTtmb3IodmFyIHI9e2w6MH0sdD1PMChhLHIpLG49W10saT1yLmw7aTxhLmxlbmd0aDspe3ZhciBmPWFbaV0mMztpZihmPT0wKXt2YXIgcz1hW2krK10+PjI7aWYoczw2MCkrK3M7ZWxzZXt2YXIgYz1zLTU5O3M9YVtpXSxjPjEmJihzfD1hW2krMV08PDgpLGM+MiYmKHN8PWFbaSsyXTw8MTYpLGM+MyYmKHN8PWFbaSszXTw8MjQpLHM+Pj49MCxzKyssaSs9Y31uLnB1c2goYVt2cl0oaSxpK3MpKSxpKz1zO2NvbnRpbnVlfWVsc2V7dmFyIG89MCxsPTA7aWYoZj09MT8obD0oYVtpXT4+MiY3KSs0LG89KGFbaSsrXSYyMjQpPDwzLG98PWFbaSsrXSk6KGw9KGFbaSsrXT4+MikrMSxmPT0yPyhvPWFbaV18YVtpKzFdPDw4LGkrPTIpOihvPShhW2ldfGFbaSsxXTw8OHxhW2krMl08PDE2fGFbaSszXTw8MjQpPj4+MCxpKz00KSksbz09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgb2Zmc2V0IDAiKTtmb3IodmFyIHU9bi5sZW5ndGgtMSx4PW87dT49MCYmeD49blt1XS5sZW5ndGg7KXgtPW5bdV0ubGVuZ3RoLC0tdTtpZih1PDApaWYoeD09MCl4PW5bdT0wXS5sZW5ndGg7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgb2Zmc2V0IGJleW9uZCBsZW5ndGgiKTtpZihsPHgpbi5wdXNoKG5bdV1bdnJdKG5bdV0ubGVuZ3RoLXgsblt1XS5sZW5ndGgteCtsKSk7ZWxzZXtmb3IoeD4wJiYobi5wdXNoKG5bdV1bdnJdKG5bdV0ubGVuZ3RoLXgpKSxsLT14KSwrK3U7bD49blt1XS5sZW5ndGg7KW4ucHVzaChuW3VdKSxsLT1uW3VdLmxlbmd0aCwrK3U7bCYmbi5wdXNoKG5bdV1bdnJdKDAsbCkpfW4ubGVuZ3RoPjI1JiYobj1bTmYobildKX19Zm9yKHZhciBoPTAsZz0wO2c8bi5sZW5ndGg7KytnKWgrPW5bZ10ubGVuZ3RoO2lmKGghPXQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGxlbmd0aDogIi5jb25jYXQoaCwiICE9ICIpLmNvbmNhdCh0KSk7cmV0dXJuIG59ZnVuY3Rpb24gUzIoZSl7QXJyYXkuaXNBcnJheShlKSYmKGU9bmV3IFVpbnQ4QXJyYXkoZSkpO2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aDspe3ZhciB0PWVbcisrXSxuPWVbcl18ZVtyKzFdPDw4fGVbcisyXTw8MTY7cis9MyxhLnB1c2guYXBwbHkoYSx5Mih0LGVbdnJdKHIscituKSkpLHIrPW59aWYociE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZGF0YSBpcyBub3QgYSB2YWxpZCBmcmFtZWQgc3RyZWFtISIpO3JldHVybiBhLmxlbmd0aD09MT9hWzBdOk5mKGEpfXZhciBDMj1mdW5jdGlvbigpe3JldHVybntzc3Q6W10scnNzdDpbXSxvZm10OltdLG5mbXQ6W10sZm1sYTpbXSxmZXJyOltdLGNtbnQ6W119fTtmdW5jdGlvbiBNZihlLGEscix0LG4pe3ZhciBpLGYscyxjLG89YSYyNTUsbD1hPj44LHU9bD49NT9uOnQ7ZTppZihyJihsPjQ/ODo0KSYmZS50PT0ibiImJm89PTcpe3ZhciB4PShpPXVbN10pIT1udWxsJiZpWzBdP0JlKHVbN11bMF0uZGF0YSk6LTE7aWYoeD09LTEpYnJlYWsgZTt2YXIgaD0oZj11WzE1XSkhPW51bGwmJmZbMF0/QmUodVsxNV1bMF0uZGF0YSk6LTEsZz0ocz11WzE2XSkhPW51bGwmJnNbMF0/QmUodVsxNl1bMF0uZGF0YSk6LTEsbT0oYz11WzQwXSkhPW51bGwmJmNbMF0/QmUodVs0MF1bMF0uZGF0YSk6LTEsZD1lLnYscD1kO3I6aWYobSl7aWYoZD09MCl7aD1nPTI7YnJlYWsgcn1kPj02MDQ4MDA/aD0xOmQ+PTg2NDAwP2g9MjpkPj0zNjAwP2g9NDpkPj02MD9oPTg6ZD49MT9oPTE2Omg9MzIsTWF0aC5mbG9vcihkKSE9ZD9nPTMyOmQlNjA/Zz0xNjpkJTM2MDA/Zz04OmQlODY0MDA/Zz00OmQlNjA0ODAwJiYoZz0yKSxnPGgmJihnPWgpfWlmKGg9PS0xfHxnPT0tMSlicmVhayBlO3ZhciB3PVtdLF89W107aD09MSYmKHA9ZC82MDQ4MDAsZz09MT9fLnB1c2goJ2QiZCInKToocHw9MCxkLT02MDQ4MDAqcCksdy5wdXNoKHArKHg9PTI/IiB3ZWVrIisocD09MT8iIjoicyIpOng9PTE/InciOiIiKSkpLGg8PTImJmc+PTImJihwPWQvODY0MDAsZz4yJiYocHw9MCxkLT04NjQwMCpwKSxfLnB1c2goJ2QiZCInKSx3LnB1c2gocCsoeD09Mj8iIGRheSIrKHA9PTE/IiI6InMiKTp4PT0xPyJkIjoiIikpKSxoPD00JiZnPj00JiYocD1kLzM2MDAsZz40JiYocHw9MCxkLT0zNjAwKnApLF8ucHVzaCgoaD49ND8iW2hdIjoiaCIpKyciaCInKSx3LnB1c2gocCsoeD09Mj8iIGhvdXIiKyhwPT0xPyIiOiJzIik6eD09MT8iaCI6IiIpKSksaDw9OCYmZz49OCYmKHA9ZC82MCxnPjgmJihwfD0wLGQtPTYwKnApLF8ucHVzaCgoaD49OD8iW21dIjoibSIpKycibSInKSx4PT0wP3cucHVzaCgoaD09OCYmZz09OHx8cD49MTA/IiI6IjAiKStwKTp3LnB1c2gocCsoeD09Mj8iIG1pbnV0ZSIrKHA9PTE/IiI6InMiKTp4PT0xPyJtIjoiIikpKSxoPD0xNiYmZz49MTYmJihwPWQsZz4xNiYmKHB8PTAsZC09cCksXy5wdXNoKChoPj0xNj8iW3NdIjoicyIpKycicyInKSx4PT0wP3cucHVzaCgoZz09MTYmJmg9PTE2fHxwPj0xMD8iIjoiMCIpK3ApOncucHVzaChwKyh4PT0yPyIgc2Vjb25kIisocD09MT8iIjoicyIpOng9PTE/InMiOiIiKSkpLGc+PTMyJiYocD1NYXRoLnJvdW5kKDFlMypkKSxoPDMyJiZfLnB1c2goJy4wMDAibXMiJykseD09MD93LnB1c2goKHA+PTEwMD8iIjpwPj0xMD8iMCI6IjAwIikrcCk6dy5wdXNoKHArKHg9PTI/IiBtaWxsaXNlY29uZCIrKHA9PTE/IiI6InMiKTp4PT0xPyJtcyI6IiIpKSksZS53PXcuam9pbih4PT0wPyI6IjoiICIpLGUuej1fLmpvaW4oeD09MD8nIjoiJzoiICIpLHg9PTAmJihlLnc9ZS53LnJlcGxhY2UoLzooXGRcZFxkKSQvLCIuJDEiKSl9fWZ1bmN0aW9uIGIyKGUsYSxyLHQpe3ZhciBuPUt0KGUpLGk9bi5nZXRVaW50MzIoNCwhMCksZj0tMSxzPS0xLGM9LTEsbz1OYU4sbD0wLHU9bmV3IERhdGUoRGF0ZS5VVEMoMjAwMSwwLDEpKSx4PXI+MT8xMjo4O2kmMiYmKGM9bi5nZXRVaW50MzIoeCwhMCkseCs9NCkseCs9anQoaSYocj4xPzM0Njg6Mzk2KSkqNCxpJjUxMiYmKGY9bi5nZXRVaW50MzIoeCwhMCkseCs9NCkseCs9anQoaSYocj4xPzEyMjg4OjQwOTYpKSo0LGkmMTYmJihzPW4uZ2V0VWludDMyKHgsITApLHgrPTQpLGkmMzImJihvPW4uZ2V0RmxvYXQ2NCh4LCEwKSx4Kz04KSxpJjY0JiYodS5zZXRUaW1lKHUuZ2V0VGltZSgpKyhsPW4uZ2V0RmxvYXQ2NCh4LCEwKSkqMWUzKSx4Kz04KSxyPjEmJihpPW4uZ2V0VWludDMyKDgsITApPj4+MTYsaSYyNTUmJihjPT0tMSYmKGM9bi5nZXRVaW50MzIoeCwhMCkpLHgrPTQpKTt2YXIgaCxnPWVbcj49ND8xOjJdO3N3aXRjaChnKXtjYXNlIDA6cmV0dXJuO2Nhc2UgMjpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgMzpoPXt0OiJzIix2OmEuc3N0W3NdfTticmVhaztjYXNlIDU6dD8uY2VsbERhdGVzP2g9e3Q6ImQiLHY6dX06aD17dDoibiIsdjpsLzg2NDAwKzM1NDMwLHo6VGVbMTRdfTticmVhaztjYXNlIDY6aD17dDoiYiIsdjpvPjB9O2JyZWFrO2Nhc2UgNzpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgODpoPXt0OiJlIix2OjB9O2JyZWFrO2Nhc2UgOTppZihmPi0xKXt2YXIgbT1hLnJzc3RbZl07aD17dDoicyIsdjptLnZ9LG0ubCYmKGgubD17VGFyZ2V0Om0ubH0pfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVt2cl0oMCw0KSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVt2cl0oMCw0KSkpfXJldHVybiBjPi0xJiZNZihoLGd8cjw8OCxpLGEub2ZtdFtjXSxhLm5mbXRbY10pLGc9PTcmJihoLnYvPTg2NDAwKSxofWZ1bmN0aW9uIEQyKGUsYSxyKXt2YXIgdD1LdChlKTt0LmdldFVpbnQzMig0LCEwKTt2YXIgbj10LmdldFVpbnQzMig4LCEwKSxpPTEyLGY9LTEscz0tMSxjPS0xLG89TmFOLGw9TmFOLHU9MCx4PW5ldyBEYXRlKERhdGUuVVRDKDIwMDEsMCwxKSk7biYxJiYobz1FMihlLGkpLGkrPTE2KSxuJjImJihsPXQuZ2V0RmxvYXQ2NChpLCEwKSxpKz04KSxuJjQmJih4LnNldFRpbWUoeC5nZXRUaW1lKCkrKHU9dC5nZXRGbG9hdDY0KGksITApKSoxZTMpLGkrPTgpLG4mOCYmKHM9dC5nZXRVaW50MzIoaSwhMCksaSs9NCksbiYxNiYmKGY9dC5nZXRVaW50MzIoaSwhMCksaSs9NCksaSs9anQobiY0ODApKjQsbiY1MTImJih0LmdldFVpbnQzMihpLCEwKSxpKz00KSxpKz1qdChuJjEwMjQpKjQsbiYyMDQ4JiYodC5nZXRVaW50MzIoaSwhMCksaSs9NCk7dmFyIGgsZz1lWzFdO3N3aXRjaChnKXtjYXNlIDA6aD17dDoieiJ9O2JyZWFrO2Nhc2UgMjpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgMzpoPXt0OiJzIix2OmEuc3N0W3NdfTticmVhaztjYXNlIDU6cj8uY2VsbERhdGVzP2g9e3Q6ImQiLHY6eH06aD17dDoibiIsdjp1Lzg2NDAwKzM1NDMwLHo6VGVbMTRdfTticmVhaztjYXNlIDY6aD17dDoiYiIsdjpsPjB9O2JyZWFrO2Nhc2UgNzpoPXt0OiJuIix2Omx9O2JyZWFrO2Nhc2UgODpoPXt0OiJlIix2OjB9O2JyZWFrO2Nhc2UgOTppZihmPi0xKXt2YXIgbT1hLnJzc3RbZl07aD17dDoicyIsdjptLnZ9LG0ubCYmKGgubD17VGFyZ2V0Om0ubH0pfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVsxXSwiIDogIikuY29uY2F0KG4mMzEsIiA6ICIpLmNvbmNhdChlW3ZyXSgwLDQpKSk7YnJlYWs7Y2FzZSAxMDpoPXt0OiJuIix2Om99O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVsxXSwiIDogIikuY29uY2F0KG4mMzEsIiA6ICIpLmNvbmNhdChlW3ZyXSgwLDQpKSl9aWYoaSs9anQobiY0MDk2KSo0LG4mNTE2MDk2JiYoYz09LTEmJihjPXQuZ2V0VWludDMyKGksITApKSxpKz00KSxuJjUyNDI4OCl7dmFyIGQ9dC5nZXRVaW50MzIoaSwhMCk7aSs9NCxhLmNtbnRbZF0mJihoLmM9TjIoYS5jbW50W2RdKSl9cmV0dXJuIGM+LTEmJk1mKGgsZ3wxMjgwLG4+PjEzLGEub2ZtdFtjXSxhLm5mbXRbY10pLGc9PTcmJihoLnYvPTg2NDAwKSxofWZ1bmN0aW9uIEkyKGUsYSxyKXtzd2l0Y2goZVswXSl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpyZXR1cm4gYjIoZSxhLGVbMF0scik7Y2FzZSA1OnJldHVybiBEMihlLGEscik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHBheWxvYWQgdmVyc2lvbiAiLmNvbmNhdChlWzBdKSl9fWZ1bmN0aW9uIGhyKGUpe3ZhciBhPVJlKGUpO3JldHVybiBCZShhWzFdWzBdLmRhdGEpfWZ1bmN0aW9uIGV0KGUsYSl7dmFyIHI9UmUoYS5kYXRhKSx0PUJlKHJbMV1bMF0uZGF0YSksbj1yWzNdLGk9W107cmV0dXJuKG58fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBzLGMsbz1SZShmLmRhdGEpO2lmKG9bMV0pe3ZhciBsPUJlKG9bMV1bMF0uZGF0YSk+Pj4wO3N3aXRjaCh0KXtjYXNlIDE6aVtsXT12dChvWzNdWzBdLmRhdGEpO2JyZWFrO2Nhc2UgODp7dmFyIHU9ZVtocihvWzldWzBdLmRhdGEpXVswXSx4PVJlKHUuZGF0YSksaD1lW2hyKHhbMV1bMF0uZGF0YSldWzBdLGc9QmUoaC5tZXRhWzFdWzBdLmRhdGEpO2lmKGchPTIwMDEpdGhyb3cgbmV3IEVycm9yKCIyMDAwIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvICIuY29uY2F0KGcpKTt2YXIgbT1SZShoLmRhdGEpLGQ9e3Y6bVszXS5tYXAoZnVuY3Rpb24oXyl7cmV0dXJuIHZ0KF8uZGF0YSl9KS5qb2luKCIiKX07aVtsXT1kO2U6aWYoKHM9bT8uWzExXSkhPW51bGwmJnNbMF0pe3ZhciBwPShjPVJlKG1bMTFdWzBdLmRhdGEpKT09bnVsbD92b2lkIDA6Y1sxXTtpZighcClicmVhayBlO3AuZm9yRWFjaChmdW5jdGlvbihfKXt2YXIgeSxSLFAsYj1SZShfLmRhdGEpO2lmKCh5PWJbMl0pIT1udWxsJiZ5WzBdKXt2YXIgTj1lW2hyKChSPWJbMl0pPT1udWxsP3ZvaWQgMDpSWzBdLmRhdGEpXVswXSxEPUJlKE4ubWV0YVsxXVswXS5kYXRhKTtzd2l0Y2goRCl7Y2FzZSAyMDMyOnZhciBCPVJlKE4uZGF0YSk7KFA9Qj8uWzJdKSE9bnVsbCYmUFswXSYmIWQubCYmKGQubD12dChCWzJdWzBdLmRhdGEpKTticmVhaztjYXNlIDIwMzk6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmxvZygidW5yZWNvZ25pemVkIE9iamVjdEF0dHJpYnV0ZSB0eXBlICIuY29uY2F0KEQpKX19fSl9fWJyZWFrO2Nhc2UgMjppW2xdPVJlKG9bNl1bMF0uZGF0YSk7YnJlYWs7Y2FzZSAzOmlbbF09UmUob1s1XVswXS5kYXRhKTticmVhaztjYXNlIDEwOnt2YXIgdz1lW2hyKG9bMTBdWzBdLmRhdGEpXVswXTtpW2xdPVBmKGUsdy5kYXRhKX1icmVhaztkZWZhdWx0OnRocm93IHR9fX0pLGl9ZnVuY3Rpb24gUjIoZSxhKXt2YXIgcix0LG4saSxmLHMsYyxvLGwsdSx4LGgsZyxtLGQ9UmUoZSkscD1CZShkWzFdWzBdLmRhdGEpPj4+MCx3PUJlKGRbMl1bMF0uZGF0YSk+Pj4wLF89KCh0PShyPWRbOF0pPT1udWxsP3ZvaWQgMDpyWzBdKT09bnVsbD92b2lkIDA6dC5kYXRhKSYmQmUoZFs4XVswXS5kYXRhKT4wfHwhMSx5LFI7aWYoKGk9KG49ZFs3XSk9PW51bGw/dm9pZCAwOm5bMF0pIT1udWxsJiZpLmRhdGEmJmEhPTApeT0ocz0oZj1kWzddKT09bnVsbD92b2lkIDA6ZlswXSk9PW51bGw/dm9pZCAwOnMuZGF0YSxSPShvPShjPWRbNl0pPT1udWxsP3ZvaWQgMDpjWzBdKT09bnVsbD92b2lkIDA6by5kYXRhO2Vsc2UgaWYoKHU9KGw9ZFs0XSk9PW51bGw/dm9pZCAwOmxbMF0pIT1udWxsJiZ1LmRhdGEmJmEhPTEpeT0oaD0oeD1kWzRdKT09bnVsbD92b2lkIDA6eFswXSk9PW51bGw/dm9pZCAwOmguZGF0YSxSPShtPShnPWRbM10pPT1udWxsP3ZvaWQgMDpnWzBdKT09bnVsbD92b2lkIDA6bS5kYXRhO2Vsc2UgdGhyb3ciTlVNQkVSUyBUaWxlIG1pc3NpbmcgIi5jb25jYXQoYSwiIGNlbGwgc3RvcmFnZSIpO2Zvcih2YXIgUD1fPzQ6MSxiPUt0KHkpLE49W10sRD0wO0Q8eS5sZW5ndGgvMjsrK0Qpe3ZhciBCPWIuZ2V0VWludDE2KEQqMiwhMCk7Qjw2NTUzNSYmTi5wdXNoKFtELEJdKX1pZihOLmxlbmd0aCE9dyl0aHJvdyJFeHBlY3RlZCAiLmNvbmNhdCh3LCIgY2VsbHMsIGZvdW5kICIpLmNvbmNhdChOLmxlbmd0aCk7dmFyIEw9W107Zm9yKEQ9MDtEPE4ubGVuZ3RoLTE7KytEKUxbTltEXVswXV09Ult2cl0oTltEXVsxXSpQLE5bRCsxXVsxXSpQKTtyZXR1cm4gTi5sZW5ndGg+PTEmJihMW05bTi5sZW5ndGgtMV1bMF1dPVJbdnJdKE5bTi5sZW5ndGgtMV1bMV0qUCkpLHtSOnAsY2VsbHM6TH19ZnVuY3Rpb24gTzIoZSxhKXt2YXIgcix0PVJlKGEuZGF0YSksbj0tMTsocj10Py5bN10pIT1udWxsJiZyWzBdJiYoQmUodFs3XVswXS5kYXRhKT4+PjA/bj0xOm49MCk7dmFyIGk9TjAodFs1XSxmdW5jdGlvbihmKXtyZXR1cm4gUjIoZixuKX0pO3JldHVybntucm93czpCZSh0WzRdWzBdLmRhdGEpPj4+MCxkYXRhOmkucmVkdWNlKGZ1bmN0aW9uKGYscyl7cmV0dXJuIGZbcy5SXXx8KGZbcy5SXT1bXSkscy5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGMsbyl7aWYoZltzLlJdW29dKXRocm93IG5ldyBFcnJvcigiRHVwbGljYXRlIGNlbGwgcj0iLmNvbmNhdChzLlIsIiBjPSIpLmNvbmNhdChvKSk7ZltzLlJdW29dPWN9KSxmfSxbXSl9fWZ1bmN0aW9uIFBmKGUsYSl7dmFyIHIsdCxuLGksZixzLGMsbyxsLHUseD17dDoiIixhOiIifSxoPVJlKGEpO2lmKCh0PShyPWg/LlsxXSk9PW51bGw/dm9pZCAwOnJbMF0pIT1udWxsJiZ0LmRhdGEmJih4LnQ9dnQoKGk9KG49aD8uWzFdKT09bnVsbD92b2lkIDA6blswXSk9PW51bGw/dm9pZCAwOmkuZGF0YSl8fCIiKSwocz0oZj1oPy5bM10pPT1udWxsP3ZvaWQgMDpmWzBdKSE9bnVsbCYmcy5kYXRhKXt2YXIgZz1lW2hyKChvPShjPWg/LlszXSk9PW51bGw/dm9pZCAwOmNbMF0pPT1udWxsP3ZvaWQgMDpvLmRhdGEpXVswXSxtPVJlKGcuZGF0YSk7KHU9KGw9bVsxXSk9PW51bGw/dm9pZCAwOmxbMF0pIT1udWxsJiZ1LmRhdGEmJih4LmE9dnQobVsxXVswXS5kYXRhKSl9cmV0dXJuIGg/Lls0XSYmKHgucmVwbGllcz1bXSxoWzRdLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIHA9ZVtocihkLmRhdGEpXVswXTt4LnJlcGxpZXMucHVzaChQZihlLHAuZGF0YSkpfSkpLHh9ZnVuY3Rpb24gTjIoZSl7dmFyIGE9W107cmV0dXJuIGEucHVzaCh7dDplLnR8fCIiLGE6ZS5hLFQ6ZS5yZXBsaWVzJiZlLnJlcGxpZXMubGVuZ3RoPjB9KSxlLnJlcGxpZXMmJmUucmVwbGllcy5mb3JFYWNoKGZ1bmN0aW9uKHIpe2EucHVzaCh7dDpyLnR8fCIiLGE6ci5hLFQ6ITB9KX0pLGF9ZnVuY3Rpb24gTTIoZSxhLHIsdCl7dmFyIG4saSxmLHMsYyxvLGwsdSx4LGgsZyxtLGQscCx3PVJlKGEuZGF0YSksXz17czp7cjowLGM6MH0sZTp7cjowLGM6MH19O2lmKF8uZS5yPShCZSh3WzZdWzBdLmRhdGEpPj4+MCktMSxfLmUucjwwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3cgdmFyaW50ICIuY29uY2F0KHdbNl1bMF0uZGF0YSkpO2lmKF8uZS5jPShCZSh3WzddWzBdLmRhdGEpPj4+MCktMSxfLmUuYzwwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2wgdmFyaW50ICIuY29uY2F0KHdbN11bMF0uZGF0YSkpO3JbIiFyZWYiXT1EZShfKTt2YXIgeT1yWyIhZGF0YSJdIT1udWxsLFI9cixQPVJlKHdbNF1bMF0uZGF0YSksYj1DMigpOyhuPVBbNF0pIT1udWxsJiZuWzBdJiYoYi5zc3Q9ZXQoZSxlW2hyKFBbNF1bMF0uZGF0YSldWzBdKSksKGk9UFs2XSkhPW51bGwmJmlbMF0mJihiLmZtbGE9ZXQoZSxlW2hyKFBbNl1bMF0uZGF0YSldWzBdKSksKGY9UFsxMV0pIT1udWxsJiZmWzBdJiYoYi5vZm10PWV0KGUsZVtocihQWzExXVswXS5kYXRhKV1bMF0pKSwocz1QWzEyXSkhPW51bGwmJnNbMF0mJihiLmZlcnI9ZXQoZSxlW2hyKFBbMTJdWzBdLmRhdGEpXVswXSkpLChjPVBbMTddKSE9bnVsbCYmY1swXSYmKGIucnNzdD1ldChlLGVbaHIoUFsxN11bMF0uZGF0YSldWzBdKSksKG89UFsxOV0pIT1udWxsJiZvWzBdJiYoYi5jbW50PWV0KGUsZVtocihQWzE5XVswXS5kYXRhKV1bMF0pKSwobD1QWzIyXSkhPW51bGwmJmxbMF0mJihiLm5mbXQ9ZXQoZSxlW2hyKFBbMjJdWzBdLmRhdGEpXVswXSkpO3ZhciBOPVJlKFBbM11bMF0uZGF0YSksRD0wO2lmKCEoKHU9UFs5XSkhPW51bGwmJnVbMF0pKXRocm93Ik5VTUJFUlMgZmlsZSBtaXNzaW5nIHJvdyB0cmVlIjt2YXIgQj1SZShQWzldWzBdLmRhdGEpWzFdLm1hcChmdW5jdGlvbihxKXtyZXR1cm4gUmUocS5kYXRhKX0pO2lmKEIuZm9yRWFjaChmdW5jdGlvbihxKXtEPUJlKHFbMV1bMF0uZGF0YSk7dmFyIGxlPUJlKHFbMl1bMF0uZGF0YSksUT1OWzFdW2xlXTtpZighUSl0aHJvdyJOVU1CRVJTIG1pc3NpbmcgdGlsZSAiK2xlO3ZhciBnZT1SZShRLmRhdGEpLHVlPWVbaHIoZ2VbMl1bMF0uZGF0YSldWzBdLGo9QmUodWUubWV0YVsxXVswXS5kYXRhKTtpZihqIT02MDAyKXRocm93IG5ldyBFcnJvcigiNjAwMSB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byAiLmNvbmNhdChqKSk7dmFyIHllPU8yKGUsdWUpO3llLmRhdGEuZm9yRWFjaChmdW5jdGlvbihiZSxtZSl7YmUuZm9yRWFjaChmdW5jdGlvbihaLE9lKXt2YXIgd2U9STIoWixiLHQpO3dlJiYoeT8oUlsiIWRhdGEiXVtEK21lXXx8KFJbIiFkYXRhIl1bRCttZV09W10pLFJbIiFkYXRhIl1bRCttZV1bT2VdPXdlKTpyW0hlKE9lKStHZShEK21lKV09d2UpfSl9KSxEKz15ZS5ucm93c30pLCh4PVBbMTNdKSE9bnVsbCYmeFswXSl7dmFyIEw9ZVtocihQWzEzXVswXS5kYXRhKV1bMF0sRz1CZShMLm1ldGFbMV1bMF0uZGF0YSk7aWYoRyE9NjE0NCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIG1lcmdlIHR5cGUgNjE0NCwgZm91bmQgIi5jb25jYXQoRykpO3JbIiFtZXJnZXMiXT0oaD1SZShMLmRhdGEpKT09bnVsbD92b2lkIDA6aFsxXS5tYXAoZnVuY3Rpb24ocSl7dmFyIGxlPVJlKHEuZGF0YSksUT1LdChSZShsZVsxXVswXS5kYXRhKVsxXVswXS5kYXRhKSxnZT1LdChSZShsZVsyXVswXS5kYXRhKVsxXVswXS5kYXRhKTtyZXR1cm57czp7cjpRLmdldFVpbnQxNigwLCEwKSxjOlEuZ2V0VWludDE2KDIsITApfSxlOntyOlEuZ2V0VWludDE2KDAsITApK2dlLmdldFVpbnQxNigwLCEwKS0xLGM6US5nZXRVaW50MTYoMiwhMCkrZ2UuZ2V0VWludDE2KDIsITApLTF9fX0pfWlmKCEoKGc9clsiIW1lcmdlcyJdKSE9bnVsbCYmZy5sZW5ndGgpJiYoKG09d1s0N10pIT1udWxsJiZtWzBdKSl7dmFyIGllPVJlKHdbNDddWzBdLmRhdGEpO2lmKChkPWllWzJdKSE9bnVsbCYmZFswXSl7dmFyIG5lPVJlKGllWzJdWzBdLmRhdGEpOyhwPW5lWzNdKSE9bnVsbCYmcFswXSYmKHJbIiFtZXJnZXMiXT1OMChuZVszXSxmdW5jdGlvbihxKXt2YXIgbGUsUSxnZSx1ZSxqLHllPVJlKHEpLGJlPVJlKHllWzJdWzBdLmRhdGEpLG1lPVJlKGJlWzFdWzBdLmRhdGEpO2lmKChsZT1tZVsxXSkhPW51bGwmJmxlWzBdKXt2YXIgWj1SZShtZVsxXVswXS5kYXRhKSxPZT1CZShaWzFdWzBdLmRhdGEpO2lmKE9lPT02Nyl7dmFyIHdlPVJlKFpbNDBdWzBdLmRhdGEpO2lmKCEoISgoUT13ZVszXSkhPW51bGwmJlFbMF0pfHwhKChnZT13ZVs0XSkhPW51bGwmJmdlWzBdKSkpe3ZhciBBZT1SZSh3ZVszXVswXS5kYXRhKSxBPVJlKHdlWzRdWzBdLmRhdGEpLFU9QmUoQWVbMV1bMF0uZGF0YSksTz0odWU9QWVbMl0pIT1udWxsJiZ1ZVswXT9CZShBZVsyXVswXS5kYXRhKTpVLEk9QmUoQVsxXVswXS5kYXRhKSx6PShqPUFbMl0pIT1udWxsJiZqWzBdP0JlKEFbMl1bMF0uZGF0YSk6STtyZXR1cm57czp7cjpJLGM6VX0sZTp7cjp6LGM6T319fX19fSkuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxIT1udWxsfSkpfX19ZnVuY3Rpb24gUDIoZSxhLHIpe3ZhciB0PVJlKGEuZGF0YSksbj17IiFyZWYiOiJBMSJ9O3I/LmRlbnNlJiYoblsiIWRhdGEiXT1bXSk7dmFyIGk9ZVtocih0WzJdWzBdLmRhdGEpXSxmPUJlKGlbMF0ubWV0YVsxXVswXS5kYXRhKTtpZihmIT02MDAxKXRocm93IG5ldyBFcnJvcigiNjAwMCB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byAiLmNvbmNhdChmKSk7cmV0dXJuIE0yKGUsaVswXSxuLHIpLG59ZnVuY3Rpb24gTDIoZSxhLHIpe3ZhciB0LG49UmUoYS5kYXRhKSxpPXtuYW1lOih0PW5bMV0pIT1udWxsJiZ0WzBdP3Z0KG5bMV1bMF0uZGF0YSk6IiIsc2hlZXRzOltdfSxmPU4wKG5bMl0saHIpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24ocyl7ZVtzXS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBvPUJlKGMubWV0YVsxXVswXS5kYXRhKTtvPT02ZTMmJmkuc2hlZXRzLnB1c2goUDIoZSxjLHIpKX0pfSksaX1mdW5jdGlvbiBCMihlLGEscil7dmFyIHQsbj1ObigpO24uV29ya2Jvb2s9e1dCUHJvcHM6e2RhdGUxOTA0OiEwfX07dmFyIGk9UmUoYS5kYXRhKTtpZigodD1pWzJdKSE9bnVsbCYmdFswXSl0aHJvdyBuZXcgRXJyb3IoIktleW5vdGUgcHJlc2VudGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpO3ZhciBmPU4wKGlbMV0saHIpO2lmKGYuZm9yRWFjaChmdW5jdGlvbihzKXtlW3NdLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIG89QmUoYy5tZXRhWzFdWzBdLmRhdGEpO2lmKG89PTIpe3ZhciBsPUwyKGUsYyxyKTtsLnNoZWV0cy5mb3JFYWNoKGZ1bmN0aW9uKHUseCl7SnQobix1LHg9PTA/bC5uYW1lOmwubmFtZSsiXyIreCwhMCl9KX19KX0pLG4uU2hlZXROYW1lcy5sZW5ndGg9PTApdGhyb3cgbmV3IEVycm9yKCJFbXB0eSBOVU1CRVJTIGZpbGUiKTtyZXR1cm4gbi5ib29rVHlwZT0ibnVtYmVycyIsbn1mdW5jdGlvbiBibihlLGEpe3ZhciByLHQsbixpLGYscyxjLG89e30sbD1bXTtpZihlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgubWF0Y2goL1wuaXdwdjIvKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHBhc3N3b3JkIHByb3RlY3Rpb24iKX0pLGUuRmlsZUluZGV4LmZvckVhY2goZnVuY3Rpb24oeCl7aWYoeC5uYW1lLm1hdGNoKC9cLml3YSQvKSYmeC5jb250ZW50WzBdPT0wKXt2YXIgaDt0cnl7aD1TMih4LmNvbnRlbnQpfWNhdGNoKG0pe3JldHVybiBjb25zb2xlLmxvZygiPz8gIit4LmNvbnRlbnQubGVuZ3RoKyIgIisobS5tZXNzYWdlfHxtKSl9dmFyIGc7dHJ5e2c9QTIoaCl9Y2F0Y2gobSl7cmV0dXJuIGNvbnNvbGUubG9nKCIjIyAiKyhtLm1lc3NhZ2V8fG0pKX1nLmZvckVhY2goZnVuY3Rpb24obSl7b1ttLmlkXT1tLm1lc3NhZ2VzLGwucHVzaChtLmlkKX0pfX0pLCFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaGFzIG5vIG1lc3NhZ2VzIik7aWYoKG49KHQ9KHI9bz8uWzFdKT09bnVsbD92b2lkIDA6clswXS5tZXRhKT09bnVsbD92b2lkIDA6dFsxXSkhPW51bGwmJm5bMF0uZGF0YSYmQmUob1sxXVswXS5tZXRhWzFdWzBdLmRhdGEpPT0xZTQpdGhyb3cgbmV3IEVycm9yKCJQYWdlcyBkb2N1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt2YXIgdT0oKGM9KHM9KGY9KGk9bz8uWzFdKT09bnVsbD92b2lkIDA6aVswXSk9PW51bGw/dm9pZCAwOmYubWV0YSk9PW51bGw/dm9pZCAwOnNbMV0pPT1udWxsP3ZvaWQgMDpjWzBdLmRhdGEpJiZCZShvWzFdWzBdLm1ldGFbMV1bMF0uZGF0YSk9PTEmJm9bMV1bMF07aWYodXx8bC5mb3JFYWNoKGZ1bmN0aW9uKHgpe29beF0uZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgZz1CZShoLm1ldGFbMV1bMF0uZGF0YSk+Pj4wO2lmKGc9PTEpaWYoIXUpdT1oO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJEb2N1bWVudCBoYXMgbXVsdGlwbGUgcm9vdHMiKX0pfSksIXUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBEb2N1bWVudCByb290Iik7cmV0dXJuIEIyKG8sdSxhKX1mdW5jdGlvbiBVMihlKXtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciB0PTA7dCE9ZS5sZW5ndGg7Kyt0KXt2YXIgbj1lW3RdO3JbblswXV09PT12b2lkIDAmJihyW25bMF1dPW5bMV0pLG5bMl09PT0ibiImJihyW25bMF1dPU51bWJlcihyW25bMF1dKSl9fX1mdW5jdGlvbiBEbihlKXtVMihbWyJjZWxsTkYiLCExXSxbImNlbGxIVE1MIiwhMF0sWyJjZWxsRm9ybXVsYSIsITBdLFsiY2VsbFN0eWxlcyIsITFdLFsiY2VsbFRleHQiLCEwXSxbImNlbGxEYXRlcyIsITFdLFsic2hlZXRTdHVicyIsITFdLFsic2hlZXRSb3dzIiwwLCJuIl0sWyJib29rRGVwcyIsITFdLFsiYm9va1NoZWV0cyIsITFdLFsiYm9va1Byb3BzIiwhMV0sWyJib29rRmlsZXMiLCExXSxbImJvb2tWQkEiLCExXSxbInBhc3N3b3JkIiwiIl0sWyJXVEYiLCExXV0pKGUpfWZ1bmN0aW9uIEgyKGUpe3JldHVybiBvdC5XUy5pbmRleE9mKGUpPi0xPyJzaGVldCI6ZT09b3QuQ1M/ImNoYXJ0IjplPT1vdC5EUz8iZGlhbG9nIjplPT1vdC5NUz8ibWFjcm8iOmUmJmUubGVuZ3RoP2U6InNoZWV0In1mdW5jdGlvbiBXMihlLGEpe2lmKCFlKXJldHVybiAwO3RyeXtlPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfHwodC5pZD10LnN0clJlbElEKSxbdC5uYW1lLGVbIiFpZCJdW3QuaWRdLlRhcmdldCxIMihlWyIhaWQiXVt0LmlkXS5UeXBlKV19KX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4hZXx8ZS5sZW5ndGg9PT0wP251bGw6ZX1mdW5jdGlvbiBWMihlLGEscix0LG4saSxmLHMpe2lmKCEoIWV8fCFlWyIhbGVnZHJhd2VsIl0pKXt2YXIgYz1oYShlWyIhbGVnZHJhd2VsIl0uVGFyZ2V0LHQpLG89bHIocixjLCEwKTtvJiZrMShWZShvKSxlLHN8fFtdKX19ZnVuY3Rpb24gRzIoZSl7dmFyIGE9KGV8fCIiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy4qXC4vLCIiKTtzd2l0Y2goYSl7Y2FzZSJwbmciOnJldHVybiJpbWFnZS9wbmciO2Nhc2UiZ2lmIjpyZXR1cm4iaW1hZ2UvZ2lmIjtjYXNlImJtcCI6cmV0dXJuImltYWdlL2JtcCI7Y2FzZSJzdmciOnJldHVybiJpbWFnZS9zdmcreG1sIjtjYXNlImpwZyI6Y2FzZSJqcGVnIjpyZXR1cm4iaW1hZ2UvanBlZyI7ZGVmYXVsdDpyZXR1cm4iYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn19ZnVuY3Rpb24gWDIoZSxhLHIsdCxuLGksZil7aWYoISghZXx8IWVbIiFkcmF3ZWwiXSkmJiEoIWl8fCFpLmRyYXdpbmdzJiYhaS5jaGFydHMpKXt2YXIgcz1oYShlWyIhZHJhd2VsIl0uVGFyZ2V0LHQpLGM9T3Qocyksbz1HcyhscihyLHMsITApLFhhKGxyKHIsYywhMCkscykpO2VbIiFkcmF3aW5ncyJdPW8saS5kcmF3aW5ncyYmby5pbWFnZXMmJm8uaW1hZ2VzLmxlbmd0aCYmby5pbWFnZXMuZm9yRWFjaChmdW5jdGlvbihsKXtpZighKCFsfHwhbC50YXJnZXQpKXt2YXIgdT1oYShsLnRhcmdldCxzKSx4PXEwKHIsdSwhMCk7eCYmKGwuZGF0YVVSST0iZGF0YToiK0cyKHUpKyI7YmFzZTY0LCIrWDAoeCkpLGwucGF0aD11fX0pLGkuY2hhcnRzJiZvLmNoYXJ0cyYmby5jaGFydHMubGVuZ3RoJiYoZVsiIWNoYXJ0cyJdPVtdLG8uY2hhcnRzLmZvckVhY2goZnVuY3Rpb24obCl7aWYoISghbHx8IWwudGFyZ2V0KSl7dmFyIHU9aGEobC50YXJnZXQscykseD1PdCh1KSxoPXhmKGxyKHIsdSwhMCksdSxpLFhhKGxyKHIseCwhMCksdSksZix7IiF0eXBlIjoiY2hhcnQifSk7bC5tb2RlbD1oJiZoWyIhY2hhcnQiXSxsLmRhdGE9aCxsLnBhdGg9dSxlWyIhY2hhcnRzIl0ucHVzaChsKX19KSl9fWZ1bmN0aW9uIHoyKGUsYSxyLHQsbixpLGYscyxjLG8sbCx1KXt0cnl7aVt0XT1YYShscihlLHIsITApLGEpO3ZhciB4PXRyKGUsYSksaDtzd2l0Y2gocyl7Y2FzZSJzaGVldCI6aD1Gdih4LGEsbixjLGlbdF0sbyxsLHUpO2JyZWFrO2Nhc2UiY2hhcnQiOmlmKGg9VHYoeCxhLG4sYyxpW3RdLG8sbCx1KSwhaHx8IWhbIiFkcmF3ZWwiXXx8IWMuZHJhd2luZ3MmJiFjLmNoYXJ0cylicmVhazt2YXIgZz1oYShoWyIhZHJhd2VsIl0uVGFyZ2V0LGEpLG09T3QoZyksZD1HcyhscihlLGcsITApLFhhKGxyKGUsbSwhMCksZykpO2lmKGhbIiFkcmF3aW5ncyJdPWQsIWMuY2hhcnRzfHwhZC5jaGFydClicmVhazt2YXIgcD1oYShkLmNoYXJ0LGcpLHc9T3QocCk7aD14ZihscihlLHAsITApLHAsYyxYYShscihlLHcsITApLHApLG8saCksZC5jaGFydHMmJmQuY2hhcnRzLmxlbmd0aCYmKGQuY2hhcnRzWzBdLm1vZGVsPWgmJmhbIiFjaGFydCJdLGhbIiFjaGFydHMiXT1kLmNoYXJ0cyk7YnJlYWs7Y2FzZSJtYWNybyI6aD1Fdih4LGEsbixjLGlbdF0sbyxsLHUpO2JyZWFrO2Nhc2UiZGlhbG9nIjpoPUF2KHgsYSxuLGMsaVt0XSxvLGwsdSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBzaGVldCB0eXBlICIrcyl9Zlt0XT1oO3ZhciBfPVtdLHk9W107aSYmaVt0XSYmcHIoaVt0XSkuZm9yRWFjaChmdW5jdGlvbihSKXt2YXIgUD0iIjtpZihpW3RdW1JdLlR5cGU9PW90LkNNTlQpe2lmKFA9aGEoaVt0XVtSXS5UYXJnZXQsYSksXz1Ddih0cihlLFAsITApLFAsYyksIV98fCFfLmxlbmd0aClyZXR1cm47S3MoaCxfLCExKX1pW3RdW1JdLlR5cGU9PW90LlRDTU5UJiYoUD1oYShpW3RdW1JdLlRhcmdldCxhKSx5PXkuY29uY2F0KEYxKHRyKGUsUCwhMCksYykpKX0pLHkmJnkubGVuZ3RoJiZLcyhoLHksITAsYy5wZW9wbGV8fFtdKSxzPT0ic2hlZXQiJiZYMihoLHMsZSxhLG4sYyxvKSxWMihoLHMsZSxhLG4sYyxvLF8pfWNhdGNoKFIpe2lmKGMuV1RGKXRocm93IFJ9fWZ1bmN0aW9uICRyKGUpe3JldHVybiBlLmNoYXJBdCgwKT09Ii8iP2Uuc2xpY2UoMSk6ZX1mdW5jdGlvbiAkMihlLGEpe2lmKG9pKCksYT1hfHx7fSxEbihhKSxHcihlLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKXx8R3IoZSwib2JqZWN0ZGF0YS54bWwiKSlyZXR1cm4gUmYoZSxhKTtpZihHcihlLCJJbmRleC9Eb2N1bWVudC5pd2EiKSl7aWYodHlwZW9mIFVpbnQ4QXJyYXk+InUiKXRocm93IG5ldyBFcnJvcigiTlVNQkVSUyBmaWxlIHBhcnNpbmcgcmVxdWlyZXMgVWludDhBcnJheSBzdXBwb3J0Iik7aWYodHlwZW9mIGJuPCJ1Iil7aWYoZS5GaWxlSW5kZXgpcmV0dXJuIGJuKGUsYSk7dmFyIHI9TWUudXRpbHMuY2ZiX25ldygpO3JldHVybiBwaShlKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe1ljKHIscSxxMChlLHEpKX0pLGJuKHIsYSl9dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBOVU1CRVJTIGZpbGUiKX1pZighR3IoZSwiW0NvbnRlbnRfVHlwZXNdLnhtbCIpKXtpZihHcihlLCJpbmRleC54bWwuZ3oiKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE5VTUJFUlMgMDggZmlsZSIpO2lmKEdyKGUsImluZGV4LnhtbCIpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTlVNQkVSUyAwOSBmaWxlIik7dmFyIHQ9TWUuZmluZChlLCJJbmRleC56aXAiKTtpZih0KXJldHVybiBhPVVlKGEpLGRlbGV0ZSBhLnR5cGUsdHlwZW9mIHQuY29udGVudD09InN0cmluZyImJihhLnR5cGU9ImJpbmFyeSIpLHR5cGVvZiBCdW48InUiJiZCdWZmZXIuaXNCdWZmZXIodC5jb250ZW50KT9wdChuZXcgVWludDhBcnJheSh0LmNvbnRlbnQpLGEpOnB0KHQuY29udGVudCxhKTt0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFpJUCBmaWxlIil9dmFyIG49cGkoZSksaT16byhscihlLCJbQ29udGVudF9UeXBlc10ueG1sIikpLGY9ITEscyxjO2lmKGkud29ya2Jvb2tzLmxlbmd0aD09PTAmJihjPSJ4bC93b3JrYm9vay54bWwiLHRyKGUsYywhMCkmJmkud29ya2Jvb2tzLnB1c2goYykpLGkud29ya2Jvb2tzLmxlbmd0aD09PTApe2lmKGM9InhsL3dvcmtib29rLmJpbiIsIXRyKGUsYywhMCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB3b3JrYm9vayIpO2kud29ya2Jvb2tzLnB1c2goYyksZj0hMH1pLndvcmtib29rc1swXS5zbGljZSgtMyk9PSJiaW4iJiYoZj0hMCk7dmFyIG89e30sbD17fTtpZighYS5ib29rU2hlZXRzJiYhYS5ib29rUHJvcHMpe2lmKEd0PVtdLGkuc3N0KXRyeXtHdD1Tdih0cihlLCRyKGkuc3N0KSksaS5zc3QsYSl9Y2F0Y2gocSl7aWYoYS5XVEYpdGhyb3cgcX1hLmNlbGxTdHlsZXMmJmkudGhlbWVzLmxlbmd0aCYmKG89VnMobHIoZSxpLnRoZW1lc1swXS5yZXBsYWNlKC9eXC8vLCIiKSwhMCl8fCIiLGEpKSxpLnN0eWxlJiYobD15dih0cihlLCRyKGkuc3R5bGUpKSxpLnN0eWxlLG8sYSkpfWkubGlua3MubWFwKGZ1bmN0aW9uKHEpe3RyeXt2YXIgbGU9WGEobHIoZSxPdCgkcihxKSkpLHEpO3JldHVybiBEdih0cihlLCRyKHEpKSxsZSxxLGEpfWNhdGNoe319KTt2YXIgdT13dih0cihlLCRyKGkud29ya2Jvb2tzWzBdKSksaS53b3JrYm9va3NbMF0sYSkseD17fSxoPSIiO2kuY29yZXByb3BzLmxlbmd0aCYmKGg9dHIoZSwkcihpLmNvcmVwcm9wc1swXSksITApLGgmJih4PWlzKGgpKSxpLmV4dHByb3BzLmxlbmd0aCE9PTAmJihoPXRyKGUsJHIoaS5leHRwcm9wc1swXSksITApLGgmJllvKGgseCxhKSkpO3ZhciBnPXt9OyghYS5ib29rU2hlZXRzfHxhLmJvb2tQcm9wcykmJmkuY3VzdHByb3BzLmxlbmd0aCE9PTAmJihoPWxyKGUsJHIoaS5jdXN0cHJvcHNbMF0pLCEwKSxoJiYoZz1abyhoLGEpKSk7dmFyIG09e307aWYoKGEuYm9va1NoZWV0c3x8YS5ib29rUHJvcHMpJiYodS5TaGVldHM/cz11LlNoZWV0cy5tYXAoZnVuY3Rpb24obGUpe3JldHVybiBsZS5uYW1lfSk6eC5Xb3Jrc2hlZXRzJiZ4LlNoZWV0TmFtZXMubGVuZ3RoPjAmJihzPXguU2hlZXROYW1lcyksYS5ib29rUHJvcHMmJihtLlByb3BzPXgsbS5DdXN0cHJvcHM9ZyksYS5ib29rU2hlZXRzJiZ0eXBlb2YgczwidSImJihtLlNoZWV0TmFtZXM9cyksYS5ib29rU2hlZXRzP20uU2hlZXROYW1lczphLmJvb2tQcm9wcykpcmV0dXJuIG07cz17fTt2YXIgZD17fTthLmJvb2tEZXBzJiZpLmNhbGNjaGFpbiYmKGQ9YnYodHIoZSwkcihpLmNhbGNjaGFpbikpLGkuY2FsY2NoYWluKSk7dmFyIHA9MCx3PXt9LF8seTt7dmFyIFI9dS5TaGVldHM7eC5Xb3Jrc2hlZXRzPVIubGVuZ3RoLHguU2hlZXROYW1lcz1bXTtmb3IodmFyIFA9MDtQIT1SLmxlbmd0aDsrK1ApeC5TaGVldE5hbWVzW1BdPVJbUF0ubmFtZX12YXIgYj1mPyJiaW4iOiJ4bWwiLE49aS53b3JrYm9va3NbMF0ubGFzdEluZGV4T2YoIi8iKSxEPShpLndvcmtib29rc1swXS5zbGljZSgwLE4rMSkrIl9yZWxzLyIraS53b3JrYm9va3NbMF0uc2xpY2UoTisxKSsiLnJlbHMiKS5yZXBsYWNlKC9eXC8vLCIiKTtHcihlLEQpfHwoRD0ieGwvX3JlbHMvd29ya2Jvb2suIitiKyIucmVscyIpO3ZhciBCPVhhKGxyKGUsRCwhMCksRC5yZXBsYWNlKC9fcmVscy4qLywiczVzIikpOyhpLm1ldGFkYXRhfHxbXSkubGVuZ3RoPj0xJiYoYS54bG1ldGE9SXYodHIoZSwkcihpLm1ldGFkYXRhWzBdKSksaS5tZXRhZGF0YVswXSxhKSksKGkucGVvcGxlfHxbXSkubGVuZ3RoPj0xJiYoYS5wZW9wbGU9VDEodHIoZSwkcihpLnBlb3BsZVswXSkpLGEpKSxCJiYoQj1XMihCLHUuU2hlZXRzKSk7dmFyIEw9dHIoZSwieGwvd29ya3NoZWV0cy9zaGVldC54bWwiLCEwKT8xOjA7ZTpmb3IocD0wO3AhPXguV29ya3NoZWV0czsrK3Ape3ZhciBHPSJzaGVldCI7aWYoQiYmQltwXT8oXz0ieGwvIitCW3BdWzFdLnJlcGxhY2UoL1tcL10/eGxcLy8sIiIpLEdyKGUsXyl8fChfPUJbcF1bMV0pLEdyKGUsXyl8fChfPUQucmVwbGFjZSgvX3JlbHNcL1tcU1xzXSokLywiIikrQltwXVsxXSksRz1CW3BdWzJdKTooXz0ieGwvd29ya3NoZWV0cy9zaGVldCIrKHArMS1MKSsiLiIrYixfPV8ucmVwbGFjZSgvc2hlZXQwXC4vLCJzaGVldC4iKSkseT1fLnJlcGxhY2UoL14oLiopKFwvKShbXlwvXSopJC8sIiQxL19yZWxzLyQzLnJlbHMiKSxhJiZhLnNoZWV0cyE9bnVsbClzd2l0Y2godHlwZW9mIGEuc2hlZXRzKXtjYXNlIm51bWJlciI6aWYocCE9YS5zaGVldHMpY29udGludWUgZTticmVhaztjYXNlInN0cmluZyI6aWYoeC5TaGVldE5hbWVzW3BdLnRvTG93ZXJDYXNlKCkhPWEuc2hlZXRzLnRvTG93ZXJDYXNlKCkpY29udGludWUgZTticmVhaztkZWZhdWx0OmlmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkoYS5zaGVldHMpKXtmb3IodmFyIGllPSExLG5lPTA7bmUhPWEuc2hlZXRzLmxlbmd0aDsrK25lKXR5cGVvZiBhLnNoZWV0c1tuZV09PSJudW1iZXIiJiZhLnNoZWV0c1tuZV09PXAmJihpZT0xKSx0eXBlb2YgYS5zaGVldHNbbmVdPT0ic3RyaW5nIiYmYS5zaGVldHNbbmVdLnRvTG93ZXJDYXNlKCk9PXguU2hlZXROYW1lc1twXS50b0xvd2VyQ2FzZSgpJiYoaWU9MSk7aWYoIWllKWNvbnRpbnVlIGV9fXoyKGUsXyx5LHguU2hlZXROYW1lc1twXSxwLHcscyxHLGEsdSxvLGwpfXJldHVybiBtPXtEaXJlY3Rvcnk6aSxXb3JrYm9vazp1LFByb3BzOngsQ3VzdHByb3BzOmcsRGVwczpkLFNoZWV0czpzLFNoZWV0TmFtZXM6eC5TaGVldE5hbWVzLFN0cmluZ3M6R3QsU3R5bGVzOmwsVGhlbWVzOm8sU1NGOlVlKFRlKX0sYSYmYS5ib29rRmlsZXMmJihlLmZpbGVzPyhtLmtleXM9bixtLmZpbGVzPWUuZmlsZXMpOihtLmtleXM9W10sbS5maWxlcz17fSxlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHEsbGUpe3E9cS5yZXBsYWNlKC9eUm9vdCBFbnRyeVtcL10vLCIiKSxtLmtleXMucHVzaChxKSxtLmZpbGVzW3FdPWUuRmlsZUluZGV4W2xlXX0pKSksYSYmYS5ib29rVkJBJiYoaS52YmEubGVuZ3RoPjA/bS52YmFyYXc9dHIoZSwkcihpLnZiYVswXSksITApOmkuZGVmYXVsdHMmJmkuZGVmYXVsdHMuYmluPT09UzEmJihtLnZiYXJhdz10cihlLCJ4bC92YmFQcm9qZWN0LmJpbiIsITApKSksbS5ib29rVHlwZT1mPyJ4bHNiIjoieGxzeCIsbX1mdW5jdGlvbiBLMihlLGEpe3ZhciByPWF8fHt9LHQ9Ildvcmtib29rIixuPU1lLmZpbmQoZSx0KTt0cnl7aWYodD0iLyFEYXRhU3BhY2VzL1ZlcnNpb24iLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO2lmKHp1KG4uY29udGVudCksdD0iLyFEYXRhU3BhY2VzL0RhdGFTcGFjZU1hcCIsbj1NZS5maW5kKGUsdCksIW58fCFuLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrdCk7dmFyIGk9S3Uobi5jb250ZW50KTtpZihpLmxlbmd0aCE9PTF8fGlbMF0uY29tcHMubGVuZ3RoIT09MXx8aVswXS5jb21wc1swXS50IT09MHx8aVswXS5uYW1lIT09IlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UifHxpWzBdLmNvbXBzWzBdLnYhPT0iRW5jcnlwdGVkUGFja2FnZSIpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgIit0KTtpZih0PSIvIURhdGFTcGFjZXMvRGF0YVNwYWNlSW5mby9TdHJvbmdFbmNyeXB0aW9uRGF0YVNwYWNlIixuPU1lLmZpbmQoZSx0KSwhbnx8IW4uY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit0KTt2YXIgZj1qdShuLmNvbnRlbnQpO2lmKGYubGVuZ3RoIT0xfHxmWzBdIT0iU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybSIpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgIit0KTtpZih0PSIvIURhdGFTcGFjZXMvVHJhbnNmb3JtSW5mby9TdHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtLyFQcmltYXJ5IixuPU1lLmZpbmQoZSx0KSwhbnx8IW4uY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit0KTtKdShuLmNvbnRlbnQpfWNhdGNoe31pZih0PSIvRW5jcnlwdGlvbkluZm8iLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO3ZhciBzPVp1KG4uY29udGVudCk7aWYodD0iL0VuY3J5cHRlZFBhY2thZ2UiLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO2lmKHNbMF09PTQmJnR5cGVvZiBkZWNyeXB0X2FnaWxlPCJ1IilyZXR1cm4gZGVjcnlwdF9hZ2lsZShzWzFdLG4uY29udGVudCxyLnBhc3N3b3JkfHwiIixyKTtpZihzWzBdPT0yJiZ0eXBlb2YgZGVjcnlwdF9zdGQ3NjwidSIpcmV0dXJuIGRlY3J5cHRfc3RkNzYoc1sxXSxuLmNvbnRlbnQsci5wYXNzd29yZHx8IiIscik7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpfWZ1bmN0aW9uIEluKGUsYSl7dmFyIHI9IiI7c3dpdGNoKChhfHx7fSkudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYnVmZmVyIjpyZXR1cm5bZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0sZVs2XSxlWzddXTtjYXNlImJhc2U2NCI6cj1EcihlLnNsaWNlKDAsMTIpKTticmVhaztjYXNlImJpbmFyeSI6cj1lO2JyZWFrO2Nhc2UiYXJyYXkiOnJldHVybltlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSxlWzZdLGVbN11dO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiKyhhJiZhLnR5cGV8fCJ1bmRlZmluZWQiKSl9cmV0dXJuW3IuY2hhckNvZGVBdCgwKSxyLmNoYXJDb2RlQXQoMSksci5jaGFyQ29kZUF0KDIpLHIuY2hhckNvZGVBdCgzKSxyLmNoYXJDb2RlQXQoNCksci5jaGFyQ29kZUF0KDUpLHIuY2hhckNvZGVBdCg2KSxyLmNoYXJDb2RlQXQoNyldfWZ1bmN0aW9uIGoyKGUsYSl7cmV0dXJuIE1lLmZpbmQoZSwiRW5jcnlwdGVkUGFja2FnZSIpP0syKGUsYSk6VGYoZSxhKX1mdW5jdGlvbiBZMihlLGEpe3ZhciByLHQ9ZSxuPWF8fHt9O3JldHVybiBuLnR5cGV8fChuLnR5cGU9TmUmJkJ1ZmZlci5pc0J1ZmZlcihlKT8iYnVmZmVyIjoiYmFzZTY0Iikscj1naSh0LG4pLCQyKHIsbil9ZnVuY3Rpb24gTGYoZSxhKXt2YXIgcj0wO2U6Zm9yKDtyPGUubGVuZ3RoOylzd2l0Y2goZS5jaGFyQ29kZUF0KHIpKXtjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjorK3I7YnJlYWs7Y2FzZSA2MDpyZXR1cm4geW4oZS5zbGljZShyKSxhKTtkZWZhdWx0OmJyZWFrIGV9cmV0dXJuIGx0LnRvX3dvcmtib29rKGUsYSl9ZnVuY3Rpb24gSjIoZSxhKXt2YXIgcj0iIix0PUluKGUsYSk7c3dpdGNoKGEudHlwZSl7Y2FzZSJiYXNlNjQiOnI9RHIoZSk7YnJlYWs7Y2FzZSJiaW5hcnkiOnI9ZTticmVhaztjYXNlImJ1ZmZlciI6cj1lLnRvU3RyaW5nKCJiaW5hcnkiKTticmVhaztjYXNlImFycmF5IjpyPUJhKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9cmV0dXJuIHRbMF09PTIzOSYmdFsxXT09MTg3JiZ0WzJdPT0xOTEmJihyPVZlKHIpKSxhLnR5cGU9ImJpbmFyeSIsTGYocixhKX1mdW5jdGlvbiBaMihlLGEpe3ZhciByPWU7cmV0dXJuIGEudHlwZT09ImJhc2U2NCImJihyPURyKHIpKSx0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihyPW5ldyBVaW50OEFycmF5KGUpKSxyPU5lJiZCdWZmZXIuaXNCdWZmZXIoZSk/ZS5zbGljZSgyKS50b1N0cmluZygidXRmMTZsZSIpOnR5cGVvZiBVaW50OEFycmF5PCJ1IiYmciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIikuZGVjb2RlKHIuc2xpY2UoMikpOnJjKHIuc2xpY2UoMikpOkduKHIuc2xpY2UoMikpLGEudHlwZT0iYmluYXJ5IixMZihyLGEpfWZ1bmN0aW9uIHEyKGUpe3JldHVybiBlLm1hdGNoKC9bXlx4MDAtXHg3Rl0vKT9DdChlKTplfWZ1bmN0aW9uIFJuKGUsYSxyLHQpe3JldHVybiB0PyhyLnR5cGU9InN0cmluZyIsbHQudG9fd29ya2Jvb2soZSxyKSk6bHQudG9fd29ya2Jvb2soYSxyKX1mdW5jdGlvbiBwdChlLGEpe1duKCk7dmFyIHI9YXx8e307aWYoci5jb2RlcGFnZSYmdHlwZW9mIG50PiJ1IiYmY29uc29sZS5lcnJvcigiQ29kZXBhZ2UgdGFibGVzIGFyZSBub3QgbG9hZGVkLiAgTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbWF5IG5vdCBnaXZlIGV4cGVjdGVkIHJlc3VsdHMiKSx0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIHB0KG5ldyBVaW50OEFycmF5KGUpLChyPVVlKHIpLHIudHlwZT0iYXJyYXkiLHIpKTtpZih0eXBlb2YgSW50OEFycmF5PCJ1IiYmZSBpbnN0YW5jZW9mIEludDhBcnJheSlyZXR1cm4gcHQobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUubGVuZ3RoKSxyKTt0eXBlb2YgVWludDhBcnJheTwidSImJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYhci50eXBlJiYoci50eXBlPXR5cGVvZiBEZW5vPCJ1Ij8iYnVmZmVyIjoiYXJyYXkiKTt2YXIgdD1lLG49WzAsMCwwLDBdLGk9ITE7aWYoci5jZWxsU3R5bGVzJiYoci5jZWxsTkY9ITAsci5zaGVldFN0dWJzPSEwKSx4dD17fSxyLmRhdGVORiYmKHh0LmRhdGVORj1yLmRhdGVORiksci50eXBlfHwoci50eXBlPU5lJiZCdWZmZXIuaXNCdWZmZXIoZSk/ImJ1ZmZlciI6ImJhc2U2NCIpLHIudHlwZT09ImZpbGUiJiYoci50eXBlPU5lPyJidWZmZXIiOiJiaW5hcnkiLHQ9SWMoZSksdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiYhTmUmJihyLnR5cGU9ImFycmF5IikpLHIudHlwZT09InN0cmluZyImJihpPSEwLHIudHlwZT0iYmluYXJ5IixyLmNvZGVwYWdlPTY1MDAxLHQ9cTIoZSkpLHIudHlwZT09ImFycmF5IiYmdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSYmdHlwZW9mIEFycmF5QnVmZmVyPCJ1Iil7dmFyIGY9bmV3IEFycmF5QnVmZmVyKDMpLHM9bmV3IFVpbnQ4QXJyYXkoZik7aWYocy5mb289ImJhciIsIXMuZm9vKXJldHVybiByPVVlKHIpLHIudHlwZT0iYXJyYXkiLHB0KHowKHQpLHIpfXN3aXRjaCgobj1Jbih0LHIpKVswXSl7Y2FzZSAyMDg6aWYoblsxXT09PTIwNyYmblsyXT09PTE3JiZuWzNdPT09MjI0JiZuWzRdPT09MTYxJiZuWzVdPT09MTc3JiZuWzZdPT09MjYmJm5bN109PT0yMjUpcmV0dXJuIGoyKE1lLnJlYWQodCxyKSxyKTticmVhaztjYXNlIDk6aWYoblsxXTw9OClyZXR1cm4gVGYodCxyKTticmVhaztjYXNlIDYwOnJldHVybiB5bih0LHIpO2Nhc2UgNzM6aWYoblsxXT09PTczJiZuWzJdPT09NDImJm5bM109PT0wKXRocm93IG5ldyBFcnJvcigiVElGRiBJbWFnZSBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7aWYoblsxXT09PTY4KXJldHVybiBPdSh0LHIpO2JyZWFrO2Nhc2UgODQ6aWYoblsxXT09PTY1JiZuWzJdPT09NjYmJm5bM109PT03NilyZXR1cm4gTnUodCxyKTticmVhaztjYXNlIDgwOnJldHVybiBuWzFdPT09NzUmJm5bMl08OSYmblszXTw5P1kyKHQscik6Um4oZSx0LHIsaSk7Y2FzZSAyMzk6cmV0dXJuIG5bM109PT02MD95bih0LHIpOlJuKGUsdCxyLGkpO2Nhc2UgMjU1OmlmKG5bMV09PT0yNTQpcmV0dXJuIFoyKHQscik7aWYoblsxXT09PTAmJm5bMl09PT0yJiZuWzNdPT09MClyZXR1cm4gUHQudG9fd29ya2Jvb2sodCxyKTticmVhaztjYXNlIDA6aWYoblsxXT09PTAmJihuWzJdPj0yJiZuWzNdPT09MHx8blsyXT09PTAmJihuWzNdPT09OHx8blszXT09PTkpKSlyZXR1cm4gUHQudG9fd29ya2Jvb2sodCxyKTticmVhaztjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAxNDA6cmV0dXJuIENzLnRvX3dvcmtib29rKHQscik7Y2FzZSAxMjM6aWYoblsxXT09PTkyJiZuWzJdPT09MTE0JiZuWzNdPT09MTE2KXJldHVybiBsaCh0LHIpO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBKMih0LHIpO2Nhc2UgMTM3OmlmKG5bMV09PT04MCYmblsyXT09PTc4JiZuWzNdPT09NzEpdGhyb3cgbmV3IEVycm9yKCJQTkcgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2JyZWFrO2Nhc2UgMzc6aWYoblsxXT09PTgwJiZuWzJdPT09NjgmJm5bM109PT03MCl0aHJvdyBuZXcgRXJyb3IoIlBERiBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7YnJlYWs7Y2FzZSA4OmlmKG5bMV09PT0yMzEpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNdWx0aXBsYW4gMS54IGZpbGUhIik7YnJlYWs7Y2FzZSAxMjppZihuWzFdPT09MjM2KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTXVsdGlwbGFuIDIueCBmaWxlISIpO2lmKG5bMV09PT0yMzcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNdWx0aXBsYW4gMy54IGZpbGUhIik7YnJlYWt9cmV0dXJuIGJ1LmluZGV4T2YoblswXSk+LTEmJm5bMl08PTEyJiZuWzNdPD0zMT9Dcy50b193b3JrYm9vayh0LHIpOlJuKGUsdCxyLGkpfWZ1bmN0aW9uIFEyKGUsYSxyLHQsbixpLGYpe3ZhciBzPUdlKHIpLGM9Zi5kZWZ2YWwsbz1mLnJhd3x8IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLCJyYXciKSxsPSEwLHU9ZVsiIWRhdGEiXSE9bnVsbCx4PW49PT0xP1tdOnt9O2lmKG4hPT0xKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsIl9fcm93TnVtX18iLHt2YWx1ZTpyLGVudW1lcmFibGU6ITF9KX1jYXRjaHt4Ll9fcm93TnVtX189cn1lbHNlIHguX19yb3dOdW1fXz1yO2lmKCF1fHxlWyIhZGF0YSJdW3JdKWZvcih2YXIgaD1hLnMuYztoPD1hLmUuYzsrK2gpe3ZhciBnPXU/KGVbIiFkYXRhIl1bcl18fFtdKVtoXTplW3RbaF0rc107aWYoZz09bnVsbHx8Zy50PT09dm9pZCAwKXtpZihjPT09dm9pZCAwKWNvbnRpbnVlO2lbaF0hPW51bGwmJih4W2lbaF1dPWMpO2NvbnRpbnVlfXZhciBtPWcudjtzd2l0Y2goZy50KXtjYXNlInoiOmlmKG09PW51bGwpYnJlYWs7Y29udGludWU7Y2FzZSJlIjptPW09PTA/bnVsbDp2b2lkIDA7YnJlYWs7Y2FzZSJzIjpjYXNlImIiOmJyZWFrO2Nhc2UibiI6aWYoIWcuenx8IVpyKGcueil8fChtPVNhKG0pLHR5cGVvZiBtPT0ibnVtYmVyIikpYnJlYWs7Y2FzZSJkIjpmJiYoZi5VVEN8fGYucmF3PT09ITEpfHwobT1VYShuZXcgRGF0ZShtKSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgdHlwZSAiK2cudCl9aWYoaVtoXSE9bnVsbCl7aWYobT09bnVsbClpZihnLnQ9PSJlIiYmbT09PW51bGwpeFtpW2hdXT1udWxsO2Vsc2UgaWYoYyE9PXZvaWQgMCl4W2lbaF1dPWM7ZWxzZSBpZihvJiZtPT09bnVsbCl4W2lbaF1dPW51bGw7ZWxzZSBjb250aW51ZTtlbHNlIHhbaVtoXV09KGcudD09PSJuIiYmdHlwZW9mIGYucmF3TnVtYmVycz09ImJvb2xlYW4iP2YucmF3TnVtYmVyczpvKT9tOmdhKGcsbSxmKTttIT1udWxsJiYobD0hMSl9fXJldHVybntyb3c6eCxpc2VtcHR5Omx9fWZ1bmN0aW9uIE9uKGUsYSl7aWYoZT09bnVsbHx8ZVsiIXJlZiJdPT1udWxsKXJldHVybltdO3ZhciByPXt0OiJuIix2OjB9LHQ9MCxuPTEsaT1bXSxmPTAscz0iIixjPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sbz1hfHx7fSxsPW8ucmFuZ2UhPW51bGw/by5yYW5nZTplWyIhcmVmIl07c3dpdGNoKG8uaGVhZGVyPT09MT90PTE6by5oZWFkZXI9PT0iQSI/dD0yOkFycmF5LmlzQXJyYXkoby5oZWFkZXIpP3Q9MzpvLmhlYWRlcj09bnVsbCYmKHQ9MCksdHlwZW9mIGwpe2Nhc2Uic3RyaW5nIjpjPVplKGwpO2JyZWFrO2Nhc2UibnVtYmVyIjpjPVplKGVbIiFyZWYiXSksYy5zLnI9bDticmVhaztkZWZhdWx0OmM9bH10PjAmJihuPTApO3ZhciB1PUdlKGMucy5yKSx4PVtdLGg9W10sZz0wLG09MCxkPWVbIiFkYXRhIl0hPW51bGwscD1jLnMucix3PTAsXz17fTtkJiYhZVsiIWRhdGEiXVtwXSYmKGVbIiFkYXRhIl1bcF09W10pO3ZhciB5PW8uc2tpcEhpZGRlbiYmZVsiIWNvbHMiXXx8W10sUj1vLnNraXBIaWRkZW4mJmVbIiFyb3dzIl18fFtdO2Zvcih3PWMucy5jO3c8PWMuZS5jOysrdylpZighKHlbd118fHt9KS5oaWRkZW4pc3dpdGNoKHhbd109SGUodykscj1kP2VbIiFkYXRhIl1bcF1bd106ZVt4W3ddK3VdLHQpe2Nhc2UgMTppW3ddPXctYy5zLmM7YnJlYWs7Y2FzZSAyOmlbd109eFt3XTticmVhaztjYXNlIDM6aVt3XT1vLmhlYWRlclt3LWMucy5jXTticmVhaztkZWZhdWx0OmlmKHI9PW51bGwmJihyPXt3OiJfX0VNUFRZIix0OiJzIn0pLHM9Zj1nYShyLG51bGwsbyksbT1fW2ZdfHwwLCFtKV9bZl09MTtlbHNle2RvIHM9ZisiXyIrbSsrO3doaWxlKF9bc10pO19bZl09bSxfW3NdPTF9aVt3XT1zfWZvcihwPWMucy5yK247cDw9Yy5lLnI7KytwKWlmKCEoUltwXXx8e30pLmhpZGRlbil7dmFyIFA9UTIoZSxjLHAseCx0LGksbyk7KFAuaXNlbXB0eT09PSExfHwodD09PTE/by5ibGFua3Jvd3MhPT0hMTpvLmJsYW5rcm93cykpJiYoaFtnKytdPVAucm93KX1yZXR1cm4gaC5sZW5ndGg9ZyxofXZhciBCZj0vIi9nO2Z1bmN0aW9uIGVwKGUsYSxyLHQsbixpLGYscyxjKXtmb3IodmFyIG89ITAsbD1bXSx1PSIiLHg9R2UociksaD1lWyIhZGF0YSJdIT1udWxsLGc9aCYmZVsiIWRhdGEiXVtyXXx8W10sbT1hLnMuYzttPD1hLmUuYzsrK20paWYodFttXSl7dmFyIGQ9aD9nW21dOmVbdFttXSt4XTtpZihkPT1udWxsKXU9IiI7ZWxzZSBpZihkLnYhPW51bGwpe289ITEsdT0iIisoYy5yYXdOdW1iZXJzJiZkLnQ9PSJuIj9kLnY6Z2EoZCxudWxsLGMpKTtmb3IodmFyIHA9MCx3PTA7cCE9PXUubGVuZ3RoOysrcClpZigodz11LmNoYXJDb2RlQXQocCkpPT09bnx8dz09PWl8fHc9PT0xMHx8dz09PTEzfHx3PT09MzR8fGMuZm9yY2VRdW90ZXMpe3U9JyInK3UucmVwbGFjZShCZiwnIiInKSsnIic7YnJlYWt9dT09IklEIiYmcz09MCYmbC5sZW5ndGg9PTAmJih1PSciSUQiJyl9ZWxzZSBkLmYhPW51bGwmJiFkLkY/KG89ITEsdT0iPSIrZC5mLHUuaW5kZXhPZigiLCIpPj0wJiYodT0nIicrdS5yZXBsYWNlKEJmLCciIicpKyciJykpOnU9IiI7bC5wdXNoKHUpfWlmKGMuc3RyaXApZm9yKDtsW2wubGVuZ3RoLTFdPT09IiI7KS0tbC5sZW5ndGg7cmV0dXJuIGMuYmxhbmtyb3dzPT09ITEmJm8/bnVsbDpsLmpvaW4oZil9ZnVuY3Rpb24gVWYoZSxhKXt2YXIgcj1bXSx0PWE/P3t9O2lmKGU9PW51bGx8fGVbIiFyZWYiXT09bnVsbClyZXR1cm4iIjtmb3IodmFyIG49WmUoZVsiIXJlZiJdKSxpPXQuRlMhPT12b2lkIDA/dC5GUzoiLCIsZj1pLmNoYXJDb2RlQXQoMCkscz10LlJTIT09dm9pZCAwP3QuUlM6YApgLGM9cy5jaGFyQ29kZUF0KDApLG89IiIsbD1bXSx1PXQuc2tpcEhpZGRlbiYmZVsiIWNvbHMiXXx8W10seD10LnNraXBIaWRkZW4mJmVbIiFyb3dzIl18fFtdLGg9bi5zLmM7aDw9bi5lLmM7KytoKSh1W2hdfHx7fSkuaGlkZGVufHwobFtoXT1IZShoKSk7Zm9yKHZhciBnPTAsbT1uLnMucjttPD1uLmUucjsrK20pKHhbbV18fHt9KS5oaWRkZW58fChvPWVwKGUsbixtLGwsZixjLGksZyx0KSxvIT1udWxsJiYob3x8dC5ibGFua3Jvd3MhPT0hMSkmJnIucHVzaCgoZysrP3M6IiIpK28pKTtyZXR1cm4gci5qb2luKCIiKX1mdW5jdGlvbiBycChlLGEpe2F8fChhPXt9KSxhLkZTPSIJIixhLlJTPWAKYDt2YXIgcj1VZihlLGEpO3JldHVybiByfWZ1bmN0aW9uIGFwKGUsYSl7dmFyIHI9IiIsdCxuPSIiO2lmKGU9PW51bGx8fGVbIiFyZWYiXT09bnVsbClyZXR1cm5bXTt2YXIgaT1aZShlWyIhcmVmIl0pLGY9IiIscz1bXSxjLG89W10sbD1lWyIhZGF0YSJdIT1udWxsO2ZvcihjPWkucy5jO2M8PWkuZS5jOysrYylzW2NdPUhlKGMpO2Zvcih2YXIgdT1pLnMucjt1PD1pLmUucjsrK3UpZm9yKGY9R2UodSksYz1pLnMuYztjPD1pLmUuYzsrK2MpaWYocj1zW2NdK2YsdD1sPyhlWyIhZGF0YSJdW3VdfHxbXSlbY106ZVtyXSxuPSIiLHQhPT12b2lkIDApe2lmKHQuRiE9bnVsbCl7aWYocj10LkYsIXQuZiljb250aW51ZTtuPXQuZixyLmluZGV4T2YoIjoiKT09LTEmJihyPXIrIjoiK3IpfWlmKHQuZiE9bnVsbCluPXQuZjtlbHNle2lmKGEmJmEudmFsdWVzPT09ITEpY29udGludWU7aWYodC50PT0ieiIpY29udGludWU7aWYodC50PT0ibiImJnQudiE9bnVsbCluPSIiK3QudjtlbHNlIGlmKHQudD09ImIiKW49dC52PyJUUlVFIjoiRkFMU0UiO2Vsc2UgaWYodC53IT09dm9pZCAwKW49IiciK3QudztlbHNle2lmKHQudj09PXZvaWQgMCljb250aW51ZTt0LnQ9PSJzIj9uPSInIit0LnY6bj0iIit0LnZ9fW9bby5sZW5ndGhdPXIrIj0iK259cmV0dXJuIG99ZnVuY3Rpb24gSGYoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT9lWyIhZGF0YSJdIT1udWxsOnQuZGVuc2UsaT0rIXQuc2tpcEhlYWRlcixmPWV8fHt9OyFlJiZuJiYoZlsiIWRhdGEiXT1bXSk7dmFyIHM9MCxjPTA7aWYoZiYmdC5vcmlnaW4hPW51bGwpaWYodHlwZW9mIHQub3JpZ2luPT0ibnVtYmVyIilzPXQub3JpZ2luO2Vsc2V7dmFyIG89dHlwZW9mIHQub3JpZ2luPT0ic3RyaW5nIj9ncih0Lm9yaWdpbik6dC5vcmlnaW47cz1vLnIsYz1vLmN9dmFyIGw9e3M6e2M6MCxyOjB9LGU6e2MscjpzK2EubGVuZ3RoLTEraX19O2lmKGZbIiFyZWYiXSl7dmFyIHU9WmUoZlsiIXJlZiJdKTtsLmUuYz1NYXRoLm1heChsLmUuYyx1LmUuYyksbC5lLnI9TWF0aC5tYXgobC5lLnIsdS5lLnIpLHM9PS0xJiYocz11LmUucisxLGwuZS5yPXMrYS5sZW5ndGgtMStpKX1lbHNlIHM9PS0xJiYocz0wLGwuZS5yPWEubGVuZ3RoLTEraSk7dmFyIHg9dC5oZWFkZXJ8fFtdLGg9MCxnPVtdO2EuZm9yRWFjaChmdW5jdGlvbihkLHApe24mJiFmWyIhZGF0YSJdW3MrcCtpXSYmKGZbIiFkYXRhIl1bcytwK2ldPVtdKSxuJiYoZz1mWyIhZGF0YSJdW3MrcCtpXSkscHIoZCkuZm9yRWFjaChmdW5jdGlvbih3KXsoaD14LmluZGV4T2YodykpPT0tMSYmKHhbaD14Lmxlbmd0aF09dyk7dmFyIF89ZFt3XSx5PSJ6IixSPSIiLFA9bj8iIjpIZShjK2gpK0dlKHMrcCtpKSxiPW4/Z1tjK2hdOmZbUF07XyYmdHlwZW9mIF89PSJvYmplY3QiJiYhKF8gaW5zdGFuY2VvZiBEYXRlKT9uP2dbYytoXT1fOmZbUF09XzoodHlwZW9mIF89PSJudW1iZXIiP3k9Im4iOnR5cGVvZiBfPT0iYm9vbGVhbiI/eT0iYiI6dHlwZW9mIF89PSJzdHJpbmciP3k9InMiOl8gaW5zdGFuY2VvZiBEYXRlPyh5PSJkIix0LlVUQ3x8KF89YzAoXykpLHQuY2VsbERhdGVzfHwoeT0ibiIsXz1vcihfKSksUj1iIT1udWxsJiZiLnomJlpyKGIueik/Yi56OnQuZGF0ZU5GfHxUZVsxNF0pOl89PT1udWxsJiZ0Lm51bGxFcnJvciYmKHk9ImUiLF89MCksYj8oYi50PXksYi52PV8sZGVsZXRlIGIudyxkZWxldGUgYi5SLFImJihiLno9UikpOm4/Z1tjK2hdPWI9e3Q6eSx2Ol99OmZbUF09Yj17dDp5LHY6X30sUiYmKGIuej1SKSl9KX0pLGwuZS5jPU1hdGgubWF4KGwuZS5jLGMreC5sZW5ndGgtMSk7dmFyIG09R2Uocyk7aWYobiYmIWZbIiFkYXRhIl1bc10mJihmWyIhZGF0YSJdW3NdPVtdKSxpKWZvcihoPTA7aDx4Lmxlbmd0aDsrK2gpbj9mWyIhZGF0YSJdW3NdW2grY109e3Q6InMiLHY6eFtoXX06ZltIZShoK2MpK21dPXt0OiJzIix2OnhbaF19O3JldHVybiBmWyIhcmVmIl09RGUobCksZn1mdW5jdGlvbiB0cChlLGEpe3JldHVybiBIZihudWxsLGUsYSl9ZnVuY3Rpb24gWXQoZSxhLHIpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoZVsiIWRhdGEiXSE9bnVsbCl7dmFyIHQ9Z3IoYSk7cmV0dXJuIGVbIiFkYXRhIl1bdC5yXXx8KGVbIiFkYXRhIl1bdC5yXT1bXSksZVsiIWRhdGEiXVt0LnJdW3QuY118fChlWyIhZGF0YSJdW3Qucl1bdC5jXT17dDoieiJ9KX1yZXR1cm4gZVthXXx8KGVbYV09e3Q6InoifSl9cmV0dXJuIHR5cGVvZiBhIT0ibnVtYmVyIj9ZdChlLEllKGEpKTpZdChlLEhlKHJ8fDApK0dlKGEpKX1mdW5jdGlvbiBucChlLGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIil7aWYoYT49MCYmZS5TaGVldE5hbWVzLmxlbmd0aD5hKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgIyAiK2EpfWVsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgcj1lLlNoZWV0TmFtZXMuaW5kZXhPZihhKTtpZihyPi0xKXJldHVybiByO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgbmFtZSB8IithKyJ8Iil9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0IHwiK2ErInwiKX1mdW5jdGlvbiBObihlLGEpe3ZhciByPXtTaGVldE5hbWVzOltdLFNoZWV0czp7fX07cmV0dXJuIGUmJkp0KHIsZSxhfHwiU2hlZXQxIikscn1mdW5jdGlvbiBKdChlLGEscix0KXt2YXIgbj0xO2lmKCFyKWZvcig7bjw9NjU1MzUmJmUuU2hlZXROYW1lcy5pbmRleE9mKHI9IlNoZWV0IituKSE9LTE7KytuLHI9dm9pZCAwKTtpZighcnx8ZS5TaGVldE5hbWVzLmxlbmd0aD49NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJUb28gbWFueSB3b3Jrc2hlZXRzIik7aWYodCYmZS5TaGVldE5hbWVzLmluZGV4T2Yocik+PTAmJnIubGVuZ3RoPDMyKXt2YXIgaT1yLm1hdGNoKC9cZCskLyk7bj1pJiYraVswXXx8MDt2YXIgZj1pJiZyLnNsaWNlKDAsaS5pbmRleCl8fHI7Zm9yKCsrbjtuPD02NTUzNSYmZS5TaGVldE5hbWVzLmluZGV4T2Yocj1mK24pIT0tMTsrK24pO31pZih4dihyKSxlLlNoZWV0TmFtZXMuaW5kZXhPZihyKT49MCl0aHJvdyBuZXcgRXJyb3IoIldvcmtzaGVldCB3aXRoIG5hbWUgfCIrcisifCBhbHJlYWR5IGV4aXN0cyEiKTtyZXR1cm4gZS5TaGVldE5hbWVzLnB1c2gociksZS5TaGVldHNbcl09YSxyfWZ1bmN0aW9uIGlwKGUsYSxyKXtlLldvcmtib29rfHwoZS5Xb3JrYm9vaz17fSksZS5Xb3JrYm9vay5TaGVldHN8fChlLldvcmtib29rLlNoZWV0cz1bXSk7dmFyIHQ9bnAoZSxhKTtzd2l0Y2goZS5Xb3JrYm9vay5TaGVldHNbdF18fChlLldvcmtib29rLlNoZWV0c1t0XT17fSkscil7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkJhZCBzaGVldCB2aXNpYmlsaXR5IHNldHRpbmcgIityKX1lLldvcmtib29rLlNoZWV0c1t0XS5IaWRkZW49cn1mdW5jdGlvbiBzcChlLGEpe3JldHVybiBlLno9YSxlfWZ1bmN0aW9uIFdmKGUsYSxyKXtyZXR1cm4gYT8oZS5sPXtUYXJnZXQ6YX0sciYmKGUubC5Ub29sdGlwPXIpKTpkZWxldGUgZS5sLGV9ZnVuY3Rpb24gZnAoZSxhLHIpe3JldHVybiBXZihlLCIjIithLHIpfWZ1bmN0aW9uIGNwKGUsYSxyKXtlLmN8fChlLmM9W10pLGUuYy5wdXNoKHt0OmEsYTpyfHwiU2hlZXRKUyJ9KX1mdW5jdGlvbiBvcChlLGEscix0KXtmb3IodmFyIG49dHlwZW9mIGEhPSJzdHJpbmciP2E6WmUoYSksaT10eXBlb2YgYT09InN0cmluZyI/YTpEZShhKSxmPW4ucy5yO2Y8PW4uZS5yOysrZilmb3IodmFyIHM9bi5zLmM7czw9bi5lLmM7KytzKXt2YXIgYz1ZdChlLGYscyk7Yy50PSJuIixjLkY9aSxkZWxldGUgYy52LGY9PW4ucy5yJiZzPT1uLnMuYyYmKGMuZj1yLHQmJihjLkQ9ITApKX12YXIgbz1wYShlWyIhcmVmIl0pO3JldHVybiBvLnMucj5uLnMuciYmKG8ucy5yPW4ucy5yKSxvLnMuYz5uLnMuYyYmKG8ucy5jPW4ucy5jKSxvLmUucjxuLmUuciYmKG8uZS5yPW4uZS5yKSxvLmUuYzxuLmUuYyYmKG8uZS5jPW4uZS5jKSxlWyIhcmVmIl09RGUobyksZX12YXIgaWE9e2VuY29kZV9jb2w6SGUsZW5jb2RlX3JvdzpHZSxlbmNvZGVfY2VsbDpJZSxlbmNvZGVfcmFuZ2U6RGUsZGVjb2RlX2NvbDpubixkZWNvZGVfcm93OnRuLHNwbGl0X2NlbGw6Rm8sZGVjb2RlX2NlbGw6Z3IsZGVjb2RlX3JhbmdlOnBhLGZvcm1hdF9jZWxsOmdhLHNoZWV0X25ldzpFbyxzaGVldF9hZGRfYW9hOkppLHNoZWV0X2FkZF9qc29uOkhmLHNoZWV0X2FkZF9kb206U2YsYW9hX3RvX3NoZWV0OmN0LGpzb25fdG9fc2hlZXQ6dHAsdGFibGVfdG9fc2hlZXQ6Q2YsdGFibGVfdG9fYm9vazp3MixzaGVldF90b19jc3Y6VWYsc2hlZXRfdG9fdHh0OnJwLHNoZWV0X3RvX2pzb246T24sc2hlZXRfdG9faHRtbDprMixzaGVldF90b19mb3JtdWxhZTphcCxzaGVldF90b19yb3dfb2JqZWN0X2FycmF5Ok9uLHZhbGlkYXRlX21lcmdlczpGbixtZWFzdXJlX3RleHRfd2lkdGg6THMsYXV0b19maXRfY29sdW1uczpwbixhdXRvZml0X2NvbHVtbnM6cG4sY29sX3dpZHRoX3RvX3B4Ol9hLHB4X3RvX2NvbF93aWR0aDpmdW5jdGlvbihlKXtyZXR1cm4gWmEoSmEoZSkpfSxyb3dfaGVpZ2h0X3RvX3B4OlV0LHB4X3RvX3Jvd19oZWlnaHQ6Q2gsc2hlZXRfZ2V0X2NlbGw6WXQsYm9va19uZXc6Tm4sYm9va19hcHBlbmRfc2hlZXQ6SnQsYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eTppcCxjZWxsX3NldF9udW1iZXJfZm9ybWF0OnNwLGNlbGxfc2V0X2h5cGVybGluazpXZixjZWxsX3NldF9pbnRlcm5hbF9saW5rOmZwLGNlbGxfYWRkX2NvbW1lbnQ6Y3Asc2hlZXRfc2V0X2FycmF5X2Zvcm11bGE6b3AsY29uc3RzOntTSEVFVF9WSVNJQkxFOjAsU0hFRVRfSElEREVOOjEsU0hFRVRfVkVSWV9ISURERU46Mn19O2Z1bmN0aW9uIE0wKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIE0wPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYX06ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJmEuY29uc3RydWN0b3I9PT1TeW1ib2wmJmEhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBhfSxNMChlKX12YXIgbHA9L15ccysvLHVwPS9ccyskLztmdW5jdGlvbiBfZShlLGEpe2lmKGU9ZXx8IiIsYT1hfHx7fSxlIGluc3RhbmNlb2YgX2UpcmV0dXJuIGU7aWYoISh0aGlzIGluc3RhbmNlb2YgX2UpKXJldHVybiBuZXcgX2UoZSxhKTt2YXIgcj1ocChlKTt0aGlzLl9vcmlnaW5hbElucHV0PWUsdGhpcy5fcj1yLnIsdGhpcy5fZz1yLmcsdGhpcy5fYj1yLmIsdGhpcy5fYT1yLmEsdGhpcy5fcm91bmRBPU1hdGgucm91bmQoMTAwKnRoaXMuX2EpLzEwMCx0aGlzLl9mb3JtYXQ9YS5mb3JtYXR8fHIuZm9ybWF0LHRoaXMuX2dyYWRpZW50VHlwZT1hLmdyYWRpZW50VHlwZSx0aGlzLl9yPDEmJih0aGlzLl9yPU1hdGgucm91bmQodGhpcy5fcikpLHRoaXMuX2c8MSYmKHRoaXMuX2c9TWF0aC5yb3VuZCh0aGlzLl9nKSksdGhpcy5fYjwxJiYodGhpcy5fYj1NYXRoLnJvdW5kKHRoaXMuX2IpKSx0aGlzLl9vaz1yLm9rfV9lLnByb3RvdHlwZT17aXNEYXJrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnJpZ2h0bmVzcygpPDEyOH0saXNMaWdodDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmlzRGFyaygpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29rfSxnZXRPcmlnaW5hbElucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsSW5wdXR9LGdldEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JtYXR9LGdldEFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F9LGdldEJyaWdodG5lc3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRvUmdiKCk7cmV0dXJuKGEucioyOTkrYS5nKjU4NythLmIqMTE0KS8xZTN9LGdldEx1bWluYW5jZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMudG9SZ2IoKSxyLHQsbixpLGYscztyZXR1cm4gcj1hLnIvMjU1LHQ9YS5nLzI1NSxuPWEuYi8yNTUscjw9LjAzOTI4P2k9ci8xMi45MjppPU1hdGgucG93KChyKy4wNTUpLzEuMDU1LDIuNCksdDw9LjAzOTI4P2Y9dC8xMi45MjpmPU1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCksbjw9LjAzOTI4P3M9bi8xMi45MjpzPU1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCksLjIxMjYqaSsuNzE1MipmKy4wNzIyKnN9LHNldEFscGhhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9hPUtmKGEpLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpc30sdG9Ic3Y6ZnVuY3Rpb24oKXt2YXIgYT1HZih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6YS5oKjM2MCxzOmEucyx2OmEudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciBhPUdmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKSxyPU1hdGgucm91bmQoYS5oKjM2MCksdD1NYXRoLnJvdW5kKGEucyoxMDApLG49TWF0aC5yb3VuZChhLnYqMTAwKTtyZXR1cm4gdGhpcy5fYT09MT8iaHN2KCIrcisiLCAiK3QrIiUsICIrbisiJSkiOiJoc3ZhKCIrcisiLCAiK3QrIiUsICIrbisiJSwgIit0aGlzLl9yb3VuZEErIikifSx0b0hzbDpmdW5jdGlvbigpe3ZhciBhPVZmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDphLmgqMzYwLHM6YS5zLGw6YS5sLGE6dGhpcy5fYX19LHRvSHNsU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9VmYodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHI9TWF0aC5yb3VuZChhLmgqMzYwKSx0PU1hdGgucm91bmQoYS5zKjEwMCksbj1NYXRoLnJvdW5kKGEubCoxMDApO3JldHVybiB0aGlzLl9hPT0xPyJoc2woIityKyIsICIrdCsiJSwgIituKyIlKSI6ImhzbGEoIityKyIsICIrdCsiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSGV4OmZ1bmN0aW9uKGEpe3JldHVybiBYZih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYixhKX0sdG9IZXhTdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIiMiK3RoaXMudG9IZXgoYSl9LHRvSGV4ODpmdW5jdGlvbihhKXtyZXR1cm4gcHAodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSxhKX0sdG9IZXg4U3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiIjIit0aGlzLnRvSGV4OChhKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKHRoaXMuX3IpLGc6TWF0aC5yb3VuZCh0aGlzLl9nKSxiOk1hdGgucm91bmQodGhpcy5fYiksYTp0aGlzLl9hfX0sdG9SZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT09MT8icmdiKCIrTWF0aC5yb3VuZCh0aGlzLl9yKSsiLCAiK01hdGgucm91bmQodGhpcy5fZykrIiwgIitNYXRoLnJvdW5kKHRoaXMuX2IpKyIpIjoicmdiYSgiK01hdGgucm91bmQodGhpcy5fcikrIiwgIitNYXRoLnJvdW5kKHRoaXMuX2cpKyIsICIrTWF0aC5yb3VuZCh0aGlzLl9iKSsiLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvUGVyY2VudGFnZVJnYjpmdW5jdGlvbigpe3JldHVybntyOk1hdGgucm91bmQoS2UodGhpcy5fciwyNTUpKjEwMCkrIiUiLGc6TWF0aC5yb3VuZChLZSh0aGlzLl9nLDI1NSkqMTAwKSsiJSIsYjpNYXRoLnJvdW5kKEtlKHRoaXMuX2IsMjU1KSoxMDApKyIlIixhOnRoaXMuX2F9fSx0b1BlcmNlbnRhZ2VSZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT09MT8icmdiKCIrTWF0aC5yb3VuZChLZSh0aGlzLl9yLDI1NSkqMTAwKSsiJSwgIitNYXRoLnJvdW5kKEtlKHRoaXMuX2csMjU1KSoxMDApKyIlLCAiK01hdGgucm91bmQoS2UodGhpcy5fYiwyNTUpKjEwMCkrIiUpIjoicmdiYSgiK01hdGgucm91bmQoS2UodGhpcy5fciwyNTUpKjEwMCkrIiUsICIrTWF0aC5yb3VuZChLZSh0aGlzLl9nLDI1NSkqMTAwKSsiJSwgIitNYXRoLnJvdW5kKEtlKHRoaXMuX2IsMjU1KSoxMDApKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPT09MD8idHJhbnNwYXJlbnQiOnRoaXMuX2E8MT8hMTpDcFtYZih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiwhMCldfHwhMX0sdG9GaWx0ZXI6ZnVuY3Rpb24oYSl7dmFyIHI9IiMiK3pmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EpLHQ9cixuPXRoaXMuX2dyYWRpZW50VHlwZT8iR3JhZGllbnRUeXBlID0gMSwgIjoiIjtpZihhKXt2YXIgaT1fZShhKTt0PSIjIit6ZihpLl9yLGkuX2csaS5fYixpLl9hKX1yZXR1cm4icHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KCIrbisic3RhcnRDb2xvcnN0cj0iK3IrIixlbmRDb2xvcnN0cj0iK3QrIikifSx0b1N0cmluZzpmdW5jdGlvbihhKXt2YXIgcj0hIWE7YT1hfHx0aGlzLl9mb3JtYXQ7dmFyIHQ9ITEsbj10aGlzLl9hPDEmJnRoaXMuX2E+PTAsaT0hciYmbiYmKGE9PT0iaGV4Inx8YT09PSJoZXg2Inx8YT09PSJoZXgzInx8YT09PSJoZXg0Inx8YT09PSJoZXg4Inx8YT09PSJuYW1lIik7cmV0dXJuIGk/YT09PSJuYW1lIiYmdGhpcy5fYT09PTA/dGhpcy50b05hbWUoKTp0aGlzLnRvUmdiU3RyaW5nKCk6KGE9PT0icmdiIiYmKHQ9dGhpcy50b1JnYlN0cmluZygpKSxhPT09InByZ2IiJiYodD10aGlzLnRvUGVyY2VudGFnZVJnYlN0cmluZygpKSwoYT09PSJoZXgifHxhPT09ImhleDYiKSYmKHQ9dGhpcy50b0hleFN0cmluZygpKSxhPT09ImhleDMiJiYodD10aGlzLnRvSGV4U3RyaW5nKCEwKSksYT09PSJoZXg0IiYmKHQ9dGhpcy50b0hleDhTdHJpbmcoITApKSxhPT09ImhleDgiJiYodD10aGlzLnRvSGV4OFN0cmluZygpKSxhPT09Im5hbWUiJiYodD10aGlzLnRvTmFtZSgpKSxhPT09ImhzbCImJih0PXRoaXMudG9Ic2xTdHJpbmcoKSksYT09PSJoc3YiJiYodD10aGlzLnRvSHN2U3RyaW5nKCkpLHR8fHRoaXMudG9IZXhTdHJpbmcoKSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIF9lKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbihhLHIpe3ZhciB0PWEuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwocikpKTtyZXR1cm4gdGhpcy5fcj10Ll9yLHRoaXMuX2c9dC5fZyx0aGlzLl9iPXQuX2IsdGhpcy5zZXRBbHBoYSh0Ll9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGtwLGFyZ3VtZW50cyl9LGJyaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHdwLGFyZ3VtZW50cyl9LGRhcmtlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihGcCxhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGdwLGFyZ3VtZW50cyl9LHNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKG1wLGFyZ3VtZW50cyl9LGdyZXlzY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihfcCxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKFRwLGFyZ3VtZW50cyl9LF9hcHBseUNvbWJpbmF0aW9uOmZ1bmN0aW9uKGEscil7cmV0dXJuIGEuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwocikpKX0sYW5hbG9nb3VzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oeXAsYXJndW1lbnRzKX0sY29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEVwLGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihTcCxhcmd1bWVudHMpfSxzcGxpdGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihBcCxhcmd1bWVudHMpfSx0cmlhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKCRmLFszXSl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKCRmLFs0XSl9fSxfZS5mcm9tUmF0aW89ZnVuY3Rpb24oZSxhKXtpZihNMChlKT09Im9iamVjdCIpe3ZhciByPXt9O2Zvcih2YXIgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJih0PT09ImEiP3JbdF09ZVt0XTpyW3RdPVp0KGVbdF0pKTtlPXJ9cmV0dXJuIF9lKGUsYSl9O2Z1bmN0aW9uIGhwKGUpe3ZhciBhPXtyOjAsZzowLGI6MH0scj0xLHQ9bnVsbCxuPW51bGwsaT1udWxsLGY9ITEscz0hMTtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT1ScChlKSksTTAoZSk9PSJvYmplY3QiJiYod2EoZS5yKSYmd2EoZS5nKSYmd2EoZS5iKT8oYT14cChlLnIsZS5nLGUuYiksZj0hMCxzPVN0cmluZyhlLnIpLnN1YnN0cigtMSk9PT0iJSI/InByZ2IiOiJyZ2IiKTp3YShlLmgpJiZ3YShlLnMpJiZ3YShlLnYpPyh0PVp0KGUucyksbj1adChlLnYpLGE9dnAoZS5oLHQsbiksZj0hMCxzPSJoc3YiKTp3YShlLmgpJiZ3YShlLnMpJiZ3YShlLmwpJiYodD1adChlLnMpLGk9WnQoZS5sKSxhPWRwKGUuaCx0LGkpLGY9ITAscz0iaHNsIiksZS5oYXNPd25Qcm9wZXJ0eSgiYSIpJiYocj1lLmEpKSxyPUtmKHIpLHtvazpmLGZvcm1hdDplLmZvcm1hdHx8cyxyOk1hdGgubWluKDI1NSxNYXRoLm1heChhLnIsMCkpLGc6TWF0aC5taW4oMjU1LE1hdGgubWF4KGEuZywwKSksYjpNYXRoLm1pbigyNTUsTWF0aC5tYXgoYS5iLDApKSxhOnJ9fWZ1bmN0aW9uIHhwKGUsYSxyKXtyZXR1cm57cjpLZShlLDI1NSkqMjU1LGc6S2UoYSwyNTUpKjI1NSxiOktlKHIsMjU1KSoyNTV9fWZ1bmN0aW9uIFZmKGUsYSxyKXtlPUtlKGUsMjU1KSxhPUtlKGEsMjU1KSxyPUtlKHIsMjU1KTt2YXIgdD1NYXRoLm1heChlLGEsciksbj1NYXRoLm1pbihlLGEsciksaSxmLHM9KHQrbikvMjtpZih0PT1uKWk9Zj0wO2Vsc2V7dmFyIGM9dC1uO3N3aXRjaChmPXM+LjU/Yy8oMi10LW4pOmMvKHQrbiksdCl7Y2FzZSBlOmk9KGEtcikvYysoYTxyPzY6MCk7YnJlYWs7Y2FzZSBhOmk9KHItZSkvYysyO2JyZWFrO2Nhc2UgcjppPShlLWEpL2MrNDticmVha31pLz02fXJldHVybntoOmksczpmLGw6c319ZnVuY3Rpb24gZHAoZSxhLHIpe3ZhciB0LG4saTtlPUtlKGUsMzYwKSxhPUtlKGEsMTAwKSxyPUtlKHIsMTAwKTtmdW5jdGlvbiBmKG8sbCx1KXtyZXR1cm4gdTwwJiYodSs9MSksdT4xJiYodS09MSksdTwxLzY/bysobC1vKSo2KnU6dTwxLzI/bDp1PDIvMz9vKyhsLW8pKigyLzMtdSkqNjpvfWlmKGE9PT0wKXQ9bj1pPXI7ZWxzZXt2YXIgcz1yPC41P3IqKDErYSk6cithLXIqYSxjPTIqci1zO3Q9ZihjLHMsZSsxLzMpLG49ZihjLHMsZSksaT1mKGMscyxlLTEvMyl9cmV0dXJue3I6dCoyNTUsZzpuKjI1NSxiOmkqMjU1fX1mdW5jdGlvbiBHZihlLGEscil7ZT1LZShlLDI1NSksYT1LZShhLDI1NSkscj1LZShyLDI1NSk7dmFyIHQ9TWF0aC5tYXgoZSxhLHIpLG49TWF0aC5taW4oZSxhLHIpLGksZixzPXQsYz10LW47aWYoZj10PT09MD8wOmMvdCx0PT1uKWk9MDtlbHNle3N3aXRjaCh0KXtjYXNlIGU6aT0oYS1yKS9jKyhhPHI/NjowKTticmVhaztjYXNlIGE6aT0oci1lKS9jKzI7YnJlYWs7Y2FzZSByOmk9KGUtYSkvYys0O2JyZWFrfWkvPTZ9cmV0dXJue2g6aSxzOmYsdjpzfX1mdW5jdGlvbiB2cChlLGEscil7ZT1LZShlLDM2MCkqNixhPUtlKGEsMTAwKSxyPUtlKHIsMTAwKTt2YXIgdD1NYXRoLmZsb29yKGUpLG49ZS10LGk9ciooMS1hKSxmPXIqKDEtbiphKSxzPXIqKDEtKDEtbikqYSksYz10JTYsbz1bcixmLGksaSxzLHJdW2NdLGw9W3MscixyLGYsaSxpXVtjXSx1PVtpLGkscyxyLHIsZl1bY107cmV0dXJue3I6byoyNTUsZzpsKjI1NSxiOnUqMjU1fX1mdW5jdGlvbiBYZihlLGEscix0KXt2YXIgbj1bZWEoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQoYSkudG9TdHJpbmcoMTYpKSxlYShNYXRoLnJvdW5kKHIpLnRvU3RyaW5nKDE2KSldO3JldHVybiB0JiZuWzBdLmNoYXJBdCgwKT09blswXS5jaGFyQXQoMSkmJm5bMV0uY2hhckF0KDApPT1uWzFdLmNoYXJBdCgxKSYmblsyXS5jaGFyQXQoMCk9PW5bMl0uY2hhckF0KDEpP25bMF0uY2hhckF0KDApK25bMV0uY2hhckF0KDApK25bMl0uY2hhckF0KDApOm4uam9pbigiIil9ZnVuY3Rpb24gcHAoZSxhLHIsdCxuKXt2YXIgaT1bZWEoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQoYSkudG9TdHJpbmcoMTYpKSxlYShNYXRoLnJvdW5kKHIpLnRvU3RyaW5nKDE2KSksZWEoamYodCkpXTtyZXR1cm4gbiYmaVswXS5jaGFyQXQoMCk9PWlbMF0uY2hhckF0KDEpJiZpWzFdLmNoYXJBdCgwKT09aVsxXS5jaGFyQXQoMSkmJmlbMl0uY2hhckF0KDApPT1pWzJdLmNoYXJBdCgxKSYmaVszXS5jaGFyQXQoMCk9PWlbM10uY2hhckF0KDEpP2lbMF0uY2hhckF0KDApK2lbMV0uY2hhckF0KDApK2lbMl0uY2hhckF0KDApK2lbM10uY2hhckF0KDApOmkuam9pbigiIil9ZnVuY3Rpb24gemYoZSxhLHIsdCl7dmFyIG49W2VhKGpmKHQpKSxlYShNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksZWEoTWF0aC5yb3VuZChhKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQocikudG9TdHJpbmcoMTYpKV07cmV0dXJuIG4uam9pbigiIil9X2UuZXF1YWxzPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIWV8fCFhPyExOl9lKGUpLnRvUmdiU3RyaW5nKCk9PV9lKGEpLnRvUmdiU3RyaW5nKCl9LF9lLnJhbmRvbT1mdW5jdGlvbigpe3JldHVybiBfZS5mcm9tUmF0aW8oe3I6TWF0aC5yYW5kb20oKSxnOk1hdGgucmFuZG9tKCksYjpNYXRoLnJhbmRvbSgpfSl9O2Z1bmN0aW9uIGdwKGUsYSl7YT1hPT09MD8wOmF8fDEwO3ZhciByPV9lKGUpLnRvSHNsKCk7cmV0dXJuIHIucy09YS8xMDAsci5zPVAwKHIucyksX2Uocil9ZnVuY3Rpb24gbXAoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9Ic2woKTtyZXR1cm4gci5zKz1hLzEwMCxyLnM9UDAoci5zKSxfZShyKX1mdW5jdGlvbiBfcChlKXtyZXR1cm4gX2UoZSkuZGVzYXR1cmF0ZSgxMDApfWZ1bmN0aW9uIGtwKGUsYSl7YT1hPT09MD8wOmF8fDEwO3ZhciByPV9lKGUpLnRvSHNsKCk7cmV0dXJuIHIubCs9YS8xMDAsci5sPVAwKHIubCksX2Uocil9ZnVuY3Rpb24gd3AoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9SZ2IoKTtyZXR1cm4gci5yPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LHIuci1NYXRoLnJvdW5kKDI1NSotKGEvMTAwKSkpKSxyLmc9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsci5nLU1hdGgucm91bmQoMjU1Ki0oYS8xMDApKSkpLHIuYj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxyLmItTWF0aC5yb3VuZCgyNTUqLShhLzEwMCkpKSksX2Uocil9ZnVuY3Rpb24gRnAoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9Ic2woKTtyZXR1cm4gci5sLT1hLzEwMCxyLmw9UDAoci5sKSxfZShyKX1mdW5jdGlvbiBUcChlLGEpe3ZhciByPV9lKGUpLnRvSHNsKCksdD0oci5oK2EpJTM2MDtyZXR1cm4gci5oPXQ8MD8zNjArdDp0LF9lKHIpfWZ1bmN0aW9uIEVwKGUpe3ZhciBhPV9lKGUpLnRvSHNsKCk7cmV0dXJuIGEuaD0oYS5oKzE4MCklMzYwLF9lKGEpfWZ1bmN0aW9uICRmKGUsYSl7aWYoaXNOYU4oYSl8fGE8PTApdGhyb3cgbmV3IEVycm9yKCJBcmd1bWVudCB0byBwb2x5YWQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO2Zvcih2YXIgcj1fZShlKS50b0hzbCgpLHQ9W19lKGUpXSxuPTM2MC9hLGk9MTtpPGE7aSsrKXQucHVzaChfZSh7aDooci5oK2kqbiklMzYwLHM6ci5zLGw6ci5sfSkpO3JldHVybiB0fWZ1bmN0aW9uIEFwKGUpe3ZhciBhPV9lKGUpLnRvSHNsKCkscj1hLmg7cmV0dXJuW19lKGUpLF9lKHtoOihyKzcyKSUzNjAsczphLnMsbDphLmx9KSxfZSh7aDoocisyMTYpJTM2MCxzOmEucyxsOmEubH0pXX1mdW5jdGlvbiB5cChlLGEscil7YT1hfHw2LHI9cnx8MzA7dmFyIHQ9X2UoZSkudG9Ic2woKSxuPTM2MC9yLGk9W19lKGUpXTtmb3IodC5oPSh0LmgtKG4qYT4+MSkrNzIwKSUzNjA7LS1hOyl0Lmg9KHQuaCtuKSUzNjAsaS5wdXNoKF9lKHQpKTtyZXR1cm4gaX1mdW5jdGlvbiBTcChlLGEpe2E9YXx8Njtmb3IodmFyIHI9X2UoZSkudG9Ic3YoKSx0PXIuaCxuPXIucyxpPXIudixmPVtdLHM9MS9hO2EtLTspZi5wdXNoKF9lKHtoOnQsczpuLHY6aX0pKSxpPShpK3MpJTE7cmV0dXJuIGZ9X2UubWl4PWZ1bmN0aW9uKGUsYSxyKXtyPXI9PT0wPzA6cnx8NTA7dmFyIHQ9X2UoZSkudG9SZ2IoKSxuPV9lKGEpLnRvUmdiKCksaT1yLzEwMCxmPXtyOihuLnItdC5yKSppK3QucixnOihuLmctdC5nKSppK3QuZyxiOihuLmItdC5iKSppK3QuYixhOihuLmEtdC5hKSppK3QuYX07cmV0dXJuIF9lKGYpfSxfZS5yZWFkYWJpbGl0eT1mdW5jdGlvbihlLGEpe3ZhciByPV9lKGUpLHQ9X2UoYSk7cmV0dXJuKE1hdGgubWF4KHIuZ2V0THVtaW5hbmNlKCksdC5nZXRMdW1pbmFuY2UoKSkrLjA1KS8oTWF0aC5taW4oci5nZXRMdW1pbmFuY2UoKSx0LmdldEx1bWluYW5jZSgpKSsuMDUpfSxfZS5pc1JlYWRhYmxlPWZ1bmN0aW9uKGUsYSxyKXt2YXIgdD1fZS5yZWFkYWJpbGl0eShlLGEpLG4saTtzd2l0Y2goaT0hMSxuPU9wKHIpLG4ubGV2ZWwrbi5zaXplKXtjYXNlIkFBc21hbGwiOmNhc2UiQUFBbGFyZ2UiOmk9dD49NC41O2JyZWFrO2Nhc2UiQUFsYXJnZSI6aT10Pj0zO2JyZWFrO2Nhc2UiQUFBc21hbGwiOmk9dD49NzticmVha31yZXR1cm4gaX0sX2UubW9zdFJlYWRhYmxlPWZ1bmN0aW9uKGUsYSxyKXt2YXIgdD1udWxsLG49MCxpLGYscyxjO3I9cnx8e30sZj1yLmluY2x1ZGVGYWxsYmFja0NvbG9ycyxzPXIubGV2ZWwsYz1yLnNpemU7Zm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspaT1fZS5yZWFkYWJpbGl0eShlLGFbb10pLGk+biYmKG49aSx0PV9lKGFbb10pKTtyZXR1cm4gX2UuaXNSZWFkYWJsZShlLHQse2xldmVsOnMsc2l6ZTpjfSl8fCFmP3Q6KHIuaW5jbHVkZUZhbGxiYWNrQ29sb3JzPSExLF9lLm1vc3RSZWFkYWJsZShlLFsiI2ZmZiIsIiMwMDAiXSxyKSl9O3ZhciBNbj1fZS5uYW1lcz17YWxpY2VibHVlOiJmMGY4ZmYiLGFudGlxdWV3aGl0ZToiZmFlYmQ3IixhcXVhOiIwZmYiLGFxdWFtYXJpbmU6IjdmZmZkNCIsYXp1cmU6ImYwZmZmZiIsYmVpZ2U6ImY1ZjVkYyIsYmlzcXVlOiJmZmU0YzQiLGJsYWNrOiIwMDAiLGJsYW5jaGVkYWxtb25kOiJmZmViY2QiLGJsdWU6IjAwZiIsYmx1ZXZpb2xldDoiOGEyYmUyIixicm93bjoiYTUyYTJhIixidXJseXdvb2Q6ImRlYjg4NyIsYnVybnRzaWVubmE6ImVhN2U1ZCIsY2FkZXRibHVlOiI1ZjllYTAiLGNoYXJ0cmV1c2U6IjdmZmYwMCIsY2hvY29sYXRlOiJkMjY5MWUiLGNvcmFsOiJmZjdmNTAiLGNvcm5mbG93ZXJibHVlOiI2NDk1ZWQiLGNvcm5zaWxrOiJmZmY4ZGMiLGNyaW1zb246ImRjMTQzYyIsY3lhbjoiMGZmIixkYXJrYmx1ZToiMDAwMDhiIixkYXJrY3lhbjoiMDA4YjhiIixkYXJrZ29sZGVucm9kOiJiODg2MGIiLGRhcmtncmF5OiJhOWE5YTkiLGRhcmtncmVlbjoiMDA2NDAwIixkYXJrZ3JleToiYTlhOWE5IixkYXJra2hha2k6ImJkYjc2YiIsZGFya21hZ2VudGE6IjhiMDA4YiIsZGFya29saXZlZ3JlZW46IjU1NmIyZiIsZGFya29yYW5nZToiZmY4YzAwIixkYXJrb3JjaGlkOiI5OTMyY2MiLGRhcmtyZWQ6IjhiMDAwMCIsZGFya3NhbG1vbjoiZTk5NjdhIixkYXJrc2VhZ3JlZW46IjhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiNDgzZDhiIixkYXJrc2xhdGVncmF5OiIyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IjJmNGY0ZiIsZGFya3R1cnF1b2lzZToiMDBjZWQxIixkYXJrdmlvbGV0OiI5NDAwZDMiLGRlZXBwaW5rOiJmZjE0OTMiLGRlZXBza3libHVlOiIwMGJmZmYiLGRpbWdyYXk6IjY5Njk2OSIsZGltZ3JleToiNjk2OTY5Iixkb2RnZXJibHVlOiIxZTkwZmYiLGZpcmVicmljazoiYjIyMjIyIixmbG9yYWx3aGl0ZToiZmZmYWYwIixmb3Jlc3RncmVlbjoiMjI4YjIyIixmdWNoc2lhOiJmMGYiLGdhaW5zYm9ybzoiZGNkY2RjIixnaG9zdHdoaXRlOiJmOGY4ZmYiLGdvbGQ6ImZmZDcwMCIsZ29sZGVucm9kOiJkYWE1MjAiLGdyYXk6IjgwODA4MCIsZ3JlZW46IjAwODAwMCIsZ3JlZW55ZWxsb3c6ImFkZmYyZiIsZ3JleToiODA4MDgwIixob25leWRldzoiZjBmZmYwIixob3RwaW5rOiJmZjY5YjQiLGluZGlhbnJlZDoiY2Q1YzVjIixpbmRpZ286IjRiMDA4MiIsaXZvcnk6ImZmZmZmMCIsa2hha2k6ImYwZTY4YyIsbGF2ZW5kZXI6ImU2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiZmZmMGY1IixsYXduZ3JlZW46IjdjZmMwMCIsbGVtb25jaGlmZm9uOiJmZmZhY2QiLGxpZ2h0Ymx1ZToiYWRkOGU2IixsaWdodGNvcmFsOiJmMDgwODAiLGxpZ2h0Y3lhbjoiZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiZmFmYWQyIixsaWdodGdyYXk6ImQzZDNkMyIsbGlnaHRncmVlbjoiOTBlZTkwIixsaWdodGdyZXk6ImQzZDNkMyIsbGlnaHRwaW5rOiJmZmI2YzEiLGxpZ2h0c2FsbW9uOiJmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IjIwYjJhYSIsbGlnaHRza3libHVlOiI4N2NlZmEiLGxpZ2h0c2xhdGVncmF5OiI3ODkiLGxpZ2h0c2xhdGVncmV5OiI3ODkiLGxpZ2h0c3RlZWxibHVlOiJiMGM0ZGUiLGxpZ2h0eWVsbG93OiJmZmZmZTAiLGxpbWU6IjBmMCIsbGltZWdyZWVuOiIzMmNkMzIiLGxpbmVuOiJmYWYwZTYiLG1hZ2VudGE6ImYwZiIsbWFyb29uOiI4MDAwMDAiLG1lZGl1bWFxdWFtYXJpbmU6IjY2Y2RhYSIsbWVkaXVtYmx1ZToiMDAwMGNkIixtZWRpdW1vcmNoaWQ6ImJhNTVkMyIsbWVkaXVtcHVycGxlOiI5MzcwZGIiLG1lZGl1bXNlYWdyZWVuOiIzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiN2I2OGVlIixtZWRpdW1zcHJpbmdncmVlbjoiMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IjQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiJjNzE1ODUiLG1pZG5pZ2h0Ymx1ZToiMTkxOTcwIixtaW50Y3JlYW06ImY1ZmZmYSIsbWlzdHlyb3NlOiJmZmU0ZTEiLG1vY2Nhc2luOiJmZmU0YjUiLG5hdmFqb3doaXRlOiJmZmRlYWQiLG5hdnk6IjAwMDA4MCIsb2xkbGFjZToiZmRmNWU2IixvbGl2ZToiODA4MDAwIixvbGl2ZWRyYWI6IjZiOGUyMyIsb3JhbmdlOiJmZmE1MDAiLG9yYW5nZXJlZDoiZmY0NTAwIixvcmNoaWQ6ImRhNzBkNiIscGFsZWdvbGRlbnJvZDoiZWVlOGFhIixwYWxlZ3JlZW46Ijk4ZmI5OCIscGFsZXR1cnF1b2lzZToiYWZlZWVlIixwYWxldmlvbGV0cmVkOiJkYjcwOTMiLHBhcGF5YXdoaXA6ImZmZWZkNSIscGVhY2hwdWZmOiJmZmRhYjkiLHBlcnU6ImNkODUzZiIscGluazoiZmZjMGNiIixwbHVtOiJkZGEwZGQiLHBvd2RlcmJsdWU6ImIwZTBlNiIscHVycGxlOiI4MDAwODAiLHJlYmVjY2FwdXJwbGU6IjY2MzM5OSIscmVkOiJmMDAiLHJvc3licm93bjoiYmM4ZjhmIixyb3lhbGJsdWU6IjQxNjllMSIsc2FkZGxlYnJvd246IjhiNDUxMyIsc2FsbW9uOiJmYTgwNzIiLHNhbmR5YnJvd246ImY0YTQ2MCIsc2VhZ3JlZW46IjJlOGI1NyIsc2Vhc2hlbGw6ImZmZjVlZSIsc2llbm5hOiJhMDUyMmQiLHNpbHZlcjoiYzBjMGMwIixza3libHVlOiI4N2NlZWIiLHNsYXRlYmx1ZToiNmE1YWNkIixzbGF0ZWdyYXk6IjcwODA5MCIsc2xhdGVncmV5OiI3MDgwOTAiLHNub3c6ImZmZmFmYSIsc3ByaW5nZ3JlZW46IjAwZmY3ZiIsc3RlZWxibHVlOiI0NjgyYjQiLHRhbjoiZDJiNDhjIix0ZWFsOiIwMDgwODAiLHRoaXN0bGU6ImQ4YmZkOCIsdG9tYXRvOiJmZjYzNDciLHR1cnF1b2lzZToiNDBlMGQwIix2aW9sZXQ6ImVlODJlZSIsd2hlYXQ6ImY1ZGViMyIsd2hpdGU6ImZmZiIsd2hpdGVzbW9rZToiZjVmNWY1Iix5ZWxsb3c6ImZmMCIseWVsbG93Z3JlZW46IjlhY2QzMiJ9LENwPV9lLmhleE5hbWVzPWJwKE1uKTtmdW5jdGlvbiBicChlKXt2YXIgYT17fTtmb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYoYVtlW3JdXT1yKTtyZXR1cm4gYX1mdW5jdGlvbiBLZihlKXtyZXR1cm4gZT1wYXJzZUZsb2F0KGUpLChpc05hTihlKXx8ZTwwfHxlPjEpJiYoZT0xKSxlfWZ1bmN0aW9uIEtlKGUsYSl7RHAoZSkmJihlPSIxMDAlIik7dmFyIHI9SXAoZSk7cmV0dXJuIGU9TWF0aC5taW4oYSxNYXRoLm1heCgwLHBhcnNlRmxvYXQoZSkpKSxyJiYoZT1wYXJzZUludChlKmEsMTApLzEwMCksTWF0aC5hYnMoZS1hKTwxZS02PzE6ZSVhL3BhcnNlRmxvYXQoYSl9ZnVuY3Rpb24gUDAoZSl7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCxlKSl9ZnVuY3Rpb24gTHIoZSl7cmV0dXJuIHBhcnNlSW50KGUsMTYpfWZ1bmN0aW9uIERwKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyImJmUuaW5kZXhPZigiLiIpIT0tMSYmcGFyc2VGbG9hdChlKT09PTF9ZnVuY3Rpb24gSXAoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIiYmZS5pbmRleE9mKCIlIikhPS0xfWZ1bmN0aW9uIGVhKGUpe3JldHVybiBlLmxlbmd0aD09MT8iMCIrZToiIitlfWZ1bmN0aW9uIFp0KGUpe3JldHVybiBlPD0xJiYoZT1lKjEwMCsiJSIpLGV9ZnVuY3Rpb24gamYoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSoyNTUpLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBZZihlKXtyZXR1cm4gTHIoZSkvMjU1fXZhciByYT1mdW5jdGlvbigpe3ZhciBlPSJbLVxcK10/XFxkKyU/IixhPSJbLVxcK10/XFxkKlxcLlxcZCslPyIscj0iKD86IithKyIpfCg/OiIrZSsiKSIsdD0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyIsbj0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyI7cmV0dXJue0NTU19VTklUOm5ldyBSZWdFeHAocikscmdiOm5ldyBSZWdFeHAoInJnYiIrdCkscmdiYTpuZXcgUmVnRXhwKCJyZ2JhIituKSxoc2w6bmV3IFJlZ0V4cCgiaHNsIit0KSxoc2xhOm5ldyBSZWdFeHAoImhzbGEiK24pLGhzdjpuZXcgUmVnRXhwKCJoc3YiK3QpLGhzdmE6bmV3IFJlZ0V4cCgiaHN2YSIrbiksaGV4MzovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4NjovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC8saGV4NDovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDg6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkL319KCk7ZnVuY3Rpb24gd2EoZSl7cmV0dXJuISFyYS5DU1NfVU5JVC5leGVjKGUpfWZ1bmN0aW9uIFJwKGUpe2U9ZS5yZXBsYWNlKGxwLCIiKS5yZXBsYWNlKHVwLCIiKS50b0xvd2VyQ2FzZSgpO3ZhciBhPSExO2lmKE1uW2VdKWU9TW5bZV0sYT0hMDtlbHNlIGlmKGU9PSJ0cmFuc3BhcmVudCIpcmV0dXJue3I6MCxnOjAsYjowLGE6MCxmb3JtYXQ6Im5hbWUifTt2YXIgcjtyZXR1cm4ocj1yYS5yZ2IuZXhlYyhlKSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdfToocj1yYS5yZ2JhLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXSxhOnJbNF19OihyPXJhLmhzbC5leGVjKGUpKT97aDpyWzFdLHM6clsyXSxsOnJbM119OihyPXJhLmhzbGEuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdLGE6cls0XX06KHI9cmEuaHN2LmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXX06KHI9cmEuaHN2YS5leGVjKGUpKT97aDpyWzFdLHM6clsyXSx2OnJbM10sYTpyWzRdfToocj1yYS5oZXg4LmV4ZWMoZSkpP3tyOkxyKHJbMV0pLGc6THIoclsyXSksYjpMcihyWzNdKSxhOllmKHJbNF0pLGZvcm1hdDphPyJuYW1lIjoiaGV4OCJ9OihyPXJhLmhleDYuZXhlYyhlKSk/e3I6THIoclsxXSksZzpMcihyWzJdKSxiOkxyKHJbM10pLGZvcm1hdDphPyJuYW1lIjoiaGV4In06KHI9cmEuaGV4NC5leGVjKGUpKT97cjpMcihyWzFdKyIiK3JbMV0pLGc6THIoclsyXSsiIityWzJdKSxiOkxyKHJbM10rIiIrclszXSksYTpZZihyWzRdKyIiK3JbNF0pLGZvcm1hdDphPyJuYW1lIjoiaGV4OCJ9OihyPXJhLmhleDMuZXhlYyhlKSk/e3I6THIoclsxXSsiIityWzFdKSxnOkxyKHJbMl0rIiIrclsyXSksYjpMcihyWzNdKyIiK3JbM10pLGZvcm1hdDphPyJuYW1lIjoiaGV4In06ITF9ZnVuY3Rpb24gT3AoZSl7dmFyIGEscjtyZXR1cm4gZT1lfHx7bGV2ZWw6IkFBIixzaXplOiJzbWFsbCJ9LGE9KGUubGV2ZWx8fCJBQSIpLnRvVXBwZXJDYXNlKCkscj0oZS5zaXplfHwic21hbGwiKS50b0xvd2VyQ2FzZSgpLGEhPT0iQUEiJiZhIT09IkFBQSImJihhPSJBQSIpLHIhPT0ic21hbGwiJiZyIT09ImxhcmdlIiYmKHI9InNtYWxsIikse2xldmVsOmEsc2l6ZTpyfX1jb25zdCBOcD1bIkZGMDAwMDAwIiwiRkZGRkZGRkYiLCJGRkZGMDAwMCIsIkZGMDBGRjAwIiwiRkYwMDAwRkYiLCJGRkZGRkYwMCIsIkZGRkYwMEZGIiwiRkYwMEZGRkYiLCJGRjAwMDAwMCIsIkZGRkZGRkZGIiwiRkZGRjAwMDAiLCJGRjAwRkYwMCIsIkZGMDAwMEZGIiwiRkZGRkZGMDAiLCJGRkZGMDBGRiIsIkZGMDBGRkZGIiwiRkY4MDAwMDAiLCJGRjAwODAwMCIsIkZGMDAwMDgwIiwiRkY4MDgwMDAiLCJGRjgwMDA4MCIsIkZGMDA4MDgwIiwiRkZDMEMwQzAiLCJGRjgwODA4MCIsIkZGOTk5OUZGIiwiRkY5OTMzNjYiLCJGRkZGRkZDQyIsIkZGQ0NGRkZGIiwiRkY2NjAwNjYiLCJGRkZGODA4MCIsIkZGMDA2NkNDIiwiRkZDQ0NDRkYiLCJGRjAwMDA4MCIsIkZGRkYwMEZGIiwiRkZGRkZGMDAiLCJGRjAwRkZGRiIsIkZGODAwMDgwIiwiRkY4MDAwMDAiLCJGRjAwODA4MCIsIkZGMDAwMEZGIiwiRkYwMENDRkYiLCJGRkNDRkZGRiIsIkZGQ0NGRkNDIiwiRkZGRkZGOTkiLCJGRjk5Q0NGRiIsIkZGRkY5OUNDIiwiRkZDQzk5RkYiLCJGRkZGQ0M5OSIsIkZGMzM2NkZGIiwiRkYzM0NDQ0MiLCJGRjk5Q0MwMCIsIkZGRkZDQzAwIiwiRkZGRjk5MDAiLCJGRkZGNjYwMCIsIkZGNjY2Njk5IiwiRkY5Njk2OTYiLCJGRjAwMzM2NiIsIkZGMzM5OTY2IiwiRkYwMDMzMDAiLCJGRjMzMzMwMCIsIkZGOTkzMzAwIiwiRkY5OTMzNjYiLCJGRjMzMzM5OSIsIkZGMzMzMzMzIl0sSWE9MjQwLFBuPTI1NTtmdW5jdGlvbiBNcChlLGEscil7Y29uc3QgdD1NYXRoLm1heChlLGEsciksbj1NYXRoLm1pbihlLGEsciksaT10K24sZj10LW4scz1pLzI7bGV0IGMsbztpZihuPT10KXJldHVyblswLHMsMF07czw9LjU/bz1mL2k6bz1mLygyLWkpO2NvbnN0IGw9KHQtZSkvZix1PSh0LWEpL2YseD0odC1yKS9mO3JldHVybiBlPT10P2M9eC11OmE9PT10P2M9MitsLXg6Yz00K3UtbCxjPWMvNiUxLFtjLHMsb119ZnVuY3Rpb24gUHAoZSl7ZS5sZW5ndGg+NiYmKGU9ZS5zdWJzdHJpbmcoMikpO2NvbnN0IGE9cGFyc2VJbnQoZS5zbGljZSgwLDIpLDE2KS9QbixyPXBhcnNlSW50KGUuc2xpY2UoMiw0KSwxNikvUG4sdD1wYXJzZUludChlLnNsaWNlKDQsNiksMTYpL1BuLFtuLGksZl09TXAoYSxyLHQpO3JldHVybltNYXRoLnJvdW5kKG4qSWEpLE1hdGgucm91bmQoaSpJYSksTWF0aC5yb3VuZChmKklhKV19ZnVuY3Rpb24gTHAoZSxhLHIpe3JldHVybiBfZSh7aDplL0lhKjM2MCxzOnIvSWEsbDphL0lhfSkudG9IZXgoKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIEJwKGUsYSl7cmV0dXJuIGU8PTA/TWF0aC5yb3VuZChhKigxK2UpKTpNYXRoLnJvdW5kKGEqKDEtZSkrKElhLUlhKigxLWUpKSl9ZnVuY3Rpb24gVXAoZSxhKXtpZighZSlyZXR1cm4gZTtjb25zdFtyLHQsbl09UHAoZSk7cmV0dXJuYEZGJHtMcChyLEJwKGEsdCksbil9YH1jb25zdCBIcD04LjQzLFdwPTE1LFZwPTI0LEdwPTgsS3I9ZT0+dHlwZW9mIGU9PSJudW1iZXIiJiZOdW1iZXIuaXNGaW5pdGUoZSk/ZTp2b2lkIDAsWHA9KCk9Pntjb25zdCBlPWlhLmNvbF93aWR0aF90b19weCxhPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2UoSHApOnZvaWQgMDtyZXR1cm4gTWF0aC5jZWlsKEtyKGEpPz82NCl9LHpwPXtyb3dIZWlnaHQ6KCgpPT57Y29uc3QgZT1pYS5yb3dfaGVpZ2h0X3RvX3B4LGE9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShXcCk6dm9pZCAwO3JldHVybiBNYXRoLmNlaWwoS3IoYSk/PzIwKX0pKCksY29sV2lkdGg6WHAoKX0sJHA9KGUsYSk9PmAke2V9LSR7YX1gLEpmPWU9PmU/ZS53IT09dm9pZCAwJiZlLnchPT1udWxsP2Ake2Uud31gOmUudj09PXZvaWQgMHx8ZS52PT09bnVsbD8iIjplLnQ9PT0iZCImJmUudiBpbnN0YW5jZW9mIERhdGU/ZS52LnRvTG9jYWxlRGF0ZVN0cmluZygpOmAke2Uudn1gOiIiLEtwPWU9PntpZighZSlyZXR1cm47aWYoZS5oaWRkZW4pcmV0dXJuIDA7Y29uc3QgYT1LcihlLndweCk7aWYoYSE9PXZvaWQgMCYmYT49MClyZXR1cm4gTWF0aC5jZWlsKGEpO2NvbnN0IHI9S3IoZS53aWR0aCk7aWYocj09PTApcmV0dXJuIDA7aWYociE9PXZvaWQgMCYmcj4wKXtjb25zdCBuPWlhLmNvbF93aWR0aF90b19weCxpPXR5cGVvZiBuPT0iZnVuY3Rpb24iP0tyKG4ocikpOnZvaWQgMDtyZXR1cm4gTWF0aC5jZWlsKGkhPT12b2lkIDA/aTpyKihlLk1EV3x8NykpfWNvbnN0IHQ9S3IoZS53Y2gpO2lmKHQ9PT0wKXJldHVybiAwO2lmKHQhPT12b2lkIDAmJnQ+MClyZXR1cm4gTWF0aC5jZWlsKHQqKGUuTURXfHw3KSs1KX0sanA9ZT0+ZT9lLmhpZGRlbj8hMDooS3IoZS53cHgpPz8tMSk+PTB8fChLcihlLndpZHRoKT8/LTEpPj0wfHwoS3IoZS53Y2gpPz8tMSk+PTA6ITEsWmY9ZT0+e2lmKCFlKXJldHVybjtpZihlLmhpZGRlbilyZXR1cm4gMDtjb25zdCBhPUtyKGUuaHB4KTtpZihhIT09dm9pZCAwJiZhPj0wKXJldHVybiBNYXRoLmNlaWwoYSk7Y29uc3Qgcj1LcihlLmhwdCk7aWYociE9PXZvaWQgMCYmcj49MCl7Y29uc3QgdD1pYS5yb3dfaGVpZ2h0X3RvX3B4LG49dHlwZW9mIHQ9PSJmdW5jdGlvbiI/S3IodChyKSk6dm9pZCAwO3JldHVybiBNYXRoLmNlaWwobj8/cio5Ni83Mil9fSxZcD1lPT57c3dpdGNoKGAke2V8fCIifWApe2Nhc2UibGVmdCI6cmV0dXJuIkxlZnQiO2Nhc2UiY2VudGVyIjpjYXNlImNlbnRlckNvbnRpbnVvdXMiOmNhc2UiZGlzdHJpYnV0ZWQiOmNhc2UianVzdGlmeSI6cmV0dXJuIkNlbnRlciI7Y2FzZSJyaWdodCI6cmV0dXJuIlJpZ2h0IjtkZWZhdWx0OnJldHVybn19LEpwPWU9Pntzd2l0Y2goYCR7ZXx8IiJ9YCl7Y2FzZSJ0b3AiOnJldHVybiJUb3AiO2Nhc2UiY2VudGVyIjpjYXNlIm1pZGRsZSI6Y2FzZSJkaXN0cmlidXRlZCI6Y2FzZSJqdXN0aWZ5IjpyZXR1cm4iTWlkZGxlIjtjYXNlImJvdHRvbSI6cmV0dXJuIkJvdHRvbSI7ZGVmYXVsdDpyZXR1cm59fSxxZj1lPT57aWYoIWUpcmV0dXJuIiI7Y29uc3QgYT1bWXAoZS5ob3Jpem9udGFsKSxKcChlLnZlcnRpY2FsKV0uZmlsdGVyKEJvb2xlYW4pLm1hcChyPT5gaHQke3J9YCk7cmV0dXJuIGUud3JhcFRleHQmJmEucHVzaCgiaHRXcmFwIiksZS5zaHJpbmtUb0ZpdCYmYS5wdXNoKCJodFNocmluayIpLGEuam9pbigiICIpfSxMbj1lPT57aWYoIWUpcmV0dXJuO2NvbnN0IGE9ZS5yYXdfcmdiJiZ0eXBlb2YgZS50aW50PT0ibnVtYmVyIj9VcChlLnJhd19yZ2IsZS50aW50KTp2b2lkIDAscj1lLnJnYnx8YXx8ZS5yYXdfcmdiO2lmKHR5cGVvZiByPT0ic3RyaW5nIiYmcil7Y29uc3Qgbj1yLnN0YXJ0c1dpdGgoIiMiKT9yLnNsaWNlKDEpOnI7cmV0dXJuYCMke24ubGVuZ3RoPjY/bi5zbGljZSgtNik6bn1gfWNvbnN0IHQ9dHlwZW9mIGUuaW5kZXhlZD09Im51bWJlciI/ZS5pbmRleGVkOmUuaW5kZXg7aWYodHlwZW9mIHQ9PSJudW1iZXIiKXtjb25zdCBuPU5wW3RdO2lmKG4pcmV0dXJuYCMke24uc2xpY2UoLTYpfWB9fSxacD1lPT57c3dpdGNoKGUpe2Nhc2UiaGFpciI6cmV0dXJuIjAuNXB4IjtjYXNlIm1lZGl1bSI6Y2FzZSJtZWRpdW1EYXNoZWQiOmNhc2UibWVkaXVtRGFzaERvdCI6Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpyZXR1cm4iMnB4IjtjYXNlInRoaWNrIjpjYXNlImRvdWJsZSI6cmV0dXJuIjNweCI7ZGVmYXVsdDpyZXR1cm4iMXB4In19LHFwPWU9Pntzd2l0Y2goZSl7Y2FzZSJkYXNoZWQiOmNhc2UibWVkaXVtRGFzaGVkIjpjYXNlImRhc2hEb3QiOmNhc2UibWVkaXVtRGFzaERvdCI6Y2FzZSJkYXNoRG90RG90IjpjYXNlIm1lZGl1bURhc2hEb3REb3QiOmNhc2Uic2xhbnREYXNoRG90IjpyZXR1cm4iZGFzaGVkIjtjYXNlImRvdHRlZCI6cmV0dXJuImRvdHRlZCI7Y2FzZSJkb3VibGUiOnJldHVybiJkb3VibGUiO2RlZmF1bHQ6cmV0dXJuInNvbGlkIn19LFFwPSguLi5lKT0+e2NvbnN0IGE9e307cmV0dXJuIGUuZm9yRWFjaChyPT57ciYmT2JqZWN0LmVudHJpZXMocikuZm9yRWFjaCgoW3Qsbl0pPT57aWYobiYmdHlwZW9mIG49PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShuKSl7YVt0XT17Li4uYVt0XSYmdHlwZW9mIGFbdF09PSJvYmplY3QiP2FbdF06e30sLi4ubn07cmV0dXJufWFbdF09bn0pfSksT2JqZWN0LmtleXMoYSkubGVuZ3RoP2E6dm9pZCAwfSxlZz1lPT57Y29uc3QgYT17fSxyPWU/LmZpbGx8fHt9LHQ9TG4oZT8uZmdDb2xvcnx8ci5mZ0NvbG9yfHxlPy5iZ0NvbG9yfHxyLmJnQ29sb3IpLG49ZT8ucGF0dGVyblR5cGV8fHIucGF0dGVyblR5cGU7dCYmbiE9PSJub25lIiYmKGEuYmFja2dyb3VuZENvbG9yPXQpO2NvbnN0IGk9ZT8uZm9udHx8e30sZj1MbihpLmNvbG9yfHxlPy5jb2xvcik7ZiYmKGEuY29sb3I9ZiksKGkuaXRhbGljfHxlPy5pdGFsaWMpJiYoYS5mb250U3R5bGU9Iml0YWxpYyIpLChpLmJvbGR8fGU/LmJvbGQpJiYoYS5mb250V2VpZ2h0PSJib2xkIik7Y29uc3Qgcz1pLnN6fHxlPy5zejtzJiYoYS5mb250U2l6ZT1gJHtzfXB4YCk7Y29uc3QgYz1pLm5hbWV8fGU/Lm5hbWU7YyYmKGEuZm9udEZhbWlseT1jKTtjb25zdCBvPWU/LmJvcmRlcjtyZXR1cm4gbyYmWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5mb3JFYWNoKGw9Pntjb25zdCB1PW9bbF07aWYoIXU/LnN0eWxlfHx1LnN0eWxlPT09Im5vbmUiKXJldHVybjtjb25zdCB4PWBib3JkZXIke2wuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtsLnNsaWNlKDEpfWA7YVtgJHt4fVdpZHRoYF09WnAodS5zdHlsZSksYVtgJHt4fVN0eWxlYF09cXAodS5zdHlsZSksYVtgJHt4fUNvbG9yYF09TG4odS5jb2xvcil8fCIjMDAwMDAwIn0pLE9iamVjdC5rZXlzKGEpLmxlbmd0aD9hOnZvaWQgMH0scmc9KGUsYSk9Pntmb3IoY29uc3QgciBvZiBlKWZvcihsZXQgdD0wO3Q8YTt0Kz0xKShyW3RdPT09dm9pZCAwfHxyW3RdPT09bnVsbCkmJihyW3RdPSIiKTtyZXR1cm4gZX07Y2xhc3MgTDB7X3dzO19zdGFydFJvdztfcGFnZVNpemU7X3RvdGFsUm93cztfdG90YWxDb2xzO3N0YXRpYyBkZWZhdWx0cz16cDtfZGF0YTtfY2VsbDtfbWVyZ2U7X3Jvd0hlaWdodHM7X2NvbFdpZHRocztfYXV0b0ZpdENvbHVtbnM7X2NvbHVtbnM7X3N0cnVjdHVyZTtfbWV0YTtyYW5nZTtzdGF0aWMgY3JlYXRlKGEscj17fSl7cmV0dXJuIG5ldyBMMChhLHIpfWNvbnN0cnVjdG9yKGEscil7dGhpcy5fd3M9YSx0aGlzLl9zdGFydFJvdz1NYXRoLm1heChyLnN0YXJ0Um93fHwwLDApLHRoaXMuX3BhZ2VTaXplPU1hdGgubWF4KHIucGFnZVNpemV8fDUwMCwxKSx0aGlzLl90b3RhbFJvd3M9ci50b3RhbFJvd3MsdGhpcy5fdG90YWxDb2xzPXIudG90YWxDb2xzO2NvbnN0eyIhcmVmIjp0fT1hO3RoaXMucmFuZ2U9aWEuZGVjb2RlX3JhbmdlKHR8fCJBMSIpfWdldCB3cygpe3JldHVybiB0aGlzLl93c31nZXQgZGVmYXVsdHMoKXtyZXR1cm4gTDAuZGVmYXVsdHN9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YT8/KHRoaXMuX2RhdGE9dGhpcy5nZXREYXRhKCkpfWdldCBjZWxsKCl7cmV0dXJuIHRoaXMuX2NlbGw/Pyh0aGlzLl9jZWxsPXRoaXMuZ2V0Q2VsbCgpKX1nZXQgbWVyZ2UoKXtyZXR1cm4gdGhpcy5fbWVyZ2U/Pyh0aGlzLl9tZXJnZT10aGlzLmdldE1lcmdlKCkpfWdldCBjb2x1bW5zKCl7cmV0dXJuIHRoaXMuX2NvbHVtbnM/Pyh0aGlzLl9jb2x1bW5zPXRoaXMuZ2V0Q29sdW1ucygpKX1nZXQgc3RydWN0dXJlKCl7cmV0dXJuIHRoaXMuX3N0cnVjdHVyZT8/KHRoaXMuX3N0cnVjdHVyZT10aGlzLmdldFN0cnVjdHVyZSgpKX1nZXQgcm93SGVpZ2h0cygpe3JldHVybiB0aGlzLl9yb3dIZWlnaHRzPz8odGhpcy5fcm93SGVpZ2h0cz10aGlzLmdldFJvd0hlaWdodHMoKSl9Z2V0IGNvbFdpZHRocygpe3JldHVybiB0aGlzLl9jb2xXaWR0aHM/Pyh0aGlzLl9jb2xXaWR0aHM9dGhpcy5nZXRDb2xXaWR0aHMoKSl9Z2V0IG1ldGEoKXtyZXR1cm4gdGhpcy5fbWV0YT8/KHRoaXMuX21ldGE9e3N0YXJ0Um93OnRoaXMuc3RhcnRSb3csZW5kUm93OnRoaXMuZW5kUm93LHBhZ2VTaXplOnRoaXMuX3BhZ2VTaXplLHRvdGFsUm93czp0aGlzLnRvdGFsUm93cyx0b3RhbENvbHM6dGhpcy50b3RhbENvbHN9KX1nZXQgdG90YWxSb3dzKCl7cmV0dXJuIHRoaXMuX3RvdGFsUm93cz8/dGhpcy5yYW5nZS5lLnIrMX1nZXQgdG90YWxDb2xzKCl7cmV0dXJuIHRoaXMuX3RvdGFsQ29scz8/dGhpcy5yYW5nZS5lLmMrMX1nZXQgc3RhcnRSb3coKXtyZXR1cm4gTWF0aC5taW4odGhpcy5fc3RhcnRSb3csTWF0aC5tYXgodGhpcy50b3RhbFJvd3MtMSwwKSl9Z2V0IGVuZFJvdygpe3JldHVybiBNYXRoLm1pbih0aGlzLnN0YXJ0Um93K3RoaXMuX3BhZ2VTaXplLHRoaXMudG90YWxSb3dzKX1nZXQgZGVuc2VSb3dzKCl7Y29uc3QgYT10aGlzLndzO3JldHVybiBBcnJheS5pc0FycmF5KGEpP2E6QXJyYXkuaXNBcnJheShhWyIhZGF0YSJdKT9hWyIhZGF0YSJdOnZvaWQgMH1nZXRDZWxsQXQoYSxyKXtjb25zdCB0PXRoaXMuZGVuc2VSb3dzO3JldHVybiB0P3RbYV0/LltyXTp0aGlzLndzW2lhLmVuY29kZV9jZWxsKHtyOmEsYzpyfSldfWdldEFsbE1lcmdlKCl7Y29uc3QgYT10aGlzLndzLHsiIW1lcmdlcyI6cj1bXX09YTtyZXR1cm4gci5tYXAodD0+e2NvbnN0e3I6bixjOml9PXQucyx7cjpmLGM6c309dC5lO3JldHVybntyb3c6bixjb2w6aSxyb3dzcGFuOmYtbisxLGNvbHNwYW46cy1pKzF9fSl9Z2V0RGF0YSgpe2NvbnN0IGE9W10scj10aGlzLmRlbnNlUm93cztmb3IobGV0IHQ9dGhpcy5zdGFydFJvdzt0PHRoaXMuZW5kUm93O3QrPTEpe2NvbnN0IG49cj8uW3RdLGk9bj9uLnNsaWNlKDAsdGhpcy50b3RhbENvbHMpLm1hcChmPT5KZihmKSk6QXJyYXkuZnJvbSh7bGVuZ3RoOnRoaXMudG90YWxDb2xzfSwoZixzKT0+SmYodGhpcy5nZXRDZWxsQXQodCxzKSkpO2EucHVzaChpKX1yZXR1cm4gcmcoYSx0aGlzLnRvdGFsQ29scyl9Z2V0Q2VsbCgpe2NvbnN0IGE9e30seyIhY29scyI6cj1bXSwiIXJvd3MiOnQ9W119PXRoaXMud3M7Zm9yKGxldCBuPXRoaXMuc3RhcnRSb3c7bjx0aGlzLmVuZFJvdztuKz0xKWZvcihsZXQgaT0wO2k8dGhpcy50b3RhbENvbHM7aSs9MSl7Y29uc3QgZj10aGlzLmdldENlbGxBdChuLGkpLHM9UXAocltpXT8ucyx0W25dPy5zLGY/LnMpLGM9cWYocz8uYWxpZ25tZW50KSxvPWVnKHMpOyFjJiYhb3x8KGFbJHAobi10aGlzLnN0YXJ0Um93LGkpXT17Li4uYz97Y2xhc3NOYW1lOmN9Ont9LHN0eWxlOm98fHt9fSl9cmV0dXJuIGF9Z2V0TWVyZ2UoKXtyZXR1cm4gdGhpcy5nZXRBbGxNZXJnZSgpLmZsYXRNYXAoYT0+YS5yb3crYS5yb3dzcGFuLTE8dGhpcy5zdGFydFJvd3x8YS5yb3c+PXRoaXMuZW5kUm93fHxhLnJvdzx0aGlzLnN0YXJ0Um93P1tdOnsuLi5hLHJvdzphLnJvdy10aGlzLnN0YXJ0Um93fSl9Z2V0Um93SGVpZ2h0cygpe2NvbnN0e3Jvd0hlaWdodDphfT10aGlzLmRlZmF1bHRzLHsiIXJvd3MiOnI9W119PXRoaXMud3MsdD1bXTtpZihyLmxlbmd0aCYmdGhpcy5lbmRSb3c+dGhpcy5zdGFydFJvdylmb3IobGV0IG49dGhpcy5zdGFydFJvdztuPHRoaXMuZW5kUm93O24rPTEpe2NvbnN0IGk9WmYocltuXSk7aSE9PXZvaWQgMCYmKHRbbi10aGlzLnN0YXJ0Um93XT1pKX1yZXR1cm4gdC5sZW5ndGg9PT0xP3RbMF06dC5sZW5ndGg/dDphfWdldEFsbFJvd0hlaWdodHMoKXtjb25zdHsiIXJvd3MiOmE9W119PXRoaXMud3Mscj1bXTtpZihhLmxlbmd0aClmb3IobGV0IHQ9MDt0PHRoaXMudG90YWxSb3dzO3QrPTEpe2NvbnN0IG49WmYoYVt0XSk7biE9PXZvaWQgMCYmKHJbdF09bil9cmV0dXJuIHIubGVuZ3RoP3I6dm9pZCAwfWdldEF1dG9GaXRDb2x1bW5zKCl7Y29uc3QgYT1pYS5hdXRvX2ZpdF9jb2x1bW5zfHxpYS5hdXRvZml0X2NvbHVtbnM7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiBhKHRoaXMud3Mse3NldDohMSxza2lwSGlkZGVuOiEwLGluY2x1ZGVNZXJnZWQ6ITEsbWluUHg6VnAscGFkZGluZzpHcH0pfWNhdGNoKHIpe2NvbnNvbGUud2FybigiW2ZpbGUtdmlld2VyXSBFeGNlbCDoh6rliqjliJflrr3orqHnrpflpLHotKXvvIzlt7Llm57pgIDliLDljp/lp4vliJflrr3jgIIiLHIpO3JldHVybn19Z2V0IGF1dG9GaXRDb2x1bW5zKCl7cmV0dXJuIHRoaXMuX2F1dG9GaXRDb2x1bW5zPT09dm9pZCAwJiYodGhpcy5fYXV0b0ZpdENvbHVtbnM9dGhpcy5nZXRBdXRvRml0Q29sdW1ucygpfHxudWxsKSx0aGlzLl9hdXRvRml0Q29sdW1uc3x8dm9pZCAwfWdldENvbHVtbk1ldGEoYSxyKXtjb25zdCB0PWFbcl07cmV0dXJuIGpwKHQpP3Q6dGhpcy5hdXRvRml0Q29sdW1ucz8uW3JdfHx0fWdldENvbFdpZHRocygpe2NvbnN0e2NvbFdpZHRoOmF9PXRoaXMuZGVmYXVsdHMseyIhY29scyI6cj1bXX09dGhpcy53cyx0PVtdO2ZvcihsZXQgbj0wO248dGhpcy50b3RhbENvbHM7bis9MSl7Y29uc3QgaT1LcCh0aGlzLmdldENvbHVtbk1ldGEocixuKSk7aSE9PXZvaWQgMCYmKHRbbl09aSl9cmV0dXJuIHQubGVuZ3RoP3Q6YX1nZXRDb2x1bW5zKCl7Y29uc3R7IiFjb2xzIjphPVtdfT10aGlzLndzO3JldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6dGhpcy50b3RhbENvbHN9LChyLHQpPT57Y29uc3Qgbj10aGlzLmdldENvbHVtbk1ldGEoYSx0KTtyZXR1cm57a2V5OnQrMSx0aXRsZTppYS5lbmNvZGVfY29sKHQpLGhpZGRlbjohIW4/LmhpZGRlbixlZGl0b3I6ITEsY2xhc3NOYW1lOnFmKG4/LnM/LmFsaWdubWVudCkscmVuZGVyZXI6InN0eWxlUmVuZGVyIn19KX1nZXRTdHJ1Y3R1cmUoKXtyZXR1cm57bWVyZ2U6dGhpcy5nZXRBbGxNZXJnZSgpLGNvbFdpZHRoczp0aGlzLmdldENvbFdpZHRocygpLHJvd0hlaWdodHM6dGhpcy5nZXRBbGxSb3dIZWlnaHRzKCksY29sdW1uczp0aGlzLmdldENvbHVtbnMoKX19dG9PYmplY3QoKXtjb25zdHtkZWZhdWx0czphLGRhdGE6cixjZWxsOnQsbWVyZ2U6bixyb3dIZWlnaHRzOmksY29sV2lkdGhzOmYsY29sdW1uczpzLG1ldGE6Y309dGhpcztyZXR1cm57ZGVmYXVsdHM6YSxkYXRhOnIsY2VsbDp0LG1lcmdlOm4scm93SGVpZ2h0czppLGNvbFdpZHRoczpmLGNvbHVtbnM6cyxtZXRhOmN9fX1jb25zdCBndD1zZWxmLHJ0PXt3b3JrYm9vazpudWxsLHNoZWV0czpbXX0sYWc9e3R5cGU6ImFycmF5IixkZW5zZTohMCxjZWxsRGF0ZXM6ITAsY2VsbFN0eWxlczohMCxicm93c2VyUGl4ZWxzOiEwLHZhbGlkYXRlTWVyZ2VzOiEwfTtndC5vbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0e2RhdGE6e3R5cGU6YSxwYXlsb2FkOnI9e319fT1lLHtzaGVldDp0LHdvcmtib29rOm4sc3RhcnRSb3c6aT0wLHBhZ2VTaXplOmY9NTAwLHNlc3Npb25JZDpzPTB9PXI7c3dpdGNoKGEpe2Nhc2UicGFyc2VXb3JrYm9vayI6dGcobik7YnJlYWs7Y2FzZSJwYXJzZVNoZWV0IjpuZyh0LGksZixzKTticmVha319LGd0Lm9uZXJyb3I9ZT0+e2NvbnNvbGUuZXJyb3IoZSl9O2NvbnN0IHRnPWU9Pnt0cnl7cnQud29ya2Jvb2s9cHQoZSxhZyksaWcoKX1jYXRjaChhKXtndC5wb3N0TWVzc2FnZSh7dHlwZToicGFyc2VFcnJvciIscGF5bG9hZDp7bWVzc2FnZTphIGluc3RhbmNlb2YgRXJyb3I/YS5tZXNzYWdlOlN0cmluZyhhKX19KX19LG5nPShlLGE9MCxyPTUwMCx0PTApPT57dHJ5e2NvbnN0IG49cnQud29ya2Jvb2ssaT1ydC5zaGVldHMuZmluZChmPT5mLmlkPT09ZSk/Lm5hbWU7aWYobj8uU2hlZXRzJiZpKXtjb25zdCBmPW4uU2hlZXRzW2ldO2lmKGYpe2NvbnN0IHM9cnQuc2hlZXRzLmZpbmQodT0+dS5pZD09PWUpLGM9TDAuY3JlYXRlKGYse3N0YXJ0Um93OmEscGFnZVNpemU6cix0b3RhbFJvd3M6cz8ucm93Q291bnQsdG90YWxDb2xzOnM/LmNvbENvdW50fSksbz1jLnRvT2JqZWN0KCksbD1hPT09MD9jLnN0cnVjdHVyZTp2b2lkIDA7Z3QucG9zdE1lc3NhZ2Uoe3R5cGU6InBhcnNlU2hlZXQiLHBheWxvYWQ6e3Nlc3Npb25JZDp0LHNoZWV0OmUsc2hlZXREYXRhOmw/ey4uLm8sc3RydWN0dXJlOmx9Om99fSl9fX1jYXRjaChuKXtndC5wb3N0TWVzc2FnZSh7dHlwZToicGFyc2VFcnJvciIscGF5bG9hZDp7c2Vzc2lvbklkOnQsc3RhcnRSb3c6YSxtZXNzYWdlOm4gaW5zdGFuY2VvZiBFcnJvcj9uLm1lc3NhZ2U6U3RyaW5nKG4pfX0pfX0saWc9KCk9Pntjb25zdCBlPXJ0Lndvcmtib29rO2lmKGU/LlNoZWV0TmFtZXMpe2NvbnN0IGE9ZS5Xb3JrYm9vaz8uU2hlZXRzfHxbXTtydC5zaGVldHM9ZS5TaGVldE5hbWVzLnJlZHVjZSgocix0LG4pPT57Y29uc3QgZj1lLlNoZWV0c1t0XT8uWyIhcmVmIl07aWYoIWYpcmV0dXJuIHI7Y29uc3Qgcz1pYS5kZWNvZGVfcmFuZ2UoZik7cmV0dXJuIHIucHVzaCh7aWQ6ci5sZW5ndGgsbmFtZTp0LGhpZGRlbjohIWFbbl0/LkhpZGRlbixyb3dDb3VudDpzLmUucisxLGNvbENvdW50OnMuZS5jKzF9KSxyfSxbXSksZ3QucG9zdE1lc3NhZ2Uoe3R5cGU6InNoZWV0cyIscGF5bG9hZDp7c2hlZXRzOnJ0LnNoZWV0c319KX19fSkoKTsK','has','.e-virt-table-menu-item','scroller','getRowIndexForRowKey','708090','getRowForRowKey','observe','rowIndexRowKeyMap','textCacheMap','fixedCells','#495060','webkitURL','batchSetItemValue','setValidationError','setOverlayerAutoHeightMap','col-resize','check','start','trackY','BEFORE_HEADER_CONTEXT_MENU_METHOD','KeyZ','toggleRowSelection','trackWidth','span','getElementRects','auto','checkboxKeyMap','mouseup','drawTextFont','loading','selectColsIng','isInsideElement','length','Backspace','enable','rgba(0,0,0,0.1)','LOADING_ICON_SVG','resizeRowChange','expandItem','applySingleColumnSort','getDragCellHeader','cacheTextKey','maxWidth','readOnly','marginRight','cancel','value','display','updateCount','htLeft','every','events','toHsl','clearSort','observer','sort','reduce','hsl','metaKey','isEmpty','disableHoverIconClick','contents','b22222','horizontalAlign','drawX','isVerticalVisible','solid','selectionChange','not-allowed','dda0dd','statusSummary','checkbox-check','setSelectionByRowKeys','drawHoverImageWidth','image/svg+xml','setExpandChildren','renderType','drawHoverImageHeight','getCustomHeader','calculatedHeightCells','isReadable','handleLeave','SORT_ICON_COLOR','ffb6c1','updateType','mergeStartMap','dragDisabled','filter','drawSelection','color','break-all','toHexString','drawTextY','rgb(255,229,144)','87ceeb','getSelection','handleDblclick','getWidthByColIndexColSpan','max','handleBodyEvent','calculateMaxTreeDepth','rgb','sortDescIconName','icon','ENABLE_SELECTOR_ALL_COLS','hasScrollbar','clearSelectedData','replaceChildren','drawImage','createSubmenu','overflowTooltipPlacement','drawDragTip','overlayerAutoHeightMap','-tooltip-content','appendChild','rowKeyRowIndexMap','hidden','compatMode','#F56C6C','#fafafa','eventTable','arerMapsEqual','clientLeft','preventDefault','getChangedData','sortState','isBlob','#fff','row','CHECKBOX_CHECK_SVG','drawLine','setRowSelection','paste','006400','updateStyle','reference','getRowForRowIndex','background','clickCell','setItemValueByEditor','once','drawTextHeight','moveFocus','Loaded','getScale','getTree','headerVerticalAlign','getColumns','e-virt-table-menu-arrow','wheel','resizeDiff','getTime','getVirtualBodyCell','container','bufferData','正在解析\x20Excel\x20工作簿,请耐心等待...','800000','_ok','_originalInput','autofillData','Assignment\x20failed,\x20not\x20a\x20numeric\x20type','toRgb','12px\x20Arial','drawSelectionImageHeight','只允许输入数字','createContainer','addColorStop','ff0','getColumnByColIndex','getOffset','currentCell','tree-selection','hideLoading','\x20is\x20required','lineHeight','index-selection','Source\x20node\x20not\x20found','_format','update','contextMenuElement','getRowDataItemForRowKey','setAutofill','menuData','splitPoints','fillRect','dashed','drawSortImageHeight','ENABLE_SELECTOR_SINGLE','getPositionForRowIndex','fixed','_cleanup','autofillMove','type','grabbing','break-word','clearEditableData','floor','getRowSelectable','removeMenuItem','32cd32','isFocus','countEl','isMouseDown','touchstart','dragingCell','initResizeColumn','getSpanInfo','faf0e6','alignmentAxis','FOOTER_FIXED','AAlarge','distance','drawTextX','EXPAND_ICON_SVG','keydown','trackX','drawY','scrollToColIndex','finding','getDrawX','renderHeaderType','offsetWidth','SELECTOR_AREA_MAX_Y','xArr','getReadonly','initTextEditor','getValue','getHeightByRowIndexRowSpan','0000cd','fromRatio','#d7dbe0','clearSelected','timerY','editing','setItemValue','relative','ArrowDown','BEFORE_COPY_METHOD','doDraw','isResizing','isPointer','visibleDistance','#e1e6eb','navigateNext','originalDataMap','forwardState','none','4682b4','COLUMNS_ALIGN','12px\x20normal\x20Arial','editor','isCut','yArrCopy','verticalScrollbar','4454136jwOOJo','drawTreeImageWidth','bold\x2012px\x20','div','_roundA','currentIndex','transparent','autoSize','overflows','block',':modal','hoverRow','CSS1Compat','scrollToCurrentResult','deltaX','top','initial','verticalAlign','HEIGHT','selector','Insert','vertical','setAttribute','rowKeyMap','10yTcnxG','yArr','Tab','isHorizontalVisible','height:','offsetLeft','getMaxRowHeightItem','string','leafCellHeaders','PLACEHOLDER_COLOR','timestamp','allCellHeaders','maxY','destroy','blur','createElement','__s','horizontalScrollbar','checkbox-uncheck','setCustomHeaderResizableData','getSelectionRows','%,\x20','clientY','getExpandRowKeys','childrenKey','e-virt-table-finder-bar-count','borderRight','Failed\x20to\x20load\x20image:','setScroll','stringify','name','selection-tree','prevBtn','touchmove','onMouseDown','small','FINDER_CELL_BG_COLOR','--evt-','strokeStyle','ceil','createImageFromSVG','item','cellHeaderHoverChange','column','binarySearch','RESIZE_COLUMN_LINE_COLOR','FOOTER_POSITION','onMouseMove','setRowSelectionByCheckboxKey','timerX','getItemValueForRowIndexAndColIndex','loadingEl','drawRect','2f4f4f','sheetLoadingText','visibleHeight','left','left-start','drawSelectionImageX','e-virt-table-main-menu','activeSubmenus','bottom','table-wrapper','borderTop','localeCompare','drawCellSkyBgColor','offsetY','row-resize','end','mousemove','onScrollY','init','find','vite-plugin-css-injected-by-js','pattern','data:image/svg+xml;charset=utf-8,','border','isRTL','ffffe0','getDimensions','rowHasChildren','KeyA','loading-copy','rects','createLinearGradient','error','ffa500','abs','drawTextWidth','hideSiblingSubmenus','[data-menu],\x20[data-submenu]','6557408kOFSZY','readonly','focusCellHeader','_height','drawContainer','colspan','#202124','target','root','ENABLE_MERGE_CELL_LINK','save','maxColIndex','drawFixedShadow','colIndexKeyMap','top-end','inputEl','clearEditor','onClick','displayText','drawTreeImageHeight','292Arbrwz','large','ERROR_TIP_ICON_SIZE','onlyMergeCell','rowspan','e-virt-table-menu-item','cellCache','PageDown','#F1F2F4','onScrollX','getAttribute','DISABLED','arrowEl','clientTop','setCustomHeader','setSelectorCell','hex4','6b8e23','contextMenuIng','Left','selectRowsIng','default','hex3','setAlpha','min','static','measureText','getChangedRows','clipboard','floatingEl','join','ENABLE_EDIT_SINGLE_CLICK','textBaseline','colIndex','totalCols','calculateTextHeight','round','replace','expandMap','drawSelectionImageY','drawShadow','__index','updateContainer','cellFooterHoverChange','mutationObserver','style','updateCssVar','toggleAllSelection','parentElement','sortDataRecursive','adjustBoundaryPosition','containerElement','CHECKBOX_COLOR','overflowTooltipHeaderShow','getText','detectOverflow','c0c0c0','ERR_SET_NUMBER_VALUE','isFinite','batchSetItemValueByEditor','resizeRow','drawCellBgColor','onTouchstart','ENABLE_DRAG_COLUMN','updateScroll','currentDOMTreeMenu','clientHeight','rgba(82,146,247,0.1)','right','setBatchCalculatedRowHeight','attributeName','expandLoading','data-overlayer','CHECKBOX_INDETERMINATE_SVG','oldValue','querySelector','assign','scrollLeft','contentEl','Escape','placement','onScroll','test','handleFooterEvent','scrollXTo','resizeColumn','9370db','drawSortIcon','desaturate','rows','tooltip','px\x20','tailIndex','validationErrorMap','startAdjustPosition','renderCellHeaders','cellClick','serializeToString','onTouchmove','createTextNode','changedDataMap','handleMousemove','drawFixed','addEventListener','required','overlayer','fixedDisabled','End','message','KeyF','isInSettingRange','get','toString','-overlayer-footer','CELL_WIDTH','middle','d8bfd8','domSelectionStr','maxLineClamp','innerText','source',':root{--evt-header-font:\x2012px\x20normal\x20Arial;--evt-body-font:\x2012px\x20normal\x20Arial;--evt-color-white:\x20#fff;--evt-color-black:\x20#000000;--evt-color-primary:\x20rgb(82,\x20146,\x20247);--evt-text-color-primary:\x20#333;--evt-text-color-regular:\x20#666;--evt-text-color-secondary:\x20#999;--evt-box-shadow:\x200\x202px\x2012px\x200\x20#0000001a;--evt-editor-bg-color:\x20#fff;--evt-editor-text-color:\x20#333;--evt-border-color:\x20#e1e6eb;--evt-body-bg-color:\x20#fff;--evt-stripe-color:\x20#fafafa;--evt-placeholder-color:\x20#cdd0dc;--evt-header-bg-color:\x20#f8faff;--evt-header-text-color:\x20#1d2129;--evt-body-text-color:\x20#4e5969;--evt-footer-text-color:\x20#4e5969;--evt-loading-icon-color:\x20#4e5969;--evt-expand-icon-color:\x20#4e5969;--evt-shrink-icon-color:\x20#4e5969;--evt-error-tip-icon-color:\x20red;--evt-required-color:\x20#f56c6c;--evt-cell-hover-icon-bg-color:\x20#fff;--evt-cell-hover-icon-border-color:\x20#dde0ea;--evt-scroller-color:\x20#dee0e3;--evt-scroller-track-color:\x20#fff;--evt-scroller-focus-color:\x20#bbbec4;--evt-select-border-color:\x20var(--evt-color-primary);--evt-select-area-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-select-row-col-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-autofill-point-border-color:\x20#fff;--evt-edit-bg-color:\x20#fcf6ed;--evt-checkbox-color:\x20var(--evt-color-primary);--evt-checkbox-uncheck-color:\x20#dde0ea;--evt-checkbox-disabled-color:\x20#f1f2f4;--evt-checkbox-check-disabled-color:\x20#dde0ea;--evt-icon-edit-color:\x20#4e5969;--evt-icon-select-color:\x20#4e5969;--evt-readonly-color:\x20#fff;--evt-readonly-text-color:\x20var(--evt-body-text-color);--evt-error-tip-color:\x20#ed3f14;--evt-footer-bg-color:\x20#fafafa;--evt-highlight-hover-row-color:\x20rgba(186,\x20203,\x20231,\x20.1);--evt-highlight-selected-row-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-tooltip-bg-color:\x20#303133;--evt-tooltip-text-color:\x20#fff;--evt-resize-row-line-color:\x20#e1e6eb;--evt-resize-column-text-color:\x20#fff;--evt-resize-column-text-bg-color:\x20var(--evt-color-primary);--evt-resize-column-line-color:\x20#e1e6eb;--evt-tree-line-color:\x20#e1e6eb;--evt-sort-icon-color:\x20var(--evt-color-primary);--evt-drag-tip-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-drag-tip-line-color:\x20var(--evt-color-primary);--evt-context-menu-min-width:\x20150px;--evt-context-menu-max-width:\x20220px;--evt-context-menu-item-padding:\x208px\x2012px;--evt-context-menu-bg-color:\x20#fff;--evt-context-menu-text-color:\x20#333;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#f5f5f5;--evt-context-menu-text-size:\x2013px}.dark{--evt-border-color:\x20#363637;--evt-header-bg-color:\x20#141414;--evt-body-bg-color:\x20#141414;--evt-header-text-color:\x20#a3a6ad;--evt-body-text-color:\x20#cfd3dc;--evt-readonly-text-color:\x20#cfd3dc;--evt-footer-text-color:\x20#cfd3dc;--evt-scroller-color:\x20#414243;--evt-scroller-track-color:\x20#141414;--evt-scroller-focus-color:\x20#a3a6ad;--evt-edit-bg-color:\x20#141414;--evt-footer-bg-color:\x20#262727;--evt-autofill-point-border-color:\x20#fff;--evt-editor-bg-color:\x20#434343;--evt-editor-text-color:\x20#cfd3dc;--evt-context-menu-bg-color:\x20#141414;--evt-context-menu-text-color:\x20#cfd3dc;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#414243}.e-virt-table-container{position:relative;outline:none}.e-virt-table-stage{position:relative;overflow:hidden;outline:none;box-sizing:border-box;z-index:10;border-radius:8px;border:1px\x20solid\x20var(--evt-border-color)}.e-virt-table-canvas{position:absolute;left:0;top:0;box-sizing:border-box;background-color:var(--evt-body-bg-color);border:none;outline:none;z-index:10}.e-virt-table-editor{position:absolute;top:-10000px;left:-10000px;text-align:left;height:auto;line-height:0;z-index:100;overflow:hidden;background-color:var(--evt-editor-bg-color);border:2px\x20solid\x20var(--evt-color-primary);box-sizing:border-box;box-shadow:var(--evt-box-shadow);display:flex;align-items:center}.e-virt-table-overlayer{position:absolute;left:0;top:0;overflow:hidden;z-index:100;pointer-events:none}.e-virt-table-editor-textarea{width:100%;box-sizing:border-box;outline:none;font-weight:400;padding:8px;font-size:12px;color:inherit;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;line-height:1.5;margin:0;border:none;vertical-align:middle;background:var(--evt-editor-bg-color);color:var(--evt-editor-text-color);overflow-y:auto;resize:none}.e-virt-table-context-menu{position:absolute;font-size:14px;color:var(--evt-text-color-regular);background-color:var(--evt-color-white);border-radius:4px;border:1px\x20solid\x20#e4e7ed;box-shadow:var(--evt-box-shadow);width:fit-content;padding:6px\x200;z-index:9999;left:-99999px;top:-99999px}.e-virt-table-context-menu-item{cursor:pointer;padding:6px\x2024px;color:var(--evt-text-color-regular)}.e-virt-table-context-menu-item:hover{color:var(--evt-color-primary);background-color:#f5f7fa}.e-virt-table-loading{display:none;position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%;z-index:2000;background-color:#fff6;display:flex;align-items:center;justify-content:center}.e-virt-table-loading-spinner{opacity:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.e-virt-table-loading-spinner\x20svg{color:var(--evt-text-color-regular);animation:rotate\x201s\x20linear\x20infinite}@keyframes\x20rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.e-virt-table-loading-text{margin:0;font-size:12px;color:var(--evt-text-color-regular)}.e-virt-table-main-menu,.e-virt-table-submenu{position:absolute;background:var(--evt-context-menu-bg-color);border-radius:4px;box-shadow:0\x202px\x208px\x20#0000001a;min-width:var(--evt-context-menu-min-width);max-width:var(--evt-context-menu-max-width);color:var(--evt-text-color-primary)}.e-virt-table-main-menu{border:1px\x20solid\x20var(--evt-border-color);z-index:3000;left:-99999px;top:-99999px;display:none;position:fixed;background-color:var(--evt-body-bg-color)}.e-virt-table-submenu{border:1px\x20solid\x20var(--evt-border-color);z-index:1000;max-height:350px;overflow-y:auto;opacity:0;visibility:hidden;transform:translate(-10px);transition:opacity\x20.2s,visibility\x20.2s,transform\x20.2s;-ms-overflow-style:none;scrollbar-width:none}.e-virt-table-submenu::-webkit-scrollbar{display:none}.e-virt-table-submenu.show{opacity:1;visibility:visible;transform:translate(0)}.e-virt-table-submenu:not(.show){transition:none}.e-virt-table-menu-item,.e-virt-table-submenu-item{position:relative;-webkit-user-select:none;user-select:none;padding:var(--evt-context-menu-item-padding);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background\x20.2s,color\x20.2s;color:var(--evt-context-menu-text-color);font-size:var(--evt-context-menu-text-size)}.e-virt-table-menu-item:last-child,.e-virt-table-submenu-item:last-child{border-bottom:none}.e-virt-table-menu-item:has(.e-virt-table-menu-item-icon){padding-left:8px}.e-virt-table-menu-item-content{display:flex;align-items:center;flex:1;min-width:0}.e-virt-table-menu-item-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;flex-shrink:0}.e-virt-table-menu-item-icon\x20svg{width:100%;height:100%;fill:currentColor}.e-virt-table-menu-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.e-virt-table-menu-arrow{display:inline-flex;align-items:center;justify-content:center;color:var(--evt-text-color-regular);transition:color\x20.2s}.e-virt-table-menu-arrow\x20svg{width:20px;height:20px;fill:currentColor}.e-virt-table-submenu-item:hover,.e-virt-table-menu-item:hover,.e-virt-table-menu-item.active{background:var(--evt-context-menu-item-hover-bg-color);color:var(--evt-context-menu-item-hover-text-color)}.e-virt-table-menu-item.disabled,.e-virt-table-submenu-item.disabled{cursor:not-allowed}.e-virt-table-finder-bar{position:absolute;top:8px;right:16px;display:none;z-index:10000;background:#fff;border:1px\x20solid\x20#dadce0;border-radius:12px;box-shadow:0\x202px\x206px\x20#0003;padding:0\x208px;height:48px;min-width:250px;align-items:center;font-size:12px}.e-virt-table-finder-bar.show{display:flex}.e-virt-table-finder-bar-input-wrapper{display:flex;align-items:center;flex:1;padding:0\x208px;position:relative}.e-virt-table-finder-bar-input{border:none;outline:none;flex:1;font-size:12px;background:transparent;color:#333;min-width:150px;padding-left:0;position:relative}.e-virt-table-finder-bar-nav{display:flex;flex-direction:row;gap:8px;margin:0\x208px;align-items:center}.e-virt-table-finder-bar-nav-btn{border:none;background:transparent;cursor:pointer;padding:0;color:#666;border-radius:50%;display:flex;align-items:center;justify-content:center}.e-virt-table-finder-bar-nav-btn\x20svg{width:24px;height:24px}.e-virt-table-finder-bar-nav-btn.prev-btn{transform:rotate(-90deg)}.e-virt-table-finder-bar-nav-btn.next-btn{transform:rotate(90deg)}.e-virt-table-finder-bar-nav-btn.close-btn{font-size:24px;color:#666;line-height:1;width:24px;height:24px}.e-virt-table-finder-bar-nav-btn:hover{color:#666;background-color:#f0f0f0}.e-virt-table-finder-bar-count{color:#666;font-size:12px;margin:0\x208px;white-space:nowrap;flex-shrink:0}.e-virt-table-finder-bar-count.no-results{color:#999}.e-virt-table-finder-bar-loading{display:none;position:absolute;left:8px;top:0;width:16px;height:16px;flex-shrink:0;pointer-events:none;z-index:0}.e-virt-table-finder-bar-loading.show{display:block}.e-virt-table-finder-bar-loading\x20svg{width:100%;height:100%;color:#666;animation:rotate\x201s\x20linear\x20infinite}.e-virt-table-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:14px;color:#666;z-index:15}','includes','focusInput','getData','9svIbAo','getItemValue','alignmentOffset','position','button','floating','paint','ctrlKey','clear','transform','outsideMousedown','isArray','bold','catch','border-box','altKey','children','startRow','hasEvent','lineWidth','selectionchange','7302rIqIDI','clearTreeSelectionRecursive','emptyEl','rowResizing','leave','delete','arrow','stageElement','number','isHasChanged','icons','rgb(82,146,247)','fff','isDark','SHRINK_ICON_COLOR','resizeTarget','554958YotcwO','loadFooterData','headIndex','px;','innerHTML','260600HOVcmi','overflowTooltipMaxWidth','cellHideTooltip','selectAll','getContainer','setFocusCell','historyIndex','_applyModification','horizontal','resetHeader','1283385SNMYAk','clearSelection','set','editorType','setExpandRowKeys','footer','isBusy','operation','menu-item-no-icon','itemRowKeyMap','rowExpand','xArrCopy','drawHoverImageY','contextElement','EDIT_BG_COLOR','off','renderFooterType','totalRows','checkbox-indeterminate','focusCell','maxRowIndex','cellFocusChange','endsWith','validateChangedData','isTarget','noFixedCells','Node','hsva(','viewport','absolute','bold\x20','dragTarget','getColumnByKey','emit','rowType','rowHeight','NUMBER_ERROR_TIP','filterColumns','hide','selection','center','contextMenuEl','scrollTo','body','RESIZE_COLUMN_MIN_WIDTH','getHeader','resizeNum','ERROR_TIP_ICON_COLOR','Failed\x20to\x20get\x20the\x20clipboard\x20content:','formatterFooter','#5f6368','createDocumentFragment','rules','updateHoverIcon','resizeObserver','ENABLE_SELECTOR_SPAN_COL','scroll','contextMenuClearSelected','matches','CUSTOM_BODY_CONTEXT_MENU','database','history','pre-wrap','cursor','updateSelection','Target\x20node\x20not\x20found','dragStart','SHRINK_ICON_SVG','relationColKeys','ENABLE_RESIZE_COLUMN_TEXT','setCustomHeaderHideData','class','7fff00','ellipsis','scrollX','width','setConfig','align','ENABLE_KEYBOARD','drawCenter',')[,|\x5cs]+(','borderLeft','positions','Right','level','ENABLE_RESIZE_ROW','backgroundColor','setCursor','cellTarget','autoRowHeight','getLeafKeys','dragCellDiff','isCustom','event','barY','clearTextCache','getTreeParent','resetCustomHeader','top-start','visibleColumns','isDragging','onMouseUp','splice','enter','no-results','BEFORE_SET_SELECTOR_METHOD','copy','header','TREE_SELECT_MODE','canvas','adjustMergeCells','some','cleanupSubmenuRecursively','cellHeaderContextMenuClick','TOOLTIP_BG_COLOR','eventTasks','drawTreeImageX','visibleWidth','#DDE0EA','toUpperCase','getDrawY','querySelectorAll','0ff','current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API','function','eventBrowser','selectTreeSelectionRecursive','cellHeaderMouseup','clearDomSelection','positionMenu','e6e6fa','shrinkToFit','[\x5cs|\x5c(]+(','paddingTop','getComputedStyle','visible_','mergeCoveredMap','contextMenu','ctx','resetEditorStyle','headerAlign','clearValidationError','clearSelector','map','minY','wrapText','fontSize','mainAxis','closeBtn','-5px','Style','21SFoUnx','data','colWidths','height','(?:','visibleRows','stageHeight','hasTree','renderFooter','getTreeChildren','getAutoHeight','drawSelectionImageWidth','clientX','slice','getBoundingClientRect','searchData','0px','barHeight','borderBottom','parseFromString','7fffd4','barWidth','isAutofillIng','crosshair','drawSelectionImageSource','adjustPositionX','expand','key','CELL_LINE_HEIGHT','visibleLeafColumns','restore','editorProps','apply','selectable','disconnect','hideSubmenu','fixedLeft','random'];a=function(){return mO;};return a();}function $c(o,p){p=p===0x0?0x0:p||0xa;var r=M(o)['toHsl']();return r['s']-=p/0x64,r['s']=_i(r['s']),M(r);}function ih(o,p){p=p===0x0?0x0:p||0xa;var r=M(o)['toHsl']();return r['s']+=p/0x64,r['s']=_i(r['s']),M(r);}function th(o){const lM=bB;return M(o)[lM(0x2fc)](0x64);}function lh(o,p){p=p===0x0?0x0:p||0xa;var r=M(o)['toHsl']();return r['l']+=p/0x64,r['l']=_i(r['l']),M(r);}function sh(o,p){const lN=bB;p=p===0x0?0x0:p||0xa;var r=M(o)['toRgb']();return r['r']=Math['max'](0x0,Math['min'](0xff,r['r']-Math['round'](0xff*-(p/0x64)))),r['g']=Math['max'](0x0,Math[lN(0x2bc)](0xff,r['g']-Math['round'](0xff*-(p/0x64)))),r['b']=Math['max'](0x0,Math['min'](0xff,r['b']-Math['round'](0xff*-(p/0x64)))),M(r);}function ch(o,p){p=p===0x0?0x0:p||0xa;var r=M(o)['toHsl']();return r['l']-=p/0x64,r['l']=_i(r['l']),M(r);}function hh(o,p){var r=M(o)['toHsl'](),s=(r['h']+p)%0x168;return r['h']=s<0x0?0x168+s:s,M(r);}function eh(o){var p=M(o)['toHsl']();return p['h']=(p['h']+0xb4)%0x168,M(p);}function Gl(o,p){const lO=bB;if(isNaN(p)||p<=0x0)throw new Error('Argument\x20to\x20polyad\x20must\x20be\x20a\x20positive\x20number');for(var r=M(o)[lO(0x153)](),u=[M(o)],w=0x168/p,x=0x1;x<p;x++)u['push'](M({'h':(r['h']+x*w)%0x168,'s':r['s'],'l':r['l']}));return u;}function dh(o){var p=M(o)['toHsl'](),r=p['h'];return[M(o),M({'h':(r+0x48)%0x168,'s':p['s'],'l':p['l']}),M({'h':(r+0xd8)%0x168,'s':p['s'],'l':p['l']})];}function mh(o,p,r){const lP=bB;p=p||0x6,r=r||0x1e;var u=M(o)[lP(0x153)](),w=0x168/r,x=[M(o)];for(u['h']=(u['h']-(w*p>>0x1)+0x2d0)%0x168;--p;)u['h']=(u['h']+w)%0x168,x['push'](M(u));return x;}function Zh(o,p){p=p||0x6;for(var r=M(o)['toHsv'](),u=r['h'],w=r['s'],x=r['v'],y=[],z=0x1/p;p--;)y['push'](M({'h':u,'s':w,'v':x})),x=(x+z)%0x1;return y;}M['mix']=function(o,p,r){r=r===0x0?0x0:r||0x32;var u=M(o)['toRgb'](),w=M(p)['toRgb'](),x=r/0x64,y={'r':(w['r']-u['r'])*x+u['r'],'g':(w['g']-u['g'])*x+u['g'],'b':(w['b']-u['b'])*x+u['b'],'a':(w['a']-u['a'])*x+u['a']};return M(y);},M['readability']=function(o,p){var r=M(o),s=M(p);return(Math['max'](r['getLuminance'](),s['getLuminance']())+0.05)/(Math['min'](r['getLuminance'](),s['getLuminance']())+0.05);},M['isReadable']=function(o,p,r){const lQ=bB;var u=M['readability'](o,p),w,x;switch(x=!0x1,w=Yh(r),w['level']+w['size']){case'AAsmall':case'AAAlarge':x=u>=4.5;break;case lQ(0x1f1):x=u>=0x3;break;case'AAAsmall':x=u>=0x7;break;}return x;},M['mostReadable']=function(o,p,r){const lR=bB;var u=null,w=0x0,x,y,z,C;r=r||{},y=r['includeFallbackColors'],z=r['level'],C=r['size'];for(var D=0x0;D<p[lR(0x13f)];D++)x=M['readability'](o,p[D]),x>w&&(w=x,u=M(p[D]));return M[lR(0x16f)](o,u,{'level':z,'size':C})||!y?u:(r['includeFallbackColors']=!0x1,M['mostReadable'](o,['#fff','#000'],r));};var pt=M['names']={'aliceblue':'f0f8ff','antiquewhite':'faebd7','aqua':bB(0x3cf),'aquamarine':bB(0x400),'azure':'f0ffff','beige':'f5f5dc','bisque':'ffe4c4','black':'000','blanchedalmond':'ffebcd','blue':'00f','blueviolet':'8a2be2','brown':'a52a2a','burlywood':'deb887','burntsienna':'ea7e5d','cadetblue':'5f9ea0','chartreuse':bB(0x39d),'chocolate':'d2691e','coral':'ff7f50','cornflowerblue':'6495ed','cornsilk':'fff8dc','crimson':'dc143c','cyan':'0ff','darkblue':'00008b','darkcyan':bB(0x115),'darkgoldenrod':'b8860b','darkgray':'a9a9a9','darkgreen':bB(0x1a4),'darkgrey':'a9a9a9','darkkhaki':'bdb76b','darkmagenta':'8b008b','darkolivegreen':'556b2f','darkorange':'ff8c00','darkorchid':'9932cc','darkred':'8b0000','darksalmon':'e9967a','darkseagreen':'8fbc8f','darkslateblue':'483d8b','darkslategray':bB(0x26a),'darkslategrey':'2f4f4f','darkturquoise':'00ced1','darkviolet':'9400d3','deeppink':'ff1493','deepskyblue':'00bfff','dimgray':'696969','dimgrey':'696969','dodgerblue':'1e90ff','firebrick':bB(0x15d),'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':bB(0x3d7),'lavenderblush':'fff0f5','lawngreen':'7cfc00','lemonchiffon':'fffacd','lightblue':'add8e6','lightcoral':'f08080','lightcyan':'e0ffff','lightgoldenrodyellow':'fafad2','lightgray':'d3d3d3','lightgreen':'90ee90','lightgrey':'d3d3d3','lightpink':bB(0x172),'lightsalmon':'ffa07a','lightseagreen':'20b2aa','lightskyblue':'87cefa','lightslategray':'789','lightslategrey':'789','lightsteelblue':'b0c4de','lightyellow':bB(0x283),'lime':'0f0','limegreen':bB(0x1e6),'linen':bB(0x1ee),'magenta':'f0f','maroon':bB(0x1bb),'mediumaquamarine':'66cdaa','mediumblue':bB(0x203),'mediumorchid':'ba55d3','mediumpurple':bB(0x2fa),'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':bB(0x2b5),'orange':bB(0x28b),'orangered':'ff4500','orchid':'da70d6','palegoldenrod':'eee8aa','palegreen':'98fb98','paleturquoise':'afeeee','palevioletred':'db7093','papayawhip':'ffefd5','peachpuff':bB(0x422),'peru':'cd853f','pink':'ffc0cb','plum':bB(0x164),'powderblue':'b0e0e6','purple':'800080','rebeccapurple':'663399','red':'f00','rosybrown':'bc8f8f','royalblue':bB(0x433),'saddlebrown':'8b4513','salmon':'fa8072','sandybrown':'f4a460','seagreen':'2e8b57','seashell':'fff5ee','sienna':'a0522d','silver':bB(0x2dc),'skyblue':bB(0x17d),'slateblue':'6a5acd','slategray':'708090','slategrey':bB(0x123),'snow':bB(0x419),'springgreen':'00ff7f','steelblue':bB(0x216),'tan':'d2b48c','teal':'008080','thistle':bB(0x318),'tomato':'ff6347','turquoise':'40e0d0','violet':'ee82ee','wheat':'f5deb3','white':bB(0x342),'whitesmoke':'f5f5f5','yellow':bB(0x1c6),'yellowgreen':'9acd32'},Ih=M['hexNames']=oh(pt);function oh(o){var p={};for(var r in o)o['hasOwnProperty'](r)&&(p[o[r]]=r);return p;}function $l(o){return o=parseFloat(o),(isNaN(o)||o<0x0||o>0x1)&&(o=0x1),o;}function U(o,p){nh(o)&&(o='100%');var r=bh(o);return o=Math['min'](p,Math['max'](0x0,parseFloat(o))),r&&(o=parseInt(o*p,0xa)/0x64),Math['abs'](o-p)<0.000001?0x1:o%p/parseFloat(p);}function _i(o){return Math['min'](0x1,Math['max'](0x0,o));}function P(o){return parseInt(o,0x10);}function nh(o){return typeof o=='string'&&o['indexOf']('.')!=-0x1&&parseFloat(o)===0x1;}function bh(o){return typeof o=='string'&&o['indexOf']('%')!=-0x1;}function v(o){return o['length']==0x1?'0'+o:''+o;}function pi(o){return o<=0x1&&(o=o*0x64+'%'),o;}function is(o){return Math['round'](parseFloat(o)*0xff)['toString'](0x10);}function Ll(o){return P(o)/0xff;}var Q=(function(){const lS=bB;var o='[-\x5c+]?\x5cd+%?',p='[-\x5c+]?\x5cd*\x5c.\x5cd+%?',r=lS(0x3f0)+p+')|(?:'+o+')',u=lS(0x3d9)+r+lS(0x3a5)+r+')[,|\x5cs]+('+r+')\x5cs*\x5c)?',w='[\x5cs|\x5c(]+('+r+lS(0x3a5)+r+')[,|\x5cs]+('+r+')[,|\x5cs]+('+r+')\x5cs*\x5c)?';return{'CSS_UNIT':new RegExp(r),'rgb':new RegExp('rgb'+u),'rgba':new RegExp('rgba'+w),'hsl':new RegExp(lS(0x158)+u),'hsla':new RegExp('hsla'+w),'hsv':new RegExp('hsv'+u),'hsva':new RegExp('hsva'+w),'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 li(o){return!!Q['CSS_UNIT']['exec'](o);}function ah(o){const lT=bB;o=o['replace'](fc,'')[lT(0x2c9)](Qc,'')['toLowerCase']();var p=!0x1;if(pt[o])o=pt[o],p=!0x0;else{if(o==lT(0x223))return{'r':0x0,'g':0x0,'b':0x0,'a':0x0,'format':'name'};}var r;return(r=Q['rgb'][lT(0x41e)](o))?{'r':r[0x1],'g':r[0x2],'b':r[0x3]}:(r=Q['rgba']['exec'](o))?{'r':r[0x1],'g':r[0x2],'b':r[0x3],'a':r[0x4]}:(r=Q[lT(0x158)][lT(0x41e)](o))?{'h':r[0x1],'s':r[0x2],'l':r[0x3]}:(r=Q['hsla']['exec'](o))?{'h':r[0x1],'s':r[0x2],'l':r[0x3],'a':r[0x4]}:(r=Q['hsv']['exec'](o))?{'h':r[0x1],'s':r[0x2],'v':r[0x3]}:(r=Q['hsva']['exec'](o))?{'h':r[0x1],'s':r[0x2],'v':r[0x3],'a':r[0x4]}:(r=Q['hex8']['exec'](o))?{'r':P(r[0x1]),'g':P(r[0x2]),'b':P(r[0x3]),'a':Ll(r[0x4]),'format':p?lT(0x253):'hex8'}:(r=Q['hex6']['exec'](o))?{'r':P(r[0x1]),'g':P(r[0x2]),'b':P(r[0x3]),'format':p?'name':'hex'}:(r=Q['hex4']['exec'](o))?{'r':P(r[0x1]+''+r[0x1]),'g':P(r[0x2]+''+r[0x2]),'b':P(r[0x3]+''+r[0x3]),'a':Ll(r[0x4]+''+r[0x4]),'format':p?'name':'hex8'}:(r=Q[lT(0x2ba)]['exec'](o))?{'r':P(r[0x1]+''+r[0x1]),'g':P(r[0x2]+''+r[0x2]),'b':P(r[0x3]+''+r[0x3]),'format':p?'name':'hex'}:!0x1;}function Yh(o){const lU=bB;var p,r;return o=o||{'level':'AA','size':lU(0x258)},p=(o[lU(0x3a9)]||'AA')[lU(0x3cc)](),r=(o['size']||'small')['toLowerCase'](),p!=='AA'&&p!=='AAA'&&(p='AA'),r!=='small'&&r!==lU(0x2a5)&&(r='small'),{'level':p,'size':r};}const It=0x44,ri='Aptos,\x20Calibri,\x20\x22Segoe\x20UI\x22,\x20\x22PingFang\x20SC\x22,\x20\x22Microsoft\x20YaHei\x22,\x20sans-serif',Ki=0xb,xl=0x8,ts=0.1,Rt=0x2,ls=1.2,Wh=0x22,ss='#f3f3f3',cs=bB(0x387),yh=bB(0x205),Vl='#21a366',Sh='rgba(33,\x20163,\x20102,\x200.1)',Xh=0x1,ph='#000000',uh={'double':0x8,'solid':0x7,'dashed':0x5,'dotted':0x4},hs=bB(0x21f)+ri,zt=Ki+bB(0x2ff)+ri,Gh=0x20,rl={'backgroundColor':ss,'color':cs,'font':hs},Lh={'backgroundColor':'#f4f7f9','color':'#73808d','font':'italic\x20'+Ki+'px\x20'+ri};let ot;const Kl=new Map(),es=o=>o['map'](p=>({...p,...p['children']?.[bB(0x13f)]?{'children':es(p[bB(0x331)])}:{}})),xh=o=>{const lV=bB;if(typeof o['font']=='string'&&o['font']['trim']())return o['font'];if(!(o['fontFamily']!==void 0x0||o[lV(0x3e7)]!==void 0x0||o['fontWeight']!==void 0x0||o['fontStyle']!==void 0x0))return;const p=((()=>{const lW=lV,{fontWeight:r}=o;if(typeof r==lW(0x33e))return r>=0x258?lW(0x32d):'normal';if(typeof r=='string'){const u=r['trim']();return/^\d+$/['test'](u)?Number(u)>=0x258?'bold':'normal':u;}return'normal';})());return[o['fontStyle']||lV(0x119),p,(Number['parseInt'](o['fontSize'],0xa)||Ki)+'px',o['fontFamily']||ri][lV(0x2c2)]('\x20');},ds=o=>{const lX=bB;if(o){if(o[lX(0x31e)](lX(0x150)))return'left';if(o['includes']('htRight'))return'right';if(o['includes']('htCenter'))return'center';}},ms=o=>{if(o){if(o['includes']('htTop'))return'top';if(o['includes']('htBottom'))return'bottom';if(o['includes']('htMiddle'))return'middle';}},Tl=(o,p)=>!!o?.['split'](/\s+/)[bB(0x31e)](p),Vh=(o,p,r)=>typeof o==bB(0x33e)?o:o?.[p]??r,Ct=o=>{const p=Number(o?.['width']);return Number['isFinite'](p)&&p>0x0?p:0x0;},rh=o=>!!o&&!o['hide']&&Ct(o)>0x0,Kh=o=>o[bB(0x44f)]?.['columns']?.['length']?o['structure']['columns']:o['columns'],Th=o=>o['structure']?.[bB(0x3ee)]??o[bB(0x3ee)],Ml=(o,p,r)=>typeof o==bB(0x33e)?o:o?.[p]??r,ut=(o,p)=>typeof o=='number'&&Number['isFinite'](o)?o<=0x0?ts:Math['max'](Math['ceil'](o),xl):Math['max'](Math['ceil'](p),xl),Mh=o=>{if(o==null)return!0x1;const p=(''+o)['trim']();return p?!/^\d+([./:-]\d+)*$/['test'](p):!0x1;},Jh=o=>{const lY=bB,p=o['meta'],r=o['data']||[];if(!p||r['length']<0x2||(o['merge']||[])['length'])return 0x0;const u=r[0x0]||[],w=r[0x1]||[],x=u['filter'](z=>(''+(z??''))['trim']()!==''),y=w['filter'](z=>(''+(z??''))[lY(0x461)]()!=='');return x['length']<Math['min'](Math['max'](Math['floor'](p['totalCols']/0x2),0x3),0x6)||!x['every'](Mh)||y['length']<0x2?0x0:0x1;},Nh=o=>{const lZ=bB,p=Kh(o),r=Th(o),u=[{'key':Oc,'title':'','type':'index','fixed':lZ(0x26d),'width':It,'minWidth':It,'maxWidth':It,'widthFillDisable':!0x0,'headerAlign':'center','align':lZ(0x37d),'headerVerticalAlign':'middle','verticalAlign':lZ(0x317),'overflowTooltipShow':!0x1,'overflowTooltipHeaderShow':!0x1}],w=[];for(let x=0x0;x<(o['meta']?.['totalCols']||0x0);x+=0x1){const y=wt(x),z=p?.[x],C=Vh(r,x,o['defaults']['colWidth']),D=!!z?.['hidden']||C<=0x0,E=ms(z?.['className'])||'middle';w['push'](y),u['push']({'key':y,'title':z?.['title']||''+(x+0x1),'width':D?0x0:Math['max'](Math[lZ(0x25c)](C),0x1),'hide':D,'widthFillDisable':!0x0,'renderType':'both','headerAlign':'center','headerVerticalAlign':'middle','align':ds(z?.[lZ(0x474)])||'left','verticalAlign':E,'overflowTooltipShow':!0x0,'overflowTooltipHeaderShow':!0x0});}return{'columns':u,'dataKeys':w};},Jl=o=>es(o),Fh=o=>{const m0=bB;if(typeof o==m0(0x33e)&&Number['isFinite'](o))return Math[m0(0x181)](o,0x0);if(typeof o==m0(0x23c)){const p=Number[m0(0x414)](o);return Number[m0(0x2de)](p)?Math[m0(0x181)](p,0x0):0x0;}return 0x0;},wh=o=>{const m1=bB;if(typeof o!='string')return m1(0x161);const p=o[m1(0x461)]();switch(p){case'double':case m1(0x1d8):case'dotted':case'solid':return p;default:return'solid';}},Fi=(o,p)=>{const m2=bB,r=Fh(o[m2(0x281)+p+'Width']);if(r)return{'width':r,'style':wh(o[m2(0x281)+p+m2(0x3eb)]),'color':o['border'+p+'Color']||ph};},Gt=o=>o?!!(o[bB(0x274)]||o['borderRight']||o['borderBottom']||o['borderLeft']):!0x1,Zs=o=>o?!!(o['horizontalAlign']||o['verticalAlign']||o['wrapText']||o['shrinkToFit']):!0x1,Nl=(o,p)=>Zs(o)?!!(o?.['wrapText']||o?.['shrinkToFit']||o?.[bB(0x15e)]&&o[bB(0x15e)]!==(p?.['align']||'left')||o?.['verticalAlign']&&o['verticalAlign']!==(p?.[bB(0x22e)]||'middle')):!0x1,Rh=o=>{const m3=bB;switch(o){case m3(0x37d):return'center';case'right':return'flex-end';default:return'flex-start';}},zh=o=>{switch(o){case'top':return'flex-start';case'bottom':return'flex-end';default:return'center';}},Ch=(o,p,r,s)=>{const m4=bB;switch(o){case m4(0x2e8):return p-r;case m4(0x37d):return-Math['min'](s,Math[m4(0x181)]((r-p)/0x2,0x0));default:return 0x0;}},nt=o=>typeof o[bB(0x293)]=='number'&&o[bB(0x293)]<=ts,Lt=(o,p)=>{const r=o?.['key'];if(typeof r=='string'&&r['startsWith']('c')){const s=Number(r['slice'](0x1));if(Number['isInteger'](s)&&s>=0x0)return s;}return Math['max'](p-0x1,0x0);},wi=(o,p,r)=>si(o,Lt(r,p)+0x1),Is=(o,p)=>si(o,p+0x1),gt=o=>o==null?'':''+o,gh=o=>gt(o)[bB(0x461)]()!=='',Uh=o=>/^[+-]?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?%?$/['test'](o['trim']()),jh=(o,p)=>{const m5=bB,r=p+'\x0a'+o,u=Kl['get'](r);if(u!==void 0x0)return u;!ot&&typeof document<'u'&&(ot=document['createElement']('canvas'));const w=ot?.['getContext']('2d');if(!w)return o['length']*Ki;w['font']=p;const x=w[m5(0x2be)](o)['width']+Rt*0x2;return Kl['set'](r,x),x;},Eh=(o,p,r,u)=>{const m6=bB,w=o['columns'][u+0x1];if(!rh(w))return!0x1;const x=Is(r,u);return o['mergeStartMap'][m6(0x11f)](x)||o['mergeCoveredMap']['has'](x)?!0x1:!gh(p[wt(u)]);},Fl=(o,p,r,u,w)=>{let x=0x0;for(let y=0x1;y<=Gh;y+=0x1){const z=u+y*w;if(z<0x0||z>=o['totalCols']||!Eh(o,p,r,z))break;x+=Ct(o['columns'][z+0x1]);}return x;},wl=(p,r,u,w,x,z,C)=>{const m7=bB,D=gt(C);if(!D||z?.[m7(0x3e6)]||z?.[m7(0x3d8)]||Uh(D))return;const E=Is(u,w);if(p[m7(0x174)]['has'](E)||p['mergeCoveredMap']['has'](E))return;const F=Ct(x);if(!F)return;const G=z?.['font']||zt,J=Math[m7(0x25c)](jh(D,G));if(J<=F)return;const K=z?.[m7(0x15e)]||x?.['align']||m7(0x26d),L=K==='right'||K==='center'?Fl(p,r,u,w,-0x1):0x0,N=K!=='right'?Fl(p,r,u,w,0x1):0x0,O=F+L+N;if(O<=F)return;const R=Math['min'](J,O);return{'left':Ch(K,F,R,L),'width':R};},hi=o=>o?o['width']*0x64+(uh[o['style']]||0x1):0x0,kh=(p,r,u,w)=>{const m8=bB,x=p[m8(0x2aa)]['get'](si(r-0x1,u+0x1)),y=p['cellCache']['get'](si(r+0x1,u+0x1)),z=p['cellCache'][m8(0x313)](si(r,u)),C=p[m8(0x2aa)]['get'](si(r,u+0x2)),D=hi(w['borderTop'])>=hi(x?.[m8(0x3fe)])?w['borderTop']:void 0x0,E=hi(w['borderBottom'])>hi(y?.[m8(0x274)])?w[m8(0x3fe)]:void 0x0,F=hi(w['borderLeft'])>=hi(z?.['borderRight'])?w['borderLeft']:void 0x0,G=hi(w['borderRight'])>hi(C?.[m8(0x3a6)])?w[m8(0x24f)]:void 0x0;return{...w,'borderTop':D,'borderRight':G,'borderBottom':E,'borderLeft':F};},Ri=(o,p)=>{const m9=bB,r=document['createElement']('span'),s=p['width']/0x2;return Object['assign'](r['style'],{'position':'absolute','pointerEvents':'none','boxSizing':'border-box'}),o==='top'||o==='bottom'?(Object['assign'](r['style'],{'left':-s+'px','width':'calc(100%\x20+\x20'+p['width']+'px)','height':'0'}),r['style'][o]=-s+'px',r['style']['borderTop']=p[m9(0x3a0)]+m9(0x2ff)+p['style']+'\x20'+p['color']):(Object[m9(0x2f0)](r['style'],{'top':-s+'px','height':'calc(100%\x20+\x20'+p[m9(0x3a0)]+'px)','width':'0'}),r['style'][o]=-s+'px',r['style']['borderLeft']=p['width']+'px\x20'+p['style']+'\x20'+p['color']),r;},Oh=(o,p)=>{const ma=bB,r=document['createElement']('span');return r['textContent']=gt(o),Object['assign'](r['style'],{'position':'relative','zIndex':'1','width':'100%','height':'100%','boxSizing':'border-box','display':'flex','alignItems':zh(p['verticalAlign']),'justifyContent':Rh(p['horizontalAlign']),'padding':'0\x20'+Rt+'px','overflow':'hidden','textOverflow':p[ma(0x3e6)]?'clip':'ellipsis','whiteSpace':p['wrapText']?ma(0x393):'nowrap','wordBreak':p['wrapText']?ma(0x1e1):ma(0x119),'lineHeight':''+ls,'textAlign':p['horizontalAlign']||'left','color':p['color']||'inherit','font':p['font']||zt,'transform':p['shrinkToFit']?'scale(0.92)':'none','transformOrigin':(p[ma(0x15e)]||ma(0x26d))+'\x20center'}),r;},Dh=(o,p)=>{const mb=bB;p&&Object['assign'](o['style'],{'position':'absolute','left':p['left']+'px','top':'0','width':p[mb(0x3a0)]+'px','overflow':'hidden','textOverflow':'clip'});},Ph=(o,p,r,u,w)=>{const md=bB;o['replaceChildren'](),Object[md(0x2f0)](o[md(0x2d1)],{'pointerEvents':md(0x215),'overflow':'visible','background':'transparent'});const x=document[md(0x388)]();if(u){const y=Oh(r,p);Dh(y,w),x['appendChild'](y);}p['borderTop']&&x['appendChild'](Ri('top',p['borderTop'])),p['borderRight']&&x['appendChild'](Ri('right',p['borderRight'])),p['borderBottom']&&x['appendChild'](Ri(md(0x272),p['borderBottom'])),p[md(0x3a6)]&&x['appendChild'](Ri('left',p['borderLeft'])),o['appendChild'](x);},Hh=o=>{const me=bB;if(!o)return;const p=o[me(0x2d1)]||{},r={};p['backgroundColor']&&(r['backgroundColor']=p[me(0x3ab)]),p['color']?r['color']=p['color']:p['backgroundColor']&&M(p[me(0x3ab)])['isDark']()&&(r['color']='#ffffff');const u=xh(p);u?r['font']=u:p['backgroundColor']&&M(p['backgroundColor'])[me(0x343)]()&&(r[me(0x445)]=me(0x373)+Ki+'px\x20'+ri);const w=Fi(p,'Top');w&&(r['borderTop']=w);const x=Fi(p,me(0x3a8));x&&(r[me(0x24f)]=x);const y=Fi(p,'Bottom');y&&(r['borderBottom']=y);const z=Fi(p,me(0x2b7));z&&(r['borderLeft']=z);const C=ds(o['className']);C&&(r['horizontalAlign']=C);const D=ms(o['className']);if(D&&(r['verticalAlign']=D),Tl(o['className'],'htWrap')&&(r[me(0x3e6)]=!0x0),Tl(o['className'],'htShrink')&&(r['shrinkToFit']=!0x0),!(!r['backgroundColor']&&!r['color']&&!r['font']&&!Gt(r)&&!Zs(r)))return r;},bt=({hostHeight:o,sheetDefaults:p,virtualState:r})=>{const mk=bB,u=({rowIndex:z,colIndex:C,column:D})=>{if(C===0x0)return;const E=wi(z,C,D);if(r['mergeCoveredMap']['has'](E))return{'rowspan':0x0,'colspan':0x0};const F=r['mergeStartMap']['get'](E);if(F)return{'rowspan':F['rowspan'],'colspan':F['colspan']};},w=()=>rl,x=({row:z,rowIndex:C,colIndex:D,column:E})=>{const mf=b;if(D===0x0)return rl;const F=z;if(!nt(F))return Zt(F)!==di['Loaded']?Lh:r[mf(0x2aa)]['get'](wi(C,D,E));},y=({row:z,rowIndex:C,colIndex:D,column:E,value:F})=>{const mg=b,G=z;if(D===0x0||nt(G)||Zt(G)!==di[mg(0x1ae)])return;const J=wi(C,D,E);if(r[mg(0x3dd)]['has'](J))return;const K=r[mg(0x2aa)]['get'](J),L=Lt(E,D),N=wl(r,G,C,L,E,K,F),O=Nl(K,E)||!!N;if(!(!Gt(K)&&!O))return R=>{const mj=mg,T={...K||{},'horizontalAlign':K?.['horizontalAlign']||E?.['align'],'verticalAlign':K?.[mj(0x22e)]||E?.['verticalAlign']},V=Gt(K)?kh(r,C,L,T):T;Ph(R,V,F,O,N);};};return{'ROW_KEY':ql,'DISABLED':!0x0,'HEIGHT':Math['max'](o,0xf0),'MAX_HEIGHT':Math['max'](o,0xf0),'HEADER_HEIGHT':Wh,'CELL_HEIGHT':ut(p['rowHeight'],p['rowHeight']),'CELL_WIDTH':p['colWidth'],'CELL_PADDING':Rt,'CELL_LINE_HEIGHT':ls,'COLUMNS_VERTICAL_ALIGN':mk(0x317),'HEADER_FONT':hs,'BODY_FONT':zt,'BORDER_RADIUS':0x0,'BORDER_COLOR':yh,'HEADER_BG_COLOR':ss,'BODY_BG_COLOR':'#ffffff','HEADER_TEXT_COLOR':cs,'BODY_TEXT_COLOR':mk(0x296),'READONLY_COLOR':'#ffffff','READONLY_TEXT_COLOR':'#202124','EDIT_BG_COLOR':'#ffffff','PLACEHOLDER_COLOR':'#8a94a3','SCROLLER_COLOR':'#c1c7d0','SCROLLER_FOCUS_COLOR':'#9aa0a6','SELECT_ROW_COL_BG_COLOR':Sh,'SELECT_AREA_COLOR':'rgba(33,\x20163,\x20102,\x200.14)','SELECT_BORDER_COLOR':Vl,'AUTOFILL_POINT_BORDER_COLOR':Vl,'ENABLE_SELECTOR':!0x0,'ENABLE_SELECTOR_SINGLE':!0x1,'ENABLE_SELECTOR_SPAN_COL':!0x0,'ENABLE_SELECTOR_SPAN_ROW':!0x0,'ENABLE_SELECTOR_ALL_ROWS':!0x0,'ENABLE_SELECTOR_ALL_COLS':!0x0,'SELECTOR_AREA_MIN_X':Xh,'ENABLE_CONTEXT_MENU':!0x1,'ENABLE_HEADER_CONTEXT_MENU':!0x1,'ENABLE_AUTOFILL':!0x0,'ENABLE_AUTOFILL_SPAN_COL':!0x0,'ENABLE_AUTOFILL_SPAN_ROW':!0x0,'ENABLE_PASTER':!0x1,'ENABLE_HISTORY':!0x1,'ENABLE_RESIZE_COLUMN':!0x1,'ENABLE_RESIZE_ROW':!0x1,'ENABLE_KEYBOARD':!0x0,'ENABLE_COPY':!0x0,'BEFORE_AUTOFILL_DATA_METHOD':()=>[],'SPAN_METHOD':u,'HEADER_CELL_STYLE_METHOD':w,'BODY_CELL_STYLE_METHOD':x,'BODY_CELL_RENDER_METHOD':y,'BODY_CELL_FORMATTER_METHOD':({row:z,rowIndex:C,colIndex:D,column:E,value:F})=>{if(nt(z))return'';if(D===0x0){const L=C+0x1-r['indexOffset'];return L>0x0?''+L:'';}if(Zt(z)!==di['Loaded'])return'';const G=z,J=r['cellCache']['get'](wi(C,D,E)),K=wl(r,G,C,Lt(E,D),E,J,F);return Nl(J,E)||K||F==null?'':''+F;}};},fh=e({'__name':'XlsxTable','props':{'data':null},'setup'(r){const mn=bB,C=r,F=c(null),K=c([]),a0=c(0x0),a1=c(''),a2=c(0x0),a3=c(0x0),a4=c({...Xt}),a5=c(!0x0),a6=c(!0x1),a7=c(0x0),a8=c(0x0),a9=g(()=>K['value']['find'](aZ=>aZ['id']===a0['value'])),aa=g(()=>{const mm=b,aZ=K['value']['filter'](b0=>!b0['hidden']);return aZ['length']?aZ:K[mm(0x14d)];}),ab=g(()=>!a1[mn(0x14d)]&&!a6['value']&&(ak[mn(0x14d)]||a5[mn(0x14d)])),ad=g(()=>!ab[mn(0x14d)]&&!a1['value']&&a6['value']&&a8[mn(0x14d)]>0x0),ae=g(()=>K['value'][mn(0x13f)]?a9['value']?.['name']?'正在准备「'+a9['value']['name']+'」...':'正在准备工作表内容...':mn(0x1ba)),af=g(()=>a2['value']?'已缓存\x20'+Math['min'](a7['value']*$,a2['value'])['toLocaleString']()+'\x20/\x20'+a2['value'][mn(0x45b)]()+'\x20行':''),ag=g(()=>{const mo=mn,aZ=a2['value']||a9[mo(0x14d)]?.['rowCount']||0x0,b0=a3[mo(0x14d)]||a9['value']?.['colCount']||0x0;return aZ?b0?'共\x20'+aZ+'\x20行,'+b0+'\x20列,按视口预取平滑加载':'共\x20'+aZ+'\x20行,按视口预取平滑加载':'';}),aj=()=>kc['create'](),{loading:ak,worker:am,onWorkerEvent:an}=ps(aj);let ao=mt();const ap=new Map();let aq=null,ar=null,au=0x0,av=0x0,aw={'start':0x0,'end':0x0},ax=0x1,ay=0x0,az=0x0;const aA=()=>a0['value']??K['value'][0x0]?.['id'],aB=()=>F['value']?.[mn(0x2e6)]||0x0,aC=()=>{const mp=mn;a7['value']=ao['loadedWindows']['size'],a8[mp(0x14d)]=ao['loadingWindows']['size'];},aD=()=>({'config':bt({'hostHeight':aB(),'sheetDefaults':a4['value'],'virtualState':ao}),'columns':Jl(ao['columns'])}),aE=()=>{aw={'start':0x0,'end':0x0},ax=0x1,ay=0x0;},aF=()=>{aq&&(av&&cancelAnimationFrame(av),av=requestAnimationFrame(()=>{if(av=0x0,!aq||!ao['active']||!ao['totalRows'])return;const aZ=Math['max'](aq['ctx']['body']['headIndex']||0x0,0x0),b0=Math['max'](aq['ctx']['body']['tailIndex']||aZ,aZ),b1=aq['ctx']['scrollY']||0x0;ax=b1>=ay?0x1:-0x1,ay=b1,aw={'start':aZ,'end':b0},aK(aZ,b0);}));},aG=()=>(aq||!F['value']||(aq=new jc(F['value'],{'data':[],'columns':[],'config':bt({'hostHeight':aB(),'sheetDefaults':a4['value'],'virtualState':ao})}),aq['on'](mn(0x27b),aF),aq['on']('resize',aF)),aq),aH=(aZ,b0=ao[mn(0x46d)],b1=ao['rows'],b2=!0x1)=>{const mq=mn,b3={'config':bt({'hostHeight':aB(),'sheetDefaults':a4['value'],'virtualState':ao}),'columns':Jl(b0)};if(aZ[mq(0x460)](b3[mq(0x465)]),aZ['loadColumns'](b3['columns']),aZ['loadData'](b1),aZ['draw'](),b2){requestAnimationFrame(()=>{const mr=mq;aZ[mr(0x37f)](0x0,0x0),aZ['draw'](),aF();});return;}aF();},aI=()=>{const aZ=aG();if(!aZ)return;const {config:b0,columns:b1}=aD();aZ['loadConfig'](b0),ao['active']&&b1['length']&&aZ['loadColumns'](b1),aZ['doLayout'](),aZ['draw'](),aF();},aJ=(aZ=0x0,b0=!0x0)=>{const mu=mn,b1=aA();if(b1===void 0x0)return;const b2=Pi(aZ,ao['totalRows']);ao['loadedWindows'][mu(0x11f)](b2)||ao['loadingWindows']['has'](b2)||(ao['loadingWindows']['add'](b2),aC(),ao['active']&&(yl(ao[mu(0x2fd)],ao['totalRows'],b2,di['Loading']),aq?.[mu(0x45a)]()),a1['value']='',am['emit']('parseSheet',{'sheet':b1,'startRow':b2,'pageSize':$,'sessionId':az}),b0&&(ak['value']=!0x1));},aK=(aZ,b0)=>{const mv=mn;!ao['active']||!ao['totalRows']||Hc({'startRow':aZ,'endRow':b0,'direction':ax,'totalRows':ao['totalRows']})[mv(0x446)](b1=>aJ(b1,!0x0));},aL=aZ=>{const mw=mn,b0=aZ['meta'];if(!b0)return;const {columns:b1,dataKeys:b2}=Nh(aZ);ao={...mt(),'active':!0x0,'totalRows':b0['totalRows'],'totalCols':b0['totalCols'],'indexOffset':Jh(aZ),'defaults':aZ['defaults'],'dataKeys':b2,'rows':Dc(b0[mw(0x366)]),'columns':b1},a4['value']=aZ['defaults'],a2['value']=b0['totalRows'],a3['value']=b0['totalCols'],aC(),k(()=>{const mx=mw,b3=aG();b3&&aH(b3,b1,ao[mx(0x2fd)],!0x0);});},aM=aZ=>{ao['dataKeys']['forEach'](b0=>{delete aZ[b0];});},aN=aZ=>{const my=mn;Array[my(0x32c)](aZ)&&aZ['forEach']((b0,b1)=>{const mz=my;if(b0===void 0x0)return;const b2=ao[mz(0x2fd)][b1];if(!b2)return;const b3=ut(b0,ao['defaults'][mz(0x378)]);b2['_height']=b3,ao['rowHeightCache']['set'](b1,b3);});},aO=aZ=>{const mA=mn,b0=aZ['meta'];if(!b0)return;const b1=[],b2=Math['min'](b0['endRow'],ao['totalRows']);for(let b3=b0[mA(0x332)];b3<b2;b3+=0x1){const b4=ao['rows'][b3],b5=b3-b0['startRow'];if(!b4)continue;aM(b4),(aZ[mA(0x3ed)]?.[b5]||[])['forEach']((b8,b9)=>{b8===''||b8===null||b8===void 0x0||(b4[wt(b9)]=b8);});const b6=Ml(aZ['rowHeights'],b5,ao['defaults']['rowHeight']),b7=ut(Ml(aZ['structure']?.['rowHeights'],b3,b6),ao['defaults']['rowHeight']);b4[mA(0x293)]=b7,b4[Ai]=di['Loaded'],ao['rowHeightCache']['set'](b3,b7),b1['push'](b3);}ao['windowRows']['set'](b0['startRow'],b1);},aP=aZ=>{const b0=aZ['meta'];if(!b0)return;const b1=[];Object['entries'](aZ['cell']||{})['forEach'](([b2,b3])=>{const [b4,b5]=b2['split']('-')['map'](Number),b6=si(b0['startRow']+b4,b5+0x1),b7=Hh(b3);b7&&(ao['cellCache']['set'](b6,b7),b1['push'](b6));}),ao['windowCells']['set'](b0['startRow'],b1);},aQ=aZ=>{const mB=mn;ao['mergeStartMap'][mB(0x329)](),ao['mergeCoveredMap'][mB(0x329)](),aZ['forEach'](b0=>{const mC=mB,b1=si(b0[mC(0x19f)],b0['col']+0x1);ao['mergeStartMap']['set'](b1,{...b0,'col':b0['col']+0x1});for(let b2=0x0;b2<b0['rowspan'];b2+=0x1)for(let b3=0x0;b3<b0['colspan'];b3+=0x1){if(b2===0x0&&b3===0x0)continue;const b4=si(b0['row']+b2,b0['col']+b3+0x1);ao['mergeCoveredMap']['set'](b4,!0x0);}});},aR=aZ=>{const mD=mn,b0=aZ['structure'],b1=b0?.['merge'];if(b1)aQ(b1);else{const b2=aZ['meta'];b2&&!ao[mD(0x174)]['size']&&aQ((aZ['merge']||[])['map'](b3=>({...b3,'row':b3['row']+b2[mD(0x332)]})));}aN(b0?.['rowHeights']);},aS=aZ=>{const mE=mn,b0=aZ['meta'];if(!b0)return;ao['active']||aL(aZ),aR(aZ),aO(aZ),aP(aZ),ao['loadedWindows']['add'](b0['startRow']),ao['loadingWindows']['delete'](b0['startRow']),aC(),a6['value']=!0x0;const b1=aA();b1!==void 0x0&&ap['set'](b1,ao),aq?.['draw'](),ak['value']=!0x1,a5[mE(0x14d)]=!0x1;const b2=aw['start']||b0['startRow'],b3=Math['max'](aw['end'],b0['endRow']-0x1,b0[mE(0x332)]);aK(b2,b3);},aT=()=>{const mF=mn;a1[mF(0x14d)]='',a2['value']=0x0,a3['value']=0x0,a4['value']={...Xt},ao=mt(),a6['value']=!0x1,aE(),aC(),aq&&(aq['loadColumns']([]),aq['loadData']([]),aq['scrollTo'](0x0,0x0),aq['draw']());},aU=()=>{const aZ=aA();aZ===void 0x0||!ao['active']||ap['set'](aZ,ao);},aV=aZ=>{const mG=mn,b0=ap['get'](aZ);return b0?(b0['loadingWindows'][mG(0x329)](),ao=b0,a1['value']='',a2['value']=b0[mG(0x366)],a3['value']=b0[mG(0x2c6)],a4['value']=b0['defaults'],a6['value']=b0['loadedWindows'][mG(0x416)]>0x0,a5['value']=!a6[mG(0x14d)],aC(),k(()=>{const b1=aG();b1&&aH(b1,b0['columns'],b0['rows']);}),!0x0):!0x1;},aW=()=>{const mH=mn,aZ=aA();if(aZ===void 0x0){ak[mH(0x14d)]=!0x1,a5[mH(0x14d)]=!0x1;return;}if(az+=0x1,aV(aZ)){ak['value']=!0x1;return;}a5['value']=!0x0,aT(),aJ(0x0,!0x1);},aX=aZ=>{a0['value']!==aZ&&(aU(),a0['value']=aZ,aW());},aY=()=>{const mI=mn;am[mI(0x376)]('parseWorkbook',{'workbook':C['data']});};return an('sheets',({sheets:aZ})=>{const mJ=mn;K['value']=aZ;const b0=aZ[mJ(0x27d)](b1=>!b1['hidden'])||aZ[0x0];if(b0){a0['value']=b0['id'],aW();return;}a5['value']=!0x1,ak[mJ(0x14d)]=!0x1;}),an('parseSheet',({sessionId:aZ,sheet:b0,sheetData:b1})=>{aZ!==az||b0!==aA()||aS(b1);}),an('parseError',({sessionId:aZ,startRow:b0,message:b1})=>{const mK=mn;aZ&&aZ!==az||(a5['value']=!0x1,ak['value']=!0x1,typeof b0=='number'?(ao['loadingWindows'][mK(0x33b)](b0),aC(),ao[mK(0x41a)]&&(yl(ao['rows'],ao['totalRows'],b0,di['Placeholder']),aq?.['draw']())):(ao['loadingWindows'][mK(0x329)](),aC()),a1['value']=b1||'Excel\x20解析失败');}),h(()=>C['data'],()=>{const mL=mn;az+=0x1,K[mL(0x14d)]=[],a0['value']=0x0,ap['clear'](),a5['value']=!0x0,aT(),aY();}),i(()=>{const mM=mn;aG(),F['value']&&(ar=new ResizeObserver(()=>{au&&cancelAnimationFrame(au),au=requestAnimationFrame(()=>{au=0x0,aI();});}),ar['observe'](F[mM(0x14d)])),aY();}),j(()=>{au&&cancelAnimationFrame(au),av&&cancelAnimationFrame(av),ar?.['disconnect'](),ar=null,aq?.['destroy'](),aq=null;}),{'__sfc':!0x0,'props':C,'tableHost':F,'sheets':K,'sheetIndex':a0,'errorMessage':a1,'totalRows':a2,'totalCols':a3,'sheetDefaults':a4,'sheetInitializing':a5,'hasInitialWindow':a6,'loadedWindowCount':a7,'loadingWindowCount':a8,'activeSheet':a9,'sheetTabs':aa,'showBlockingLoading':ab,'showStreamingLoading':ad,'sheetLoadingText':ae,'cachedSummary':af,'statusSummary':ag,'compositeWorkerFactory':aj,'loading':ak,'worker':am,'onWorkerEvent':an,'virtualState':ao,'sheetStateCache':ap,'table':aq,'resizeObserver':ar,'resizeFrame':au,'scrollFrame':av,'viewportRange':aw,'scrollDirection':ax,'lastScrollY':ay,'sheetSessionId':az,'getActiveSheetId':aA,'getHostHeight':aB,'syncWindowStats':aC,'buildTableView':aD,'resetViewportTracking':aE,'scheduleViewportLoad':aF,'ensureTable':aG,'renderTable':aH,'syncTableLayout':aI,'requestWindow':aJ,'ensureViewportWindows':aK,'initializeVirtualSheet':aL,'clearVirtualRow':aM,'applyStructureRowHeights':aN,'applyWindowRows':aO,'applyWindowCells':aP,'setSheetMerges':aQ,'applySheetStructure':aR,'applyVirtualWindow':aS,'resetViewState':aT,'cacheCurrentSheetState':aU,'restoreCachedSheetState':aV,'startSheetSession':aW,'handleSheet':aX,'emitParseWorkbook':aY};}}),Qh='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAC9FBMVEUAAAABAQEODw8AAAAAAAAAAAAzMzMBAQEAAAABAQFycnIAAAD9/f0mJiYAAAD9/f2EhITS0tIbf0qBgYHOzs6Kiorl5eVpgHRXWVgLDQz7+/v39/dDmWoObzoQfEIqi1YVf0Ukh1Ha2tofhE2lpaVebGTt7e15eXnh4eHX19cZgUmYmJg8Pj1VVVWoqKiEhIQObznGxsaxsbEng1C1tbXMzMy+vr7CwsLR0dHFxcVmZmampqa2trY/cFVTU1PZ2dnW1tYAAgDm5ubY2Ng/lmcObzo/lmcNbzo+lmYOcDo2kV////8QfEH9/f3+/v77+/v4+Pgri1YRfUIsjFjy8vIdg0v6+vopilXw8PAniVMTfkTt7e0liFIXgEfo6Ogbgkr3+PcVf0UfhU3q6uohhk/29vYZgUj19fX09PQjh1Dm5ubs7Ozk5OTv7+/e3t7i4uIho2YUSixbz5owuHkfmWAYXDdNtYT4+/nb29vc3NwjhlDg4ODW1tYtjFnQ0NDU1NTY2NjU1tUOcTsQekDIyclEmWvKysrHx8cxjlsXfUNAlmi/wL9OtYUAeDdFiFtYn3Y7l2YTbzsAbTQzdUpQvYVVzpcBoWEAQhkht3VHblVGYU8AViozuHpJqnZJoXHMzMwAl1tjuo4jmmFGtIEeXTn1+fbExMS7u7sAejoThk1FnGxs0qEogUwAfT5Nk2jBwcEyilc6hFQAeS0uiFQBgEMrhVAObjm0tLQAdiZCjmAbf0YigEkAfDOpqany9vRHjmIdiFEChEcWfEK4uLg/ilsAbwHO39Vt0qIAdBxzqIc8h1cOdT03kV8AchC/1Meurq6kw7ADk1jo8eygoKCXl5dgtozt9PC3z8APg0ni7OaxsrFr0aDc6eGNtZwjll7W5NysyLaevalEsX9poH6Aq5BUmXAdXDiTuaGGspfG2c0gckBLqnYAZx8AZAZo0Z9edmY9aE09XEgLfkJhroFhkXF61KdxvJZlwY88sH0BtXFXi2gATxf6D1MSAAAAS3RSTlMACQYNExgZHSQpVTD3Njb2O/wOPfwr9w0LEPb28fHx8fHx+/FxF/VD9vzxWy4RiUz91JhUrPLIspTmOMvjJGLlvEbSzbGxiorOzuSptM5HAAA3i0lEQVR42uycy04aURzGC0JvK0mxxXRn6C22Nppae9G0SdetLIiZhISYEILhuoVgABMDCx7CHSxZ+gC+RZ+m58rHOWeOA1bAtOc7MAzD0NjMr9/3P/859Z6Tk5OTk5OT020pHL53lxQO37Ef6J9W+K5K/GSOhv9U7Lo/oyPhQJiPwom1O6uDg/sPotH1lYlr/uxZwmFwu7n/4vXTJeu1rzY2vhH9+PH9+97ep09byc3VtYPoisTAUXBrDrv2NJPNzV1Z8vBRkT+EymPV+As9SL5ZKmXLzfqb2O723qed5OpBJMwoSDgG/h6ARHjtaS67EBXtKkO1sZpMVaKGULNWztbqbwgHW5trUQaBM4K/u/4hALAATUFATREHQCJQr28Q1euNZrl6trv9IbkaIX8HZwR/B0Bo7WkpuwT5IECeEFxAUkARIOrUO503b047jerp7sedzQdhwoBD4KbXP/RuhQDAQzrLttiRR7PihUicIT7C53Krfw/nkuGb/nxQkcC3IgACGAJEp6ftWKzdqbc+f9h8SBhwNnAzAFYoAJncQkQBstkBHVK+CIyDAASctWOteKvdiX/eeR9xNnBTANYBwMKkg8DeX1cUGggIAtqtVjx+0WoPPiYfOgRucv1X1iNrLzMlrhzZgXAsWDgNB7CXK7HBxPdFQGjxABvgiaCUhRoCHSLmAa3WxcX5eau7v/XWBcHsAKyvR1ZfVkoLEQfBKp/iUHEBoxZgBLRjlIBur9cVCDgCZgfAyyxAJcjCgW2SQAlQGWgQyRgQBJz3Rr3efjJ6z+XAbADcj84bACBABnnAD0xj8EcAPtBkDIxdAIUAJWDQHwy+vg+5HJgFgIgEoEIGfTEG2wQP/Tx5INgOYAqYP2KmyKVNClALCBMQBIz6g6udh84EplN4DEC6Mmd5GQ8oWInI2BJhwgXUIKiDgJYgYDjYfxxOuEpgBgCevEx785XkIOPRDX1YXcGOgGwTwQUEAjwG+GSAEtC/3Iq6GJglAuYMgAmCJAAZgSpBnTPqFQEDoIzGAGpBWgh0z2khMByOvr69lwg5AgIBCAkHOPEWrYomxQfQP2DSbIBJ5IBOgIyB0f77sCNgNgDS8x7XXn+PuwE3AUgnICsJqCkmYBYC/d9JR8D0ABTSCxAQMKV6AeQzO5ycEmgEnLFCgBIwGg6vtkKOgLsFwITL2BDIGHGAgpCMAAJOxx5AC4Hh1oqbDEwJQD69cFmcwDNNABTABCaDoNpUJwNxTgCJgZ31RCLkCJgOgJP5DjMP7G5QQS8JBMAEMCGACagEsBTo968GHyIhR8AUAFSOT25XaW2P8DVTdWAUBIgC5AAQQFOIVoIxRkCPEHDZ3Yu6QmDBANhVgBsYAEg/MCoCVIPIgZxiAigEpAfEeB1ACWg7AqYBwDsunJxoD2UX78ULhMP8Hd/iGzhfXHxrKPAy0bABeEDJtytQo5oggAIgU2B42dh74AgIBiBVWIT0mLDFQVoPAzSIDAbQE+D3B2U/IN5lbeGrYfnjQ0fAnQDAqBMmCk+tHtDCIGMDQCsF4QGtcUfoclB0BAQBsPo8lfdVIR+kwpSfEADyCg0KEAHzxIqHIEA5iJ4AhQClYKczcXuYhECsuP0o/MwREADA/BUQCBYvgA1I+caAJKBhEHDZb5S33zoClghAgW0CEPCdHAABBYCSMR+UMYAUEATQEIg1yp+/OAKuBeAof3xz5ac5h51kt4QT0GDLATCAFNBbApMp0BIEDIfNuiMgGIB5K09kEgD5x4G4fSAI8ER/UK8GJQCcANkPEIUgsYDyRm33lSNgOQDAJnyiQQGg4BMFRltAiwEhWEATFiAJGA5rtXpt970j4BoAUsdSKSKyPfYRPY4dCPvmoZTcpCQF7MH9gM8MJjCQLUPCAdkUcNfAhgAAwDIRVgeAgMHosl1s1pu7m44AKwCHqflKUGWiYkaCZX4IBtAXAgJFLk6ANhkkFtAvlpuNatwRsDwA4Cp2AHwnBzoAcAG5klwFgBIgJ4PizuBgcNXJUgJijoAlAWBPFbUmsF9/dIgNC9CXjCIEYAG9bLFcazRiSUfAEgAAA+Q5RgFI5PMgYcwAeXIWzHoQFpDRUwCFICfgrC0IaHIC2smQI2AWAI5SU+qIjBtIdQMyjPmhhoCU7AkoJoCOEBpCnIBhO0c+a5JgoAS4JSK+AByZAweDBlXwOaZ8E8GYF6T1UsAOADyALhOU3YD+IJflBNS3VhwBd8cBQAAACLAAvS3o2w/S5oLng2GtRAmoNeoNR4DNAZR/r4oDHOIYXnBcXPxD9UPttOsJSKEe0OcEZASGAJYKlkUdiI5grNUiFnCWyQoPaLiloiYAP4/mLcZGsMzJgcyBNDDQZwO4MYA6kKUAWyvOQmDQJWcJD6g6AhYKAHQYVBgcpybbxqgHaAqw56QN+LaF0QxAP4iFwCibkQRsND9EEm6JSDAAy7GAlFkNyOmgRAAA+FhAGRYgQoB2A7qjqpcDAW6p6DIAmGpqYLaIpAWgFgQB1gwQZQBmAoN2OiNToLrRdEtFVQB+HY51xJ9HZHAR65aHsCfe4Rg+wR/Bviw+YmIvKYUKf2n3ENEfRAhgpVgJKQACsEKM1YHx3gU5uQQP+OgIUAGYo4CWxRow7F6AO4XoB/jVAT7rgzo0BC56JU8hwC0VXTAAwg58Lr+lnaB0B7BmSK4UYfJbIzQZAg3ZDWjFB+W06gHbjxwBiwEABmBxAUtFgBiYTAGlDGC/wkoFoJhVLUDWgb1qwaMElMYEuKWiCwIAsmcAHMDMAAAAC+D/h6jiKRFAZVQB0gLOT088T/OA/36h4MIBCHYAgwBkgOoB44ZgRSFAbwgTcQv4Q97Z6zgNRFFYAiRKFLEVPACioaBD4g0sj1NYq0iRokhRtBabQJtoo9iRUCh4CDq2pKSi4gEo6Hga5tdnfuMJxc5i30ASktiLmI9zZ+49nhxHZWkTMHiraAtAViSIS4uIsXos9KqAREGWBPXugD0PFBDIkrCRBMQ0cKIIuFarwfdvBm4VVQA8YwDkxo2/wO87bojgu3gWyAtubnDXhaZjxF0MwiCCLKAtBev9cXoFDVAEDNwqqgGAwJiFB8477OF3gVMgvEnBygbwDJoSEADAloD6OFuyY0wCtsO2iuoA5H4JyGMlIPxuFEhBAYAE0PAQsLZngmgJ6BJwqL+s5lXlZIHNoAkIKgAkoDMw1OF3uxnoXBiq2rAnB6x9EoCrxlU58HgzFseZq8HNkM3CGgB+CYi68Tj5LrJAfAZwJcCnAGV0Djh82Y7ZoZwbXQOai+FaRYMKAN2OlYCOd/nd+bMAPYQE2AS4CgAJMPeN2G/mbDFZugTsB2sUBABsiPhQ5aQgRU74n9pX+HP2RP0m/AVxJw/Fh+QdzoPzdaQBjgF7LGT7sDAaxcslZgKV1RhUbaEFHVjLGCAJGO3o0dAALQvs6lcDJUAD4E6CYxGtLKImoMsAWkMgoHT2EUESMEzi9WFJVcSbBXa7gRoF7xoASzFw84TtI5IA6P1hCwBFgOMOEwAc9hQAg4CpImCza14/HKJN7M4BKBQB5zQO4FCGAtDwA6CXA62FwL4auwSwDzICNoM0CiZQAPnfv1sBQAAUABLQCQAIAAAlZ4gfCwIW7zgBLzdDNAomAIAzECcB5pqQ3cMvGGwJTAGAPQkYTdic0p0JtgQMzyh45wAI9c+7JgEgABoAApZzNwes7VkgWkKtPXS0FosKTxZYMQK2w7OKJpkEEvo7NrRJAEfAngYGZoHedUAzmkoAbAIWfB7QvBzerqIAgI4KISSnwe7YM/mL5AQv8j/JFxDEfUa019TR2mGmBpATKiBKAoWSANjG2cYiFQ1IAAqCXgI2GwaAgIlLiI+AoRkFNQDuKnLFlhsxZUK7NQQCOASBaYCQgPqaut9PEbChBAzLKJgAAJDgBgn3Gh0AVGfAAgAEmMYQDsCCXHYSMKxdRVMoAFKKp0oQXRQYAwDPtULoCaEYJAAo5CnmQQIGZRVNAoB89IcjAUECYgHALOAwYz2vTg0YklEwVQrISbBIlHdpABTAIWDtmwTAG8YA8BMw0QnYDMgomAaAnN5IrADknTnAd72o5gwyAVBnOk3AYIyCSQBg2T+kAeE2QTgHVNhWGrsJAwBsIbvjAIQJuFYENIOxiiYAABCEekWnZwEAQLlEjYKwDQByAACg0aEBzVCMgvdsGRi3EnDXAZVWEbYAoBEAgFeVQgTsPg6DgHQA5KGJgOsudABAMcDTEnDKwcgBzSzD2QwCqpaAmSTgcByEUTAhAOwusleQB3LAWCqAJMBIAT4JaBYZr0BHZYHDlyHsKQkAKAEMghAImfH4T7hk9pGBqaBtGCKuTcxQgCVM4tbOUTMWJgDy/GECpu1MsB6CVRQAiOHJMEyZO9h4EaxwcnCgeJLJD6hX1Qfw4MkGshVltItoCHOpcY25aAupwVvaXcEpZ6AFADvHba4zSZhHAwQCfAWpCBj13yioAZBpw6f+lOFODSJ/g6hP4xPidfUWjiWZOkw8B1sIOfCKBTlGyn3sFIc4ANAARsCVlgRY6P2AWbsO2EwzKTmuBnARmJgEjOpXfTcKKgCeZAiSRcS/fx44sQHvLBMW8jGwGlA9IZjE10wCnHIwAFB8uQSUtgbs6kPfjYIAIEVEl4pRItQJQEXYLAZgGmBdJSQACGsAO94kYLR7/ajXBCQF4LxeAS4zhQToAJhJwNsQ2K7ZzwxpwNJPQL+NgokBCFPQoQAFAAABavwnE8sZpBRgO+E/DhoQJuC6JaDpNQFpAQiPP1YDCFxfCgkAABUNZ8MAY/tQAUBIA+ZhAvpsFEwFABYQWXQOkAqAFKCPHAgQgUmAlIB3DIAya1egIQ2oPAT02CiYCgBgECoTdl1PgBzACbAtwk45UAIA5KAB3QT01yiYGoDwFMA3DSDYaQISMKehJMACwN4w5H2V0YjQgNIl4EE/CUgOABCIWgk6/hBIgD0LcAFYvb/KsmgNWBsE9NUomA4ATANCi4BTrUIAoAgAAI4EAIA5qDt3HtDTPSWTAhC/EkT4OoO+HDARG8iapYCbsaU77logSMCun0bBB8lTwMneYsAyljsAzB0A1gBgoQMQpwGlh4BeGgUfJFeAyPFHoB6IHEDDXgdMLAAYATdFpsW5a4FDHwl4kF4BkAKiEcg9SQCVADjEre+RAABhDXAvGQEB9df+2cTuAQBnSgAUwJ0GOgBMTQA+5Bkish7QcwLSA4BiUPz1g2Y5GPNASwLMvUMBAKJTAywCRp/6ZhRM3A4W9+chgA0sHQlov2TWBADTQFgXghqADpOPgP3HnhkF74UCkOzMtSAxe4KXAMAxCBsAvCOBKlQcATeMgGO/jIL3AQD4EKMJQGvYmQWUVg6YgoDVLEPEEeDWBPcXvTIK6qbQpOE2gGJmgkoCMGIgwM0Bq0WwEp3HEtCM9vs+GQUBAEkUOUq/JHqvQbMejOuEPC1BKMBsdZ15ApiFsoBDQI+MghoAebIg2tA6gYHxSIBxpYgnCZgtwdU08wayQAcBM0rAdje6GPXHKCgAePz0WZYnDG7+t4O/YncBveUgSIDvMiFIwGqS+SNCA6YtAZumvqh7YxO7JwAQNPlC31eDD1jmEBCgOgKuL6QFgPiHH6f0EVCZFaFtnwhQADwnxf8RHAKrL4hNQ9wdQ3Rr4KrUxjwsBuy8cvw9WUCsBSgB/TAKtgDQdJouvD+bjoJn8JEbIBlWErgqjZYQcsCqMhSAZf3L8bKU3yg8Yx+aricV25KyyLMsZxjMOVLm5uKCgH4YBQHA5ThdXOLRCM6BGTCFQbNBwJKPV8gatprzYS/m5XrByzr1/uLL8eOnr1+/ff58e3v78+d3Hj9vP3891s12Na2W46Kgp237AlMKCiOgoQT0wigoAXjxvGD/3sluJ4NTABZaGdAuGsUswE0CmAW8m1zRkb+hSbzZHQ6Huq5HdE1HIfhypBi0HFAM/vz6wePX98/H3c11uRyPr0qhJpwABs9F3QejYAvA5Xh+T2IpH+lfSKdABHKB/CXrgS4BrjeMt4PEThHqW+V3jALGAFOCj1QLGASUAoaB5OA3jR+3x+bdpFpWE3oioQGcgLf/v1HwL3vn9jJTFIbxGGdXNDlEKTkkh3IocsgFScqpmdiamtROMxnMrWkcyyku+AvMHZkLLuVCyJWaHKJE+RDCf+Fda717nv3utfaMzDDbzH4cvtworZ/ned611nzLADBl6bx9RwauUkn9RuI/MwoSAkYAy89CDzwCAEAAPiMUek4UDMwIfOCCcYJ7gMBQ8OYNUdCoFbz8cdME64aA//6iYACAd7g0OJUptekXSf2BvyoZDkjdEQgcAM9BOO6GtT8iVLcZ0FmQJQguGQgCCgwDGgKi4GmjWvAoR4IU2Py/XxQMAFhyJJ80BSAYBkgSASy/k4AyAPBgAZIATgJCgBjQNmAaQUNDACswaRBA8PDWuWKBSqROgRn/+zWxNgDl/CDl8ROQef1DfwUFcILY0QA9UJFSAgFGrqekqoyAsYFTphXOICkI7DzgSsBGcO3UUf+oJuDM7f+bgPHjFQBTly7JH0+EzGd76SuLKaAV7YbAARDg+C7yCAEQoBhAHyQpBAiCqBPcCo8H8IHa0WpNEXDt/74mRgTMnTCFAPASIcbAiNdffbEQAAFdQwAAcA3Ac2KyCpgkICENLpECIzAMwAfeZ0/UaT8gm2AC5szupJlKixdP2rJl+rRZfjF58kmVgnfkSJltwCRBdwJwLAiuAgtADCAHiADuAvCBM8yAHQZg4PW9U7Xz2ca9JBKweO2O7Tvn/7auJ1Vfnv349PxdWXdUdoGuBDAATgKKnAKCgBoToKQZgA1kzzTAgPABg8DtGafONG4l7qLg2u3zmzdvNn9fN5KrK6/Grn//efwIXAAE2ABYnxMBAEyAEgiowwOYAUSBtAGzUwQGgjrw9MyMxuVkXRRcu7N58+LwqNm8Ojb27LlX8hgBMgEnAQeYABwM258WlgRUQQAQUIomAf0IMcBzAdvA66fZ7AW6JpYUArZs5+W/OhS6eFUz0Hr14+MRTUBZEiBvEsSOAvAAIAAPwECoxAjwcQGPBVmCADsEzECAwO1GIzEErJ1/U6/+jVbrylCo1bqhGRhrPi97bAIgIKp98TWgYA5zLBOok9gFhA9wIWQjMBQQB2I2pDagEKCpMCkXBXc0zepfOX06lzs9BFL/iiuKgebVVy/z3QmABRACkoDYGGAEBATtKAAEQR7AB7QNGATuNxJxUXDHTb38p4di7aHcaY3Aq8+eJECEgD0L8reRxiaDfEoAVVDYAHwAY4HYI0IWKBtgBN48vJyAa2J6/Vv8fz83JGIfaN0gAuABggBxqzRMQHQUwBUxeICbAR4NTwKCMAXZsA2YLvD69bWBE7C2Scs/NAsvpRAgAt6WC4SAaYIIgd0gAB7g3g6AB8AEsDVMBCALrErQLobSBu4FCNwf8EXBLfOHef0VATQSfMwfVzvEIAAW0MkDcDlAFgEZBMwAq4Y8AAXcDNkG+B4JI/D6/aaBXhTcfvNqKzfUal0c+0r3NpkACgFYgCTggCBAFIECYkAiUAUDoIAwYMlSIGzAIKBM4MWmFQMgAAEw5OuvCHj1PF/g46GIBYQRCN0Qw7EAYgAmYCUBICBFIBC7BGBAI8BVYJAE7GzeGGL/5xS40Xrmq+NCEQJm+UmuWYAUQwAQAAPoA0wBOIhAwDbAjTDIgRfvB0bA2hFYfyLg6hhZgCKg3A4BdgCtAABBgLsKUgzoIEAhtCiAG9hWIGygYRC4TTlwfwAEcAMY+gBQao19oLXzmAAFgLAAx6aweGCWhcflQAAQgMBAaEJAJeA2MIMRMCbwdNPUcQPYEVo8fxQMQI0C3+oFUwRtC5CfF+tOABAABEWm4GgcBWBA3idkE6BTok2TM/+egLUXr+zPjYJaY8+9ChHAPRDbgSz7pjgI0IrsC0oEungBIMB1wrYN6CqgTOD2pgn//mRoR3MkDIAAePLyuE8eYFmA/R2EJAK4Ls5iAuACNgPSC6oseXqEQkg5oEyACBjA2eD2G7nR0JU7X4s+WQAGAZQAknUuwDlQcpoAkgCNUIwGkMMKhA0YBLgJ3P73N0R2jkQFJJ1+/OWYTxaAGrgPJcBOATQBBwLHtQqBKiTfdoMYCIAAPmemtgX0nsD7aeNX/tNRYM6uEakABMC3qh+yAAbA/d1DXAgwAbYNIBBsBiAnA5wE540JUAzc2/yPh8HZC3K5/SOh04/vVotFbQFEgCwBgaz7AbgnJh6ZDCQZ0AoQAATurQJGAC6gTIBi4MKmiXMy/zAEZo4SAPUiWkCoBECOIgAT4F0h2QdJYQQKgCCuHIIBIKC6AJlAVk0Dlzp+P8EUgF4AOGEB4M4ATgEgIF8YkwgoCLxCwEEFZuDDDFxGYCFAZVDFwOV7yzvUgBSAngCg7RqugaWSswWKJ8eZAPnSLBhAELAKwgziIQACCALKAWMCjcuNzVMz48alAPQfgEcEAFsAlwDMgZB8Yk6aAB8PkOw2wCCIWljBmIgjxBAE0Q8aqm2hxoWz6+bOjqsBKQC9AFA7dkzVQACADIAUD24TQBBEowAcRGsBM1CRDBiJLmDmARoH1OnA8tjdgBSAP1ZOA8AZgBIAB5AQuJqAOR+AC8jBEGZgGgEwkGkgGeAggAnQd6CasXpqJpMC0H8ATlaPcQbIFtjhseEDSiEAgokAMwEQgLgQRJzAr1ibBPiUSbsMkglkz63JxIRACkBvAFQJAD8A4HCcA+wRl4SMmAF2AbkxYHPASYBmWOHtQjsLjh2VJqC2BGZcWDpu5d8NAQAwIuvPAHAG5PMEAKYAVwIgBuQTM3xbCDZAP2wKUAcYgQADX2SBCAL+sKnqgrX1E2ZnUgD6DcA5A0BFXwzSpwGOKQBHgyCAFTYBEhNA6ugEJA8QVFjCBczNUn1SSATo04Hl41a6CEgB6AmAet04AEqACwDsCaIIsORMiJlAQuA5GAjtFKEOhKsAJkLlAbXVkxUAFgEpAH0AoGLGAN4IiHttgJdfICCembAYEC4ACoCAYy5QAOATxyBgWW2RsoAUgH4DoDOAHYAjAB3AIgAuAABkHyShE1qtMAoB+kClIGxAToTUBBbW3RaQAvDnevzoFAEQjAFogarzxyKAOmgHgYsACwEFgTw6QhQELuC3mwApIODE37UAALB//8GRkALgRN0eA5ABtjgEWBEAMBRgMMRYIH0AEmcGvEcoTYAHwqrTAlIAegPgBMYAAIDXhyzBAQQF6jNk7SQInKCEsSAfooBYkzYgs4AJAAImBogAYwEpAP0FoO4AYG8sAegAUQT2hcU+EK2EgEC6gNUHnSZw4ujqibYFpAD0CgDmwLADdHh6Dg4gEYAJiLmgRD9dDHjhueC4J9oATEB8G7qTyzNEwF8HYETWnwB40I4AC4COBMhvJiLOCSUC7dlQbg4AgrBEF5AIcA746+daFpAC0GsHqB7DRoB0gDgEsPRScAAQ4NggKjEEaASOsTAUA8W2CRzbunEunQqmAPQNgPMKgPBOEACg5Y97bpg7gA2C7AKYDNEGAmEssI6OnU2AEfBXZVamAPTTAWq6AxR9vhEAAJQ6TAPxj+M5GSDhc2UwAsjZByu+YIAIqGyjSVASkALQSwc4X1Md4KhfcQHQuQfghxAOCmMIcPuAFx4LwghEtgbrVANTAPoKQL1K9wJ1CZQAdEOggwWwJAG4OyIZCGTtETsJ8DZkIjUwBaB3AIo+IoAJwPLHCxYQYwJuBGwXKAOBfBcEClunTPhLGQAADh48NBI6CABwGmQBoNqgQ1h4iwA8YCoYQA5IBsITgRgJUAfDCFAGpAD0D4ATBoCKBQDUzQKAAIQUCG0Rh7qAhQDkhRGwZ8LyhrmLhQWkAPQNgLwFQHcESEDAQcBevGSrDwkYANhA5y4AAgIX8LZOmZsC0HcA/HgAEAG23A4ABNAF8NlieV4IBNwm4EkTIKkMSDIA+zsoSX8nOkDHCOi2H8AO4N4cDMUAEEAbjCBQcpqA50kXKJY2ZEQGJA2AOx30h6u1/04HHeqqHjoAq+PRkFl/tw64EYCYAfaAX+ydSajTQBjHUZ8bXgRBUE/igqDgVTyJHocmT7TVYsQSU2sRLyoWCh4FD4IXBQ8iLhRcqJSmBQWpFsQFRFRww31DvXgRt5uTpf6TZmaaZqmJ+m9eUh5JfDK/fvN9/5lJS2x70J0OFqkXNCe5AKy9wNcVEDBc+18R3HRtSADssQD4AB4ABheE8IX75cgEcn0EoCo0IUBRyIDAmQ3unL1yTnIBaLQ+kUKOI/ljvRHglvWPco6jAvnU8nNLMQCu0cDxAADwIwAyAdlGgL5c5qDlC7DnkzOWFlEENi6kfcCECTECECYAdA/VCFdPugFuvaH7hHBVO9RdGx0AJQEA4lwQL24yaBLAdIZcVSFnUQlqgq0yLQQdISBZAOQbzbskQ9jKkLuXG0Pf8LLwhs2hbygGQNAF+LCFxZaAudkvJwHCyeS2P4g5IzvG10ybk1wA8nr3GZEIUxLp7PebBiAB2N/h3+9ZV88HFADAjCB2EghLUCBZ4tjCNgKoBaECoyRkLixy5wIbZ88aixWA+aEAaLRuZQj3E3vHbwhAALhD+Pe7FSADEOcAOWskiPAk0Y0pMwxgVREnJ2AtJ8DUIXcuCPX1AxsXxtIHAIB8XgmhRvMRv8nkt611yhBaJ8Tp0eWGEkJ5OwIAgGKnU6oVaoXK8MJUwUqNq1KpU3Ko45D1jbZFyxFwRgHziGnENAbIKxINwIbqgftE4rXZy/pQbdaov+TRJJH7B7QNSgjlz/YDsP7bA6qTw+vBt4pkWwKVr59v3DjvR0/d+vx1vWUQmwiUMFK43T1OtCmzamqSAVAal58TiRtBn59pRHYrBIBA0i0A8IyQwvoHP95QnR5aPx5UJDsG1D4fCajPHbiDSAbMzZIdA4qrl40lGQDabNf5H9snZ/3fPq9cFQST6wHanx8BNpoR4MGbg3upDg6r0ycNAEwEajeO7AqkI0879iJzqIdAybWybMfyMWNAKLEA6N33NX7m/qrpu90azVd8kmrvu2uVAOIBsN4CYK8tCoJ/2QBQ0S4gBADjRTcBePAM3QOB7c4sMIEAKNQMEJSCFx777Lk3PBaBdBcg+ZcYgAIFAM0fCICMVDkfBIAjFgCYRQ5ZyYCTAGnFpHgBUMIKZgCrFPTbco3Ln0hGYAEoQSUGAATEDwCa3waAyg2AuarIbRFtJKsmLxpLNABr66jeWNX7Wp83kQQ3qTcSCkCYLqDfHDaORc9Igbx6+pRkRwCRGSD5LQX11ssIwgjkE4DTaNdRAnDEAmAcq0qLJgB08xBQWLxyzHCDEwxAXtt3n999fxDl7+gAPhCJbwGoQSwAcRXgjgAHD9L9qCMAVcGioGjPH+0xAARoj7Bz+RiSgOgBUMIIFbyg+a5WB0KWr64DQpFZAP6TQFrb/YEuwCYAM8cgJwIlVxmQxAggNAMyPkrBMkrAKC0A/zkAlXGg2+gBsAQEXAQYOykeMxgRoBxeG2AGMGv4DYMuPzTg8vASAGA0v0nAHwAAAgCOEWNjR1aMLRpLOABlgRmQIZ+aDfHVwhLwLq4OI0UYAWwGDo6uCzjfB0B/R4C5Q2TV1OQDIDIDiHSrrosu1uvvCOFbAHnxXxgeAGbzxw9Abtyj3wQAAwrA6mlTjOGARANQ1mEGMErBlu79V8LDI9aQANhpwOgAKAEAZhjomUTb5SXLJvfGg5ILQBlmALsUFF35WmgBlMPJPwBUowRAHhcRgOUE44tnjU2JEYByNMqrqOS8peA6VeFemL39kHvhwwNqfgQAIAaYx5EAUEMEYCDgDAUbl6cBgDLMAFYpeJH1QUboEFgA5VASA2C0+NCKCgBEAC8CzkmE49uXpgKAMswARi13qMX5JG9oHaoQvgUQMgEQA/CDTgcJNCEEAASfEEIByI3zZTNAd8XcQloHpgCAPMwA/6WgGJv3LmyiBuDbg5MPTgadEiZZANApYX06b/wM1OevNdleRsYRlhiTFXECUK5GJpgBDL07o7Ou0S9/5JeAdy82qlHJA0Cx0DG+N6YSRJnf4p5Soy9zT7dCoeaVPVeYbgNEAZhjADAhJgAiJKDdQj3nqedbLADK7e4T/iXddtg/TghATpYxKXwoSVKmFwOgAWuLWE+Zcz9WIIeDsycomhFgzqQUACA0A143vR9nDUGDbQFUQ0oIgP2FETYDkmRt9MeHMtZeKFkgo91zCAKy3fo4AIMinRISKwBadGpcREbvreiySv/5yuNLKAE9FsDFhhadyo+9ALBXhkiAgSc8SEAoibuMEI8XgtwRAG8KhhdsOUGJB0DJrr3PbdBHaFAAc0cAzBZFC61gAIAAMQJ+hEVEA9cO0Zfd8lZuYFNB1kxLCwCazjUDJFKhpWDf2fW3MuG6h01d+2MAoO3DI4AIwAfAPDrDP6gYLxiDAVNSAoCmN1HVear6pt6Py0v+yZdx8kgBwKJAEh4B5H4iDBxBwEwIrbe/f0dWT48TAC1S5VswAzx6h0ZFuOBbAFqUqvoAALIBIITuwqYCspkLQOw44H7gIN0gsnrG5NQAQLv1u8K6DmeWq4IS8FV0GWCwCNDrBkgk/YAsTget5rfeekVmL4sPgAVRAyA0A14bzQpUXnFPfNKlNeIoIoDMAUDyK9MK8EGAf3kBWBwnAFrUghnAyOxvb/7drkrrAv9pELfOoLOICoBrURpBPSFiGBKBgt5iEBJeAFamCQBVhxnAKAV19fdpd7in3TFOi1JMADqGF8w1g3PYe4R2rfgVNYbdhrDMFwuAsdQAoFWzG7hzvCtv63Zu1z6DQMGwAKpa3AAU1h86dzyQzn2pEMkUqXw/HFDfa35jgEzmzYoVADVq6U1k94zqTjXVrr8kEt8CUKMWA4D99+6dCKJ75wDA4Z9HA+nnYQAgJIC+l9IGgAozgFkK+oQkdgCO3zv14lQAnTjuAODosUA6KgYADhElQJo3M2UAKDADGGsF2/QMDaOArMkjihqxmACcu/diTwD1A7A7gAYBAH9IdgIwMSUAqLrADHje1I0A8EFgAZgB4K8HQPJTEcrxA6DGIK1dhxngKfHbNCdDAGBYAHH8TVrSAChIMIjFBJBYAVBjEXJ8lhuk6xdf8y2Ay23V0N8OQE3qtT0gYEtKIQCqfhNmgGe5sKqeRaHIsABM/e0AVCTZMVIoQoAgCUwPANUtMAO8q/0uIwB4LIDNVdXU3w9AxhAiAMYKEBZcAExIEwCo81iGcJcLx4ffAeAfAaBnCiMlBAeZNAPANwMy5PVHXgdwHQnAvwNARjbTAesh1C4MzN9myNx4AcjGo2rrQo1I7BCAANA/aahezcYjNcEAOL+o2jggMUgzAFn95l1eoOf9/tVNPRuT1G6SAZBdb+0IYGaJKQZA5ZsBfAtAzdpKOgDGfyIaAECA7KLAOKQagCzMAJ+iFgCuTjoAJDwAPMm9Q7ojQDbLNQM4FoCrA0g4ANF0AWKlHgB1m8JM93gWwGMN1yYfAPIfgIFqN5kFH9cCyEYvABDhcHCOmAQEHw5OEgDZONW+6DUDuKsGYkkAAEC0E0KIoTATQirkXwCgWmeYASO1AABAtFPCCAk5JcwAQPrrAfjF3rn8vhBFcdx/IKxEQmxsrCTWliIyv1KNiveoMB7xXIhHSUQXzKKEBUHsSCq5FcrImBGvqJSqiIVHQhDvVzxXbNyZaXvQnkunc5t5nG9+9fvJb2Za7mfu955zz72DJAMkpgBwANCi0N4Fn3uTb7XKhGMOQHZrRzIASQFIGowAAMGVhUMyg7/8qrmJgFcxHmMAjAvPU/+TApA0AgAAzl5DF4b4aj9YPsR/7E0p9wuUguUlgwcgK1kqJAPEKQA1K0cAAL40rH8BBS4TPohADWF6tAEQJgNggvjr3z1RpADwWh1A8KFU2xLcRofmlwzAhKxsqU4y4B96bBpqVrLkATAdW1LoF4WmH7T+iD0AvEww0gD80fztb/0KrEEyAKpkLfm6G/YBQncDKG9V5Uo+ACAAIABFHgCjBg8DEKUBVZmSBABOgPsiALgMEwxAZAI1yQRkAwwD8SIX2GiOegBPS3J/VgfjjxgtL1XlCQBAEkGDV0IAMGqwC4DYBEyZXUBXAFZ4qeD0ptm9Smlrk28lAwCj8uK/Z4NrhqZKEwAAk0E/Tu/xpdPf2wRs+nb0/dFOvXde8DP8DQ7gE0r/DcBwmQCoMpVd2PlIeDwZdHaJikgGAOlZp82iH5XM0wDA0QM+dfS/AVCiC4BmNLqlgbEd5SV2AV0B2FO0rl69qvcqq7QHAHh/YL0vHXjPp4P/2fRNAEZHFADNqNzoZRz9xpRGAALA1UKhMNSr9OJvABz1CwD0AHjTexNO0bWArIYsAsdMYPvX4EckAMDNUAKgKJ0NDwBwybcATZJwA8DnBA1NlsIGALeA35ofMgjuVyup7CqyAHADSCm96YUpiYDwAeD0AK0ZBJhHgkyyMjAANElS7bMPkSWA168jv7h7OZfVPCUBgJbJN+96pd0ReGhEHACj8VRJISH/DWx18P2GrC5ADSEAMJXcvPXb3z1FGgB24fkMZAR4/OQJmB8cjAmEFgBHnc8riAEAqs2LQVPYJgD4/jEPr2ieCSQHgOlKHAHgBoA/NqBSgkLRwZhAaAHoPhbir4gDwC7s3YRuFXmBscoTfJewylYtcIUSALSqfKAAaFJkuw+DwWyeMfMFvkLgrITINKQACDRAABYGL6NxB98J2GQLFzITf7TQ06qxMHhp4QNgemwBsIsv0X9e6nnF5kdgy0X4aTOeVxi/SPwBiG0PoHGLR+/vtw3D6yPwx0U8Ktn8QxEAkQXAaDwTPA2slHWOyZZOHse3i3YgCR6AsE0HhwKAccEDYONty6O8lsEbVZ4oRJeKF20JAIStICSuALgDPHQbmLLqHaV+nYk/NvjJBZkAyC8JwwUlYbEFwGi8RmN85U7DEBsFHBc8AOEqClViCkC2fOkiau53r1jtt9Ossw9FQ4WA+wAOQLjKwkMDwMJgxWqIAXiVv+z3I9EdpLgJmEwqALAwJAIMRAkAoQE8+tPaRQlh5VnAJqCVuwKQSjwAwbZ/tnxLsBL0xZ+3tV25gR3KTeAkjxcDEQEwOAByrIGuBOVJYM8AQP86mgAYBAC5AMVqj/H7n6d47T8Px1PG7oChwXLBySIA5AOglk+hBsBrfjsblFXv4yPGi+dLdq5fEQCDBIBhCX7P1KE9gZjzF3Fi3taaxBAA0QDAiesQuUlg1uWU6h0MGQ7G4xoLEAAKAyUDYA2tvIs7+r1TZavLOfqVf5wjEQCn+UPf+BECgFUxA3CTu1XW9SQ0b+DNHTOJAMxasXwZzwWne9ZvqeDZaZ+aHTsAWA0r8/IKvazu72RfEG0l+6bGZAGweNanz4d86fOn2e32//TlsC99+TQ7ZgBo8x5gnblr59i9bJsibu7O/WpJAiA96/PPI77083NaaSr95aBPfUnHC4B5eETnJoEraESHTx64sSM4h0/hABw6cuzVq2O968ghAODwwQ2+dPBwzABgpnArgBcmCoBdeT5DdGaNyQPg1UYfIgC6SNPRud1mWhc/Vzx4vHsioxEAEgHgvXffEhuAlwTGz7bwErJm/oC/Qd+yyqcJgK4AzAtAtulVeeNGLjqbueWBqG6Y9jwCINQA8P71oSKa2S1awrb5uoBPIQgiSH0hARBqAAS3sLfUh/3rfK88EDcBAiDMALjjePwOvnembPnpQQCB56ZNAIQXgJzFk3kpPJnz7N83sFceiGcRylaOAAgtAHxGT9R6D8t67j9GkU/+YSIEQFgBsCuwFQCSBP6fMOKGYK08xJH+pRMAcgDgmbwnIgN48n9Nx6pvRV3AowtWjgAIJQBgAH1F8RaUB2KzyQRAGAHgdZ3HRSHcdTAAocS5RL5e9GXFJgDCCAAyekOTwHhCGC8o9ZYKEQDhAyADKRwfSWDES/BoMjPPhwAAmg4OHACriMzjoElgXLmrZ+8GcS0cACoI6QLAWH4b+xU3ACjmwOL3zH9fnzW8VSX4nLLdx4flAFBJWFcAMv7Fqq+Fvfa9BeVcDzzZlUf/NIF+AKCi0IABsIrnLwbZYragrNRdKnSpaPUDAJWFBwwAa+AG0EwC64Fd0Isp7X4AoIUhwQLAqo8V/D+P/+ZNr+1ledOK+BUfV1kfANDSsKAAAAMQyI3ce2bqtiLSxfNFiwAIBwA8BXRbWTz7b21qiv/Ak8C9Q3Xy3oxNLXVcfLFym0NFAIQCgMyQfmlPpy61da2kZ3qWXjp9CdTl8vpQxp/0EgEQ9CCwWCz9rSKopPtrpyKoy+UzGQIgNADoYoXoogSACIBkiAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAiAkWMzQ8nQVQKAACAACAACgAAgAAgAAoAAIAAIAAKAACAAEgnAmjlzCAACgAAgAAiA5AKwnABINAB8XShvfwIgaQDkW1GAC0B6hrM8lABIhAgAAmAbtwACIMEAtMYA851EkDsGIAASBcC2tXkCgADgAKxxAFhMACQSAD4EcABYQQAkGABIBM5IEQBDyZADQD6/btWqRQTAbxo1NpMQAvTi6R35ZhpgDQHQ1rTkAHBpsweA0/4uALMJgGHDpiQFAMt8viX/51zQ7IjsEicVgKlDCQHA/vh4HeSBnERgZLYJlArApJ2FoSQoY314utoNAlwLoB6gpfFj6kNJ0NX9bIQTBLhRYDsNEI3ZYBkAgKbUE9EF6B+et6eCIAigHsDxgCSYQOHdx6fOEACCgAglAqUAAJq2M/4m8PXdhx87/pgJiFIUKBmASfWJsSeg/u7jnXVr8+AAy6OUB5IDAGhK7Amov/vwfbPXAcAYkHqAliaP2RlvAur7zhV35dsOAEMAAqBtAhPjGwsU6jvffXyWb6UBvSEAAfCHptYnnotrLFDYue/dxxdbWg4wP4IOIBMAIGDizjh2AoW62/6bN/MOgGeB2g5AAHQQsJN3AvV4MVCo13eee3fOaX+nA4AYIGIOIBEA0KRf7Jk/S8NAGMax1QgOhUgHM3RxE9yKo4EORTr5IRwLmRM88qeEZBCF1g+QrY7FJV/Cb+BWdArp1snJ9+5Nc9cuFirNXcnvIHO533PPe0c7UAIpy8CBQO2n4yx/nqN/XgD0n6A6AJvc9j9oBIDRQZBS+1m+WE4d33aszSsgToA6ACLdwQgGAZBuzVhismyS5z/zwOb+ywLgE6AOgEi33xlBc27PRF7yRZ59feo2WfkXC0CtCbCfACBa964/6GzNq6y8vyy/53HgE/TPBwBcAZWbAHsMAHJx/heGoWmn1z3zbfYkBbOSKRDHcRi5xCdeIPp/EP2rNAGEAEhDo9E0tJ45DWMZCAsiIEmStuu6uq4z/aV/eAHQAVAH4H/8Hx0ZxycQgCiUhgjg/j0vYPXP/Q/X/Ss0AeQMQJMG4KadRJWScNqAi4ef6cfjD/e/wj8fAKoVgMwBcHHXq10iIB/tU/14/Ll/+gLgBVAHYPcAtD3Y8qpZ/QSPQgIC9rl+OP7cf1kA90oVgMwBIHTPK10BPfFgPaCfQj6zz9of3/9r/tUrAGkD0DJ1n1SOD4t+GDYF7a/00/ffpn8sgDoAuwVAa5lXji0VDmBR+6z8C/1DwT9eABQrAHkDcHZpOfJgIY949lE/TH+o/9I/HwAqFYDMAfhlvw5SHASCKAwvZyazz2b2OreJCxFBaAQJSqvjAebyqdRLpTtZB3wF+TXkAN/rDtn+CPq/PtZm+jHkxz/3fw/gRQP4PvwuG0XijpZr0fTBr/6jY3/mAcSFK9ibvvDDf8L//9z/PYBXDOAYIlEhRNhLM/hx+z/7O7sAaAfwdTgOgachx4c+/O/Xv1N/5gF0w0zyKLy8wDd98OP4m7+3HwDmARRrt3dzp+jqrvTd2iZ98Nv179SfdwBl0e69gNXCnS8v8HH4M37H/rQD+CyLut01gOfVho/Dn/H79WcewFQTJOxZk+Lj7Is++Bvw+/QnHsB6rgmatNv3qPZJ//n4O/RnHkA/7p6YI8DDPuknfrf+tAP4KH+qM089qtQe+Ekf/D79mQfQVD1Bgp3YYf+gfwK/V3/mAZwqsppGPglf/Z3zEw/gwj4d2wAIw0AUragp0sEADBPZ7th/FEAIGURFd1j/eYPcT5vjeG+Bu1bP6fPvH/zP++sGsMwWq4JIyS7+7/mFA2iThyCzsDrrawfQTUKc5/bgXmF9Avgipy+zvnAAwx6AmwK/KTa+fADCehVj0w1AroBekG4AY8cbAYAAQAAgABAACAAEAAIAAYAAQAAgABAACAAEAAIAAYAAQAAgABAANnbpoASAGAiAGNTA1b/ag37qoCxMoiECIAACIAACIAACxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0DcwADrBNgCPPHtE2CNCbAEeOgGGDPgb88OchsEYjAKS2QmMy60QcoKcgA2SBwEKfc/To1Tkl27qStTve8EUf4ngwQBfOv/B/B8BIzrfYWz+zpGewRYAIMG0K34A50GMAQMIPW3bryYDg4uZuxufYoYQMqlv07TsrzBzbJM07UvOcUL4JRyLqWKtOoDDlolUkvJOZ1CBbCfgHOp8yzyDicyz3Mt52gHYA/ATkAVkVZa/DppRaRuByBkAK8CqsBJfe0fKwA7AVZALtoAXJRadP5t/2BvAI8ArIBHArnAhc2v+4c7AM8CNIGU4Sbp/CH3t+8BmsDWwJDgZND1t/kjfQfYNV8JwJfNH3B/1VgDcNYEnX/TGEJw0ZjI85sGHg6y/u4Yv/Jo+FcBAAAAAAAAAAAAAAAA/OQT3R040atZehsAAAAASUVORK5CYII=';var vh=function(){const mN=bB;var o=this,p=o['_self']['_c'],r=o['_self']['_setupProxy'];return p('div',{'staticClass':'excel-wrapper'},[r['showBlockingLoading']?p('div',{'staticClass':'loading'},[p('div',{'staticClass':'loading-card'},[o['_m'](0x0),p(mN(0x220),{'staticClass':mN(0x287)},[p('span',{'staticClass':'loading-kicker'},[o['_v']('Excel\x20表格')]),p('strong',[o['_v'](o['_s'](r[mN(0x26b)]))]),p('p',[o['_v']('正在准备工作表、样式和大数据视口,请稍候。')])]),p('span',{'staticClass':'loading-spinner'})])]):r['errorMessage']?p('div',{'staticClass':'error'},[o['_v']('\x20'+o['_s'](r['errorMessage'])+'\x20')]):o['_e'](),p(mN(0x220),{'staticClass':mN(0x273)},[r['showStreamingLoading']?p('div',{'staticClass':'sheet-loading'},[p('span',{'staticClass':'sheet-loading-dot'}),p('span',[o['_v']('正在平滑补充可视区数据')]),r[mN(0x462)]?p('span',{'staticClass':'sheet-loading-summary'},[o['_v'](o['_s'](r['cachedSummary']))]):o['_e']()]):o['_e'](),p('div',{'staticClass':'table-host'},[p('div',{'ref':'tableHost','staticClass':'table-target','staticStyle':{'width':'100%','height':'100%'}})])]),p('div',{'staticClass':'toolbar'},[p('div',{'staticClass':'btn-group'},o['_l'](r['sheetTabs'],function(u){return p('button',{'key':u['id'],'class':{'active':r['sheetIndex']===u['id']},'staticStyle':{'padding':'0\x2030px'},'on':{'click':function(w){return r['handleSheet'](u['id']);}}},[o['_v']('\x20'+o['_s'](u['name'])+'\x20')]);}),0x0),r[mN(0x165)]?p('div',{'staticClass':'summary'},[o['_v']('\x20'+o['_s'](r['statusSummary'])+'\x20')]):o['_e']()])]);},Bh=[function(){var o=this,p=o['_self']['_c'];return o['_self']['_setupProxy'],p('div',{'staticClass':'loading-brand'},[p('img',{'staticClass':'lg','attrs':{'src':Qh,'alt':'xlsx'}})]);}],Ah=n(fh,vh,Bh,!0x1,null,'8465aa04',null,null);const ie=Ah['exports'];export{ie as default};
|