UNPKG

cdk-amazon-chime-resources

Version:

![Experimental](https://img.shields.io/badge/experimental-important.svg?style=for-the-badge)

196 lines 29.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = void 0; const phoneAssociation_1 = require("./phoneAssociation"); const phoneNumber_1 = require("./phoneNumber"); const sipMediaApp_1 = require("./sipMediaApp"); const sipRule_1 = require("./sipRule"); const voiceConnector_1 = require("./voiceConnector"); const voiceProfileDomain_1 = require("./voiceProfileDomain"); const response = {}; let resourcePropertiesUid; let requestProperties; const handler = async (event, context) => { console.info('event: ', event); const resourceType = event.ResourceProperties.resourceType; const requestType = event.RequestType; resourcePropertiesUid = event.ResourceProperties.uid; requestProperties = event.ResourceProperties.properties; response.StackId = event.StackId; response.RequestId = event.RequestId; response.LogicalResourceId = event.LogicalResourceId; response.PhysicalResourceId = context.logGroupName; switch (resourceType) { case 'PhoneNumber': switch (requestType) { case 'Create': console.log('Create Phone Number'); response.Data = await (0, phoneNumber_1.CreatePhoneNumber)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'CreatePhoneNumber successful'; break; case 'Update': console.log('Update Phone Number'); response.Status = 'SUCCESS'; break; case 'Delete': console.log('Delete Phone Number'); await (0, phoneNumber_1.DeletePhoneNumber)(resourcePropertiesUid); response.Status = 'SUCCESS'; response.Reason = 'DeletePhoneNumber successful'; break; } break; case 'SMARule': switch (requestType) { case 'Create': console.log('Create SIP Rule'); response.Data = await (0, sipRule_1.CreateSIPRule)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'CreateSMARule successful'; break; case 'Update': console.log('Update SIP Rule'); response.Status = 'SUCCESS'; break; case 'Delete': console.log('Delete SIP Rule'); await (0, sipRule_1.DeleteSIPRule)(resourcePropertiesUid); response.Status = 'SUCCESS'; response.Reason = 'DeleteSMARule successful'; break; } break; case 'SMA': switch (requestType) { case 'Create': console.log('Create SIP Media Application'); response.Data = await (0, sipMediaApp_1.CreateSipMediaApplication)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'Create SMA successful'; break; case 'Update': console.log('Update SIP Media Application'); response.Status = 'SUCCESS'; break; case 'Delete': console.log('Delete SIP Media Application'); await (0, sipMediaApp_1.DeleteSipMediaApplication)(resourcePropertiesUid); response.Status = 'SUCCESS'; response.Reason = 'Delete SMA successful'; break; } break; case 'SMALogging': switch (requestType) { case 'Create': console.log('Create SIP Media Application Logging'); response.Data = await (0, sipMediaApp_1.PutSipMediaApplicationLogging)(requestProperties); response.Status = 'SUCCESS'; response.Reason = 'PutSipMediaApplicationLogging successful'; break; case 'Update': console.log('Update SIP Media Application Logging'); response.Data = await (0, sipMediaApp_1.PutSipMediaApplicationLogging)(requestProperties); response.Status = 'SUCCESS'; response.Reason = 'PutSipMediaApplicationLogging successful'; break; case 'Delete': console.log('Delete SIP Media Application Logging'); response.Status = 'SUCCESS'; response.Reason = 'PutSipMediaApplicationLogging Delete NoOP'; break; } break; case 'SMAAlexaSkill': switch (requestType) { case 'Create': console.log('Create SIP Media Application Alexa Skill'); response.Data = await (0, sipMediaApp_1.PutSipMediaApplicationAlexaSkill)(requestProperties); response.Status = 'SUCCESS'; response.Reason = 'PutSipMediaApplicationAlexaSkill successful'; break; case 'Update': console.log('Update SIP Media Application Alexa Skill'); response.Data = await (0, sipMediaApp_1.PutSipMediaApplicationAlexaSkill)(requestProperties); response.Status = 'SUCCESS'; response.Reason = 'PutSipMediaApplicationAlexaSkill successful'; break; case 'Delete': console.log('DSIP Media Application Alexa Skill'); response.Status = 'SUCCESS'; response.Reason = 'PutSipMediaApplicationAlexaSkill Delete NoOP'; break; } break; case 'VoiceConnector': switch (requestType) { case 'Create': console.log('Voice Connector Create'); response.Data = await (0, voiceConnector_1.CreateVoiceConnector)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'Create VC successful'; break; case 'Update': console.log('Voice Connector Update'); response.Data = await (0, voiceConnector_1.UpdateVoiceConnector)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'Update VC successful'; break; case 'Delete': console.log('Voice Connector Delete'); await (0, voiceConnector_1.DeleteVoiceConnector)(resourcePropertiesUid); response.Status = 'SUCCESS'; response.Reason = 'Delete VC successful'; break; } break; case 'VoiceProfileDomain': switch (requestType) { case 'Create': console.log('Voice Profile Domain Create'); response.Data = await (0, voiceProfileDomain_1.CreateVoiceProfileDomain)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'Create Voice Profile Domain successful'; break; case 'Update': console.log('Voice Profile Domain Update'); await (0, voiceProfileDomain_1.UpdateVoiceProfileDomain)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; break; case 'Delete': console.log('Voice Profile Domain Delete'); await (0, voiceProfileDomain_1.DeleteVoiceProfileDomain)(resourcePropertiesUid); response.Status = 'SUCCESS'; response.Reason = 'Delete Voice Profile Domain successful'; break; } break; case 'PhoneAssociation': console.log('Phone Association'); switch (requestType) { case 'Create': console.log('Phone Association Create'); await (0, phoneAssociation_1.CreatePhoneAssociation)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'Phone Number Association successful'; break; case 'Update': console.log('Phone Association Update'); await (0, phoneAssociation_1.UpdatePhoneAssociation)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; break; case 'Delete': console.log('Phone Association Delete'); await (0, phoneAssociation_1.DeletePhoneAssociation)(resourcePropertiesUid, requestProperties); response.Status = 'SUCCESS'; response.Reason = 'Phone Number Dissociation successful'; break; } break; } console.log(`Response: ${JSON.stringify(response)}`); return response; }; exports.handler = handler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL3BzdG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEseURBSTRCO0FBRTVCLCtDQUFxRTtBQUVyRSwrQ0FLdUI7QUFFdkIsdUNBQXlEO0FBRXpELHFEQUkwQjtBQUUxQiw2REFJOEI7QUFJOUIsTUFBTSxRQUFRLEdBQThCLEVBQUUsQ0FBQztBQUMvQyxJQUFJLHFCQUE2QixDQUFDO0FBQ2xDLElBQUksaUJBQXFCLENBQUM7QUFFbkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUMxQixLQUE2QixFQUM3QixPQUFnQixFQUNvQixFQUFFO0lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7SUFDM0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO0lBQ3JELGlCQUFpQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7SUFFeEQsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNyQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0lBQ3JELFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBRW5ELFFBQVEsWUFBWSxFQUFFLENBQUM7UUFDckIsS0FBSyxhQUFhO1lBQ2hCLFFBQVEsV0FBVyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssUUFBUTtvQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENB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Q0FDbEIsQ0FBQztvQkFDRixRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztvQkFDNUIsUUFBUSxDQUFDLE1BQU0sR0FBRyxxQ0FBcUMsQ0FBQztvQkFDeEQsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO29CQUN4QyxNQUFNLElBQUEseUNBQXNCLEVBQzFCLHFCQUFxQixFQUNyQixpQkFBaUIsQ0FDbEIsQ0FBQztvQkFDRixRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztvQkFDNUIsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO29CQUN4QyxNQUFNLElBQUEseUNBQXNCLEVBQzFCLHFCQUFxQixFQUNyQixpQkFBaUIsQ0FDbEIsQ0FBQztvQkFDRixRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztvQkFDNUIsUUFBUSxDQUFDLE1BQU0sR0FBRyxzQ0FBc0MsQ0FBQztvQkFDekQsTUFBTTtZQUNWLENBQUM7WUFDRCxNQUFNO0lBQ1YsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUF4T1csUUFBQSxPQUFPLFdBd09sQiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtcbiAgQ2RrQ3VzdG9tUmVzb3VyY2VFdmVudCxcbiAgQ2RrQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSxcbiAgQ29udGV4dCxcbn0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQge1xuICBDcmVhdGVQaG9uZUFzc29jaWF0aW9uLFxuICBEZWxldGVQaG9uZUFzc29jaWF0aW9uLFxuICBVcGRhdGVQaG9uZUFzc29jaWF0aW9uLFxufSBmcm9tICcuL3Bob25lQXNzb2NpYXRpb24nO1xuXG5pbXBvcnQgeyBDcmVhdGVQaG9uZU51bWJlciwgRGVsZXRlUGhvbmVOdW1iZXIgfSBmcm9tICcuL3Bob25lTnVtYmVyJztcblxuaW1wb3J0IHtcbiAgQ3JlYXRlU2lwTWVkaWFBcHBsaWNhdGlvbixcbiAgRGVsZXRlU2lwTWVkaWFBcHBsaWNhdGlvbixcbiAgUHV0U2lwTWVkaWFBcHBsaWNhdGlvbkFsZXhhU2tpbGwsXG4gIFB1dFNpcE1lZGlhQXBwbGljYXRpb25Mb2dnaW5nLFxufSBmcm9tICcuL3NpcE1lZGlhQXBwJztcblxuaW1wb3J0IHsgQ3JlYXRlU0lQUnVsZSwgRGVsZXRlU0lQUnVsZSB9IGZyb20gJy4vc2lwUnVsZSc7XG5cbmltcG9ydCB7XG4gIENyZWF0ZVZvaWNlQ29ubmVjdG9yLFxuICBVcGRhdGVWb2ljZUNvbm5lY3RvcixcbiAgRGVsZXRlVm9pY2VDb25uZWN0b3IsXG59IGZyb20gJy4vdm9pY2VDb25uZWN0b3InO1xuXG5pbXBvcnQge1xuICBDcmVhdGVWb2ljZVByb2ZpbGVEb21haW4sXG4gIERlbGV0ZVZvaWNlUHJvZmlsZURvbWFpbixcbiAgVXBkYXRlVm9pY2VQcm9maWxlRG9tYWluLFxufSBmcm9tICcuL3ZvaWNlUHJvZmlsZURvbWFpbic7XG5cbmltcG9ydCB7IFZvaWNlUHJvZmlsZURvbWFpblByb3BzIH0gZnJvbSAnLi4vLi4vcHN0bi92b2ljZVByb2ZpbGVEb21haW4nO1xuXG5jb25zdCByZXNwb25zZTogQ2RrQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSA9IHt9O1xubGV0IHJlc291cmNlUHJvcGVydGllc1VpZDogc3RyaW5nO1xubGV0IHJlcXVlc3RQcm9wZXJ0aWVzOiB7fTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50OiBDZGtDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBjb250ZXh0OiBDb250ZXh0LFxuKTogUHJvbWlzZTxDZGtDdXN0b21SZXNvdXJjZVJlc3BvbnNlPiA9PiB7XG4gIGNvbnNvbGUuaW5mbygnZXZlbnQ6ICcsIGV2ZW50KTtcbiAgY29uc3QgcmVzb3VyY2VUeXBlID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLnJlc291cmNlVHlwZTtcbiAgY29uc3QgcmVxdWVzdFR5cGUgPSBldmVudC5SZXF1ZXN0VHlwZTtcbiAgcmVzb3VyY2VQcm9wZXJ0aWVzVWlkID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLnVpZDtcbiAgcmVxdWVzdFByb3BlcnRpZXMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMucHJvcGVydGllcztcblxuICByZXNwb25zZS5TdGFja0lkID0gZXZlbnQuU3RhY2tJZDtcbiAgcmVzcG9uc2UuUmVxdWVzdElkID0gZXZlbnQuUmVxdWVzdElkO1xuICByZXNwb25zZS5Mb2dpY2FsUmVzb3VyY2VJZCA9IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkO1xuICByZXNwb25zZS5QaHlzaWNhbFJlc291cmNlSWQgPSBjb250ZXh0LmxvZ0dyb3VwTmFtZTtcblxuICBzd2l0Y2ggKHJlc291cmNlVHlwZSkge1xuICAgIGNhc2UgJ1Bob25lTnVtYmVyJzpcbiAgICAgIHN3aXRjaCAocmVxdWVzdFR5cGUpIHtcbiAgICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ3JlYXRlIFBob25lIE51bWJlcicpO1xuICAgICAgICAgIHJlc3BvbnNlLkRhdGEgPSBhd2FpdCBDcmVhdGVQaG9uZU51bWJlcihcbiAgICAgICAgICAgIHJlc291cmNlUHJvcGVydGllc1VpZCxcbiAgICAgICAgICAgIHJlcXVlc3RQcm9wZXJ0aWVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdDcmVhdGVQaG9uZU51bWJlciBzdWNjZXNzZnVsJztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdVcGRhdGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGUgUGhvbmUgTnVtYmVyJyk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdEZWxldGUgUGhvbmUgTnVtYmVyJyk7XG4gICAgICAgICAgYXdhaXQgRGVsZXRlUGhvbmVOdW1iZXIocmVzb3VyY2VQcm9wZXJ0aWVzVWlkKTtcbiAgICAgICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICAgICAgcmVzcG9uc2UuUmVhc29uID0gJ0RlbGV0ZVBob25lTnVtYmVyIHN1Y2Nlc3NmdWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdTTUFSdWxlJzpcbiAgICAgIHN3aXRjaCAocmVxdWVzdFR5cGUpIHtcbiAgICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ3JlYXRlIFNJUCBSdWxlJyk7XG4gICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IGF3YWl0IENyZWF0ZVNJUFJ1bGUoXG4gICAgICAgICAgICByZXNvdXJjZVByb3BlcnRpZXNVaWQsXG4gICAgICAgICAgICByZXF1ZXN0UHJvcGVydGllcyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdTVUNDRVNTJztcbiAgICAgICAgICByZXNwb25zZS5SZWFzb24gPSAnQ3JlYXRlU01BUnVsZSBzdWNjZXNzZnVsJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVXBkYXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnVXBkYXRlIFNJUCBSdWxlJyk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdEZWxldGUgU0lQIFJ1bGUnKTtcbiAgICAgICAgICBhd2FpdCBEZWxldGVTSVBSdWxlKHJlc291cmNlUHJvcGVydGllc1VpZCk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdEZWxldGVTTUFSdWxlIHN1Y2Nlc3NmdWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdTTUEnOlxuICAgICAgc3dpdGNoIChyZXF1ZXN0VHlwZSkge1xuICAgICAgICBjYXNlICdDcmVhdGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGUgU0lQIE1lZGlhIEFwcGxpY2F0aW9uJyk7XG4gICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IGF3YWl0IENyZWF0ZVNpcE1lZGlhQXBwbGljYXRpb24oXG4gICAgICAgICAgICByZXNvdXJjZVByb3BlcnRpZXNVaWQsXG4gICAgICAgICAgICByZXF1ZXN0UHJvcGVydGllcyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdTVUNDRVNTJztcbiAgICAgICAgICByZXNwb25zZS5SZWFzb24gPSAnQ3JlYXRlIFNNQSBzdWNjZXNzZnVsJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVXBkYXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnVXBkYXRlIFNJUCBNZWRpYSBBcHBsaWNhdGlvbicpO1xuICAgICAgICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdTVUNDRVNTJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnRGVsZXRlIFNJUCBNZWRpYSBBcHBsaWNhdGlvbicpO1xuICAgICAgICAgIGF3YWl0IERlbGV0ZVNpcE1lZGlhQXBwbGljYXRpb24ocmVzb3VyY2VQcm9wZXJ0aWVzVWlkKTtcbiAgICAgICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICAgICAgcmVzcG9uc2UuUmVhc29uID0gJ0RlbGV0ZSBTTUEgc3VjY2Vzc2Z1bCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ1NNQUxvZ2dpbmcnOlxuICAgICAgc3dpdGNoIChyZXF1ZXN0VHlwZSkge1xuICAgICAgICBjYXNlICdDcmVhdGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGUgU0lQIE1lZGlhIEFwcGxpY2F0aW9uIExvZ2dpbmcnKTtcbiAgICAgICAgICByZXNwb25zZS5EYXRhID0gYXdhaXQgUHV0U2lwTWVkaWFBcHBsaWNhdGlvbkxvZ2dpbmcoXG4gICAgICAgICAgICByZXF1ZXN0UHJvcGVydGllcyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdTVUNDRVNTJztcbiAgICAgICAgICByZXNwb25zZS5SZWFzb24gPSAnUHV0U2lwTWVkaWFBcHBsaWNhdGlvbkxvZ2dpbmcgc3VjY2Vzc2Z1bCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgICAgY29uc29sZS5sb2coJ1VwZGF0ZSBTSVAgTWVkaWEgQXBwbGljYXRpb24gTG9nZ2luZycpO1xuICAgICAgICAgIHJlc3BvbnNlLkRhdGEgPSBhd2FpdCBQdXRTaXBNZWRpYUFwcGxpY2F0aW9uTG9nZ2luZyhcbiAgICAgICAgICAgIHJlcXVlc3RQcm9wZXJ0aWVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdQdXRTaXBNZWRpYUFwcGxpY2F0aW9uTG9nZ2luZyBzdWNjZXNzZnVsJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnRGVsZXRlIFNJUCBNZWRpYSBBcHBsaWNhdGlvbiBMb2dnaW5nJyk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdQdXRTaXBNZWRpYUFwcGxpY2F0aW9uTG9nZ2luZyBEZWxldGUgTm9PUCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ1NNQUFsZXhhU2tpbGwnOlxuICAgICAgc3dpdGNoIChyZXF1ZXN0VHlwZSkge1xuICAgICAgICBjYXNlICdDcmVhdGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGUgU0lQIE1lZGlhIEFwcGxpY2F0aW9uIEFsZXhhIFNraWxsJyk7XG4gICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IGF3YWl0IFB1dFNpcE1lZGlhQXBwbGljYXRpb25BbGV4YVNraWxsKFxuICAgICAgICAgICAgcmVxdWVzdFByb3BlcnRpZXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICAgICAgcmVzcG9uc2UuUmVhc29uID0gJ1B1dFNpcE1lZGlhQXBwbGljYXRpb25BbGV4YVNraWxsIHN1Y2Nlc3NmdWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdVcGRhdGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGUgU0lQIE1lZGlhIEFwcGxpY2F0aW9uIEFsZXhhIFNraWxsJyk7XG4gICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IGF3YWl0IFB1dFNpcE1lZGlhQXBwbGljYXRpb25BbGV4YVNraWxsKFxuICAgICAgICAgICAgcmVxdWVzdFByb3BlcnRpZXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICAgICAgcmVzcG9uc2UuUmVhc29uID0gJ1B1dFNpcE1lZGlhQXBwbGljYXRpb25BbGV4YVNraWxsIHN1Y2Nlc3NmdWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdEU0lQIE1lZGlhIEFwcGxpY2F0aW9uIEFsZXhhIFNraWxsJyk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdQdXRTaXBNZWRpYUFwcGxpY2F0aW9uQWxleGFTa2lsbCBEZWxldGUgTm9PUCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ1ZvaWNlQ29ubmVjdG9yJzpcbiAgICAgIHN3aXRjaCAocmVxdWVzdFR5cGUpIHtcbiAgICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnVm9pY2UgQ29ubmVjdG9yIENyZWF0ZScpO1xuICAgICAgICAgIHJlc3BvbnNlLkRhdGEgPSBhd2FpdCBDcmVhdGVWb2ljZUNvbm5lY3RvcihcbiAgICAgICAgICAgIHJlc291cmNlUHJvcGVydGllc1VpZCxcbiAgICAgICAgICAgIHJlcXVlc3RQcm9wZXJ0aWVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdDcmVhdGUgVkMgc3VjY2Vzc2Z1bCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgICAgY29uc29sZS5sb2coJ1ZvaWNlIENvbm5lY3RvciBVcGRhdGUnKTtcbiAgICAgICAgICByZXNwb25zZS5EYXRhID0gYXdhaXQgVXBkYXRlVm9pY2VDb25uZWN0b3IoXG4gICAgICAgICAgICByZXNvdXJjZVByb3BlcnRpZXNVaWQsXG4gICAgICAgICAgICByZXF1ZXN0UHJvcGVydGllcyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdTVUNDRVNTJztcbiAgICAgICAgICByZXNwb25zZS5SZWFzb24gPSAnVXBkYXRlIFZDIHN1Y2Nlc3NmdWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdWb2ljZSBDb25uZWN0b3IgRGVsZXRlJyk7XG4gICAgICAgICAgYXdhaXQgRGVsZXRlVm9pY2VDb25uZWN0b3IocmVzb3VyY2VQcm9wZXJ0aWVzVWlkKTtcbiAgICAgICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICAgICAgcmVzcG9uc2UuUmVhc29uID0gJ0RlbGV0ZSBWQyBzdWNjZXNzZnVsJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnVm9pY2VQcm9maWxlRG9tYWluJzpcbiAgICAgIHN3aXRjaCAocmVxdWVzdFR5cGUpIHtcbiAgICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnVm9pY2UgUHJvZmlsZSBEb21haW4gQ3JlYXRlJyk7XG4gICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IGF3YWl0IENyZWF0ZVZvaWNlUHJvZmlsZURvbWFpbihcbiAgICAgICAgICAgIHJlc291cmNlUHJvcGVydGllc1VpZCxcbiAgICAgICAgICAgIHJlcXVlc3RQcm9wZXJ0aWVzIGFzIFZvaWNlUHJvZmlsZURvbWFpblByb3BzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdDcmVhdGUgVm9pY2UgUHJvZmlsZSBEb21haW4gc3VjY2Vzc2Z1bCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgICAgY29uc29sZS5sb2coJ1ZvaWNlIFByb2ZpbGUgRG9tYWluIFVwZGF0ZScpO1xuICAgICAgICAgIGF3YWl0IFVwZGF0ZVZvaWNlUHJvZmlsZURvbWFpbihcbiAgICAgICAgICAgIHJlc291cmNlUHJvcGVydGllc1VpZCxcbiAgICAgICAgICAgIHJlcXVlc3RQcm9wZXJ0aWVzIGFzIFZvaWNlUHJvZmlsZURvbWFpblByb3BzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKCdWb2ljZSBQcm9maWxlIERvbWFpbiBEZWxldGUnKTtcbiAgICAgICAgICBhd2FpdCBEZWxldGVWb2ljZVByb2ZpbGVEb21haW4ocmVzb3VyY2VQcm9wZXJ0aWVzVWlkKTtcbiAgICAgICAgICByZXNwb25zZS5TdGF0dXMgPSAnU1VDQ0VTUyc7XG4gICAgICAgICAgcmVzcG9uc2UuUmVhc29uID0gJ0RlbGV0ZSBWb2ljZSBQcm9maWxlIERvbWFpbiBzdWNjZXNzZnVsJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnUGhvbmVBc3NvY2lhdGlvbic6XG4gICAgICBjb25zb2xlLmxvZygnUGhvbmUgQXNzb2NpYXRpb24nKTtcbiAgICAgIHN3aXRjaCAocmVxdWVzdFR5cGUpIHtcbiAgICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnUGhvbmUgQXNzb2NpYXRpb24gQ3JlYXRlJyk7XG4gICAgICAgICAgYXdhaXQgQ3JlYXRlUGhvbmVBc3NvY2lhdGlvbihcbiAgICAgICAgICAgIHJlc291cmNlUHJvcGVydGllc1VpZCxcbiAgICAgICAgICAgIHJlcXVlc3RQcm9wZXJ0aWVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdQaG9uZSBOdW1iZXIgQXNzb2NpYXRpb24gc3VjY2Vzc2Z1bCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgICAgY29uc29sZS5sb2coJ1Bob25lIEFzc29jaWF0aW9uIFVwZGF0ZScpO1xuICAgICAgICAgIGF3YWl0IFVwZGF0ZVBob25lQXNzb2NpYXRpb24oXG4gICAgICAgICAgICByZXNvdXJjZVByb3BlcnRpZXNVaWQsXG4gICAgICAgICAgICByZXF1ZXN0UHJvcGVydGllcyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3BvbnNlLlN0YXR1cyA9ICdTVUNDRVNTJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICBjb25zb2xlLmxvZygnUGhvbmUgQXNzb2NpYXRpb24gRGVsZXRlJyk7XG4gICAgICAgICAgYXdhaXQgRGVsZXRlUGhvbmVBc3NvY2lhdGlvbihcbiAgICAgICAgICAgIHJlc291cmNlUHJvcGVydGllc1VpZCxcbiAgICAgICAgICAgIHJlcXVlc3RQcm9wZXJ0aWVzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzcG9uc2UuU3RhdHVzID0gJ1NVQ0NFU1MnO1xuICAgICAgICAgIHJlc3BvbnNlLlJlYXNvbiA9ICdQaG9uZSBOdW1iZXIgRGlzc29jaWF0aW9uIHN1Y2Nlc3NmdWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgY29uc29sZS5sb2coYFJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcbiJdfQ==