@progress/kendo-react-grid
Version: 
React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package
10 lines (9 loc) • 16.4 kB
JavaScript
/**
 * @license
 *-------------------------------------------------------------------------------------------
 * Copyright © 2025 Progress Software Corporation. All rights reserved.
 * Licensed under commercial license. See LICENSE.md in the package root for more information
 *-------------------------------------------------------------------------------------------
 */
;const n=require("./utils.js");function f(u,m){const e=m.jscodeshift,r=e(u.source),a=u.path.endsWith(".ts")||u.path.endsWith(".tsx");let E=!1;const x=new Set;r.find(e.Identifier).forEach(d=>{x.add(d.node.name)});const i=n.generateUniqueName("handleGroupExpand",x),g=n.findImportedName(e,r,"Grid","@progress/kendo-react-grid")||"Grid";return r.find(e.JSXElement,{openingElement:{name:{name:g}}}).forEach(d=>{const t=d.node.openingElement.attributes;if(!n.hasJSXAttribute(t,"groupable"))return;const s=t==null?void 0:t.find(o=>o.type==="JSXAttribute"&&o.name.name==="onExpandChange"),c=s!=null&&s.value?e(s.value).toSource():"No value provided";n.removeAttribute(t,"onExpandChange"),E=!0;const{isClassComponent:h,isFunctionalComponent:l,parentNode:p}=n.findParentComponent(e,d);if(h){if(n.addStateDeclaration(e,p,"groupExpand",e.arrayExpression([])),n.hasJSXAttribute(t,"groupExpand")||n.addStateAttribute(e,t,"groupExpand","this.state.groupExpand"),!n.hasJSXAttribute(t,"onGroupExpandChange")){n.addEventAttribute(e,t,"onGroupExpandChange",`this.${i}`);const o=n.createClassMethod(e,i,[`event${a?": GridGroupExpandChangeEvent":""}`],[e.expressionStatement(e.callExpression(e.memberExpression(e.thisExpression(),e.identifier("setState")),[e.objectExpression([e.property("init",e.identifier("groupExpand"),e.memberExpression(e.identifier("event"),e.identifier("groupExpand")))])]))]);n.addCommentToMethod(e,e(o),`Original onExpandChange value: ${c}`,"class"),n.addMethodToComponent(e,p,o,!0)}}else if(l&&(n.addUseStateDeclaration(e,p,"groupExpand","setGroupExpand",e.arrayExpression([]),a,"GroupExpandDescriptor[]"),n.hasJSXAttribute(t,"groupExpand")||n.addStateAttribute(e,t,"groupExpand","groupExpand"),!n.hasJSXAttribute(t,"onGroupExpandChange"))){n.addEventAttribute(e,t,"onGroupExpandChange",`${i}`);const o=n.createArrowFunction(e,`${i}`,[`(event${a?": GridGroupExpandChangeEvent":""})`],[e.expressionStatement(e.callExpression(e.identifier("setGroupExpand"),[e.memberExpression(e.identifier("event"),e.identifier("groupExpand"))]))]);n.addCommentToMethod(e,e(o),`Original onExpandChange value: ${c}`,"function"),n.addMethodToComponent(e,p,o,!1)}}),E&&a&&(n.ensureImportExists(e,r,"GroupExpandDescriptor","@progress/kendo-react-data-tools"),n.ensureImportExists(e,r,"GridGroupExpandChangeEvent","@progress/kendo-react-grid")),r.toSource()}module.exports=f;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtZXhwYW5kLXN0YXRlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL2NvZGVtb2RzL3YxMS9ncm91cC1leHBhbmQtc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBJLCBGaWxlSW5mbywgSlNDb2Rlc2hpZnQsIEpTWEF0dHJpYnV0ZSwgSlNYU3ByZWFkQXR0cmlidXRlIH0gZnJvbSAnanNjb2Rlc2hpZnQnO1xuaW1wb3J0IHtcbiAgICBhZGRNZXRob2RUb0NvbXBvbmVudCxcbiAgICByZW1vdmVBdHRyaWJ1dGUsXG4gICAgZmluZFBhcmVudENvbXBvbmVudCxcbiAgICBnZW5lcmF0ZVVuaXF1ZU5hbWUsXG4gICAgZW5zdXJlSW1wb3J0RXhpc3RzLFxuICAgIGFkZEV2ZW50QXR0cmlidXRlLFxuICAgIGFkZFN0YXRlQXR0cmlidXRlLFxuICAgIGFkZFN0YXRlRGVjbGFyYXRpb24sXG4gICAgYWRkVXNlU3RhdGVEZWNsYXJhdGlvbixcbiAgICBmaW5kSW1wb3J0ZWROYW1lLFxuICAgIGNyZWF0ZUNsYXNzTWV0aG9kLFxuICAgIGNyZWF0ZUFycm93RnVuY3Rpb24sXG4gICAgaGFzSlNYQXR0cmlidXRlLFxuICAgIGFkZENvbW1lbnRUb01ldGhvZFxufSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGZpbGVJbmZvOiBGaWxlSW5mbywgYXBpOiBBUEkpIHtcbiAgICBjb25zdCBqOiBKU0NvZGVzaGlmdCA9IGFwaS5qc2NvZGVzaGlmdDtcbiAgICBjb25zdCByb290ID0gaihmaWxlSW5mby5zb3VyY2UpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaXMgVHlwZVNjcmlwdCBvciBUU1hcbiAgICBjb25zdCBpc1R5cGVTY3JpcHQgPSBmaWxlSW5mby5wYXRoLmVuZHNXaXRoKCcudHMnKSB8fCBmaWxlSW5mby5wYXRoLmVuZHNXaXRoKCcudHN4Jyk7XG5cbiAgICBsZXQgYWRkSW1wb3J0cyA9IGZhbHNlO1xuICAgIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICByb290LmZpbmQoai5JZGVudGlmaWVyKS5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGV4aXN0aW5nTmFtZXMuYWRkKHBhdGgubm9kZS5uYW1lKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGJhc2VOYW1lID0gJ2hhbmRsZUdyb3VwRXhwYW5kJztcbiAgICBjb25zdCB1bmlxdWVOYW1lID0gZ2VuZXJhdGVVbmlxdWVOYW1lKGJhc2VOYW1lLCBleGlzdGluZ05hbWVzKTtcblxuICAgIC8vIER5bmFtaWNhbGx5IHJlc29sdmUgdGhlIGltcG9ydGVkIG5hbWUgZm9yIGBHcmlkYFxuICAgIGNvbnN0IGdyaWROYW1lID0gZmluZEltcG9ydGVkTmFtZShqLCByb290LCAnR3JpZCcsICdAcHJvZ3Jlc3Mva2VuZG8tcmVhY3QtZ3JpZCcpIHx8ICdHcmlkJztcblxuICAgIC8vIEZpbmQgYWxsIEpTWEVsZW1lbnRzIHdpdGggdGhlIG5hbWUgb2YgdGhlIHJlc29sdmVkIGBHcmlkYCBjb21wb25lbnRcbiAgICBjb25zdCBncmlkRWxlbWVudHMgPSByb290LmZpbmQoai5KU1hFbGVtZW50LCB7IG9wZW5pbmdFbGVtZW50OiB7IG5hbWU6IHsgbmFtZTogZ3JpZE5hbWUgfSB9IH0pO1xuXG4gICAgZ3JpZEVsZW1lbnRzLmZvckVhY2goKGdyaWRQYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBncmlkUGF0aC5ub2RlLm9wZW5pbmdFbGVtZW50LmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGBncm91cGFibGVgIGF0dHJpYnV0ZSBleGlzdHNcbiAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ2dyb3VwYWJsZScpKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIFNraXAgdGhpcyBHcmlkIGlmIGBncm91cGFibGVgIGlzIG5vdCBwcmVzZW50XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5kIHRoZSBgb25FeHBhbmRDaGFuZ2VgIGF0dHJpYnV0ZVxuICAgICAgICBjb25zdCBvbkV4cGFuZENoYW5nZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXM/LmZpbmQoXG4gICAgICAgICAgICAoYXR0cikgPT4gYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWUubmFtZSA9PT0gJ29uRXhwYW5kQ2hhbmdlJ1xuICAgICAgICApIGFzIEpTWEF0dHJpYnV0ZTtcblxuICAgICAgICAvLyBDb3B5IHRoZSB2YWx1ZSBvZiBgb25FeHBhbmRDaGFuZ2VgIGFzIGEgY29tbWVudFxuICAgICAgICBjb25zdCBvbkV4cGFuZENoYW5nZVZhbHVlID0gb25FeHBhbmRDaGFuZ2VBdHRyaWJ1dGU/LnZhbHVlXG4gICAgICAgICAgICA/IGoob25FeHBhbmRDaGFuZ2VBdHRyaWJ1dGUudmFsdWUpLnRvU291cmNlKClcbiAgICAgICAgICAgIDogJ05vIHZhbHVlIHByb3ZpZGVkJztcblxuICAgICAgICAvLyBSZW1vdmUgdGhlIGBvbkV4cGFuZENoYW5nZWAgYXR0cmlidXRlXG4gICAgICAgIHJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVzIGFzIChKU1hBdHRyaWJ1dGUgfCBKU1hTcHJlYWRBdHRyaWJ1dGUpW10sICdvbkV4cGFuZENoYW5nZScpO1xuICAgICAgICBhZGRJbXBvcnRzID0gdHJ1ZTtcblxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIHBhcmVudCBjb21wb25lbnQgaXMgYSBjbGFzcyBvciBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICAgICAgICBjb25zdCB7IGlzQ2xhc3NDb21wb25lbnQsIGlzRnVuY3Rpb25hbENvbXBvbmVudCwgcGFyZW50Tm9kZSB9ID0gZmluZFBhcmVudENvbXBvbmVudChqLCBncmlkUGF0aCk7XG5cbiAgICAgICAgaWYgKGlzQ2xhc3NDb21wb25lbnQpIHtcbiAgICAgICAgICAgIC8vIEFkZCBgZ3JvdXBFeHBhbmRgIHRvIHRoZSBjbGFzcyBjb21wb25lbnQncyBzdGF0ZVxuICAgICAgICAgICAgYWRkU3RhdGVEZWNsYXJhdGlvbihqLCBwYXJlbnROb2RlLCAnZ3JvdXBFeHBhbmQnLCBqLmFycmF5RXhwcmVzc2lvbihbXSkpO1xuXG4gICAgICAgICAgICAvLyBBZGQgYGdyb3VwRXhwYW5kYCBhbmQgYG9uR3JvdXBFeHBhbmRDaGFuZ2VgIGF0dHJpYnV0ZXNcbiAgICAgICAgICAgIGlmICghaGFzSlNYQXR0cmlidXRlKGF0dHJpYnV0ZXMsICdncm91cEV4cGFuZCcpKSB7XG4gICAgICAgICAgICAgICAgYWRkU3RhdGVBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSxcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwRXhwYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RoaXMuc3RhdGUuZ3JvdXBFeHBhbmQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ29uR3JvdXBFeHBhbmRDaGFuZ2UnKSkge1xuICAgICAgICAgICAgICAgIGFkZEV2ZW50QXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICBqLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIGFzIChKU1hBdHRyaWJ1dGUgfCBKU1hTcHJlYWRBdHRyaWJ1dGUpW10sXG4gICAgICAgICAgICAgICAgICAgICdvbkdyb3VwRXhwYW5kQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgYHRoaXMuJHt1bmlxdWVOYW1lfWBcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBhZGQgYGhhbmRsZUdyb3VwRXhwYW5kYCBtZXRob2RcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVHcm91cEV4cGFuZE1ldGhvZCA9IGNyZWF0ZUNsYXNzTWV0aG9kKFxuICAgICAgICAgICAgICAgICAgICBqLFxuICAgICAgICAgICAgICAgICAgICB1bmlxdWVOYW1lLFxuICAgICAgICAgICAgICAgICAgICBbYGV2ZW50JHtpc1R5cGVTY3JpcHQgPyAnOiBHcmlkR3JvdXBFeHBhbmRDaGFuZ2VFdmVudCcgOiAnJ31gXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgai5leHByZXNzaW9uU3RhdGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGouY2FsbEV4cHJlc3Npb24oai5tZW1iZXJFeHByZXNzaW9uKGoudGhpc0V4cHJlc3Npb24oKSwgai5pZGVudGlmaWVyKCdzZXRTdGF0ZScpKSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLm9iamVjdEV4cHJlc3Npb24oW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai5wcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5pdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai5pZGVudGlmaWVyKCdncm91cEV4cGFuZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGoubWVtYmVyRXhwcmVzc2lvbihqLmlkZW50aWZpZXIoJ2V2ZW50JyksIGouaWRlbnRpZmllcignZ3JvdXBFeHBhbmQnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgYG9uRXhwYW5kQ2hhbmdlYCB2YWx1ZSBhcyBhIGNvbW1lbnQgaW4gdGhlIG1ldGhvZFxuICAgICAgICAgICAgICAgIGFkZENvbW1lbnRUb01ldGhvZChcbiAgICAgICAgICAgICAgICAgICAgaixcbiAgICAgICAgICAgICAgICAgICAgaihoYW5kbGVHcm91cEV4cGFuZE1ldGhvZCksXG4gICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBvbkV4cGFuZENoYW5nZSB2YWx1ZTogJHtvbkV4cGFuZENoYW5nZVZhbHVlfWAsXG4gICAgICAgICAgICAgICAgICAgICdjbGFzcydcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgYWRkTWV0aG9kVG9Db21wb25lbnQoaiwgcGFyZW50Tm9kZSwgaGFuZGxlR3JvdXBFeHBhbmRNZXRob2QsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb25hbENvbXBvbmVudCkge1xuICAgICAgICAgICAgLy8gQWRkIGBSZWFjdC51c2VTdGF0ZWAgZm9yIGBncm91cEV4cGFuZGBcbiAgICAgICAgICAgIGFkZFVzZVN0YXRlRGVjbGFyYXRpb24oXG4gICAgICAgICAgICAgICAgaixcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgICdncm91cEV4cGFuZCcsXG4gICAgICAgICAgICAgICAgJ3NldEdyb3VwRXhwYW5kJyxcbiAgICAgICAgICAgICAgICBqLmFycmF5RXhwcmVzc2lvbihbXSksXG4gICAgICAgICAgICAgICAgaXNUeXBlU2NyaXB0LFxuICAgICAgICAgICAgICAgICdHcm91cEV4cGFuZERlc2NyaXB0b3JbXSdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFkZCBgZ3JvdXBFeHBhbmRgIGFuZCBgb25Hcm91cEV4cGFuZENoYW5nZWAgYXR0cmlidXRlc1xuICAgICAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ2dyb3VwRXhwYW5kJykpIHtcbiAgICAgICAgICAgICAgICBhZGRTdGF0ZUF0dHJpYnV0ZShqLCBhdHRyaWJ1dGVzIGFzIChKU1hBdHRyaWJ1dGUgfCBKU1hTcHJlYWRBdHRyaWJ1dGUpW10sICdncm91cEV4cGFuZCcsICdncm91cEV4cGFuZCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc0pTWEF0dHJpYnV0ZShhdHRyaWJ1dGVzLCAnb25Hcm91cEV4cGFuZENoYW5nZScpKSB7XG4gICAgICAgICAgICAgICAgYWRkRXZlbnRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSxcbiAgICAgICAgICAgICAgICAgICAgJ29uR3JvdXBFeHBhbmRDaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICBgJHt1bmlxdWVOYW1lfWBcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBhZGQgYGhhbmRsZUdyb3VwRXhwYW5kYCBmdW5jdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUdyb3VwRXhwYW5kRnVuY3Rpb24gPSBjcmVhdGVBcnJvd0Z1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICBqLFxuICAgICAgICAgICAgICAgICAgICBgJHt1bmlxdWVOYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIFtgKGV2ZW50JHtpc1R5cGVTY3JpcHQgPyAnOiBHcmlkR3JvdXBFeHBhbmRDaGFuZ2VFdmVudCcgOiAnJ30pYF0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGouZXhwcmVzc2lvblN0YXRlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLmNhbGxFeHByZXNzaW9uKGouaWRlbnRpZmllcignc2V0R3JvdXBFeHBhbmQnKSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLm1lbWJlckV4cHJlc3Npb24oai5pZGVudGlmaWVyKCdldmVudCcpLCBqLmlkZW50aWZpZXIoJ2dyb3VwRXhwYW5kJykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGBvbkV4cGFuZENoYW5nZWAgdmFsdWUgYXMgYSBjb21tZW50IGluIHRoZSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIGFkZENvbW1lbnRUb01ldGhvZChcbiAgICAgICAgICAgICAgICAgICAgaixcbiAgICAgICAgICAgICAgICAgICAgaihoYW5kbGVHcm91cEV4cGFuZEZ1bmN0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsIG9uRXhwYW5kQ2hhbmdlIHZhbHVlOiAke29uRXhwYW5kQ2hhbmdlVmFsdWV9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBhZGRNZXRob2RUb0NvbXBvbmVudChqLCBwYXJlbnROb2RlLCBoYW5kbGVHcm91cEV4cGFuZEZ1bmN0aW9uLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChhZGRJbXBvcnRzICYmIGlzVHlwZVNjcmlwdCkge1xuICAgICAgICAvLyBFbnN1cmUgVHlwZVNjcmlwdCBpbXBvcnRzXG4gICAgICAgIGVuc3VyZUltcG9ydEV4aXN0cyhqLCByb290LCAnR3JvdXBFeHBhbmREZXNjcmlwdG9yJywgJ0Bwcm9ncmVzcy9rZW5kby1yZWFjdC1kYXRhLXRvb2xzJyk7XG4gICAgICAgIGVuc3VyZUltcG9ydEV4aXN0cyhqLCByb290LCAnR3JpZEdyb3VwRXhwYW5kQ2hhbmdlRXZlbnQnLCAnQHByb2dyZXNzL2tlbmRvLXJlYWN0LWdyaWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdC50b1NvdXJjZSgpO1xufVxuIl0sIm5hbWVzIjpbImdyb3VwRXhwYW5kU3RhdGUiLCJmaWxlSW5mbyIsImFwaSIsImoiLCJyb290IiwiaXNUeXBlU2NyaXB0IiwiYWRkSW1wb3J0cyIsImV4aXN0aW5nTmFtZXMiLCJwYXRoIiwidW5pcXVlTmFtZSIsImdlbmVyYXRlVW5pcXVlTmFtZSIsImdyaWROYW1lIiwiZmluZEltcG9ydGVkTmFtZSIsImdyaWRQYXRoIiwiYXR0cmlidXRlcyIsImhhc0pTWEF0dHJpYnV0ZSIsIm9uRXhwYW5kQ2hhbmdlQXR0cmlidXRlIiwiYXR0ciIsIm9uRXhwYW5kQ2hhbmdlVmFsdWUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJpc0NsYXNzQ29tcG9uZW50IiwiaXNGdW5jdGlvbmFsQ29tcG9uZW50IiwicGFyZW50Tm9kZSIsImZpbmRQYXJlbnRDb21wb25lbnQiLCJhZGRTdGF0ZURlY2xhcmF0aW9uIiwiYWRkU3RhdGVBdHRyaWJ1dGUiLCJhZGRFdmVudEF0dHJpYnV0ZSIsImhhbmRsZUdyb3VwRXhwYW5kTWV0aG9kIiwiY3JlYXRlQ2xhc3NNZXRob2QiLCJhZGRDb21tZW50VG9NZXRob2QiLCJhZGRNZXRob2RUb0NvbXBvbmVudCIsImFkZFVzZVN0YXRlRGVjbGFyYXRpb24iLCJoYW5kbGVHcm91cEV4cGFuZEZ1bmN0aW9uIiwiY3JlYXRlQXJyb3dGdW5jdGlvbiIsImVuc3VyZUltcG9ydEV4aXN0cyJdLCJtYXBwaW5ncyI6IjJDQWtCQSxTQUFBQSxFQUF5QkMsRUFBb0JDLEVBQVUsQ0FDbkQsTUFBTUMsRUFBaUJELEVBQUksWUFDckJFLEVBQU9ELEVBQUVGLEVBQVMsTUFBTSxFQUd4QkksRUFBZUosRUFBUyxLQUFLLFNBQVMsS0FBSyxHQUFLQSxFQUFTLEtBQUssU0FBUyxNQUFNLEVBRW5GLElBQUlLLEVBQWEsR0FDWCxNQUFB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