UNPKG

@valueflows/vf-graphql-holochain

Version:

GraphQL schema bindings for the Holochain implementation of ValueFlows

114 lines 21.6 kB
/** * Resolvers for agent fields * * @package: hREA * @since: 2020-05-28 */ import { mapZomeFn } from '../connection.js'; import { DEFAULT_VF_MODULES, VfModule } from '../types.js'; export default (enabledVFModules = DEFAULT_VF_MODULES, dnaConfig, conductorUri) => { const hasHistory = -1 !== enabledVFModules.indexOf(VfModule.History); const hasProcess = -1 !== enabledVFModules.indexOf(VfModule.Process); const hasCommitment = -1 !== enabledVFModules.indexOf(VfModule.Commitment); const hasIntent = -1 !== enabledVFModules.indexOf(VfModule.Intent); const hasObservation = -1 !== enabledVFModules.indexOf(VfModule.Observation); const hasPlan = -1 !== enabledVFModules.indexOf(VfModule.Plan); const hasProposal = -1 !== enabledVFModules.indexOf(VfModule.Proposal); const readRevision = mapZomeFn(dnaConfig, conductorUri, 'agent', 'agent', 'get_revision'); const readProcesses = mapZomeFn(dnaConfig, conductorUri, 'observation', 'process_index', 'query_processes'); const queryCommitments = mapZomeFn(dnaConfig, conductorUri, 'planning', 'commitment_index', 'query_commitments'); const queryIntents = mapZomeFn(dnaConfig, conductorUri, 'planning', 'intent_index', 'query_intents'); const queryEconomicEvents = mapZomeFn(dnaConfig, conductorUri, 'observation', 'economic_event_index', 'query_economic_events'); const queryEconomicResources = mapZomeFn(dnaConfig, conductorUri, 'observation', 'economic_resource_index', 'query_economic_resources'); const queryPlans = mapZomeFn(dnaConfig, conductorUri, 'plan', 'plan_index', 'query_plans'); const queryProposals = mapZomeFn(dnaConfig, conductorUri, 'plan', 'plan_index', 'query_plans'); return Object.assign({ __resolveType: (obj, ctx, info) => obj.__typename }, { relationships: async (record) => { throw new Error('resolver unimplemented'); }, relationshipsAsSubject: async (record) => { throw new Error('resolver unimplemented'); }, relationshipsAsObject: async (record) => { throw new Error('resolver unimplemented'); }, roles: async (record) => { throw new Error('resolver unimplemented'); }, }, (hasProcess ? { processes: async (record) => { // const results = await readProcesses({ params: { inScopeOf: record.id } }) // return results throw new Error('resolver unimplemented'); }, } : {}), (hasCommitment ? { commitments: async (record) => { // const commitments = await queryCommitments({ params: { inScopeOf: record.id } }) // return commitments throw new Error('resolver unimplemented'); }, commitmentsInScope: async (record) => { throw new Error('resolver unimplemented'); }, commitmentsAsProvider: async (record) => { return await queryCommitments({ params: { provider: record.id } }); }, commitmentsAsReceiver: async (record) => { return await queryCommitments({ params: { receiver: record.id } }); }, } : {}), (hasIntent ? { intents: async (record) => { // const intents = await queryIntents({ params: { inScopeOf: record.id } }) // return intents throw new Error('resolver unimplemented'); }, intentsAsProvider: async (record) => { return await queryIntents({ params: { provider: record.id } }); }, intentsAsReceiver: async (record) => { return await queryIntents({ params: { receiver: record.id } }); }, } : {}), (hasObservation ? { economicEvents: async (record) => { // const economicEvents = await queryEconomicEvents({ params: { inScopeOf: record.id } }) // return economicEvents throw new Error('resolver unimplemented'); }, economicEventsInScope: async (record) => { throw new Error('resolver unimplemented'); }, inventoriedEconomicResources: async (record) => { const economicResources = await queryEconomicResources({ params: { primaryAccountable: record.id } }); return economicResources; }, economicEventsAsProvider: async (record) => { return await queryEconomicEvents({ params: { provider: record.id } }); }, economicEventsAsReceiver: async (record) => { return await queryEconomicEvents({ params: { receiver: record.id } }); }, } : {}), (hasPlan ? { plans: async (record) => { // const plans = await queryPlans({ params: { inScopeOf: record.id } }) // return plans throw new Error('resolver unimplemented'); }, } : {}), (hasProposal ? { proposals: async (record) => { // const proposals = await queryProposals({ params: { inScopeOf: record.id } }) // return proposals throw new Error('resolver unimplemented'); }, proposalsInScope: async (record) => { throw new Error('resolver unimplemented'); }, proposalsTo: async (record) => { throw new Error('resolver unimplemented'); }, } : {}), (hasHistory ? { revision: async (record, args) => { return (await readRevision(args)).agent; }, } : {})); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yZXNvbHZlcnMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFtQkgsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxRCxPQUFPLEVBQWlCLGtCQUFrQixFQUFFLFFBQVEsRUFBcUMsTUFBTSxhQUFhLENBQUE7QUFJNUcsZUFBZSxDQUFDLG1CQUErQixrQkFBa0IsRUFBRSxTQUF3QixFQUFFLFlBQW9CLEVBQUUsRUFBRTtJQUNuSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMxRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5RCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXRFLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBb0QsU0FB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V0FBVyxFQUFFLEtBQUssRUFBRSxNQUFhLEVBQStCLEVBQUU7WUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzNDLENBQUM7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDUCxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDWixRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQWEsRUFBRSxJQUEyQyxFQUFrQixFQUFFO1lBQzdGLE9BQU8sQ0FBQyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUN6QyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ1IsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZXJzIGZvciBhZ2VudCBmaWVsZHNcbiAqXG4gKiBAcGFja2FnZTogaFJFQVxuICogQHNpbmNlOiAgIDIwMjAtMDUtMjhcbiAqL1xuXG5pbXBvcnQge1xuICBQcm9jZXNzLFxuICBQbGFuUHJvY2Vzc0ZpbHRlclBhcmFtcyxcbiAgUGxhbixcbiAgQ29tbWl0bWVudCxcbiAgUHJvY2Vzc0Nvbm5lY3Rpb24sXG4gIENvbW1pdG1lbnRDb25uZWN0aW9uLFxuICBBZ2VudCxcbiAgUGVyc29uUmVzcG9uc2UsIE9yZ2FuaXphdGlvblJlc3BvbnNlLFxuICBJbnRlbnRDb25uZWN0aW9uLFxuICBFY29ub21pY0V2ZW50Q29ubmVjdGlvbixcbiAgRWNvbm9taWNSZXNvdXJjZUNvbm5lY3Rpb24sXG4gIFBsYW5Db25uZWN0aW9uLFxuICBQcm9wb3NhbENvbm5lY3Rpb24sXG4gIEFnZW50UmVsYXRpb25zaGlwQ29ubmVjdGlvbixcbiAgQWdlbnRSZWxhdGlvbnNoaXBSb2xlXG59IGZyb20gJ0B2YWx1ZWZsb3dzL3ZmLWdyYXBocWwnXG5pbXBvcnQgeyBleHRyYWN0RWRnZXMsIG1hcFpvbWVGbiB9IGZyb20gJy4uL2Nvbm5lY3Rpb24uanMnXG5pbXBvcnQgeyBETkFJZE1hcHBpbmdzLCBERUZBVUxUX1ZGX01PRFVMRVMsIFZmTW9kdWxlLCBCeVJldmlzaW9uLCBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy5qcydcbmltcG9ydCB7IENvbW1pdG1lbnRTZWFyY2hJbnB1dCwgRWNvbm9taWNFdmVudFNlYXJjaElucHV0LCBFY29ub21pY1Jlc291cmNlU2VhcmNoSW5wdXQsIEludGVudFNlYXJjaElucHV0LCBQbGFuU2VhcmNoSW5wdXQsIFByb2Nlc3NTZWFyY2hJbnB1dCwgUHJvcG9zYWxTZWFyY2hJbnB1dCB9IGZyb20gJy4vem9tZVNlYXJjaElucHV0VHlwZXMuanMnXG5cblxuZXhwb3J0IGRlZmF1bHQgKGVuYWJsZWRWRk1vZHVsZXM6IFZmTW9kdWxlW10gPSBERUZBVUxUX1ZGX01PRFVMRVMsIGRuYUNvbmZpZzogRE5BSWRNYXBwaW5ncywgY29uZHVjdG9yVXJpOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaGFzSGlzdG9yeSA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuSGlzdG9yeSlcbiAgY29uc3QgaGFzUHJvY2VzcyA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuUHJvY2VzcylcbiAgY29uc3QgaGFzQ29tbWl0bWVudCA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuQ29tbWl0bWVudClcbiAgY29uc3QgaGFzSW50ZW50ID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5JbnRlbnQpXG4gIGNvbnN0IGhhc09ic2VydmF0aW9uID0gLTEgIT09IGVuYWJsZWRWRk1vZHVsZXMuaW5kZXhPZihWZk1vZHVsZS5PYnNlcnZhdGlvbilcbiAgY29uc3QgaGFzUGxhbiA9IC0xICE9PSBlbmFibGVkVkZNb2R1bGVzLmluZGV4T2YoVmZNb2R1bGUuUGxhbilcbiAgY29uc3QgaGFzUHJvcG9zYWwgPSAtMSAhPT0gZW5hYmxlZFZGTW9kdWxlcy5pbmRleE9mKFZmTW9kdWxlLlByb3Bvc2FsKVxuXG4gIGNvbnN0IHJlYWRSZXZpc2lvbiA9IG1hcFpvbWVGbjxCeVJldmlzaW9uLCBQZXJzb25SZXNwb25zZSB8IE9yZ2FuaXphdGlvblJlc3BvbnNlPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ2FnZW50JywgJ2FnZW50JywgJ2dldF9yZXZpc2lvbicpXG4gIGNvbnN0IHJlYWRQcm9jZXNzZXMgPSBtYXBab21lRm48UHJvY2Vzc1NlYXJjaElucHV0LCBQcm9jZXNzQ29ubmVjdGlvbj4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdvYnNlcnZhdGlvbicsICdwcm9jZXNzX2luZGV4JywgJ3F1ZXJ5X3Byb2Nlc3NlcycpXG4gIGNvbnN0IHF1ZXJ5Q29tbWl0bWVudHMgPSBtYXBab21lRm48Q29tbWl0bWVudFNlYXJjaElucHV0LCBDb21taXRtZW50Q29ubmVjdGlvbj4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdwbGFubmluZycsICdjb21taXRtZW50X2luZGV4JywgJ3F1ZXJ5X2NvbW1pdG1lbnRzJylcbiAgY29uc3QgcXVlcnlJbnRlbnRzID0gbWFwWm9tZUZuPEludGVudFNlYXJjaElucHV0LCBJbnRlbnRDb25uZWN0aW9uPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ3BsYW5uaW5nJywgJ2ludGVudF9pbmRleCcsICdxdWVyeV9pbnRlbnRzJylcbiAgY29uc3QgcXVlcnlFY29ub21pY0V2ZW50cyA9IG1hcFpvbWVGbjxFY29ub21pY0V2ZW50U2VhcmNoSW5wdXQsIEVjb25vbWljRXZlbnRDb25uZWN0aW9uPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ29ic2VydmF0aW9uJywgJ2Vjb25vbWljX2V2ZW50X2luZGV4JywgJ3F1ZXJ5X2Vjb25vbWljX2V2ZW50cycpXG4gIGNvbnN0IHF1ZXJ5RWNvbm9taWNSZXNvdXJjZXMgPSBtYXBab21lRm48RWNvbm9taWNSZXNvdXJjZVNlYXJjaElucHV0LCBFY29ub21pY1Jlc291cmNlQ29ubmVjdGlvbj4oZG5hQ29uZmlnLCBjb25kdWN0b3JVcmksICdvYnNlcnZhdGlvbicsICdlY29ub21pY19yZXNvdXJjZV9pbmRleCcsICdxdWVyeV9lY29ub21pY19yZXNvdXJjZXMnKVxuICBjb25zdCBxdWVyeVBsYW5zID0gbWFwWm9tZUZuPFBsYW5TZWFyY2hJbnB1dCwgUGxhbkNvbm5lY3Rpb24+KGRuYUNvbmZpZywgY29uZHVjdG9yVXJpLCAncGxhbicsICdwbGFuX2luZGV4JywgJ3F1ZXJ5X3BsYW5zJylcbiAgY29uc3QgcXVlcnlQcm9wb3NhbHMgPSBtYXBab21lRm48UHJvcG9zYWxTZWFyY2hJbnB1dCwgUHJvcG9zYWxDb25uZWN0aW9uPihkbmFDb25maWcsIGNvbmR1Y3RvclVyaSwgJ3BsYW4nLCAncGxhbl9pbmRleCcsICdxdWVyeV9wbGFucycpXG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgeyBfX3Jlc29sdmVUeXBlOiAob2JqLCBjdHgsIGluZm8pID0+IG9iai5fX3R5cGVuYW1lIH0sXG4gICAge1xuICAgICAgcmVsYXRpb25zaGlwczogYXN5bmMgKHJlY29yZDogQWdlbnQpOiBQcm9taXNlPEFnZW50UmVsYXRpb25zaGlwQ29ubmVjdGlvbj4gPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICAgIHJlbGF0aW9uc2hpcHNBc1N1YmplY3Q6IGFzeW5jIChyZWNvcmQ6IEFnZW50KTogUHJvbWlzZTxBZ2VudFJlbGF0aW9uc2hpcENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgICByZWxhdGlvbnNoaXBzQXNPYmplY3Q6IGFzeW5jIChyZWNvcmQ6IEFnZW50KTogUHJvbWlzZTxBZ2VudFJlbGF0aW9uc2hpcENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgICByb2xlczogYXN5bmMgKHJlY29yZDogQWdlbnQpOiBQcm9taXNlPEFnZW50UmVsYXRpb25zaGlwUm9sZVtdPiA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZXIgdW5pbXBsZW1lbnRlZCcpXG4gICAgICB9LFxuICAgIH0sXG4gICAgKGhhc1Byb2Nlc3MgPyB7XG4gICAgICBwcm9jZXNzZXM6IGFzeW5jIChyZWNvcmQ6IEFnZW50KTogUHJvbWlzZTxQcm9jZXNzQ29ubmVjdGlvbj4gPT4ge1xuICAgICAgICAvLyBjb25zdCByZXN1bHRzID0gYXdhaXQgcmVhZFByb2Nlc3Nlcyh7IHBhcmFtczogeyBpblNjb3BlT2Y6IHJlY29yZC5pZCB9IH0pXG4gICAgICAgIC8vIHJldHVybiByZXN1bHRzXG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZXIgdW5pbXBsZW1lbnRlZCcpXG4gICAgICB9LFxuICAgIH0gOiB7fSksXG4gICAgKGhhc0NvbW1pdG1lbnQgPyB7XG4gICAgICBjb21taXRtZW50czogYXN5bmMgKHJlY29yZDogQWdlbnQpOiBQcm9taXNlPENvbW1pdG1lbnRDb25uZWN0aW9uPiA9PiB7XG4gICAgICAgIC8vIGNvbnN0IGNvbW1pdG1lbnRzID0gYXdhaXQgcXVlcnlDb21taXRtZW50cyh7IHBhcmFtczogeyBpblNjb3BlT2Y6IHJlY29yZC5pZCB9IH0pXG4gICAgICAgIC8vIHJldHVybiBjb21taXRtZW50c1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICAgIGNvbW1pdG1lbnRzSW5TY29wZTogYXN5bmMgKHJlY29yZDogQWdlbnQpOiBQcm9taXNlPENvbW1pdG1lbnRDb25uZWN0aW9uPiA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZXIgdW5pbXBsZW1lbnRlZCcpXG4gICAgICB9LFxuICAgICAgY29tbWl0bWVudHNBc1Byb3ZpZGVyOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8Q29tbWl0bWVudENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHF1ZXJ5Q29tbWl0bWVudHMoeyBwYXJhbXM6IHsgcHJvdmlkZXI6IHJlY29yZC5pZCB9IH0pXG4gICAgICB9LFxuICAgICAgY29tbWl0bWVudHNBc1JlY2VpdmVyOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8Q29tbWl0bWVudENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHF1ZXJ5Q29tbWl0bWVudHMoeyBwYXJhbXM6IHsgcmVjZWl2ZXI6IHJlY29yZC5pZCB9IH0pXG4gICAgICB9LFxuICAgIH0gOiB7fSksXG4gICAgKGhhc0ludGVudCA/IHtcbiAgICAgIGludGVudHM6IGFzeW5jIChyZWNvcmQ6IEFnZW50KTogUHJvbWlzZTxJbnRlbnRDb25uZWN0aW9uPiA9PiB7XG4gICAgICAgIC8vIGNvbnN0IGludGVudHMgPSBhd2FpdCBxdWVyeUludGVudHMoeyBwYXJhbXM6IHsgaW5TY29wZU9mOiByZWNvcmQuaWQgfSB9KVxuICAgICAgICAvLyByZXR1cm4gaW50ZW50c1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICAgIGludGVudHNBc1Byb3ZpZGVyOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8SW50ZW50Q29ubmVjdGlvbj4gPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnlJbnRlbnRzKHsgcGFyYW1zOiB7IHByb3ZpZGVyOiByZWNvcmQuaWQgfSB9KVxuICAgICAgfSxcbiAgICAgIGludGVudHNBc1JlY2VpdmVyOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8SW50ZW50Q29ubmVjdGlvbj4gPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnlJbnRlbnRzKHsgcGFyYW1zOiB7IHJlY2VpdmVyOiByZWNvcmQuaWQgfSB9KVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNPYnNlcnZhdGlvbiA/IHtcbiAgICAgIGVjb25vbWljRXZlbnRzOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8RWNvbm9taWNFdmVudENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgLy8gY29uc3QgZWNvbm9taWNFdmVudHMgPSBhd2FpdCBxdWVyeUVjb25vbWljRXZlbnRzKHsgcGFyYW1zOiB7IGluU2NvcGVPZjogcmVjb3JkLmlkIH0gfSlcbiAgICAgICAgLy8gcmV0dXJuIGVjb25vbWljRXZlbnRzXG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZXIgdW5pbXBsZW1lbnRlZCcpXG4gICAgICB9LFxuICAgICAgZWNvbm9taWNFdmVudHNJblNjb3BlOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8RWNvbm9taWNFdmVudENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgICBpbnZlbnRvcmllZEVjb25vbWljUmVzb3VyY2VzOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8RWNvbm9taWNSZXNvdXJjZUNvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgZWNvbm9taWNSZXNvdXJjZXMgPSBhd2FpdCBxdWVyeUVjb25vbWljUmVzb3VyY2VzKHsgcGFyYW1zOiB7IHByaW1hcnlBY2NvdW50YWJsZTogcmVjb3JkLmlkIH0gfSlcbiAgICAgICAgcmV0dXJuIGVjb25vbWljUmVzb3VyY2VzXG4gICAgICB9LFxuICAgICAgZWNvbm9taWNFdmVudHNBc1Byb3ZpZGVyOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8RWNvbm9taWNFdmVudENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHF1ZXJ5RWNvbm9taWNFdmVudHMoeyBwYXJhbXM6IHsgcHJvdmlkZXI6IHJlY29yZC5pZCB9IH0pXG4gICAgICB9LFxuICAgICAgZWNvbm9taWNFdmVudHNBc1JlY2VpdmVyOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8RWNvbm9taWNFdmVudENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHF1ZXJ5RWNvbm9taWNFdmVudHMoeyBwYXJhbXM6IHsgcmVjZWl2ZXI6IHJlY29yZC5pZCB9IH0pXG4gICAgICB9LFxuICAgIH0gOiB7fSksXG4gICAgKGhhc1BsYW4gPyB7XG4gICAgICBwbGFuczogYXN5bmMgKHJlY29yZDogQWdlbnQpOiBQcm9taXNlPFBsYW5Db25uZWN0aW9uPiA9PiB7XG4gICAgICAgIC8vIGNvbnN0IHBsYW5zID0gYXdhaXQgcXVlcnlQbGFucyh7IHBhcmFtczogeyBpblNjb3BlT2Y6IHJlY29yZC5pZCB9IH0pXG4gICAgICAgIC8vIHJldHVybiBwbGFuc1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVyIHVuaW1wbGVtZW50ZWQnKVxuICAgICAgfSxcbiAgICB9IDoge30pLFxuICAgIChoYXNQcm9wb3NhbCA/IHtcbiAgICAgIHByb3Bvc2FsczogYXN5bmMgKHJlY29yZDogQWdlbnQpOiBQcm9taXNlPFByb3Bvc2FsQ29ubmVjdGlvbj4gPT4ge1xuICAgICAgICAvLyBjb25zdCBwcm9wb3NhbHMgPSBhd2FpdCBxdWVyeVByb3Bvc2Fscyh7IHBhcmFtczogeyBpblNjb3BlT2Y6IHJlY29yZC5pZCB9IH0pXG4gICAgICAgIC8vIHJldHVybiBwcm9wb3NhbHNcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgICBwcm9wb3NhbHNJblNjb3BlOiBhc3luYyAocmVjb3JkOiBBZ2VudCk6IFByb21pc2U8UHJvcG9zYWxDb25uZWN0aW9uPiA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZXIgdW5pbXBsZW1lbnRlZCcpXG4gICAgICB9LFxuICAgICAgcHJvcG9zYWxzVG86IGFzeW5jIChyZWNvcmQ6IEFnZW50KTogUHJvbWlzZTxQcm9wb3NhbENvbm5lY3Rpb24+ID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlciB1bmltcGxlbWVudGVkJylcbiAgICAgIH0sXG4gICAgfSA6IHt9KSxcbiAgICAoaGFzSGlzdG9yeSA/IHtcbiAgICAgIHJldmlzaW9uOiBhc3luYyAocmVjb3JkOiBBZ2VudCwgYXJnczogeyByZXZpc2lvbklkOiBBZGRyZXNzYWJsZUlkZW50aWZpZXIgfSk6IFByb21pc2U8QWdlbnQ+ID0+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCByZWFkUmV2aXNpb24oYXJncykpLmFnZW50XG4gICAgICB9LFxuICAgIH0gOiB7fSksXG4gIClcbn1cblxuIl19