UNPKG

@progress/kendo-react-grid

Version:

React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package

10 lines (9 loc) 30.2 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=(e,n,t,i)=>{if(i==="class"){if(n.size()>0&&n.get(0).node.value.body){const o=n.get(0).node.value.body.body;if(o){const r=e.emptyStatement();r.comments=[e.commentBlock(` ${t} `)],o.unshift(r)}}}else{let o;if(n.get(0).node.declarations&&n.get(0).node.declarations[0].init?o=n.get(0).node.declarations[0].init.body.body:n.get(0).node.body&&(o=n.get(0).node.body.body),o){const r=e.emptyStatement();r.comments=[e.commentBlock(` ${t} `)],o.unshift(r)}}},u=(e,n,t,i)=>{const o=n.find(e.ImportDeclaration,{source:{value:i}});if(o.size()>0){const r=o.get(0).node.specifiers;r.some(a=>a.type==="ImportSpecifier"&&a.imported.name===t)||r.push(e.importSpecifier(e.identifier(t)))}else{const r=e.importDeclaration([e.importSpecifier(e.identifier(t))],e.literal(i));n.get().node.program.body.unshift(r)}},f=(e,n)=>{let t=n.parentPath,i=!1,o=!1;for(;t;){if(e.ClassDeclaration.check(t.node)){i=!0;break}else if(e.FunctionDeclaration.check(t.node)||e.FunctionExpression.check(t.node)||e.ArrowFunctionExpression.check(t.node)){o=!0;break}t=t.parentPath}return{isClassComponent:i,isFunctionalComponent:o,parentNode:t}},m=(e,n)=>{let t=e,i=1;for(;n.has(t);)t=`${e}$${i}`,i++;return t},d=(e,n)=>e.find(t=>t.type==="JSXAttribute"&&t.name.name===n),b=(e,n)=>e.some(t=>t.type==="JSXAttribute"&&t.name.name===n),c=(e,n,t,i)=>{if(n.value&&n.value.type==="JSXExpressionContainer"){const o=n.value.expression;o.type==="ObjectExpression"&&o.properties.push(e.property("init",e.identifier(t),e.identifier(i)))}},p=(e,n,t,i,o)=>{const r=e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.objectExpression([e.property("init",e.identifier(i),e.identifier(o))])));n.push(r)},y=(e,n)=>{const t=e==null?void 0:e.findIndex(i=>i.type==="JSXAttribute"&&i.name.name===n);return t!==-1?(e.splice(t,1),!0):!1},x=(e,n,t,i,o)=>{const r=d(n,t);r?c(e,r,i,o):p(e,n,t,i,o)},h=(e,n,t,i)=>e.jsxAttribute(e.jsxIdentifier(n),e.jsxExpressionContainer(e.objectExpression([e.property("init",e.identifier(t),e.identifier(i))]))),A=(e,n,t,i)=>{n.type==="ObjectExpression"&&n.properties.push(e.property("init",e.identifier(t),e.identifier(i)))},S=(e,n,t,i)=>e.methodDefinition("method",e.identifier(n),e.functionExpression(null,[e.identifier(t?`event: ${i}`:"event")],e.blockStatement([e.returnStatement(e.jsxFragment(e.jsxOpeningFragment(),e.jsxClosingFragment(),[]))]))),E=(e,n,t,i)=>e.variableDeclaration("const",[e.variableDeclarator(e.identifier(n),e.arrowFunctionExpression([e.identifier(`(event${t?`: ${i}`:""})`)],e.blockStatement([e.returnStatement(e.jsxFragment(e.jsxOpeningFragment(),e.jsxClosingFragment(),[]))])))]),g=(e,n,t,i)=>{i?n.node.body.body.push(t):(n.node.body.body||n.node.body).unshift(t)},C=(e,n,t,i)=>{const o=n.find(e.ImportDeclaration,{source:{value:i}});if(o.size()>0){const r=o.find(e.ImportSpecifier,{imported:{name:t}});if(r.size()>0)return r.get(0).node.local.name}return null},v=(e,n,t,i)=>{const o=n.node.body.body.find(r=>r.type==="ClassProperty"&&r.key.name==="state");o&&o.value.type==="ObjectExpression"?o.value.properties.some(s=>s.key.name===t)||o.value.properties.push(e.property("init",e.identifier(t),i)):n.node.body.body.unshift(e.classProperty(e.identifier("state"),e.objectExpression([e.property("init",e.identifier(t),i)])))},F=(e,n)=>(e==null?void 0:e.some(t=>t.type==="JSXAttribute"&&t.name.name===n))||!1,D=(e,n,t,i,o,r,s)=>{const a=e.variableDeclaration("const",[e.variableDeclarator(e.arrayPattern([e.identifier(t),e.identifier(i)]),e.callExpression(e.identifier(`React.useState${r?`<${s}>`:""}`),[o]))]);n.node.body.body.unshift(a)},I=(e,n,t,i)=>{n.push(e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.identifier(i))))},k=(e,n,t,i)=>{n.push(e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.identifier(i))))},w=(e,n,t,i)=>e.methodDefinition("method",e.identifier(n),e.functionExpression(null,t.map(o=>e.identifier(o)),e.blockStatement(i))),P=(e,n,t,i)=>e.variableDeclaration("const",[e.variableDeclarator(e.identifier(n),e.arrowFunctionExpression(t.map(o=>e.identifier(o)),e.blockStatement(i)))]);exports.addCommentToMethod=l;exports.addEventAttribute=I;exports.addMethodToComponent=g;exports.addNewAttribute=p;exports.addPropertyToObjectExpression=A;exports.addStateAttribute=k;exports.addStateDeclaration=v;exports.addUseStateDeclaration=D;exports.createArrowFunction=P;exports.createArrowFunctionForFunctionalComponent=E;exports.createAttribute=h;exports.createClassMethod=w;exports.createMethodForClassComponent=S;exports.doesAttributeExist=b;exports.ensureAttributeExists=x;exports.ensureImportExists=u;exports.findAttribute=d;exports.findImportedName=C;exports.findParentComponent=f;exports.generateUniqueName=m;exports.hasJSXAttribute=F;exports.modifyExistingAttribute=c;exports.removeAttribute=y; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvY29kZW1vZHMvdjExL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29sbGVjdGlvbixcbiAgICBGdW5jdGlvbkRlY2xhcmF0aW9uLFxuICAgIEpTQ29kZXNoaWZ0LFxuICAgIEpTWEF0dHJpYnV0ZSxcbiAgICBKU1hTcHJlYWRBdHRyaWJ1dGUsXG4gICAgVmFyaWFibGVEZWNsYXJhdGlvblxufSBmcm9tICdqc2NvZGVzaGlmdCc7XG5cbmV4cG9ydCBjb25zdCBhZGRDb21tZW50VG9NZXRob2QgPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgbWV0aG9kOiBDb2xsZWN0aW9uPFZhcmlhYmxlRGVjbGFyYXRpb24+IHwgQ29sbGVjdGlvbjxGdW5jdGlvbkRlY2xhcmF0aW9uPixcbiAgICBjb21tZW50VGV4dDogc3RyaW5nLFxuICAgIHBhcmVudFR5cGU6ICdjbGFzcycgfCAnZnVuY3Rpb24nXG4pID0+IHtcbiAgICBpZiAocGFyZW50VHlwZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICBpZiAobWV0aG9kLnNpemUoKSA+IDAgJiYgbWV0aG9kLmdldCgwKS5ub2RlLnZhbHVlLmJvZHkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZEJvZHkgPSBtZXRob2QuZ2V0KDApLm5vZGUudmFsdWUuYm9keS5ib2R5O1xuXG4gICAgICAgICAgICBpZiAobWV0aG9kQm9keSkge1xuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGNvbW1lbnQgYW5kIGF0dGFjaCBpdCB0byBhbiBlbXB0eSBzdGF0ZW1lbnRcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlclN0YXRlbWVudCA9IGouZW1wdHlTdGF0ZW1lbnQoKTtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlclN0YXRlbWVudC5jb21tZW50cyA9IFtqLmNvbW1lbnRCbG9jayhgICR7Y29tbWVudFRleHR9IGApXTtcblxuICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgcGxhY2Vob2xkZXIgc3RhdGVtZW50IHdpdGggdGhlIGNvbW1lbnQgdG8gdGhlIG1ldGhvZCBib2R5XG4gICAgICAgICAgICAgICAgbWV0aG9kQm9keS51bnNoaWZ0KHBsYWNlaG9sZGVyU3RhdGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtZXRob2RCb2R5O1xuXG4gICAgICAgIGlmIChtZXRob2QuZ2V0KDApLm5vZGUuZGVjbGFyYXRpb25zICYmIG1ldGhvZC5nZXQoMCkubm9kZS5kZWNsYXJhdGlvbnNbMF0uaW5pdCkge1xuICAgICAgICAgICAgbWV0aG9kQm9keSA9IG1ldGhvZC5nZXQoMCkubm9kZS5kZWNsYXJhdGlvbnNbMF0uaW5pdC5ib2R5LmJvZHk7XG4gICAgICAgIH0gZWxzZSBpZiAobWV0aG9kLmdldCgwKS5ub2RlLmJvZHkpIHtcbiAgICAgICAgICAgIG1ldGhvZEJvZHkgPSBtZXRob2QuZ2V0KDApLm5vZGUuYm9keS5ib2R5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1ldGhvZEJvZHkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyU3RhdGVtZW50ID0gai5lbXB0eVN0YXRlbWVudCgpO1xuICAgICAgICAgICAgcGxhY2Vob2xkZXJTdGF0ZW1lbnQuY29tbWVudHMgPSBbai5jb21tZW50QmxvY2soYCAke2NvbW1lbnRUZXh0fSBgKV07XG5cbiAgICAgICAgICAgIG1ldGhvZEJvZHkudW5zaGlmdChwbGFjZWhvbGRlclN0YXRlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZW5zdXJlSW1wb3J0RXhpc3RzID0gKGo6IEpTQ29kZXNoaWZ0LCByb290OiBDb2xsZWN0aW9uLCBpbXBvcnROYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgaW1wb3J0RGVjbGFyYXRpb24gPSByb290LmZpbmQoai5JbXBvcnREZWNsYXJhdGlvbiwge1xuICAgICAgICBzb3VyY2U6IHsgdmFsdWU6IHNvdXJjZSB9XG4gICAgfSk7XG5cbiAgICBpZiAoaW1wb3J0RGVjbGFyYXRpb24uc2l6ZSgpID4gMCkge1xuICAgICAgICAvLyBJZiB0aGUgaW1wb3J0IHN0YXRlbWVudCBleGlzdHMsIGFkZCB0aGUgbmV3IGltcG9ydCBuYW1lIGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcbiAgICAgICAgY29uc3Qgc3BlY2lmaWVycyA9IGltcG9ydERlY2xhcmF0aW9uLmdldCgwKS5ub2RlLnNwZWNpZmllcnM7XG4gICAgICAgIGNvbnN0IGFscmVhZHlJbXBvcnRlZCA9IHNwZWNpZmllcnMuc29tZShcbiAgICAgICAgICAgIChzcGVjaWZpZXI6IGFueSkgPT4gc3BlY2lmaWVyLnR5cGUgPT09ICdJbXBvcnRTcGVjaWZpZXInICYmIHNwZWNpZmllci5pbXBvcnRlZC5uYW1lID09PSBpbXBvcnROYW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFhbHJlYWR5SW1wb3J0ZWQpIHtcbiAgICAgICAgICAgIHNwZWNpZmllcnMucHVzaChqLmltcG9ydFNwZWNpZmllcihqLmlkZW50aWZpZXIoaW1wb3J0TmFtZSkpKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZSBpbXBvcnQgc3RhdGVtZW50IGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBhIG5ldyBvbmVcbiAgICAgICAgY29uc3QgbmV3SW1wb3J0ID0gai5pbXBvcnREZWNsYXJhdGlvbihbai5pbXBvcnRTcGVjaWZpZXIoai5pZGVudGlmaWVyKGltcG9ydE5hbWUpKV0sIGoubGl0ZXJhbChzb3VyY2UpKTtcbiAgICAgICAgcm9vdC5nZXQoKS5ub2RlLnByb2dyYW0uYm9keS51bnNoaWZ0KG5ld0ltcG9ydCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRQYXJlbnRDb21wb25lbnQgPSAoajogSlNDb2Rlc2hpZnQsIHBhdGg6IGFueSkgPT4ge1xuICAgIGxldCBwYXJlbnROb2RlID0gcGF0aC5wYXJlbnRQYXRoO1xuICAgIGxldCBpc0NsYXNzQ29tcG9uZW50ID0gZmFsc2U7XG4gICAgbGV0IGlzRnVuY3Rpb25hbENvbXBvbmVudCA9IGZhbHNlO1xuXG4gICAgd2hpbGUgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgaWYgKGouQ2xhc3NEZWNsYXJhdGlvbi5jaGVjayhwYXJlbnROb2RlLm5vZGUpKSB7XG4gICAgICAgICAgICBpc0NsYXNzQ29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgai5GdW5jdGlvbkRlY2xhcmF0aW9uLmNoZWNrKHBhcmVudE5vZGUubm9kZSkgfHxcbiAgICAgICAgICAgIGouRnVuY3Rpb25FeHByZXNzaW9uLmNoZWNrKHBhcmVudE5vZGUubm9kZSkgfHxcbiAgICAgICAgICAgIGouQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24uY2hlY2socGFyZW50Tm9kZS5ub2RlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlzRnVuY3Rpb25hbENvbXBvbmVudCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnRQYXRoO1xuICAgIH1cblxuICAgIHJldHVybiB7IGlzQ2xhc3NDb21wb25lbnQsIGlzRnVuY3Rpb25hbENvbXBvbmVudCwgcGFyZW50Tm9kZSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVW5pcXVlTmFtZSA9IChiYXNlTmFtZTogc3RyaW5nLCBleGlzdGluZ05hbWVzOiBTZXQ8c3RyaW5nPik6IHN0cmluZyA9PiB7XG4gICAgbGV0IG5hbWUgPSBiYXNlTmFtZTtcbiAgICBsZXQgY291bnRlciA9IDE7XG4gICAgd2hpbGUgKGV4aXN0aW5nTmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIG5hbWUgPSBgJHtiYXNlTmFtZX0kJHtjb3VudGVyfWA7XG4gICAgICAgIGNvdW50ZXIrKztcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZEF0dHJpYnV0ZSA9IChhdHRyaWJ1dGVzOiBhbnlbXSwgYXR0cmlidXRlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWUubmFtZSA9PT0gYXR0cmlidXRlTmFtZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZG9lc0F0dHJpYnV0ZUV4aXN0ID0gKGF0dHJpYnV0ZXM6IGFueVtdLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gYXR0cmlidXRlcy5zb21lKChhdHRyKSA9PiBhdHRyLnR5cGUgPT09ICdKU1hBdHRyaWJ1dGUnICYmIGF0dHIubmFtZS5uYW1lID09PSBhdHRyaWJ1dGVOYW1lKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtb2RpZnlFeGlzdGluZ0F0dHJpYnV0ZSA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBleGlzdGluZ0F0dHJpYnV0ZTogYW55LFxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5VmFsdWU6IHN0cmluZ1xuKSA9PiB7XG4gICAgaWYgKGV4aXN0aW5nQXR0cmlidXRlLnZhbHVlICYmIGV4aXN0aW5nQXR0cmlidXRlLnZhbHVlLnR5cGUgPT09ICdKU1hFeHByZXNzaW9uQ29udGFpbmVyJykge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUuZXhwcmVzc2lvbjtcbiAgICAgICAgaWYgKGV4cHJlc3Npb24udHlwZSA9PT0gJ09iamVjdEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICBleHByZXNzaW9uLnByb3BlcnRpZXMucHVzaChqLnByb3BlcnR5KCdpbml0Jywgai5pZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGouaWRlbnRpZmllcihwcm9wZXJ0eVZhbHVlKSkpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFkZE5ld0F0dHJpYnV0ZSA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBhdHRyaWJ1dGVzOiBhbnlbXSxcbiAgICBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsXG4gICAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gICAgcHJvcGVydHlWYWx1ZTogc3RyaW5nXG4pID0+IHtcbiAgICBjb25zdCBuZXdBdHRyaWJ1dGUgPSBqLmpzeEF0dHJpYnV0ZShcbiAgICAgICAgai5qc3hJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUpLFxuICAgICAgICBqLmpzeEV4cHJlc3Npb25Db250YWluZXIoXG4gICAgICAgICAgICBqLm9iamVjdEV4cHJlc3Npb24oW2oucHJvcGVydHkoJ2luaXQnLCBqLmlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgai5pZGVudGlmaWVyKHByb3BlcnR5VmFsdWUpKV0pXG4gICAgICAgIClcbiAgICApO1xuICAgIGF0dHJpYnV0ZXMucHVzaChuZXdBdHRyaWJ1dGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUF0dHJpYnV0ZSA9IChhdHRyaWJ1dGVzOiBhbnlbXSwgYXR0cmlidXRlTmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgYXR0cmlidXRlSW5kZXggPSBhdHRyaWJ1dGVzPy5maW5kSW5kZXgoXG4gICAgICAgIChhdHRyKSA9PiBhdHRyLnR5cGUgPT09ICdKU1hBdHRyaWJ1dGUnICYmIGF0dHIubmFtZS5uYW1lID09PSBhdHRyaWJ1dGVOYW1lXG4gICAgKTtcblxuICAgIGlmIChhdHRyaWJ1dGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgYXR0cmlidXRlcy5zcGxpY2UoYXR0cmlidXRlSW5kZXgsIDEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSW5kaWNhdGVzIHRoZSBhdHRyaWJ1dGUgd2FzIGZvdW5kIGFuZCByZW1vdmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBJbmRpY2F0ZXMgdGhlIGF0dHJpYnV0ZSB3YXMgbm90IGZvdW5kXG59O1xuXG5leHBvcnQgY29uc3QgZW5zdXJlQXR0cmlidXRlRXhpc3RzID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIGF0dHJpYnV0ZXM6IGFueVtdLFxuICAgIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0eVZhbHVlOiBzdHJpbmdcbikgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nQXR0cmlidXRlID0gZmluZEF0dHJpYnV0ZShhdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lKTtcblxuICAgIGlmIChleGlzdGluZ0F0dHJpYnV0ZSkge1xuICAgICAgICBtb2RpZnlFeGlzdGluZ0F0dHJpYnV0ZShqLCBleGlzdGluZ0F0dHJpYnV0ZSwgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhZGROZXdBdHRyaWJ1dGUoaiwgYXR0cmlidXRlcywgYXR0cmlidXRlTmFtZSwgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQXR0cmlidXRlID0gKGo6IEpTQ29kZXNoaWZ0LCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBwcm9wZXJ0eVZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gai5qc3hBdHRyaWJ1dGUoXG4gICAgICAgIGouanN4SWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lKSxcbiAgICAgICAgai5qc3hFeHByZXNzaW9uQ29udGFpbmVyKFxuICAgICAgICAgICAgai5vYmplY3RFeHByZXNzaW9uKFtqLnByb3BlcnR5KCdpbml0Jywgai5pZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGouaWRlbnRpZmllcihwcm9wZXJ0eVZhbHVlKSldKVxuICAgICAgICApXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRQcm9wZXJ0eVRvT2JqZWN0RXhwcmVzc2lvbiA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBleHByZXNzaW9uOiBhbnksXG4gICAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gICAgcHJvcGVydHlWYWx1ZTogc3RyaW5nXG4pID0+IHtcbiAgICBpZiAoZXhwcmVzc2lvbi50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgZXhwcmVzc2lvbi5wcm9wZXJ0aWVzLnB1c2goai5wcm9wZXJ0eSgnaW5pdCcsIGouaWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBqLmlkZW50aWZpZXIocHJvcGVydHlWYWx1ZSkpKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTWV0aG9kRm9yQ2xhc3NDb21wb25lbnQgPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICAgIGlzVHlwZVNjcmlwdDogYm9vbGVhbixcbiAgICB0eXBlTmFtZTogc3RyaW5nXG4pID0+IHtcbiAgICByZXR1cm4gai5tZXRob2REZWZpbml0aW9uKFxuICAgICAgICAnbWV0aG9kJyxcbiAgICAgICAgai5pZGVudGlmaWVyKG1ldGhvZE5hbWUpLFxuICAgICAgICBqLmZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBbai5pZGVudGlmaWVyKGlzVHlwZVNjcmlwdCA/IGBldmVudDogJHt0eXBlTmFtZX1gIDogJ2V2ZW50JyldLFxuICAgICAgICAgICAgai5ibG9ja1N0YXRlbWVudChbai5yZXR1cm5TdGF0ZW1lbnQoai5qc3hGcmFnbWVudChqLmpzeE9wZW5pbmdGcmFnbWVudCgpLCBqLmpzeENsb3NpbmdGcmFnbWVudCgpLCBbXSkpXSlcbiAgICAgICAgKVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQXJyb3dGdW5jdGlvbkZvckZ1bmN0aW9uYWxDb21wb25lbnQgPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgaXNUeXBlU2NyaXB0OiBib29sZWFuLFxuICAgIHR5cGVOYW1lOiBzdHJpbmdcbikgPT4ge1xuICAgIHJldHVybiBqLnZhcmlhYmxlRGVjbGFyYXRpb24oJ2NvbnN0JywgW1xuICAgICAgICBqLnZhcmlhYmxlRGVjbGFyYXRvcihcbiAgICAgICAgICAgIGouaWRlbnRpZmllcihmdW5jdGlvbk5hbWUpLFxuICAgICAgICAgICAgai5hcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgICBbai5pZGVudGlmaWVyKGAoZXZlbnQke2lzVHlwZVNjcmlwdCA/IGA6ICR7dHlwZU5hbWV9YCA6ICcnfSlgKV0sXG4gICAgICAgICAgICAgICAgai5ibG9ja1N0YXRlbWVudChbai5yZXR1cm5TdGF0ZW1lbnQoai5qc3hGcmFnbWVudChqLmpzeE9wZW5pbmdGcmFnbWVudCgpLCBqLmpzeENsb3NpbmdGcmFnbWVudCgpLCBbXSkpXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIF0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZE1ldGhvZFRvQ29tcG9uZW50ID0gKGo6IEpTQ29kZXNoaWZ0LCBwYXJlbnROb2RlOiBhbnksIG1ldGhvZDogYW55LCBpc0NsYXNzQ29tcG9uZW50OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGlzQ2xhc3NDb21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgY2xhc3NCb2R5ID0gcGFyZW50Tm9kZS5ub2RlLmJvZHkuYm9keTtcbiAgICAgICAgY2xhc3NCb2R5LnB1c2gobWV0aG9kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXJlbnRCb2R5ID0gcGFyZW50Tm9kZS5ub2RlLmJvZHkuYm9keSB8fCBwYXJlbnROb2RlLm5vZGUuYm9keTtcbiAgICAgICAgcGFyZW50Qm9keS51bnNoaWZ0KG1ldGhvZCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRJbXBvcnRlZE5hbWUgPSAoajogSlNDb2Rlc2hpZnQsIHJvb3Q6IGFueSwgb3JpZ2luYWxOYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgaW1wb3J0RGVjbGFyYXRpb24gPSByb290LmZpbmQoai5JbXBvcnREZWNsYXJhdGlvbiwge1xuICAgICAgICBzb3VyY2U6IHsgdmFsdWU6IHNvdXJjZSB9XG4gICAgfSk7XG5cbiAgICBpZiAoaW1wb3J0RGVjbGFyYXRpb24uc2l6ZSgpID4gMCkge1xuICAgICAgICBjb25zdCBzcGVjaWZpZXIgPSBpbXBvcnREZWNsYXJhdGlvbi5maW5kKGouSW1wb3J0U3BlY2lmaWVyLCB7XG4gICAgICAgICAgICBpbXBvcnRlZDogeyBuYW1lOiBvcmlnaW5hbE5hbWUgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc3BlY2lmaWVyLnNpemUoKSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsTmFtZSA9IHNwZWNpZmllci5nZXQoMCkubm9kZS5sb2NhbC5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsTmFtZTsgLy8gUmV0dXJuIHRoZSBzaGFkb3cgbmFtZSBvciB0aGUgb3JpZ2luYWwgbmFtZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7IC8vIFJldHVybiBudWxsIGlmIHRoZSBpbXBvcnQgaXMgbm90IGZvdW5kXG59O1xuXG5leHBvcnQgY29uc3QgYWRkU3RhdGVEZWNsYXJhdGlvbiA9IChqOiBKU0NvZGVzaGlmdCwgcGFyZW50Tm9kZTogYW55LCBzdGF0ZU5hbWU6IHN0cmluZywgaW5pdGlhbFZhbHVlOiBhbnkpID0+IHtcbiAgICBjb25zdCBzdGF0ZVByb3BlcnR5ID0gcGFyZW50Tm9kZS5ub2RlLmJvZHkuYm9keS5maW5kKFxuICAgICAgICAobm9kZTogYW55KSA9PiBub2RlLnR5cGUgPT09ICdDbGFzc1Byb3BlcnR5JyAmJiBub2RlLmtleS5uYW1lID09PSAnc3RhdGUnXG4gICAgKTtcblxuICAgIGlmIChzdGF0ZVByb3BlcnR5ICYmIHN0YXRlUHJvcGVydHkudmFsdWUudHlwZSA9PT0gJ09iamVjdEV4cHJlc3Npb24nKSB7XG4gICAgICAgIGNvbnN0IGhhc1N0YXRlID0gc3RhdGVQcm9wZXJ0eS52YWx1ZS5wcm9wZXJ0aWVzLnNvbWUoKHByb3A6IGFueSkgPT4gcHJvcC5rZXkubmFtZSA9PT0gc3RhdGVOYW1lKTtcbiAgICAgICAgaWYgKCFoYXNTdGF0ZSkge1xuICAgICAgICAgICAgc3RhdGVQcm9wZXJ0eS52YWx1ZS5wcm9wZXJ0aWVzLnB1c2goai5wcm9wZXJ0eSgnaW5pdCcsIGouaWRlbnRpZmllcihzdGF0ZU5hbWUpLCBpbml0aWFsVmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmVudE5vZGUubm9kZS5ib2R5LmJvZHkudW5zaGlmdChcbiAgICAgICAgICAgIGouY2xhc3NQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICBqLmlkZW50aWZpZXIoJ3N0YXRlJyksXG4gICAgICAgICAgICAgICAgai5vYmplY3RFeHByZXNzaW9uKFtqLnByb3BlcnR5KCdpbml0Jywgai5pZGVudGlmaWVyKHN0YXRlTmFtZSksIGluaXRpYWxWYWx1ZSldKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBoYXNKU1hBdHRyaWJ1dGUgPSAoXG4gICAgYXR0cmlidXRlczogKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSB8IHVuZGVmaW5lZCxcbiAgICBhdHRyaWJ1dGVOYW1lOiBzdHJpbmdcbik6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhdHRyaWJ1dGVzPy5zb21lKChhdHRyKSA9PiBhdHRyLnR5cGUgPT09ICdKU1hBdHRyaWJ1dGUnICYmIGF0dHIubmFtZS5uYW1lID09PSBhdHRyaWJ1dGVOYW1lKSB8fCBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRVc2VTdGF0ZURlY2xhcmF0aW9uID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIHBhcmVudE5vZGU6IGFueSxcbiAgICBzdGF0ZU5hbWU6IHN0cmluZyxcbiAgICBzZXRTdGF0ZU5hbWU6IHN0cmluZyxcbiAgICBpbml0aWFsVmFsdWU6IGFueSxcbiAgICBpc1R5cGVTY3JpcHQ6IGJvb2xlYW4sXG4gICAgdHlwZU5hbWU6IHN0cmluZ1xuKSA9PiB7XG4gICAgY29uc3QgdXNlU3RhdGVEZWNsYXJhdGlvbiA9IGoudmFyaWFibGVEZWNsYXJhdGlvbignY29uc3QnLCBbXG4gICAgICAgIGoudmFyaWFibGVEZWNsYXJhdG9yKFxuICAgICAgICAgICAgai5hcnJheVBhdHRlcm4oW2ouaWRlbnRpZmllcihzdGF0ZU5hbWUpLCBqLmlkZW50aWZpZXIoc2V0U3RhdGVOYW1lKV0pLFxuICAgICAgICAgICAgai5jYWxsRXhwcmVzc2lvbihqLmlkZW50aWZpZXIoYFJlYWN0LnVzZVN0YXRlJHtpc1R5cGVTY3JpcHQgPyBgPCR7dHlwZU5hbWV9PmAgOiAnJ31gKSwgW2luaXRpYWxWYWx1ZV0pXG4gICAgICAgIClcbiAgICBdKTtcbiAgICBwYXJlbnROb2RlLm5vZGUuYm9keS5ib2R5LnVuc2hpZnQodXNlU3RhdGVEZWNsYXJhdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkRXZlbnRBdHRyaWJ1dGUgPSAoajogSlNDb2Rlc2hpZnQsIGF0dHJpYnV0ZXM6IGFueVtdLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIGhhbmRsZXJOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBhdHRyaWJ1dGVzLnB1c2goXG4gICAgICAgIGouanN4QXR0cmlidXRlKGouanN4SWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lKSwgai5qc3hFeHByZXNzaW9uQ29udGFpbmVyKGouaWRlbnRpZmllcihoYW5kbGVyTmFtZSkpKVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkU3RhdGVBdHRyaWJ1dGUgPSAoajogSlNDb2Rlc2hpZnQsIGF0dHJpYnV0ZXM6IGFueVtdLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIHN0YXRlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgYXR0cmlidXRlcy5wdXNoKGouanN4QXR0cmlidXRlKGouanN4SWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lKSwgai5qc3hFeHByZXNzaW9uQ29udGFpbmVyKGouaWRlbnRpZmllcihzdGF0ZU5hbWUpKSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzTWV0aG9kID0gKGo6IEpTQ29kZXNoaWZ0LCBtZXRob2ROYW1lOiBzdHJpbmcsIHBhcmFtczogc3RyaW5nW10sIGJvZHlTdGF0ZW1lbnRzOiBhbnlbXSkgPT4ge1xuICAgIHJldHVybiBqLm1ldGhvZERlZmluaXRpb24oXG4gICAgICAgICdtZXRob2QnLFxuICAgICAgICBqLmlkZW50aWZpZXIobWV0aG9kTmFtZSksXG4gICAgICAgIGouZnVuY3Rpb25FeHByZXNzaW9uKFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmFtcy5tYXAoKHBhcmFtKSA9PiBqLmlkZW50aWZpZXIocGFyYW0pKSxcbiAgICAgICAgICAgIGouYmxvY2tTdGF0ZW1lbnQoYm9keVN0YXRlbWVudHMpXG4gICAgICAgIClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFycm93RnVuY3Rpb24gPSAoajogSlNDb2Rlc2hpZnQsIGZ1bmN0aW9uTmFtZTogc3RyaW5nLCBwYXJhbXM6IHN0cmluZ1tdLCBib2R5U3RhdGVtZW50czogYW55W10pID0+IHtcbiAgICByZXR1cm4gai52YXJpYWJsZURlY2xhcmF0aW9uKCdjb25zdCcsIFtcbiAgICAgICAgai52YXJpYWJsZURlY2xhcmF0b3IoXG4gICAgICAgICAgICBqLmlkZW50aWZpZXIoZnVuY3Rpb25OYW1lKSxcbiAgICAgICAgICAgIGouYXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcCgocGFyYW0pID0+IGouaWRlbnRpZmllcihwYXJhbSkpLFxuICAgICAgICAgICAgICAgIGouYmxvY2tTdGF0ZW1lbnQoYm9keVN0YXRlbWVudHMpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICBdKTtcbn07XG4iXSwibmFtZXMiOlsiYWRkQ29tbWVudFRvTWV0aG9kIiwiaiIsIm1ldGhvZCIsImNvbW1lbnRUZXh0IiwicGFyZW50VHlwZSIsIm1ldGhvZEJvZHkiLCJwbGFjZWhvbGRlclN0YXRlbWVudCIsImVuc3VyZUltcG9ydEV4aXN0cyIsInJvb3QiLCJpbXBvcnROYW1lIiwic291cmNlIiwiaW1wb3J0RGVjbGFyYXRpb24iLCJzcGVjaWZpZXJzIiwic3BlY2lmaWVyIiwibmV3SW1wb3J0IiwiZmluZFBhcmVudENvbXBvbmVudCIsInBhdGgiLCJwYXJlbnROb2RlIiwiaXNDbGFzc0NvbXBvbmVudCIsImlzRnVuY3Rpb25hbENvbXBvbmVudCIsImdlbmVyYXRlVW5pcXVlTmFtZSIsImJhc2VOYW1lIiwiZXhpc3RpbmdOYW1lcyIsIm5hbWUiLCJjb3VudGVyIiwiZmluZEF0dHJpYnV0ZSIsImF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0ciIsImRvZXNBdHRyaWJ1dGVFeGlzdCIsIm1vZGlmeUV4aXN0aW5nQXR0cmlidXRlIiwiZXhpc3RpbmdBdHRyaWJ1dGUiLCJwcm9wZXJ0eU5hbWUiLCJwcm9wZXJ0eVZhbHVlIiwiZXhwcmVzc2lvbiIsImFkZE5ld0F0dHJpYnV0ZSIsIm5ld0F0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsImF0dHJpYnV0ZUluZGV4IiwiZW5zdXJlQXR0cmlidXRlRXhpc3RzIiwiY3JlYXRlQXR0cmlidXRlIiwiYWRkUHJvcGVydHlUb09iamVjdEV4cHJlc3Npb24iLCJjcmVhdGVNZXRob2RGb3JDbGFzc0NvbXBvbmVudCIsIm1ldGhvZE5hbWUiLCJpc1R5cGVTY3JpcHQiLCJ0eXBlTmFtZSIsImNyZWF0ZUFycm93RnVuY3Rpb25Gb3JGdW5jdGlvbmFsQ29tcG9uZW50IiwiZnVuY3Rpb25OYW1lIiwiYWRkTWV0aG9kVG9Db21wb25lbnQiLCJmaW5kSW1wb3J0ZWROYW1lIiwib3JpZ2luYWxOYW1lIiwiYWRkU3RhdGVEZWNsYXJhdGlvbiIsInN0YXRlTmFtZSIsImluaXRpYWxWYWx1ZSIsInN0YXRlUHJvcGVydHkiLCJub2RlIiwicHJvcCIsImhhc0pTWEF0dHJpYnV0ZSIsImFkZFVzZVN0YXRlRGVjbGFyYXRpb24iLCJzZXRTdGF0ZU5hbWUiLCJ1c2VTdGF0ZURlY2xhcmF0aW9uIiwiYWRkRXZlbnRBdHRyaWJ1dGUiLCJoYW5kbGVyTmFtZSIsImFkZFN0YXRlQXR0cmlidXRlIiwiY3JlYXRlQ2xhc3NNZXRob2QiLCJwYXJhbXMiLCJib2R5U3RhdGVtZW50cyIsInBhcmFtIiwiY3JlYXRlQXJyb3dGdW5jdGlvbiJdLCJtYXBwaW5ncyI6ImdGQVNPLE1BQU1BLEVBQXFCLENBQzlCQyxFQUNBQyxFQUNBQyxFQUNBQyxJQUNDLENBQ0QsR0FBSUEsSUFBZSxTQUNYLEdBQUFGLEVBQU8sT0FBUyxHQUFLQSxFQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxLQUFNLENBQ3BELE1BQU1HLEVBQWFILEVBQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLEtBQUssS0FFakQsR0FBSUcsRUFBWSxDQUVOLE1BQUFDLEVBQXVCTCxFQUFFLGlCQUMvQkssRUFBcUIsU0FBVyxDQUFDTCxFQUFFLGFBQWEsSUFBSUUsQ0FBVyxHQUFHLENBQUMsRUFHbkVFLEVBQVcsUUFBUUMsQ0FBb0IsQ0FDM0MsQ0FDSixNQUNHLENBQ0MsSUFBQUQsRUFRSixHQU5JSCxFQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssY0FBZ0JBLEVBQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxhQUFhLENBQUMsRUFBRSxLQUN6REcsRUFBQUgsRUFBTyxJQUFJLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUNuREEsRUFBTyxJQUFJLENBQUMsRUFBRSxLQUFLLE9B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