@flyfish-group/file-viewer 1.0.13 → 1.0.15
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 +201 -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 +19323 -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-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/package.json +17 -3
- package/dist/index.umd.js +0 -7
- package/dist/worker/pdf.worker.js +0 -1
- package/dist/worker/pptx.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 bD=b;(function(o,p){const ba=b,r=o();while(!![]){try{const s=-parseInt(ba(0x302))/0x1*(parseInt(ba(0x31f))/0x2)+parseInt(ba(0x3a8))/0x3*(-parseInt(ba(0x3b0))/0x4)+parseInt(ba(0x277))/0x5*(-parseInt(ba(0x370))/0x6)+-parseInt(ba(0x238))/0x7*(parseInt(ba(0x398))/0x8)+parseInt(ba(0x2cf))/0x9+-parseInt(ba(0x323))/0xa*(parseInt(ba(0x37f))/0xb)+-parseInt(ba(0x3ad))/0xc*(-parseInt(ba(0x3eb))/0xd);if(s===p)break;else r['push'](r['shift']());}catch(t){r['push'](r['shift']());}}}(a,0xa2e0f));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 bb=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'](bb(0x484),z=>{const {type:C,payload:D}=z['data'],E=w[C];E?.['length']&&E['forEach'](F=>F(D)),x['forEach'](F=>F(z));}),r?.['addEventListener']('error',z=>{console['error'](z),y['forEach'](C=>C(z));}),d(()=>{r?.['terminate']();}),{'loading':p,'worker':u,'onWorkerMessage':z=>x['push'](z),'onWorkerError':z=>y['push'](z),'onWorkerEvent':(z,C)=>{let D=w[z];D||(D=w[z]=[]),D['push'](C);},'mapEvents':z=>Array[bb(0x24d)](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 bd=b;try{if(typeof document<'u'){var o=document[bd(0x2cb)]('style');o['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'](o);}}catch(p){console['error']('vite-plugin-css-injected-by-js',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){const be=b;m(this,be(0x3fc)),this[be(0x3fc)]=o;}['validate'](p){const bg=b,r=[],{column:u,row:w,key:x,rowKey:y,colIndex:z,rowIndex:C,value:D,field:E,fieldValue:F}=p;Array['isArray'](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=>{const bf=b;K&&r[bf(0x1e7)]({...J,'message':K});});}if(!G['required']&&(D==null||D===''))return r;G['pattern']&&!G[bg(0x1d9)]['test'](D)&&r['push']({'value':D,'column':u,'row':w,'key':x,'rowKey':y,'colIndex':z,'rowIndex':C,'field':E,'fieldValue':F,'message':G[bg(0x484)]||x+'\x20is\x20pattern\x20validation\x20error'}),G[bg(0x4b9)]&&(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+'\x20is\x20required'});}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(()=>{o['apply'](this,u),r=new Date()['getTime'](),s=void 0x0;},y-x));};}function zi(o=[]){const bj=b;return o['length']?o[bj(0x37d)](p=>zi(p['children'])+0x1)['sort']((p,r)=>r-p)[0x0]:0x0;}function xs(o=[]){const bm=b;let p=[],r=[],s=[];return o['forEach'](u=>{const bk=b;u[bk(0x47e)]==='left'?p['push'](u):u['fixed']==='right'?s['push'](u):r['push'](u);}),[...p['sort']((u,w)=>(u[bm(0x4e9)]??0x0)-(w['sort']??0x0)),...r['sort']((u,w)=>(u[bm(0x4e9)]??0x0)-(w['sort']??0x0)),...s['sort']((u,w)=>(u['sort']??0x0)-(w['sort']??0x0))];}function Ci(o=[],p=0x1,r=0x0,s=''){const bn=b;return o['sort']((u,w)=>(u[bn(0x4e9)]??0x0)-(w['sort']??0x0))['map'](u=>{const bo=bn;if(u['children']){let w=0x0,x=u['fixed'];u['children']['forEach'](z=>{z['fixed']=x;});const y=Ci(u[bo(0x1ef)],p-0x1,r+0x1,u['key']);return y&&y['forEach'](z=>{w+=z['colspan']??0x0;}),{...u,'width':u['width'],'level':r,'rowspan':0x1,'colspan':w,'parentKey':s,'children':y['sort']((z,C)=>(z['sort']??0x0)-(C['sort']??0x0))};}return{...u,'level':r,'rowspan':p,'colspan':0x1,'parentKey':s};});}function ui(o=[]){const bp=b;let p=[];return o[bp(0x2e6)](r=>{const bq=bp;r['children']?p=p['concat'](ui(r[bq(0x1ef)])):p['push'](r);}),p;}function zl(o){const br=b;return o[br(0x2a9)](p=>!p['hide'])['map'](p=>Array[br(0x24d)](p['children'])&&p['children'][br(0x38b)]>0x0?{...p,'children':zl(p['children'])}:{...p});}const qt=/^(\r\n|\n\r|\r|\n)/,Vs=/^[^\t\r\n]+/,$t=/^\t/;function rs(o){const bu=b;let p=[['']];if(o['length']===0x0)return p;let r=0x0,u=0x0,w;for(;o[bu(0x38b)]>0x0&&w!==o['length'];)if(w=o['length'],o['match']($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['slice'](0x0,0x1);C==='\x22'&&(y+=0x1),x+=C,o=o['slice'](0x1),(o['length']===0x0||o['match'](/^[\t\r\n]/)&&y%0x2===0x0)&&(z=!0x1);}x=x['replace'](/^"/,'')[bu(0x4f0)](/"$/,'')['replace'](/["]*/g,D=>new Array(Math[bu(0x210)](D['length']/0x2))['fill']('\x22')['join'](''));}else{const D=o[bu(0x445)](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][bu(0x38b)]===0x1&&p[p[bu(0x38b)]-0x1][0x0]===''&&(p=p['slice'](0x0,p['length']-0x1)),p;}function Ks(o){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=='string'?y['indexOf']('\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=[]){const bv=b;let u=0x0;const w=[];return o[bv(0x2e6)]((x,y)=>{const bw=bv;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[bw(0x1e7)](0x0)):(w['push'](0x1),u=y);}}),w;}function gl(o,p){let r='',u='';const w={};return p['forEach']((x,y)=>{const bx=b;y===0x0?(r=x['key'],u=x[bx(0x4b6)],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 {column:r,row:u,visibleLeafColumns:w}=o,x=w['filter'](y=>p['includes'](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 by=b,r=o['startsWith']('--')?o:'--'+o;return getComputedStyle(p)[by(0x4e3)](r)[by(0x46e)]();}function b(c,d){c=c-0x1d3;const e=a();let f=e[c];return f;}function il(p){const bz=b;if(!p)return new Date(0x0);if(typeof p==bz(0x306))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[bz(0x445)](x);if(y){const z=y['slice'](0x1)['map'](Number);if(x['source']['includes']('YYYY-MM-DD')||x[bz(0x477)]['includes'](bz(0x21a))||x[bz(0x477)]['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']['includes']('DD-MM-YYYY')||x['source']['includes']('DD/MM/YYYY')||x['source']['includes'](bz(0x49e))){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']['includes']('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']['includes']('YYYYMMDD')){const [a1,a2,a3]=z;return new Date(a1,a2-0x1,a3);}}}}}}return new Date(NaN);}function Ns(o,p){const r=il(o),s=il(p);return isNaN(r['getTime']())&&isNaN(s['getTime']())?0x0:isNaN(r['getTime']())?-0x1:isNaN(s['getTime']())?0x1:r['getTime']()-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,'width',0x0),m(this,bA(0x22c),0x0),m(this,bA(0x47e)),m(this,'cellType'),this[bA(0x270)]=o,this['x']=p,this['y']=r,this[bA(0x3fb)]=u,this['height']=w,this[bA(0x47e)]=y,this['cellType']=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);}['isVerticalVisible'](){const {stageHeight:o,scrollY:p}=this['ctx'],r=o;return!(this['y']+this['height']-p<=0x0||this['y']-p>=r);}['getDrawX'](){const bB=b;if(this['fixed']==='left')return this['x'];if(this['fixed']==='right'){const {stageWidth:o,config:{SCROLLER_TRACK_SIZE:p}}=this['ctx'];return o-(this['ctx']['header'][bB(0x3fb)]-this['x'])-p;}return this['x']-this['ctx']['scrollX'];}['getDrawY'](){const bC=b;return this[bC(0x223)]===bC(0x317)?this['y']:this[bC(0x223)]===bC(0x45c)&&this['ctx']['config'][bC(0x26b)]?this['y']:this['y']-this['ctx']['scrollY'];}['getLeftFixedX'](){return this['x']-this['ctx']['scrollX'];}[bD(0x331)](){}}class Vt extends Ul{constructor(p,r,u,w,x,y,z,C,D,E='body',F=!0x0){const bE=bD;super(p,w,x,y,z,E,C['fixed']),m(this,'formatter'),m(this,'formatterFooter'),m(this,'hoverIconName',''),m(this,'operation',!0x1),m(this,bE(0x2c5)),m(this,'verticalAlign'),m(this,'fixed'),m(this,'type'),m(this,'editorType'),m(this,'editorProps'),m(this,'cellType'),m(this,'level'),m(this,'colspan',0x1),m(this,'rowspan',0x1),m(this,'mergeRow',!0x1),m(this,'mergeCol',!0x1),m(this,bE(0x410),[]),m(this,bE(0x27d),[]),m(this,bE(0x4b6)),m(this,'column'),m(this,'rowIndex'),m(this,'colIndex'),m(this,bE(0x483)),m(this,'row'),m(this,'value'),m(this,'render'),m(this,bE(0x278)),m(this,'style',{}),m(this,'domDataset',{}),m(this,'rules',[]),m(this,'message',''),m(this,'text',''),m(this,'displayText',''),m(this,'visibleWidth',0x0),m(this,'visibleHeight',0x0),m(this,'isHasChanged',!0x1),m(this,'drawX',0x0),m(this,'drawY',0x0),m(this,bE(0x4c9),''),m(this,'drawCellSkyBgColor',''),m(this,'drawTextColor',''),m(this,'drawTextFont',''),m(this,'drawTextX',0x0),m(this,'drawTextY',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,bE(0x4c1),0x0),m(this,'drawHoverImageWidth',0x0),m(this,'drawHoverImageHeight',0x0),m(this,bE(0x43d),''),m(this,'drawHoverImageSource'),m(this,bE(0x366),!0x1),m(this,'calculatedHeight',0x0),m(this,'ellipsis',!0x1),m(this,'rowExpand',!0x1),m(this,'rowHasChildren',!0x1),m(this,'overflowTooltipShow',!0x0),m(this,'selectorCellValueType','value'),m(this,'overflowTooltipMaxWidth',0x1f4),m(this,'overflowTooltipPlacement','top'),m(this,'maxLineClamp','auto'),m(this,'renderType','default'),m(this,'renderFooterType','default'),this['visibleWidth']=this['width'],this['visibleHeight']=this['height'],this['colIndex']=u,this['rowIndex']=r,this['key']=C[bE(0x4b6)],this['type']=C['type']||'',this['editorType']=C['editorType']||bE(0x3c9),this['selectorCellValueType']=C['selectorCellValueType']||this[bE(0x270)]['config'][bE(0x469)]||'value',this['editorProps']=C['editorProps']||{},this['cellType']=E,this[bE(0x2c5)]=C['align']||this['ctx'][bE(0x49d)]['COLUMNS_ALIGN'],this['verticalAlign']=C['verticalAlign']||this['ctx']['config']['COLUMNS_VERTICAL_ALIGN'],this['fixed']=C['fixed']||'',this['level']=C['level']||0x0,this['operation']=C['operation']||!0x1,this[bE(0x2d8)]=C,this['rules']=C['rules']||[],this['row']=D,this['rowKey']=this[bE(0x223)]==='body'?this['ctx']['database']['getRowKeyForRowIndex'](r):this[bE(0x223)]+'_'+this['rowIndex'],this['value']=this['getValue'](),this['render']=C['render'],this[bE(0x4a4)]=C['overflowTooltipShow']!==!0x1,this['autoRowHeight']=C[bE(0x366)]!==void 0x0?C['autoRowHeight']:this['ctx']['config']['AUTO_ROW_HEIGHT'],this['overflowTooltipMaxWidth']=C[bE(0x3e0)]||0x1f4,this['overflowTooltipPlacement']=C['overflowTooltipPlacement']||'top',this[bE(0x278)]=C['renderFooter'],this['hoverIconName']=C['hoverIconName'],this['formatter']=C['formatter'],this['formatterFooter']=C[bE(0x3e6)],this['maxLineClamp']=C['maxLineClamp']||bE(0x4da),this['renderType']=C['renderType']||'default',this['renderFooterType']=C['renderFooterType']||'default',F&&this['update']();}['setWidthHeight'](o,p){const bF=bD;this['width']=o,this[bF(0x22c)]=p;}['getValidationMessage'](){const bG=bD,o=this['ctx'][bG(0x29c)]['getValidationError'](this['rowKey'],this['key']);if(Array['isArray'](o)&&o[bG(0x38b)]){const [p]=o;this['message']=p[bG(0x484)]||'';}return this['message'];}[bD(0x501)](){const bH=bD;this['drawX']=this['getDrawX'](),this['drawY']=this['getDrawY'](),this['drawTextX']=this[bH(0x217)],this['drawTextY']=this['drawY'],this[bH(0x395)]=this[bH(0x270)]['database']['isHasChangedData'](this[bH(0x483)],this['key']),this['updateSpan'](),this['drawTextWidth']=this[bH(0x2f4)],this[bH(0x21c)]=this['visibleHeight'],this['updateStyle'](),this[bH(0x27f)](),this[bH(0x293)](),this['updateSelection'](),this['updateTree'](),this['updateEditor'](),this['updateRender'](),this[bH(0x1e8)](),this['updateContainer'](),this['text']=this['getText'](),this['displayText']=this['getDisplayText']();}['updateSpan'](){const bI=bD;if(this[bI(0x223)]==='footer')return;const {SPAN_METHOD:o}=this['ctx']['config'];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['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue'](),'headIndex':this['ctx']['body']['headIndex'],'headPosition':this[bI(0x270)][bI(0x29c)]['getPositionForRowIndex'](this['ctx']['body']['headIndex']),'visibleRows':this['ctx'][bI(0x4ff)]['visibleRows'],'visibleLeafColumns':this['ctx']['header'][bI(0x399)],'rows':this['ctx']['body']['data']})||{};Array['isArray'](w)&&w['length']>0x0?this['relationRowKeys']=w:this['relationRowKeys']=[this['key']],Array['isArray'](x)&&x['length']>0x0?this['relationColKeys']=x:this['relationColKeys']=[this['key']],this['mergeCol']=z,this['mergeRow']=y,this['colspan']=r,this['rowspan']=u,this['visibleWidth']=this['getWidthByColIndexColSpan'](this['colIndex'],this['colspan']),this['visibleHeight']=this['ctx']['database']['getHeightByRowIndexRowSpan'](this['rowIndex'],this['rowspan']);}}[bD(0x2af)](){const bJ=bD;if(this['mergeRow']||this[bJ(0x1f1)]){const o=this['getSpanInfo']();this['height']=o['height'],this[bJ(0x3fb)]=o['width'],this['drawX']=this['getDrawX'](),this['drawY']=this['getDrawY'](),this['drawY']-=o['offsetTop'],this['drawX']-=o[bJ(0x30a)];}}[bD(0x27f)](){const {BODY_CELL_TYPE_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']()});p!==void 0x0&&(this['type']=p);}}['updateEditor'](){const {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['editorProps']=u;}}}['updateRender'](){const bK=bD,{BODY_CELL_RENDER_METHOD:o}=this['ctx'][bK(0x49d)];if(typeof o=='function'){const p=o({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});p!==void 0x0&&(this['render']=p);}}['validate'](){const bM=bD;this['ctx']['database']['getValidator'](this['rowKey'],this['key'])['then'](()=>{const bL=b;this[bL(0x270)][bL(0x29c)][bL(0x4dd)](this['rowKey'],this['key'],[]),this['message']='';})[bM(0x2c7)](o=>{const bN=bM;if(Array['isArray'](o)&&o['length']){const [p]=o;this['message']=p[bN(0x484)],this['ctx']['database']['setValidationError'](this['rowKey'],this['key'],o);}})['finally'](()=>{this['ctx']['emit']('draw');});}['updateStyle'](){this['autoRowHeight']&&(this['domDataset']={'data-auto-height':!0x0,'data-row-index':this['rowIndex'],'data-col-index':this['colIndex']}),this['style']=this['getOverlayerViewsStyle']();}['updateTree'](){const bO=bD,{CELL_PADDING:r=0x0}=this['ctx'][bO(0x49d)],{rowKey:w,cellType:x}=this;let z,C=0x0,D='';if(!(['tree','selection-tree','tree-selection']['includes'](this['type'])&&x==='body'))return;const E=this['ctx']['database']['getRowForRowKey'](w),{expand:F=!0x1,hasChildren:G=!0x1,expandLoading:J=!0x1,level:K=0x0}=E||{};this['rowExpand']=F,this['rowHasChildren']=G;const {TREE_INDENT:N=0x10,CHECKBOX_SIZE:O,TREE_ICON_SIZE:R}=this['ctx']['config'];if(C=K*N,J){const a5=this[bO(0x270)][bO(0x4d2)]['get']('loading');D='loading',z=a5;}else{if(G){const a6=this['ctx']['icons']['get']('expand'),a7=this['ctx']['icons'][bO(0x20c)](bO(0x281));z=F?a7:a6,D=F?'shrink':'expand';}}let V=R,a0=R,a1=this['drawX'];(this['align']==='center'||this['align']==='right')&&(a1=this['drawX']+(this['visibleWidth']-V-0x2*r)/0x2,this['align']=bO(0x4f7));let a2=a1+C+r,a3=this['drawY']+(this['visibleHeight']-a0)/0x2,a4=C+this[bO(0x217)]+V-0.5;this['type']==='selection-tree'?(a2=C+this['drawSelectionImageX']+this[bO(0x3de)],a4=a2+V-r/0x2):this['type']==='tree-selection'?a4=a2+O+V-r/0x2:a4=a2+V-r/0x2,this['drawTextX']=a4,this['drawTextWidth']=this['drawX']+this['visibleWidth']-a4,!(a2+V+r>this['drawX']+this[bO(0x2f4)])&&(a3+a0+r>this['drawY']+this['visibleHeight']||(this['drawTreeImageX']=a2,this[bO(0x4c4)]=a3,this['drawTreeImageWidth']=V,this['drawTreeImageHeight']=a0,z?(this['drawTreeImageName']=D,this['drawTreeImageSource']=z):(this['drawTreeImageName']='',this[bO(0x4a2)]=void 0x0)));}['drawTreeLine'](){const bP=bD,{TREE_LINE:p,TREE_INDENT:r=0x10,TREE_ICON_SIZE:u=0x10,TREE_LINE_COLOR:w='#e1e6eb'}=this['ctx']['config'];if(!p||this[bP(0x223)]!=='body'||!['tree','selection-tree',bP(0x460)]['includes'](this['type'])||this['rowspan']===0x0||this['colspan']===0x0)return;const x=this['ctx'][bP(0x29c)]['getRowForRowKey'](this['rowKey'])||{},z=x['level']??0x0,C=this[bP(0x3df)]+this[bP(0x3c5)]/0x2,D=this[bP(0x4c4)]+this['drawTreeImageHeight']/0x2;let E=this[bP(0x3df)]-z*r;const F=Array[bP(0x24d)](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']['getRowForRowKey'](N)||{}:{})[bP(0x3ab)])continue;const O=Math['round'](this['drawTreeImageX']-(z-L)*r+u/0x2);this['ctx']['paint'][bP(0x2f2)]([O,this[bP(0x45b)],O,this['drawY']+this['visibleHeight']],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}const G=Math['round'](this[bP(0x3df)]-r+u/0x2),J=x['isLastChild']?D:this['drawY']+this['visibleHeight'];this['ctx'][bP(0x4ab)]['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']['paint']['drawLine']([K,D,C,D],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}if(x[bP(0x447)]&&x[bP(0x262)]){const R=this[bP(0x4c4)]+this['drawTreeImageHeight'],S=this[bP(0x45b)]+this[bP(0x1e2)];this[bP(0x270)]['paint'][bP(0x2f2)]([C,R,C,S],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}}['updateContainer'](){const bQ=bD,{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[bQ(0x223)]===bQ(0x45c)){let ak=a0,am=O;if(typeof E==bQ(0x28f)){const an=E,{backgroundColor:ao,color:ap,font:aq}=an({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()})||{};ao&&(ak=ao),ap&&(am=ap),aq&&(this['drawTextFont']=aq);}this['drawCellSkyBgColor']='transparent',this['drawCellBgColor']=ak,this['drawTextColor']=am;return;}let a8='transparent';const a9=this['ctx']['hoverCell'],aa=this['ctx'][bQ(0x230)];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['rowIndex']>=ab&&aa['rowIndex']<=ad&&(a8=a2)),this['drawCellSkyBgColor']=a8;let ae=r,af=K;if(this[bQ(0x270)][bQ(0x29c)][bQ(0x3e8)](this['rowKey'],this[bQ(0x4b6)])||(ae=C,af=F),a5&&(this[bQ(0x31d)]%0x2?ae=a6:ae=r),typeof D=='function'){const av=D,{backgroundColor:aw,color:ax,font:ay}=av({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[bQ(0x2d8)],'isHasChanged':this['isHasChanged'],'value':this[bQ(0x1e0)]()})||{};aw&&(ae=aw),ax&&(af=ax),ay&&(this['drawTextFont']=ay);}const {rowIndex:ag,colIndex:ai,type:aj}=this['ctx'][bQ(0x2c4)];ag===this['rowIndex']&&ai===this['colIndex']&&aj===bQ(0x4ff)&&(ae=a7),this['drawCellBgColor']=ae,this['drawTextColor']=af;}['updateSelection'](){const bR=bD,{visibleWidth:r,visibleHeight:w,rowspan:x,colspan:z,cellType:C,type:D,rowIndex:E,rowKey:F}=this;if(x===0x0||z===0x0||C==='footer'||![bR(0x3d5),bR(0x408),'selection-tree','tree-selection']['includes'](D))return;const G=this['ctx']['database']['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===bR(0x460)){const {TREE_INDENT:a0=0x10,TREE_ICON_SIZE:a1}=this['ctx']['config'],a2=this['ctx'][bR(0x29c)]['getRowForRowKey'](F),{level:a3=0x0}=a2||{},a4=a3*a0;O=N+a1+a4;}let T=this['ctx']['icons'][bR(0x20c)]('checkbox-uncheck'),V='checkbox-uncheck';if(D==='selection-tree'||D==='tree-selection'){const a5=this[bR(0x270)]['database']['getTreeSelectionState'](F);a5['indeterminate']&&G?(T=this[bR(0x270)][bR(0x4d2)]['get']('checkbox-indeterminate'),V=bR(0x42f)):a5['checked']&&G?(T=this['ctx']['icons']['get']('checkbox-check'),V='checkbox-check'):!a5['checked']&&G?(T=this['ctx']['icons']['get']('checkbox-uncheck'),V='checkbox-uncheck'):(T=this['ctx']['icons']['get'](bR(0x37a)),V='checkbox-disabled');}else{const a6=this['ctx']['database']['getRowSelection'](F);a6&&G?(T=this['ctx']['icons']['get']('checkbox-check'),V=bR(0x303)):a6&&!G?(T=this['ctx']['icons']['get']('checkbox-check-disabled'),V='checkbox-check-disabled'):!a6&&G?(T=this[bR(0x270)]['icons']['get']('checkbox-uncheck'),V='checkbox-uncheck'):(T=this['ctx']['icons']['get']('checkbox-disabled'),V=bR(0x37a));}O+J+K>this['drawX']+this['visibleWidth']||R+J+K>this[bR(0x45b)]+this['visibleHeight']||(D==='index-selection'?(this['ctx']['hoverCell']&&this['ctx']['hoverCell']['rowIndex']===E||[bR(0x37a),'checkbox-check']['includes'](V))&&(this['drawSelectionImageX']=O,this['drawSelectionImageY']=R,this['drawSelectionImageWidth']=J,this['drawSelectionImageHeight']=J,this['drawSelectionImageName']=V,this['drawSelectionImageSource']=T):(this['drawSelectionImageX']=O,this['drawSelectionImageY']=R,this[bR(0x3de)]=J,this['drawSelectionImageHeight']=J,this['drawSelectionImageName']=V,this['drawSelectionImageSource']=T));}['updateHoverIcon'](){const bS=bD;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['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this[bS(0x1e0)]()});z!==void 0x0&&(this['hoverIconName']=z);}const {hoverCell:x}=this[bS(0x270)];if(this['hoverIconName']&&!this['ctx'][bS(0x22d)]&&x){let C=0x0,D=0x0;if(x[bS(0x483)]===this[bS(0x483)]&&(C=this[bS(0x217)]+this['width']-r-u,D=this['drawY']+(this['height']-r)/0x2),this['rowspan']!==0x1&&w){const F=this['getSpanInfo'](),{yArr:G}=F,J=G[0x0],K=G[0x1];if(x['rowIndex']>=J&&x[bS(0x31d)]<=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[bS(0x272)]=C,this['drawHoverImageY']=D,this['drawHoverImageWidth']=r,this['drawHoverImageHeight']=r,this[bS(0x43d)]=this['hoverIconName'],this[bS(0x1ee)]=E;}}['getAutoHeight'](){const bT=bD;if(this['cellType']!=='body'||!this[bT(0x366)]||this['rowspan']===0x0)return 0x0;if(this['render']){const x=this['ctx']['database']['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex']);return this[bT(0x21b)]>0x1?x<this[bT(0x1e2)]?0x0:Math['round'](x-(this['visibleHeight']-this['height'])):Math[bT(0x475)](x);}if(!(this['displayText']&&typeof this[bT(0x3a7)]=='string'))return 0x0;const {BODY_FONT:o,CELL_PADDING:p,CELL_LINE_HEIGHT:r}=this['ctx']['config'],u=this[bT(0x3a7)]+'_'+this['drawTextWidth']+'_'+this['drawTextFont'],w=this['ctx']['paint'][bT(0x36c)](this['displayText'],this['drawTextWidth'],{'font':this['drawTextFont']||o,'padding':p,'align':this[bT(0x2c5)],'verticalAlign':this['verticalAlign'],'color':this['drawTextColor'],'autoRowHeight':this['autoRowHeight'],'lineHeight':r,'maxLineClamp':this[bT(0x35b)],'cacheTextKey':u});return this[bT(0x21b)]>0x1?w<this[bT(0x1e2)]?0x0:Math['round'](w-(this['visibleHeight']-this['height'])):Math['round'](w);}[bD(0x4c3)](){return this['ctx']['database']['getSpanInfo'](this);}['getDisplayText'](){const bU=bD;return this[bU(0x223)]==='footer'?this['renderFooter']&&this['renderFooterType']===bU(0x4e4)||this[bU(0x3c9)]===null||this['text']===void 0x0?'':this['text']:this['rowspan']===0x0||this[bU(0x4b1)]===0x0||this['render']&&this['renderType']==='default'||this['type']==='index-selection'&&(this['ctx'][bU(0x336)]&&this['ctx'][bU(0x336)][bU(0x31d)]===this[bU(0x31d)]||['checkbox-disabled',bU(0x303)][bU(0x2cd)](this['drawSelectionImageName']))||this['text']===null||this[bU(0x3c9)]===void 0x0?'':''+this['text'];}['getText'](){const bV=bD;if(this['cellType']==='footer')return typeof this['formatterFooter']==bV(0x28f)?this['formatterFooter']({'row':this[bV(0x3da)],'rowIndex':this['rowIndex'],'colIndex':this[bV(0x3a2)],'column':this[bV(0x2d8)],'value':this[bV(0x3da)][this['key']]}):this['row'][this[bV(0x4b6)]];if(typeof this['formatter']=='function')return this['formatter']({'row':this[bV(0x3da)],'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[bV(0x3a2)],'column':this[bV(0x2d8)],'value':this['getValue']()}):['index-selection','index']['includes'](this[bV(0x23d)])?''+(this['rowIndex']+0x1):(this['value']=this['ctx']['database']['getItemValue'](this['rowKey'],this['key']),this['value']);}[bD(0x1e0)](){return this['ctx']['database']['getItemValue'](this['rowKey'],this['key']);}['setValue'](o){const bW=bD;this['ctx']['setItemValueByEditor'](this[bW(0x483)],this['key'],o);}['getOverlayerViewsStyle'](){const bX=bD;let o=this['drawX']-this['ctx']['fixedLeftWidth'],p=this['drawY']-this['ctx']['body']['y'];if(this[bX(0x47e)]==='left'?o=this['drawX']:this['fixed']==='right'&&(o=this['drawX']-(this['ctx'][bX(0x2d6)]-this['ctx']['fixedRightWidth'])),this['cellType']==='footer'&&this['ctx']['config']['FOOTER_FIXED']&&(p=this['drawY']-this['ctx']['footer']['y']),this[bX(0x366)]&&this['render']&&this['verticalAlign']==='middle'){const u=this[bX(0x270)]['database']['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex']);if(u<this['visibleHeight']&&u>0x0){const w=(this['visibleHeight']-u)/0x2;p=p+w;}}this['autoRowHeight']&&this['ctx']['database']['getOverlayerAutoHeight'](this[bX(0x31d)],this[bX(0x3a2)])===0x0&&(o=-0x1869f,p=-0x1869f);let r={};return this['rowspan']===0x0&&(r={'display':bX(0x26d)}),{'position':'absolute','overflow':'hidden','left':Math['round'](o-0x1)+'px','top':Math['round'](p-0x1)+'px','width':this['visibleWidth']+'px','height':this['autoRowHeight']&&this[bX(0x357)]==='default'?'auto':this['visibleHeight']+'px','pointerEvents':'initial','userSelect':'none',...r};}['drawContainer'](){const bY=bD,{paint:o,config:{BORDER_COLOR:p,BORDER:r}}=this['ctx'],{drawX:u,drawY:w}=this;o['drawRect'](u,w,this['visibleWidth'],this[bY(0x1e2)],{'borderColor':r?p:'transparent','fillColor':this[bY(0x4c9)]}),o['drawRect'](u,w,this['width'],this['height'],{'borderColor':'transparent','fillColor':this['drawCellSkyBgColor']}),r||this['ctx']['paint'][bY(0x2f2)]([u,w+this['visibleHeight'],u+this['visibleWidth'],w+this['visibleHeight']],{'borderColor':p,'fillColor':p,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}['drawAutofillPiont'](){const bZ=bD;if(this['cellType']==='footer')return;const {SELECT_BORDER_COLOR:p,ENABLE_AUTOFILL:r,ENABLE_SELECTOR:u,AUTOFILL_POINT_BORDER_COLOR:w}=this[bZ(0x270)][bZ(0x49d)];if(!u||!r||this['ctx'][bZ(0x22d)])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['ctx']['maxColIndex']||E===this['ctx']['maxRowIndex']||D===this[bZ(0x270)][bZ(0x36d)]?0x6:0x4;this['ctx']['paint']['drawRect'](F+this['width']-J,G+this['height']-J,0x6,0x6,{'borderColor':w,'fillColor':p});}}['draw'](){const c0=bD;this['drawTreeLine'](),this['drawText'](),this['drawImage'](),this['drawSelector'](),this['drawAutofillPiont'](),this[c0(0x1d7)]();}['getWidthByColIndexColSpan'](o,p){if(p===0x0)return 0x0;let r=0x0;for(let u=o;u<o+p;u++){const w=this['ctx']['header']['leafCellHeaders'][u];r+=w['width'];}return r;}['drawText'](){const c1=bD,{CELL_PADDING:o,BODY_FONT:p,PLACEHOLDER_COLOR:r,CELL_LINE_HEIGHT:u}=this['ctx'][c1(0x49d)],{placeholder:w}=this['column'];let x=this['displayText'],y=this['drawTextColor'];if(!this['ctx']['database']['getReadonly'](this['rowKey'],this['key'])&&w&&['',null,void 0x0]['includes'](this['text'])&&this['cellType']==='body'&&!(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[c1(0x40f)]+'_'+this['drawTextFont'];return this['ellipsis']=this['ctx']['paint']['drawText'](x,this['drawTextX'],this['drawTextY'],this['drawTextWidth'],this['drawTextHeight'],{'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'];}[bD(0x405)](){const c2=bD;if(this['drawSelectionImageSource']&&this['ctx']['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this['drawSelectionImageY'],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']),this['drawTreeImageSource']&&this['ctx']['paint']['drawImage'](this['drawTreeImageSource'],this['drawTreeImageX'],this['drawTreeImageY'],this['drawTreeImageWidth'],this['drawTreeImageHeight']),this[c2(0x1ee)]){const {CELL_HOVER_ICON_BG_COLOR:o,CELL_HOVER_ICON_BORDER_COLOR:p}=this['ctx'][c2(0x49d)];this['ctx']['paint']['drawRect'](this['drawHoverImageX']-0x2,this['drawHoverImageY']-0x2,this['drawHoverImageWidth']+0x4,this[c2(0x228)]+0x4,{'borderColor':p,'radius':0x4,'borderWidth':0x1,'fillColor':o}),this['ctx']['paint']['drawImage'](this['drawHoverImageSource'],this['drawHoverImageX'],this[c2(0x4c1)],this['drawHoverImageWidth'],this['drawHoverImageHeight']);}}['drawSelector'](){const c3=bD;if(this['cellType']==='footer')return;const {ENABLE_SELECTOR:o}=this['ctx']['config'];if(!o)return;const {xArr:p,yArr:r,xArrCopy:u,yArrCopy:w}=this['ctx'][c3(0x4eb)];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[c3(0x4a9)]({'xArr':this['ctx']['autofill']['xArr'],'yArr':this['ctx'][c3(0x227)][c3(0x2c8)],'borderColor':this['ctx']['config']['SELECT_BORDER_COLOR']||c3(0x362),'fillColor':'transparent','borderWidth':0x1,'lineDash':[0x4,0x4]}),this['drawBorder']({'xArr':p,'yArr':r,'borderColor':this[c3(0x270)]['config'][c3(0x419)]||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1});const [x,y]=p,[z,C]=r;!(x===y&&z===C)&&this['colIndex']>=x&&this[c3(0x3a2)]<=y&&this['rowIndex']>=z&&this[c3(0x31d)]<=C&&this[c3(0x270)][c3(0x4ab)]['drawRect'](this['drawX'],this['drawY'],this[c3(0x3fb)],this[c3(0x22c)],{'borderColor':'transparent','fillColor':this[c3(0x270)]['config']['SELECT_AREA_COLOR']||'rgba(82,146,247,0.1)'}),this['operation']&&this['rowIndex']>=z&&this[c3(0x31d)]<=C&&this['ctx'][c3(0x4ab)]['drawRect'](this['drawX'],this['drawY'],this['visibleWidth'],this['visibleHeight'],{'borderColor':c3(0x3ec),'fillColor':this['ctx']['config']['SELECT_ROW_COL_BG_COLOR']||'transparent'});}['drawErrorTip'](){const c4=bD;if(this['cellType']==='footer'||!this['message']||this['rowspan']===0x0||this['colspan']===0x0)return;const {ERROR_TIP_ICON_SIZE:o,ERROR_TIP_COLOR:p}=this[c4(0x270)]['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[c4(0x270)]['paint']['drawLine'](x,{'borderColor':p,'fillColor':p,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}['drawBorder'](r){const c5=bD,{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[c5(0x270)]['paint']['drawLine']([F+a8,G+D-0x1,F+E-a7,G+D-0x1],{'borderColor':R,'fillColor':T,'borderWidth':O,'lineCap':'round','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 c6=bD;m(this,'ctx'),m(this,'data'),m(this,'columns'),m(this,'footerData',[]),m(this,'rowKeyMap',new Map()),m(this,'colIndexKeyMap',new Map()),m(this,c6(0x1f6),new Map()),m(this,'rowIndexRowKeyMap',new Map()),m(this,'rowKeyRowIndexMap',new Map()),m(this,'checkboxKeyMap',new Map()),m(this,'selectionMap',new Map()),m(this,'expandMap',new Map()),m(this,'originalDataMap',new Map()),m(this,'changedDataMap',new Map()),m(this,'validationErrorMap',new Map()),m(this,'itemRowKeyMap',new WeakMap()),m(this,'bufferData',[]),m(this,'customHeader',{'fixedData':{},'sortData':{},'hideData':{},'resizableData':{}}),m(this,'overlayerAutoHeightMap',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,'sortState',new Map()),this['ctx']=o;const {data:r=[],columns:u=[],footerData:w=[]}=p;this['data']=r,this['footerData']=w,this['columns']=u,this['init']();}[bD(0x2ed)](o=!0x0){const c7=bD;this['ctx']['paint'][c7(0x2c1)](),this[c7(0x244)](),this[c7(0x2f6)]['clear'](),this[c7(0x2fb)]['clear'](),this['colIndexKeyMap']['clear'](),this['rowIndexRowKeyMap']['clear'](),this['rowKeyRowIndexMap']['clear'](),this['maxRowHeightCellMap']['clear']();const p=this['getColumns'](),r=ui(p);if(this['ctx']['hasSelection']=r['some'](u=>u['type']==='selection'),this['ctx'][c7(0x22a)]=r['some'](u=>u['type']==='tree'),o){this['originalDataMap']['clear'](),this['changedDataMap'][c7(0x345)](),this['validationErrorMap']['clear']();const {ROW_KEY:u}=this[c7(0x270)][c7(0x49d)];u?(this['ctx']['hasSelection']||this[c7(0x40d)][c7(0x345)](),this['ctx']['hasTree']||this[c7(0x1ed)]['clear']()):(this['selectionMap']['clear'](),this['expandMap']['clear']());}this['itemRowKeyMap']=new WeakMap(),this[c7(0x3ae)](this[c7(0x407)]),this['getData'](),this['bufferCheckState']['buffer']=!0x1;}['clearBufferData'](){this['bufferData']=[];}['initData'](o,p=0x0,r=[]){const c8=bD,u=o['length'],{ROW_KEY:w='',DEFAULT_EXPAND_ALL:x,CELL_HEIGHT:y,SELECTABLE_METHOD:z,CHECKBOX_KEY:C,TREE_CHILDREN_KEY:D}=this[c8(0x270)]['config'];o['forEach']((E,F)=>{const c9=c8;var G;D!==c9(0x1ef)&&(E[c9(0x1ef)]=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==c9(0x28f)&&(R=z),C){const V=E[C];if(this['checkboxKeyMap']['has'](V)){const a0=this['checkboxKeyMap'][c9(0x20c)](V)||[];a0['push'](K),this['checkboxKeyMap']['set'](V,a0);}else this['checkboxKeyMap'][c9(0x4b4)](V,[K]);}this['selectionMap'][c9(0x4b4)](K,{'key':C?E[C]:K,'row':E,'check':((G=this['selectionMap']['get'](K))==null?void 0x0:G['check'])||!0x1});const T=x||this[c9(0x1ed)]['get'](K)||E['_expand']||!0x1;this['expandMap']['set'](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[c9(0x353)]||(Array['isArray'](E['children'])?E['children']['length']>0x0:!0x1),'expandLoading':!0x1,'item':E,'parentRowKeys':r,'parentRowKey':r[r[c9(0x38b)]-0x1]||'','isLastChild':F===u-0x1}),Array['isArray'](E['children'])&&E['children']['length']&&this['initData'](E['children'],p+0x1,[...r,K]);});}[bD(0x243)](o,p){const ca=bD,r=this['rowIndexRowKeyMap']['get'](o);if(r===void 0x0)return;const u=this['rowKeyMap']['get'](r);u['height']=p,u[ca(0x4ea)]['_height']=p,this['clearBufferData']();}['setBatchRowHeight'](o){o['forEach'](({rowIndex:p,height:r})=>{const cb=b,u=this[cb(0x2a6)]['get'](p);if(u){const w=this['rowKeyMap']['get'](u);w['height']=r,w['item']['_height']=r;}}),this['clearBufferData']();}['setBatchCalculatedRowHeight'](o){const cd=bD;return o['every'](({height:p,rowIndex:r})=>this['getPositionForRowIndex'](r)['calculatedHeight']===p)?!0x1:(o['forEach'](({rowIndex:p,height:r})=>{const u=this['rowIndexRowKeyMap']['get'](p);if(u){const w=this['rowKeyMap']['get'](u),{height:x=-0x1}=this['getMaxRowHeightItem'](u)||{};w['calculatedHeight']=Math['max'](r,x);}}),this[cd(0x244)](),this['getData'](),!0x0);}['getAllRowsData'](){let o=[];const p=r=>{const ce=b;r[ce(0x2e6)](u=>{const cf=ce;o['push'](u),Array[cf(0x24d)](u['children'])&&p(u['children']);});};return p(this['data']),o;}[bD(0x3d2)](o){const p=r=>r['map'](u=>{const cg=b;var w,x,z,C,D,E,F,G;const J=u['children']&&Array[cg(0x24d)](u['children'])?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[cg(0x50c)])==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[cg(0x29a)](T=>T['hide']);return{...u,'children':J,'hide':N||(typeof u[cg(0x311)]=='function'?u['hide'](u):u['hide']),...L};});return p(o);}['getColumns'](){return this['generateColumns'](this['columns']);}['setColumns'](o){const cj=bD;this['columns']=o,this[cj(0x244)]();}['setData'](o){this['data']=o,this['init']();}['getData'](){const cm=bD;if(this['bufferData']['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 ck=b;o['push'](x);const y=this['itemRowKeyMap']['get'](x),{expand:z,hasChildren:C,height:D,calculatedHeight:E}=this['rowKeyMap']['get'](y),F=this['sumHeight'],G=Math['max'](E,D);this['sumHeight']+=G,this['rowIndexRowKeyMap']['set'](p,y),this['rowKeyRowIndexMap'][ck(0x4b4)](y,p),this['positions']['push']({'top':F,'height':G,'bottom':this['sumHeight'],'calculatedHeight':E}),p+=0x1,z&&C&&r(x['children']);});};this['rowIndexRowKeyMap']['clear'](),this['rowKeyRowIndexMap']['clear']();let u=this[cm(0x407)];if(typeof this['filterMethod']=='function'&&(u=this[cm(0x261)](u)),this['sortState']['size']){const w=Array[cm(0x455)](this[cm(0x36f)]['entries']())[cm(0x4e9)]((x,y)=>x[0x1][cm(0x46b)]-y[0x1]['timestamp']);u=this['sortDataRecursive'](u,w);}return r(u),this['bufferData']=o,{'data':o,'sumHeight':this['sumHeight'],'positions':this['positions']};}['setFooterData'](o){this['footerData']=o;}['getFooterData'](){return this['footerData'];}[bD(0x2d0)](o){this['filterMethod']=o;}[bD(0x376)](){const cn=bD;this[cn(0x261)]=void 0x0;}['getSortState'](o){const co=bD;return this['sortState'][co(0x20c)](o)||{'direction':'none','timestamp':0x0};}[bD(0x48b)](o,p){const cp=bD,r=Date['now']();this[cp(0x270)]['config']['SORT_STRICTLY']&&this['sortState']['clear'](),p===cp(0x26d)?this[cp(0x36f)]['delete'](o):this['sortState'][cp(0x4b4)](o,{'direction':p,'timestamp':r}),this['ctx'][cp(0x2e7)](cp(0x485),this['sortState']),this['clearBufferData'](),this[cp(0x270)]['emit']('draw');}['clearSort'](){const cq=bD;this['sortState']['clear'](),this['ctx']['emit']('sortChange',this[cq(0x36f)]),this['clearBufferData'](),this['ctx']['emit']('draw');}['sortDataRecursive'](o,p){const cr=bD;let r=[...o];for(const [u,{direction:w}]of p){if(w==='none')continue;const x=this['getColumnByKey'](u);!x||!x['column'][cr(0x41c)]||(r=this['applySingleColumnSort'](r,u,w,x['column']['sortBy']));}return r['map'](y=>(y['children']&&Array[cr(0x24d)](y['children'])&&(y[cr(0x1ef)]=this[cr(0x280)](y['children'],p)),y));}['applySingleColumnSort'](o,p,r,u){return o['sort']((w,x)=>{const y=w[p],z=x[p];let C=0x0;if(typeof u=='function')C=u(w,x);else{if(u==='number'){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['localeCompare'](G);}else u==='date'&&(C=Ns(y,z));}}return r==='asc'?C:-C;});}['expandItem'](o,p=!0x1){const ct=bD,r=this['rowKeyMap']['get'](o);r['expand']=p,this['expandMap'][ct(0x4b4)](o,p),this[ct(0x244)](),this['ctx']['emit']('draw');}['setExpandRowKeys'](o,p=!0x0){const cu=bD;this[cu(0x1ed)]['clear'](),o['forEach'](r=>{const cv=cu,u=this['rowKeyMap']['get'](r);this[cv(0x1ed)]['set'](r,p),u['expand']=p;}),this['clearBufferData'](),this['ctx']['emit'](cu(0x487));}['getExpandRowKeys'](){const cw=bD;let o=[];return this['rowKeyMap'][cw(0x2e6)]((p,r)=>{p['expand']&&o['push'](r);}),o;}['expandAll'](o){const cx=bD;this['expandMap'][cx(0x345)](),this['rowKeyMap']['forEach'](p=>{const cy=cx;p['expand']=o,this[cy(0x1ed)]['set'](p['key'],o);}),this['clearBufferData'](),this[cx(0x270)]['emit'](cx(0x487));}['expandLoading'](o,p=!0x1){const cz=bD,r=this['rowKeyMap'][cz(0x20c)](o);r[cz(0x2b9)]=p,this['clearBufferData'](),this['ctx']['emit']('draw');}['setExpandChildren'](o,p){const cA=bD,r=this['rowKeyMap']['get'](o);r['expand']=!0x0,this['expandMap']['set'](o,!0x0),r['expandLazy']=!0x0,r['item']['children']=p,this['initData'](r['item']['children'],r['level']+0x1),this[cA(0x244)]();}['getIsExpandLoading'](o){return this['rowKeyMap']['get'](o)['expandLoading'];}['getIsExpandLazy'](o){return this['rowKeyMap']['get'](o)['expandLazy'];}['getIsExpand'](o){const cB=bD;return this['rowKeyMap'][cB(0x20c)](o)['expand'];}['getRowForRowKey'](o){const cC=bD;return this[cC(0x2f6)]['get'](o);}['getRowForRowIndex'](o){const p=this['getRowKeyForRowIndex'](o);return this['rowKeyMap']['get'](p);}[bD(0x51d)](o){return this['rowIndexRowKeyMap']['get'](o)||'';}['getRowKeyByItem'](o){const cD=bD;return this[cD(0x38f)]['get'](o);}['getRowIndexForRowKey'](o){const cE=bD;return this['rowKeyRowIndexMap'][cE(0x20c)](o);}['getItemValueForRowIndexAndColIndex'](o,p){if(!(this['rowIndexRowKeyMap']['has'](o)&&this['colIndexKeyMap']['get'](p)))return null;const r=this['rowIndexRowKeyMap']['get'](o),u=this['colIndexKeyMap']['get'](p);return r===void 0x0||u===void 0x0?null:{'rowKey':r,'key':u,'value':this['getItemValue'](r,u)};}['getItemValue'](o,p){const r=this['rowKeyMap']['get'](o);return r&&r['item']?r['item'][p]===void 0x0?null:r['item'][p]:null;}async['batchSetItemValue'](p,r=!0x1,u=!0x0,w='none'){const cJ=bD;let x=[],y=u;const z=new Set();let C=[],D=p['map'](K=>{const cF=b,{rowKey:N,key:O}=K;let R=K['value'],T=R;const V=this['getRowDataItemForRowKey'](N),a0=this['getItemValue'](N,O),a1=this[cF(0x3a6)](N,O);return a1?.['type']==='number'&&(['',void 0x0,null]['includes'](R)?T=null:/^-?\d+(\.\d+)?$/[cF(0x49b)](''+R)?T=Number(R):(T=a0,C[cF(0x1e7)]({...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['key'])),C['length']){const K={'code':'ERR_BATCH_SET_NUMBER_VALUE','message':'Assignment\x20failed,\x20not\x20a\x20numeric\x20type','data':C};this['ctx']['emit']('error',K);}if(D=D['filter'](L=>L['oldValue']!==L['value']),!D['length'])return;const {BEFORE_VALUE_CHANGE_METHOD:E}=this['ctx']['config'];w==='none'&&typeof E=='function'&&(D=await E(D),y=!0x1),D['forEach'](L=>{const cG=b,{value:N,rowKey:O,key:R}=L,T=this[cG(0x418)](O,R);z['add'](O),this['setItemValue'](O,R,N,!0x1,!0x1,!0x1,y),x['push']({'rowKey':O,'key':R,'oldValue':T,'newValue':N});});let F=[];z['forEach'](L=>{const cH=b;F['push'](this[cH(0x270)][cH(0x29c)]['getRowDataItemForRowKey'](L));});const G=D['map'](({rowKey:L,key:N})=>this['getValidator'](L,N));Promise['all'](G)['then'](()=>{const cI=b;this['validationErrorMap'][cI(0x2ab)]===0x0&&this['changedDataMap']['size']>0x0&&this['ctx']['emit']('validateChangedData',this['getChangedData']());});const J=D['map'](L=>{const N=!!this['getValidationError'](L['rowKey'],L['key'])['length'];return{...L,'errorTip':N};});this['ctx']['emit'](cJ(0x27b),J,F),r&&this['ctx'][cJ(0x2e9)]['pushState']({'changeList':x,'scrollX':this['ctx']['scrollX'],'scrollY':this['ctx']['scrollY'],'type':'multiple'}),this['ctx']['emit']('draw');}async['setItemValue'](p,r,u,w=!0x1,x=!0x1,z=!0x1,C=!0x0){const cK=bD;if(!this['rowKeyMap']['has'](p))return{};const {item:D}=this[cK(0x2f6)]['get'](p);let E=D[r],F=u;if(C&&this['ctx'][cK(0x29c)]['getReadonly'](p,r))return{'oldValue':E,'newValue':E};D[r]!==null&&typeof D[r]==cK(0x423)&&(E=JSON[cK(0x3d7)](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[cK(0x3a6)](p,r);if(L?.['type']==='number'){if(['',void 0x0,null][cK(0x2cd)](u))F=null;else{if(/^-?\d+(\.\d+)?$/[cK(0x49b)](''+u))F=Number(u);else{F=E;const O={'code':'ERR_SET_NUMBER_VALUE','message':'Assignment\x20failed,\x20not\x20a\x20numeric\x20type','data':[{'rowKey':p,'key':r,'value':F,'oldValue':E,'row':K}]};this['ctx']['emit']('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']['set'](G,F),D[r]=F;return this[cK(0x270)]['hasEvent']('iterationChange')&&this['ctx'][cK(0x2e7)]('iterationChange',{'rowKey':p,'key':r,'oldValue':E,'value':F,'originalValue':this['originalDataMap']['get'](G),'row':K}),x&&this['ctx']['emit']('draw'),{'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 cL=bD,{CHECKBOX_KEY:r}=this[cL(0x270)]['config'];if(r){if(!this['rowKeyMap']['has'](o))return!0x1;const {item:u}=this[cL(0x2f6)]['get'](o),w=u[r];this['checkboxKeyMap'][cL(0x4ba)](w)&&(this['checkboxKeyMap']['get'](w)||[])[cL(0x2e6)](x=>{const y=this['selectionMap']['get'](x);y&&(y['check']=p);});}}['toggleRowSelection'](o,p){const cM=bD,r=this['rowKeyMap']['get'](o),u=this[cM(0x40d)]['get'](o);if(!u)return;p==='selection-tree'||p==='tree-selection'?this['toggleTreeSelection'](o):(u['check']=!u['check'],this['setRowSelectionByCheckboxKey'](o,u['check'])),this['ctx']['emit']('toggleRowSelection',r);const w=this[cM(0x4bd)]();this['ctx']['emit']('selectionChange',w),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['toggleTreeSelection'](o){const cN=bD,p=this['getTreeSelectionState'](o),r=this['ctx']['config']['TREE_SELECT_MODE'];if(r==='auto')p['checked']&&!p['indeterminate']?(this['clearTreeSelectionRecursive'](o),this['setRowSelection'](o,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](o),this[cN(0x2ca)](o,!0x0,!0x1));else{if(r===cN(0x44e))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[cN(0x40d)]['get'](o);u&&(u['check']=!u[cN(0x27e)],this['setRowSelectionByCheckboxKey'](o,u['check']));}}}this['ctx'][cN(0x2e7)]('selectionChange',this[cN(0x4bd)]()),this['ctx']['emit']('draw');}['selectTreeSelectionRecursive'](o){const cO=bD;this['getTreeChildren'](o)[cO(0x2e6)](p=>{const cP=cO;this['setRowSelectionByParent'](p,!0x0),this[cP(0x2ac)](p);});}['clearTreeSelectionRecursive'](o){this['getTreeChildren'](o)['forEach'](p=>{this['setRowSelectionByParent'](p,!0x1),this['clearTreeSelectionRecursive'](p);});}['updateParentTreeSelection'](o){const cQ=bD,p=this['getTreeParent'](o);if(!p)return;const r=this['getTreeChildren'](p)[cQ(0x37d)](z=>this['selectionMap']['get'](z)),u=r[cQ(0x2a9)](z=>z?.['check'])['length'],w=r['length'];let x=!0x1;w>0x0&&(u===0x0?x=!0x1:u===w||this['ctx']['config'][cQ(0x24f)]==='auto'?x=!0x0:this[cQ(0x270)]['config']['TREE_SELECT_MODE']===cQ(0x44e)&&(x=!0x1));const y=this['selectionMap']['get'](p);y&&y['check']!==x&&(y[cQ(0x27e)]=x,this['setRowSelectionByCheckboxKey'](p,x),this['updateParentTreeSelection'](p));}['setRowSelection'](o,p,r=!0x0){const cR=bD,u=this[cR(0x40d)][cR(0x20c)](o);u&&(u[cR(0x27e)]=p,this['setRowSelectionByCheckboxKey'](o,u['check']),this['ctx']['emit'](cR(0x2ca),p,u[cR(0x3da)]),(this['ctx']['config']['TREE_SELECT_MODE']==='auto'||this['ctx'][cR(0x49d)]['TREE_SELECT_MODE']==='cautious')&&this['updateParentTreeSelection'](o),r&&(this['bufferCheckState']['buffer']=!0x1,this['ctx'][cR(0x2e7)]('draw')));}['setRowSelectionByParent'](o,p){const r=this['selectionMap']['get'](o);r&&(r['check']=p,this['setRowSelectionByCheckboxKey'](o,r['check']));}['getSelectionRows'](){let o=[];return this['selectionMap']['forEach'](p=>{const cS=b;p['check']&&o[cS(0x1e7)](p['row']);}),o;}['getRowSelection'](o){const cT=bD,p=this['selectionMap'][cT(0x20c)](o);return p?p['check']:!0x1;}['getTreeSelectionState'](p){const cU=bD;if(!this['getRowForRowKey'](p))return{'checked':!0x1,'indeterminate':!0x1};const r=this['selectionMap']['get'](p),u=r?.['check']||!0x1;if(this['getTreeChildren'](p)[cU(0x38b)]===0x0)return{'checked':u,'indeterminate':!0x1};let w=!0x1,x=u;if(this['ctx'][cU(0x49d)]['TREE_SELECT_MODE']===cU(0x4da)){const y=F=>{const cV=cU,G=this['getTreeChildren'](F);let J=[];for(const K of G)J[cV(0x1e7)](K),J['push'](...y(K));return J;},z=y(p)['map'](F=>this['selectionMap']['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']['TREE_SELECT_MODE']==='cautious'){const F=O=>{const R=this['getTreeChildren'](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'])['length'],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['ctx']['config']['TREE_SELECT_MODE']==='strictly'&&(w=!0x1,x=u);}return{'checked':x,'indeterminate':w};}['getTreeChildren'](o){const cW=bD,p=this[cW(0x426)](o);if(!p||!p[cW(0x4ea)]||!p['item']['children'])return[];const r=[],u=w=>{const cX=cW;for(const x of w){const y=this['getRowKeyByItem'](x);y&&r['push'](y),x[cX(0x1ef)]&&x['children']['length']>0x0&&u(x['children']);}};return u(p['item']['children']),r;}['getTreeParent'](o){const p=(r,u)=>{const cY=b;for(const w of r){const x=this[cY(0x21f)](w);if(w['children'])for(const y of w['children']){if(this[cY(0x21f)](y)===u)return x;const z=p(w['children'],u);if(z)return z;}}return null;};return p(this['data'],o);}['getRowSelectable'](o){const cZ=bD,{selectable:p,item:r,rowIndex:u}=this[cZ(0x2f6)]['get'](o);return typeof p=='function'?p({'row':r,'rowIndex':u}):p;}[bD(0x2b1)](){const d0=bD;this['ctx'][d0(0x49d)]['TREE_SELECT_MODE']==='auto'||this['ctx']['config']['TREE_SELECT_MODE']===d0(0x44e)?this['rowKeyMap']['forEach']((p,r)=>{const d1=d0;let u=p['selectable'];if(typeof u=='function'&&(u=u({'row':p[d1(0x4ea)],'rowIndex':p['rowIndex']})),u){const w=this['selectionMap']['get'](r);w&&(w['check']=!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']('toggleAllSelection',o),this['ctx']['emit'](d0(0x219),o),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['clearSelection'](o=!0x1){const d2=bD,p=this['ctx'][d2(0x49d)]['TREE_SELECT_MODE']===d2(0x4da)||this['ctx']['config']['TREE_SELECT_MODE']===d2(0x44e);o?p?this['rowKeyMap']['forEach']((u,w)=>{const d3=d2,x=this['selectionMap'][d3(0x20c)](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)=>{this['selectionMap']['set'](w,{'check':!0x1,'row':u['item'],'key':w});}));const r=this['getSelectionRows']();this['ctx']['emit']('clearSelection'),this[d2(0x270)]['emit']('selectionChange',r),this['bufferCheckState']['buffer']=!0x1,this[d2(0x270)]['emit']('draw');}['getCheckedState'](){const d4=bD,{buffer:p,...r}=this[d4(0x235)];if(p)return r;const u=this['rowKeyMap']['size'];let w=0x0,x=0x0;const y=this[d4(0x40d)]['size'],z=Array['from'](this['selectionMap']['values']())['some'](G=>G['check']);this['rowKeyMap']['forEach']((G,J)=>{const d5=d4;var K;(K=this['selectionMap'][d5(0x20c)](J))!=null&&K[d5(0x27e)]&&(w+=0x1);let L=G['selectable'];typeof L==d5(0x28f)&&(L=L({'row':G['item'],'rowIndex':G[d5(0x31d)]})),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};}[bD(0x3d9)](o=[]){const d6=bD;this['colIndexKeyMap'][d6(0x345)](),o['forEach'](p=>{this['colIndexKeyMap']['set'](p['colIndex'],p['key']);});}['getColumnByColIndex'](o){var p;const r=this['colIndexKeyMap']['get'](o);if(r&&this['headerMap']['has'](r))return(p=this['headerMap']['get'](r))==null?void 0x0:p['column'];}['getColumnByKey'](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'];}[bD(0x4b7)](o){const d7=bD,p=this['colIndexKeyMap']['get'](o);if(p&&this[d7(0x1f6)]['has'](p))return this[d7(0x1f6)][d7(0x20c)](p);}['getChangedData'](){const d8=bD;let o=[];return this[d8(0x371)][d8(0x2e6)]((p,r)=>{const d9=d8,u=this['originalDataMap'][d9(0x20c)](r),w=r['split']('_')[0x0],x=r['split']('_')[0x1];u!==p&&o[d9(0x1e7)]({'rowKey':w,'colKey':x,'originalValue':u,'row':this['ctx']['database']['getRowDataItemForRowKey'](w),'value':p});}),o;}['getChangedRows'](){const o=new Set();this['changedDataMap']['forEach']((r,u)=>{const da=b,w=this['originalDataMap'][da(0x20c)](u),x=u['split']('_')[0x0];w!==r&&o['add'](x);});let p=[];return o['forEach'](r=>{p['push'](this['ctx']['database']['getRowDataItemForRowKey'](r));}),p;}['isHasChangedData'](o,p){const db=bD,r=o+'_'+p;if(!this[db(0x371)][db(0x4ba)](r))return!0x1;const u=this['originalDataMap']['get'](r),w=this['changedDataMap']['get'](r);return u!==w;}['getPositionForRowIndex'](o){const dd=bD;return o<this['positions']['length']?this[dd(0x2b4)][o]:{'height':0x0,'top':0x0,'bottom':0x0,'calculatedHeight':0x0};}['setHeader'](o,p){const de=bD;return o?(this[de(0x1f6)]['set'](o,p),!0x0):!0x1;}['getReadonly'](o,p){const df=bD,{DISABLED:r}=this[df(0x270)]['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[df(0x428)],{BODY_CELL_READONLY_METHOD:z}=this[df(0x270)]['config'];if(typeof z=='function'&&w){const C=z({'row':u['item'],'rowIndex':u['rowIndex'],'colIndex':w[df(0x3a2)],'column':w['column'],'value':this['getItemValue'](o,p)});if(C!==void 0x0)return C;}return y||x;}['clearValidate'](){const dg=bD;this['validationErrorMap'][dg(0x345)]();}['hasValidationError'](){return this['validationErrorMap']['size']!==0x0;}['getValidator'](o,p){const dj=bD;return this[dj(0x270)]['database'][dj(0x3e8)](o,p)?new Promise(r=>{r([]);}):new Promise(r=>{const dk=dj,u=this['rowKeyMap']['get'](o),w=this['headerMap'][dk(0x20c)](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[dk(0x3fc)];if(typeof x==dk(0x28f)){const C=x({'row':u['item'],'rowIndex':u['rowIndex'],'colIndex':w[dk(0x3a2)],'column':y,'value':this['getItemValue'](o,p)});C&&(z=C);}if(z){const D={'row':u['item'],'rowIndex':u['rowIndex'],'colIndex':w[dk(0x3a2)],'column':y,'key':p,'rowKey':o,'value':this[dk(0x418)](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([]);});}['getHeightByRowIndexRowSpan'](o,p){const dm=bD;let r=0x0;for(let u=0x0;u<p;u++){const w=this[dm(0x2b4)][o+u];w&&(r+=w['height']);}return r;}['getSpanInfo'](r){const dq=bD,{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 dn=b,aq=this[dn(0x418)](am,ap)??'';return''+ao+aq;},'');if(aj===an)a8=ak;else break;}for(let ao=C;ao<=this['ctx']['maxRowIndex'];ao++){const ap=this['rowIndexRowKeyMap']['get'](ao)||'',aq=a0['reduce']((ar,au)=>{const dp=b,av=this[dp(0x418)](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']['get'](av)||'',{item:ay}=this['rowKeyMap']['get'](ax),az=this[dq(0x418)](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[dq(0x513)](aA);if(!aB)break;const aC=this['getItemValue'](E,D),aD=this['getItemValue'](E,aB['key']);if(aC===aD&&a1[dq(0x2cd)](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[dq(0x418)](E,aF['key']);if(aG===aH&&a1['includes'](aF['key']))ab=aE;else break;}for(let aI=aa;aI<O;aI++){const aJ=this[dq(0x513)](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['key'],'value':this['getItemValue'](E,aL[dq(0x4b6)]),'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 dr=bD,u=o+'_'+p,w=this[dr(0x426)](o),x=w?.['rowIndex'],y=this[dr(0x2bd)](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 u=o+'_'+p;this['validationErrorMap']['set'](u,r);}['clearValidationError'](o,p){const du=bD,r=o+'_'+p;this[du(0x3cf)]['has'](r)&&this['validationErrorMap'][du(0x41e)](r);}['getValidationError'](o,p){const r=o+'_'+p;return this['validationErrorMap']['get'](r)||[];}['getVirtualBodyCell'](o,p,r=!0x0){const dv=bD,u=this['getColumnByColIndex'](p),w=this[dv(0x3f3)](o);return!u||!w?void 0x0:new Vt(this['ctx'],o,p,0x0,0x0,0x0,0x0,u,w[dv(0x4ea)],'body',r);}['getVirtualBodyCellByKey'](o,p){const dw=bD,r=this[dw(0x416)](o),u=this['getColIndexForKey'](p);if(!(r===void 0x0||u===void 0x0))return this[dw(0x23b)](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;}['calculateMaxTreeDepth'](o,p=0x0){let r=p;return o['forEach'](u=>{const dx=b;if(Array[dx(0x24d)](u['children'])&&u[dx(0x1ef)]['length']>0x0){const w=this['calculateMaxTreeDepth'](u['children'],p+0x1);r=Math['max'](r,w);}}),r;}[bD(0x500)](o){this['overlayerAutoHeightMap']=o;}['getOverlayerAutoHeightMap'](){const dy=bD;return this[dy(0x38d)];}['getOverlayerAutoHeight'](o,p){const r=o+'_'+p;return this['overlayerAutoHeightMap']['get'](r)||0x0;}['setCustomHeader'](o,p=!0x1){const dz=bD;if(['fixedData','sortData','hideData','resizableData'][dz(0x2e6)](r=>{const u=o[r];u!==void 0x0&&(this['customHeader'][r]=u);}),!p){const r=this['clearCustomHeaderInvalidValues'](this['columns']);this['ctx']['emit']('customHeaderChange',r);}}['resetCustomHeader'](){const dA=bD;this['customHeader']={},this['ctx']['emit']('resetHeader'),this[dA(0x270)]['emit'](dA(0x1f8),this['customHeader']);}[bD(0x43c)](){return this['customHeader'];}['setCustomHeaderResizableData'](o,p){let {resizableData:r={}}=this['customHeader'];r[o]=p,this['setCustomHeader']({'resizableData':r});}['setCustomHeaderHideData'](o,p){const dB=bD;let {hideData:r={}}=this[dB(0x347)];o['forEach'](u=>{r[u]=p;}),this[dB(0x337)]({'hideData':r}),this[dB(0x270)]['emit']('resetHeader');}['setCustomHeaderFixedData'](o,p){const dC=bD;let {fixedData:r={}}=this['customHeader'];o['forEach'](u=>{r[u]=p;}),this['setCustomHeader']({'fixedData':r}),this['ctx'][dC(0x2e7)]('resetHeader');}[bD(0x305)](o){const p=(u,w={})=>{u['forEach'](x=>{const dD=b;x['children']&&x[dD(0x1ef)]['length']>0x0&&p(x['children'],w);const y=(z,C)=>{const dE=dD;var D,E;const F=(D=this[dE(0x347)][z])==null?void 0x0:D[x['key']];F!==void 0x0&&F!==C&&(w[z]||(w[z]={}),w[z][x['key']]=F,z===dE(0x2c9)&&!F&&!C&&((E=w[z])==null||delete E[x['key']]));};y('fixedData',x['fixed']),y(dD(0x43a),x['sort']),y('hideData',x[dD(0x311)]),y(dD(0x50c),x['width']);});};let r={};return p(o,r),r;}['setMaxRowHeightItem'](o,p,r){this['maxRowHeightCellMap']['set'](o,{'key':p,'height':r});}[bD(0x2e2)](o){return this['maxRowHeightCellMap']['get'](o);}['clearChangeData'](){this['changedDataMap']['clear']();}}class ws{constructor(o){const dF=bD;m(this,dF(0x270)),m(this,dF(0x2e9),[]),m(this,'historyIndex',-0x1),this['ctx']=o,this['init']();}['init'](){const dG=bD;this[dG(0x270)]['on']('keydown',o=>{const dH=dG;if(!this[dH(0x270)]['editing']){if(o['ctrlKey']&&!o[dH(0x1fb)]&&o['code']==='KeyZ'||o['metaKey']&&!o[dH(0x1fb)]&&o['code']==='KeyZ'){o['preventDefault'](),this[dH(0x270)]['clearSelector'](),this[dH(0x270)]['clearAutofill'](),this['backState']();return;}if(o['ctrlKey']&&o['code']===dH(0x492)||o[dH(0x497)]&&o['shiftKey']&&o['code']==='KeyZ'||o[dH(0x297)]&&o['shiftKey']&&o['code']==='KeyZ'){o[dH(0x518)](),this['ctx']['clearSelector'](),this['ctx']['clearAutofill'](),this['forwardState']();return;}}});}['pushState'](o){const dI=bD,{HISTORY_NUM:p=0x0,ENABLE_HISTORY:r}=this['ctx']['config'];r&&(this['history']['push'](o),this['history'][dI(0x38b)]>p&&this['history']['splice'](0x0,0x1),this['historyIndex']=this['history']['length']-0x1);}[bD(0x4f8)](){const dJ=bD;if(this['historyIndex']>=0x0){const {changeList:o,scrollX:p,scrollY:r}=this[dJ(0x2e9)][this['historyIndex']],u=o['map'](w=>({'rowKey':w['rowKey'],'key':w['key'],'value':w['oldValue'],'row':{}}));this['ctx']['setScroll'](p,r),this['ctx'][dJ(0x29c)][dJ(0x1d8)](u,!0x1,!0x1,'back'),this[dJ(0x4a7)]-=0x1;}}['forwardState'](){const dK=bD;if(this['historyIndex']<this['history']['length']-0x1){this['historyIndex']+=0x1;const {changeList:o}=this[dK(0x2e9)][this[dK(0x4a7)]],p=o['map'](r=>({'rowKey':r['rowKey'],'key':r[dK(0x4b6)],'value':r['newValue'],'row':{}}));this[dK(0x270)]['database'][dK(0x1d8)](p,!0x1,!0x1,'forward');}}['clear'](){this['history']=[],this['historyIndex']=-0x1;}}class Rs{constructor(o){const dL=bD;m(this,'eventTasks',new Set()),m(this,dL(0x270)),this['ctx']=o,this[dL(0x2ed)]();}['init'](){const dM=bD;this['bind'](window,'resize',this['handleResize']['bind'](this)),this['bind'](window,dM(0x463),this['handleMouseUp'][dM(0x4e5)](this)),this['bind'](window,'mousemove',this['handleMousemove']['bind'](this)),this['bind'](window,dM(0x287),this['handleOutsideMousedown']['bind'](this)),this['bind'](window,'mousedown',this['handleOutsideMousedown']['bind'](this)),this[dM(0x4e5)](this['ctx']['stageElement'],'click',this['handleClick']['bind'](this)),this['bind'](window,'keydown',this['handleKeydown'][dM(0x4e5)](this)),this['bind'](this[dM(0x270)][dM(0x254)],'wheel',this['handleWheel']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx']['stageElement'],'touchstart',this['handleTouchstart']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx'][dM(0x254)],'touchend',this['handleTouchend']['bind'](this)),this[dM(0x4e5)](this['ctx']['stageElement'],'touchmove',this['handleTouchmove']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx']['stageElement'],'contextmenu',this['handleContextMenu']['bind'](this)),this[dM(0x4e5)](this[dM(0x270)][dM(0x254)],'mousedown',this['handleMouseDown']['bind'](this)),this[dM(0x4e5)](this['ctx']['stageElement'],'dblclick',this['handleDblclick']['bind'](this)),this[dM(0x4e5)](this['ctx']['stageElement'],'mouseover',this['handleMouseover']['bind'](this)),this[dM(0x4e5)](this['ctx']['stageElement'],dM(0x264),this['handleMouseout']['bind'](this)),this['bind'](document,'selectionchange',this['selectionchange'][dM(0x4e5)](this));}['selectionchange'](){const dN=bD;this['ctx'][dN(0x320)]='';const o=window['getSelection']();o&&o['toString']()&&(this['ctx']['domSelectionStr']=o['toString']());}['clearDomSelection'](){const dO=bD,o=window['getSelection']();o&&!o[dO(0x296)]&&o['removeAllRanges']();}['destroy'](){const dQ=bD;Array['from'](this['eventTasks'])['forEach'](({target:o,name:p,fn:r,options:u})=>{const dP=b;this[dP(0x2f5)](o,p,r,u);}),this['eventTasks'][dQ(0x345)]();}['handleResize'](o){const dR=bD;this[dR(0x270)][dR(0x2e7)](dR(0x3d1),o),this[dR(0x270)]['emit']('resize',o);}[bD(0x33f)](o){const dS=bD;this[dS(0x379)](),o['button']===0x0&&(this['ctx']['mousedown']=!0x0),this['ctx']['emit']('mousedown',o);}['handleMousemove'](o){const dT=bD,p=o,r=this[dT(0x270)]['containerElement']['getBoundingClientRect'](),u=p['clientX']-r[dT(0x4f7)],w=p[dT(0x360)]-r['top'];this['ctx'][dT(0x252)]=u,this['ctx']['mouseY']=w,this['ctx']['emit']('mousemove',o);}['handleMouseUp'](o){const dU=bD;o['button']===0x0&&(this['ctx']['mousedown']=!0x1),this[dU(0x270)]['emit'](dU(0x463),o);}['handleClick'](o){const dV=bD;this[dV(0x270)]['emit']('click',o);}[bD(0x44d)](o){const {ENABLE_KEYBOARD:p}=this['ctx']['config'];p&&this['ctx']['isTarget'](o)&&(this['ctx']['dragHeaderIng']||this['ctx']['emit']('keydown',o));}['handleWheel'](o){const dW=bD;this['ctx']['emit'](dW(0x318),o);}[bD(0x40c)](o){this['ctx']['emit']('touchstart',o);}['handleTouchend'](o){const dX=bD;this[dX(0x270)]['emit']('touchend',o);}['handleTouchmove'](o){const dY=bD;this['ctx'][dY(0x2e7)]('touchmove',o);}['handleContextMenu'](o){o['preventDefault'](),this['ctx']['emit']('contextMenu',o);}['handleMouseover'](o){this['ctx']['isMouseoverTargetContainer']=!0x0,this['ctx']['emit']('mouseover',o);}['handleMouseout'](o){this['ctx']['isMouseoverTargetContainer']=!0x1,this['ctx']['emit']('mouseout',o);}['handleDblclick'](o){const dZ=bD;this['ctx'][dZ(0x2e7)]('dblclick',o);}['handleOutsideMousedown'](o){const e0=bD;this['ctx']['selector']['enable']&&(o[e0(0x4c5)]instanceof Window||o[e0(0x4c5)]instanceof Node&&!this['ctx'][e0(0x257)]['contains'](o['target']))&&this['ctx']['emit']('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 e1=bD;o[e1(0x1eb)](p,r,u);for(const w of this['eventTasks'])if(w['target']===o&&w['name']===p&&w['fn']===r){this['eventTasks']['delete'](w);break;}}}class zs{constructor(){const e2=bD;m(this,e2(0x390),new Map());}[bD(0x4ba)](o){return this['events']['has'](o);}['on'](o,p){const r=this['events']['get'](o)||[];r['push'](p),this['events']['set'](o,r);}[bD(0x452)](o,p){const r=(...u)=>{p(...u),this['off'](o,r);};return this['on'](o,r),this;}['off'](o,p){const e3=bD,r=this[e3(0x390)][e3(0x20c)](o);if(r){const u=r[e3(0x4d0)](p);u>=0x0&&(r['splice'](u,0x1),r[e3(0x38b)]===0x0?this['events']['delete'](o):this['events']['set'](o,r));}}[bD(0x2e7)](o,...p){const r=this['events']['get'](o);r&&r['forEach'](u=>{u(...p);});}[bD(0x3a0)](){this['events']['clear']();}}class Cs{constructor(o){const e4=bD;m(this,'ctx'),m(this,'textCacheMap',new Map());const p=o[e4(0x289)]('2d');if(!p)throw new Error(e4(0x514));this['ctx']=p;}['clearTextCache'](){this['textCacheMap']['clear']();}['scale'](o){this['ctx']['setTransform'](0x1,0x0,0x0,0x1,0x0,0x0),this['ctx']['scale'](o,o);}['save'](){this['ctx']['save']();}['restore'](){const e5=bD;this[e5(0x270)]['restore']();}['translate'](o,p){this['ctx']['translate'](o,p);}['setCursor'](o=bD(0x4e4)){const e6=bD;this['ctx']['canvas'][e6(0x1f7)][e6(0x47f)]=o;}['clear'](o=0x0,p=0x0,r,u){this['ctx']['clearRect'](o,p,r||this['ctx']['canvas']['width'],u||this['ctx']['canvas']['height']);}['drawShadow'](p,r,u,w,x){const e7=bD,{fillColor:y,side:z,shadowWidth:C,colorStart:D,colorEnd:E}=x;this['ctx']['save'](),y&&(this['ctx']['fillStyle']=y,this['ctx'][e7(0x393)](p,r,u,w));let F;switch(z){case e7(0x4f7):F=this['ctx']['createLinearGradient'](p-C,r,p,r),F['addColorStop'](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this['ctx']['fillRect'](p-C,r,C,w);break;case e7(0x34f):F=this['ctx']['createLinearGradient'](p+u,r,p+u+C,r),F[e7(0x49a)](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this['ctx'][e7(0x393)](p+u,r,C,w);break;case'top':F=this[e7(0x270)]['createLinearGradient'](p,r-C,p,r),F[e7(0x49a)](0x0,D),F['addColorStop'](0x1,E),this[e7(0x270)]['fillStyle']=F,this['ctx']['fillRect'](p,r-C,u,C);break;case'bottom':F=this['ctx']['createLinearGradient'](p,r+w,p,r+w+C),F['addColorStop'](0x0,D),F['addColorStop'](0x1,E),this['ctx'][e7(0x3d0)]=F,this['ctx'][e7(0x393)](p,r+w,u,C);break;default:console['error']('Invalid\x20side\x20specified\x20for\x20shadow');break;}this[e7(0x270)]['restore']();}['drawLine'](o,p){const e8=bD;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[e8(0x270)]['moveTo'](o[0x0]-0.5,o[0x1]-0.5);for(let w=0x2;w<o[e8(0x38b)];w+=0x2)this['ctx']['lineTo'](o[w]-0.5,o[w+0x1]-0.5);this[e8(0x270)]['strokeStyle']=r,this['ctx'][e8(0x355)]=u,p['lineDash']&&(this['ctx']['lineDashOffset']=p[e8(0x28e)]??0x0,this['ctx']['setLineDash'](p['lineDash'])),p[e8(0x239)]&&(this['ctx']['fillStyle']=p['fillColor'],this['ctx']['fill']()),p['borderColor']&&(this['ctx']['strokeStyle']=p['borderColor']),this[e8(0x270)]['stroke'](),this['ctx'][e8(0x31e)](),this[e8(0x270)]['restore']();}['drawImage'](o,p,r,u,w){const e9=bD;this[e9(0x270)][e9(0x389)](),this['ctx']['drawImage'](o,p,r,u,w),this['ctx']['restore']();}['drawRect'](p,r,u,w,{borderWidth:x=0x1,borderColor:y,fillColor:z,radius:C=0x0}={}){const ea=bD;if(this['ctx']['save'](),this['ctx']['beginPath'](),z!==void 0x0&&(this['ctx'][ea(0x3d0)]=z),y!==void 0x0&&(this['ctx']['lineWidth']=x,this['ctx']['strokeStyle']=y),C===0x0)this['ctx'][ea(0x4e2)](p-0.5,r-0.5,u,w);else{const [D,E,F,G]=typeof C==ea(0x306)?[C,C,C,C]:C;this[ea(0x270)]['moveTo'](p+D,r),this['ctx']['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'][ea(0x4fb)](p,r,p+D,r,D);}z!==void 0x0&&this['ctx']['fill'](),y!==void 0x0&&this['ctx']['stroke'](),this['ctx']['restore']();}['drawText'](r='',C,D,E,F,K={}){const eb=bD;var O;this['ctx'][eb(0x389)]();const {font:a0=eb(0x505),align:a1='center',color:a2='#495060',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'][eb(0x3d0)]=a2,this[eb(0x270)]['textAlign']=a1,['',null,void 0x0]['includes'](r))return this['ctx']['restore'](),!0x1;const a9=parseInt(((O=a0['match'](/\d+/))==null?void 0x0:O[0x0])||'12')*(K['lineHeight']||1.2),aa=E-a3*0x2-a7-a8;let ab=!0x1;const ad=Math['round']((F-0x2*a3)/a9);let ae=this['wrapText'](r,aa,K['cacheTextKey']),af=Math[eb(0x2a5)](ae[eb(0x38b)],Math['max'](ad,0x1));a5==='auto'&&a6?af=ae[eb(0x38b)]:typeof a5=='number'&&a5<af&&a5!==0x1?af=a5:(a5===0x1&&(ae=[r],af=0x1),a5===eb(0x4da)&&ad===0x1&&(ae=[r],af=0x1));let ag=D+a3;const ai=Math[eb(0x475)](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[eb(0x270)]['textBaseline']='top',ak===af-0x1){const ao=ae['slice'](ak)['join'](''),{_text:ap,ellipsis:aq}=this['handleEllipsis'](ao,E,a3,a0);this['ctx']['fillText'](ap,aj,an),ab=aq;break;}this[eb(0x270)]['fillText'](am,aj,an);}if(K[eb(0x2ff)]&&ae['length']){const ar=ae['reduce']((ay,az)=>Math['max'](ay,this['ctx']['measureText'](az)['width']),0x0),au=Math[eb(0x475)](ar);let av=aj,aw=aj+au;a1==='center'?(av=aj-au/0x2,aw=aj+au/0x2):a1==='right'&&(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;}['wrapText'](p,r,u=''){const ed=bD;if(!p)return[''];if(u&&this['textCacheMap']['has'](u))return this['textCacheMap']['get'](u)||[''];const w=[],x=p['split']('\x0a');for(const z of x){if(z===''){w[ed(0x1e7)]('');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[ed(0x1e7)](D),D=E):(w['push'](E),D='');}D&&w['push'](D);}const y=w[ed(0x38b)]>0x0?w:[''];return u&&this['textCacheMap']['set'](u,y),y;}['calculateTextHeight'](p='',r,u={}){const ee=bD;var w;const {font:x='12px\x20Arial',padding:y=0x0,align:z='center',color:C='#495060',maxLineClamp:D=0x1,cacheTextKey:E=''}=u;this['ctx'][ee(0x389)](),this['ctx']['font']=x,this['ctx'][ee(0x3d0)]=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===ee(0x4da)?L=K['length']:K['length']>D?L=D:L=K['length'],this[ee(0x270)][ee(0x471)](),Math['max'](Math['floor'](L*G+y*0x2),Math['floor'](F+y*0x2));}['handleEllipsis'](p,r,u=0x0,w='12px\x20Arial'){const ef=bD;this['ctx']['save']();let x=!0x1,y=p;if(this['ctx']['font']=w,p==null||p==='')return this['ctx'][ef(0x471)](),{'_text':'','ellipsis':x};const z=this[ef(0x270)][ef(0x33d)](ef(0x28a))['width'];if(r<=z+u*0x2)return this[ef(0x270)]['restore'](),{'_text':'','ellipsis':!0x0};const C=this[ef(0x270)]['measureText'](p)['width'],D=r-u*0x2;if(C&&C>=D){x=!0x0;let E=0x0;for(let F=0x0;F<p[ef(0x38b)];F++)if(E+=this['ctx']['measureText'](p[F])['width'],E>=D-z){y=p['slice'](0x0,F)+ef(0x28a),x=!0x0;break;}}return this['ctx'][ef(0x471)](),{'_text':y,'ellipsis':x};}}class tl{constructor(o){const eg=bD;m(this,'_config',{}),m(this,'CSS_PREFIX',eg(0x480)),m(this,'ICONS',[]),m(this,'ROW_KEY',''),m(this,'DISABLED',!0x1),m(this,'HEADER_FONT',eg(0x3cd)),m(this,'BODY_FONT','12px\x20normal\x20Arial'),m(this,'BORDER',!0x0),m(this,eg(0x425),!0x1),m(this,'STRIPE_COLOR',eg(0x4d5)),m(this,'BORDER_COLOR','#e1e6eb'),m(this,'HEIGHT',0x0),m(this,'PLACEHOLDER_COLOR','#CDD0DC'),m(this,'EMPTY_BODY_HEIGHT',0x78),m(this,'EMPTY_CUSTOM_STYLE',{}),m(this,eg(0x211),eg(0x27c)),m(this,'EMPTY_TEXT','暂无数据'),m(this,'LOADING_TEXT','加载中...'),m(this,'MAX_HEIGHT',0x3e8),m(this,'BORDER_RADIUS',0x8),m(this,eg(0x3a3),!0x1),m(this,'OFFSET_HEIGHT',0x0),m(this,'HEADER_HEIGHT',0x24),m(this,'ENABLE_HEADER_STICKY',!0x1),m(this,eg(0x470),'#F8FAFF'),m(this,eg(0x50f),'#FFF'),m(this,'HEADER_TEXT_COLOR','#1D2129'),m(this,'REQUIRED_COLOR','#F56C6C'),m(this,'BODY_TEXT_COLOR',eg(0x48e)),m(this,eg(0x2bf),'#4E5969'),m(this,'LOADING_ICON_SVG',''),m(this,'LOADING_ICON_COLOR','#4E5969'),m(this,eg(0x461),''),m(this,'SHRINK_ICON_SVG',''),m(this,'EXPAND_ICON_COLOR','#4E5969'),m(this,'SHRINK_ICON_COLOR','#4E5969'),m(this,'ERROR_TIP_ICON_COLOR','red'),m(this,'ERROR_TIP_ICON_SIZE',0x6),m(this,eg(0x1f4),'left'),m(this,'COLUMNS_VERTICAL_ALIGN','middle'),m(this,'EXPAND_LAZY',!0x0),m(this,eg(0x2b8),!0x1),m(this,eg(0x459),0x64),m(this,eg(0x3bc),0x24),m(this,'CELL_PADDING',0x8),m(this,'CELL_HOVER_ICON_SIZE',0xe),m(this,'CELL_HOVER_ICON_BG_COLOR','#fff'),m(this,'CELL_HOVER_ICON_BORDER_COLOR','#DDE0EA'),m(this,'SCROLLER_TRACK_SIZE',0xe),m(this,'SCROLLER_SIZE',0x8),m(this,'SCROLLER_COLOR','#dee0e3'),m(this,'SCROLLER_TRACK_COLOR','#fff'),m(this,'SCROLLER_FOCUS_COLOR','#bbbec4'),m(this,'SELECT_BORDER_COLOR','rgb(82,146,247)'),m(this,'SELECT_AREA_COLOR','rgba(82,146,247,0.1)'),m(this,'SELECT_ROW_COL_BG_COLOR','transparent'),m(this,'AUTOFILL_POINT_BORDER_COLOR','#fff'),m(this,'EDIT_BG_COLOR','#fcf6ed'),m(this,'CHECKBOX_KEY',''),m(this,'CHECKBOX_COLOR','rgb(82,146,247)'),m(this,'FINDER_CELL_BG_COLOR','rgb(255,229,144)'),m(this,'ENABLE_FINDER',!0x0),m(this,'CHECKBOX_SIZE',0x14),m(this,'CHECKBOX_DISABLED_SVG',''),m(this,'CHECKBOX_DISABLED_COLOR','#F1F2F4'),m(this,eg(0x21d),''),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','#4E5969'),m(this,'ICON_SELECT_SVG',''),m(this,'ICON_SELECT_COLOR','#4E5969'),m(this,eg(0x3e7),!0x0),m(this,'SORT_ASC_ICON_SVG',''),m(this,'SORT_DESC_ICON_SVG',''),m(this,'SORTABLE_ICON_SVG',''),m(this,eg(0x4ce),'rgb(82,146,247)'),m(this,'READONLY_COLOR','#fff'),m(this,eg(0x39e),'#4E5969'),m(this,eg(0x30f),'#ED3F14'),m(this,'FOOTER_BG_COLOR','#fafafa'),m(this,'FOOTER_FIXED',!0x0),m(this,'FOOTER_POSITION','bottom'),m(this,eg(0x502),0x24),m(this,'ENABLE_SELECTOR',!0x0),m(this,'TREE_SELECT_MODE',eg(0x4da)),m(this,eg(0x3b4),'children'),m(this,'TREE_INDENT',0x14),m(this,'TREE_ICON_SIZE',0x14),m(this,'TREE_LINE',!0x1),m(this,'TREE_LINE_COLOR',eg(0x4e0)),m(this,eg(0x397),!0x1),m(this,'ENABLE_EDIT_CLICK_SELECTOR',!0x0),m(this,'SELECTOR_AREA_MIN_X',0x0),m(this,eg(0x3a4),0x0),m(this,'SELECTOR_AREA_MAX_X',0x0),m(this,'SELECTOR_AREA_MIN_Y',0x0),m(this,'SELECTOR_AREA_MAX_Y',0x0),m(this,'SELECTOR_AREA_MAX_Y_OFFSET',0x0),m(this,eg(0x469),'value'),m(this,eg(0x3a9),!0x0),m(this,'ENABLE_SELECTOR_SINGLE',!0x1),m(this,'ENABLE_SELECTOR_SPAN_COL',!0x0),m(this,eg(0x204),!0x0),m(this,eg(0x2e8),!0x0),m(this,'ENABLE_SELECTOR_ALL_COLS',!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,eg(0x35e),'#e1e6eb'),m(this,'RESIZE_COLUMN_LINE_COLOR','#e1e6eb'),m(this,eg(0x3b9),!0x0),m(this,'RESIZE_COLUMN_TEXT_COLOR','#fff'),m(this,'RESIZE_COLUMN_TEXT_BG_COLOR','rgb(82,146,247)'),m(this,eg(0x310),0x24),m(this,'RESIZE_COLUMN_MIN_WIDTH',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,'ENABLE_KEYBOARD',!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,'TOOLTIP_BG_COLOR','#303133'),m(this,eg(0x3b7),'#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,'CUSTOM_BODY_CONTEXT_MENU',[]),m(this,'HEADER_CONTEXT_MENU',[{'label':'左固定','value':eg(0x3c8)},{'label':'右固定','value':'fixedRight'},{'label':eg(0x31c),'value':'fixedNone'},{'label':'隐藏','value':eg(0x311)},{'label':'显示','value':'visible'},{'label':'恢复默认','value':'resetHeader'}]),m(this,'CUSTOM_HEADER_CONTEXT_MENU',[]),m(this,'CELL_LINE_HEIGHT',1.3),m(this,eg(0x23e),!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,eg(0x2b3)),m(this,'BODY_CELL_FORMATTER_METHOD'),m(this,'BODY_CELL_RULES_METHOD'),m(this,'BODY_CELL_TYPE_METHOD'),m(this,eg(0x2df)),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,eg(0x4ec)),m(this,'BEFORE_SET_SELECTOR_METHOD'),m(this,'BEFORE_SET_AUTOFILL_METHOD'),m(this,eg(0x344)),m(this,'BEFORE_BODY_CONTEXT_MENU_METHOD'),m(this,'BEFORE_COPY_METHOD'),this[eg(0x1d3)]=o,this['updateCssVar']();}['init'](o){this['_config']=o,this['updateCssVar']();}['updateCssVar'](){const ej=bD;let o={};Object[ej(0x494)](this)['forEach'](p=>{const ek=ej;if(p['endsWith'](ek(0x273))||p['endsWith']('_FONT')){const r='--evt-'+p['toLocaleLowerCase']()[ek(0x4f0)](/_/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 em=bD;m(this,'ctx'),m(this,'list',[{'name':'loading','configName':'LOADING_ICON_SVG','configColorName':'LOADING_ICON_COLOR','svg':jl,'color':'#4E5969'},{'name':'expand','configName':'EXPAND_ICON_SVG','configColorName':'EXPAND_ICON_COLOR','svg':gi,'color':'#4E5969'},{'name':'shrink','configName':'SHRINK_ICON_SVG','configColorName':em(0x309),'svg':sl,'color':'#4E5969'},{'name':'checkbox-uncheck','configName':'CHECKBOX_UNCHECK_SVG','configColorName':'CHECKBOX_UNCHECK_COLOR','svg':em(0x20b),'color':''},{'name':'checkbox-check','configName':'CHECKBOX_CHECK_SVG','configColorName':'CHECKBOX_COLOR','svg':ll,'color':em(0x362)},{'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':ll,'color':em(0x42b)},{'name':'checkbox-disabled','configName':em(0x467),'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':em(0x206),'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':em(0x39f),'configName':'ICON_SELECT_SVG','configColorName':'ICON_SELECT_COLOR','svg':sl,'color':'#4E5969'},{'name':'sort-asc','configName':em(0x3ba),'configColorName':'SORT_ICON_COLOR','svg':gs,'color':em(0x362)},{'name':'sort-desc','configName':'SORT_DESC_ICON_SVG','configColorName':'SORT_ICON_COLOR','svg':Us,'color':'rgb(82,146,247)'},{'name':'sort-default','configName':'SORTABLE_ICON_SVG','svg':rt,'color':'#bec4c7'}]),m(this,em(0x4d2),new Map()),this['ctx']=o,this['init']();}async['init'](){const en=bD,o=[];for(let p=0x0;p<this['list']['length'];p++){const r=this['list'][p];let u=r['color'],w=r['svg'];if(r['configColorName']){const y=this[en(0x270)]['config'][r['configColorName']];y&&(u=y);}if(r['configName']){const z=this['ctx']['config'][r[en(0x3d8)]];z&&(w=z);}const x=this['createImageFromSVG'](w,u)['then'](C=>{this['icons']['set'](r['name'],C);});o['push'](x);}for(let C=0x0;C<this[en(0x270)][en(0x49d)]['ICONS']['length'];C++){const D=this['ctx']['config']['ICONS'][C];let E=D[en(0x24b)];const F=this['createImageFromSVG'](D['svg'],E,D[en(0x229)])['then'](G=>{const eo=en;this['icons']['set'](D[eo(0x1f0)],G);});o['push'](F);}await Promise['all'](o),this[en(0x270)]['emit']('draw');}async['createImageFromSVG'](o,p,r=!0x1){const ep=bD,u=new DOMParser()[ep(0x226)](o,'image/svg+xml')['documentElement'];p&&u['querySelectorAll']('*')['forEach'](y=>{const z=y['getAttribute']('fill');(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':'image/svg+xml'});x=URL['createObjectURL'](y);}else x='data:image/svg+xml;charset=utf-8,'+encodeURIComponent(new XMLSerializer()['serializeToString'](u));return w['src']=x,new Promise((z,C)=>{const eq=ep;w['onerror']=()=>C(new Error('Failed\x20to\x20load\x20image:'+o)),w[eq(0x34a)]=()=>{z(w);};});}['get'](o){return this['icons']['get'](o);}['getSvg'](o){return this['list']['find'](p=>p['name']===o);}}class at extends Ul{constructor(o,p,r,u,w,x,y){const er=bD;super(o,r,u,w,x,'header',y['fixed']),m(this,'align'),m(this,'hideHeaderSelection',!0x1),m(this,'verticalAlign','middle'),m(this,er(0x47e)),m(this,er(0x25f)),m(this,'maxWidth'),m(this,'widthFillDisable'),m(this,'type'),m(this,'operation',!0x1),m(this,'editorType'),m(this,'level'),m(this,'text'),m(this,'hide',!0x1),m(this,er(0x3a7),''),m(this,'colspan'),m(this,'rowspan'),m(this,'row'),m(this,er(0x4b6)),m(this,'required',!0x1),m(this,er(0x428),!0x1),m(this,'ellipsis',!0x1),m(this,'overflowTooltipShow',!0x0),m(this,'children',[]),m(this,'column'),m(this,er(0x3a2)),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,er(0x1e4),'sort-asc'),m(this,'sortDescIconName','sort-desc'),m(this,'visibleWidth',0x0),m(this,er(0x1e2),0x0),m(this,er(0x42d),er(0x4da)),m(this,'domDataset',{}),m(this,'drawTextX',0x0),m(this,'drawTextY',0x0),m(this,er(0x40f),0x0),m(this,'drawTextHeight',0x0),m(this,'drawCellBgColor',''),m(this,'drawTextColor',''),m(this,er(0x233),''),m(this,'drawSelectionImageX',0x0),m(this,'drawSelectionImageY',0x0),m(this,er(0x3de),0x0),m(this,'drawSelectionImageHeight',0x0),m(this,'drawSelectionImageName',''),m(this,'drawSelectionImageSource'),m(this,er(0x486),0x0),m(this,'drawSortImageY',0x0),m(this,'drawSortImageWidth',0x0),m(this,'drawSortImageHeight',0x0),m(this,er(0x430),''),m(this,'drawSortImageSource'),m(this,'renderHeaderType','default'),this[er(0x270)]=o,this['x']=r,this['y']=u,this['width']=w,this['height']=x,this['visibleWidth']=w,this['visibleHeight']=x,this['colIndex']=p,this['key']=y['key'],this['minWidth']=y['minWidth'],this['maxWidth']=y['maxWidth'],this[er(0x311)]=(typeof y[er(0x311)]=='function'?y['hide'](y):y['hide'])||!0x1,this['type']=y['type']||'',this[er(0x28b)]=y['editorType']||'text',this['hideHeaderSelection']=y['hideHeaderSelection']||!0x1,this['align']=y['headerAlign']||y[er(0x2c5)]||this['ctx'][er(0x49d)]['COLUMNS_ALIGN'],this['verticalAlign']=y['headerVerticalAlign']||y[er(0x490)]||this['ctx']['config']['COLUMNS_VERTICAL_ALIGN'],this['fixed']=y['fixed']||'',this[er(0x34b)]=y['level']||0x0,this['operation']=y[er(0x354)]||!0x1,this[er(0x3c9)]=y['title'],this['column']=y,this['colspan']=y['colspan']||0x1,this['widthFillDisable']=y['widthFillDisable']||!0x1,this['rowspan']=y['rowspan']||0x1,this[er(0x3fc)]=y['rules'],this['readonly']=y['readonly']||!0x1,this[er(0x4b9)]=y['required']||!0x1,this['sortIconName']=y['sortIconName']||'sort-default',this[er(0x1e4)]=y[er(0x1e4)]||'sort-asc',this[er(0x361)]=y['sortDescIconName']||'sort-desc',this[er(0x483)]=Rl(),this['overflowTooltipShow']=y['overflowTooltipHeaderShow']!==!0x1,this['hasChildren']=y['children']&&y['children']['length']>0x0||!0x1,this['render']=y['renderHeader'],this['maxLineClampHeader']=y[er(0x42d)]||'auto',this['renderHeaderType']=y['renderHeaderType']||'default';}['isVerticalVisible'](){const eu=bD,{stageHeight:o}=this[eu(0x270)],p=o;return!(this['y']+this['height']<=0x0||this['y']>=p);}['updateStyle'](){this['style']=this['getOverlayerViewsStyle']();}['updateContainer'](){const ev=bD,{HEADER_CELL_STYLE_METHOD:p,HEADER_BG_COLOR:r,HEADER_TEXT_COLOR:u}=this['ctx'][ev(0x49d)];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['ctx']['finderBar'];z==='header'&&y===this[ev(0x4b6)]&&(w=this['ctx'][ev(0x49d)]['FINDER_CELL_BG_COLOR']),this[ev(0x4c9)]=w,this['drawTextColor']=x;}['update'](){const ew=bD;this[ew(0x46f)](),this['displayText']=this['getText'](),this[ew(0x217)]=this['getDrawX'](),this['drawY']=this['getDrawY'](),this['drawTextX']=this['drawX'],this['drawTextY']=this['drawY'],this['drawTextWidth']=this['width'],this['drawTextHeight']=this['height'],this[ew(0x51a)]();}['draw'](){const ex=bD;this[ex(0x3a1)](),this['drawSelection'](),this['drawText'](),this[ex(0x267)](),this['drawSortIcon']();}['drawEdge'](){const ey=bD,{paint:o,config:{BORDER_COLOR:p,BORDER:r}}=this['ctx'];o['drawRect'](this['drawX'],this[ey(0x45b)],this['width'],this[ey(0x22c)],{'borderColor':r?p:'transparent','fillColor':this['drawCellBgColor']});}[bD(0x3f4)](){const ez=bD,{paint:o,config:{HEADER_FONT:p,CELL_PADDING:r,REQUIRED_COLOR:u}}=this['ctx'],w=this['displayText']+'_'+this[ez(0x40f)]+'_'+this['drawTextFont'];this['ellipsis']=o['drawText'](this['displayText'],this[ez(0x37c)],this['drawTextY'],this['drawTextWidth'],this['drawTextHeight'],{'font':this[ez(0x233)]||p,'padding':r,'color':this['drawTextColor'],'align':this['align'],'verticalAlign':this['verticalAlign'],'maxLineClamp':this['maxLineClampHeader'],'offsetRight':this[ez(0x2d8)]['sortBy']?0x10:0x0,'offsetLeft':this['required']?0xc:0x0,'cacheTextKey':w,'textCallback':x=>{const eA=ez;this[eA(0x2d8)]['sortBy']&&(this['drawSortImageX']=x['right']+0x4,this['drawSortImageY']=x['top']+(x['height']-0x10)/0x2),this['required']&&o['drawText']('*',x[eA(0x4f7)]-0x12,x['top']+(x['height']-0xc)/0x2,0x18,0x18,{'color':u,'font':'18px\x20Arial','align':'center','verticalAlign':'middle','padding':0x0});}});}['drawBg'](){const eB=bD;if(this['ctx'][eB(0x329)])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['ctx']['focusCellHeader']['colIndex']+this['ctx']['focusCellHeader']['colspan']-0x1),o&&!p){const {xArr:x}=this[eB(0x270)][eB(0x4eb)];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['height'],{'borderColor':eB(0x3ec),'fillColor':this['ctx'][eB(0x49d)]['SELECT_ROW_COL_BG_COLOR']||'transparent'});}['drawSelection'](){const eC=bD;if(!this['hideHeaderSelection']&&['index-selection','selection','selection-tree','tree-selection']['includes'](this['type'])){const {indeterminate:o,check:p,selectable:r}=this['ctx']['database']['getCheckedState'](),{CHECKBOX_SIZE:u=0x0,CELL_PADDING:w}=this['ctx']['config'];let x=this['drawX']+(this['width']-u)/0x2,y=this[eC(0x45b)]+(this['height']-u)/0x2;this['drawTextX']=x+u-w/0x2,this['drawTextWidth']=this['drawX']+this['visibleWidth']-this['drawTextX'],(this[eC(0x2c5)]==='left'||this['align']==='right')&&(x=this[eC(0x217)]+w,this['drawTextX']=x+u-w/0x2,this['drawTextWidth']=this[eC(0x217)]+this['visibleWidth']-this[eC(0x37c)]),this['verticalAlign']==='top'?y=this[eC(0x45b)]+w/0x2:this['verticalAlign']==='bottom'&&(y=this['drawY']+this[eC(0x22c)]-u-w/0x2);let z=this['ctx'][eC(0x4d2)]['get'](eC(0x39a)),C='checkbox-uncheck';o?(z=this['ctx']['icons']['get']('checkbox-indeterminate'),C='checkbox-indeterminate'):p&&r?(z=this['ctx']['icons']['get']('checkbox-check'),C=eC(0x303)):p&&!r?(z=this['ctx']['icons']['get']('checkbox-check-disabled'),C='checkbox-check-disabled'):!p&&r?(z=this['ctx'][eC(0x4d2)]['get']('checkbox-uncheck'),C='checkbox-uncheck'):(z=this['ctx']['icons'][eC(0x20c)]('checkbox-disabled'),C=eC(0x37a)),z&&(this['drawSelectionImageX']=x,this['drawSelectionImageY']=y,this[eC(0x3de)]=u,this['drawSelectionImageHeight']=u,this['drawSelectionImageName']=C,this[eC(0x4f4)]=z,this['ctx']['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this['drawSelectionImageY'],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']));}}['drawSortIcon'](){const eD=bD;if(!this['column'][eD(0x41c)])return;const o=0x10;let p=this['sortIconName'];const r=this['ctx']['database']['getSortState'](this['key']);r[eD(0x387)]==='asc'?p=this['sortAscIconName']:r['direction']==='desc'&&(p=this['sortDescIconName']);const u=this['ctx']['icons']['get'](p);u&&(this[eD(0x3f2)]=o,this['drawSortImageHeight']=o,this['drawSortImageName']=p,this['drawSortImageSource']=u,this['ctx'][eD(0x4ab)]['drawImage'](this['drawSortImageSource'],this[eD(0x486)],this[eD(0x2f7)],this['drawSortImageWidth'],this[eD(0x1f9)]));}['getText'](){const eE=bD;return this[eE(0x3c2)]&&this['renderHeaderType']==='default'||['',null,void 0x0][eE(0x2cd)](this['text'])?'':''+this['text'];}['getOverlayerViewsStyle'](){const eF=bD;let o='';return this['fixed']==='left'?o=this['drawX']+'px':this['fixed']===eF(0x34f)?o=this['drawX']-(this['ctx']['stageWidth']-this['ctx']['fixedRightWidth'])+'px':o=this['drawX']-this['ctx']['fixedLeftWidth']+'px',{'position':'absolute','overflow':eF(0x30b),'left':o,'top':this['drawY']+0x1+'px','width':this['width']+'px','height':this['height']-0x2+'px','pointerEvents':'initial','userSelect':'none'};}}class Es{constructor(o){const eG=bD;m(this,eG(0x270)),m(this,'visibleHoverCell'),m(this,'resizeObserver'),m(this,eG(0x4a3)),this['ctx']=o,this['init']();}['init'](){const eI=bD;this['resizeObserver']=new ResizeObserver(o=>{const eH=b;this['ctx']['emit']('resetHeader'),this['ctx'][eH(0x2e7)]('resizeObserver',o),this['ctx']['emit']('containerResize',this['ctx']['containerElement']);}),this['resizeObserver']['observe'](this[eI(0x270)]['containerElement']),this[eI(0x4a3)]=new MutationObserver(o=>{const eJ=eI;for(const p of o)p['type']==='attributes'&&p['attributeName']==='class'&&(this['ctx'][eJ(0x49d)][eJ(0x516)](),this['ctx']['emit']('draw'));}),this[eI(0x270)]['config']['ENABLE_AUTO_THEME']&&this['mutationObserver']['observe'](document['documentElement'],{'attributes':!0x0,'attributeFilter':['class']}),this[eI(0x270)]['on']('mousedown',o=>{const eK=eI;if(this['isBusy'](o))return;const {offsetY:p,offsetX:r}=this['ctx'][eK(0x334)](o),u=p,w=r,{body:{height:x,visibleHeight:y,visibleWidth:z,y:C}}=this['ctx'],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=>{this['ctx']['focusCellHeader']=E,this['ctx']['focusCell']=void 0x0,this['ctx']['emit']('cellHeaderMousedown',E,o);}),this['handleBodyEvent'](w,u,this['ctx']['body']['renderRows'],E=>{this['ctx']['setFocusCell'](E),this['ctx']['focusCellHeader']=void 0x0,this['ctx']['emit']('cellMousedown',E,o);}));}),this['ctx']['on']('mouseup',o=>{const eL=eI;if(o['button']!==0x0||this[eL(0x276)](o))return;const {offsetY:p,offsetX:r}=this['ctx']['getOffset'](o),u=p,w=r;this[eL(0x324)](w,u,this['ctx']['header'][eL(0x2c6)],x=>{const eM=eL;this['ctx']['focusCellHeader']=x,this['ctx'][eM(0x2e7)]('cellHeaderMouseup',x,o);}),this['handleBodyEvent'](w,u,this['ctx']['body']['renderRows'],x=>{const eN=eL;this['ctx']['setFocusCell'](x),this['ctx']['emit'](eN(0x203),x,o);});}),this['ctx']['on']('click',o=>{const eO=eI;if(o[eO(0x3fd)]!==0x0||this[eO(0x276)](o))return;const p=this['ctx']['getOffset'](o)['offsetY'],r=this['ctx']['getOffset'](o)['offsetX'];this['handleHeaderEvent'](r,p,this['ctx']['header']['renderCellHeaders'],u=>{const eP=eO;this['ctx']['clickCellHeader']=u,this[eP(0x270)]['emit']('cellHeaderClick',u,o),this['selectionClick'](u,o),this[eP(0x26e)](u,o);}),this['handleBodyEvent'](r,p,this['ctx'][eO(0x4ff)]['renderRows'],u=>{const eQ=eO;this['ctx']['clickCell']=u,this['ctx'][eQ(0x2e7)](eQ(0x225),u,o),this['selectionClick'](u,o),this['treeClick'](u,o);},!0x0),this['handleBodyEvent'](r,p,this['ctx']['body']['renderRows'],u=>{this['hoverIconClick'](u);},!0x1);}),this['ctx']['on'](eI(0x3e1),o=>{const eR=eI;if(o['button']!==0x0||this['isBusy'](o))return;const p=this['ctx']['getOffset'](o)['offsetY'],r=this['ctx']['getOffset'](o)[eR(0x286)];this['handleHeaderEvent'](r,p,this[eR(0x270)]['header']['renderCellHeaders'],u=>{this['ctx']['emit']('cellHeaderDblclick',u,o);}),this[eR(0x491)](r,p,this['ctx']['body'][eR(0x25d)],u=>{const eS=eR;this[eS(0x270)]['clickCell']=u,this['ctx']['emit']('cellDblclick',u,o);});}),this['ctx']['on']('contextMenu',o=>{const eU=eI;if(this['isBusy'](o))return;const {offsetY:p,offsetX:r}=this['ctx']['getOffset'](o),u=p,w=r;this['handleHeaderEvent'](w,u,this['ctx']['header']['renderCellHeaders'],x=>{const eT=b;this[eT(0x270)]['emit']('cellHeaderContextMenuClick',x,o);}),this['handleBodyEvent'](w,u,this['ctx']['body'][eU(0x25d)],x=>{const eV=eU;this['ctx'][eV(0x2e7)]('cellContextMenuClick',x,o);});}),this['ctx']['on']('mouseout',o=>{const eW=eI;!this[eW(0x270)]['containerElement']['contains'](o['relatedTarget'])&&this['ctx']['hoverCell']!==void 0x0&&(this['ctx']['hoverRow']=void 0x0,this['ctx']['hoverCell']=void 0x0,this['ctx']['emit']('draw'));}),this['ctx']['on'](eI(0x240),o=>{const eX=eI;if(this[eX(0x276)](o))return;this['ctx'][eX(0x47c)]=!0x1,this['ctx']['stageElement']['style']['cursor']==='pointer'&&(this[eX(0x270)]['stageElement']['style']['cursor']=eX(0x4e4));const p=this['ctx']['getOffset'](o)['offsetY'],r=this['ctx']['getOffset'](o)[eX(0x286)];this['handleHeaderEvent'](r,p,this['ctx'][eX(0x317)]['renderCellHeaders'],u=>{const eY=eX;this['ctx'][eY(0x2e7)]('cellHeaderMouseenter',u,o),this[eY(0x270)]['hoverCellHeader']&&this[eY(0x270)]['hoverCellHeader']!==u&&this['ctx']['emit']('cellHeaderMouseleave',this['ctx']['hoverCellHeader'],o),this[eY(0x246)](u,o),this['ctx']['hoverCellHeader']!==u&&(this['ctx']['hoverCellHeader']=u,this[eY(0x22f)]=void 0x0,this['ctx']['emit']('cellHeaderHoverChange',u,o));}),this['handleBodyEvent'](r,p,this['ctx']['body']['renderRows'],u=>{const eZ=eX;this['imageEnterAndLeave'](u,o),this['visibleHoverCell']!==u&&(this['ctx'][eZ(0x2e7)]('visibleCellMouseleave',u,o),this['visibleHoverCell']=u,this['ctx']['hoverCellHeader']=void 0x0,this['ctx']['emit']('visibleCellHoverChange',u,o));},!0x0),this['handleBodyEvent'](r,p,this[eX(0x270)]['body']['renderRows'],u=>{const f0=eX;var w;this[f0(0x246)](u,o),this['ctx']['emit']('cellMouseenter',u,o),this['ctx']['hoverCell']&&this[f0(0x270)]['hoverCell']!==u&&this['ctx']['emit']('cellMouseleave',u,o),this['ctx'][f0(0x336)]!==u&&(((w=this['ctx']['hoverCell'])==null?void 0x0:w['rowKey'])!==u['rowKey']&&(this[f0(0x270)][f0(0x336)]=u,this['ctx'][f0(0x436)]=this['ctx']['body']['renderRows']['find'](x=>x['rowKey']===u['rowKey']),this['ctx']['emit']('rowHoverChange',this[f0(0x270)]['hoverRow'],u,o),this['ctx']['emit']('draw')),this['ctx']['hoverCell']=u,this[f0(0x270)]['emit'](f0(0x493),u,o));}),this['handleFooterEvent'](r,p,this['ctx']['footer']['renderRows'],u=>{const f1=eX;this['ctx'][f1(0x2e7)](f1(0x4cc),u,o),this[f1(0x270)]['hoverCell']&&this['ctx'][f1(0x336)]!==u&&this['ctx']['emit']('cellFooterMouseleave',u,o),this[f1(0x270)]['emit'](f1(0x44a),u,o);});});}['hoverIconClick'](o){const f2=bD;o['hoverIconName']&&this['ctx']['isPointer']&&!this['ctx']['disableHoverIconClick']&&this[f2(0x270)]['emit']('hoverIconClick',o);}['selectionClick'](o,p){const f3=bD;if(!(['selection','index-selection',f3(0x299),'tree-selection'][f3(0x2cd)](o[f3(0x23d)])&&this[f3(0x270)]['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[f3(0x3de)],o['drawSelectionImageHeight'])){if(o instanceof at)o['drawSelectionImageName']==='checkbox-uncheck'||o['drawSelectionImageName']==='checkbox-indeterminate'?this[f3(0x270)]['database']['toggleAllSelection']():o['drawSelectionImageName']===f3(0x303)&&this['ctx']['database']['clearSelection'](!0x0);else{if(!this['ctx']['database']['getRowSelectable'](o['rowKey']))return;this['ctx']['database']['toggleRowSelection'](o['rowKey'],o['type']);}}}['treeClick'](p,r){const f4=bD;if(!([f4(0x2d7),'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[f4(0x270)]['database']['expandLoading'](p[f4(0x483)],!0x0),F({'row':p['row'],'rowIndex':p['rowIndex'],'colIndex':p[f4(0x3a2)],'column':p[f4(0x2d8)],'value':p['getValue']()})['then'](G=>{const f5=f4;this['ctx']['database']['setExpandChildren'](p['rowKey'],G),this['ctx'][f5(0x29c)]['expandLoading'](p[f5(0x483)],!0x1),this['ctx'][f5(0x2e7)]('expandChange',this['ctx']['database']['getExpandRowKeys']());})[f4(0x2c7)](G=>{const f6=f4;this['ctx'][f6(0x29c)]['expandLoading'](p[f6(0x483)],!0x1),console['error'](G);}));else{const G=this['ctx']['database'][f4(0x20e)](p[f4(0x483)]);this[f4(0x270)]['database'][f4(0x372)](p['rowKey'],!G),this[f4(0x270)]['emit']('expandChange',this[f4(0x270)]['database']['getExpandRowKeys']());}}[bD(0x26e)](o,p){const f7=bD,{offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u;if(!this['isInsideElement'](x,w,o['drawSortImageX'],o['drawSortImageY'],o['drawSortImageWidth'],o[f7(0x1f9)]))return;const y=this['ctx']['database']['getSortState'](o[f7(0x4b6)]);let z;y['direction']==='none'?z='asc':y['direction']==='asc'?z='desc':z='none',this['ctx']['database']['setSortState'](o['key'],z);}['imageEnterAndLeave'](o,p){const f8=bD,{offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u;if(o instanceof at){if(o[f8(0x4f4)]&&this['isInsideElement'](x,w,o['drawSelectionImageX'],o['drawSelectionImageY'],o['drawSelectionImageWidth'],o['drawSelectionImageHeight'])){this[f8(0x270)]['stageElement']['style']['cursor']=f8(0x4db),this['ctx']['isPointer']=!0x0;return;}if(o['drawSortImageSource']&&this['isInsideElement'](x,w,o['drawSortImageX'],o[f8(0x2f7)],o['drawSortImageWidth'],o[f8(0x1f9)])){this['ctx']['stageElement'][f8(0x1f7)]['cursor']='pointer',this['ctx']['isPointer']=!0x0;return;}}if(o instanceof Vt){if(o['drawSelectionImageSource']&&this['isInsideElement'](x,w,o['drawSelectionImageX'],o['drawSelectionImageY'],o['drawSelectionImageWidth'],o[f8(0x2fc)])){this['ctx']['stageElement']['style']['cursor']='pointer',this['ctx']['isPointer']=!0x0,this[f8(0x270)]['database']['getRowSelectable'](o['rowKey'])||(this['ctx']['stageElement'][f8(0x1f7)]['cursor']='not-allowed');return;}if(o['drawHoverImageSource']&&this['isInsideElement'](x,w,o['drawHoverImageX'],o['drawHoverImageY'],o['drawHoverImageWidth'],o['drawHoverImageHeight'])){this['ctx']['stageElement']['style'][f8(0x47f)]='pointer',this['ctx']['isPointer']=!0x0;return;}if(o['drawTreeImageSource']&&this['isInsideElement'](x,w,o[f8(0x3df)],o['drawTreeImageY'],o[f8(0x3c5)],o['drawTreeImageHeight'])){this['ctx']['stageElement']['style']['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 f9=bD,{offsetY:p,offsetX:r}=this[f9(0x270)][f9(0x334)](o),u=p,w=r;if(this[f9(0x270)]['loading']||!this['ctx']['isTarget'](o)||this['ctx']['stageElement'][f9(0x1f7)]['cursor']===f9(0x4cd)||this['ctx']['stageElement']['style']['cursor']==='col-resize'||this['ctx']['columnResizing']||this['ctx']['rowResizing'])return!0x0;const {SCROLLER_TRACK_SIZE:x}=this['ctx'][f9(0x49d)];return!!(this[f9(0x270)]['scrollerMove']||this[f9(0x270)][f9(0x220)]||u>this[f9(0x270)]['stageHeight']-x||w>this['ctx']['stageWidth']-x);}[bD(0x491)](o,p,r,u,w=!0x1){const fa=bD;if(this['isInsideBody'](p))for(const x of r){const y=x[fa(0x4f2)]['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[fa(0x1e2)]){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){const fb=bD;for(const w of r){const x=w[fb(0x1fa)](),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 fd=bD;for(const x of r){const y=x['fixedCells']['concat'](x['noFixedCells']);for(const z of y){const C=z['getDrawX'](),D=z[fd(0x4c7)]();if(w){if(o>C&&o<C+z['visibleWidth']&&p>D&&p<D+z[fd(0x1e2)]){u(z);return;}}else{if(o>C&&o<C+z['width']&&p>D&&p<D+z['height']){u(z);return;}}}}}['isInsideBody'](o){const fe=bD;return o>this[fe(0x270)]['body']['y']&&o<this[fe(0x270)]['body']['y']+this['ctx']['body']['visibleHeight'];}[bD(0x3a0)](){const ff=bD;this['resizeObserver'][ff(0x39d)](this['ctx']['stageElement']),this[ff(0x4a3)]['disconnect']();}}class ks{constructor(o,p){const fg=bD;m(this,'eventBus'),m(this,'eventBrowser'),m(this,fg(0x446)),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,fg(0x4d7),!0x1),m(this,'columnResizing',!0x1),m(this,'scrollerMove',!0x1),m(this,'scrollerFocus',!0x1),m(this,fg(0x314),!0x1),m(this,'selectorMove',!0x1),m(this,'disableHoverIconClick',!0x1),m(this,'selectColsIng',!0x1),m(this,'selectRowsIng',!0x1),m(this,'dragHeaderIng',!0x1),m(this,'finding',!0x1),m(this,fg(0x41b),!0x1),m(this,'editing',!0x1),m(this,'loading',!0x1),m(this,'onlyMergeCell',!0x1),m(this,fg(0x274),!0x1),m(this,'hasSelection',!0x1),m(this,'hasTree',!0x1),m(this,'scrollY',0x0),m(this,'scrollX',0x0),m(this,fg(0x424),0x0),m(this,'fixedRightWidth',0x0),m(this,'lastCenterColIndex',0x0),m(this,'maxColIndex',0x0),m(this,'maxRowIndex',0x0),m(this,'hoverRow'),m(this,'clickCell'),m(this,'focusCell'),m(this,'currentCell'),m(this,fg(0x336)),m(this,fg(0x248)),m(this,'focusCellHeader'),m(this,fg(0x478)),m(this,fg(0x252),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,'footer',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'renderRows':[]}),m(this,fg(0x317),{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'visibleLeafColumns':[],'leafCellHeaders':[],'allCellHeaders':[],'renderLeafCellHeaders':[],'renderCellHeaders':[],'fixedLeftCellHeaders':[],'fixedRightCellHeaders':[],'renderCenterCellHeaders':[]}),m(this,'selector',{'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':'body'}),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['containerElement']=r,u['tabIndex']=0x0,this['stageElement']=u,this['canvasElement']=w,this['overlayerElement']=x,this['editorElement']=y,this['emptyElement']=z,this[fg(0x4d9)]=C,this['contextMenuElement']=D,this['config']=new tl(p['config']||{}),this['eventBus']=new zs(),this['eventBrowser']=new Rs(this),this[fg(0x446)]=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);}['setConfig'](o){this['config']=new tl(o);}['setItemValueByEditor'](o,p,r,u=!0x0,w=!0x0,x=!0x0){const fj=bD;if(this['config']['ENABLE_MERGE_CELL_LINK']){const y=this[fj(0x29c)]['getVirtualBodyCellByKey'](o,p);if(y&&(y['mergeRow']||y['mergeCol'])){const {dataList:z}=y['getSpanInfo'](),C=z['map'](D=>({...D,'value':r}));this['database']['batchSetItemValue'](C,u,x);return;}}this[fj(0x29c)]['setItemValue'](o,p,r,u,w,!0x0,x);}[bD(0x2a2)](o,p=!0x0,r=!0x0){const fm=bD;if(this['config']['ENABLE_MERGE_CELL_LINK']){const u=[];o['forEach'](w=>{const fk=b,x=this[fk(0x29c)]['getRowIndexForRowKey'](w['rowKey']),y=this['database']['getColIndexForKey'](w['key']);if(x===void 0x0||y===void 0x0)return;const z=this[fk(0x29c)][fk(0x23b)](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[fm(0x29c)]['batchSetItemValue'](o,p,r);}['setFocusCell'](o){const fn=bD;var p;if(this['focusCell']!==o){if(((p=this['focusCell'])==null?void 0x0:p['rowKey'])!==o['rowKey']){this['currentCell']=o,this['emit']('rowFocusChange',o);const r={'rowIndex':o[fn(0x31d)],'rowKey':o[fn(0x483)],'row':o['row']};this['emit']('currentRowChange',r);}this['focusCell']=o,this['emit']('cellFocusChange',o);}}['clearSelector'](){const fo=bD;this[fo(0x4eb)]['enable']=!0x1,this['selector']['xArr']=[-0x1,-0x1],this['selector'][fo(0x2c8)]=[-0x1,-0x1],this['emit']('clearSelector');}['clearSelectorCopy'](){this['selector']['xArrCopy']=[-0x1,-0x1],this['selector']['yArrCopy']=[-0x1,-0x1];}['clearAutofill'](){const fp=bD;this[fp(0x227)]={'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]};}['getSelectedData'](){const fq=bD,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['database'][fq(0x23b)](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};}['setScroll'](o,p){const fr=bD;let r=Math[fr(0x210)](o);const u=this['body'][fr(0x3fb)]-this[fr(0x4ff)]['visibleWidth'];r<0x0?r=0x0:r>u&&(r=u);let w=Math[fr(0x210)](p),x=this['body']['height']-this['body'][fr(0x1e2)];this[fr(0x49d)][fr(0x26b)]||(x=this['body']['height']+this['footer']['height']-this['body']['visibleHeight']),w<0x0?w=0x0:w>x&&(w=x),this['emit']('setScroll',r,w);}[bD(0x46c)](o){const ft=bD;let p=Math[ft(0x210)](o);const r=this[ft(0x4ff)]['width']-this[ft(0x4ff)][ft(0x2f4)];p<0x0?p=0x0:p>r&&(p=r),this['emit']('setScrollX',p);}['setScrollY'](o){const fu=bD;let p=Math['floor'](o),r=0x0;this[fu(0x49d)]['FOOTER_FIXED']||(r=this['footer']['height']);const u=this['body']['height']-this['body']['visibleHeight']+r;p<0x0?p=0x0:p>u&&(p=u),this['emit']('setScrollY',p);}['startAdjustPosition'](o){const fv=bD;this[fv(0x2e7)]('startAdjustPosition',o);}[bD(0x34c)](){this['emit']('stopAdjustPosition');}['isTarget'](o){return!!this['containerElement']['contains'](o['target']);}['getOffset'](o){const fw=bD,{left:p,top:r}=this[fw(0x257)]['getBoundingClientRect']();return{'offsetX':o['clientX']-p,'offsetY':o['clientY']-r};}['hasEvent'](o){return this['eventBus']['has'](o);}['on'](o,p){this['eventBus']['on'](o,p);}[bD(0x452)](o,p){const fx=bD;this[fx(0x3ef)]['once'](o,p);}['off'](o,p){const fy=bD;this[fy(0x3ef)][fy(0x247)](o,p);}['emit'](o,...p){const fz=bD;this[fz(0x3ef)]['emit'](o,...p);}['destroy'](){const fA=bD;this['eventTable'][fA(0x3a0)](),this['eventBrowser']['destroy'](),this['eventBus']['destroy']();}}class cl{constructor(o,p){const fB=bD;m(this,fB(0x270)),m(this,'type'),m(this,'isFocus',!0x1),m(this,'trackX',0x0),m(this,'trackY',0x0),m(this,'trackWidth',0x0),m(this,'trackHeight',0x0),m(this,fB(0x3e4),[]),m(this,'barX',0x0),m(this,fB(0x1e1),0x0),m(this,'barWidth',0x0),m(this,'barHeight',0x0),m(this,'distance',0x0),m(this,'visibleDistance',0x0),m(this,fB(0x4a1),0x0),m(this,fB(0x360),0x0),m(this,'dragStart',0x0),m(this,'isDragging',!0x1),m(this,'scroll',0x0),this['ctx']=o,this['type']=p,this['type']==='vertical'?this['scroll']=this['ctx']['scrollY']:this['scroll']=this[fB(0x270)]['scrollX'];}['onWheel'](o){this['updateScroll'](o);}['onTouchmove'](o){const fC=bD,{clientY:p,clientX:r}=o['touches'][0x0],u=p-this['clientY'],w=r-this['clientX'];let x=0x0;this['type']==='vertical'?(x=Math['max'](0x0,Math['min'](this['dragStart']-u,this['distance'])),this[fC(0x44f)]()&&!(x===0x0&&u>0x0||x===this['distance']&&u<0x0)&&o['preventDefault']()):this['type']==='horizontal'&&(x=Math['max'](0x0,Math['min'](this['dragStart']-w,this['distance']))),this['scroll']=x;}['onTouchstart'](o){const fD=bD,{clientY:p,clientX:r}=o['touches'][0x0];this['clientX']=r,this['clientY']=p,this[fD(0x4bb)]=this['scroll'];}['onMouseDown'](o){const fE=bD;if(!(o[fE(0x4c5)]instanceof Element)||!this[fE(0x270)]['isTarget'](o))return;if(this['ctx']['stageElement']['style'][fE(0x47f)]==='row-resize'||this[fE(0x270)]['stageElement']['style']['cursor']===fE(0x201))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['clientX']=u,this['clientY']=w,this['isDragging']=!0x0,this['ctx'][fE(0x4fe)]=!0x0,this['isFocus']=!0x0,this[fE(0x4bb)]=this['scroll'],o['preventDefault']();else{if(this['isOnTrack'](p,r)){let x=0x0;this[fE(0x23d)]==='vertical'?x=(r-this['ctx']['header']['height']-this[fE(0x3f5)]/0x2)/(this['visibleDistance']-this['barHeight'])*this['distance']:x=(p-this['barWidth']/0x2)/(this['visibleDistance']-this['barWidth'])*this['distance'],this['scroll']=Math['max'](0x0,Math['min'](x,this[fE(0x50e)]));}}}}['onMouseUp'](){this['isDragging']=!0x1,this['isFocus']=!0x1,this['clientX']=0x0,this['clientY']=0x0;}['onMouseMove'](o){const fF=bD,{offsetX:p,offsetY:r,clientX:u,clientY:w,buttons:x}=o;if(this['isOnScrollbar'](p,r)&&o['target']===this['ctx']['canvasElement']?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[fF(0x360)],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['scroll']=Math['max'](0x0,Math[fF(0x2a5)](z,this['distance']));}}[bD(0x438)](o,p,r,u,w,x){return o>=r&&o<=r+w&&p>=u&&p<=u+x;}[bD(0x44f)](){const fG=bD;return this[fG(0x23d)]===fG(0x474)?this[fG(0x3f5)]>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 fH=bD;return this['isPointInElement'](o,p,this['trackX'],this[fH(0x24e)],this['trackWidth'],this['trackHeight']);}['updateScroll'](o){const fI=bD,p=o['deltaX'],r=o['deltaY'];this['type']===fI(0x474)&&o['shiftKey']===!0x1?(this['hasScrollbar']()&&!(this['scroll']===0x0&&r<0x0||this[fI(0x448)]===this['distance']&&r>0x0)&&o['preventDefault'](),this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+r,this['distance']))):this['type']==='horizontal'&&(o['shiftKey']?this[fI(0x448)]=Math[fI(0x4ae)](0x0,Math['min'](this['scroll']+r,this['distance'])):this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+p,this[fI(0x50e)])));}['updatedSize'](){const fJ=bD,{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[fJ(0x22c)],G=r['width'],J=p['height'],K=this['ctx']['footer']['height'];if(this[fJ(0x23d)]===fJ(0x474)){this['visibleDistance']=E-x-F,this['distance']=J-this['visibleDistance']+K,this['trackX']=D-x,this['trackY']=0x0,this['splitPoints']=[this['trackX'],F,this['trackX']+x,F],this[fJ(0x4ca)]=x,this[fJ(0x47a)]=E,this['barX']=this['trackX']-0x1+(x-z)/0x2,this[fJ(0x2d3)]=z;const L=this['distance']?this['visibleDistance']/(J+K):0x0;let N=Math[fJ(0x210)](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[fJ(0x3f5)]),this['scroll']=Math['max'](0x0,Math['min'](this['scroll'],this['distance']));}else{this['visibleDistance']=D-x,this['distance']=G-this['visibleDistance'],this['splitPoints']=[D-x,E-x,D-x,E];const O=C?0x0:0.5;this[fJ(0x25b)]=0x0,this['trackY']=E-x+O,this['trackWidth']=D,this['trackHeight']=x;const R=this[fJ(0x50e)]?this['visibleDistance']/G:0x0;let S=Math['floor'](R*this[fJ(0x3b1)]);this['barY']=this['trackY']-0x1+(x-z)/0x2,S<0x1e?S=0x1e:S>=this['visibleDistance']&&(S=0x0),this['barWidth']=S,this['barHeight']=z,this['barX']=this['scroll']/this['distance']*(this['visibleDistance']-this['barWidth']),this['scroll']=Math['max'](0x0,Math['min'](this['scroll'],this['distance']));}}['draw'](){const fK=bD,{config:{SCROLLER_FOCUS_COLOR:o,SCROLLER_COLOR:p,BORDER_COLOR:r,BORDER:u,SCROLLER_TRACK_COLOR:w}}=this['ctx'];this[fK(0x50b)]();let x=r;u||(x=fK(0x3ec)),this['ctx']['paint']['drawRect'](this['trackX'],this['trackY'],this[fK(0x4ca)],this['trackHeight'],{'borderColor':x,'fillColor':w}),this['ctx'][fK(0x4ab)]['drawRect'](this[fK(0x39b)],this[fK(0x1e1)],this['barWidth'],this['barHeight'],{'fillColor':this[fK(0x3bf)]||this['isDragging']?o:p,'radius':0x4}),this['splitPoints']['length']>0x0&&this['ctx']['paint'][fK(0x2f2)](this[fK(0x3e4)],{'borderColor':x,'borderWidth':0x1}),this[fK(0x270)]['scrollerFocus']=this['isFocus'];}}class Os{constructor(o){const fL=bD;m(this,'ctx'),m(this,'verticalScrollbar'),m(this,fL(0x28c)),m(this,'mousedownHeader',!0x1),m(this,'adjustPositionX',''),m(this,'adjustPositionY',''),m(this,fL(0x489),0x0),m(this,'timerY',0x0),this['ctx']=o,this['verticalScrollbar']=new cl(o,'vertical'),this['horizontalScrollbar']=new cl(o,'horizontal'),this['ctx']['on']('wheel',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['onMouseUp']()),this['ctx']['on']('touchmove',p=>this['onTouchmove'](p)),this['ctx']['on']('touchstart',p=>{const fM=fL;this[fM(0x441)](p);}),this['ctx']['on']('setScroll',(p,r)=>{this['setScroll'](p,r);}),this['ctx']['on']('setScrollX',p=>{this['setScrollX'](p);}),this['ctx']['on']('setScrollY',p=>{this['setScrollY'](p);}),this[fL(0x270)]['on'](fL(0x2ec),(p,r)=>{this['scrollToIndex'](p,r);}),this['ctx']['on']('cellHeaderMousedown',()=>{const fN=fL;this[fN(0x29f)]=!0x0;}),this['ctx']['on']('startAdjustPosition',p=>{this['startAdjustPosition'](p);}),this['ctx']['on']('stopAdjustPosition',()=>{const fO=fL;this[fO(0x34c)]();});}[bD(0x44c)](o){this['verticalScrollbar']['onWheel'](o),this['horizontalScrollbar']['onWheel'](o),this['draw']();}['onTouchmove'](o){this['verticalScrollbar']['onTouchmove'](o),this['horizontalScrollbar']['onTouchmove'](o),this['draw']();}['onTouchstart'](o){const fP=bD;this['verticalScrollbar']['onTouchstart'](o),this[fP(0x28c)]['onTouchstart'](o),this['draw']();}['onMouseDown'](o){const fQ=bD;this['verticalScrollbar']['onMouseDown'](o),this[fQ(0x28c)]['onMouseDown'](o),this['draw']();}['onMouseMove'](o){const fR=bD;this['verticalScrollbar'][fR(0x27a)](o),this['horizontalScrollbar']['onMouseMove'](o),this['draw']();}['onMouseUp'](){const fS=bD;this['mousedownHeader']=!0x1,this['verticalScrollbar']['onMouseUp'](),this['horizontalScrollbar'][fS(0x1db)](),this['ctx'][fS(0x4fe)]=!0x1;}[bD(0x487)](){const fT=bD;this['verticalScrollbar']['draw'](),this['horizontalScrollbar']['draw']();const o=Math['floor'](this['horizontalScrollbar']['scroll']),p=Math[fT(0x210)](this['verticalScrollbar'][fT(0x448)]);(o!==this['ctx'][fT(0x512)]||p!==this['ctx']['scrollY'])&&(this['ctx'][fT(0x2e7)]('onScroll',o,p),o!==this['ctx']['scrollX']&&this[fT(0x270)]['emit'](fT(0x2ee),o),p!==this['ctx']['scrollY']&&this['ctx']['emit']('onScrollY',p),this['ctx']['scrollX']=o,this['ctx']['scrollY']=p,this['ctx']['emit']('draw'));}['setScroll'](o,p){const fU=bD;this[fU(0x28c)]['scroll']=o,this['verticalScrollbar']['scroll']=p,this['ctx']['emit'](fU(0x487)),this['ctx']['emit']('onScroll',o,p);}['setScrollX'](o){this['horizontalScrollbar']['scroll']=o,this['ctx']['emit']('draw');}['setScrollY'](o){const fV=bD;this['verticalScrollbar']['scroll']=o,this['ctx'][fV(0x2e7)]('draw');}['scrollToColkey'](o){const {header:p}=this['ctx'],r=p['leafCellHeaders']['find'](u=>u['key']===o);r&&this['setScrollX'](r['x']-p['visibleWidth']/0x2);}[bD(0x2e4)](o){const fW=bD,{header:p}=this['ctx'],r=p[fW(0x3c7)][fW(0x3e3)](u=>u['colIndex']===o);r&&this['setScrollX'](r['x']-p['visibleWidth']/0x2);}['scrollToRowIndex'](o){const {body:p,database:r}=this['ctx'],{top:u}=r['getPositionForRowIndex'](o);this['setScrollY'](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 fX=bD;var p,r;const {offsetX:u,offsetY:w}=this['ctx']['getOffset'](o);let x='',y='';if(((p=this['ctx']['focusCell'])==null?void 0x0:p['fixed'])!=='left'&&u<this[fX(0x270)]['fixedLeftWidth']?x='left':((r=this['ctx'][fX(0x43e)])==null?void 0x0:r['fixed'])!=='right'&&u>this['ctx']['body']['visibleWidth']-this['ctx']['fixedRightWidth']?x='right':(x='',this['stopAdjustPosition'](!0x0,!0x1)),!this[fX(0x29f)]&&w<this['ctx']['header']['visibleHeight']?y=fX(0x33e):w>this['ctx']['header']['visibleHeight']+this['ctx'][fX(0x4ff)]['visibleHeight']?y='bottom':(y='',this['stopAdjustPosition'](!0x1,!0x0)),x&&this['adjustPositionX']!==x){this['adjustPositionX']=x;let z=0xa*(x==='left'?-0x1:0x1);this['timerX']&&(clearInterval(this['timerX']),this['timerX']=0x0),this[fX(0x489)]=setInterval(()=>{const fY=fX;z*=1.5;const {scrollX:C}=this['ctx'],D=C+z;(D<0x0||D>this['ctx']['body'][fY(0x3fb)])&&(clearInterval(this['timerX']),this['timerX']=0x0),this['ctx'][fY(0x46c)](D);},0x64);}if(y&&this[fX(0x2d4)]!==y){this['adjustPositionY']=y;let C=0xa*(y==='top'?-0x1:0x1);this['timerY']&&(clearInterval(this['timerY']),this[fX(0x2a7)]=0x0),this[fX(0x2a7)]=setInterval(()=>{const fZ=fX;C*=1.5;const {scrollY:D}=this[fZ(0x270)],E=D+C;(E<0x0||E>this['ctx']['body']['height'])&&(clearInterval(this['timerY']),this['timerY']=0x0),this['ctx'][fZ(0x439)](E);},0x64);}}['stopAdjustPosition'](o=!0x0,p=!0x0){const g0=bD;o&&(this[g0(0x3af)]='',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 g1=bD;m(this,g1(0x2cc)),m(this,'key'),m(this,'childrenKey'),this['root']=o,this['key']=p?.['key']||'key',this['childrenKey']=p?.[g1(0x401)]||'children';}[bD(0x351)](){const g2=bD;return this[g2(0x2cc)];}['treeMove'](p,r,u){const g3=bD,w=this['findNodeWithParent'](this['root'],p[this[g3(0x4b6)]]);if(!w)throw new Error(g3(0x4e7));const {parent:x,index:y,node:z}=w;if(x){const F=x[this['childrenKey']];F['splice'](y,0x1),F['length']===0x0&&delete x[this['childrenKey']];}else this[g3(0x2cc)]['splice'](y,0x1);const C=this[g3(0x2e0)](this['root'],r[this['key']]);if(!C)throw new Error('Target\x20node\x20not\x20found');const {parent:D,index:E}=C;u==='before'?D?D[this['childrenKey']]['splice'](E,0x0,z):this['root']['splice'](E,0x0,z):u==='after'&&(D?D[this[g3(0x401)]]['splice'](E+0x1,0x0,z):this['root']['splice'](E+0x1,0x0,z));}[bD(0x2e0)](o,p,r=null){const g4=bD;for(let u=0x0;u<o['length'];u++){const w=o[u];if(w[this[g4(0x4b6)]]===p)return{'parent':r,'index':u,'node':w};if(w[this['childrenKey']]){const x=this['findNodeWithParent'](w[this['childrenKey']],p,w);if(x)return x;}}return null;}}class Ps{constructor(o){const g5=bD;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,'resizeTarget',null),m(this,g5(0x2b5),null),m(this,'dragingCell'),m(this,'dragCellDiff',0x0),m(this,'resizeNum',0x0),m(this,'isResizing',!0x1),m(this,g5(0x4a1),0x0),m(this,'resizeDiff',0x0),m(this,'columnIndex',0x0),m(this,'isMouseDown',!0x1),m(this,'columns'),m(this,'visibleColumns'),m(this,'visibleLeafColumns',[]),m(this,g5(0x1e2),0x0),m(this,'visibleWidth',0x0),m(this,'allCellHeaders',[]),m(this,'leafCellHeaders',[]),m(this,'renderLeafCellHeaders',[]),m(this,'fixedLeftCellHeaders',[]),m(this,'centerCellHeaders',[]),m(this,g5(0x1de),[]),m(this,'renderCenterCellHeaders',[]),m(this,'renderFixedCellHeaders',[]),this['ctx']=o,this['ctx']['on']('resetHeader',xt(()=>{const g6=g5;this['init'](),this['ctx'][g6(0x2f8)](),this['ctx']['emit']('draw');},0x64)),this[g5(0x2ed)](),this['initResizeColumn'](),this['initDragColumn']();}['init'](p=!0x1){const g7=bD,{config:{HEADER_HEIGHT:r,SCROLLER_TRACK_SIZE:u}}=this['ctx'];if(!p){const F=this['ctx']['database']['getColumns']();this['columns']=F;}this[g7(0x288)]=[],this[g7(0x3c7)]=[],this['fixedLeftCellHeaders']=[],this[g7(0x1de)]=[],this['centerCellHeaders']=[],this['visibleColumns']=zl(this['columns']);const w=zi(this['visibleColumns']),x=ui(this['visibleColumns']);this['height']=r*w,this['visibleHeight']=this['height'],this[g7(0x3fb)]=x['reduce']((G,J)=>{const K=J['width']||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['render'](y,0x0),this['ctx']['database']['updateColIndexKeyMap'](this['leafCellHeaders']);const z=this['ctx']['containerElement'][g7(0x2b2)]();this['resizeNum']>0x0?this['ctx']['stageWidth']=Math['floor'](z['width']):this['ctx'][g7(0x2d6)]=Math['min'](Math['floor'](this['width']+u),Math['floor'](z[g7(0x3fb)])),this['ctx']['stageElement']['style'][g7(0x3fb)]=this['ctx'][g7(0x2d6)]+'px',this['visibleWidth']=this['ctx']['stageWidth']-u;const C=this['visibleWidth']-this['width'];if(this['resizeNum']&&C>0x0){const G=Math[g7(0x210)](C/this['resizeNum']*0x64)/0x64;this['resizeAllColumn'](G);}const D=this['fixedLeftCellHeaders']['filter'](J=>!J['hasChildren']);this[g7(0x270)]['fixedLeftWidth']=D['reduce']((J,K)=>J+K['width'],0x0);const E=this['fixedRightCellHeaders']['filter'](J=>!J['hasChildren']);this['ctx'][g7(0x1f3)]=E[g7(0x440)]((J,K)=>J+K['width'],u),this[g7(0x270)]['maxColIndex']=this[g7(0x3c7)]['length']-0x1,this['ctx']['header']['x']=this['x'],this['ctx']['header']['y']=this['y'],this['ctx']['header']['width']=this['width'],this['ctx']['header'][g7(0x22c)]=this['height'],this['ctx'][g7(0x317)]['allCellHeaders']=this['allCellHeaders'],this['ctx']['header']['visibleWidth']=this['visibleWidth'],this[g7(0x270)]['header']['visibleHeight']=this['visibleHeight'];}[bD(0x473)](){const g8=bD;this[g8(0x270)]['on'](g8(0x4a8),o=>{const g9=g8;this['ctx']['config']['ENABLE_RESIZE_COLUMN']&&this['ctx']['isTarget'](o)&&(this['clientX']=o['clientX'],this['resizeTarget']?(this['isResizing']=!0x0,this['ctx'][g9(0x20a)]=!0x0):this['isResizing']=!0x1,this['isMouseDown']=!0x0);}),this['ctx']['on']('mouseup',()=>{const ga=g8;this['ctx']['config']['ENABLE_RESIZE_COLUMN']&&(this['isMouseDown']=!0x1,this['resizeDiff']!==0x0&&this['resizeTarget']&&this['resizeColumn'](this['resizeTarget'],this[ga(0x449)]),this['resizeTarget']=null,this['isResizing']=!0x1,this['isMouseDown']=!0x1,this['ctx'][ga(0x20a)]=!0x1,this[ga(0x4a1)]=0x0,this[ga(0x449)]=0x0);}),this['ctx']['on']('mousemove',p=>{const gb=g8;if(!this[gb(0x270)][gb(0x49d)]['ENABLE_RESIZE_COLUMN']||this['ctx'][gb(0x22d)])return;const {stageWidth:r,config:{RESIZE_COLUMN_MIN_WIDTH:u}}=this['ctx'];if(this[gb(0x2d9)]&&this[gb(0x4fc)]){const w=this['resizeTarget']['width'],x=this[gb(0x4fc)]['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'][gb(0x2e7)]('draw');}else{if(this['resizeTarget']=null,this[gb(0x4f6)])return;if(p[gb(0x286)]<0x0||p['offsetX']>this[gb(0x2f4)]){this['ctx']['stageElement'][gb(0x1f7)]['cursor']==='col-resize'&&(this['ctx']['stageElement']['style']['cursor']=gb(0x4e4));return;}this['ctx']['stageElement']['style']['cursor']==='col-resize'&&(this[gb(0x270)]['stageElement']['style']['cursor']='default');const C=[...this['renderFixedCellHeaders'],...this['renderCenterCellHeaders']];for(const D of C){const {offsetX:E,offsetY:F}=this['ctx'][gb(0x334)](p),G=E,J=F,K=D['getDrawX'](),L=D[gb(0x4c7)]();if(G>K+D['width']-0x5&&G<K+D['width']+0x4&&G<r-0x4&&J>L){const N=D['colIndex']+D['colspan']-0x1,O=this[gb(0x3c7)][gb(0x3e3)](R=>R['colIndex']===N);if(!O||!O[gb(0x47e)]&&this['ctx']['stageWidth']-this['ctx']['fixedRightWidth']<K+D['width'])return;this['ctx']['isTarget'](p)&&F<=this['height']&&(this[gb(0x270)]['stageElement']['style']['cursor']='col-resize',this['resizeTarget']=O);}}}});}['initDragColumn'](){const gd=bD;this[gd(0x270)]['on'](gd(0x341),o=>{const ge=gd;this['ctx'][ge(0x49d)]['ENABLE_DRAG_COLUMN']&&(o[ge(0x2d8)]['dragDisabled']||(this['dragTarget']===o?(this[ge(0x270)]['dragHeaderIng']=!0x0,this['dragCellDiff']=this[ge(0x270)]['mouseX']-o['drawX'],this['ctx']['stageElement']['style']['cursor']='grabbing'):(this['dragTarget']=o,this[ge(0x270)][ge(0x329)]=!0x1)));}),this['ctx']['on']('cellMousedown',()=>{this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(this['dragTarget']=null,this['ctx']['dragHeaderIng']=!0x1);}),this['ctx']['on']('mouseup',()=>{const gf=gd;if(this[gf(0x270)]['config']['ENABLE_DRAG_COLUMN']){if(this['dragingCell']&&this['dragTarget']){const o=(C,D={})=>(C['forEach']((E,F)=>{const gg=gf;E['children']&&o(E[gg(0x1ef)],D),D[E['key']]=F;}),D),p=this['ctx']['database'][gf(0x32a)](),r=Ci(p,zi(p)),u=new Ds(r,{'key':'key','childrenKey':'children'}),w=this['dragTarget']['colIndex']>this['dragingCell'][gf(0x3a2)]?'before':'after';u['treeMove'](this['dragTarget']['column'],this[gf(0x2b0)]['column'],w);const x=u[gf(0x351)](),y=o(x);this[gf(0x270)]['database']['setCustomHeader']({'sortData':y}),this['init']();const z={'source':this['dragTarget'],'target':this['dragingCell'],'columns':r};this['ctx']['emit']('columnDragChange',z);}this['ctx']['dragHeaderIng']&&this['dragTarget']&&(this['ctx']['dragHeaderIng']=!0x1,this['dragTarget']=null,this['dragingCell']=void 0x0,this['dragCellDiff']=0x0,this[gf(0x270)]['clearSelector'](),this['ctx']['focusCellHeader']=void 0x0,this['ctx']['stageElement']['style']['cursor']='default',this['ctx'][gf(0x2e7)]('draw'));}}),this['ctx']['on']('mousemove',o=>{const gj=gd;this['ctx'][gj(0x49d)]['ENABLE_DRAG_COLUMN']&&(!this['ctx']['dragHeaderIng']||!this['dragTarget']||(this['dragTarget']['fixed']||this['ctx']['startAdjustPosition'](o),this['ctx']['emit']('draw')));}),this['ctx']['on']('cellHoverChange',o=>{const gk=gd;this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(o[gk(0x2d8)][gk(0x3f0)]||(this['dragingCell']=this[gk(0x218)](o['colIndex'])));}),this['ctx']['on']('cellHeaderHoverChange',o=>{const gm=gd;this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(o['column'][gm(0x3f0)]||(this[gm(0x2b0)]=this['getDragCellHeader'](o['colIndex'])));});}['getDragCellHeader'](o){const gn=bD;if(!this['dragTarget']||!this['ctx'][gn(0x329)])return;const {column:{parentKey:p},key:r,level:u,fixed:w}=this['dragTarget'],x=this['allCellHeaders']['find'](y=>y['key']!==r&&y['fixed']===w&&y['column']['level']===u&&y[gn(0x2d8)][gn(0x291)]===p&&y['colIndex']<=o&&y[gn(0x3a2)]+y['colspan']-0x1>=o);if(this['ctx']['dragHeaderIng']){const y=x?'grabbing':'not-allowed';this['ctx']['stageElement']['style'][gn(0x47f)]=y;}return x;}['resizeColumn'](o,p){const gp=bD,r=x=>{x['forEach'](y=>{const go=b;if(y['children']&&y['children'][go(0x38b)]>0x0&&r(y['children']),y['key']===o['key']){const z=y[go(0x3fb)]||0x64;y[go(0x3fb)]=z+p;}});};r(this[gp(0x275)]);let u=0x0;if(this['width']<this['visibleWidth']){const x=this[gp(0x2f4)]-this['width'];u=Math['floor'](x/this[gp(0x508)]*0x64)/0x64,this['resizeAllColumn'](u);}const w=o['width']+p+u;this['ctx']['emit']('resizeColumnChange',{'colIndex':o['colIndex'],'key':o['key'],'oldWidth':o['width'],'width':w,'column':o[gp(0x2d8)],'columns':this['columns']}),this[gp(0x270)]['database'][gp(0x265)](o['key'],w),this['init'](!0x0),this['ctx'][gp(0x2e7)](gp(0x487));}['resizeAllColumn'](o){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['width']);else{const x=w['width']+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 gq=b;p['has'](z['key'])&&(z['width']=p['get'](z[gq(0x4b6)])),z['children']&&z['children']['length']>0x0&&u(z['children']);});};u(this['columns']),this['init'](!0x0),this['ctx']['emit']('draw');}['getCustomHeader'](){const gr=bD,o=this['ctx']['database']['getColumns'](),p=this[gr(0x270)]['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 gu=bD,u=p[gu(0x38b)];let w=r;const {HEADER_HEIGHT:x=0x0}=this[gu(0x270)]['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[gu(0x3fb)]||0x64;E&&G<E&&(G=E),F&&G>F&&(G=F),z[gu(0x1ef)]&&(G=ui(z['children'])[gu(0x440)]((K,L)=>K+(L?.['width']||0x64),0x0));const J=new at(this[gu(0x270)],this[gu(0x342)],w,D,G,C,z);this[gu(0x270)]['database']['setHeader'](z['key'],J),this['allCellHeaders'][gu(0x1e7)](J),z['children']||(this['leafCellHeaders']['push'](J),J['column']['widthFillDisable']||this[gu(0x508)]++),z['fixed']===gu(0x4f7)?this[gu(0x427)][gu(0x1e7)](J):z['fixed']==='right'?this['fixedRightCellHeaders']['push'](J):this['centerCellHeaders']['push'](J),!z['children']&&this[gu(0x342)]++,z['children']&&this['render'](z['children'],w),w+=G;}}['drawTipLine'](){const gv=bD;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[gv(0x270)],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[gv(0x449)])+'px',F=0x2d,G=0x18;this['ctx'][gv(0x4ab)]['drawRect'](C+F/0x2,this['ctx']['mouseY']-G/0x2,F,G,{'fillColor':w,'borderWidth':0x0,'borderColor':'transparent'}),this[gv(0x270)]['paint'][gv(0x3f4)](E,C+F/0x2,this['ctx']['mouseY']-G/0x2,F,G+0x2,{'padding':0x0,'color':u,'align':'center','verticalAlign':'middle'});}}}['drawDragTip'](){const gw=bD;if(this['dragTarget']&&this[gw(0x270)]['dragHeaderIng']){const {DRAG_TIP_BG_COLOR:p,DRAG_TIP_LINE_COLOR:r}=this['ctx']['config'],u=this['dragTarget'][gw(0x3fb)];if(this['ctx'][gw(0x4ab)]['drawRect'](this['ctx']['mouseX']-this['dragCellDiff'],this['visibleHeight'],u,this[gw(0x270)][gw(0x4ff)]['visibleHeight'],{'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[gw(0x270)]['stageHeight']],F=[C-0x4,D,C+0x4,D,C,D+0x6,C-0x4,D];this['ctx'][gw(0x4ab)][gw(0x2f2)](F,{'borderColor':r,'borderWidth':1.2,'fillColor':r}),this['ctx']['paint']['drawLine'](E,{'borderColor':r,'borderWidth':1.2});}}}['drawFixedShadow'](){const gx=bD,{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']['drawShadow'](this['x'],this['y'],o,this['height'],{'fillColor':x,'side':gx(0x34f),'shadowWidth':0x4,'colorStart':gx(0x271),'colorEnd':'rgba(0,0,0,0)'}),r<Math['floor'](u['width']-w-0x1)&&p!==y){const z=u['width']-(this['x']+this['width'])+w-p;this['ctx'][gx(0x4ab)]['drawShadow'](z,this['y'],p,this['height'],{'fillColor':x,'side':gx(0x4f7),'shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['update'](){const gy=bD,o=[],p=[],r=[];if(this['centerCellHeaders']['length']){const u=this['centerCellHeaders'][this['centerCellHeaders']['length']-0x1];this['ctx']['lastCenterColIndex']=u[gy(0x3a2)];}this[gy(0x3c6)]['forEach'](w=>{const gz=gy;w[gz(0x24a)]()&&w['isVerticalVisible']()&&(p['push'](w),w['hasChildren']||o['push'](w));}),this['fixedLeftCellHeaders']['forEach'](w=>{const gA=gy;r[gA(0x1e7)](w),w['hasChildren']||o['push'](w);}),this['fixedRightCellHeaders']['forEach'](w=>{const gB=gy;r[gB(0x1e7)](w),w['hasChildren']||o[gB(0x1e7)](w);}),this['renderCenterCellHeaders']=p,this['renderFixedCellHeaders']=r,this[gy(0x2a4)]=o['sort']((w,x)=>w['x']-x['x']),this['visibleLeafColumns']=this[gy(0x2a4)]['map'](w=>w['column']),this['ctx']['header']['visibleLeafColumns']=this['visibleLeafColumns'],this['ctx']['header']['leafCellHeaders']=this['leafCellHeaders'],this[gy(0x270)]['header']['renderLeafCellHeaders']=this['renderLeafCellHeaders'],this[gy(0x270)][gy(0x317)]['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 gC=bD;this['renderCenterCellHeaders'][gC(0x2e6)](o=>{o['update'](),o['draw']();}),this[gC(0x4a0)](),this['renderFixedCellHeaders'][gC(0x2e6)](o=>{o['update'](),o['draw']();}),this['drawBottomLine'](),this['drawTipLine'](),this['drawDragTip']();}}class El{constructor(o,p,r=0x0,u=0x0,w=0x0,x=0x0,y,z='body'){const gD=bD;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,gD(0x3fb),0x0),m(this,'height'),m(this,'cells',[]),m(this,'fixedCells',[]),m(this,'noFixedCells',[]),m(this,gD(0x294),[]),m(this,'rowIndex',0x0),m(this,'rowKey',''),m(this,'rowType','body'),m(this,'data'),m(this,'calculatedHeight',-0x1),this['ctx']=o,this['x']=r,this['y']=u,this['width']=w,this['height']=x,this['rowIndex']=p,this['rowKey']=o['database']['getRowKeyForRowIndex'](p)||'',this[gD(0x3c1)]=z,this['data']=y,this['update']();}[bD(0x501)](){const {header:o}=this['ctx'],p=[],r=[],u=[],w=[];o['renderLeafCellHeaders']['forEach'](x=>{const gE=b,y=new Vt(this['ctx'],this['rowIndex'],x['colIndex'],x['x'],this['y'],x['width'],this['height'],x[gE(0x2d8)],this['data'],this['rowType']);y['fixed']?r['push'](y):u['push'](y),p['push'](y),y[gE(0x366)]&&w['push'](y);}),this['cells']=p,this['calculatedHeightCells']=w,this['fixedCells']=r,this['noFixedCells']=u;}['updateCalculatedHeight'](){const gG=bD,o=this['calculatedHeightCells']['map'](p=>{const gF=b,r=p['getAutoHeight'](),{key:u,height:w=-0x1}=this['ctx']['database']['getMaxRowHeightItem'](this['rowKey'])||{};return r>w?this['ctx'][gF(0x29c)]['setMaxRowHeightItem'](this[gF(0x483)],p['key'],r):p[gF(0x4b6)]===u&&r<w&&this['ctx']['database']['setMaxRowHeightItem'](this['rowKey'],p['key'],r),r;});return this['calculatedHeight']=o[gG(0x38b)]?Math['max'](...o):-0x1,this['calculatedHeight'];}[bD(0x20f)](){this['noFixedCells']['forEach'](o=>{o['draw']();});}[bD(0x33b)](){this['fixedCells']['forEach'](o=>{const gH=b;o[gH(0x487)]();});}['drawContainer'](){const gI=bD;this[gI(0x35d)]['forEach'](o=>{o['drawContainer']();});}[bD(0x3f9)](){const gJ=bD;this['fixedCells'][gJ(0x2e6)](o=>{const gK=gJ;o[gK(0x1fc)]();});}}class Hs{constructor(o){const gL=bD;m(this,'resizeTarget',null),m(this,'isMouseDown',!0x1),m(this,'resizeDiff',0x0),m(this,'clientY',0x0),m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,gL(0x417),0x0),m(this,'tailIndex',0x0),m(this,'isResizing',!0x1),m(this,'renderRows',[]),m(this,gL(0x488),[]),m(this,'visibleHeight',0x0),m(this,'visibleWidth',0x0),m(this,'containerRect'),m(this,gL(0x407),[]),this['ctx']=o,this[gL(0x2ed)](),this['initResizeRow']();}['init'](){const gM=bD,{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[gM(0x270)];if(!z['width'])return;this['x']=0x0,a1==='top'&&E?this['y']=z['height']+C[gM(0x22c)]:this['y']=z['height'];const {data:a2,sumHeight:a3}=D['getData']();this['height']=a3,this['data']=a2,this['width']=z[gM(0x3fb)],this['visibleWidth']=this['ctx']['stageWidth']-F;const a4=this['ctx']['footer']['height'];this['ctx']['isEmpty']=!this['data']['length'],!this['data']['length']&&!K?this['height']=N:!this[gM(0x407)]['length']&&K&&(this['height']=K-z['height']-a4-F);let a5=this['height']+z['height']+F;a5+=a4;let a6=a5;const a7=window[gM(0x3d6)],{top:a8}=this['containerRect']||this['ctx']['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']['length']&&K?a6=K:this['data'][gM(0x38b)]&&O&&a5>O&&(a6=O);a6>0x0&&(this[gM(0x270)][gM(0x3fe)]=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']['body']['x']=this['x'],this[gM(0x270)]['body']['y']=this['y'],this['ctx']['body']['width']=this['width'],this['ctx'][gM(0x4ff)]['height']=this['height'],this['ctx'][gM(0x4ff)]['visibleWidth']=this['visibleWidth'],this['ctx']['body']['visibleHeight']=this['visibleHeight'],this[gM(0x270)][gM(0x4ff)][gM(0x407)]=a2;const aa=window['devicePixelRatio']||0x1,ab=this[gM(0x270)]['stageWidth']*aa,ad=this['ctx']['stageHeight']*aa;r['width']=Math[gM(0x475)](ab),r[gM(0x22c)]=Math[gM(0x475)](ad);const ae=this[gM(0x407)]['length']?'not-empty':'empty';this['ctx']['emit']('emptyChange',{'isEmpty':ae,'type':ae,'headerHeight':z['height'],'bodyHeight':this[gM(0x22c)],'footerHeight':a4,'width':this['width'],'height':this['data']['length']?0x0:N+a4});const af=Math['round'](r['width']/aa*0x2710)/0x2710,ag=Math['round'](r[gM(0x22c)]/aa*0x2710)/0x2710;this['ctx']['canvasElement']['setAttribute']('style',gM(0x282)+ag+gM(0x375)+af+'px;'),this['ctx']['paint']['scale'](aa);}['initResizeRow'](){const gN=bD;this[gN(0x270)]['on']('resize',()=>{this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this['containerRect']=this['ctx']['containerElement']['getBoundingClientRect']());}),this['ctx']['on'](gN(0x2a0),()=>{const gO=gN;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this[gO(0x32e)]=this['ctx']['containerElement'][gO(0x2b2)]());}),this['ctx']['on']('mouseup',()=>{const gP=gN;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this[gP(0x4f6)]=!0x1,this['resizeDiff']!==0x0&&this['resizeTarget']&&this['resizeRow'](this['resizeTarget'],this['resizeDiff']),this['resizeTarget']=null,this['resizeDiff']=0x0,this[gP(0x2d9)]=!0x1,setTimeout(()=>{this['ctx']['rowResizing']=!0x1;},0x0),this['clientY']=0x0);}),this['ctx']['on']('mousedown',o=>{const gQ=gN;this[gQ(0x270)][gQ(0x49d)]['ENABLE_RESIZE_ROW']&&this['ctx']['isTarget'](o)&&(this[gQ(0x360)]=o['clientY'],this['resizeTarget']?(this['isResizing']=!0x0,this['ctx']['rowResizing']=!0x0):(this['isResizing']=!0x1,this['ctx']['rowResizing']=!0x1),this[gQ(0x4f6)]=!0x0);}),this['ctx']['on'](gN(0x240),p=>{const gR=gN;if(!this['ctx'][gR(0x49d)][gR(0x23a)]||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[gR(0x2d9)]&&this['resizeTarget']){const E=this['resizeTarget']['height'];let F=y-this['clientY'];const {calculatedHeight:G}=this['resizeTarget'],J=G===-0x1?D:G;F+E<J&&(F=-(E-J)),this[gR(0x449)]=F,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this['isMouseDown'])return;if(x<0x0||x>this['ctx']['body'][gR(0x2f4)]||w<0x0||w>this[gR(0x270)]['header']['visibleHeight']+this['ctx']['body'][gR(0x1e2)]){this['ctx']['stageElement']['style']['cursor']==='row-resize'&&(this['ctx']['stageElement']['style']['cursor']='default');return;}if(this['ctx']['stageElement']['style']['cursor']===gR(0x3dd))return;this[gR(0x270)]['stageElement']['style']['cursor']==='row-resize'&&(this['ctx']['stageElement']['style']['cursor']='default');for(let K=0x0;K<this['renderRows']['length'];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']['stageElement'][gR(0x1f7)]['cursor']='row-resize',this['resizeTarget']=L);}}}});}['resizeRow'](o,p){const {rowIndex:r,height:u,rowKey:w,data:x}=o;this['ctx']['database']['setRowHeight'](r,u+p),this['init'](),this['ctx']['emit']('draw'),this['ctx']['emit']('resizeRowChange',{'rowIndex':r,'oldHeight':u,'height':u+p,'rowKey':w,'row':x,'data':this['data']});}['drawTipLine'](){const gS=bD;if(this['isResizing']&&this['resizeTarget']){const {stageWidth:o,scrollY:p,config:{RESIZE_ROW_LINE_COLOR:r}}=this['ctx'],u=this[gS(0x4fc)]['y']-p,w=this['resizeTarget'][gS(0x22c)],x=u+w+this['resizeDiff']-0.5,y=[0x0,x-0.5,o,x-0.5];this[gS(0x270)]['paint']['drawLine'](y,{'borderColor':r,'borderWidth':0x1});}}['drawFixedShadow'](){const gT=bD,{fixedLeftWidth:o,fixedRightWidth:p,scrollX:r,header:u,stageWidth:w,config:{HEADER_BG_COLOR:x,SCROLLER_TRACK_SIZE:y}}=this[gT(0x270)];if(r>0x0&&o!==0x0&&!this[gT(0x270)]['isEmpty']&&this['ctx'][gT(0x4ab)]['drawShadow'](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&&!this['ctx']['isEmpty']){const z=u['width']-(this['x']+this[gT(0x3fb)])+w-p;this['ctx']['paint']['drawShadow'](z,this['y'],p,this['height'],{'fillColor':x,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':gT(0x271)});}}['binarySearch'](o,p){let r=0x0,u=o['length']-0x1,w=-0x1;for(;r<=u;){let x=Math['floor']((r+u)/0x2),y=o[x]['bottom'];if(y===p)return x;y<p?r=x+0x1:(w=x,u=x-0x1);}return w;}['update'](){const gU=bD;this['init']();const {header:p,database:r,scrollY:u,config:{CELL_HEIGHT:w}}=this['ctx'],x=u,{data:z,positions:C}=r['getData']();this[gU(0x270)]['maxRowIndex']=z['length']-0x1;let D=this['binarySearch'](C,x),E=this['binarySearch'](C,x+this['visibleHeight']);if(E===-0x1&&(E=this[gU(0x270)]['maxRowIndex']),D===-0x1&&E===this[gU(0x270)]['maxRowIndex']){const G=Math['floor'](this['visibleHeight']/w);D=this['ctx'][gU(0x2aa)]-G;}this['headIndex']=Math['max'](0x0,D),this[gU(0x4e8)]=Math['min'](this['ctx'][gU(0x2aa)],E+0x1),this[gU(0x488)]=z['slice'](this['headIndex'],this['tailIndex']+0x1),this['ctx']['body']['headIndex']=this[gU(0x417)],this['ctx']['body']['tailIndex']=this['tailIndex'],this[gU(0x270)]['body']['visibleRows']=this['visibleRows'];const F=[];for(let J=0x0;J<this['visibleRows']['length'];J++){const K=this['headIndex']+J,L=this[gU(0x488)][J],{height:N,top:O}=this['ctx'][gU(0x29c)]['getPositionForRowIndex'](K),R=new El(this['ctx'],K,0x0,O+this['y'],p['width'],N,L);F['push'](R);}this['renderRows']=F,this['ctx']['body']['renderRows']=F;}['updateAutoHeight'](){const gV=bD,o=this['ctx']['body']['renderRows'];if(!o['some'](r=>r[gV(0x294)][gV(0x38b)]>0x0))return!0x1;o[gV(0x2e6)](r=>{r['updateCalculatedHeight']();});const p=o[gV(0x37d)](r=>({'height':r['calculatedHeight'],'rowIndex':r['rowIndex']}));return this['ctx']['database']['setBatchCalculatedRowHeight'](p);}['draw'](){const gW=bD;this['renderRows'][gW(0x2e6)](o=>{o['drawContainer']();}),this['renderRows']['forEach'](o=>{o['drawCenter']();}),this['drawFixedShadow'](),this['renderRows']['forEach'](o=>{o['drawFixedContainer']();}),this['renderRows']['forEach'](o=>{o['drawFixed']();}),this['drawTipLine']();}}class fs{constructor(o){const gX=bD;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,gX(0x1e2),0x0),this['ctx']=o,this['init']();}['init'](){const gY=bD;this['data']=this['ctx'][gY(0x29c)]['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['visibleWidth']=o['visibleWidth'],this['height']=this['data']['reduce'](y=>y+r,0x0),this['visibleHeight']=this['height'],u?x===gY(0x33e)?this['y']=this[gY(0x270)]['header']['height']:this['y']=this['ctx']['stageHeight']-this['height']-w:this['y']=p['y']+p['height'],this['ctx'][gY(0x45c)]['x']=this['x'],this['ctx']['footer']['y']=this['y'],this['ctx'][gY(0x45c)]['height']=this['height'],this['ctx']['footer']['width']=this['width'],this['ctx']['footer'][gY(0x2f4)]=this['visibleWidth'],this['ctx']['footer']['visibleHeight']=this['visibleHeight'];}[bD(0x4a0)](){const gZ=bD,{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['ctx']['paint']['drawShadow'](this['x'],z,o,this[gZ(0x22c)],{'fillColor':x,'side':'right','shadowWidth':0x4,'colorStart':gZ(0x271),'colorEnd':gZ(0x330)}),r<Math['floor'](u['width']-w-0x1)&&p!==y){const C=u['width']-(this['x']+this['width'])+w-p;this[gZ(0x270)]['paint']['drawShadow'](C,z,p,this['height'],{'fillColor':x,'side':gZ(0x4f7),'shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['update'](){const h0=bD;this['init']();const {CELL_FOOTER_HEIGHT:o}=this['ctx'][h0(0x49d)];let p=this['y'];const r=[];this['data']['forEach']((u,w)=>{const h1=h0,x=new El(this['ctx'],w,0x0,p,this['width'],o,u,'footer');p+=o,r[h1(0x1e7)](x);}),this[h0(0x25d)]=r,this['ctx']['footer']['renderRows']=this['renderRows'];}['drawTopLine'](){const h2=bD,{stageWidth:o,config:{BORDER_COLOR:p}}=this['ctx'],r=[0x0,this['y'],o,this['y']];this['ctx']['paint'][h2(0x2f2)](r,{'borderColor':p,'borderWidth':0x1});}['draw'](){const h4=bD;this['renderRows']['forEach'](o=>{const h3=b;o[h3(0x1fc)]();}),this[h4(0x25d)]['forEach'](o=>{o['drawCenter']();}),this['drawFixedShadow'](),this[h4(0x25d)]['forEach'](o=>{o['drawFixedContainer']();}),this['renderRows'][h4(0x2e6)](o=>{o['drawFixed']();}),this['drawTopLine']();}}class Qs{constructor(o){m(this,'isCut',!0x1),m(this,'isMultipleRow',!0x1),m(this,'ctx'),this['ctx']=o,this['init']();}['init'](){const h5=bD;this['ctx']['on'](h5(0x213),o=>{this['moveFocus'](o);}),this['ctx']['on']('mousemove',xt(o=>{var p;(p=this['ctx']['focusCellHeader'])!=null&&p['fixed']||!this['ctx']['dragHeaderIng']&&this['ctx']['selectorMove']&&this['ctx']['startAdjustPosition'](o);},0x64)),this['ctx']['on']('cellHoverChange',o=>{if(!this['ctx']['autofillMove']){if(o['operation']){this['selectRows'](o,!0x1);return;}this['isMultipleRow']||this['mouseenter']();}}),this['ctx']['on']('cellClick',()=>{this['adjustBoundaryPosition']();}),this[h5(0x270)]['on']('cellMousedown',(o,p)=>{const h6=h5;if(!(!this['ctx']['isTarget'](p)||this['ctx'][h6(0x254)]['style']['cursor']==='pointer'||this['ctx'][h6(0x47c)]||this['ctx']['stageElement']['style']['cursor']===h6(0x3dd))){if(o[h6(0x354)]){this[h6(0x44b)]=!0x0,this['selectRows'](o);return;}window['getComputedStyle'](p[h6(0x4c5)])['userSelect']!=='text'&&p['preventDefault'](),this[h6(0x44b)]=!0x1,this[h6(0x3f7)](p['shiftKey']),this['ctx']['emit']('selectorClick',o);}}),this[h5(0x270)]['on']('mouseup',()=>{this['ctx']['selectorMove']=!0x1,this['ctx']['stopAdjustPosition'](),setTimeout(()=>{this['ctx']['disableHoverIconClick']=!0x1;},0x0);}),this['ctx']['on']('cellHeaderHoverChange',o=>{const h7=h5;this['ctx'][h7(0x4a8)]&&this['selectCols'](o);}),this[h5(0x270)]['on']('cellHoverChange',o=>{this['ctx']['mousedown']&&this['selectCols'](o);}),this['ctx']['on']('cellHeaderMousedown',(o,p)=>{const h8=h5;this['ctx']['stageElement']['style']['cursor']===h8(0x4db)||this['ctx']['isPointer']||(window['getComputedStyle'](p[h8(0x4c5)])['userSelect']!==h8(0x3c9)&&p['preventDefault'](),this[h8(0x270)]['clearSelector'](),o[h8(0x354)]?this['selectAll']():this['selectCols'](o));}),this[h5(0x270)]['on']('keydown',o=>{const h9=h5;if(!this[h9(0x270)]['editing']&&!this['ctx']['finding']){if(o[h9(0x497)]&&o['code']==='KeyV'||o['metaKey']&&o['code']==='KeyV'){this['paste']();return;}if(o['ctrlKey']&&o['code']==='KeyC'||o[h9(0x297)]&&o['code']==='KeyC'){this['copy'](),this['isCut']=!0x1;return;}if(o['ctrlKey']&&o[h9(0x21e)]==='KeyX'||o['metaKey']&&o[h9(0x21e)]==='KeyX'){this['isCut']=!0x0,this['copy']();return;}if((o['ctrlKey']&&o['code']==='KeyA'||o[h9(0x297)]&&o['code']===h9(0x4a6))&&(o['preventDefault'](),this['selectAll']()),o['code']===h9(0x33c)||o['shiftKey']&&o['code']===h9(0x41d)){o['preventDefault'](),this['moveFocus']('LEFT');return;}if(o['code']==='ArrowUp'){o[h9(0x518)](),this['moveFocus']('TOP');return;}if(o[h9(0x21e)]===h9(0x25c)||o[h9(0x21e)]===h9(0x41d)){o['preventDefault'](),this['moveFocus'](h9(0x251));return;}if(o['code']==='ArrowDown'){o[h9(0x518)](),this['moveFocus']('BOTTOM');return;}if(o['code']===h9(0x3b5)||o['code']==='Backspace'){o['preventDefault']();const {xArr:p,yArr:r}=this['ctx']['selector'];this['clearSelectedData'](p,r);return;}}}),this['ctx']['on'](h5(0x249),()=>{const ha=h5,{xArr:o,yArr:p}=this[ha(0x270)][ha(0x4eb)];this['clearSelectedData'](o,p);}),this['ctx']['on'](h5(0x350),()=>{this['copy']();}),this['ctx']['on']('contextMenuPaste',()=>{const hb=h5;this[hb(0x231)]();}),this[h5(0x270)]['on']('contextMenuCut',()=>{const hd=h5;this['isCut']=!0x0,this[hd(0x499)]();}),this['ctx']['on']('setSelectorCell',o=>{this['ctx']['setFocusCell'](o),this['click'](),this['adjustBoundaryPosition']();}),this['ctx']['on'](h5(0x39c),o=>{this['selectCols'](o);});}['setSelector'](r,w){const he=bD;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['stringify'](this[he(0x270)]['selector']['xArr'])!==JSON['stringify'](C)||JSON[he(0x498)](this['ctx'][he(0x4eb)]['yArr'])!==JSON[he(0x498)](D)){this[he(0x270)]['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['ctx'][he(0x2aa)]-R;let [a3,a4]=C,[a5,a6]=D;if(a3<V||a4>a0||a5<a1||a6>a2)return;if(this[he(0x270)]['config'][he(0x1e9)]){const a8=this['adjustMergeCells'](C,D);a5=a8['yArr'][0x0],a6=a8[he(0x2c8)][0x1],a3=a8['xArr'][0x0],a4=a8['xArr'][0x1],this['ctx'][he(0x29e)]=a8['onlyMergeCell'];}a3===a4&&a5===a6?this['ctx']['selectOnlyOne']=!0x0:this['ctx']['selectOnlyOne']=!0x1,C=[Math[he(0x4ae)](V,a3),Math['min'](a0,a4)],D=[Math['max'](a1,a5),Math['min'](a2,a6)];const {BEFORE_SET_SELECTOR_METHOD:a7}=this['ctx']['config'];if(typeof a7==he(0x28f)){const a9=a7({'focusCell':this['ctx']['focusCell'],'xArr':C,'yArr':D});if(!a9)return;C=a9[he(0x4ed)],D=a9[he(0x2c8)];}this[he(0x270)]['selector']['xArr']=C,this['ctx']['selector']['yArr']=D,a6===this['ctx']['maxRowIndex']&&a5===0x0?this['ctx']['selectColsIng']=!0x0:this['ctx']['selectColsIng']=!0x1,a4===this['ctx'][he(0x1fd)]&&a3===0x0?this['ctx'][he(0x1da)]=!0x0:this['ctx']['selectRowsIng']=!0x1,this['ctx']['emit']('setSelector',this['ctx']['selector']),this['ctx']['emit'](he(0x409));}}['adjustMergeCells'](r,u){const hf=bD;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[hf(0x1e7)](a0),(V===C||V===D)&&F['push'](a0));}const G=E['reduce']((a1,a2)=>{const hg=hf,{yArr:a3}=a2[hg(0x4c3)](),[a4,a5]=a3;return a1['minY']=Math['min'](a1['minY'],a4),a1['maxY']=Math['max'](a1['maxY'],a5),a1;},{'minY':x,'maxY':z}),J=F['reduce']((a1,a2)=>{const hj=hf,{xArr:a3}=a2[hj(0x4c3)](),[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[hf(0x2f1)]],L=[G['minY'],G['maxY']];let N=!0x1;if(J['minX']!==J[hf(0x2f1)]||G['minY']!==G['maxY']){const a1=JSON['stringify'](K)+JSON['stringify'](L),a2=(w=this[hf(0x270)][hf(0x43e)])==null?void 0x0:w['getSpanInfo']();N=(a2&&JSON['stringify'](a2['xArr'])+JSON['stringify'](a2['yArr']))===a1;}return{'xArr':K,'yArr':L,'onlyMergeCell':N};}['selectCols'](o){const hk=bD;if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE']||!this['ctx']['config'][hk(0x2e8)]||this['ctx'][hk(0x314)]||this['ctx']['columnResizing']||this['ctx']['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'][hk(0x2aa)]-u;if(this['ctx']['focusCellHeader']){const {colIndex:y}=this['ctx']['focusCellHeader'];if(this['ctx'][hk(0x2f8)](),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[hk(0x4b1)]-0x1],E=[w,x];this[hk(0x4d3)](D,E);}}}[bD(0x30d)](){const hm=bD;if(this['ctx']['autofillMove']||this['ctx']['editing'])return;const {ENABLE_SELECTOR_ALL_ROWS:p,ENABLE_SELECTOR_ALL_COLS:r}=this['ctx'][hm(0x49d)];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']['config'],D=u,E=w||this[hm(0x270)]['maxColIndex']-z,F=x,G=y||this['ctx'][hm(0x2aa)]-C,J=[D,E],K=[F,G];this['setSelector'](J,K);}}['selectRows'](o,p=!0x0){const hn=bD;if(this['ctx'][hn(0x49d)]['ENABLE_SELECTOR_SINGLE']||!this['ctx']['config'][hn(0x466)]||this[hn(0x270)]['autofillMove']||this['ctx'][hn(0x22d)])return;const {SELECTOR_AREA_MIN_X:r,SELECTOR_AREA_MAX_X:u,SELECTOR_AREA_MAX_X_OFFSET:w}=this['ctx']['config'],x=u||this['ctx'][hn(0x1fd)]-w,y=r;if(p){this['ctx'][hn(0x45a)](o);const z=[y,x],C=[o['rowIndex'],o['rowIndex']];this['setSelector'](z,C);}if(this['ctx']['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 ho=bD;if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE']||this['ctx'][ho(0x22d)])return;const {mousedown:p,focusCell:r,hoverCell:u}=this['ctx'];if(p&&r&&u){const {rowIndex:w,colIndex:x}=r,y=Math[ho(0x2a5)](u[ho(0x3a2)],x),z=Math['max'](u['colIndex'],x),C=Math[ho(0x2a5)](u['rowIndex'],w),D=Math[ho(0x4ae)](u[ho(0x31d)],w),E=[y,z],F=[C,D];this['setSelector'](E,F);}}['click'](p=!0x1){const hp=bD,{focusCell:r,clickCell:u}=this['ctx'];if(r&&this[hp(0x343)](r['rowIndex'],r['colIndex'])){if(this[hp(0x270)]['selector'][hp(0x4bc)]=!0x0,u&&p){if(this['ctx'][hp(0x49d)]['ENABLE_SELECTOR_SINGLE'])return;const {colIndex:w,rowIndex:x}=u,{colIndex:y,rowIndex:z}=r,C=Math['min'](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[hp(0x270)][hp(0x2e7)]('cellSelectedClick',r);const K=[r[hp(0x3a2)],r[hp(0x3a2)]],L=[r['rowIndex'],r['rowIndex']];this['setSelector'](K,L);}}}['clearCopyLine'](){const hq=bD;this['ctx']['selector']['xArrCopy']=[-0x1,-0x1],this[hq(0x270)]['selector']['yArrCopy']=[-0x1,-0x1];}['getCell'](o,p){const hr=bD,r=this['ctx']['body']['renderRows']['find'](u=>u['rowIndex']===o);return r?.['cells'][hr(0x3e3)](u=>u[hr(0x3a2)]===p);}['copy'](){const ht=bD;if(!this['ctx']['config']['ENABLE_COPY']||this['ctx'][ht(0x320)])return;let {value:o,xArr:p,yArr:r}=this['ctx'][ht(0x495)]();if(this['ctx']['config'][ht(0x1e9)]&&this['ctx']['database']['hasMergeCell'](p,r)){if(this['ctx']['onlyMergeCell']&&this['ctx']['focusCell']){const x=this[ht(0x270)]['focusCell'];o=[[x['getValue']()]],p=[x['colIndex'],x[ht(0x3a2)]],r=[x['rowIndex'],x['rowIndex']];}else{const y={'code':'ERR_MERGED_CELLS_COPY','message':'Merged\x20cells\x20cannot\x20span\x20copy\x20data'};this[ht(0x270)]['hasEvent']('error')?this['ctx']['emit']('error',y):alert(y['message']);return;}}const {BEFORE_COPY_METHOD:u}=this['ctx']['config'];if(typeof u=='function'){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['clipboard'][ht(0x4d4)](w)['then'](()=>{const hu=ht;this['ctx']['selector']['xArrCopy']=this['ctx']['selector']['xArr']['slice'](),this['ctx']['selector']['yArrCopy']=this['ctx']['selector']['yArr']['slice'](),this['ctx']['emit']('copyChange',{'xArr':this['ctx'][hu(0x4eb)]['xArrCopy'],'yArr':this[hu(0x270)]['selector']['yArrCopy'],'data':o}),this['ctx']['emit'](hu(0x487));})['catch'](C=>console['error']('Copy\x20Failure:',C)):console[ht(0x365)]('current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API');}['clearSelectedData'](p,r,u=!0x1,w=null){const hv=bD;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'][hv(0x29c)]['getItemValueForRowIndexAndColIndex'](E,F);if(G){const {rowKey:J,key:K}=G;this['ctx'][hv(0x29c)]['getReadonly'](J,K)||(y[hv(0x3be)](J),x[hv(0x1e7)]({'rowKey':J,'key':K,'value':w,'row':{}}));}}if(!x[hv(0x38b)])return[];if(u)return x;this['ctx'][hv(0x29c)]['batchSetItemValue'](x,!0x0);let z=[];return y['forEach'](L=>{const hw=hv;z['push'](this['ctx']['database'][hw(0x4b5)](L));}),this[hv(0x270)]['emit'](hv(0x322),x,z),x;}['paste'](){const hx=bD;if(!navigator['clipboard']){console['error'](hx(0x349));return;}const {ENABLE_PASTER:o}=this['ctx']['config'];if(this['ctx']['selector']['enable']&&o){const p=this['ctx']['selector']['yArr'][0x0],r=this['ctx']['selector']['xArr'][0x0],u=new Set();navigator[hx(0x348)]['readText']()['then'](async z=>{const hy=hx;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'](hy(0x222),{'maxY':K,'maxX':O,'minY':F,'minX':N,'overflowRowCount':R,'overflowColCount':a0,'textArr':C});const a1=C['length']===0x1&&C[0x0][hy(0x38b)]===0x1;if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx']['database']['hasMergeCell'](D,E)&&!a1){const a5={'code':hy(0x221),'message':'Merged\x20cells\x20cannot\x20span\x20paste\x20data'};this[hy(0x270)]['hasEvent']('error')?this['ctx']['emit'](hy(0x365),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['ctx']['database']['getItemValueForRowIndexAndColIndex'](a9,aa);if(ad){const {rowKey:ae,key:af}=ad;this['ctx']['database']['getReadonly'](ae,af)||(u['add'](ae),a2['push']({'rowKey':ae,'key':af,'value':ab,'row':{}}));}}}if(this['isCut']){const ag=this['clearSelectedData'](this['ctx']['selector'][hy(0x468)],this[hy(0x270)]['selector']['yArrCopy'],!0x0),ai=a2['map'](aj=>aj[hy(0x483)]+'-'+aj['key']);ag[hy(0x2e6)](aj=>{ai['includes'](aj['rowKey']+'-'+aj['key'])||a2['unshift'](aj);}),this['isCut']=!0x1;}if(!a2['length'])return;const {BEFORE_PASTE_DATA_METHOD:a3}=this[hy(0x270)]['config'];if(typeof a3=='function'){const aj=a3,ak=a2[hy(0x37d)](am=>({'rowKey':am['rowKey'],'key':am['key'],'value':am[hy(0x4ac)],'oldValue':this[hy(0x270)]['database']['getItemValue'](am['rowKey'],am['key']),'row':this[hy(0x270)][hy(0x29c)][hy(0x4b5)](am['rowKey'])}));if(a2=await aj(ak,D,E,C),a2&&!a2['length'])return;}this['clearCopyLine'](),this['ctx']['batchSetItemValueByEditor'](a2,!0x0);let a4=[];u['forEach'](am=>{const hz=hy;a4['push'](this['ctx'][hz(0x29c)][hz(0x4b5)](am));}),this[hy(0x270)]['emit']('pasteChange',a2,a4),this['ctx'][hy(0x2e7)]('draw');})['catch'](w=>{console['error']('Failed\x20to\x20get\x20the\x20clipboard\x20content:',w);});}}['moveFocus'](p){const hA=bD;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[hA(0x270)]['maxRowIndex'];switch(p){case'LEFT':u>x&&u--;break;case'TOP':w>y&&w--;break;case'RIGHT':u<z&&u++;break;case hA(0x242):w<C&&w++;break;}const D=[u,u],E=[w,w],F=this['getCell'](w,u);F&&(F['operation']||this['isInSettingRange'](F['rowIndex'],F['colIndex'])&&(this[hA(0x270)]['setFocusCell'](F),this['setSelector'](D,E),this[hA(0x28d)](),this['ctx']['emit'](hA(0x22b),F),this['ctx']['emit']('draw')));}['isInSettingRange'](p,r){const hB=bD,{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['ctx'][hB(0x1fd)]-z,F=x,G=y||this['ctx']['maxRowIndex']-C;return!(r<D||r>E||p<F||p>G);}['adjustBoundaryPosition'](){const hC=bD,{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[hC(0x1e2)]&&(ad=N['visibleHeight']);let ae=0x0;a1&&(a2==='top'?ab=F['height']+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['floor'](O-a9)),ab>0x0?ai=Math['floor'](R-ab):af>0x0&&(ai=Math['floor'](R+af)),(Math['abs'](O-ag)>2.5||Math[hC(0x328)](R-ai)>2.5)&&this['ctx']['setScroll'](ag,ai);}['destroy'](){}}class vs{constructor(o){m(this,'ctx'),m(this,'maxColRowCell'),this['ctx']=o,this['init']();}['init'](){const hD=bD;this[hD(0x270)]['on']('mousemove',p=>{const hE=hD;if(this['ctx']['stageElement']['style']['cursor']===hE(0x3dd)&&(this['ctx']['stageElement']['style'][hE(0x47f)]='default'),this['ctx']['editing']||!this['ctx']['focusCell']||!this['maxColRowCell'])return;const {offsetX:r,offsetY:u}=this['ctx'][hE(0x334)](p),{colIndex:w,rowIndex:x,drawX:y,drawY:z,width:C,height:D}=this[hE(0x208)],E=0x6,F=w===this['ctx']['maxColIndex']||x===this['ctx']['maxRowIndex']?0x0:0x2,G=y+C-E+F,J=z+D-E+F;r>G&&u>J&&r<G+E&&u<J+E&&(this['ctx']['stageElement']['style']['cursor']='crosshair'),this['ctx']['autofillMove']&&this['ctx']['startAdjustPosition'](p);}),this['ctx']['on'](hD(0x256),o=>{const {xArr:p,yArr:r}=this['ctx']['selector'],u=p[0x1],w=r[0x1],{colIndex:x,rowIndex:y}=o;this['ctx']['config']['ENABLE_AUTOFILL']&&x===u&&y===w&&(this['maxColRowCell']=o),this['mouseenter'](o);}),this[hD(0x270)]['on']('mousedown',()=>{const hF=hD;this[hF(0x270)]['stageElement']['style']['cursor']==='crosshair'&&this['setMousedown']();}),this[hD(0x270)]['on']('mouseup',()=>{this['setMouseUp'](),this['ctx']['stopAdjustPosition']();});}['isAutofillIng'](){const hG=bD,{xArr:o,yArr:p}=this['ctx']['selector'];return!(JSON['stringify'](this[hG(0x270)]['autofill']['xArr'])===JSON['stringify'](o)&&JSON['stringify'](this['ctx']['autofill']['yArr'])===JSON['stringify'](p));}[bD(0x388)](){const hH=bD;this['ctx']['autofill']['enable']=!0x0,this['ctx'][hH(0x314)]=!0x0,this['ctx'][hH(0x25e)]=!0x0;}['setMouseUp'](){const hI=bD;this['ctx']['autofill']['enable']&&(this['isAutofillIng']()&&this[hI(0x266)](),this[hI(0x270)][hI(0x227)]['enable']=!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 hJ=bD,{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'][hJ(0x4eb)]['yArr'];if(!(!E&&JSON['stringify'](K)!==JSON['stringify'](G))&&!(!D&&JSON[hJ(0x498)](J)!==JSON['stringify'](F))&&(JSON[hJ(0x498)](this['ctx']['autofill']['xArr'])!==JSON[hJ(0x498)](F)||JSON['stringify'](this['ctx'][hJ(0x227)][hJ(0x2c8)])!==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['ctx']['config'],a3=N,a4=O||this[hJ(0x270)]['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['max'](a3,a7),Math['min'](a4,a8)],G=[Math[hJ(0x4ae)](a5,a9),Math['min'](a6,aa)];const {BEFORE_SET_AUTOFILL_METHOD:ab}=this[hJ(0x270)][hJ(0x49d)];if(typeof ab=='function'){const ad=ab({'focusCell':this['ctx'][hJ(0x43e)],'xArr':F,'yArr':G});if(!ad)return;F=ad['xArr'],G=ad[hJ(0x2c8)];}this[hJ(0x270)][hJ(0x227)]['xArr']=F,this[hJ(0x270)][hJ(0x227)]['yArr']=G,this[hJ(0x270)]['emit']('setAutofill',this['ctx']['autofill']),this['ctx']['emit']('draw');}}async['autofillData'](){const hK=bD,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['set'](T+'-'+V,!0x0);}const {value:z}=w,C=z[0x0][hK(0x38b)],D=z['length'],E=this['ctx']['autofill'][hK(0x4ed)],F=this['ctx']['autofill']['yArr'],G=C===0x1&&D===0x1;if(this[hK(0x270)]['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx']['database']['hasMergeCell'](E,F)&&!G){const a0={'code':'ERR_MERGED_CELLS_AUTOFILL','message':'Merged\x20cells\x20cannot\x20span\x20autofill\x20data'};this['ctx']['hasEvent'](hK(0x365))?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']['database']['getItemValueForRowIndexAndColIndex'](a4,a3),a7=a4+'-'+a3;if(a6&&!x['has'](a7)){const {rowKey:a8,key:a9}=a6;this['ctx']['database']['getReadonly'](a8,a9)||(r['add'](a8),J['push']({'rowKey':a8,'key':a9,'value':a5,'row':{}}));}}if(!J['length'])return;this['ctx']['selector']['xArr']=this['ctx']['autofill']['xArr'],this[hK(0x270)]['selector']['yArr']=this['ctx']['autofill'][hK(0x2c8)];const {BEFORE_AUTOFILL_DATA_METHOD:K}=this['ctx']['config'];if(typeof K=='function'){const aa=K,ab=J['map'](ad=>({'rowKey':ad['rowKey'],'key':ad['key'],'value':ad['value'],'oldValue':this['ctx']['database']['getItemValue'](ad['rowKey'],ad[hK(0x4b6)]),'row':this['ctx'][hK(0x29c)][hK(0x4b5)](ad['rowKey'])}));if(J=await aa(ab,E,F),J&&!J['length'])return;}this[hK(0x270)]['batchSetItemValueByEditor'](J,!0x0);let N=[];r['forEach'](ad=>{N['push'](this['ctx']['database']['getRowDataItemForRowKey'](ad));}),this['ctx'][hK(0x2e7)]('autofillChange',J,N),this[hK(0x270)]['emit']('draw');}['mouseenter'](o){const hL=bD;if([hL(0x479),hL(0x408),'index-selection'][hL(0x2cd)](o[hL(0x23d)]))return;const {selector:p,autofill:r}=this['ctx'];if(this[hL(0x270)]['mousedown']&&p['enable']&&r['enable']){const {rowIndex:u,colIndex:w}=o,x=p['xArr']['slice'](),y=p['yArr']['slice']();u>=p[hL(0x2c8)][0x0]&&u<=p['yArr'][0x1]?w>p['xArr'][0x1]?x[hL(0x259)](0x1,0x1,w):w<p[hL(0x4ed)][0x0]&&x[hL(0x259)](0x0,0x1,w):u>p['yArr'][0x1]?y['splice'](0x1,0x1,u):u<p['yArr'][0x0]&&y[hL(0x259)](0x0,0x1,u),this['setAutofill'](x,y);}}['destroy'](){}}const Wi=Math['min'],oi=Math[bD(0x4ae)],Ui=Math['round'],Ni=Math['floor'],q=o=>({'x':o,'y':o}),Bs={'left':'right','right':bD(0x4f7),'bottom':'top','top':bD(0x38a)};function Yt(o,p,r){return oi(o,Wi(p,r));}function Li(o,p){const hM=bD;return typeof o==hM(0x28f)?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 hN=bD;return o==='y'?'height':hN(0x3fb);}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 hO=bD;r===void 0x0&&(r=!0x1);const u=xi(o),w=Tt(o),x=Kt(w);let y=w==='x'?u===(r?hO(0x43f):'start')?'right':'left':u===hO(0x4c8)?'bottom':'top';return p[hO(0x255)][x]>p['floating'][x]&&(y=ji(y)),[y,ji(y)];}function a(){const mr=['adjustPositionX','364sASepu','visibleDistance','-5px','boundClickHandler','TREE_CHILDREN_KEY','Delete','visible','TOOLTIP_TEXT_COLOR','loadData','ENABLE_RESIZE_COLUMN_TEXT','SORT_ASC_ICON_SVG','getUtils','CELL_HEIGHT','contextMenuElement','add','isFocus','toggleExpandAll','rowType','render','87ceeb','excel-wrapper','drawTreeImageWidth','centerCellHeaders','leafCellHeaders','fixedLeft','text','scrollToRowkey','_height','alignment','12px\x20normal\x20Arial','borderTop','validationErrorMap','fillStyle','resetHeader','generateColumns','emptyEl','hex8','index-selection','innerHeight','parse','configName','updateColIndexKeyMap','row','img','no-results','crosshair','drawSelectionImageWidth','drawTreeImageX','overflowTooltipMaxWidth','dblclick','overflows','find','splitPoints','animationFrameId','formatterFooter','SORT_STRICTLY','getReadonly','shift','getCellValue','31499kDOfNb','transparent','bottom-end','statusSummary','eventBus','dragDisabled','overlayer','drawSortImageWidth','getRowForRowIndex','drawText','barHeight','px\x20','click','contentEl','drawFixedContainer','parseSheet','width','rules','button','stageHeight','createMenu','clearSelectedData','childrenKey','resetEditorStyle','scrollTo','doneEdit','drawImage','classList','data','selection','drawView','arrowEl','right-start','handleTouchstart','selectionMap','finding','drawTextWidth','relationRowKeys','intersectionRatio','.e-virt-table-submenu-item','charAt','startRow','mostReadable','getRowIndexForRowKey','headIndex','getItemValue','SELECT_BORDER_COLOR','F10','contextMenuIng','sortBy','Tab','delete','horizontalAlign','visible_','innerText','loadingWindows','object','fixedLeftWidth','STRIPE','getRowForRowKey','fixedLeftCellHeaders','readonly','rowHeight','resize','#DDE0EA','currentIndex','maxLineClampHeader','setValidationErrorByRowKey','checkbox-indeterminate','drawSortImageName','remove',')\x5cs*\x5c)?','contains','00008b','empty','hoverRow','e-virt-table-main-menu','isPointInElement','setScrollY','sortData','findMenuItem','getCustomHeader','drawHoverImageName','focusCell','end','reduce','onTouchstart','hex4','9acd32','toName','match','eventTable','hasChildren','scroll','resizeDiff','cellFooterHoverChange','isMultipleRow','onWheel','handleKeydown','cautious','hasScrollbar','prevBtn','contextMenuHide','once','borderRight','clippingAncestors','from','hsl','__s','scrollToCurrentResult','CELL_WIDTH','setFocusCell','drawY','footer','flip','active','4b0082','tree-selection','EXPAND_ICON_SVG','editor','mouseup','8px','div','ENABLE_SELECTOR_ALL_COLS','CHECKBOX_DISABLED_SVG','xArrCopy','SELECTOR_CELL_VALUE_TYPE','scrollToColkey','timestamp','setScrollX','getValidations','trim','updateContainer','HEADER_BG_COLOR','restore','#ffffff','initResizeColumn','vertical','round','initTextEditor','source','hoverCellHeader','index','trackHeight','mouseleave','isPointer','Top','fixed','cursor','e-virt-table','fixedRight','placement','rowKey','message','sortChange','drawSortImageX','draw','visibleRows','timerX','string','setSortState','正在平滑补充可视区数据','emptyChange','#4E5969','focus','verticalAlign','handleBodyEvent','KeyY','cellHoverChange','keys','getSelectedData','className','ctrlKey','stringify','copy','addColorStop','test','getBody','config','DD.MM.YYYY','onClick','drawFixedShadow','clientX','drawTreeImageSource','mutationObserver','overflowTooltipShow','offsetWidth','KeyA','historyIndex','mousedown','drawBorder','startEditByInput','paint','value','join','max','table-host','bold\x20','colspan','c0c0c0','dcdcdc','set','getRowDataItemForRowKey','key','getColHeaderByIndex','exec','required','has','dragStart','enable','getSelectionRows','removeSubMenuItem','cellFooterMouseleave','setSelectionByRows','drawHoverImageY','100','getSpanInfo','drawTreeImageY','target','_cleanup','getDrawY','start','drawCellBgColor','trackWidth','rows','cellFooterMouseenter','row-resize','SORT_ICON_COLOR','positionMenu','indexOf','_format','icons','setSelector','writeText','#fafafa','f0f','rowResizing','random','loadingElement','auto','pointer','clearSelection','setValidationError','assign','charCodeAt','#e1e6eb','8b008b','rect','getPropertyValue','default','bind','ffe4e1','Source\x20node\x20not\x20found','tailIndex','sort','item','selector','BEFORE_AUTOFILL_DATA_METHOD','xArr','shrinkToFit','getHeader','replace','clientTop','fixedCells','focusInput','drawSelectionImageSource','clientLeft','isMouseDown','left','backState','small','10px','arcTo','resizeTarget','getElementRects','scrollerMove','body','setOverlayerAutoHeightMap','update','CELL_FOOTER_HEIGHT','hsl(','cleanupSubmenuRecursively','12px\x20Arial','#21a366','sheet-loading','resizeNum','d3d3d3','countEl','updatedSize','resizableData','substring','distance','BODY_BG_COLOR','parentElement','pow','scrollX','getColumnByColIndex','canvas\x20context\x20not\x20found','middle','updateCssVar','rowHeights','preventDefault','colWidth','updateStyle','cancel','currentDOMTreeMenu','getRowKeyForRowIndex','_config','disabled','container','innerHTML','drawErrorTip','batchSetItemValue','pattern','selectRowsIng','onMouseUp','scrollToRowIndex','hideSiblingSubmenus','fixedRightCellHeaders','_originalInput','getValue','barY','visibleHeight','btn-group','sortAscIconName','searchResults','ffb6c1','push','getValidationMessage','ENABLE_MERGE_CELL_LINK','_submenu','removeEventListener','loadConfig','expandMap','drawHoverImageSource','children','name','mergeCol','floatingEl','fixedRightWidth','COLUMNS_ALIGN','ffe4c4','headerMap','style','customHeaderChange','drawSortImageHeight','getDrawX','shiftKey','drawContainer','maxColIndex','setSelectorCell','translate','navigateNext','col-resize','setItemValue','cellMouseup','ENABLE_SELECTOR_SPAN_ROW','#5f6368','ICON_EDIT_SVG','Width','maxColRowCell','then','columnResizing','<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>','get','display','getIsExpand','drawCenter','floor','NUMBER_ERROR_TIP','setItemValueByEditor','setMoveFocus','includeFallbackColors','left-start','getDimensions','drawX','getDragCellHeader','selectionChange','YYYY/MM/DD','rowspan','drawTextHeight','CHECKBOX_CHECK_SVG','code','getRowKeyByItem','scrollerFocus','ERR_MERGED_CELLS_PASTE','onPastedDataOverflow','cellType','errorMessage','cellClick','parseFromString','autofill','drawHoverImageHeight','isBlob','hasTree','moveFocus','height','editing','AAAsmall','visibleHoverCell','currentCell','paste','e-virt-table-container','drawTextFont','-tooltip','bufferCheckState','svg','#d7dbe0','7sGSWrB','fillColor','ENABLE_RESIZE_ROW','getVirtualBodyCell','f0e68c','type','AUTO_ROW_HEIGHT',':hover','mousemove','backgroundColor','BOTTOM','setRowHeight','clearBufferData','100px','imageEnterAndLeave','off','clickCellHeader','contextMenuClearSelected','isHorizontalVisible','color','hideAllChildSubmenus','isArray','trackY','TREE_SELECT_MODE','readOnly','RIGHT','mouseX','overlayerElement','stageElement','reference','cellMouseenter','containerElement','floating','splice','isFinite','trackX','ArrowRight','renderRows','disableHoverIconClick','minWidth','hasOwnProperty','filterMethod','expand','getSvg','mouseout','setCustomHeaderResizableData','autofillData','drawBg','rgb(','show','block','FOOTER_FIXED','toRgb','none','sortClick','ffa500','ctx','rgba(0,0,0,0.1)','drawHoverImageX','_COLOR','selectOnlyOne','columns','isBusy','48805Dtpskt','renderFooter','scrollWidth','onMouseMove','change','只允许输入数字','relationColKeys','check','updateType','sortDataRecursive','shrink','height:','doDraw','maxHeight','flex-start','offsetX','blur','allCellHeaders','getContext','...','editorType','horizontalScrollbar','adjustBoundaryPosition','lineDashOffset','function','setCurrentRowByRowIndex','parentKey','parent','updateHoverIcon','calculatedHeightCells','scrollY','isCollapsed','metaKey','span','selection-tree','every','absolute','database','loading','onlyMergeCell','mousedownHeader','resizeObserver','supports','batchSetItemValueByEditor','data-overlayer','renderLeafCellHeaders','min','rowIndexRowKeyMap','timerY','querySelectorAll','filter','maxRowIndex','size','selectTreeSelectionRecursive','00fa9a','isRTL','updateSpanInfo','dragingCell','toggleAllSelection','getBoundingClientRect','BODY_CELL_READONLY_METHOD','positions','dragTarget','structure','canvas','DEFAULT_EXPAND_ALL','expandLoading','ownerDocument','editorEl','e-virt-table-finder-bar-nav-btn\x20next-btn','getColumnByKey','tableHost','FOOTER_TEXT_COLOR','_applyModification','clearTextCache','startEdit','activeElement','finderBar','align','renderCellHeaders','catch','yArr','fixedData','setRowSelection','createElement','root','includes','handleHover','2533563BKWUzF','setFilterMethod','both','ENABLE_FINDER','barWidth','adjustPositionY','00ff7f','stageWidth','tree','column','isResizing','arrow','isElement','[data-menu=\x22','addEventListener','calc(100%\x20+\x20','BODY_CELL_EDITOR_METHOD','findNodeWithParent','getAttribute','getMaxRowHeightItem','scrollTop','scrollToColIndex','cellTarget','forEach','emit','ENABLE_SELECTOR_ALL_ROWS','history','nextBtn','position','scrollToIndex','init','onScrollX','isVerticalVisible','scrollLeft','maxX','drawLine','getOffsetParent','visibleWidth','unbind','rowKeyMap','drawSortImageY','clearSelector','menuData','normal','checkboxKeyMap','drawSelectionImageHeight','stopPropagation','appendChild','textCallback','observer','loadingEl','2hAxkCw','checkbox-check','searchData','clearCustomHeaderInvalidValues','number','handleMouseEvent','URL','SHRINK_ICON_COLOR','offsetLeft','hidden','onScroll','selectAll','querySelector','ERROR_TIP_COLOR','RESIZE_ROW_MIN_HEIGHT','hide','clientWidth','ffefd5','autofillMove','toString','slice','header','wheel','textContent','totalCols','enter','取消固定','rowIndex','closePath','1220914zLRPan','domSelectionStr','contextMenuEl','clearSelectedDataChange','10uAbOod','handleHeaderEvent','clientHeight','setAttribute','mouseenter','abs','dragHeaderIng','getColumns','borderBottom','totalRows','getDocumentElement','containerRect','ceil','rgba(0,0,0,0)','getRightFixedX','sheetIndex','wrapText','getOffset','iterator','hoverCell','setCustomHeader','inputEl','meta','mergeStartMap','drawFixed','ArrowLeft','measureText','top','handleMouseDown','CSS_UNIT','cellHeaderMousedown','columnIndex','isInSettingRange','BEFORE_HEADER_CONTEXT_MENU_METHOD','clear','hex3','customHeader','clipboard','current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API','onload','level','stopAdjustPosition','updateCount','center','right','contextMenuCopy','getTree','toLowerCase','_hasChildren','operation','lineWidth','a9a9a9','renderType','0ff','readability','0px','maxLineClamp','relative','noFixedCells','RESIZE_ROW_LINE_COLOR','cachedSummary','clientY','sortDescIconName','rgb(82,146,247)','hideSubmenu','Insert','error','autoRowHeight','toHsl','TOP','.e-virt-table-submenu','hex6',')[,|\x5cs]+(','calculateTextHeight','lastCenterColIndex','altKey','sortState','102QgpxBQ','changedDataMap','expandItem','ff0','input','px;width:','clearFilterMethod','startColorstr=','e-virt-table-finder-bar-input-wrapper','clearDomSelection','checkbox-disabled','cellCache','drawTextX','map','fff0f5','1721599xmbSUm','maxWidth','-overlayer-body','contextElement','0f0',')|(?:','%,\x20','ellipsis','direction','setMousedown','save','bottom','length','symbol','overlayerAutoHeightMap','activeSubmenus','itemRowKeyMap','events','keydown','Backspace','fillRect','isInteger','isHasChanged','scroller','ENABLE_EDIT_SINGLE_CLICK','1821912vVkFbZ','visibleLeafColumns','checkbox-uncheck','barX','selectCols','unobserve','READONLY_TEXT_COLOR','icon-select','destroy','drawEdge','colIndex','ENABLE_OFFSET_HEIGHT','SELECTOR_AREA_MAX_X_OFFSET','adff2f','getVirtualBodyCellByKey','displayText','14529GdIPLL','ENABLE_AUTO_THEME','7cfc00','isLastChild','parentNode','12864EbUVOz','initData'];a=function(){return mr;};return a();}function _s(o){const p=ji(o);return[Wt(o),p,Wt(p)];}function Wt(o){const hP=bD;return o['includes']('start')?o[hP(0x4f0)]('start','end'):o['replace']('end','start');}const hl=['left','right'],el=['right','left'],qs=['top',bD(0x38a)],$s=['bottom','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 p=ni(o);return Bs[p]+o['slice'](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 hQ=bD;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[hQ(0x3fb)]/0x2-x[hQ(0x3fb)]/0x2,G=w['y']+w['height']/0x2-x['height']/0x2,J=w[C]/0x2-x[C]/0x2;let K;switch(D){case hQ(0x33e):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['width'],'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 hR=bD;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='floating',altBoundary:N=!0x1,padding:O=0x0}=Li(w,r),R=Ol(O),T=F[N?L==='floating'?'reference':hR(0x258):L],V=Ei(await D['getClippingRect']({'element':(x=await(D['isElement']==null?void 0x0:D[hR(0x2db)](T)))==null||x?T:T[hR(0x382)]||await(D[hR(0x32d)]==null?void 0x0:D['getDocumentElement'](F['floating'])),'boundary':J,'rootBoundary':K,'strategy':G})),a0=L==='floating'?{'x':z,'y':C,'width':E['floating'][hR(0x3fb)],'height':E['floating']['height']}:E[hR(0x255)],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['getScale'](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[hR(0x33e)])/a2['y'],'bottom':(a3['bottom']-V['bottom']+R[hR(0x38a)])/a2['y'],'left':(V['left']-a3['left']+R[hR(0x4f7)])/a2['x'],'right':(a3['right']-V['right']+R['right'])/a2['x']};}const cc=0x32,hc=async(r,w,x)=>{const hS=bD,{placement:z='bottom',strategy:C='absolute',middleware:D=[],platform:E}=x,F=E['detectOverflow']?E:{...E,'detectOverflow':sc},G=await(E[hS(0x2ae)]==null?void 0x0:E['isRTL'](w));let J=await E[hS(0x4fd)]({'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['placement']),a7['rects']&&(J=a7['rects']===!0x0?await E['getElementRects']({'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':bD(0x2da),'options':o,async 'fn'(r){const hT=bD,{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?hT(0x38a):'right',ad=a9?'clientHeight':hT(0x312),ae=K[hT(0x255)][a7]+K['reference'][a6]-a5[a6]-K['floating'][a7],af=a5[a6]-K['reference'][a6],ag=await(O['getOffsetParent']==null?void 0x0:O[hT(0x2f3)](a2));let ai=ag?ag[ad]:0x0;(!ai||!await(O['isElement']==null?void 0x0:O['isElement'](ag)))&&(ai=a0['floating'][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[hT(0x255)][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 hU=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['alignmentOffset'])return{};const aa=ni(F),ab=ei(a0),ad=ni(a0)===a0,ae=await(a1[hU(0x2ae)]==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['push'](aj[aq[0x0]],aj[aq[0x1]]);}if(am=[...am,{'placement':F,'overflows':ak}],!ak[hU(0x29a)](ar=>ar<=0x0)){var an,ao;const ar=(((an=K[hU(0x45d)])==null?void 0x0:an['index'])||0x0)+0x1,au=ai[ar];if(au&&(!(a4===hU(0x3cc)&&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[hU(0x2a9)](aw=>aw['overflows'][0x0]<=0x0)[hU(0x4e9)]((aw,ax)=>aw['overflows'][0x1]-ax['overflows'][0x1])[0x0])==null?void 0x0:ao['placement'];if(!av)switch(a6){case'bestFit':{var ap;const aw=(ap=am[hU(0x2a9)](ax=>{if(ag){const ay=ei(ax['placement']);return ay===ab||ay==='y';}return!0x0;})['map'](ax=>[ax['placement'],ax[hU(0x3e2)]['filter'](ay=>ay>0x0)['reduce']((ay,az)=>ay+az,0x0)])['sort']((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 hV=bD,{placement:u,platform:w,elements:x}=p,y=await(w[hV(0x2ae)]==null?void 0x0:w['isRTL'](x['floating'])),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==hV(0x306)?{'mainAxis':G,'crossAxis':0x0,'alignmentAxis':null}:{'mainAxis':G['mainAxis']||0x0,'crossAxis':G['crossAxis']||0x0,'alignmentAxis':G['alignmentAxis']};return C&&typeof L==hV(0x306)&&(K=C==='end'?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 hW=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[hW(0x482)])&&(u=z['arrow'])!=null&&u['alignmentOffset']?{}:{'x':w+C['x'],'y':x+C['y'],'data':{...C,'placement':y}};}};},oc=function(o){const hX=bD;return o===void 0x0&&(o={}),{'name':hX(0x3e9),'options':o,async 'fn'(r){const hY=hX,{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'?'top':hY(0x4f7),a4=L==='y'?hY(0x38a):hY(0x34f),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 hZ=bD;var p;return(o==null||(p=o[hZ(0x2ba)])==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){return fi()?o instanceof Node||o instanceof H(o)['Node']:!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 {overflow:p,overflowX:r,overflowY:u,display:w}=A(o);return/auto|scroll|overlay|hidden|clip/['test'](p+u+r)&&w!=='inline'&&w!=='contents';}function nc(o){return/^(table|td|th)$/['test'](Si(o));}function Qi(o){try{if(o['matches'](':popover-open'))return!0x0;}catch{}try{return o['matches'](':modal');}catch{return!0x1;}}const bc=/transform|translate|scale|rotate|perspective|filter/,ac=/paint|layout|strict|content/,Ii=o=>!!o&&o!==bD(0x26d);let et;function Mt(o){const i0=bD,p=B(o)?A(o):o;return Ii(p['transform'])||Ii(p[i0(0x1ff)])||Ii(p['scale'])||Ii(p['rotate'])||Ii(p['perspective'])||!Jt()&&(Ii(p['backdropFilter'])||Ii(p[i0(0x2a9)]))||bc['test'](p['willChange']||'')||ac['test'](p['contain']||'');}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(){const i1=bD;return et==null&&(et=typeof CSS<'u'&&CSS['supports']&&CSS[i1(0x2a1)]('-webkit-backdrop-filter','none')),et;}function yi(o){return/^(html|body|#document)$/['test'](Si(o));}function A(o){return H(o)['getComputedStyle'](o);}function vi(o){const i2=bD;return B(o)?{'scrollLeft':o[i2(0x2f0)],'scrollTop':o['scrollTop']}:{'scrollLeft':o['scrollX'],'scrollTop':o['scrollY']};}function mi(o){const i3=bD;if(Si(o)==='html')return o;const p=o['assignedSlot']||o[i3(0x3ac)]||ml(o)&&o['host']||ii(o);return ml(p)?p['host']:p;}function Pl(o){const p=mi(o);return yi(p)?o['ownerDocument']?o['ownerDocument']['body']:o['body']:ci(p)&&Vi(p)?p:Pl(p);}function Gi(o,p,r){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['concat'](y,y['visualViewport']||[],Vi(w)?w:[],z&&r?Gi(z):[]);}else return p['concat'](w,Gi(w,[],r));}function yt(o){const i4=bD;return o[i4(0x292)]&&Object['getPrototypeOf'](o['parent'])?o['frameElement']:null;}function Hl(o){const i5=bD,p=A(o);let r=parseFloat(p['width'])||0x0,u=parseFloat(p['height'])||0x0;const w=ci(o),x=w?o[i5(0x4a5)]: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){return B(o)?o:o['contextElement'];}function Yi(o){const i6=bD,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['width']):r['width'])/u,z=(x?Ui(r['height']):r['height'])/w;return(!y||!Number['isFinite'](y))&&(y=0x1),(!z||!Number[i6(0x25a)](z))&&(z=0x1),{'x':y,'y':z};}const Wc=q(0x0);function fl(o){const p=H(o);return!Jt()||!p['visualViewport']?Wc:{'x':p['visualViewport']['offsetLeft'],'y':p['visualViewport']['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 i7=bD;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[i7(0x33e)]+F['y'])/E['y'],K=C['width']/E['x'],L=C['height']/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[i7(0x4f7)]+(T['clientLeft']+parseFloat(a1['paddingLeft']))*V['x'],a3=a0['top']+(T['clientTop']+parseFloat(a1['paddingTop']))*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 i8=bD,r=vi(o)[i8(0x2f0)];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 i9=bD;let {elements:r,rect:u,offsetParent:w,strategy:x}=p;const y=x==='fixed',z=ii(w),C=r?Qi(r[i9(0x258)]):!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[i9(0x4f1)];}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[i9(0x2f0)]*E['x']+F['x']+J['x'],'y':u['y']*E['y']-D['scrollTop']*E['y']+F['y']+J['y']};}function Xc(o){const ia=bD;return Array[ia(0x455)](o['getClientRects']());}function pc(o){const ib=bD,p=ii(o),r=vi(o),u=o['ownerDocument']['body'],w=oi(p[ib(0x279)],p['clientWidth'],u['scrollWidth'],u['clientWidth']),x=oi(p['scrollHeight'],p[ib(0x325)],u['scrollHeight'],u['clientHeight']);let y=-r['scrollLeft']+Bi(o);const z=-r[ib(0x2e3)];return A(u)[ib(0x387)]==='rtl'&&(y+=oi(p['clientWidth'],u['clientWidth'])-w),{'width':w,'height':x,'x':y,'y':z};}const Zl=0x19;function uc(p,r){const id=bD,u=H(p),w=ii(p),x=u['visualViewport'];let y=w['clientWidth'],z=w['clientHeight'],C=0x0,D=0x0;if(x){y=x[id(0x3fb)],z=x['height'];const F=Jt();(!F||F&&r==='fixed')&&(C=x[id(0x30a)],D=x['offsetTop']);}const E=Bi(w);if(E<=0x0){const G=w['ownerDocument'],J=G['body'],K=getComputedStyle(J),L=G['compatMode']==='CSS1Compat'&&parseFloat(K['marginLeft'])+parseFloat(K['marginRight'])||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 ig=bD,r=bi(o,!0x0,p==='fixed'),u=r['top']+o[ig(0x4f1)],w=r['left']+o['clientLeft'],x=ci(o)?Yi(o):q(0x1),y=o['clientWidth']*x['x'],z=o[ig(0x325)]*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 ij=bD;let u;if(p==='viewport')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[ij(0x22c)]};}}}return Ei(u);}function vl(o,p){const ik=bD,r=mi(o);return r===p||!B(r)||yi(r)?!0x1:A(r)[ik(0x2eb)]==='fixed'||vl(r,p);}function Lc(o,p){const im=bD,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)[im(0x2eb)]===im(0x47e);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']===im(0x29b)||w[im(0x2eb)]==='fixed')||Vi(y)&&!C&&vl(o,y))?u=u['filter'](D=>D!==y):w=z,y=mi(y);}return p['set'](o,u),u;}function xc(p){const io=bD;let {element:r,boundary:u,rootBoundary:w,strategy:x}=p;const y=[...u===io(0x454)?Qi(r)?[]:Lc(r,this['_c']):[]['concat'](u),w],z=Il(r,y[0x0],x);let C=z[io(0x33e)],D=z['right'],E=z['bottom'],F=z['left'];for(let G=0x1;G<y['length'];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['left'],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 ip=bD,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[ip(0x4f5)],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[ip(0x4f7)]+C['scrollLeft']-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 iq=bD;return A(o)[iq(0x2eb)]==='static';}function ol(o,p){const ir=bD;if(!ci(o)||A(o)['position']===ir(0x47e))return null;if(p)return p(o);let r=o['offsetParent'];return ii(o)===r&&(r=r['ownerDocument']['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 it=bD,p=this['getOffsetParent']||Bl,r=this[it(0x216)],s=await r(o['floating']);return{'reference':rc(o['reference'],await p(o['floating']),o['strategy']),'floating':{'x':0x0,'y':0x0,'width':s['width'],'height':s['height']}};};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){return o['x']===p['x']&&o['y']===p['y']&&o['width']===p['width']&&o['height']===p['height'];}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 iu=b;z===void 0x0&&(z=!0x1),C===void 0x0&&(C=0x1),x();const D=o['getBoundingClientRect'](),{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['clientHeight']-(F+J)),O=Ni(E),R={'rootMargin':-K+'px\x20'+-L+iu(0x3f6)+-N+'px\x20'+-O+'px','threshold':oi(0x0,Wi(0x1,C))||0x1};let T=!0x0;function V(a0){const iv=iu,a1=a0[0x0][iv(0x411)];if(a1!==C){if(!T)return y();a1?y(!0x1,a1):u=setTimeout(()=>{y(!0x1,1e-7);},0x3e8);}a1===0x1&&!Al(D,o['getBoundingClientRect']())&&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 iw=bD;w===void 0x0&&(w={});const {ancestorScroll:x=!0x0,ancestorResize:z=!0x0,elementResize:C=typeof ResizeObserver=='function',layoutShift:D=typeof IntersectionObserver==iw(0x28f),animationFrame:E=!0x1}=w,F=Nt(p),G=x||z?[...F?Gi(F):[],...r?Gi(r):[]]:[];G[iw(0x2e6)](T=>{x&&T['addEventListener']('scroll',u,{'passive':!0x0}),z&&T['addEventListener']('resize',u);});const J=F&&D?Jc(F,u):null;let K=-0x1,L=null;C&&(L=new ResizeObserver(T=>{let [V]=T;V&&V['target']===F&&L&&r&&(L['unobserve'](r),cancelAnimationFrame(K),K=requestAnimationFrame(()=>{var a0;(a0=L)==null||a0['observe'](r);})),u();}),F&&!E&&L['observe'](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(),()=>{const ix=iw;var T;G[ix(0x2e6)](V=>{const iy=ix;x&&V['removeEventListener']('scroll',u),z&&V['removeEventListener'](iy(0x42a),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 iz=bD;m(this,'ctx'),m(this,iz(0x4bc),!0x1),m(this,iz(0x3f8)),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['createElement']('div'),this['arrowEl']=document['createElement']('div'),this['floatingEl']=document['createElement'](iz(0x465)),this['floatingEl']['className']=x+iz(0x234),this['contentEl'][iz(0x496)]=x+'-tooltip-content',this['arrowEl'][iz(0x496)]=x+'-tooltip-arrow';const y={'display':'none','position':'absolute','background':p,'color':r,'boxSizing':'border-box','zIndex':u,'padding':iz(0x464),'borderRadius':'4px','fontSize':'12px',...w},z={'position':'absolute','width':'10px','height':iz(0x4fa),'background':y['background'],'backgroundColor':y['backgroundColor'],'transform':'rotate(45deg)','zIndex':y['zIndex']};Object['assign'](this['arrowEl']['style'],z),Object['assign'](this['floatingEl']['style'],y),this['floatingEl']['appendChild'](this['contentEl']),this['floatingEl']['appendChild'](this['arrowEl']),this['ctx']['containerElement']['appendChild'](this['floatingEl']),this['init']();}['init'](){const iC=bD;this['floatingEl']['addEventListener']('mouseleave',()=>{const iA=b;this[iA(0x311)]();}),this['ctx']['on']('mouseout',o=>{this['floatingEl']['contains'](o['relatedTarget'])||this['hide']();}),this['ctx']['on']('onScroll',()=>{this['hide']();}),this['ctx']['on']('startEdit',()=>{const iB=b;this[iB(0x311)]();}),this[iC(0x270)]['on']('visibleCellHoverChange',(o,p)=>{const iD=iC;this['floatingEl']['contains'](p['target'])||(o[iD(0x386)]||o['message'])&&this['show'](o);}),this[iC(0x270)]['on']('visibleCellMouseleave',(o,p)=>{const iE=iC;this['floatingEl']['contains'](p[iE(0x4c5)])||this['hide']();}),this['ctx']['on']('cellHeaderMouseleave',(o,p)=>{this['floatingEl']['contains'](p['target'])||this['hide']();}),this['ctx']['on']('cellHeaderHoverChange',(o,p)=>{const iF=iC;this[iF(0x1f2)]['contains'](p['target'])||o['ellipsis']&&this['show'](o);}),this[iC(0x270)]['on'](iC(0x4bf),(o,p)=>{const iG=iC;this['floatingEl']['contains'](p[iG(0x4c5)])||this[iG(0x311)]();}),this['ctx']['on']('cellFooterHoverChange',(o,p)=>{this['floatingEl']['contains'](p['target'])||o['ellipsis']&&this['show'](o);}),this['ctx']['on']('cellShowTooltip',(o,p)=>{this['show'](o,p);}),this['ctx']['on']('cellHideTooltip',()=>{this['hide']();});}['show'](o,p){const iH=bD;if(this['ctx']['contextMenuIng']||!o['overflowTooltipShow']||this['ctx']['mousedown'])return;this['floatingEl']['style']['display']=iH(0x26a);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[iH(0x3f8)]['style'][iH(0x380)]=(o[iH(0x3e0)]||0x1f4)+'px',this[iH(0x3f8)]['style']['minWidth']=iH(0x245),this['contentEl']['style']['width']='100%',this['contentEl']['style'][iH(0x20d)]='inline-block',this['contentEl']['style']['wordBreak']='break-all',this['contentEl']['style']['lineHeight']='1.5',this['contentEl'][iH(0x421)]=r;const w=o[iH(0x217)]+u['x'],x=o[iH(0x45b)]+u['y'];Di({'getBoundingClientRect'(){const iI=iH;return{'width':o[iI(0x2f4)],'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']})]})[iH(0x209)](y=>{const iJ=iH,{x:z,y:C,placement:D,middlewareData:E}=y;if(Object['assign'](this['floatingEl'][iJ(0x1f7)],{'top':C+'px','left':z+'px'}),E[iJ(0x2da)]){const F=E[iJ(0x2da)];['left',iJ(0x215),'left-end']['includes'](D)?Object['assign'](this['arrowEl']['style'],{'top':F['y']+'px','bottom':'','left':'','right':'-5px'}):['right',iJ(0x40b),'right-end']['includes'](D)?Object['assign'](this[iJ(0x40a)]['style'],{'top':F['y']+'px','bottom':'','left':'-5px','right':''}):['bottom','bottom-start',iJ(0x3ed)]['includes'](D)?Object['assign'](this['arrowEl'][iJ(0x1f7)],{'top':'-5px','bottom':'','left':F['x']+'px','right':''}):['top','top-start','top-end'][iJ(0x2cd)](D)&&Object['assign'](this['arrowEl']['style'],{'top':'','bottom':iJ(0x3b2),'left':F['x']+'px','right':''});}});}['hide'](){const iK=bD;this['enable']&&(this['enable']=!0x1,this['floatingEl']['style'][iK(0x20d)]='none');}['destroy'](){const iL=bD;this['contentEl']['remove'](),this['arrowEl'][iL(0x431)](),this[iL(0x1f2)]['remove']();}};class wc{constructor(o){const iM=bD;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,iM(0x51b),!0x1),this['ctx']=o,this[iM(0x476)](),this['init']();}['init'](){const iP=bD;this['ctx']['on']('outsideMousedown',()=>{const iN=b;this['cellTarget']&&this[iN(0x2e5)]['editorType']==='text'&&this['clearEditor']();}),this['ctx']['on']('moveFocus',o=>{const iO=b;this[iO(0x2e5)]=o,this['resetEditorStyle']();const {xArr:p,yArr:r}=this['ctx']['selector'];this['selectorArrStr']=JSON[iO(0x498)](p)+JSON['stringify'](r),this[iO(0x4f3)]();}),this['ctx']['on'](iP(0x30c),()=>{const iQ=iP;this[iQ(0x4bc)]&&this['doneEdit']();}),this[iP(0x270)]['on']('hoverIconClick',o=>{const iR=iP;this['editCell'](o['rowIndex'],o[iR(0x3a2)]);}),this['ctx']['on'](iP(0x391),o=>{const iS=iP;if(!this[iS(0x270)]['isTarget'](o)||!this['ctx']['focusCell']||this['ctx']['finding'])return;const {focusCell:p}=this[iS(0x270)];if(o['code']==='Escape'&&this['ctx']['editing']){this['cancel']=!0x0;const {focusCell:z}=this['ctx'];z&&(this['ctx']['emit']('setSelectorCell',z),this[iS(0x2e5)]=z),this['doneEdit']();return;}if((o[iS(0x36e)]||o['metaKey'])&&o['key']==='Enter'&&this['ctx']['editing']&&this['inputEl']){o['preventDefault']();const C=this['inputEl']['selectionStart'],D=this['inputEl']['value'][iS(0x50d)](0x0,C),E=this[iS(0x338)]['value']['substring'](C);this['inputEl'][iS(0x4ac)]=D+'\x0a'+E,this['inputEl']['selectionStart']=this['inputEl']['selectionEnd']=C+0x1,this['autoSize']();return;}if(o['code']===iS(0x41d)&&this['ctx']['editing']){if(o[iS(0x518)](),this[iS(0x404)](),o['shiftKey']){this['ctx']['emit']('setMoveFocus','LEFT');return;}this['ctx']['emit']('setMoveFocus','RIGHT');return;}if(o['key']==='Enter'&&this['ctx']['editing']){if(o[iS(0x518)](),this[iS(0x404)](),o['shiftKey']){this['ctx']['emit']('setMoveFocus',iS(0x368));return;}this['ctx']['emit'](iS(0x213),'BOTTOM');return;}if(o[iS(0x4b6)]==='Enter'&&!this['ctx']['editing']){o[iS(0x518)](),this['startEdit']();return;}const r=o['key'],u=o['ctrlKey'],w=o['altKey'],x=o['shiftKey'],y=o['metaKey'];if(!(u||w||x||y||['Enter','CapsLock','Escape','Tab',iS(0x392),'Delete','ArrowUp','ArrowDown','ArrowLeft','ArrowRight','Home','End','PageUp','PageDown',iS(0x364),'F1','F2','F3','F4','F5','F6','F7','F8','F9',iS(0x41a),'F11','F12']['includes'](r))){if(document['activeElement']!==this['inputEl']&&p['editorType']==='text'){o[iS(0x518)]();return;}this['startEdit'](!0x0);}}),this['ctx']['on'](iP(0x225),o=>{const iT=iP;if(this[iT(0x270)]['isPointer']||!this['isInSelectorRange'](o[iT(0x31d)],o['colIndex']))return;const {xArr:p,yArr:r}=this[iT(0x270)][iT(0x4eb)],u=JSON['stringify'](p)+JSON['stringify'](r);if(this['focusInput'](),this['selectorArrStr']===u&&this['cellTarget']){if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this[iT(0x270)][iT(0x29e)]){this['startEdit']();return;}if(this[iT(0x270)][iT(0x274)]&&o['rowKey']===this[iT(0x2e5)]['rowKey']&&o['key']===this['cellTarget']['key']){this['startEdit']();return;}}if(this['selectorArrStr']=u,this['doneEdit'](),this['cellTarget']=o,this['resetEditorStyle'](),this['ctx'][iT(0x49d)]['ENABLE_EDIT_SINGLE_CLICK']){if(this['ctx'][iT(0x49d)]['ENABLE_MERGE_CELL_LINK']&&this['ctx']['onlyMergeCell']){this[iT(0x2c2)]();return;}this['ctx']['selectOnlyOne']&&this['startEdit']();}});}['isInSelectorRange'](o,p){const iU=bD,{xArr:r,yArr:u}=this['ctx'][iU(0x4eb)],[w,x]=r,[y,z]=u;return!(p<w||p>x||o<y||o>z);}['initTextEditor'](){const iV=bD;this['inputEl']=document[iV(0x2cb)]('textarea'),this['inputEl']['id']='e-virt-table-editor-textarea',this['inputEl'][iV(0x326)]('rows','1'),this['inputEl']['setAttribute']('tabindex','-1'),this['inputEl']['addEventListener']('input',this['autoSize']['bind'](this)),this[iV(0x2bb)]=this['ctx']['editorElement'],this['inputEl'][iV(0x496)]='e-virt-table-editor-textarea',this['editorEl'][iV(0x2fe)](this['inputEl']),this[iV(0x270)]['containerElement'][iV(0x2fe)](this['editorEl']);}['autoSize'](){const iW=bD;if(!this['ctx']['editing'])return;const o=this['inputEl']['value'];this['cellTarget']&&this['cellTarget']['type']==='number'&&o!==''&&(this['ctx']['emit']('cellHideTooltip'),/^-?\d+(\.\d+)?$/[iW(0x49b)](o)||this['ctx']['emit']('cellShowTooltip',this['cellTarget'],this[iW(0x270)]['config']['NUMBER_ERROR_TIP'])),this['inputEl']['style']['height']='auto';let p=this['inputEl']['scrollHeight'],r=this['ctx']['body'][iW(0x1e2)];p>r&&(p=r);const {stageHeight:u,footer:w,header:x,config:{SCROLLER_TRACK_SIZE:y}}=this['ctx'],z=u-w['height']-y;this['editorEl']['style']['bottom']='auto',this['drawY']<x['height']&&(this['editorEl']['style']['top']=x['height']-0x1+'px'),this['drawY']+p>z&&(this[iW(0x2bb)]['style']['left']=this['drawX']-0x1+'px',this['editorEl']['style'][iW(0x33e)]='auto',this['editorEl']['style']['bottom']=u-z+'px'),this['inputEl']['style']['height']=p+'px';}['startEditByInput'](p,r=!0x1){const iX=bD,u=r?null:p['getValue'](),{editorType:w}=p;if(w==='none')return;p['update'](),this['ctx']['config'][iX(0x1e9)]&&p[iX(0x2af)]();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']['zIndex']=iX(0x4c2),this['editorEl'][iX(0x1f7)]['left']=this['drawX']-0x1+'px',this['editorEl']['style']['top']=this['drawY']+'px',this[iX(0x2bb)]['style']['bottom']='auto',this['editorEl']['style']['maxWidth']='none',this['editorEl'][iX(0x1f7)]['maxHeight']=F+'px',['text']['includes'](w)?(this['inputEl']['style']['opacity']='1',this['inputEl'][iX(0x1f7)]['position']='relative',this['inputEl']['style']['minWidth']=y-0x1+'px',this[iX(0x338)][iX(0x1f7)]['minHeight']=x-0x1+'px',this['inputEl']['style']['maxHeight']=F+'px',this['inputEl']['style']['width']=y+'px',this['inputEl']['style']['height']='auto',this['inputEl']['style']['padding']=D+'px',this['inputEl']['value']='',u!==null&&(this[iX(0x338)]['value']=u),(this['inputEl']['scrollHeight']>x||this[iX(0x45b)]<E['height'])&&this['autoSize']()):(this['inputEl']['style']['opacity']='0',this[iX(0x338)]['style']['width']='1px',this[iX(0x338)][iX(0x1f7)]['height']='1px',this['inputEl']['style'][iX(0x2eb)]=iX(0x29b),this[iX(0x338)][iX(0x1f7)]['left']='0px',this['inputEl'][iX(0x1f7)]['top']='0px');}['doneEditByInput'](){const iY=bD;if(this['cellTarget']&&this['cellTarget']['editorType']===iY(0x3c9)){const {rowKey:o,key:p}=this['cellTarget'],r=this['cellTarget']['getValue'](),u=this['inputEl'][iY(0x4ac)];u!==r&&!(u===''&&r===null)&&!this['cancel']&&this['ctx'][iY(0x212)](o,p,u,!0x0);}}[bD(0x4f3)](){const iZ=bD;document[iZ(0x2c3)]!==this[iZ(0x338)]&&this[iZ(0x338)][iZ(0x48f)]({'preventScroll':!0x0});}[bD(0x2c2)](o=!0x1){const j0=bD;this['cancel']=!0x1;const {ENABLE_EDIT_CLICK_SELECTOR:p}=this['ctx']['config'];if(!p)return;const r=this['ctx']['focusCell'];r&&(r[j0(0x2ef)]()&&r['isHorizontalVisible']()||this['ctx']['emit'](j0(0x2ec),r['rowIndex'],r['colIndex']),this['editCell'](r['rowIndex'],r['colIndex'],o));}['editCell'](o,p,r=!0x1){const j1=bD,u=this['ctx']['body']['renderRows']['find'](D=>D[j1(0x31d)]===o);if(!u)return;const w=u['cells'][j1(0x3e3)](D=>D['colIndex']===p);if(!w||!(w['isVerticalVisible']()&&w['isHorizontalVisible']()))return;this['ctx']['emit'](j1(0x1fe),w);const x=this['ctx']['focusCell'];if(!x||['index','index-selection','selection'][j1(0x2cd)](x['type'])||this['enable'])return;const {rowKey:y,key:z}=x,C=this['ctx']['database']['getReadonly'](y,z);x&&!C&&(this[j1(0x4bc)]=!0x0,this['ctx']['editing']=!0x0,this['cellTarget']=x,this[j1(0x4aa)](this[j1(0x2e5)],r),this['ctx']['emit']('startEdit',this['cellTarget']),this['ctx']['emit']('draw'));}['doneEdit'](){const j2=bD;this['enable']&&(this['doneEditByInput'](),this['ctx']['emit']('cellHideTooltip'),this['ctx'][j2(0x2e7)]('doneEdit',this['cellTarget']),this[j2(0x4bc)]=!0x1,this['ctx']['editing']=!0x1,this[j2(0x402)](),setTimeout(()=>{this['focusInput']();},0x0),this['ctx']['emit']('draw'));}['resetEditorStyle'](){const j3=bD,o=this['cellTarget'];o&&(this['editorEl']['style']['left']=o['drawX']+'px',this['editorEl'][j3(0x1f7)]['top']=o['drawY']+'px',this['editorEl']['style']['maxWidth']='1px',this['editorEl'][j3(0x1f7)][j3(0x284)]='1px',this['editorEl']['style']['zIndex']='-1');}['clearEditor'](){const j4=bD;this['doneEdit'](),this['cellTarget']=null,this['selectorArrStr']='',this['ctx']['clearSelector'](),this['ctx'][j4(0x43e)]=void 0x0,this['inputEl']['blur'](),this['ctx']['emit']('draw');}[bD(0x3a0)](){var o;(o=this['editorEl'])==null||o['remove']();}}let Rc=class{constructor(o){const j5=bD;m(this,'ctx'),m(this,'emptyEl'),this['ctx']=o;const {EMPTY_TEXT:p,EMPTY_CUSTOM_STYLE:r}=this['ctx']['config'];this['ctx']['emptyElement']?this['emptyEl']=this['ctx']['emptyElement']:(this[j5(0x3d3)]=document['createElement']('div'),this['emptyEl']['innerText']=p),this['emptyEl']['className']='e-virt-table-empty',this['emptyEl']['style']['display']='none',this['ctx']['containerElement']['appendChild'](this['emptyEl']),this['ctx']['on'](j5(0x48d),({type:u,headerHeight:w,bodyHeight:x,footerHeight:y})=>{const j6=j5,z=w+(x+y)/0x2,C={'display':u===j6(0x435)?'block':j6(0x26d),'top':z+'px',...r};Object['assign'](this[j6(0x3d3)][j6(0x1f7)],C);});}['destroy'](){this['emptyEl']['remove']();}};class zc{constructor(o){const j7=bD;m(this,'ctx'),m(this,j7(0x300)),this['ctx']=o,this['init']();}['arerMapsEqual'](o,p){const j8=bD;if(o[j8(0x2ab)]!==p['size'])return!0x1;for(let [r,u]of o)if(!p['has'](r)||p['get'](r)!==u)return!0x1;return!0x0;}['init'](){const jb=bD;this['observer']=new MutationObserver(xt(()=>{const ja=b,o=this['ctx']['overlayerElement']['querySelectorAll']('[data-auto-height=\x22true\x22]'),p=new Map();o['forEach'](u=>{const j9=b,w=Number(u[j9(0x2e1)]('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['round'](y['height']));});const r=this['ctx']['database']['getOverlayerAutoHeightMap']();if(!this['arerMapsEqual'](r,p)){if(this['ctx']['database']['setOverlayerAutoHeightMap'](p),r[ja(0x2ab)]===0x0&&p['size']===0x0)return;this['ctx']['emit'](ja(0x487));}},16.67)),this['observer']['observe'](this['ctx']['overlayerElement'],{'childList':!0x0,'subtree':!0x0,'attributes':!0x0,'characterData':!0x0}),this[jb(0x270)][jb(0x253)]['getAttribute'](jb(0x2a3))==='default'&&this['ctx']['on']('overlayerChange',o=>{const p=this['ctx']['overlayerElement'];p['replaceChildren'](),Object['assign'](p['style'],o['style']),o['views']['forEach'](r=>{const jd=b,u=document['createElement']('div');u[jd(0x496)]=r['class'],Object['assign'](u[jd(0x1f7)],r['style']),r['views'][jd(0x2e6)](w=>{const x=document['createElement']('div');Object['assign'](x['style'],w['style']),w['cells']['forEach'](y=>{const je=b,z=document[je(0x2cb)]('div');Object['assign'](z['style'],y['style']),Object['keys'](y['domDataset'])['forEach'](C=>{z['setAttribute'](C,y['domDataset'][C]);}),typeof y[je(0x3c2)]=='function'&&y['render'](z,y),x['appendChild'](z);}),u['appendChild'](x);}),p[jd(0x2fe)](u);});});}[bD(0x487)](){const o=this['getContainer']();this['ctx']['emit']('overlayerChange',o);}[bD(0x3a0)](){const jf=bD;this['observer']&&this[jf(0x300)]['disconnect'](),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};}[bD(0x4ef)](){const jg=bD,{fixedLeftWidth:p,fixedRightWidth:r,config:{SCROLLER_TRACK_SIZE:u,CSS_PREFIX:w}}=this['ctx'],{visibleWidth:x,visibleHeight:y,renderCellHeaders:z}=this['ctx']['header'];let C=[],D=[],E=[];z[jg(0x2e6)](L=>{const jj=jg;L['render']&&(L['fixed']==='left'?D['push'](L):L[jj(0x47e)]==='right'?E['push'](L):C['push'](L));});const F=r-u,G={'key':'left','style':{'position':'absolute','top':'0px','left':'0px','overflow':'hidden','width':p+'px','height':y+'px'},'cells':D},J={'key':jg(0x34e),'style':{'position':'absolute','top':'0px','left':p+'px','overflow':'hidden','width':x-p-F+0x1+'px','height':y+'px'},'cells':C},K={'key':'right','style':{'position':'absolute','top':jg(0x35a),'right':'0px','overflow':'hidden','width':F+0x1+'px','height':y+'px'},'cells':E};return{'type':'header','class':w+'-overlayer-header','style':{'position':jg(0x35c),'overflow':'hidden','width':x+'px','height':y+'px'},'views':[G,J,K]};}[bD(0x49c)](){const jk=bD,p=[],r=[],u=[];let w=this['ctx']['body']['renderRows'];this['ctx']['config']['FOOTER_FIXED']||(w=w['concat'](this[jk(0x270)]['footer']['renderRows'])),w['forEach'](L=>{L['cells']['forEach'](N=>{const jm=b;N['cellType']==='footer'&&(N['render']=N['renderFooter']),N['render']&&(N['fixed']===jm(0x4f7)?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['ctx'],{visibleWidth:D,visibleHeight:E}=this['ctx'][jk(0x4ff)],F=y-z,G={'key':'left','style':{'position':jk(0x29b),'top':0.5+'px','left':0.5+'px','overflow':'hidden','width':x+'px','height':E+'px'},'cells':r},J={'key':'center','style':{'position':jk(0x29b),'top':0.5+'px','left':x-0.5+'px','overflow':'hidden','width':D-x-F+'px','height':E+'px'},'cells':p},K={'key':'right','style':{'position':'absolute','top':jk(0x35a),'right':'0px','overflow':'hidden','width':F+'px','height':E+'px'},'cells':u};return{'type':jk(0x4ff),'class':C+jk(0x381),'style':{'position':jk(0x35c),'overflow':'hidden','width':D+'px','height':E+'px'},'views':[G,J,K]};}['getFooter'](){const jn=bD,p=[],r=[],u=[];this[jn(0x270)]['footer']['renderRows']['forEach'](K=>{K['cells']['forEach'](L=>{const jo=b;L['cellType']==='footer'&&L['renderFooter']&&(L['render']=L['renderFooter'],L['fixed']===jo(0x4f7)?r['push'](L):L[jo(0x47e)]==='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[jn(0x270)]['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':jn(0x29b),'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':jn(0x29b),'top':0.5+'px','right':0.5+'px','overflow':'hidden','width':E+'px','height':D+'px'},'cells':u};return{'type':'footer','class':z+'-overlayer-footer','style':{'position':'relative','overflow':'hidden','width':C+'px','height':D+'px'},'views':[F,G,J]};}}class nl{constructor(o,p=[],r={}){const jp=bD;m(this,'container'),m(this,'menuData'),m(this,'onClick'),m(this,jp(0x38e),new Set()),m(this,'boundMouseEnterHandler'),m(this,'boundMouseLeaveHandler'),m(this,jp(0x3b3)),this['container']=o,this[jp(0x2f9)]=p,this[jp(0x49f)]=r['onClick'],this['boundMouseEnterHandler']=u=>this[jp(0x307)](u,'enter'),this['boundMouseLeaveHandler']=u=>this['handleMouseEvent'](u,'leave'),this['boundClickHandler']=u=>this['handleClick'](u),this['createMenu'](),this['bindEvents']();}[bD(0x3ff)](){const jq=bD;this['container']['className']='e-virt-table-main-menu',this['container']['style']['display']='block';const o=document['createDocumentFragment']();this['menuData']['forEach'](p=>{o['appendChild'](this['createMenuItem'](p));}),this[jq(0x1d5)]['appendChild'](o);}['createMenuItem'](o,p=!0x1){const jr=bD;var r;const u=this['createElement'](jr(0x465),p?'e-virt-table-submenu-item':'e-virt-table-menu-item');u['setAttribute'](p?'data-submenu':'data-menu',o['value']),o['disabled']&&u['classList'][jr(0x3be)]('disabled');const w=this['createElement']('div','e-virt-table-menu-item-content');if(o['icon']){const y=this[jr(0x2cb)]('span','e-virt-table-menu-item-icon');y['innerHTML']=o['icon'],w['appendChild'](y);}else w[jr(0x406)]['add']('menu-item-no-icon');const x=this['createElement']('span','e-virt-table-menu-item-text');if(x['textContent']=o['label'],w[jr(0x2fe)](x),u['appendChild'](w),(r=o['children'])!=null&&r['length']){const z=this['createElement']('span','e-virt-table-menu-arrow');z['innerHTML']=gi,u['appendChild'](z);const C=this['createSubmenu'](o['children']);u['_submenu']=C,this[jr(0x1d5)]['appendChild'](C);}return u;}['createSubmenu'](o){const jt=bD,p=this['createElement'](jt(0x465),'e-virt-table-submenu');return o['forEach'](r=>{p['appendChild'](this['createMenuItem'](r,!0x0));}),p;}['createElement'](o,p=''){const ju=bD,r=document['createElement'](o);return p&&(r[ju(0x496)]=p),r;}['bindEvents'](){const jv=bD;this['container']['addEventListener'](jv(0x327),this['boundMouseEnterHandler'],!0x0),this['container'][jv(0x2dd)]('mouseleave',this['boundMouseLeaveHandler'],!0x0),this['container']['addEventListener']('click',this['boundClickHandler']);}[bD(0x307)](o,p){const jw=bD;o[jw(0x2fd)]();const r=o['target']['closest']('.e-virt-table-menu-item,\x20.e-virt-table-submenu-item');r&&(this['container']['contains'](r)||r['classList']['contains']('e-virt-table-submenu-item'))&&(p===jw(0x31b)?this[jw(0x2ce)](r):this['handleLeave'](r));}['handleHover'](o){const jx=bD;o[jx(0x406)][jx(0x433)]('e-virt-table-menu-item')&&(this['container']['querySelectorAll']('.e-virt-table-menu-item')['forEach'](r=>r[jx(0x406)][jx(0x431)]('active')),o['classList']['contains']('disabled')||o['classList']['add']('active'));const p=o['_submenu']||o['querySelector']('.e-virt-table-submenu');p&&(this['hideSiblingSubmenus'](o),this['showSubmenu'](o,p));}['handleLeave'](o){const p=o['_submenu']||o['querySelector']('.e-virt-table-submenu');setTimeout(()=>{const jy=b,r=p;r&&!r['matches'](jy(0x23f))&&!o['matches'](jy(0x23f))&&(this['hideSubmenu'](r),o['classList'][jy(0x433)]('e-virt-table-menu-item')&&o[jy(0x406)]['remove'](jy(0x45e)));},0x96);}[bD(0x1dd)](o){const jz=bD;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'](jz(0x412));else return;}p['forEach'](s=>{const jA=jz;s!==o&&s['_submenu']&&this[jA(0x363)](s['_submenu']);});}async['showSubmenu'](o,p){const jC=bD;if(this['activeSubmenus']['has'](p))return;this['activeSubmenus']['add'](p),p['classList']['add']('show');const r=St(o,p,async()=>{const jB=b,u=this[jB(0x1d5)]['getBoundingClientRect'](),w=window['innerWidth'],x=p['offsetWidth']||0xc8,y=w-u[jB(0x34f)],z=u[jB(0x4f7)],C=y>=x||y>=z?'right-start':jB(0x215),{x:D,y:E}=await Di(o,p,{'placement':C,'middleware':[ki(0x8),Oi({'padding':0x8})]});Object[jB(0x4de)](p['style'],{'left':D+'px','top':E+'px'});});p[jC(0x4c6)]=r;}[bD(0x363)](o){const jD=bD;if(!this['activeSubmenus']['has'](o))return;this['activeSubmenus']['delete'](o),o[jD(0x406)]['remove']('show'),this['hideAllChildSubmenus'](o);const p=o;p['_cleanup']&&(p['_cleanup'](),delete p['_cleanup']);}['hideAllChildSubmenus'](o){const jE=bD;o[jE(0x2a8)](jE(0x412))['forEach'](p=>{const jF=jE;if(p[jF(0x1ea)]){const r=p[jF(0x1ea)];if(this[jF(0x38e)][jF(0x4ba)](r)){this['activeSubmenus']['delete'](r),r['classList']['remove']('show');const u=r;u['_cleanup']&&(u[jF(0x4c6)](),delete u['_cleanup']),this[jF(0x24c)](r);}}});}['handleClick'](o){const jG=bD;o['stopPropagation']();const p=o[jG(0x4c5)]['closest']('.e-virt-table-menu-item,\x20.e-virt-table-submenu-item');if(!p||p['classList']['contains'](jG(0x1d4)))return;if(p[jG(0x406)]['contains']('e-virt-table-menu-item')){const w=p['_submenu']||p['querySelector'](jG(0x369));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[jG(0x49f)](u,r||'');}['findMenuItem'](o,p=this['menuData']){const jH=bD;for(const r of p){if(r['value']===o)return r;if(r['children']){const u=this[jH(0x43b)](o,r['children']);if(u)return u;}}return null;}['positionMenu'](o){const jI=bD,p={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':o[jI(0x360)],'left':o['clientX'],'right':o['clientX'],'bottom':o['clientY'],'x':o['clientX'],'y':o[jI(0x360)]}),'contextElement':document['body']};St(p,this['container'],()=>{Di(p,this['container'],{'placement':'right-start','middleware':[ki(),Oi(),Ft()]})['then'](({x:r,y:u})=>{this['container']&&Object['assign'](this['container']['style'],{'left':r+'px','top':u+'px'});});});}['destroy'](){const jJ=bD;this['container']['removeEventListener']('mouseenter',this['boundMouseEnterHandler'],!0x0),this[jJ(0x1d5)]['removeEventListener'](jJ(0x47b),this['boundMouseLeaveHandler'],!0x0),this['container']['removeEventListener']('click',this['boundClickHandler']),this['cleanupAllSubmenus'](this['container']),this['container']['style'][jJ(0x20d)]=jJ(0x26d),this['container']['replaceChildren']();}['removeMenuItem'](o){const jK=bD,p=this['container']['querySelector'](jK(0x2dc)+o+'\x22]');if(!p)return!0x1;const r=p[jK(0x30e)](jK(0x369));return r&&this[jK(0x504)](r),p['remove'](),!0x0;}['removeSubMenuItem'](o){const jL=bD,p=this[jL(0x1d5)][jL(0x30e)]('[data-submenu=\x22'+o+'\x22]');if(!p)return!0x1;const r=p['closest']('.e-virt-table-submenu'),u=p['_submenu'];if(u&&this[jL(0x504)](u),p['remove'](),r&&r['querySelectorAll']('.e-virt-table-submenu-item')[jL(0x38b)]===0x0){const w=this['container']['querySelector']('[data-menu]');if(w&&w[jL(0x1ea)]===r)this['removeMenuItem'](w['getAttribute']('data-menu')||'');else{const x=this['container']['querySelectorAll']('[data-menu],\x20[data-submenu]');for(const y of x)if(y[jL(0x1ea)]===r){const z=y['getAttribute']('data-menu')||y['getAttribute']('data-submenu');z&&(y['hasAttribute']('data-menu')?this['removeMenuItem'](z):this[jL(0x4be)](z));break;}}}return!0x0;}['cleanupAllSubmenus'](o){const jM=bD;o[jM(0x2a8)]('.e-virt-table-menu-item')['forEach'](p=>{p['_submenu']&&(this['cleanupSubmenuRecursively'](p['_submenu']),p['_submenu']=void 0x0);});}['cleanupSubmenuRecursively'](o){const p=o;p['_cleanup']&&(p['_cleanup'](),delete p['_cleanup']),o['querySelectorAll']('.e-virt-table-submenu-item')['forEach'](r=>{r['_submenu']&&this['cleanupSubmenuRecursively'](r['_submenu']);}),o['remove']();}}class Cc{constructor(o){const jN=bD;m(this,'ctx'),m(this,'contextMenuEl'),m(this,jN(0x51c)),m(this,'isCustom',!0x1),this['ctx']=o,this['ctx']['contextMenuElement']?(this['contextMenuEl']=this['ctx'][jN(0x3bd)],this['contextMenuEl']['className']=jN(0x437),this['isCustom']=!0x0):(this[jN(0x321)]=document['createElement'](jN(0x465)),this['isCustom']=!0x1),this[jN(0x270)]['containerElement'][jN(0x2fe)](this[jN(0x321)]),this['init']();}[bD(0x2ed)](){const jO=bD;this[jO(0x270)]['on']('outsideMousedown',()=>{this['hide']();}),this['ctx']['on']('cellContextMenuClick',async(p,r)=>{const jP=jO;if(this['isCustom']){this['contextMenuEl']['style']['display']=jP(0x26a),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'][jP(0x49d)];let z=[...x,...w];if(y&&(z=await y({'list':z,'cell':p,'hide':this['hide'][jP(0x4e5)](this)})),!u||z[jP(0x38b)]===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'](jP(0x1fe),p,r),this['currentDOMTreeMenu']&&this['currentDOMTreeMenu']['destroy'](),this['ctx']['contextMenuIng']=!0x0,this[jP(0x51c)]=new nl(this['contextMenuEl'],z,{'onClick':(N,O)=>{const jQ=jP;O===jQ(0x499)?(this['ctx'][jQ(0x2e7)]('contextMenuCopy'),this['hide']()):O==='paste'?(this['ctx']['emit']('contextMenuPaste'),this['hide']()):O==='cut'?(this[jQ(0x270)]['emit']('contextMenuCut'),this['hide']()):O==='clearSelected'?(this[jQ(0x270)][jQ(0x2e7)]('contextMenuClearSelected'),this['hide']()):N['event']&&N['event'](r,{'hide':this['hide']['bind'](this),'cell':p});}}),this['currentDOMTreeMenu']['positionMenu'](r);}),this['ctx']['on']('cellHeaderContextMenuClick',async(r,u)=>{const jR=jO;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['ctx']['config'],D=w,E=x||this['ctx'][jR(0x1fd)]-z;if(r['colIndex']<D||r['colIndex']>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'][jR(0x4e5)](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[jR(0x270)]['focusCellHeader']=r,this[jR(0x270)][jR(0x2e7)]('selectCols',r)),this[jR(0x51c)]&&this['currentDOMTreeMenu']['destroy']();const T=this['ctx']['database']['getColumns'](),V=K[jR(0x37d)](a0=>a0[jR(0x4ac)]===jR(0x3b6)?{...a0,'children':this['filterColumns'](T)}:a0);this['ctx']['contextMenuIng']=!0x0,this[jR(0x51c)]=new nl(this['contextMenuEl'],V,{'onClick':(a0,a1)=>{const jS=jR,{xArr:a2}=this['ctx']['selector'],[a3,a4]=a2;if(a1==='fixedLeft'||a1===jS(0x481)||a1==='fixedNone'){const a5=this['ctx']['header']['allCellHeaders']['filter'](a6=>a6[jS(0x3a2)]>=a3&&a6['colIndex']<=a4)['filter'](a6=>a6['level']===0x0)['filter'](a6=>!a6['column']['fixedDisabled'])['map'](a6=>a6['key']);this['ctx']['database']['setCustomHeaderFixedData'](a5,a1==='fixedLeft'?jS(0x4f7):a1==='fixedRight'?'right':''),this['hide']();}else{if(a1==='hide'){const a6=this[jS(0x270)]['header']['leafCellHeaders']['filter'](a7=>a7['colIndex']>=a3&&a7['colIndex']<=a4)['filter'](a7=>!a7[jS(0x1ef)]['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['key'])return;if(a0['children']){const a8=this['getLeafKeys'](a0['children']);this[jS(0x270)]['database']['setCustomHeaderHideData'](a8,!0x1);}else this['ctx'][jS(0x29c)]['setCustomHeaderHideData']([a0['key']],!0x1);this['currentDOMTreeMenu']&&this[jS(0x51c)]['removeSubMenuItem'](a1);const a7=this['ctx']['database'][jS(0x32a)]();ui(a7)['filter'](a9=>a9['hide'])[jS(0x38b)]===0x0&&this['hide']();}else a1==='resetHeader'?(this['ctx']['database']['resetCustomHeader'](),this['hide']()):a0['event']&&a0['event'](u,{'hide':this['hide'][jS(0x4e5)](this),'cell':r});}}}}}),this['positionMenu'](u);}),this['ctx']['on']('click',()=>{this['hide']();}),this['ctx']['on'](jO(0x30c),this['hide']['bind'](this)),this[jO(0x270)]['on']('resize',this[jO(0x311)]['bind'](this));}[bD(0x4cf)](o){const jT=bD,p={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':o['clientY'],'left':o['clientX'],'right':o['clientX'],'bottom':o[jT(0x360)],'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})=>{this['contextMenuEl']&&Object['assign'](this['contextMenuEl']['style'],{'left':r+'px','top':u+'px'});});});}['filterColumns'](o){const jU=bD,p=[];for(const r of o)if(r[jU(0x1ef)]&&r['children']['length']>0x0){const u=this['filterColumns'](r['children']);u['length']>0x0&&p[jU(0x1e7)]({'label':r['title'],'key':r['key'],'value':jU(0x420)+r['key'],'children':u});}else r['hide']&&p[jU(0x1e7)]({'label':r['title'],'value':'visible_'+r['key'],'key':r[jU(0x4b6)]});return p;}['getLeafKeys'](o){return o['reduce']((p,r)=>(!r['children']||r['children']['length']===0x0?p['push'](String(r['key'])):p['push'](...this['getLeafKeys'](r['children'])),p),[]);}['hide'](){const jV=bD;this['currentDOMTreeMenu']&&(this['currentDOMTreeMenu']['destroy'](),this['currentDOMTreeMenu']=void 0x0),this['contextMenuEl']['style']['display']=jV(0x26d),this['ctx']['contextMenuIng']=!0x1;}[bD(0x3a0)](){const jW=bD;var o;this[jW(0x311)](),(o=this['contextMenuEl'])==null||o['remove']();}}class gc{constructor(o){const jX=bD;if(m(this,'ctx'),m(this,'loadingEl'),this['ctx']=o,this['ctx']['loadingElement'])this['loadingEl']=this[jX(0x270)]['loadingElement'];else{this['loadingEl']=document['createElement']('div');const p=document[jX(0x2cb)]('div');p['className']='e-virt-table-loading-spinner';const r=this['ctx']['icons'][jX(0x263)]('loading');if(r){const w=new DOMParser()['parseFromString'](r[jX(0x236)],'image/svg+xml')['documentElement'];p['appendChild'](w);}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[jX(0x301)]['className']='e-virt-table-loading',this['loadingEl']['style'][jX(0x20d)]='none',this['ctx']['containerElement']['appendChild'](this['loadingEl']);}['show'](){this['loadingEl']['style']['display']='flex';}['hide'](){this['loadingEl']['style']['display']='none';}['destroy'](){this['loadingEl']['remove']();}}class Uc{constructor(o){const jY=bD;m(this,jY(0x270)),m(this,'container'),m(this,'input'),m(this,'prevBtn'),m(this,'nextBtn'),m(this,'closeBtn'),m(this,jY(0x50a)),m(this,'loadingEl'),m(this,'isVisible',!0x1),m(this,'searchResults',[]),m(this,jY(0x42c),-0x1),m(this,'searchData',[]),m(this,'isComposing',!0x1),this['ctx']=o,this['container']=this['createContainer'](),this[jY(0x270)]['containerElement']['appendChild'](this['container']),this['bindEvents'](),this['ctx']['on']('keydown',p=>{const jZ=jY;if(this['ctx']['config'][jZ(0x2d2)]&&!this[jZ(0x270)]['editing']){if((p['ctrlKey']||p['metaKey'])&&p[jZ(0x21e)]==='KeyF'){p['preventDefault'](),this['show']();return;}if(this['ctx']['finding']){if(p['code']==='Escape'){p['preventDefault'](),this['hide']();return;}if(p['code']==='ArrowUp'||p['shiftKey']&&p['key']==='Enter'){p[jZ(0x518)](),this['navigatePrevious']();return;}if(p['code']==='ArrowDown'||p['key']==='Enter'){p[jZ(0x518)](),this['navigateNext']();return;}}}}),this[jY(0x270)]['on']('setSelector',()=>{this['hide']();}),this['ctx']['on']('outsideMousedown',()=>{this['hide']();});}async['initSearchData'](){const k0=bD;this['showLoading'](),this[k0(0x304)]=[],setTimeout(()=>{const k1=k0,{allCellHeaders:o}=this['ctx']['header'];for(let u=0x0;u<o['length'];u++){const w=o[u];w&&['string','number']['includes'](typeof w['text'])&&this['searchData']['push']({'rowIndex':0x0,'colIndex':w['colIndex'],'text':''+w['text'],'type':k1(0x317),'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']['database'][k1(0x23b)](x,y,!0x1),C=z?.['getText']();[k1(0x48a),'number']['includes'](typeof C)&&this[k1(0x304)]['push']({'rowIndex':x,'colIndex':y,'text':''+C,'type':'body'});}this['hideLoading']();},0x0);}['createContainer'](){const k2=bD,o=document['createElement']('div');o['className']='e-virt-table-finder-bar';const p=document['createElement']('div');p['className']=k2(0x378),this['input']=document['createElement']('input'),this[k2(0x374)]['type']='text',this['input']['className']='e-virt-table-finder-bar-input',this['input']['placeholder']='',p[k2(0x2fe)](this['input']),this['loadingEl']=document['createElement']('div'),this['loadingEl']['className']='e-virt-table-finder-bar-loading';const r=jl;this['loadingEl']['innerHTML']=r,p[k2(0x2fe)](this['loadingEl']),this['countEl']=document[k2(0x2cb)]('span'),this['countEl']['className']='e-virt-table-finder-bar-count';const u=document['createElement']('div');return u['className']='e-virt-table-finder-bar-nav',this[k2(0x450)]=document['createElement']('button'),this['prevBtn']['className']='e-virt-table-finder-bar-nav-btn\x20prev-btn',this['prevBtn'][k2(0x1d6)]=gi,this['nextBtn']=document[k2(0x2cb)]('button'),this[k2(0x2ea)]['className']=k2(0x2bc),this['nextBtn']['innerHTML']=gi,u['appendChild'](this['prevBtn']),u['appendChild'](this[k2(0x2ea)]),this['closeBtn']=document['createElement']('button'),this['closeBtn']['className']='e-virt-table-finder-bar-nav-btn\x20close-btn',this['closeBtn']['innerHTML']='×',o['appendChild'](p),o['appendChild'](this['countEl']),o['appendChild'](u),o['appendChild'](this['closeBtn']),o;}['bindEvents'](){const k3=bD;this['input']['addEventListener']('input',()=>{this['isComposing']||this['performSearch']();}),this['input']['addEventListener']('compositionstart',()=>{this['isComposing']=!0x0;}),this['input'][k3(0x2dd)]('compositionend',()=>{this['isComposing']=!0x1,this['performSearch']();}),this[k3(0x450)]['addEventListener']('click',()=>{this['navigatePrevious']();}),this['nextBtn'][k3(0x2dd)](k3(0x3f7),()=>{const k4=k3;this[k4(0x200)]();}),this['closeBtn']['addEventListener']('click',()=>{this['hide']();});}['performSearch'](){const k5=bD,o=this['input'][k5(0x4ac)]['trim']();if(this['searchResults']=[],this['currentIndex']=-0x1,!o){this['cearFinderBar'](),this['updateCount']();return;}this['showLoading'](),setTimeout(()=>{const k6=k5;this['searchResults']=this['searchData'][k6(0x2a9)](p=>p['text']['toLowerCase']()['includes'](o['toLowerCase']())),this['searchResults']['length']>0x0?(this[k6(0x42c)]=0x0,this[k6(0x458)]()):this['cearFinderBar'](),this[k6(0x34d)](),this['hideLoading']();},0x0);}['scrollToCurrentResult'](){const k7=bD;if(this['currentIndex']<0x0||this['currentIndex']>=this['searchResults']['length'])return;const o=this['searchResults'][this['currentIndex']];this[k7(0x270)]['finderBar']=o;const {rowIndex:p,colIndex:r}=o;this['ctx']['emit']('scrollToIndex',p,r);}['navigateNext'](){const k8=bD;this['searchResults']['length']!==0x0&&(this['currentIndex']=(this['currentIndex']+0x1)%this['searchResults'][k8(0x38b)],this[k8(0x458)](),this['updateCount']());}['navigatePrevious'](){const k9=bD;this['searchResults'][k9(0x38b)]!==0x0&&(this['currentIndex']=this['currentIndex']<=0x0?this['searchResults']['length']-0x1:this['currentIndex']-0x1,this['scrollToCurrentResult'](),this['updateCount']());}['updateCount'](){const ka=bD;if(this[ka(0x1e5)]['length']===0x0)this['input'][ka(0x4ac)]['trim']()?(this['countEl'][ka(0x319)]='0/0',this['countEl']['classList']['add'](ka(0x3dc))):(this[ka(0x50a)]['textContent']='',this['countEl']['classList']['remove']('no-results'));else{const o=this[ka(0x42c)]+0x1,p=this['searchResults']['length'];this[ka(0x50a)]['textContent']=o+'/'+p,this['countEl']['classList']['remove']('no-results');}}['show'](){const kb=bD;this['isVisible']||(this['isVisible']=!0x0,this['ctx'][kb(0x40e)]=!0x0,this[kb(0x1d5)]['classList']['add']('show'),this['input']['focus'](),this['initSearchData']());}['showLoading'](){const kd=bD;var o;this['loadingEl'][kd(0x406)]['add']('show'),(o=this['loadingEl']['parentElement'])==null||o['classList']['add'](kd(0x29d)),this['input']['readOnly']=!0x0;}['hideLoading'](){const ke=bD;var o;this['loadingEl']['classList']['remove']('show'),(o=this['loadingEl'][ke(0x510)])==null||o[ke(0x406)]['remove']('loading'),this['input'][ke(0x250)]=!0x1;}['cearFinderBar'](){const kf=bD;this['ctx'][kf(0x2c4)]={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['ctx']['emit']('draw');}['hide'](){const kg=bD;this['isVisible']&&(this['isVisible']=!0x1,this['container']['classList'][kg(0x431)](kg(0x269)),this['ctx']['finding']=!0x1,this['input']['value']='',this['searchResults']=[],this['searchData']=[],this[kg(0x42c)]=-0x1,this['hideLoading'](),this['ctx'][kg(0x2c4)]={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['updateCount'](),this['ctx'][kg(0x2e7)](kg(0x487)));}['destroy'](){const kj=bD;this['hide'](),this[kj(0x1d5)]['remove']();}}class jc{constructor(o,p){const kk=bD;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,kk(0x462)),m(this,'empty'),m(this,'overlayer'),m(this,'contextMenu'),m(this,'loading'),m(this,'finderBar'),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['ctx']=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[kk(0x462)]=new wc(this['ctx']),this['overlayer']=new zc(this['ctx']),this['contextMenu']=new Cc(this['ctx']),this['loading']=new gc(this[kk(0x270)]),this['finderBar']=new Uc(this[kk(0x270)]),this['ctx']['on'](kk(0x487),()=>{this['draw']();}),this[kk(0x270)]['on']('drawView',()=>{this['draw'](!0x0);}),this['draw']();}['createContainer'](p,r,u,w,x){const km=bD;p['className']=km(0x232);const y=document['createElement']('div'),z=document['createElement']('canvas'),C=r||document['createElement'](km(0x465));y[km(0x496)]='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':km(0x4e4));const D=u||document[km(0x2cb)]('div');D[km(0x496)]='e-virt-table-editor';const E=w,F=x;return y['appendChild'](z),y['appendChild'](C),p['appendChild'](y),{'containerElement':p,'stageElement':y,'canvasElement':z,'overlayerElement':C,'editorElement':D,'emptyElement':E,'contextMenuElement':F};}['doDraw'](o=!0x1){const kn=bD;this['header']['update'](),this[kn(0x45c)]['update'](),this['body']['update'](),this['ctx']['paint']['clear'](),this['body']['draw'](),this['footer']['draw'](),this['header'][kn(0x487)](),this['scroller']['draw'](),o||this['overlayer']['draw']();}['draw'](o=!0x1){const ko=bD;this[ko(0x3e5)]&&cancelAnimationFrame(this['animationFrameId']),this['animationFrameId']=requestAnimationFrame(()=>{const kp=ko;this[kp(0x283)](o),this['body']['updateAutoHeight']()&&this['doDraw'](o);});}[bD(0x1ec)](o){const kq=bD;this['ctx']['config'][kq(0x2ed)](o),this['ctx']['database']['init'](!0x1),this['header']['init'](),this[kq(0x270)][kq(0x2e7)]('draw');}['loadColumns'](o){const kr=bD;this['editor']['doneEdit'](),this['ctx'][kr(0x29c)]['setColumns'](o),this['header']['init'](),this['ctx']['emit']('draw');}[bD(0x3b8)](o){const kt=bD;this['editor']['doneEdit'](),this['ctx']['database']['setData'](o),this[kt(0x317)][kt(0x2ed)](),this['tooltip']['hide'](),this['ctx']['emit']('draw');}['loadFooterData'](o){const ku=bD;this['ctx']['database']['setFooterData'](o),this[ku(0x270)]['emit']('draw');}[bD(0x337)](o,p=!0x0){const kv=bD;this['ctx']['database']['setCustomHeader'](o,p),this['header']['init'](),this[kv(0x270)][kv(0x2e7)](kv(0x487));}[bD(0x43c)](){return this['header']['getCustomHeader']();}['showColumns'](o,p=!0x0){this['ctx']['database']['setCustomHeaderHideData'](o,!p),this['header']['init'](),this['ctx']['emit']('draw');}['fixedColumns'](o,p){this['ctx']['database']['setCustomHeaderFixedData'](o,p),this['header']['init'](),this['ctx']['emit']('draw');}['setLoading'](o){this['ctx']['loading']=o,o?this['loading']['show']():this['loading']['hide']();}['on'](o,p){this['ctx']['on'](o,p);}['emit'](o,...p){this['ctx']['emit'](o,...p);}['off'](o,p){const kw=bD;this[kw(0x270)]['off'](o,p);}['filterMethod'](o){const kx=bD;this['ctx'][kx(0x29c)]['setFilterMethod'](o),this['ctx']['database']['init'](!0x1),this['header']['init'](),this['ctx'][kx(0x2e7)]('draw');}['editCell'](o,p){this['editor']['editCell'](o,p);}[bD(0x202)](o,p,r,u=!0x0,w=!0x0,x=!0x1){this['ctx']['database']['setItemValue'](o,p,r,u,w,x);}['batchSetItemValue'](o,p=!0x0){const ky=bD;this['ctx'][ky(0x29c)]['batchSetItemValue'](o,p);}['setItemValueByEditor'](o,p,r,u=!0x0,w=!0x0){const kz=bD;this[kz(0x270)][kz(0x212)](o,p,r,u,w),this['editor']['doneEdit']();}['clearEditableData'](o=null){const kA=bD,p=[0x0,this['ctx']['maxColIndex']],r=[0x0,this['ctx']['maxRowIndex']];return this['selector'][kA(0x400)](p,r,!0x1,o);}['clearEditor'](){const kB=bD;this[kB(0x462)]['clearEditor']();}['doLayout'](){this['ctx']['emit']('draw');}['getChangedData'](){return this['ctx']['database']['getChangedData']();}['getChangedRows'](){return this['ctx']['database']['getChangedRows']();}[bD(0x290)](o){const kC=bD;this['ctx']['currentCell']=this['ctx'][kC(0x29c)]['getVirtualBodyCell'](o,0x0),this['ctx'][kC(0x2e7)]('draw');}['setCurrentRow'](o){const kD=bD,p=this[kD(0x270)]['database']['getColumnByColIndex'](0x0);p&&(this[kD(0x270)]['currentCell']=this[kD(0x270)][kD(0x29c)]['getVirtualBodyCellByKey'](o,p['key']),this['ctx'][kD(0x2e7)]('draw'));}['getCurrentRow'](){const kE=bD,o=this[kE(0x270)]['currentCell'];return o?{'row':o['row'],'rowIndex':o['rowIndex'],'rowKey':o['rowKey']}:void 0x0;}['clearValidate'](){const kF=bD;this['ctx'][kF(0x29c)]['clearValidate'](),this['ctx']['emit']('draw');}['validateFields'](o,p=!0x0){return new Promise(async(r,u)=>{const kG=b;let w=[];for(let x=0x0;x<o['length'];x++){const {rowKey:y,key:z}=o[x],C=await this[kG(0x270)]['database']['getValidator'](y,z);Array[kG(0x24d)](C)&&C[kG(0x38b)]&&w['push'](C);}if(w['length']){if(u(w),p){const [D]=w;if(Array[kG(0x24d)](D)&&D['length']){const [E]=D,{rowKey:F,key:G}=E;this[kG(0x3ca)](F),this['scrollToColkey'](G);}}this['ctx'][kG(0x2e7)](kG(0x487));}else r([]),this['ctx']['emit']('draw');});}async['validate'](o=!0x0){return new Promise(async(p,r)=>{const kH=b;try{const u=await this['getValidations']();p(u);}catch(w){if(o&&Array['isArray'](w)&&w['length']){const [x]=w;if(Array[kH(0x24d)](x)&&x['length']){const [y]=x,{rowKey:z,key:C}=y,D=this[kH(0x270)]['database']['getRowForRowKey'](z);if(D){const {parentRowKeys:E=[]}=D;E&&E[kH(0x38b)]&&this['setExpandRowKeys'](E,!0x0);}this[kH(0x3ca)](z),this['scrollToColkey'](C);}}r(w);}});}['setValidations'](o){const kJ=bD;if(o['forEach'](p=>{const kI=b,{rowIndex:r,key:u,message:w,rowKey:x}=p;if(r!==void 0x0&&x===void 0x0){const y=this[kI(0x270)]['database'][kI(0x51d)](r);this[kI(0x270)]['database']['setValidationErrorByRowKey'](y,u,w);}x&&this['ctx'][kI(0x29c)][kI(0x42e)](x,u,w);}),o&&Array[kJ(0x24d)](o)&&o['length']){const [p]=o;if(p&&p['rowKey'])this['scrollToRowkey'](p['rowKey']),this[kJ(0x46a)](p['key']);else{if(p&&p['rowIndex']!==void 0x0&&p['rowIndex']>=0x0&&p['key']){const {rowIndex:r,key:u}=p;this[kJ(0x1dc)](r),this['scrollToColkey'](u);}}}}[bD(0x46d)](){const kK=bD;return this[kK(0x270)]['config']['DISABLED']?new Promise(o=>{o([]);}):new Promise(async(o,p)=>{const kL=kK,r=this['ctx'][kL(0x29c)]['getAllRowsData'](),u=this[kL(0x270)]['header']['leafCellHeaders'];let w=[];for(let x=0x0;x<r[kL(0x38b)];x++)for(let y=0x0;y<u['length'];y++){const z=this['ctx']['database'][kL(0x21f)](r[x]),C=u[y]['key'],D=await this['ctx']['database']['getValidator'](z,C);Array['isArray'](D)&&D['length']&&w['push'](D);}w['length']?(p(w),this['ctx']['emit'](kL(0x487))):(o([]),this['ctx']['emit']('draw'));});}['hasValidationError'](){return this['ctx']['database']['hasValidationError']();}['scrollTo'](o,p){this['scroller']['setScroll'](o,p);}['scrollXTo'](o){this['scroller']['setScrollX'](o);}['scrollToColkey'](o){this['scroller']['scrollToColkey'](o);}['scrollToRowkey'](o){const kM=bD;this[kM(0x396)]['scrollToRowKey'](o);}['scrollToColIndex'](o){this['scroller']['scrollToColIndex'](o);}[bD(0x1dc)](o){this['scroller']['scrollToRowIndex'](o);}['scrollYTo'](o){const kN=bD;this[kN(0x396)]['setScrollY'](o);}['setExpandRowKeys'](o,p=!0x0){this['ctx']['database']['setExpandRowKeys'](o,p);}['getExpandRowKeys'](){const kO=bD;return this[kO(0x270)]['database']['getExpandRowKeys']();}['clearSelection'](){const kP=bD;this['ctx'][kP(0x29c)][kP(0x4dc)](),this['ctx']['emit']('draw');}['toggleRowSelection'](o){const kQ=bD,p=this['ctx']['database']['getRowKeyByItem'](o);this[kQ(0x270)]['database']['toggleRowSelection'](p),this['ctx']['emit']('draw');}[bD(0x4c0)](o,p=!0x0){const kR=bD;o[kR(0x2e6)](r=>{const kS=kR,u=this['ctx'][kS(0x29c)]['getRowKeyByItem'](r);this['ctx']['database']['setRowSelection'](u,p,!0x1);}),this['ctx']['emit'](kR(0x219),this['getSelectionRows']()),this[kR(0x270)]['emit'](kR(0x487));}['setSelectionByRowKeys'](o,p=!0x0){const kU=bD;o['forEach'](r=>{const kT=b;this['ctx'][kT(0x29c)]['setRowSelection'](r,p,!0x1);}),this[kU(0x270)][kU(0x2e7)]('selectionChange',this['getSelectionRows']()),this['ctx']['emit']('draw');}['toggleAllSelection'](){const kV=bD;this[kV(0x270)]['database']['toggleAllSelection'](),this['ctx']['emit']('draw');}['toggleRowExpand'](o,p){this['ctx']['database']['expandItem'](o,p),this['ctx']['emit']('draw');}[bD(0x3c0)](o){const kW=bD;this[kW(0x270)]['database']['expandAll'](o),this['ctx']['emit']('draw');}['getSelectionRows'](){const kX=bD;return this[kX(0x270)]['database']['getSelectionRows']();}['getPositionForRowIndex'](o){return this['ctx']['database']['getPositionForRowIndex'](o);}[bD(0x3ea)](o,p){const kY=bD;return this[kY(0x270)]['database']['getItemValue'](o,p);}['getCellValueByIndex'](o,p){return this['ctx']['database']['getItemValueForRowIndexAndColIndex'](o,p);}['clearSort'](){this['ctx']['database']['clearSort']();}[bD(0x451)](){this['contextMenu']['hide']();}[bD(0x3bb)](){return{'mergeColCell':Ms,'mergeRowCell':Ts,'getSpanArrByRow':Cl,'getSpanObjByColumn':gl};}['getColumnByKey'](o){const kZ=bD;var p;return(p=this[kZ(0x270)]['database'][kZ(0x2bd)](o))==null?void 0x0:p['column'];}['clearChangeData'](){const l0=bD;this['ctx'][l0(0x29c)]['clearChangeData'](),this[l0(0x270)]['emit']('draw');}[bD(0x3e8)](o,p){return this['ctx']['database']['getReadonly'](o,p);}['destroy'](){const l1=bD;this[l1(0x3f1)]['destroy'](),this[l1(0x435)]['destroy'](),this['editor'][l1(0x3a0)](),this['tooltip']['destroy'](),this['selector']['destroy'](),this['autofill']['destroy'](),this['contextMenu']['destroy'](),this['loading']['destroy'](),this['finderBar']['destroy'](),this['ctx']['destroy'](),this['ctx']['containerElement']['remove']();}}const _l='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',bl=typeof window<'u'&&window['Blob']&&new Blob([Uint8Array['from'](atob(_l),o=>o[bD(0x4df)](0x0))],{'type':'text/javascript;charset=utf-8'});function Ec(){const l2=bD;let o;try{if(o=bl&&(window[l2(0x308)]||window['webkitURL'])['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='__index',ql='__k',Ai=bD(0x457),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[bD(0x4ae)](o-0x1,0x0)/$)*$:0x0,Pi=(o=0x0,p=0x0)=>Math['min'](Math[bD(0x4ae)](o,0x0),Pc(p)),Wl=(o=0x0,p=0x0)=>{const r=Math['floor'](Math['max'](o,0x0)/$)*$;return Pi(r,p);},Hc=({startRow:p,endRow:r,direction:u,totalRows:w,far:x=!0x1})=>{const l3=bD,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['add'](Pi(F+u*J*$,w));for(let K=0x1;K<=E;K+=0x1)y[l3(0x3be)](Pi(F-u*K*$,w));return Array['from'](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';const l4=bD;return Hi=typeof Symbol=='function'&&typeof Symbol[l4(0x335)]==l4(0x38c)?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 l5=bD;if(o=o||'',p=p||{},o instanceof M)return o;if(!(this instanceof M))return new M(o,p);var r=vc(o);this[l5(0x1df)]=o,this['_r']=r['r'],this['_g']=r['g'],this['_b']=r['b'],this['_a']=r['a'],this['_roundA']=Math['round'](0x64*this['_a'])/0x64,this[l5(0x4d1)]=p['format']||r['format'],this['_gradientType']=p['gradientType'],this['_r']<0x1&&(this['_r']=Math['round'](this['_r'])),this['_g']<0x1&&(this['_g']=Math[l5(0x475)](this['_g'])),this['_b']<0x1&&(this['_b']=Math[l5(0x475)](this['_b'])),this['_ok']=r['ok'];}M['prototype']={'isDark':function(){return this['getBrightness']()<0x80;},'isLight':function(){return!this['isDark']();},'isValid':function(){return this['_ok'];},'getOriginalInput':function(){return this['_originalInput'];},'getFormat':function(){return this['_format'];},'getAlpha':function(){return this['_a'];},'getBrightness':function(){var o=this['toRgb']();return(o['r']*0x12b+o['g']*0x24b+o['b']*0x72)/0x3e8;},'getLuminance':function(){const l6=bD;var o=this[l6(0x26c)](),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[l6(0x511)]((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){return this['_a']=$l(o),this['_roundA']=Math['round'](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(){var o=Xl(this['_r'],this['_g'],this['_b']),p=Math['round'](o['h']*0x168),r=Math['round'](o['s']*0x64),u=Math['round'](o['v']*0x64);return this['_a']==0x1?'hsv('+p+',\x20'+r+'%,\x20'+u+'%)':'hsva('+p+',\x20'+r+'%,\x20'+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 l7=bD;var o=Sl(this['_r'],this['_g'],this['_b']),p=Math['round'](o['h']*0x168),r=Math[l7(0x475)](o['s']*0x64),u=Math['round'](o['l']*0x64);return this['_a']==0x1?l7(0x503)+p+',\x20'+r+l7(0x385)+u+'%)':'hsla('+p+',\x20'+r+'%,\x20'+u+l7(0x385)+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(){const l8=bD;return this['_a']==0x1?l8(0x268)+Math['round'](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math['round'](this['_b'])+')':'rgba('+Math[l8(0x475)](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math[l8(0x475)](this['_b'])+',\x20'+this['_roundA']+')';},'toPercentageRgb':function(){const l9=bD;return{'r':Math['round'](U(this['_r'],0xff)*0x64)+'%','g':Math['round'](U(this['_g'],0xff)*0x64)+'%','b':Math[l9(0x475)](U(this['_b'],0xff)*0x64)+'%','a':this['_a']};},'toPercentageRgbString':function(){const la=bD;return this['_a']==0x1?'rgb('+Math[la(0x475)](U(this['_r'],0xff)*0x64)+'%,\x20'+Math['round'](U(this['_g'],0xff)*0x64)+'%,\x20'+Math['round'](U(this['_b'],0xff)*0x64)+'%)':'rgba('+Math['round'](U(this['_r'],0xff)*0x64)+'%,\x20'+Math['round'](U(this['_g'],0xff)*0x64)+'%,\x20'+Math['round'](U(this['_b'],0xff)*0x64)+la(0x385)+this['_roundA']+')';},'toName':function(){return this['_a']===0x0?'transparent':this['_a']<0x1?!0x1:Ih[pl(this['_r'],this['_g'],this['_b'],!0x0)]||!0x1;},'toFilter':function(o){const lb=bD;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+lb(0x377)+p+',endColorstr='+r+')';},'toString':function(o){const ld=bD;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==='hex4'||o==='hex8'||o==='name');return w?o==='name'&&this['_a']===0x0?this['toName']():this['toRgbString']():(o==='rgb'&&(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===ld(0x3d4)&&(r=this['toHex8String']()),o===ld(0x1f0)&&(r=this[ld(0x444)]()),o===ld(0x456)&&(r=this['toHslString']()),o==='hsv'&&(r=this['toHsvString']()),r||this['toHexString']());},'clone':function(){const le=bD;return M(this[le(0x315)]());},'_applyModification':function(o,p){var r=o['apply'](null,[this]['concat']([]['slice']['call'](p)));return this['_r']=r['_r'],this['_g']=r['_g'],this['_b']=r['_b'],this['setAlpha'](r['_a']),this;},'lighten':function(){return this['_applyModification'](lh,arguments);},'brighten':function(){return this['_applyModification'](sh,arguments);},'darken':function(){return this['_applyModification'](ch,arguments);},'desaturate':function(){return this['_applyModification']($c,arguments);},'saturate':function(){const lf=bD;return this[lf(0x2c0)](ih,arguments);},'greyscale':function(){return this['_applyModification'](th,arguments);},'spin':function(){const lg=bD;return this[lg(0x2c0)](hh,arguments);},'_applyCombination':function(o,p){return o['apply'](null,[this]['concat']([]['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['fromRatio']=function(o,p){const lj=bD;if(Hi(o)==lj(0x423)){var r={};for(var s in o)o['hasOwnProperty'](s)&&(s==='a'?r[s]=o[s]:r[s]=pi(o[s]));o=r;}return M(o,p);};function vc(o){const lk=bD;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='hsv'):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[lk(0x260)]('a')&&(r=o['a'])),r=$l(r),{'ok':y,'format':o['format']||z,'r':Math['min'](0xff,Math['max'](p['r'],0x0)),'g':Math[lk(0x2a5)](0xff,Math['max'](p['g'],0x0)),'b':Math['min'](0xff,Math[lk(0x4ae)](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){o=U(o,0xff),p=U(p,0xff),r=U(r,0xff);var u=Math['max'](o,p,r),w=Math['min'](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 lm=bD;o=U(o,0xff),p=U(p,0xff),r=U(r,0xff);var u=Math[lm(0x4ae)](o,p,r),w=Math[lm(0x2a5)](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){const ln=bD;p=U(p,0x168)*0x6,r=U(r,0x64),u=U(u,0x64);var w=Math[ln(0x210)](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 lo=bD;var w=[v(Math['round'](o)['toString'](0x10)),v(Math['round'](p)['toString'](0x10)),v(Math['round'](r)[lo(0x315)](0x10))];return u&&w[0x0]['charAt'](0x0)==w[0x0]['charAt'](0x1)&&w[0x1]['charAt'](0x0)==w[0x1][lo(0x413)](0x1)&&w[0x2][lo(0x413)](0x0)==w[0x2]['charAt'](0x1)?w[0x0][lo(0x413)](0x0)+w[0x1]['charAt'](0x0)+w[0x2][lo(0x413)](0x0):w['join']('');}function qc(o,p,r,u,w){const lp=bD;var x=[v(Math['round'](o)[lp(0x315)](0x10)),v(Math['round'](p)['toString'](0x10)),v(Math[lp(0x475)](r)['toString'](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]['charAt'](0x0)==x[0x3]['charAt'](0x1)?x[0x0]['charAt'](0x0)+x[0x1]['charAt'](0x0)+x[0x2]['charAt'](0x0)+x[0x3]['charAt'](0x0):x[lp(0x4ad)]('');}function ul(o,p,r,u){var w=[v(is(u)),v(Math['round'](o)['toString'](0x10)),v(Math['round'](p)['toString'](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[bD(0x4d8)]=function(){return M['fromRatio']({'r':Math['random'](),'g':Math['random'](),'b':Math['random']()});};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){return M(o)['desaturate'](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 lq=bD;p=p===0x0?0x0:p||0xa;var r=M(o)['toRgb']();return r['r']=Math['max'](0x0,Math['min'](0xff,r['r']-Math[lq(0x475)](0xff*-(p/0x64)))),r['g']=Math['max'](0x0,Math['min'](0xff,r['g']-Math['round'](0xff*-(p/0x64)))),r['b']=Math['max'](0x0,Math['min'](0xff,r['b']-Math[lq(0x475)](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 lr=bD;if(isNaN(p)||p<=0x0)throw new Error('Argument\x20to\x20polyad\x20must\x20be\x20a\x20positive\x20number');for(var r=M(o)[lr(0x367)](),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){p=p||0x6,r=r||0x1e;var u=M(o)['toHsl'](),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){const lt=bD;r=r===0x0?0x0:r||0x32;var u=M(o)[lt(0x26c)](),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[bD(0x359)]=function(o,p){const lu=bD;var r=M(o),s=M(p);return(Math['max'](r['getLuminance'](),s['getLuminance']())+0.05)/(Math[lu(0x2a5)](r['getLuminance'](),s['getLuminance']())+0.05);},M['isReadable']=function(o,p,r){const lv=bD;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'AAlarge':x=u>=0x3;break;case lv(0x22e):x=u>=0x7;break;}return x;},M['mostReadable']=function(o,p,r){const lw=bD;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['length'];D++)x=M[lw(0x359)](o,p[D]),x>w&&(w=x,u=M(p[D]));return M['isReadable'](o,u,{'level':z,'size':C})||!y?u:(r[lw(0x214)]=!0x1,M[lw(0x415)](o,['#fff','#000'],r));};var pt=M['names']={'aliceblue':'f0f8ff','antiquewhite':'faebd7','aqua':bD(0x358),'aquamarine':'7fffd4','azure':'f0ffff','beige':'f5f5dc','bisque':bD(0x1f5),'black':'000','blanchedalmond':'ffebcd','blue':'00f','blueviolet':'8a2be2','brown':'a52a2a','burlywood':'deb887','burntsienna':'ea7e5d','cadetblue':'5f9ea0','chartreuse':'7fff00','chocolate':'d2691e','coral':'ff7f50','cornflowerblue':'6495ed','cornsilk':'fff8dc','crimson':'dc143c','cyan':bD(0x358),'darkblue':bD(0x434),'darkcyan':'008b8b','darkgoldenrod':'b8860b','darkgray':bD(0x356),'darkgreen':'006400','darkgrey':'a9a9a9','darkkhaki':'bdb76b','darkmagenta':bD(0x4e1),'darkolivegreen':'556b2f','darkorange':'ff8c00','darkorchid':'9932cc','darkred':'8b0000','darksalmon':'e9967a','darkseagreen':'8fbc8f','darkslateblue':'483d8b','darkslategray':'2f4f4f','darkslategrey':'2f4f4f','darkturquoise':'00ced1','darkviolet':'9400d3','deeppink':'ff1493','deepskyblue':'00bfff','dimgray':'696969','dimgrey':'696969','dodgerblue':'1e90ff','firebrick':'b22222','floralwhite':'fffaf0','forestgreen':'228b22','fuchsia':'f0f','gainsboro':bD(0x4b3),'ghostwhite':'f8f8ff','gold':'ffd700','goldenrod':'daa520','gray':'808080','green':'008000','greenyellow':bD(0x3a5),'grey':'808080','honeydew':'f0fff0','hotpink':'ff69b4','indianred':'cd5c5c','indigo':bD(0x45f),'ivory':'fffff0','khaki':bD(0x23c),'lavender':'e6e6fa','lavenderblush':bD(0x37e),'lawngreen':bD(0x3aa),'lemonchiffon':'fffacd','lightblue':'add8e6','lightcoral':'f08080','lightcyan':'e0ffff','lightgoldenrodyellow':'fafad2','lightgray':bD(0x509),'lightgreen':'90ee90','lightgrey':'d3d3d3','lightpink':bD(0x1e6),'lightsalmon':'ffa07a','lightseagreen':'20b2aa','lightskyblue':'87cefa','lightslategray':'789','lightslategrey':'789','lightsteelblue':'b0c4de','lightyellow':'ffffe0','lime':bD(0x383),'limegreen':'32cd32','linen':'faf0e6','magenta':bD(0x4d6),'maroon':'800000','mediumaquamarine':'66cdaa','mediumblue':'0000cd','mediumorchid':'ba55d3','mediumpurple':'9370db','mediumseagreen':'3cb371','mediumslateblue':'7b68ee','mediumspringgreen':bD(0x2ad),'mediumturquoise':'48d1cc','mediumvioletred':'c71585','midnightblue':'191970','mintcream':'f5fffa','mistyrose':bD(0x4e6),'moccasin':'ffe4b5','navajowhite':'ffdead','navy':'000080','oldlace':'fdf5e6','olive':'808000','olivedrab':'6b8e23','orange':bD(0x26f),'orangered':'ff4500','orchid':'da70d6','palegoldenrod':'eee8aa','palegreen':'98fb98','paleturquoise':'afeeee','palevioletred':'db7093','papayawhip':bD(0x313),'peachpuff':'ffdab9','peru':'cd853f','pink':'ffc0cb','plum':'dda0dd','powderblue':'b0e0e6','purple':'800080','rebeccapurple':'663399','red':'f00','rosybrown':'bc8f8f','royalblue':'4169e1','saddlebrown':'8b4513','salmon':'fa8072','sandybrown':'f4a460','seagreen':'2e8b57','seashell':'fff5ee','sienna':'a0522d','silver':bD(0x4b2),'skyblue':bD(0x3c3),'slateblue':'6a5acd','slategray':'708090','slategrey':'708090','snow':'fffafa','springgreen':bD(0x2d5),'steelblue':'4682b4','tan':'d2b48c','teal':'008080','thistle':'d8bfd8','tomato':'ff6347','turquoise':'40e0d0','violet':'ee82ee','wheat':'f5deb3','white':'fff','whitesmoke':'f5f5f5','yellow':bD(0x373),'yellowgreen':bD(0x443)},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){const lx=bD;return typeof o=='string'&&o[lx(0x4d0)]('.')!=-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){const ly=bD;return Math['round'](parseFloat(o)*0xff)[ly(0x315)](0x10);}function Ll(o){return P(o)/0xff;}var Q=(function(){const lz=bD;var o='[-\x5c+]?\x5cd+%?',p='[-\x5c+]?\x5cd*\x5c.\x5cd+%?',r='(?:'+p+lz(0x384)+o+')',u='[\x5cs|\x5c(]+('+r+lz(0x36b)+r+')[,|\x5cs]+('+r+lz(0x432),w='[\x5cs|\x5c(]+('+r+')[,|\x5cs]+('+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('hsl'+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){const lA=bD;return!!Q[lA(0x340)][lA(0x4b8)](o);}function ah(o){const lB=bD;o=o['replace'](fc,'')['replace'](Qc,'')[lB(0x352)]();var p=!0x1;if(pt[o])o=pt[o],p=!0x0;else{if(o=='transparent')return{'r':0x0,'g':0x0,'b':0x0,'a':0x0,'format':'name'};}var r;return(r=Q['rgb']['exec'](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[lB(0x456)]['exec'](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'][lB(0x4b8)](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?'name':'hex8'}:(r=Q[lB(0x36a)]['exec'](o))?{'r':P(r[0x1]),'g':P(r[0x2]),'b':P(r[0x3]),'format':p?'name':'hex'}:(r=Q[lB(0x442)][lB(0x4b8)](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[lB(0x346)][lB(0x4b8)](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 lC=bD;var p,r;return o=o||{'level':'AA','size':'small'},p=(o[lC(0x34b)]||'AA')['toUpperCase'](),r=(o['size']||lC(0x4f9))['toLowerCase'](),p!=='AA'&&p!=='AAA'&&(p='AA'),r!=='small'&&r!=='large'&&(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=bD(0x205),yh=bD(0x237),Vl=bD(0x506),Sh='rgba(33,\x20163,\x20102,\x200.1)',Xh=0x1,ph='#000000',uh={'double':0x8,'solid':0x7,'dashed':0x5,'dotted':0x4},hs='bold\x2012px\x20'+ri,zt=Ki+bD(0x3f6)+ri,Gh=0x20,rl={'backgroundColor':ss,'color':cs,'font':hs},Lh={'backgroundColor':'#f4f7f9','color':'#73808d','font':'italic\x20'+Ki+bD(0x3f6)+ri};let ot;const Kl=new Map(),es=o=>o['map'](p=>({...p,...p['children']?.['length']?{'children':es(p['children'])}:{}})),xh=o=>{if(typeof o['font']=='string'&&o['font']['trim']())return o['font'];if(!(o['fontFamily']!==void 0x0||o['fontSize']!==void 0x0||o['fontWeight']!==void 0x0||o['fontStyle']!==void 0x0))return;const p=((()=>{const {fontWeight:r}=o;if(typeof r=='number')return r>=0x258?'bold':'normal';if(typeof r=='string'){const u=r['trim']();return/^\d+$/['test'](u)?Number(u)>=0x258?'bold':'normal':u;}return'normal';})());return[o['fontStyle']||'normal',p,(Number['parseInt'](o['fontSize'],0xa)||Ki)+'px',o['fontFamily']||ri]['join']('\x20');},ds=o=>{const lD=bD;if(o){if(o['includes']('htLeft'))return lD(0x4f7);if(o['includes']('htRight'))return'right';if(o['includes']('htCenter'))return lD(0x34e);}},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+/)[bD(0x2cd)](p),Vh=(o,p,r)=>typeof o=='number'?o:o?.[p]??r,Ct=o=>{const lE=bD,p=Number(o?.[lE(0x3fb)]);return Number['isFinite'](p)&&p>0x0?p:0x0;},rh=o=>!!o&&!o['hide']&&Ct(o)>0x0,Kh=o=>o['structure']?.['columns']?.['length']?o['structure']['columns']:o['columns'],Th=o=>o['structure']?.['colWidths']??o['colWidths'],Ml=(o,p,r)=>typeof o=='number'?o:o?.[p]??r,ut=(o,p)=>typeof o=='number'&&Number['isFinite'](o)?o<=0x0?ts:Math['max'](Math[bD(0x32f)](o),xl):Math['max'](Math['ceil'](p),xl),Mh=o=>{const lF=bD;if(o==null)return!0x1;const p=(''+o)['trim']();return p?!/^\d+([./:-]\d+)*$/[lF(0x49b)](p):!0x1;},Jh=o=>{const lG=bD,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[lG(0x2a9)](z=>(''+(z??''))['trim']()!=='');return x[lG(0x38b)]<Math['min'](Math['max'](Math['floor'](p['totalCols']/0x2),0x3),0x6)||!x['every'](Mh)||y['length']<0x2?0x0:0x1;},Nh=o=>{const lH=bD,p=Kh(o),r=Th(o),u=[{'key':Oc,'title':'','type':lH(0x479),'fixed':'left','width':It,'minWidth':It,'maxWidth':It,'widthFillDisable':!0x0,'headerAlign':lH(0x34e),'align':lH(0x34e),'headerVerticalAlign':'middle','verticalAlign':lH(0x515),'overflowTooltipShow':!0x1,'overflowTooltipHeaderShow':!0x1}],w=[];for(let x=0x0;x<(o['meta']?.[lH(0x31a)]||0x0);x+=0x1){const y=wt(x),z=p?.[x],C=Vh(r,x,o['defaults'][lH(0x519)]),D=!!z?.['hidden']||C<=0x0,E=ms(z?.['className'])||'middle';w[lH(0x1e7)](y),u[lH(0x1e7)]({'key':y,'title':z?.['title']||''+(x+0x1),'width':D?0x0:Math[lH(0x4ae)](Math['ceil'](C),0x1),'hide':D,'widthFillDisable':!0x0,'renderType':lH(0x2d1),'headerAlign':'center','headerVerticalAlign':lH(0x515),'align':ds(z?.['className'])||'left','verticalAlign':E,'overflowTooltipShow':!0x0,'overflowTooltipHeaderShow':!0x0});}return{'columns':u,'dataKeys':w};},Jl=o=>es(o),Fh=o=>{const lI=bD;if(typeof o=='number'&&Number['isFinite'](o))return Math['max'](o,0x0);if(typeof o==lI(0x48a)){const p=Number['parseFloat'](o);return Number['isFinite'](p)?Math['max'](p,0x0):0x0;}return 0x0;},wh=o=>{if(typeof o!='string')return'solid';const p=o['trim']();switch(p){case'double':case'dashed':case'dotted':case'solid':return p;default:return'solid';}},Fi=(o,p)=>{const lJ=bD,r=Fh(o['border'+p+lJ(0x207)]);if(r)return{'width':r,'style':wh(o['border'+p+'Style']),'color':o['border'+p+'Color']||ph};},Gt=o=>o?!!(o['borderTop']||o['borderRight']||o['borderBottom']||o['borderLeft']):!0x1,Zs=o=>o?!!(o['horizontalAlign']||o[bD(0x490)]||o['wrapText']||o['shrinkToFit']):!0x1,Nl=(o,p)=>Zs(o)?!!(o?.[bD(0x333)]||o?.['shrinkToFit']||o?.['horizontalAlign']&&o[bD(0x41f)]!==(p?.['align']||'left')||o?.['verticalAlign']&&o['verticalAlign']!==(p?.['verticalAlign']||'middle')):!0x1,Rh=o=>{const lK=bD;switch(o){case'center':return'center';case'right':return'flex-end';default:return lK(0x285);}},zh=o=>{const lL=bD;switch(o){case'top':return'flex-start';case lL(0x38a):return'flex-end';default:return'center';}},Ch=(o,p,r,s)=>{const lM=bD;switch(o){case lM(0x34f):return p-r;case'center':return-Math[lM(0x2a5)](s,Math['max']((r-p)/0x2,0x0));default:return 0x0;}},nt=o=>typeof o[bD(0x3cb)]==bD(0x306)&&o['_height']<=ts,Lt=(o,p)=>{const lN=bD,r=o?.['key'];if(typeof r=='string'&&r['startsWith']('c')){const s=Number(r[lN(0x316)](0x1));if(Number[lN(0x394)](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)['trim']()!=='',Uh=o=>/^[+-]?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?%?$/['test'](o[bD(0x46e)]()),jh=(o,p)=>{const lO=bD,r=p+'\x0a'+o,u=Kl['get'](r);if(u!==void 0x0)return u;!ot&&typeof document<'u'&&(ot=document['createElement'](lO(0x2b7)));const w=ot?.[lO(0x289)]('2d');if(!w)return o['length']*Ki;w['font']=p;const x=w['measureText'](o)['width']+Rt*0x2;return Kl['set'](r,x),x;},Eh=(o,p,r,u)=>{const w=o['columns'][u+0x1];if(!rh(w))return!0x1;const x=Is(r,u);return o['mergeStartMap']['has'](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 lP=bD,D=gt(C);if(!D||z?.['wrapText']||z?.[lP(0x4ee)]||Uh(D))return;const E=Is(u,w);if(p[lP(0x33a)]['has'](E)||p['mergeCoveredMap'][lP(0x4ba)](E))return;const F=Ct(x);if(!F)return;const G=z?.['font']||zt,J=Math['ceil'](jh(D,G));if(J<=F)return;const K=z?.['horizontalAlign']||x?.['align']||'left',L=K==='right'||K==='center'?Fl(p,r,u,w,-0x1):0x0,N=K!==lP(0x34f)?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[bD(0x3fb)]*0x64+(uh[o['style']]||0x1):0x0,kh=(p,r,u,w)=>{const lQ=bD,x=p['cellCache']['get'](si(r-0x1,u+0x1)),y=p[lQ(0x37b)]['get'](si(r+0x1,u+0x1)),z=p['cellCache'][lQ(0x20c)](si(r,u)),C=p['cellCache']['get'](si(r,u+0x2)),D=hi(w['borderTop'])>=hi(x?.[lQ(0x32b)])?w['borderTop']:void 0x0,E=hi(w['borderBottom'])>hi(y?.[lQ(0x3ce)])?w['borderBottom']:void 0x0,F=hi(w['borderLeft'])>=hi(z?.[lQ(0x453)])?w['borderLeft']:void 0x0,G=hi(w[lQ(0x453)])>hi(C?.['borderLeft'])?w['borderRight']:void 0x0;return{...w,'borderTop':D,'borderRight':G,'borderBottom':E,'borderLeft':F};},Ri=(o,p)=>{const lR=bD,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':lR(0x2de)+p['width']+'px)','height':'0'}),r['style'][o]=-s+'px',r['style']['borderTop']=p[lR(0x3fb)]+'px\x20'+p[lR(0x1f7)]+'\x20'+p['color']):(Object['assign'](r[lR(0x1f7)],{'top':-s+'px','height':'calc(100%\x20+\x20'+p['width']+'px)','width':'0'}),r['style'][o]=-s+'px',r['style']['borderLeft']=p[lR(0x3fb)]+'px\x20'+p['style']+'\x20'+p['color']),r;},Oh=(o,p)=>{const lS=bD,r=document[lS(0x2cb)]('span');return r[lS(0x319)]=gt(o),Object['assign'](r['style'],{'position':lS(0x35c),'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['wrapText']?'clip':'ellipsis','whiteSpace':p['wrapText']?'pre-wrap':'nowrap','wordBreak':p['wrapText']?'break-word':lS(0x2fa),'lineHeight':''+ls,'textAlign':p['horizontalAlign']||'left','color':p['color']||'inherit','font':p['font']||zt,'transform':p['shrinkToFit']?'scale(0.92)':lS(0x26d),'transformOrigin':(p['horizontalAlign']||'left')+'\x20center'}),r;},Dh=(o,p)=>{p&&Object['assign'](o['style'],{'position':'absolute','left':p['left']+'px','top':'0','width':p['width']+'px','overflow':'hidden','textOverflow':'clip'});},Ph=(o,p,r,u,w)=>{const lT=bD;o['replaceChildren'](),Object['assign'](o['style'],{'pointerEvents':lT(0x26d),'overflow':'visible','background':lT(0x3ec)});const x=document['createDocumentFragment']();if(u){const y=Oh(r,p);Dh(y,w),x[lT(0x2fe)](y);}p['borderTop']&&x['appendChild'](Ri('top',p['borderTop'])),p['borderRight']&&x['appendChild'](Ri('right',p['borderRight'])),p['borderBottom']&&x[lT(0x2fe)](Ri('bottom',p['borderBottom'])),p['borderLeft']&&x['appendChild'](Ri('left',p['borderLeft'])),o[lT(0x2fe)](x);},Hh=o=>{const lU=bD;if(!o)return;const p=o['style']||{},r={};p['backgroundColor']&&(r['backgroundColor']=p['backgroundColor']),p['color']?r['color']=p['color']:p['backgroundColor']&&M(p[lU(0x241)])['isDark']()&&(r[lU(0x24b)]='#ffffff');const u=xh(p);u?r['font']=u:p['backgroundColor']&&M(p['backgroundColor'])['isDark']()&&(r['font']=lU(0x4b0)+Ki+'px\x20'+ri);const w=Fi(p,lU(0x47d));w&&(r['borderTop']=w);const x=Fi(p,'Right');x&&(r['borderRight']=x);const y=Fi(p,'Bottom');y&&(r['borderBottom']=y);const z=Fi(p,'Left');z&&(r['borderLeft']=z);const C=ds(o[lU(0x496)]);C&&(r['horizontalAlign']=C);const D=ms(o['className']);if(D&&(r['verticalAlign']=D),Tl(o['className'],'htWrap')&&(r['wrapText']=!0x0),Tl(o['className'],'htShrink')&&(r[lU(0x4ee)]=!0x0),!(!r['backgroundColor']&&!r[lU(0x24b)]&&!r['font']&&!Gt(r)&&!Zs(r)))return r;},bt=({hostHeight:o,sheetDefaults:p,virtualState:r})=>{const lV=bD,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})=>{if(D===0x0)return rl;const F=z;if(!nt(F))return Zt(F)!==di['Loaded']?Lh:r['cellCache']['get'](wi(C,D,E));},y=({row:z,rowIndex:C,colIndex:D,column:E,value:F})=>{const G=z;if(D===0x0||nt(G)||Zt(G)!==di['Loaded'])return;const J=wi(C,D,E);if(r['mergeCoveredMap']['has'](J))return;const K=r['cellCache']['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 T={...K||{},'horizontalAlign':K?.['horizontalAlign']||E?.['align'],'verticalAlign':K?.['verticalAlign']||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':'middle','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':'#202124','READONLY_COLOR':'#ffffff','READONLY_TEXT_COLOR':'#202124','EDIT_BG_COLOR':lV(0x472),'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})=>{const lW=lV;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[lW(0x37b)]['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 lY=bD,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 lX=b,aZ=K['value']['filter'](b0=>!b0[lX(0x30b)]);return aZ[lX(0x38b)]?aZ:K['value'];}),ab=g(()=>!a1['value']&&!a6['value']&&(ak['value']||a5['value'])),ad=g(()=>!ab['value']&&!a1['value']&&a6['value']&&a8['value']>0x0),ae=g(()=>K['value']['length']?a9['value']?.['name']?'正在准备「'+a9['value']['name']+'」...':'正在准备工作表内容...':'正在解析\x20Excel\x20工作簿,请耐心等待...'),af=g(()=>a2['value']?'已缓存\x20'+Math['min'](a7['value']*$,a2['value'])['toLocaleString']()+'\x20/\x20'+a2['value']['toLocaleString']()+'\x20行':''),ag=g(()=>{const aZ=a2['value']||a9['value']?.['rowCount']||0x0,b0=a3['value']||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[lY(0x4ac)]?.['clientHeight']||0x0,aC=()=>{const lZ=lY;a7['value']=ao['loadedWindows']['size'],a8[lZ(0x4ac)]=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(()=>{const m0=b;if(av=0x0,!aq||!ao['active']||!ao[m0(0x32c)])return;const aZ=Math['max'](aq['ctx']['body'][m0(0x417)]||0x0,0x0),b0=Math['max'](aq['ctx']['body']['tailIndex']||aZ,aZ),b1=aq['ctx'][m0(0x295)]||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']('onScrollY',aF),aq['on']('resize',aF)),aq),aH=(aZ,b0=ao['columns'],b1=ao['rows'],b2=!0x1)=>{const m1=lY,b3={'config':bt({'hostHeight':aB(),'sheetDefaults':a4[m1(0x4ac)],'virtualState':ao}),'columns':Jl(b0)};if(aZ[m1(0x1ec)](b3['config']),aZ['loadColumns'](b3['columns']),aZ['loadData'](b1),aZ['draw'](),b2){requestAnimationFrame(()=>{const m2=m1;aZ[m2(0x403)](0x0,0x0),aZ[m2(0x487)](),aF();});return;}aF();},aI=()=>{const m3=lY,aZ=aG();if(!aZ)return;const {config:b0,columns:b1}=aD();aZ['loadConfig'](b0),ao[m3(0x45e)]&&b1['length']&&aZ['loadColumns'](b1),aZ['doLayout'](),aZ['draw'](),aF();},aJ=(aZ=0x0,b0=!0x0)=>{const m4=lY,b1=aA();if(b1===void 0x0)return;const b2=Pi(aZ,ao['totalRows']);ao['loadedWindows']['has'](b2)||ao[m4(0x422)][m4(0x4ba)](b2)||(ao['loadingWindows']['add'](b2),aC(),ao['active']&&(yl(ao['rows'],ao[m4(0x32c)],b2,di['Loading']),aq?.['draw']()),a1['value']='',am['emit']('parseSheet',{'sheet':b1,'startRow':b2,'pageSize':$,'sessionId':az}),b0&&(ak[m4(0x4ac)]=!0x1));},aK=(aZ,b0)=>{!ao['active']||!ao['totalRows']||Hc({'startRow':aZ,'endRow':b0,'direction':ax,'totalRows':ao['totalRows']})['forEach'](b1=>aJ(b1,!0x0));},aL=aZ=>{const 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['totalRows']),'columns':b1},a4['value']=aZ['defaults'],a2['value']=b0['totalRows'],a3['value']=b0['totalCols'],aC(),k(()=>{const b3=aG();b3&&aH(b3,b1,ao['rows'],!0x0);});},aM=aZ=>{ao['dataKeys']['forEach'](b0=>{delete aZ[b0];});},aN=aZ=>{const m5=lY;Array['isArray'](aZ)&&aZ[m5(0x2e6)]((b0,b1)=>{const m6=m5;if(b0===void 0x0)return;const b2=ao['rows'][b1];if(!b2)return;const b3=ut(b0,ao['defaults']['rowHeight']);b2[m6(0x3cb)]=b3,ao['rowHeightCache']['set'](b1,b3);});},aO=aZ=>{const m7=lY,b0=aZ[m7(0x339)];if(!b0)return;const b1=[],b2=Math[m7(0x2a5)](b0['endRow'],ao['totalRows']);for(let b3=b0['startRow'];b3<b2;b3+=0x1){const b4=ao[m7(0x4cb)][b3],b5=b3-b0['startRow'];if(!b4)continue;aM(b4),(aZ['data']?.[b5]||[])[m7(0x2e6)]((b8,b9)=>{b8===''||b8===null||b8===void 0x0||(b4[wt(b9)]=b8);});const b6=Ml(aZ[m7(0x517)],b5,ao['defaults'][m7(0x429)]),b7=ut(Ml(aZ[m7(0x2b6)]?.[m7(0x517)],b3,b6),ao['defaults'][m7(0x429)]);b4['_height']=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 m8=b,[b4,b5]=b2['split']('-')['map'](Number),b6=si(b0[m8(0x414)]+b4,b5+0x1),b7=Hh(b3);b7&&(ao['cellCache']['set'](b6,b7),b1[m8(0x1e7)](b6));}),ao['windowCells']['set'](b0['startRow'],b1);},aQ=aZ=>{const m9=lY;ao['mergeStartMap'][m9(0x345)](),ao['mergeCoveredMap'][m9(0x345)](),aZ['forEach'](b0=>{const ma=m9,b1=si(b0['row'],b0['col']+0x1);ao[ma(0x33a)]['set'](b1,{...b0,'col':b0['col']+0x1});for(let b2=0x0;b2<b0['rowspan'];b2+=0x1)for(let b3=0x0;b3<b0[ma(0x4b1)];b3+=0x1){if(b2===0x0&&b3===0x0)continue;const b4=si(b0['row']+b2,b0['col']+b3+0x1);ao['mergeCoveredMap'][ma(0x4b4)](b4,!0x0);}});},aR=aZ=>{const mb=lY,b0=aZ['structure'],b1=b0?.['merge'];if(b1)aQ(b1);else{const b2=aZ['meta'];b2&&!ao[mb(0x33a)]['size']&&aQ((aZ['merge']||[])['map'](b3=>({...b3,'row':b3[mb(0x3da)]+b2['startRow']})));}aN(b0?.['rowHeights']);},aS=aZ=>{const md=lY,b0=aZ['meta'];if(!b0)return;ao['active']||aL(aZ),aR(aZ),aO(aZ),aP(aZ),ao['loadedWindows']['add'](b0['startRow']),ao[md(0x422)]['delete'](b0['startRow']),aC(),a6['value']=!0x0;const b1=aA();b1!==void 0x0&&ap['set'](b1,ao),aq?.['draw'](),ak[md(0x4ac)]=!0x1,a5['value']=!0x1;const b2=aw['start']||b0['startRow'],b3=Math['max'](aw['end'],b0['endRow']-0x1,b0['startRow']);aK(b2,b3);},aT=()=>{const me=lY;a1['value']='',a2['value']=0x0,a3['value']=0x0,a4['value']={...Xt},ao=mt(),a6['value']=!0x1,aE(),aC(),aq&&(aq['loadColumns']([]),aq['loadData']([]),aq[me(0x403)](0x0,0x0),aq['draw']());},aU=()=>{const mf=lY,aZ=aA();aZ===void 0x0||!ao[mf(0x45e)]||ap['set'](aZ,ao);},aV=aZ=>{const mg=lY,b0=ap['get'](aZ);return b0?(b0['loadingWindows']['clear'](),ao=b0,a1['value']='',a2['value']=b0[mg(0x32c)],a3['value']=b0['totalCols'],a4['value']=b0['defaults'],a6['value']=b0['loadedWindows'][mg(0x2ab)]>0x0,a5['value']=!a6[mg(0x4ac)],aC(),k(()=>{const mj=mg,b1=aG();b1&&aH(b1,b0['columns'],b0[mj(0x4cb)]);}),!0x0):!0x1;},aW=()=>{const mk=lY,aZ=aA();if(aZ===void 0x0){ak['value']=!0x1,a5['value']=!0x1;return;}if(az+=0x1,aV(aZ)){ak[mk(0x4ac)]=!0x1;return;}a5['value']=!0x0,aT(),aJ(0x0,!0x1);},aX=aZ=>{a0['value']!==aZ&&(aU(),a0['value']=aZ,aW());},aY=()=>{am['emit']('parseWorkbook',{'workbook':C['data']});};return an('sheets',({sheets:aZ})=>{const mm=lY;K['value']=aZ;const b0=aZ['find'](b1=>!b1['hidden'])||aZ[0x0];if(b0){a0['value']=b0['id'],aW();return;}a5[mm(0x4ac)]=!0x1,ak[mm(0x4ac)]=!0x1;}),an(lY(0x3fa),({sessionId:aZ,sheet:b0,sheetData:b1})=>{aZ!==az||b0!==aA()||aS(b1);}),an('parseError',({sessionId:aZ,startRow:b0,message:b1})=>{const mn=lY;aZ&&aZ!==az||(a5['value']=!0x1,ak['value']=!0x1,typeof b0=='number'?(ao['loadingWindows']['delete'](b0),aC(),ao[mn(0x45e)]&&(yl(ao['rows'],ao['totalRows'],b0,di['Placeholder']),aq?.[mn(0x487)]())):(ao['loadingWindows']['clear'](),aC()),a1['value']=b1||'Excel\x20解析失败');}),h(()=>C['data'],()=>{az+=0x1,K['value']=[],a0['value']=0x0,ap['clear'](),a5['value']=!0x0,aT(),aY();}),i(()=>{aG(),F['value']&&(ar=new ResizeObserver(()=>{au&&cancelAnimationFrame(au),au=requestAnimationFrame(()=>{au=0x0,aI();});}),ar['observe'](F['value'])),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 mo=bD;var o=this,p=o['_self']['_c'],r=o['_self']['_setupProxy'];return p('div',{'staticClass':mo(0x3c4)},[r['showBlockingLoading']?p('div',{'staticClass':'loading'},[p('div',{'staticClass':'loading-card'},[o['_m'](0x0),p(mo(0x465),{'staticClass':'loading-copy'},[p(mo(0x298),{'staticClass':'loading-kicker'},[o['_v']('Excel\x20表格')]),p('strong',[o['_v'](o['_s'](r['sheetLoadingText']))]),p('p',[o['_v']('正在准备工作表、样式和大数据视口,请稍候。')])]),p('span',{'staticClass':'loading-spinner'})])]):r[mo(0x224)]?p(mo(0x465),{'staticClass':'error'},[o['_v']('\x20'+o['_s'](r['errorMessage'])+'\x20')]):o['_e'](),p('div',{'staticClass':'table-wrapper'},[r['showStreamingLoading']?p('div',{'staticClass':mo(0x507)},[p('span',{'staticClass':'sheet-loading-dot'}),p('span',[o['_v'](mo(0x48c))]),r[mo(0x35f)]?p('span',{'staticClass':'sheet-loading-summary'},[o['_v'](o['_s'](r['cachedSummary']))]):o['_e']()]):o['_e'](),p(mo(0x465),{'staticClass':mo(0x4af)},[p('div',{'ref':mo(0x2be),'staticClass':'table-target','staticStyle':{'width':'100%','height':'100%'}})])]),p('div',{'staticClass':'toolbar'},[p('div',{'staticClass':mo(0x1e3)},o['_l'](r['sheetTabs'],function(u){const mp=mo;return p(mp(0x3fd),{'key':u['id'],'class':{'active':r[mp(0x332)]===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['statusSummary']?p('div',{'staticClass':'summary'},[o['_v']('\x20'+o['_s'](r[mo(0x3ee)])+'\x20')]):o['_e']()])]);},Bh=[function(){const mq=bD;var o=this,p=o['_self']['_c'];return o['_self']['_setupProxy'],p(mq(0x465),{'staticClass':'loading-brand'},[p(mq(0x3db),{'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};
|