@payloadcms/db-postgres 0.3.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +7 -5
- package/dist/createMigration.js +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/migrate.js +2 -2
- package/dist/migrateDown.js +4 -2
- package/dist/migrateFresh.d.ts +3 -1
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +14 -12
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +3 -8
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +9 -1
- package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.js +25 -22
- package/dist/transform/read/traverseFields.d.ts +5 -5
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +38 -23
- package/dist/types.d.ts +12 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/reference.d.ts +0 -2
- package/dist/reference.d.ts.map +0 -1
- package/dist/reference.js +0 -77
@@ -162,6 +162,14 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
|
|
162
162
|
NULL`);
|
163
163
|
break;
|
164
164
|
}
|
165
|
+
if (operator === 'equals' && queryValue === null) {
|
166
|
+
constraints.push((0, _drizzleorm.isNull)(rawColumn || table[columnName]));
|
167
|
+
break;
|
168
|
+
}
|
169
|
+
if (operator === 'not_equals' && queryValue === null) {
|
170
|
+
constraints.push((0, _drizzleorm.isNotNull)(rawColumn || table[columnName]));
|
171
|
+
break;
|
172
|
+
}
|
165
173
|
constraints.push(_operatorMap.operatorMap[queryOperator](rawColumn || table[columnName], queryValue));
|
166
174
|
}
|
167
175
|
}
|
@@ -183,4 +191,4 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
|
|
183
191
|
return result;
|
184
192
|
}
|
185
193
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3BhcnNlUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBPcGVyYXRvciwgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGlsaWtlLCBpc05vdE51bGwsIGlzTnVsbCwgbmUsIG5vdEluQXJyYXksIG9yLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IHZhbGlkT3BlcmF0b3JzIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRRdWVyeUpvaW5BbGlhc2VzLCBCdWlsZFF1ZXJ5Sm9pbnMgfSBmcm9tICcuL2J1aWxkUXVlcnknXG5cbmltcG9ydCB7IGJ1aWxkQW5kT3JDb25kaXRpb25zIH0gZnJvbSAnLi9idWlsZEFuZE9yQ29uZGl0aW9ucydcbmltcG9ydCB7IGNyZWF0ZUpTT05RdWVyeSB9IGZyb20gJy4vY3JlYXRlSlNPTlF1ZXJ5J1xuaW1wb3J0IHsgY29udmVydFBhdGhUb0pTT05UcmF2ZXJzYWwgfSBmcm9tICcuL2NyZWF0ZUpTT05RdWVyeS9jb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCdcbmltcG9ydCB7IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggfSBmcm9tICcuL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgnXG5pbXBvcnQgeyBvcGVyYXRvck1hcCB9IGZyb20gJy4vb3BlcmF0b3JNYXAnXG5pbXBvcnQgeyBzYW5pdGl6ZVF1ZXJ5VmFsdWUgfSBmcm9tICcuL3Nhbml0aXplUXVlcnlWYWx1ZSdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGpvaW5BbGlhc2VzOiBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXNcbiAgam9pbnM6IEJ1aWxkUXVlcnlKb2luc1xuICBsb2NhbGU6IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQYXJhbXMoe1xuICBhZGFwdGVyLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxTUUw+IHtcbiAgbGV0IHJlc3VsdDogU1FMXG4gIGNvbnN0IGNvbnN0cmFpbnRzOiBTUUxbXSA9IFtdXG5cbiAgaWYgKHR5cGVvZiB3aGVyZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDApIHtcbiAgICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgd2hlcmVLZXkgaXMgYW4gQU5ELCBPUiwgb3IgYSBzY2hlbWEgcGF0aFxuICAgIGZvciAoY29uc3QgcmVsYXRpb25PclBhdGggb2YgT2JqZWN0LmtleXMod2hlcmUpKSB7XG4gICAgICBpZiAocmVsYXRpb25PclBhdGgpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgIGxldCBjb25kaXRpb25PcGVyYXRvcjogJ2FuZCcgfCAnb3InXG4gICAgICAgIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnYW5kJykge1xuICAgICAgICAgIGNvbmRpdGlvbk9wZXJhdG9yID0gJ2FuZCdcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnb3InKSB7XG4gICAgICAgICAgY29uZGl0aW9uT3BlcmF0b3IgPSAnb3InXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IGJ1aWx0Q29uZGl0aW9ucyA9IGF3YWl0IGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChidWlsdENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvck1hcFtjb25kaXRpb25PcGVyYXRvcl0ocmVzdWx0LCAuLi5idWlsdENvbmRpdGlvbnMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvck1hcFtjb25kaXRpb25PcGVyYXRvcl0oLi4uYnVpbHRDb25kaXRpb25zKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJdCdzIGEgcGF0aCAtIGFuZCB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgY29tcGFyaXNvbnMgb24gYSBzaW5nbGUgcGF0aC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZSAtIHRpdGxlIGxpa2UgJ3Rlc3QnIGFuZCB0aXRsZSBub3QgZXF1YWwgdG8gJ3Rlc3RlcidcbiAgICAgICAgICAvLyBTbyB3ZSBuZWVkIHRvIGxvb3Agb24ga2V5cyBhZ2FpbiBoZXJlIHRvIGhhbmRsZSBlYWNoIG9wZXJhdG9yIGluZGVwZW5kZW50bHlcbiAgICAgICAgICBjb25zdCBwYXRoT3BlcmF0b3JzID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3BlcmF0b3JzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcGVyYXRvciBvZiBPYmplY3Qua2V5cyhwYXRoT3BlcmF0b3JzKSkge1xuICAgICAgICAgICAgICBpZiAodmFsaWRPcGVyYXRvcnMuaW5jbHVkZXMob3BlcmF0b3IgYXMgT3BlcmF0b3IpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBxdWVyeUNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHBhdGhTZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgIHJhd0NvbHVtbixcbiAgICAgICAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogcmVsYXRpb25PclBhdGgsXG4gICAgICAgICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiByZWxhdGlvbk9yUGF0aC5yZXBsYWNlKC9fXy9nLCAnLicpLnNwbGl0KCcuJyksXG4gICAgICAgICAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVtvcGVyYXRvcl1cblxuICAgICAgICAgICAgICAgIHF1ZXJ5Q29uc3RyYWludHMuZm9yRWFjaCgoeyBjb2x1bW5OYW1lOiBjb2wsIHRhYmxlOiBjb25zdHJhaW50VGFibGUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluZGV4T2YoJyUnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2gob3BlcmF0b3JNYXAubGlrZShjb25zdHJhaW50VGFibGVbY29sXSwgdmFsdWUpKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChvcGVyYXRvck1hcC5lcXVhbHMoY29uc3RyYWludFRhYmxlW2NvbF0sIHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgWydqc29uJywgJ3JpY2hUZXh0J10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocGF0aFNlZ21lbnRzKSAmJlxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICBzZWdtZW50cy51bnNoaWZ0KHRhYmxlW2NvbHVtbk5hbWVdLm5hbWUpXG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNyZWF0ZUpTT05RdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdEFzQXJyYXk6IFsnY2hpbGRyZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdFJvb3RBc0FycmF5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChzcWwucmF3KGpzb25RdWVyeSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsKHBhdGhTZWdtZW50cylcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHsgb3BlcmF0b3I6ICdpbGlrZScsIHdpbGRjYXJkOiAnJScgfSxcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiB7IG9wZXJhdG9yOiAnPScsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgICBleGlzdHM6IHsgb3BlcmF0b3I6IHZhbCA9PT0gdHJ1ZSA/ICdpcyBub3QgbnVsbCcgOiAnaXMgbnVsbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgbGlrZTogeyBvcGVyYXRvcjogJ2xpa2UnLCB3aWxkY2FyZDogJyUnIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdF9lcXVhbHM6IHsgb3BlcmF0b3I6ICc8PicsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gYCcke29wZXJhdG9yS2V5c1tvcGVyYXRvcl0ud2lsZGNhcmR9JHt2YWx9JHtvcGVyYXRvcktleXNbb3BlcmF0b3JdLndpbGRjYXJkfSdgXG5cbiAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2V4aXN0cycpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSAnJ1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWwucmF3KFxuICAgICAgICAgICAgICAgICAgICAgIGAke3RhYmxlW2NvbHVtbk5hbWVdLm5hbWV9JHtqc29uUXVlcnl9ICR7b3BlcmF0b3JLZXlzW29wZXJhdG9yXS5vcGVyYXRvcn0gJHtmb3JtYXR0ZWRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGdldE5vdE51bGxDb2x1bW5CeVZhbHVlKHZhbClcbiAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goaXNOb3ROdWxsKHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFt7IHBhdGg6IHJlbGF0aW9uT3JQYXRoIH1dKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdsaWtlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgYW5kKC4uLnZhbC5zcGxpdCgnICcpLm1hcCgod29yZCkgPT4gaWxpa2UodGFibGVbY29sdW1uTmFtZV0sIGAlJHt3b3JkfSVgKSkpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRRdWVyeVZhbHVlID0gc2FuaXRpemVRdWVyeVZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbk9yUGF0aCxcbiAgICAgICAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKHNhbml0aXplZFF1ZXJ5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcGVyYXRvcjogcXVlcnlPcGVyYXRvciwgdmFsdWU6IHF1ZXJ5VmFsdWUgfSA9IHNhbml0aXplZFF1ZXJ5VmFsdWVcblxuICAgICAgICAgICAgICAgIGlmIChxdWVyeU9wZXJhdG9yID09PSAnbm90X2VxdWFscycgJiYgcXVlcnlWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgb3IoXG4gICAgICAgICAgICAgICAgICAgICAgaXNOdWxsKHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSksXG4gICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuICAgICAgICAgICAgICAgICAgICAgIG5lPGFueT4ocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSAmJlxuICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShxdWVyeVZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICdub3RfaW4nXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWxgJHtub3RJbkFycmF5KHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKX0gT1JcbiAgICAgICAgICAgICAgICAgICAgJHt0YWJsZVtjb2x1bW5OYW1lXX1cbiAgICAgICAgICAgICAgICAgICAgSVNcbiAgICAgICAgICAgICAgICAgICAgTlVMTGAsXG4gICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTWFwW3F1ZXJ5T3BlcmF0b3JdKHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb25zdHJhaW50cy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmVzdWx0ID0gYW5kKHJlc3VsdCwgLi4uY29uc3RyYWludHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGFuZCguLi5jb25zdHJhaW50cylcbiAgICB9XG4gIH1cbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA9PT0gMSAmJiAhcmVzdWx0KSB7XG4gICAgO1tyZXN1bHRdID0gY29uc3RyYWludHNcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVBhcmFtcyIsImFkYXB0ZXIiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwic2VsZWN0RmllbGRzIiwidGFibGVOYW1lIiwid2hlcmUiLCJyZXN1bHQiLCJjb25zdHJhaW50cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJyZWxhdGlvbk9yUGF0aCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbk9wZXJhdG9yIiwidG9Mb3dlckNhc2UiLCJBcnJheSIsImlzQXJyYXkiLCJidWlsdENvbmRpdGlvbnMiLCJidWlsZEFuZE9yQ29uZGl0aW9ucyIsIm9wZXJhdG9yTWFwIiwicGF0aE9wZXJhdG9ycyIsIm9wZXJhdG9yIiwidmFsaWRPcGVyYXRvcnMiLCJpbmNsdWRlcyIsImNvbHVtbk5hbWUiLCJxdWVyeUNvbnN0cmFpbnRzIiwiZmllbGQiLCJnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSIsInBhdGhTZWdtZW50cyIsInJhd0NvbHVtbiIsInRhYmxlIiwiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImNvbGxlY3Rpb25QYXRoIiwicmVwbGFjZSIsInNwbGl0IiwidmFsIiwiZm9yRWFjaCIsImNvbCIsImNvbnN0cmFpbnRUYWJsZSIsInZhbHVlIiwiaW5kZXhPZiIsInB1c2giLCJsaWtlIiwiZXF1YWxzIiwidHlwZSIsInNlZ21lbnRzIiwic2xpY2UiLCJ1bnNoaWZ0IiwibmFtZSIsImpzb25RdWVyeSIsImNyZWF0ZUpTT05RdWVyeSIsInRyZWF0QXNBcnJheSIsInRyZWF0Um9vdEFzQXJyYXkiLCJzcWwiLCJyYXciLCJjb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCIsIm9wZXJhdG9yS2V5cyIsImNvbnRhaW5zIiwid2lsZGNhcmQiLCJleGlzdHMiLCJub3RfZXF1YWxzIiwiZm9ybWF0dGVkVmFsdWUiLCJpc05vdE51bGwiLCJRdWVyeUVycm9yIiwicGF0aCIsImFuZCIsIm1hcCIsIndvcmQiLCJpbGlrZSIsInNhbml0aXplZFF1ZXJ5VmFsdWUiLCJzYW5pdGl6ZVF1ZXJ5VmFsdWUiLCJxdWVyeU9wZXJhdG9yIiwicXVlcnlWYWx1ZSIsIm9yIiwiaXNOdWxsIiwibmUiLCJub3RJbkFycmF5Il0sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7Ozs7K0JBNkJiQTs7O2VBQUFBOzs7NEJBekJpRDt3QkFDNUM7dUJBQ0k7c0NBS007aUNBQ0w7NENBQ1c7d0NBQ0o7NkJBQ1g7b0NBQ087QUFhNUIsZUFBZUEsWUFBWSxFQUNoQ0MsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxNQUFNLEVBQ05DLFlBQVksRUFDWkMsU0FBUyxFQUNUQyxLQUFLLEVBQ0E7SUFDTCxJQUFJQztJQUNKLE1BQU1DLGNBQXFCLEVBQUU7SUFFN0IsSUFBSSxPQUFPRixVQUFVLFlBQVlHLE9BQU9DLElBQUksQ0FBQ0osT0FBT0ssTUFBTSxHQUFHLEdBQUc7UUFDOUQsdUVBQXVFO1FBQ3ZFLEtBQUssTUFBTUMsa0JBQWtCSCxPQUFPQyxJQUFJLENBQUNKLE9BQVE7WUFDL0MsSUFBSU0sZ0JBQWdCO2dCQUNsQixNQUFNQyxZQUFZUCxLQUFLLENBQUNNLGVBQWU7Z0JBQ3ZDLElBQUlFO2dCQUNKLElBQUlGLGVBQWVHLFdBQVcsT0FBTyxPQUFPO29CQUMxQ0Qsb0JBQW9CO2dCQUN0QixPQUFPLElBQUlGLGVBQWVHLFdBQVcsT0FBTyxNQUFNO29CQUNoREQsb0JBQW9CO2dCQUN0Qjtn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
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3BhcnNlUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBPcGVyYXRvciwgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGlsaWtlLCBpc05vdE51bGwsIGlzTnVsbCwgbmUsIG5vdEluQXJyYXksIG9yLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IHZhbGlkT3BlcmF0b3JzIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRRdWVyeUpvaW5BbGlhc2VzLCBCdWlsZFF1ZXJ5Sm9pbnMgfSBmcm9tICcuL2J1aWxkUXVlcnknXG5cbmltcG9ydCB7IGJ1aWxkQW5kT3JDb25kaXRpb25zIH0gZnJvbSAnLi9idWlsZEFuZE9yQ29uZGl0aW9ucydcbmltcG9ydCB7IGNyZWF0ZUpTT05RdWVyeSB9IGZyb20gJy4vY3JlYXRlSlNPTlF1ZXJ5J1xuaW1wb3J0IHsgY29udmVydFBhdGhUb0pTT05UcmF2ZXJzYWwgfSBmcm9tICcuL2NyZWF0ZUpTT05RdWVyeS9jb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCdcbmltcG9ydCB7IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggfSBmcm9tICcuL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgnXG5pbXBvcnQgeyBvcGVyYXRvck1hcCB9IGZyb20gJy4vb3BlcmF0b3JNYXAnXG5pbXBvcnQgeyBzYW5pdGl6ZVF1ZXJ5VmFsdWUgfSBmcm9tICcuL3Nhbml0aXplUXVlcnlWYWx1ZSdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGpvaW5BbGlhc2VzOiBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXNcbiAgam9pbnM6IEJ1aWxkUXVlcnlKb2luc1xuICBsb2NhbGU6IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQYXJhbXMoe1xuICBhZGFwdGVyLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxTUUw+IHtcbiAgbGV0IHJlc3VsdDogU1FMXG4gIGNvbnN0IGNvbnN0cmFpbnRzOiBTUUxbXSA9IFtdXG5cbiAgaWYgKHR5cGVvZiB3aGVyZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDApIHtcbiAgICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgd2hlcmVLZXkgaXMgYW4gQU5ELCBPUiwgb3IgYSBzY2hlbWEgcGF0aFxuICAgIGZvciAoY29uc3QgcmVsYXRpb25PclBhdGggb2YgT2JqZWN0LmtleXMod2hlcmUpKSB7XG4gICAgICBpZiAocmVsYXRpb25PclBhdGgpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgIGxldCBjb25kaXRpb25PcGVyYXRvcjogJ2FuZCcgfCAnb3InXG4gICAgICAgIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnYW5kJykge1xuICAgICAgICAgIGNvbmRpdGlvbk9wZXJhdG9yID0gJ2FuZCdcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnb3InKSB7XG4gICAgICAgICAgY29uZGl0aW9uT3BlcmF0b3IgPSAnb3InXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IGJ1aWx0Q29uZGl0aW9ucyA9IGF3YWl0IGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChidWlsdENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvck1hcFtjb25kaXRpb25PcGVyYXRvcl0ocmVzdWx0LCAuLi5idWlsdENvbmRpdGlvbnMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvck1hcFtjb25kaXRpb25PcGVyYXRvcl0oLi4uYnVpbHRDb25kaXRpb25zKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJdCdzIGEgcGF0aCAtIGFuZCB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgY29tcGFyaXNvbnMgb24gYSBzaW5nbGUgcGF0aC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZSAtIHRpdGxlIGxpa2UgJ3Rlc3QnIGFuZCB0aXRsZSBub3QgZXF1YWwgdG8gJ3Rlc3RlcidcbiAgICAgICAgICAvLyBTbyB3ZSBuZWVkIHRvIGxvb3Agb24ga2V5cyBhZ2FpbiBoZXJlIHRvIGhhbmRsZSBlYWNoIG9wZXJhdG9yIGluZGVwZW5kZW50bHlcbiAgICAgICAgICBjb25zdCBwYXRoT3BlcmF0b3JzID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3BlcmF0b3JzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcGVyYXRvciBvZiBPYmplY3Qua2V5cyhwYXRoT3BlcmF0b3JzKSkge1xuICAgICAgICAgICAgICBpZiAodmFsaWRPcGVyYXRvcnMuaW5jbHVkZXMob3BlcmF0b3IgYXMgT3BlcmF0b3IpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBxdWVyeUNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHBhdGhTZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgIHJhd0NvbHVtbixcbiAgICAgICAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogcmVsYXRpb25PclBhdGgsXG4gICAgICAgICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiByZWxhdGlvbk9yUGF0aC5yZXBsYWNlKC9fXy9nLCAnLicpLnNwbGl0KCcuJyksXG4gICAgICAgICAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVtvcGVyYXRvcl1cblxuICAgICAgICAgICAgICAgIHF1ZXJ5Q29uc3RyYWludHMuZm9yRWFjaCgoeyBjb2x1bW5OYW1lOiBjb2wsIHRhYmxlOiBjb25zdHJhaW50VGFibGUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluZGV4T2YoJyUnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2gob3BlcmF0b3JNYXAubGlrZShjb25zdHJhaW50VGFibGVbY29sXSwgdmFsdWUpKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChvcGVyYXRvck1hcC5lcXVhbHMoY29uc3RyYWludFRhYmxlW2NvbF0sIHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgWydqc29uJywgJ3JpY2hUZXh0J10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocGF0aFNlZ21lbnRzKSAmJlxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICBzZWdtZW50cy51bnNoaWZ0KHRhYmxlW2NvbHVtbk5hbWVdLm5hbWUpXG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNyZWF0ZUpTT05RdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdEFzQXJyYXk6IFsnY2hpbGRyZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdFJvb3RBc0FycmF5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChzcWwucmF3KGpzb25RdWVyeSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsKHBhdGhTZWdtZW50cylcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHsgb3BlcmF0b3I6ICdpbGlrZScsIHdpbGRjYXJkOiAnJScgfSxcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiB7IG9wZXJhdG9yOiAnPScsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgICBleGlzdHM6IHsgb3BlcmF0b3I6IHZhbCA9PT0gdHJ1ZSA/ICdpcyBub3QgbnVsbCcgOiAnaXMgbnVsbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgbGlrZTogeyBvcGVyYXRvcjogJ2xpa2UnLCB3aWxkY2FyZDogJyUnIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdF9lcXVhbHM6IHsgb3BlcmF0b3I6ICc8PicsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gYCcke29wZXJhdG9yS2V5c1tvcGVyYXRvcl0ud2lsZGNhcmR9JHt2YWx9JHtvcGVyYXRvcktleXNbb3BlcmF0b3JdLndpbGRjYXJkfSdgXG5cbiAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2V4aXN0cycpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSAnJ1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWwucmF3KFxuICAgICAgICAgICAgICAgICAgICAgIGAke3RhYmxlW2NvbHVtbk5hbWVdLm5hbWV9JHtqc29uUXVlcnl9ICR7b3BlcmF0b3JLZXlzW29wZXJhdG9yXS5vcGVyYXRvcn0gJHtmb3JtYXR0ZWRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGdldE5vdE51bGxDb2x1bW5CeVZhbHVlKHZhbClcbiAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goaXNOb3ROdWxsKHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFt7IHBhdGg6IHJlbGF0aW9uT3JQYXRoIH1dKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdsaWtlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgYW5kKC4uLnZhbC5zcGxpdCgnICcpLm1hcCgod29yZCkgPT4gaWxpa2UodGFibGVbY29sdW1uTmFtZV0sIGAlJHt3b3JkfSVgKSkpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRRdWVyeVZhbHVlID0gc2FuaXRpemVRdWVyeVZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbk9yUGF0aCxcbiAgICAgICAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKHNhbml0aXplZFF1ZXJ5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcGVyYXRvcjogcXVlcnlPcGVyYXRvciwgdmFsdWU6IHF1ZXJ5VmFsdWUgfSA9IHNhbml0aXplZFF1ZXJ5VmFsdWVcblxuICAgICAgICAgICAgICAgIGlmIChxdWVyeU9wZXJhdG9yID09PSAnbm90X2VxdWFscycgJiYgcXVlcnlWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgb3IoXG4gICAgICAgICAgICAgICAgICAgICAgaXNOdWxsKHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSksXG4gICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuICAgICAgICAgICAgICAgICAgICAgIG5lPGFueT4ocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSAmJlxuICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShxdWVyeVZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICdub3RfaW4nXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWxgJHtub3RJbkFycmF5KHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKX0gT1JcbiAgICAgICAgICAgICAgICAgICAgJHt0YWJsZVtjb2x1bW5OYW1lXX1cbiAgICAgICAgICAgICAgICAgICAgSVNcbiAgICAgICAgICAgICAgICAgICAgTlVMTGAsXG4gICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnZXF1YWxzJyAmJiBxdWVyeVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKGlzTnVsbChyYXdDb2x1bW4gfHwgdGFibGVbY29sdW1uTmFtZV0pKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdub3RfZXF1YWxzJyAmJiBxdWVyeVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKGlzTm90TnVsbChyYXdDb2x1bW4gfHwgdGFibGVbY29sdW1uTmFtZV0pKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3JNYXBbcXVlcnlPcGVyYXRvcl0ocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXN1bHQgPSBhbmQocmVzdWx0LCAuLi5jb25zdHJhaW50cylcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYW5kKC4uLmNvbnN0cmFpbnRzKVxuICAgIH1cbiAgfVxuICBpZiAoY29uc3RyYWludHMubGVuZ3RoID09PSAxICYmICFyZXN1bHQpIHtcbiAgICA7W3Jlc3VsdF0gPSBjb25zdHJhaW50c1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbInBhcnNlUGFyYW1zIiwiYWRhcHRlciIsImZpZWxkcyIsImpvaW5BbGlhc2VzIiwiam9pbnMiLCJsb2NhbGUiLCJzZWxlY3RGaWVsZHMiLCJ0YWJsZU5hbWUiLCJ3aGVyZSIsInJlc3VsdCIsImNvbnN0cmFpbnRzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInJlbGF0aW9uT3JQYXRoIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uT3BlcmF0b3IiLCJ0b0xvd2VyQ2FzZSIsIkFycmF5IiwiaXNBcnJheSIsImJ1aWx0Q29uZGl0aW9ucyIsImJ1aWxkQW5kT3JDb25kaXRpb25zIiwib3BlcmF0b3JNYXAiLCJwYXRoT3BlcmF0b3JzIiwib3BlcmF0b3IiLCJ2YWxpZE9wZXJhdG9ycyIsImluY2x1ZGVzIiwiY29sdW1uTmFtZSIsInF1ZXJ5Q29uc3RyYWludHMiLCJmaWVsZCIsImdldE5vdE51bGxDb2x1bW5CeVZhbHVlIiwicGF0aFNlZ21lbnRzIiwicmF3Q29sdW1uIiwidGFibGUiLCJnZXRUYWJsZUNvbHVtbkZyb21QYXRoIiwiY29sbGVjdGlvblBhdGgiLCJyZXBsYWNlIiwic3BsaXQiLCJ2YWwiLCJmb3JFYWNoIiwiY29sIiwiY29uc3RyYWludFRhYmxlIiwidmFsdWUiLCJpbmRleE9mIiwicHVzaCIsImxpa2UiLCJlcXVhbHMiLCJ0eXBlIiwic2VnbWVudHMiLCJzbGljZSIsInVuc2hpZnQiLCJuYW1lIiwianNvblF1ZXJ5IiwiY3JlYXRlSlNPTlF1ZXJ5IiwidHJlYXRBc0FycmF5IiwidHJlYXRSb290QXNBcnJheSIsInNxbCIsInJhdyIsImNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsIiwib3BlcmF0b3JLZXlzIiwiY29udGFpbnMiLCJ3aWxkY2FyZCIsImV4aXN0cyIsIm5vdF9lcXVhbHMiLCJmb3JtYXR0ZWRWYWx1ZSIsImlzTm90TnVsbCIsIlF1ZXJ5RXJyb3IiLCJwYXRoIiwiYW5kIiwibWFwIiwid29yZCIsImlsaWtlIiwic2FuaXRpemVkUXVlcnlWYWx1ZSIsInNhbml0aXplUXVlcnlWYWx1ZSIsInF1ZXJ5T3BlcmF0b3IiLCJxdWVyeVZhbHVlIiwib3IiLCJpc051bGwiLCJuZSIsIm5vdEluQXJyYXkiXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQzs7OzsrQkE2QmJBOzs7ZUFBQUE7Ozs0QkF6QmlEO3dCQUM1Qzt1QkFDSTtzQ0FLTTtpQ0FDTDs0Q0FDVzt3Q0FDSjs2QkFDWDtvQ0FDTztBQWE1QixlQUFlQSxZQUFZLEVBQ2hDQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsV0FBVyxFQUNYQyxL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
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,eAAe,CAAA;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;CACpB,CAAA;
|
1
|
+
{"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,eAAe,CAAA;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;CACpB,CAAA;AAyCD,eAAO,MAAM,gCAAgC,gDAK1C,IAAI,KAAG,IAwBT,CAAA"}
|
@@ -13,7 +13,12 @@ const _types = require("payload/types");
|
|
13
13
|
const getFlattenedFieldNames = (fields, prefix = '')=>{
|
14
14
|
return fields.reduce((fieldsToUse, field)=>{
|
15
15
|
let fieldPrefix = prefix;
|
16
|
-
if (
|
16
|
+
if ([
|
17
|
+
'array',
|
18
|
+
'blocks',
|
19
|
+
'relationship',
|
20
|
+
'upload'
|
21
|
+
].includes(field.type) || 'hasMany' in field && field.hasMany === true) {
|
17
22
|
return fieldsToUse;
|
18
23
|
}
|
19
24
|
if ((0, _types.fieldHasSubFields)(field)) {
|
@@ -50,28 +55,26 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
|
|
50
55
|
}, []);
|
51
56
|
};
|
52
57
|
const validateExistingBlockIsIdentical = ({ block, localized, rootTableName, table })=>{
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
return fieldNames.indexOf(fieldName) === -1;
|
66
|
-
}
|
67
|
-
});
|
68
|
-
if (missingField) {
|
69
|
-
throw new _errors.InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One block includes the field ${missingField}, while the other block does not.`);
|
70
|
-
}
|
71
|
-
if (Boolean(localized) !== Boolean(table._locale)) {
|
72
|
-
throw new _errors.InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One is localized, but another is not. Block schemas of the same name must match exactly.`);
|
58
|
+
const fieldNames = getFlattenedFieldNames(block.fields);
|
59
|
+
const missingField = // ensure every field from the config is in the matching table
|
60
|
+
fieldNames.find((name)=>Object.keys(table).indexOf(name) === -1) || // ensure every table column is matched for every field from the config
|
61
|
+
Object.keys(table).find((fieldName)=>{
|
62
|
+
if (![
|
63
|
+
'_locale',
|
64
|
+
'_order',
|
65
|
+
'_parentID',
|
66
|
+
'_path',
|
67
|
+
'_uuid'
|
68
|
+
].includes(fieldName)) {
|
69
|
+
return fieldNames.indexOf(fieldName) === -1;
|
73
70
|
}
|
71
|
+
});
|
72
|
+
if (missingField) {
|
73
|
+
throw new _errors.InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One block includes the field ${missingField}, while the other block does not.`);
|
74
|
+
}
|
75
|
+
if (Boolean(localized) !== Boolean(table._locale)) {
|
76
|
+
throw new _errors.InvalidConfiguration(`The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One is localized, but another is not. Block schemas of the same name must match exactly.`);
|
74
77
|
}
|
75
78
|
};
|
76
79
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCbG9jaywgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgZmllbGRIYXNTdWJGaWVsZHMsIHRhYkhhc05hbWUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNUYWJsZSB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGJsb2NrOiBCbG9ja1xuICBsb2NhbGl6ZWQ6IGJvb2xlYW5cbiAgcm9vdFRhYmxlTmFtZTogc3RyaW5nXG4gIHRhYmxlOiBHZW5lcmljVGFibGVcbn1cblxuY29uc3QgZ2V0RmxhdHRlbmVkRmllbGROYW1lcyA9IChmaWVsZHM6IEZpZWxkW10sIHByZWZpeDogc3RyaW5nID0gJycpOiBzdHJpbmdbXSA9PiB7XG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChmaWVsZHNUb1VzZSwgZmllbGQpID0+
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCbG9jaywgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgZmllbGRIYXNTdWJGaWVsZHMsIHRhYkhhc05hbWUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNUYWJsZSB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGJsb2NrOiBCbG9ja1xuICBsb2NhbGl6ZWQ6IGJvb2xlYW5cbiAgcm9vdFRhYmxlTmFtZTogc3RyaW5nXG4gIHRhYmxlOiBHZW5lcmljVGFibGVcbn1cblxuY29uc3QgZ2V0RmxhdHRlbmVkRmllbGROYW1lcyA9IChmaWVsZHM6IEZpZWxkW10sIHByZWZpeDogc3RyaW5nID0gJycpOiBzdHJpbmdbXSA9PiB7XG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChmaWVsZHNUb1VzZSwgZmllbGQpID0+IHtcbiAgICBsZXQgZmllbGRQcmVmaXggPSBwcmVmaXhcblxuICAgIGlmIChcbiAgICAgIFsnYXJyYXknLCAnYmxvY2tzJywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSB8fFxuICAgICAgKCdoYXNNYW55JyBpbiBmaWVsZCAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZpZWxkc1RvVXNlXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGZpZWxkKSkge1xuICAgICAgZmllbGRQcmVmaXggPSAnbmFtZScgaW4gZmllbGQgPyBgJHtwcmVmaXh9JHtmaWVsZC5uYW1lfS5gIDogcHJlZml4XG4gICAgICByZXR1cm4gWy4uLmZpZWxkc1RvVXNlLCAuLi5nZXRGbGF0dGVuZWRGaWVsZE5hbWVzKGZpZWxkLmZpZWxkcywgZmllbGRQcmVmaXgpXVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmZpZWxkc1RvVXNlLFxuICAgICAgICAuLi5maWVsZC50YWJzLnJlZHVjZSgodGFiRmllbGRzLCB0YWIpID0+IHtcbiAgICAgICAgICBmaWVsZFByZWZpeCA9ICduYW1lJyBpbiB0YWIgPyBgJHtwcmVmaXh9LiR7dGFiLm5hbWV9YCA6IHByZWZpeFxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50YWJGaWVsZHMsXG4gICAgICAgICAgICAuLi4odGFiSGFzTmFtZSh0YWIpXG4gICAgICAgICAgICAgID8gW3sgLi4udGFiLCB0eXBlOiAndGFiJyB9XVxuICAgICAgICAgICAgICA6IGdldEZsYXR0ZW5lZEZpZWxkTmFtZXModGFiLmZpZWxkcywgZmllbGRQcmVmaXgpKSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sIFtdKSxcbiAgICAgIF1cbiAgICB9XG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgIHJldHVybiBbLi4uZmllbGRzVG9Vc2UsIGAke2ZpZWxkUHJlZml4Py5yZXBsYWNlKCcuJywgJ18nKSB8fCAnJ30ke2ZpZWxkLm5hbWV9YF1cbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGRzVG9Vc2VcbiAgfSwgW10pXG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCA9ICh7XG4gIGJsb2NrLFxuICBsb2NhbGl6ZWQsXG4gIHJvb3RUYWJsZU5hbWUsXG4gIHRhYmxlLFxufTogQXJncyk6IHZvaWQgPT4ge1xuICBjb25zdCBmaWVsZE5hbWVzID0gZ2V0RmxhdHRlbmVkRmllbGROYW1lcyhibG9jay5maWVsZHMpXG5cbiAgY29uc3QgbWlzc2luZ0ZpZWxkID1cbiAgICAvLyBlbnN1cmUgZXZlcnkgZmllbGQgZnJvbSB0aGUgY29uZmlnIGlzIGluIHRoZSBtYXRjaGluZyB0YWJsZVxuICAgIGZpZWxkTmFtZXMuZmluZCgobmFtZSkgPT4gT2JqZWN0LmtleXModGFibGUpLmluZGV4T2YobmFtZSkgPT09IC0xKSB8fFxuICAgIC8vIGVuc3VyZSBldmVyeSB0YWJsZSBjb2x1bW4gaXMgbWF0Y2hlZCBmb3IgZXZlcnkgZmllbGQgZnJvbSB0aGUgY29uZmlnXG4gICAgT2JqZWN0LmtleXModGFibGUpLmZpbmQoKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgaWYgKCFbJ19sb2NhbGUnLCAnX29yZGVyJywgJ19wYXJlbnRJRCcsICdfcGF0aCcsICdfdXVpZCddLmluY2x1ZGVzKGZpZWxkTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkTmFtZXMuaW5kZXhPZihmaWVsZE5hbWUpID09PSAtMVxuICAgICAgfVxuICAgIH0pXG5cbiAgaWYgKG1pc3NpbmdGaWVsZCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgIGBUaGUgdGFibGUgJHtyb290VGFibGVOYW1lfSBoYXMgbXVsdGlwbGUgYmxvY2tzIHdpdGggc2x1ZyAke2Jsb2NrLnNsdWd9LCBidXQgdGhlIHNjaGVtYXMgZG8gbm90IG1hdGNoLiBPbmUgYmxvY2sgaW5jbHVkZXMgdGhlIGZpZWxkICR7bWlzc2luZ0ZpZWxkfSwgd2hpbGUgdGhlIG90aGVyIGJsb2NrIGRvZXMgbm90LmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKEJvb2xlYW4obG9jYWxpemVkKSAhPT0gQm9vbGVhbih0YWJsZS5fbG9jYWxlKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgIGBUaGUgdGFibGUgJHtyb290VGFibGVOYW1lfSBoYXMgbXVsdGlwbGUgYmxvY2tzIHdpdGggc2x1ZyAke2Jsb2NrLnNsdWd9LCBidXQgdGhlIHNjaGVtYXMgZG8gbm90IG1hdGNoLiBPbmUgaXMgbG9jYWxpemVkLCBidXQgYW5vdGhlciBpcyBub3QuIEJsb2NrIHNjaGVtYXMgb2YgdGhlIHNhbWUgbmFtZSBtdXN0IG1hdGNoIGV4YWN0bHkuYCxcbiAgICApXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCIsImdldEZsYXR0ZW5lZEZpZWxkTmFtZXMiLCJmaWVsZHMiLCJwcmVmaXgiLCJyZWR1Y2UiLCJmaWVsZHNUb1VzZSIsImZpZWxkIiwiZmllbGRQcmVmaXgiLCJpbmNsdWRlcyIsInR5cGUiLCJoYXNNYW55IiwiZmllbGRIYXNTdWJGaWVsZHMiLCJuYW1lIiwidGFicyIsInRhYkZpZWxkcyIsInRhYiIsInRhYkhhc05hbWUiLCJmaWVsZEFmZmVjdHNEYXRhIiwicmVwbGFjZSIsImJsb2NrIiwibG9jYWxpemVkIiwicm9vdFRhYmxlTmFtZSIsInRhYmxlIiwiZmllbGROYW1lcyIsIm1pc3NpbmdGaWVsZCIsImZpbmQiLCJPYmplY3QiLCJrZXlzIiwiaW5kZXhPZiIsImZpZWxkTmFtZSIsIkludmFsaWRDb25maWd1cmF0aW9uIiwic2x1ZyIsIkJvb2xlYW4iLCJfbG9jYWxlIl0sIm1hcHBpbmdzIjoiOzs7OytCQXFEYUE7OztlQUFBQTs7O3dCQW5Ed0I7dUJBQzJCO0FBV2hFLE1BQU1DLHlCQUF5QixDQUFDQyxRQUFpQkMsU0FBaUIsRUFBRTtJQUNsRSxPQUFPRCxPQUFPRSxNQUFNLENBQUMsQ0FBQ0MsYUFBYUM7UUFDakMsSUFBSUMsY0FBY0o7UUFFbEIsSUFDRTtZQUFDO1lBQVM7WUFBVTtZQUFnQjtTQUFTLENBQUNLLFFBQVEsQ0FBQ0YsTUFBTUcsSUFBSSxLQUNoRSxhQUFhSCxTQUFTQSxNQUFNSSxPQUFPLEtBQUssTUFDekM7WUFDQSxPQUFPTDtRQUNUO1FBRUEsSUFBSU0sSUFBQUEsd0JBQWlCLEVBQUNMLFFBQVE7WUFDNUJDLGNBQWMsVUFBVUQsUUFBUSxDQUFDLEVBQUVILE9BQU8sRUFBRUcsTUFBTU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHVDtZQUM1RCxPQUFPO21CQUFJRTttQkFBZ0JKLHVCQUF1QkssTUFBTUosTUFBTSxFQUFFSzthQUFhO1FBQy9FO1FBRUEsSUFBSUQsTUFBTUcsSUFBSSxLQUFLLFFBQVE7WUFDekIsT0FBTzttQkFDRko7bUJBQ0FDLE1BQU1PLElBQUksQ0FBQ1QsTUFBTSxDQUFDLENBQUNVLFdBQVdDO29CQUMvQlIsY0FBYyxVQUFVUSxNQUFNLENBQUMsRUFBRVosT0FBTyxDQUFDLEVBQUVZLElBQUlILElBQUksQ0FBQyxDQUFDLEdBQUdUO29CQUN4RCxPQUFPOzJCQUNGVzsyQkFDQ0UsSUFBQUEsaUJBQVUsRUFBQ0QsT0FDWDs0QkFBQztnQ0FBRSxHQUFHQSxHQUFHO2dDQUFFTixNQUFNOzRCQUFNO3lCQUFFLEdBQ3pCUix1QkFBdUJjLElBQUliLE1BQU0sRUFBRUs7cUJBQ3hDO2dCQUNILEdBQUcsRUFBRTthQUNOO1FBQ0g7UUFFQSxJQUFJVSxJQUFBQSx1QkFBZ0IsRUFBQ1gsUUFBUTtZQUMzQixPQUFPO21CQUFJRDtnQkFBYSxDQUFDLEVBQUVFLGFBQWFXLFFBQVEsS0FBSyxRQUFRLEdBQUcsRUFBRVosTUFBTU0sSUFBSSxDQUFDLENBQUM7YUFBQztRQUNqRjtRQUVBLE9BQU9QO0lBQ1QsR0FBRyxFQUFFO0FBQ1A7QUFFTyxNQUFNTCxtQ0FBbUMsQ0FBQyxFQUMvQ21CLEtBQUssRUFDTEMsU0FBUyxFQUNUQyxhQUFhLEVBQ2JDLEtBQUssRUFDQTtJQUNMLE1BQU1DLGFBQWF0Qix1QkFBdUJrQixNQUFNakIsTUFBTTtJQUV0RCxNQUFNc0IsZUFDSiw4REFBOEQ7SUFDOURELFdBQVdFLElBQUksQ0FBQyxDQUFDYixPQUFTYyxPQUFPQyxJQUFJLENBQUNMLE9BQU9NLE9BQU8sQ0FBQ2hCLFVBQVUsQ0FBQyxNQUNoRSx1RUFBdUU7SUFDdkVjLE9BQU9DLElBQUksQ0FBQ0wsT0FBT0csSUFBSSxDQUFDLENBQUNJO1FBQ3ZCLElBQUksQ0FBQztZQUFDO1lBQVc7WUFBVTtZQUFhO1lBQVM7U0FBUSxDQUFDckIsUUFBUSxDQUFDcUIsWUFBWTtZQUM3RSxPQUFPTixXQUFXSyxPQUFPLENBQUNDLGVBQWUsQ0FBQztRQUM1QztJQUNGO0lBRUYsSUFBSUwsY0FBYztRQUNoQixNQUFNLElBQUlNLDRCQUFvQixDQUM1QixDQUFDLFVBQVUsRUFBRVQsY0FBYywrQkFBK0IsRUFBRUYsTUFBTVksSUFBSSxDQUFDLDZEQUE2RCxFQUFFUCxhQUFhLGlDQUFpQyxDQUFDO0lBRXpMO0lBRUEsSUFBSVEsUUFBUVosZUFBZVksUUFBUVYsTUFBTVcsT0FBTyxHQUFHO1FBQ2pELE1BQU0sSUFBSUgsNEJBQW9CLENBQzVCLENBQUMsVUFBVSxFQUFFVCxjQUFjLCtCQUErQixFQUFFRixNQUFNWSxJQUFJLENBQUMsd0hBQXdILENBQUM7SUFFcE07QUFDRiJ9
|
@@ -26,10 +26,6 @@ type TraverseFieldsArgs = {
|
|
26
26
|
* An array of Payload fields to traverse
|
27
27
|
*/
|
28
28
|
fields: (Field | TabAsField)[];
|
29
|
-
/**
|
30
|
-
* All hasMany text fields, as returned by Drizzle, keyed on an object by field path
|
31
|
-
*/
|
32
|
-
texts: Record<string, Record<string, unknown>[]>;
|
33
29
|
/**
|
34
30
|
* All hasMany number fields, as returned by Drizzle, keyed on an object by field path
|
35
31
|
*/
|
@@ -46,7 +42,11 @@ type TraverseFieldsArgs = {
|
|
46
42
|
* Data structure representing the nearest table from db
|
47
43
|
*/
|
48
44
|
table: Record<string, unknown>;
|
45
|
+
/**
|
46
|
+
* All hasMany text fields, as returned by Drizzle, keyed on an object by field path
|
47
|
+
*/
|
48
|
+
texts: Record<string, Record<string, unknown>[]>;
|
49
49
|
};
|
50
|
-
export declare const traverseFields: <T extends Record<string, unknown>>({ blocks, config, dataRef, deletions, fieldPrefix, fields,
|
50
|
+
export declare const traverseFields: <T extends Record<string, unknown>>({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, }: TraverseFieldsArgs) => T;
|
51
51
|
export {};
|
52
52
|
//# sourceMappingURL=traverseFields.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAItD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAMhE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAItD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAMhE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;CACjD,CAAA;AAID,eAAO,MAAM,cAAc,gJAYxB,kBAAkB,MAsdpB,CAAA"}
|
@@ -10,9 +10,9 @@ Object.defineProperty(exports, "traverseFields", {
|
|
10
10
|
});
|
11
11
|
const _types = require("payload/types");
|
12
12
|
const _hasManyNumber = require("./hasManyNumber");
|
13
|
-
const _relationship = require("./relationship");
|
14
13
|
const _hasManyText = require("./hasManyText");
|
15
|
-
const
|
14
|
+
const _relationship = require("./relationship");
|
15
|
+
const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts })=>{
|
16
16
|
const sanitizedPath = path ? `${path}.` : path;
|
17
17
|
const formatted = fields.reduce((result, field)=>{
|
18
18
|
if (field.type === 'tabs') {
|
@@ -26,11 +26,11 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
26
26
|
...tab,
|
27
27
|
type: 'tab'
|
28
28
|
})),
|
29
|
-
texts,
|
30
29
|
numbers,
|
31
30
|
path,
|
32
31
|
relationships,
|
33
|
-
table
|
32
|
+
table,
|
33
|
+
texts
|
34
34
|
});
|
35
35
|
}
|
36
36
|
if (field.type === 'collapsible' || field.type === 'row' || field.type === 'tab' && !('name' in field)) {
|
@@ -41,16 +41,19 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
41
41
|
deletions,
|
42
42
|
fieldPrefix,
|
43
43
|
fields: field.fields,
|
44
|
-
texts,
|
45
44
|
numbers,
|
46
45
|
path,
|
47
46
|
relationships,
|
48
|
-
table
|
47
|
+
table,
|
48
|
+
texts
|
49
49
|
});
|
50
50
|
}
|
51
51
|
if ((0, _types.fieldAffectsData)(field)) {
|
52
52
|
const fieldName = `${fieldPrefix || ''}${field.name}`;
|
53
53
|
const fieldData = table[fieldName];
|
54
|
+
if (fieldPrefix) {
|
55
|
+
deletions.push(()=>delete table[fieldName]);
|
56
|
+
}
|
54
57
|
if (field.type === 'array') {
|
55
58
|
if (Array.isArray(fieldData)) {
|
56
59
|
if (field.localized) {
|
@@ -71,12 +74,15 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
71
74
|
deletions,
|
72
75
|
fieldPrefix: '',
|
73
76
|
fields: field.fields,
|
74
|
-
texts,
|
75
77
|
numbers,
|
76
78
|
path: `${sanitizedPath}${field.name}.${row._order - 1}`,
|
77
79
|
relationships,
|
78
|
-
table: row
|
80
|
+
table: row,
|
81
|
+
texts
|
79
82
|
});
|
83
|
+
if ('_order' in rowResult) {
|
84
|
+
delete rowResult._order;
|
85
|
+
}
|
80
86
|
arrayResult[locale].push(rowResult);
|
81
87
|
}
|
82
88
|
return arrayResult;
|
@@ -87,6 +93,9 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
87
93
|
row.id = row._uuid;
|
88
94
|
delete row._uuid;
|
89
95
|
}
|
96
|
+
if ('_order' in row) {
|
97
|
+
delete row._order;
|
98
|
+
}
|
90
99
|
return traverseFields({
|
91
100
|
blocks,
|
92
101
|
config,
|
@@ -94,11 +103,11 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
94
103
|
deletions,
|
95
104
|
fieldPrefix: '',
|
96
105
|
fields: field.fields,
|
97
|
-
texts,
|
98
106
|
numbers,
|
99
107
|
path: `${sanitizedPath}${field.name}.${i}`,
|
100
108
|
relationships,
|
101
|
-
table: row
|
109
|
+
table: row,
|
110
|
+
texts
|
102
111
|
});
|
103
112
|
});
|
104
113
|
}
|
@@ -132,11 +141,11 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
132
141
|
deletions,
|
133
142
|
fieldPrefix: '',
|
134
143
|
fields: block.fields,
|
135
|
-
texts,
|
136
144
|
numbers,
|
137
145
|
path: `${blockFieldPath}.${row._order - 1}`,
|
138
146
|
relationships,
|
139
|
-
table: row
|
147
|
+
table: row,
|
148
|
+
texts
|
140
149
|
});
|
141
150
|
delete blockResult._order;
|
142
151
|
return blockResult;
|
@@ -160,11 +169,11 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
160
169
|
deletions,
|
161
170
|
fieldPrefix: '',
|
162
171
|
fields: block.fields,
|
163
|
-
texts,
|
164
172
|
numbers,
|
165
173
|
path: `${blockFieldPath}.${i}`,
|
166
174
|
relationships,
|
167
|
-
table: row
|
175
|
+
table: row,
|
176
|
+
texts
|
168
177
|
});
|
169
178
|
}
|
170
179
|
return {};
|
@@ -229,15 +238,15 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
229
238
|
(0, _hasManyText.transformHasManyText)({
|
230
239
|
field,
|
231
240
|
locale,
|
232
|
-
|
233
|
-
|
241
|
+
ref: result,
|
242
|
+
textRows: texts
|
234
243
|
});
|
235
244
|
});
|
236
245
|
} else {
|
237
246
|
(0, _hasManyText.transformHasManyText)({
|
238
247
|
field,
|
239
|
-
|
240
|
-
|
248
|
+
ref: result,
|
249
|
+
textRows: textPathMatch
|
241
250
|
});
|
242
251
|
}
|
243
252
|
return result;
|
@@ -323,13 +332,16 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
323
332
|
deletions,
|
324
333
|
fieldPrefix: groupFieldPrefix,
|
325
334
|
fields: field.fields,
|
326
|
-
texts,
|
327
335
|
numbers,
|
328
336
|
path: `${sanitizedPath}${field.name}`,
|
329
337
|
relationships,
|
330
|
-
table
|
338
|
+
table,
|
339
|
+
texts
|
331
340
|
});
|
332
341
|
});
|
342
|
+
if ('_order' in ref) {
|
343
|
+
delete ref._order;
|
344
|
+
}
|
333
345
|
} else {
|
334
346
|
const groupData = {};
|
335
347
|
ref[field.name] = traverseFields({
|
@@ -339,12 +351,15 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
339
351
|
deletions,
|
340
352
|
fieldPrefix: groupFieldPrefix,
|
341
353
|
fields: field.fields,
|
342
|
-
texts,
|
343
354
|
numbers,
|
344
355
|
path: `${sanitizedPath}${field.name}`,
|
345
356
|
relationships,
|
346
|
-
table
|
357
|
+
table,
|
358
|
+
texts
|
347
359
|
});
|
360
|
+
if ('_order' in ref) {
|
361
|
+
delete ref._order;
|
362
|
+
}
|
348
363
|
}
|
349
364
|
break;
|
350
365
|
}
|
@@ -411,4 +426,4 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
411
426
|
return formatted;
|
412
427
|
};
|
413
428
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC90cmF2ZXJzZUZpZWxkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIH0gZnJvbSAnLi9oYXNNYW55TnVtYmVyJ1xuaW1wb3J0IHsgdHJhbnNmb3JtUmVsYXRpb25zaGlwIH0gZnJvbSAnLi9yZWxhdGlvbnNoaXAnXG5pbXBvcnQgeyB0cmFuc2Zvcm1IYXNNYW55VGV4dCB9IGZyb20gJy4vaGFzTWFueVRleHQnXG5cbnR5cGUgVHJhdmVyc2VGaWVsZHNBcmdzID0ge1xuICAvKipcbiAgICogUHJlLWZvcm1hdHRlZCBibG9ja3MgbWFwXG4gICAqL1xuICBibG9ja3M6IEJsb2Nrc01hcFxuICAvKipcbiAgICogVGhlIGZ1bGwgUGF5bG9hZCBjb25maWdcbiAgICovXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIC8qKlxuICAgKiBUaGUgZGF0YSByZWZlcmVuY2UgdG8gYmUgbXV0YXRlZCB3aXRoaW4gdGhpcyByZWN1cnNpdmUgZnVuY3Rpb25cbiAgICovXG4gIGRhdGFSZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBEYXRhIHRoYXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQgYWZ0ZXIgYWxsIGZpZWxkcyBoYXZlIHBvcHVsYXRlZFxuICAgKi9cbiAgZGVsZXRpb25zOiAoKCkgPT4gdm9pZClbXVxuICAvKipcbiAgICogQ29sdW1uIHByZWZpeCBjYW4gYmUgYnVpbHQgdXAgYnkgZ3JvdXAgYW5kIG5hbWVkIHRhYiBmaWVsZHNcbiAgICovXG4gIGZpZWxkUHJlZml4OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFBheWxvYWQgZmllbGRzIHRvIHRyYXZlcnNlXG4gICAqL1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgLyoqXG4gICAqIEFsbCBoYXNNYW55IHRleHQgZmllbGRzLCBhcyByZXR1cm5lZCBieSBEcml6emxlLCBrZXllZCBvbiBhbiBvYmplY3QgYnkgZmllbGQgcGF0aFxuICAgKi9cbiAgdGV4dHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+XG4gIC8qKlxuICAgKiBBbGwgaGFzTWFueSBudW1iZXIgZmllbGRzLCBhcyByZXR1cm5lZCBieSBEcml6emxlLCBrZXllZCBvbiBhbiBvYmplY3QgYnkgZmllbGQgcGF0aFxuICAgKi9cbiAgbnVtYmVyczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZpZWxkIHBhdGggKGluIGRvdCBub3RhdGlvbiksIHVzZWQgdG8gbWVyZ2UgaW4gcmVsYXRpb25zaGlwc1xuICAgKi9cbiAgcGF0aDogc3RyaW5nXG4gIC8qKlxuICAgKiBBbGwgcmVsYXRlZCBkb2N1bWVudHMsIGFzIHJldHVybmVkIGJ5IERyaXp6bGUsIGtleWVkIG9uIGFuIG9iamVjdCBieSBmaWVsZCBwYXRoXG4gICAqL1xuICByZWxhdGlvbnNoaXBzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogRGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIHRoZSBuZWFyZXN0IHRhYmxlIGZyb20gZGJcbiAgICovXG4gIHRhYmxlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG4vLyBUcmF2ZXJzZSBmaWVsZHMgcmVjdXJzaXZlbHksIHRyYW5zZm9ybWluZyBkYXRhXG4vLyBmb3IgZWFjaCBmaWVsZCB0eXBlIGludG8gcmVxdWlyZWQgUGF5bG9hZCBzaGFwZVxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICBibG9ja3MsXG4gIGNvbmZpZyxcbiAgZGF0YVJlZixcbiAgZGVsZXRpb25zLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICB0ZXh0cyxcbiAgbnVtYmVycyxcbiAgcGF0aCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgdGFibGUsXG59OiBUcmF2ZXJzZUZpZWxkc0FyZ3MpOiBUID0+IHtcbiAgY29uc3Qgc2FuaXRpemVkUGF0aCA9IHBhdGggPyBgJHtwYXRofS5gIDogcGF0aFxuXG4gIGNvbnN0IGZvcm1hdHRlZCA9IGZpZWxkcy5yZWR1Y2UoKHJlc3VsdCwgZmllbGQpID0+IHtcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGJsb2NrcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkYXRhUmVmLFxuICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICB0ZXh0cyxcbiAgICAgICAgbnVtYmVycyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgdGFibGUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdjb2xsYXBzaWJsZScgfHxcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdyb3cnIHx8XG4gICAgICAoZmllbGQudHlwZSA9PT0gJ3RhYicgJiYgISgnbmFtZScgaW4gZmllbGQpKVxuICAgICkge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBibG9ja3MsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZGF0YVJlZixcbiAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIHRleHRzLFxuICAgICAgICBudW1iZXJzLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICB0YWJsZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbZmllbGROYW1lXVxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGREYXRhKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5yZWR1Y2UoKGFycmF5UmVzdWx0LCByb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cuX2xvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFycmF5UmVzdWx0W3Jvdy5fbG9jYWxlXSkgYXJyYXlSZXN1bHRbcm93Ll9sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGUgPSByb3cuX2xvY2FsZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7fVxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX2xvY2FsZVxuICAgICAgICAgICAgICAgIGlmIChyb3cuX3V1aWQpIHtcbiAgICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJvd1Jlc3VsdCA9IHRyYXZlcnNlRmllbGRzPFQ+KHtcbiAgICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgIGRhdGFSZWY6IGRhdGEsXG4gICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfS4ke3Jvdy5fb3JkZXIgLSAxfWAsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgdGFibGU6IHJvdyxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgYXJyYXlSZXN1bHRbbG9jYWxlXS5wdXNoKHJvd1Jlc3VsdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBhcnJheVJlc3VsdFxuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgcm93LmlkID0gcm93Ll91dWlkXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiAnJyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfS4ke2l9YCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgIHRhYmxlOiByb3csXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdibG9ja3MnKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrRmllbGRQYXRoID0gYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YFxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJsb2Nrc1tibG9ja0ZpZWxkUGF0aF0pKSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgICAgICAgYmxvY2tzW2Jsb2NrRmllbGRQYXRoXS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJvdy5fdXVpZCkge1xuICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5fbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXSkgcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVzdWx0W2ZpZWxkLm5hbWVdKS5mb3JFYWNoKChbbG9jYWxlLCBsb2NhbGl6ZWRCbG9ja3NdKSA9PiB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXVtsb2NhbGVdID0gbG9jYWxpemVkQmxvY2tzLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoeyBzbHVnIH0pID0+IHNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVzdWx0ID0gdHJhdmVyc2VGaWVsZHM8VD4oe1xuICAgICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVJlZjogcm93LFxuICAgICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJHtibG9ja0ZpZWxkUGF0aH0uJHtyb3cuX29yZGVyIC0gMX1gLFxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgZGVsZXRlIGJsb2NrUmVzdWx0Ll9vcmRlclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGJsb2NrUmVzdWx0XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBibG9ja3NbYmxvY2tGaWVsZFBhdGhdLm1hcCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgICAgIGRlbGV0ZSByb3cuX29yZGVyXG4gICAgICAgICAgICAgIGlmIChyb3cuX3V1aWQpIHtcbiAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll91dWlkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoeyBzbHVnIH0pID0+IHNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlRmllbGRzPFQ+KHtcbiAgICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgIGRhdGFSZWY6IHJvdyxcbiAgICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiAnJyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7YmxvY2tGaWVsZFBhdGh9LiR7aX1gLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICAgIHRhYmxlOiByb3csXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgICBjb25zdCByZWxhdGlvblBhdGhNYXRjaCA9IHJlbGF0aW9uc2hpcHNbYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgaWYgKCFyZWxhdGlvblBhdGhNYXRjaCkge1xuICAgICAgICAgIGlmICgnaGFzTWFueScgaW4gZmllbGQgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBjb25maWcubG9jYWxpemF0aW9uICYmIGNvbmZpZy5sb2NhbGl6YXRpb24ubG9jYWxlcykge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgW2NvbmZpZy5sb2NhbGl6YXRpb24uZGVmYXVsdExvY2FsZV06IFtdLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc0J5TG9jYWxlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPiA9IHt9XG5cbiAgICAgICAgICByZWxhdGlvblBhdGhNYXRjaC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93LmxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgaWYgKCFyZWxhdGlvbnNCeUxvY2FsZVtyb3cubG9jYWxlXSkgcmVsYXRpb25zQnlMb2NhbGVbcm93LmxvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICByZWxhdGlvbnNCeUxvY2FsZVtyb3cubG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVsYXRpb25zQnlMb2NhbGUpLmZvckVhY2goKFtsb2NhbGUsIHJlbGF0aW9uc10pID0+IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybVJlbGF0aW9uc2hpcCh7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgICByZWxhdGlvbnMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwKHtcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICByZWxhdGlvbnM6IHJlbGF0aW9uUGF0aE1hdGNoLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAndGV4dCcgJiYgZmllbGQ/Lmhhc01hbnkpIHtcbiAgICAgICAgY29uc3QgdGV4dFBhdGhNYXRjaCA9IHRleHRzW2Ake3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBdXG4gICAgICAgIGlmICghdGV4dFBhdGhNYXRjaCkgcmV0dXJuIHJlc3VsdFxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICAgIGNvbnN0IHRleHRzQnlMb2NhbGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICAgICAgICAgIHRleHRQYXRoTWF0Y2guZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGlmICghdGV4dHNCeUxvY2FsZVtyb3cubG9jYWxlXSkgdGV4dHNCeUxvY2FsZVtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgIHRleHRzQnlMb2NhbGVbcm93LmxvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRleHRzQnlMb2NhbGUpLmZvckVhY2goKFtsb2NhbGUsIHRleHRzXSkgPT4ge1xuICAgICAgICAgICAgdHJhbnNmb3JtSGFzTWFueVRleHQoe1xuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICB0ZXh0Um93czogdGV4dHMsXG4gICAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyYW5zZm9ybUhhc01hbnlUZXh0KHtcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgdGV4dFJvd3M6IHRleHRQYXRoTWF0Y2gsXG4gICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICBjb25zdCBudW1iZXJQYXRoTWF0Y2ggPSBudW1iZXJzW2Ake3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBdXG4gICAgICAgIGlmICghbnVtYmVyUGF0aE1hdGNoKSByZXR1cm4gcmVzdWx0XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgICAgY29uc3QgbnVtYmVyc0J5TG9jYWxlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPiA9IHt9XG5cbiAgICAgICAgICBudW1iZXJQYXRoTWF0Y2guZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGlmICghbnVtYmVyc0J5TG9jYWxlW3Jvdy5sb2NhbGVdKSBudW1iZXJzQnlMb2NhbGVbcm93LmxvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICBudW1iZXJzQnlMb2NhbGVbcm93LmxvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG51bWJlcnNCeUxvY2FsZSkuZm9yRWFjaCgoW2xvY2FsZSwgbnVtYmVyc10pID0+IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybUhhc01hbnlOdW1iZXIoe1xuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICBudW1iZXJSb3dzOiBudW1iZXJzLFxuICAgICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyKHtcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgbnVtYmVyUm93czogbnVtYmVyUGF0aE1hdGNoLFxuICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGREYXRhKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5yZWR1Y2UoKHNlbGVjdFJlc3VsdCwgcm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93LmxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdFJlc3VsdFtyb3cubG9jYWxlXSkgc2VsZWN0UmVzdWx0W3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgICBzZWxlY3RSZXN1bHRbcm93LmxvY2FsZV0ucHVzaChyb3cudmFsdWUpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0UmVzdWx0XG4gICAgICAgICAgICB9LCB7fSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gZmllbGREYXRhLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBjb25zdCBsb2NhbGl6ZWRGaWVsZERhdGEgPSB7fVxuICAgICAgY29uc3QgdmFsdWVzVG9UcmFuc2Zvcm06IHtcbiAgICAgICAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICB0YWJsZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH1bXSA9IFtdXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgQXJyYXkuaXNBcnJheSh0YWJsZS5fbG9jYWxlcykpIHtcbiAgICAgICAgdGFibGUuX2xvY2FsZXMuZm9yRWFjaCgobG9jYWxlUm93KSA9PiB7XG4gICAgICAgICAgdmFsdWVzVG9UcmFuc2Zvcm0ucHVzaCh7IHJlZjogbG9jYWxpemVkRmllbGREYXRhLCB0YWJsZTogbG9jYWxlUm93IH0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5wdXNoKHsgcmVmOiByZXN1bHQsIHRhYmxlIH0pXG4gICAgICB9XG5cbiAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLmZvckVhY2goKHsgcmVmLCB0YWJsZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkRGF0YSA9IHRhYmxlW2Ake2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBjb25zdCBsb2NhbGUgPSB0YWJsZT8uX2xvY2FsZVxuXG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgICAgICBjb25zdCBncm91cEZpZWxkUHJlZml4ID0gYCR7ZmllbGRQcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lfV9gXG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnICYmICFyZWZbbG9jYWxlXSkge1xuICAgICAgICAgICAgICAgIHJlZltsb2NhbGVdID0ge31cbiAgICAgICAgICAgICAgICBkZWxldGUgdGFibGUuX2xvY2FsZVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVmKS5mb3JFYWNoKChbZ3JvdXBMb2NhbGUsIGdyb3VwTG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgICAgICByZWZbZ3JvdXBMb2NhbGVdID0gdHJhdmVyc2VGaWVsZHM8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHtcbiAgICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgIGRhdGFSZWY6IGdyb3VwTG9jYWxlRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiBncm91cEZpZWxkUHJlZml4LFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgICBwYXRoOiBgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBncm91cERhdGEgPSB7fVxuXG4gICAgICAgICAgICAgIHJlZltmaWVsZC5uYW1lXSA9IHRyYXZlcnNlRmllbGRzPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7XG4gICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICBkYXRhUmVmOiBncm91cERhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiBncm91cEZpZWxkUHJlZml4LFxuICAgICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3RleHQnOiB7XG4gICAgICAgICAgICBsZXQgdmFsID0gZmllbGREYXRhXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdmFsID0gU3RyaW5nKGZpZWxkRGF0YSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gdmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgICAgICBsZXQgdmFsID0gZmllbGREYXRhXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdmFsID0gTnVtYmVyLnBhcnNlRmxvYXQoZmllbGREYXRhKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmVmW2xvY2FsZV0gPSB2YWxcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHZhbFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2RhdGUnOiB7XG4gICAgICAgICAgICBsZXQgdmFsID0gZmllbGREYXRhXG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGREYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICB2YWwgPSBuZXcgRGF0ZShmaWVsZERhdGEpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gdmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmVmW2xvY2FsZV0gPSBmaWVsZERhdGFcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGxvY2FsaXplZEZpZWxkRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBsb2NhbGl6ZWRGaWVsZERhdGFcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfSwgZGF0YVJlZilcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0YWJsZS5fbG9jYWxlcykpIHtcbiAgICBkZWxldGlvbnMucHVzaCgoKSA9PiBkZWxldGUgdGFibGUuX2xvY2FsZXMpXG4gIH1cblxuICByZXR1cm4gZm9ybWF0dGVkIGFzIFRcbn1cbiJdLCJuYW1lcyI6WyJ0cmF2ZXJzZUZpZWxkcyIsImJsb2NrcyIsImNvbmZpZyIsImRhdGFSZWYiLCJkZWxldGlvbnMiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsInRleHRzIiwibnVtYmVycyIsInBhdGgiLCJyZWxhdGlvbnNoaXBzIiwidGFibGUiLCJzYW5pdGl6ZWRQYXRoIiwiZm9ybWF0dGVkIiwicmVkdWNlIiwicmVzdWx0IiwiZmllbGQiLCJ0eXBlIiwidGFicyIsIm1hcCIsInRhYiIsImZpZWxkQWZmZWN0c0RhdGEiLCJmaWVsZE5hbWUiLCJuYW1lIiwiZmllbGREYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwibG9jYWxpemVkIiwiYXJyYXlSZXN1bHQiLCJyb3ciLCJfbG9jYWxlIiwibG9jYWxlIiwiZGF0YSIsIl91dWlkIiwiaWQiLCJyb3dSZXN1bHQiLCJfb3JkZXIiLCJwdXNoIiwiaSIsImJsb2NrRmllbGRQYXRoIiwiZm9yRWFjaCIsIk9iamVjdCIsImVudHJpZXMiLCJsb2NhbGl6ZWRCbG9ja3MiLCJibG9jayIsImZpbmQiLCJzbHVnIiwiYmxvY2tUeXBlIiwiYmxvY2tSZXN1bHQiLCJyZWxhdGlvblBhdGhNYXRjaCIsImhhc01hbnkiLCJsb2NhbGl6YXRpb24iLCJsb2NhbGVzIiwiZGVmYXVsdExvY2FsZSIsInJlbGF0aW9uc0J5TG9jYWxlIiwicmVsYXRpb25zIiwidHJhbnNmb3JtUmVsYXRpb25zaGlwIiwicmVmIiwidGV4dFBhdGhNYXRjaCIsInRleHRzQnlMb2NhbGUiLCJ0cmFuc2Zvcm1IYXNNYW55VGV4dCIsInRleHRSb3dzIiwibnVtYmVyUGF0aE1hdGNoIiwibnVtYmVyc0J5TG9jYWxlIiwidHJhbnNmb3JtSGFzTWFueU51bWJlciIsIm51bWJlclJvd3MiLCJzZWxlY3RSZXN1bHQiLCJ2YWx1ZSIsImxvY2FsaXplZEZpZWxkRGF0YSIsInZhbHVlc1RvVHJhbnNmb3JtIiwiX2xvY2FsZXMiLCJsb2NhbGVSb3ciLCJncm91cEZpZWxkUHJlZml4IiwiZ3JvdXBMb2NhbGUiLCJncm91cExvY2FsZURhdGEiLCJncm91cERhdGEiLCJ2YWwiLCJTdHJpbmciLCJOdW1iZXIiLCJwYXJzZUZsb2F0IiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwia2V5cyIsImxlbmd0aCJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTZEdkJBOzs7ZUFBQUE7Ozt1QkF6RG9COytCQUlNOzhCQUNEOzZCQUNEO0FBbUQ5QixNQUFNQSxpQkFBaUIsQ0FBb0MsRUFDaEVDLE1BQU0sRUFDTkMsTUFBTSxFQUNOQyxPQUFPLEVBQ1BDLFNBQVMsRUFDVEMsV0FBVyxFQUNYQyxNQUFNLEVBQ05DLEtBQUssRUFDTEMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLGFBQWEsRUFDYkMsS0FBSyxFQUNjO0lBQ25CLE1BQU1DLGdCQUFnQkgsT0FBTyxDQUFDLEVBQUVBLEtBQUssQ0FBQyxDQUFDLEdBQUdBO0lBRTFDLE1BQU1JLFlBQVlQLE9BQU9RLE1BQU0sQ0FBQyxDQUFDQyxRQUFRQztRQUN2QyxJQUFJQSxNQUFNQyxJQUFJLEtBQUssUUFBUTtZQUN6QmpCLGVBQWU7Z0JBQ2JDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO2dCQUNBQztnQkFDQUMsUUFBUVUsTUFBTUUsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQ0MsTUFBUyxDQUFBO3dCQUFFLEdBQUdBLEdBQUc7d0JBQUVILE1BQU07b0JBQU0sQ0FBQTtnQkFDdkRWO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO2dCQUNBQztZQUNGO1FBQ0Y7UUFFQSxJQUNFSyxNQUFNQyxJQUFJLEtBQUssaUJBQ2ZELE1BQU1DLElBQUksS0FBSyxTQUNkRCxNQUFNQyxJQUFJLEtB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
|
429
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC90cmF2ZXJzZUZpZWxkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIH0gZnJvbSAnLi9oYXNNYW55TnVtYmVyJ1xuaW1wb3J0IHsgdHJhbnNmb3JtSGFzTWFueVRleHQgfSBmcm9tICcuL2hhc01hbnlUZXh0J1xuaW1wb3J0IHsgdHJhbnNmb3JtUmVsYXRpb25zaGlwIH0gZnJvbSAnLi9yZWxhdGlvbnNoaXAnXG5cbnR5cGUgVHJhdmVyc2VGaWVsZHNBcmdzID0ge1xuICAvKipcbiAgICogUHJlLWZvcm1hdHRlZCBibG9ja3MgbWFwXG4gICAqL1xuICBibG9ja3M6IEJsb2Nrc01hcFxuICAvKipcbiAgICogVGhlIGZ1bGwgUGF5bG9hZCBjb25maWdcbiAgICovXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIC8qKlxuICAgKiBUaGUgZGF0YSByZWZlcmVuY2UgdG8gYmUgbXV0YXRlZCB3aXRoaW4gdGhpcyByZWN1cnNpdmUgZnVuY3Rpb25cbiAgICovXG4gIGRhdGFSZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBEYXRhIHRoYXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQgYWZ0ZXIgYWxsIGZpZWxkcyBoYXZlIHBvcHVsYXRlZFxuICAgKi9cbiAgZGVsZXRpb25zOiAoKCkgPT4gdm9pZClbXVxuICAvKipcbiAgICogQ29sdW1uIHByZWZpeCBjYW4gYmUgYnVpbHQgdXAgYnkgZ3JvdXAgYW5kIG5hbWVkIHRhYiBmaWVsZHNcbiAgICovXG4gIGZpZWxkUHJlZml4OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFBheWxvYWQgZmllbGRzIHRvIHRyYXZlcnNlXG4gICAqL1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgLyoqXG4gICAqIEFsbCBoYXNNYW55IG51bWJlciBmaWVsZHMsIGFzIHJldHVybmVkIGJ5IERyaXp6bGUsIGtleWVkIG9uIGFuIG9iamVjdCBieSBmaWVsZCBwYXRoXG4gICAqL1xuICBudW1iZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZmllbGQgcGF0aCAoaW4gZG90IG5vdGF0aW9uKSwgdXNlZCB0byBtZXJnZSBpbiByZWxhdGlvbnNoaXBzXG4gICAqL1xuICBwYXRoOiBzdHJpbmdcbiAgLyoqXG4gICAqIEFsbCByZWxhdGVkIGRvY3VtZW50cywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+XG4gIC8qKlxuICAgKiBEYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIG5lYXJlc3QgdGFibGUgZnJvbSBkYlxuICAgKi9cbiAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBBbGwgaGFzTWFueSB0ZXh0IGZpZWxkcywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHRleHRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxufVxuXG4vLyBUcmF2ZXJzZSBmaWVsZHMgcmVjdXJzaXZlbHksIHRyYW5zZm9ybWluZyBkYXRhXG4vLyBmb3IgZWFjaCBmaWVsZCB0eXBlIGludG8gcmVxdWlyZWQgUGF5bG9hZCBzaGFwZVxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICBibG9ja3MsXG4gIGNvbmZpZyxcbiAgZGF0YVJlZixcbiAgZGVsZXRpb25zLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBudW1iZXJzLFxuICBwYXRoLFxuICByZWxhdGlvbnNoaXBzLFxuICB0YWJsZSxcbiAgdGV4dHMsXG59OiBUcmF2ZXJzZUZpZWxkc0FyZ3MpOiBUID0+IHtcbiAgY29uc3Qgc2FuaXRpemVkUGF0aCA9IHBhdGggPyBgJHtwYXRofS5gIDogcGF0aFxuXG4gIGNvbnN0IGZvcm1hdHRlZCA9IGZpZWxkcy5yZWR1Y2UoKHJlc3VsdCwgZmllbGQpID0+IHtcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGJsb2NrcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkYXRhUmVmLFxuICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBudW1iZXJzLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICB0YWJsZSxcbiAgICAgICAgdGV4dHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdjb2xsYXBzaWJsZScgfHxcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdyb3cnIHx8XG4gICAgICAoZmllbGQudHlwZSA9PT0gJ3RhYicgJiYgISgnbmFtZScgaW4gZmllbGQpKVxuICAgICkge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBibG9ja3MsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZGF0YVJlZixcbiAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgIHRhYmxlLFxuICAgICAgICB0ZXh0cyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbZmllbGROYW1lXVxuXG4gICAgICBpZiAoZmllbGRQcmVmaXgpIHtcbiAgICAgICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlW2ZpZWxkTmFtZV0pXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChhcnJheVJlc3VsdCwgcm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93Ll9sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhcnJheVJlc3VsdFtyb3cuX2xvY2FsZV0pIGFycmF5UmVzdWx0W3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge31cbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByb3dSZXN1bHQgPSB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6ICcnLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9LiR7cm93Ll9vcmRlciAtIDF9YCxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmICgnX29yZGVyJyBpbiByb3dSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3dSZXN1bHQuX29yZGVyXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYXJyYXlSZXN1bHRbbG9jYWxlXS5wdXNoKHJvd1Jlc3VsdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBhcnJheVJlc3VsdFxuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgcm93LmlkID0gcm93Ll91dWlkXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJvdykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX29yZGVyXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VGaWVsZHM8VD4oe1xuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgZGF0YVJlZjogcm93LFxuICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXRoOiBgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX0uJHtpfWAsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYmxvY2tzJykge1xuICAgICAgICBjb25zdCBibG9ja0ZpZWxkUGF0aCA9IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShibG9ja3NbYmxvY2tGaWVsZFBhdGhdKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgICAgIGJsb2Nrc1tibG9ja0ZpZWxkUGF0aF0uZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyb3cuX3V1aWQpIHtcbiAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll91dWlkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cuX2xvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0pIHJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fbG9jYWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3VsdFtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZSwgbG9jYWxpemVkQmxvY2tzXSkgPT4ge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV1bbG9jYWxlXSA9IGxvY2FsaXplZEJsb2Nrcy5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKHsgc2x1ZyB9KSA9PiBzbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9ja1Jlc3VsdCA9IHRyYXZlcnNlRmllbGRzPFQ+KHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFSZWY6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJHtibG9ja0ZpZWxkUGF0aH0uJHtyb3cuX29yZGVyIC0gMX1gLFxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBibG9ja1Jlc3VsdC5fb3JkZXJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1Jlc3VsdFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gYmxvY2tzW2Jsb2NrRmllbGRQYXRoXS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICBkZWxldGUgcm93Ll9vcmRlclxuICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgcm93LmlkID0gcm93Ll91dWlkXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKHsgc2x1ZyB9KSA9PiBzbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgICBwYXRoOiBgJHtibG9ja0ZpZWxkUGF0aH0uJHtpfWAsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgdGFibGU6IHJvdyxcbiAgICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4ge31cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgfHwgZmllbGQudHlwZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpb25QYXRoTWF0Y2ggPSByZWxhdGlvbnNoaXBzW2Ake3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBdXG4gICAgICAgIGlmICghcmVsYXRpb25QYXRoTWF0Y2gpIHtcbiAgICAgICAgICBpZiAoJ2hhc01hbnknIGluIGZpZWxkICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgY29uZmlnLmxvY2FsaXphdGlvbiAmJiBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZXMpIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIFtjb25maWcubG9jYWxpemF0aW9uLmRlZmF1bHRMb2NhbGVdOiBbXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCByZWxhdGlvbnNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgcmVsYXRpb25QYXRoTWF0Y2guZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGlmICghcmVsYXRpb25zQnlMb2NhbGVbcm93LmxvY2FsZV0pIHJlbGF0aW9uc0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgcmVsYXRpb25zQnlMb2NhbGVbcm93LmxvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uc0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCByZWxhdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyYW5zZm9ybVJlbGF0aW9uc2hpcCh7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgcmVsYXRpb25zOiByZWxhdGlvblBhdGhNYXRjaCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RleHQnICYmIGZpZWxkPy5oYXNNYW55KSB7XG4gICAgICAgIGNvbnN0IHRleHRQYXRoTWF0Y2ggPSB0ZXh0c1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIXRleHRQYXRoTWF0Y2gpIHJldHVybiByZXN1bHRcblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCB0ZXh0c0J5TG9jYWxlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPiA9IHt9XG5cbiAgICAgICAgICB0ZXh0UGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIXRleHRzQnlMb2NhbGVbcm93LmxvY2FsZV0pIHRleHRzQnlMb2NhbGVbcm93LmxvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICB0ZXh0c0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyh0ZXh0c0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCB0ZXh0c10pID0+IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybUhhc01hbnlUZXh0KHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICAgIHRleHRSb3dzOiB0ZXh0cyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55VGV4dCh7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgdGV4dFJvd3M6IHRleHRQYXRoTWF0Y2gsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgY29uc3QgbnVtYmVyUGF0aE1hdGNoID0gbnVtYmVyc1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIW51bWJlclBhdGhNYXRjaCkgcmV0dXJuIHJlc3VsdFxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICAgIGNvbnN0IG51bWJlcnNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgbnVtYmVyUGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIW51bWJlcnNCeUxvY2FsZVtyb3cubG9jYWxlXSkgbnVtYmVyc0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgbnVtYmVyc0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhudW1iZXJzQnlMb2NhbGUpLmZvckVhY2goKFtsb2NhbGUsIG51bWJlcnNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgbnVtYmVyUm93czogbnVtYmVycyxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhbnNmb3JtSGFzTWFueU51bWJlcih7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIG51bWJlclJvd3M6IG51bWJlclBhdGhNYXRjaCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChzZWxlY3RSZXN1bHQsIHJvdykgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RSZXN1bHRbcm93LmxvY2FsZV0pIHNlbGVjdFJlc3VsdFtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgc2VsZWN0UmVzdWx0W3Jvdy5sb2NhbGVdLnB1c2gocm93LnZhbHVlKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdFJlc3VsdFxuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgY29uc3QgbG9jYWxpemVkRmllbGREYXRhID0ge31cbiAgICAgIGNvbnN0IHZhbHVlc1RvVHJhbnNmb3JtOiB7XG4gICAgICAgIHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9W10gPSBbXVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgICAgIHRhYmxlLl9sb2NhbGVzLmZvckVhY2goKGxvY2FsZVJvdykgPT4ge1xuICAgICAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLnB1c2goeyByZWY6IGxvY2FsaXplZEZpZWxkRGF0YSwgdGFibGU6IGxvY2FsZVJvdyB9KVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVzVG9UcmFuc2Zvcm0ucHVzaCh7IHJlZjogcmVzdWx0LCB0YWJsZSB9KVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5mb3JFYWNoKCh7IHJlZiwgdGFibGUgfSkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZERhdGEgPSB0YWJsZVtgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGFibGU/Ll9sb2NhbGVcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZFByZWZpeCA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1fYFxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJyAmJiAhcmVmW2xvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHt9XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRhYmxlLl9sb2NhbGVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlZikuZm9yRWFjaCgoW2dyb3VwTG9jYWxlLCBncm91cExvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVmW2dyb3VwTG9jYWxlXSA9IHRyYXZlcnNlRmllbGRzPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBncm91cExvY2FsZURhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogZ3JvdXBGaWVsZFByZWZpeCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBpZiAoJ19vcmRlcicgaW4gcmVmKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJlZi5fb3JkZXJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZ3JvdXBEYXRhID0ge31cblxuICAgICAgICAgICAgICByZWZbZmllbGQubmFtZV0gPSB0cmF2ZXJzZUZpZWxkczxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgZGF0YVJlZjogZ3JvdXBEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogZ3JvdXBGaWVsZFByZWZpeCxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJlZikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByZWYuX29yZGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0ZXh0Jzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IFN0cmluZyhmaWVsZERhdGEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IE51bWJlci5wYXJzZUZsb2F0KGZpZWxkRGF0YSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gdmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdmFsID0gbmV3IERhdGUoZmllbGREYXRhKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gZmllbGREYXRhXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhsb2NhbGl6ZWRGaWVsZERhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gbG9jYWxpemVkRmllbGREYXRhXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sIGRhdGFSZWYpXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlLl9sb2NhbGVzKVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZCBhcyBUXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJibG9ja3MiLCJjb25maWciLCJkYXRhUmVmIiwiZGVsZXRpb25zIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJudW1iZXJzIiwicGF0aCIsInJlbGF0aW9uc2hpcHMiLCJ0YWJsZSIsInRleHRzIiwic2FuaXRpemVkUGF0aCIsImZvcm1hdHRlZCIsInJlZHVjZSIsInJlc3VsdCIsImZpZWxkIiwidHlwZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJmaWVsZEFmZmVjdHNEYXRhIiwiZmllbGROYW1lIiwibmFtZSIsImZpZWxkRGF0YSIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJsb2NhbGl6ZWQiLCJhcnJheVJlc3VsdCIsInJvdyIsIl9sb2NhbGUiLCJsb2NhbGUiLCJkYXRhIiwiX3V1aWQiLCJpZCIsInJvd1Jlc3VsdCIsIl9vcmRlciIsImkiLCJibG9ja0ZpZWxkUGF0aCIsImZvckVhY2giLCJPYmplY3QiLCJlbnRyaWVzIiwibG9jYWxpemVkQmxvY2tzIiwiYmxvY2siLCJmaW5kIiwic2x1ZyIsImJsb2NrVHlwZSIsImJsb2NrUmVzdWx0IiwicmVsYXRpb25QYXRoTWF0Y2giLCJoYXNNYW55IiwibG9jYWxpemF0aW9uIiwibG9jYWxlcyIsImRlZmF1bHRMb2NhbGUiLCJyZWxhdGlvbnNCeUxvY2FsZSIsInJlbGF0aW9ucyIsInRyYW5zZm9ybVJlbGF0aW9uc2hpcCIsInJlZiIsInRleHRQYXRoTWF0Y2giLCJ0ZXh0c0J5TG9jYWxlIiwidHJhbnNmb3JtSGFzTWFueVRleHQiLCJ0ZXh0Um93cyIsIm51bWJlclBhdGhNYXRjaCIsIm51bWJlcnNCeUxvY2FsZSIsInRyYW5zZm9ybUhhc01hbnlOdW1iZXIiLCJudW1iZXJSb3dzIiwic2VsZWN0UmVzdWx0IiwidmFsdWUiLCJsb2NhbGl6ZWRGaWVsZERhdGEiLCJ2YWx1ZXNUb1RyYW5zZm9ybSIsIl9sb2NhbGVzIiwibG9jYWxlUm93IiwiZ3JvdXBGaWVsZFByZWZpeCIsImdyb3VwTG9jYWxlIiwiZ3JvdXBMb2NhbGVEYXRhIiwiZ3JvdXBEYXRhIiwidmFsIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImtleXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkE2RHZCQTs7O2VBQUFBOzs7dUJBekRvQjsrQkFJTTs2QkFDRjs4QkFDQztBQW1EL0IsTUFBTUEsaUJBQWlCLENBQW9DLEVBQ2hFQyxNQUFNLEVBQ05DLE1BQU0sRUFDTkMsT0FBTyxFQUNQQyxTQUFT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
|