UNPKG

ngrx-forms

Version:

Proper integration of forms in Angular 4 applications using ngrx

211 lines 25.7 kB
// NOTE: the explicit type declaration for the `TYPE` properties is required // for the output declarations to properly use the literal string type instead // of just `string` export class SetValueAction { constructor(controlId, value) { this.controlId = controlId; this.value = value; this.type = SetValueAction.TYPE; } } SetValueAction.TYPE = 'ngrx/forms/SET_VALUE'; export class SetErrorsAction { constructor(controlId, errors) { this.controlId = controlId; this.errors = errors; this.type = SetErrorsAction.TYPE; } } SetErrorsAction.TYPE = 'ngrx/forms/SET_ERRORS'; export class SetAsyncErrorAction { constructor(controlId, name, value) { this.controlId = controlId; this.name = name; this.value = value; this.type = SetAsyncErrorAction.TYPE; } } SetAsyncErrorAction.TYPE = 'ngrx/forms/SET_ASYNC_ERROR'; export class ClearAsyncErrorAction { constructor(controlId, name) { this.controlId = controlId; this.name = name; this.type = ClearAsyncErrorAction.TYPE; } } ClearAsyncErrorAction.TYPE = 'ngrx/forms/CLEAR_ASYNC_ERROR'; export class StartAsyncValidationAction { constructor(controlId, name) { this.controlId = controlId; this.name = name; this.type = StartAsyncValidationAction.TYPE; } } StartAsyncValidationAction.TYPE = 'ngrx/forms/START_ASYNC_VALIDATION'; export class MarkAsDirtyAction { constructor(controlId) { this.controlId = controlId; this.type = MarkAsDirtyAction.TYPE; } } MarkAsDirtyAction.TYPE = 'ngrx/forms/MARK_AS_DIRTY'; export class MarkAsPristineAction { constructor(controlId) { this.controlId = controlId; this.type = MarkAsPristineAction.TYPE; } } MarkAsPristineAction.TYPE = 'ngrx/forms/MARK_AS_PRISTINE'; export class EnableAction { constructor(controlId) { this.controlId = controlId; this.type = EnableAction.TYPE; } } EnableAction.TYPE = 'ngrx/forms/ENABLE'; export class DisableAction { constructor(controlId) { this.controlId = controlId; this.type = DisableAction.TYPE; } } DisableAction.TYPE = 'ngrx/forms/DISABLE'; export class MarkAsTouchedAction { constructor(controlId) { this.controlId = controlId; this.type = MarkAsTouchedAction.TYPE; } } MarkAsTouchedAction.TYPE = 'ngrx/forms/MARK_AS_TOUCHED'; export class MarkAsUntouchedAction { constructor(controlId) { this.controlId = controlId; this.type = MarkAsUntouchedAction.TYPE; } } MarkAsUntouchedAction.TYPE = 'ngrx/forms/MARK_AS_UNTOUCHED'; export class FocusAction { constructor(controlId) { this.controlId = controlId; this.type = FocusAction.TYPE; } } FocusAction.TYPE = 'ngrx/forms/FOCUS'; export class UnfocusAction { constructor(controlId) { this.controlId = controlId; this.type = UnfocusAction.TYPE; } } UnfocusAction.TYPE = 'ngrx/forms/UNFOCUS'; export class MarkAsSubmittedAction { constructor(controlId) { this.controlId = controlId; this.type = MarkAsSubmittedAction.TYPE; } } MarkAsSubmittedAction.TYPE = 'ngrx/forms/MARK_AS_SUBMITTED'; export class MarkAsUnsubmittedAction { constructor(controlId) { this.controlId = controlId; this.type = MarkAsUnsubmittedAction.TYPE; } } MarkAsUnsubmittedAction.TYPE = 'ngrx/forms/MARK_AS_UNSUBMITTED'; export class AddArrayControlAction { constructor(controlId, value, index) { this.controlId = controlId; this.value = value; this.index = index; this.type = AddArrayControlAction.TYPE; } } AddArrayControlAction.TYPE = 'ngrx/forms/ADD_ARRAY_CONTROL'; export class AddGroupControlAction { constructor(controlId, name, value) { this.controlId = controlId; this.name = name; this.value = value; this.type = AddGroupControlAction.TYPE; } } AddGroupControlAction.TYPE = 'ngrx/forms/ADD_GROUP_CONTROL'; export class RemoveArrayControlAction { constructor(controlId, index) { this.controlId = controlId; this.index = index; this.type = RemoveArrayControlAction.TYPE; } } RemoveArrayControlAction.TYPE = 'ngrx/forms/REMOVE_ARRAY_CONTROL'; export class SwapArrayControlAction { constructor(controlId, fromIndex, toIndex) { this.controlId = controlId; this.fromIndex = fromIndex; this.toIndex = toIndex; this.type = SwapArrayControlAction.TYPE; } } SwapArrayControlAction.TYPE = 'ngrx/forms/SWAP_ARRAY_CONTROL'; export class MoveArrayControlAction { constructor(controlId, fromIndex, toIndex) { this.controlId = controlId; this.fromIndex = fromIndex; this.toIndex = toIndex; this.type = MoveArrayControlAction.TYPE; } } MoveArrayControlAction.TYPE = 'ngrx/forms/MOVE_ARRAY_CONTROL'; export class RemoveGroupControlAction { constructor(controlId, name) { this.controlId = controlId; this.name = name; this.type = RemoveGroupControlAction.TYPE; } } RemoveGroupControlAction.TYPE = 'ngrx/forms/REMOVE_CONTROL'; export class SetUserDefinedPropertyAction { constructor(controlId, name, value) { this.controlId = controlId; this.name = name; this.value = value; this.type = SetUserDefinedPropertyAction.TYPE; } } SetUserDefinedPropertyAction.TYPE = 'ngrx/forms/SET_USER_DEFINED_PROPERTY'; export class ResetAction { constructor(controlId) { this.controlId = controlId; this.type = ResetAction.TYPE; } } ResetAction.TYPE = 'ngrx/forms/RESET'; export function isNgrxFormsAction(action) { return !!action.type && action.type.startsWith('ngrx/forms/'); } export const ALL_NGRX_FORMS_ACTION_TYPES = [ SetValueAction.TYPE, SetErrorsAction.TYPE, SetAsyncErrorAction.TYPE, ClearAsyncErrorAction.TYPE, StartAsyncValidationAction.TYPE, MarkAsDirtyAction.TYPE, MarkAsPristineAction.TYPE, EnableAction.TYPE, DisableAction.TYPE, MarkAsTouchedAction.TYPE, MarkAsUntouchedAction.TYPE, FocusAction.TYPE, UnfocusAction.TYPE, MarkAsSubmittedAction.TYPE, MarkAsUnsubmittedAction.TYPE, AddGroupControlAction.TYPE, RemoveGroupControlAction.TYPE, AddArrayControlAction.TYPE, RemoveArrayControlAction.TYPE, SetUserDefinedPropertyAction.TYPE, ResetAction.TYPE, SwapArrayControlAction.TYPE, MoveArrayControlAction.TYPE, ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsbUJBQW1CO0FBRW5CLE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQ2tCLFNBQTRCLEVBQzVCLEtBQWE7UUFEYixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBSnRCLFNBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBS2hDLENBQUM7O0FBTlcsbUJBQUksR0FBMkIsc0JBQXNCLENBQUM7QUFTeEUsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDa0IsU0FBNEIsRUFDNUIsTUFBd0I7UUFEeEIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFKakMsU0FBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFLakMsQ0FBQzs7QUFOVyxvQkFBSSxHQUE0Qix1QkFBdUIsQ0FBQztBQVMxRSxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ2tCLFNBQTRCLEVBQzVCLElBQVksRUFDWixLQUFVO1FBRlYsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFVBQUssR0FBTCxLQUFLLENBQUs7UUFMbkIsU0FBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQU1yQyxDQUFDOztBQVBXLHdCQUFJLEdBQWlDLDRCQUE0QixDQUFDO0FBVXBGLE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsWUFDa0IsU0FBNEIsRUFDNUIsSUFBWTtRQURaLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQVE7UUFKckIsU0FBSSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQztJQUt2QyxDQUFDOztBQU5XLDBCQUFJLEdBQW1DLDhC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STtJQUNqQixhQUFhLENBQUMsSUFBSTtJQUNsQixtQkFBbUIsQ0FBQyxJQUFJO0lBQ3hCLHFCQUFxQixDQUFDLElBQUk7SUFDMUIsV0FBVyxDQUFDLElBQUk7SUFDaEIsYUFBYSxDQUFDLElBQUk7SUFDbEIscUJBQXFCLENBQUMsSUFBSTtJQUMxQix1QkFBdUIsQ0FBQyxJQUFJO0lBQzVCLHFCQUFxQixDQUFDLElBQUk7SUFDMUIsd0JBQXdCLENBQUMsSUFBSTtJQUM3QixxQkFBcUIsQ0FBQyxJQUFJO0lBQzFCLHdCQUF3QixDQUFDLElBQUk7SUFDN0IsNEJBQTRCLENBQUMsSUFBSTtJQUNqQyxXQUFXLENBQUMsSUFBSTtJQUNoQixzQkFBc0IsQ0FBQyxJQUFJO0lBQzNCLHNCQUFzQixDQUFDLElBQUk7Q0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgS2V5VmFsdWUsIE5ncnhGb3JtQ29udHJvbElkLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnLi9zdGF0ZSc7XHJcblxyXG4vLyBOT1RFOiB0aGUgZXhwbGljaXQgdHlwZSBkZWNsYXJhdGlvbiBmb3IgdGhlIGBUWVBFYCBwcm9wZXJ0aWVzIGlzIHJlcXVpcmVkXHJcbi8vIGZvciB0aGUgb3V0cHV0IGRlY2xhcmF0aW9ucyB0byBwcm9wZXJseSB1c2UgdGhlIGxpdGVyYWwgc3RyaW5nIHR5cGUgaW5zdGVhZFxyXG4vLyBvZiBqdXN0IGBzdHJpbmdgXHJcblxyXG5leHBvcnQgY2xhc3MgU2V0VmFsdWVBY3Rpb248VFZhbHVlPiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NFVF9WQUxVRScgPSAnbmdyeC9mb3Jtcy9TRVRfVkFMVUUnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBTZXRWYWx1ZUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBUVmFsdWUsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNldEVycm9yc0FjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NFVF9FUlJPUlMnID0gJ25ncngvZm9ybXMvU0VUX0VSUk9SUyc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IFNldEVycm9yc0FjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2V0QXN5bmNFcnJvckFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NFVF9BU1lOQ19FUlJPUicgPSAnbmdyeC9mb3Jtcy9TRVRfQVNZTkNfRVJST1InO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBTZXRBc3luY0Vycm9yQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnksXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENsZWFyQXN5bmNFcnJvckFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL0NMRUFSX0FTWU5DX0VSUk9SJyA9ICduZ3J4L2Zvcm1zL0NMRUFSX0FTWU5DX0VSUk9SJztcclxuICByZWFkb25seSB0eXBlID0gQ2xlYXJBc3luY0Vycm9yQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdGFydEFzeW5jVmFsaWRhdGlvbkFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NUQVJUX0FTWU5DX1ZBTElEQVRJT04nID0gJ25ncngvZm9ybXMvU1RBUlRfQVNZTkNfVkFMSURBVElPTic7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IFN0YXJ0QXN5bmNWYWxpZGF0aW9uQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrQXNEaXJ0eUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL01BUktfQVNfRElSVFknID0gJ25ncngvZm9ybXMvTUFSS19BU19ESVJUWSc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IE1hcmtBc0RpcnR5QWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtBc1ByaXN0aW5lQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19QUklTVElORScgPSAnbmdyeC9mb3Jtcy9NQVJLX0FTX1BSSVNUSU5FJztcclxuICByZWFkb25seSB0eXBlID0gTWFya0FzUHJpc3RpbmVBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW5hYmxlQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvRU5BQkxFJyA9ICduZ3J4L2Zvcm1zL0VOQUJMRSc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IEVuYWJsZUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEaXNhYmxlQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvRElTQUJMRScgPSAnbmdyeC9mb3Jtcy9ESVNBQkxFJztcclxuICByZWFkb25seSB0eXBlID0gRGlzYWJsZUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrQXNUb3VjaGVkQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19UT1VDSEVEJyA9ICduZ3J4L2Zvcm1zL01BUktfQVNfVE9VQ0hFRCc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IE1hcmtBc1RvdWNoZWRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWFya0FzVW50b3VjaGVkQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19VTlRPVUNIRUQnID0gJ25ncngvZm9ybXMvTUFSS19BU19VTlRPVUNIRUQnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBNYXJrQXNVbnRvdWNoZWRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9jdXNBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9GT0NVUycgPSAnbmdyeC9mb3Jtcy9GT0NVUyc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IEZvY3VzQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVuZm9jdXNBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9VTkZPQ1VTJyA9ICduZ3J4L2Zvcm1zL1VORk9DVVMnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBVbmZvY3VzQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtBc1N1Ym1pdHRlZEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL01BUktfQVNfU1VCTUlUVEVEJyA9ICduZ3J4L2Zvcm1zL01BUktfQVNfU1VCTUlUVEVEJztcclxuICByZWFkb25seSB0eXBlID0gTWFya0FzU3VibWl0dGVkQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtBc1Vuc3VibWl0dGVkQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19VTlNVQk1JVFRFRCcgPSAnbmdyeC9mb3Jtcy9NQVJLX0FTX1VOU1VCTUlUVEVEJztcclxuICByZWFkb25seSB0eXBlID0gTWFya0FzVW5zdWJtaXR0ZWRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWRkQXJyYXlDb250cm9sQWN0aW9uPFRWYWx1ZT4gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9BRERfQVJSQVlfQ09OVFJPTCcgPSAnbmdyeC9mb3Jtcy9BRERfQVJSQVlfQ09OVFJPTCc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IEFkZEFycmF5Q29udHJvbEFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBUVmFsdWUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5kZXg/OiBudW1iZXIsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkZEdyb3VwQ29udHJvbEFjdGlvbjxUVmFsdWUgZXh0ZW5kcyBLZXlWYWx1ZSwgVENvbnRyb2xLZXkgZXh0ZW5kcyBrZXlvZiBUVmFsdWUgPSBrZXlvZiBUVmFsdWU+IGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvQUREX0dST1VQX0NPTlRST0wnID0gJ25ncngvZm9ybXMvQUREX0dST1VQX0NPTlRST0wnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBBZGRHcm91cENvbnRyb2xBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBrZXlvZiBUVmFsdWUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IFRWYWx1ZVtUQ29udHJvbEtleV0sXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlbW92ZUFycmF5Q29udHJvbEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1JFTU9WRV9BUlJBWV9DT05UUk9MJyA9ICduZ3J4L2Zvcm1zL1JFTU9WRV9BUlJBWV9DT05UUk9MJztcclxuICByZWFkb25seSB0eXBlID0gUmVtb3ZlQXJyYXlDb250cm9sQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5kZXg6IG51bWJlcixcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU3dhcEFycmF5Q29udHJvbEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NXQVBfQVJSQVlfQ09OVFJPTCcgPSAnbmdyeC9mb3Jtcy9TV0FQX0FSUkFZX0NPTlRST0wnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBTd2FwQXJyYXlDb250cm9sQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZnJvbUluZGV4OiBudW1iZXIsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9JbmRleDogbnVtYmVyXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1vdmVBcnJheUNvbnRyb2xBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9NT1ZFX0FSUkFZX0NPTlRST0wnID0gJ25ncngvZm9ybXMvTU9WRV9BUlJBWV9DT05UUk9MJztcclxuICByZWFkb25seSB0eXBlID0gTW92ZUFycmF5Q29udHJvbEFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGZyb21JbmRleDogbnVtYmVyLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRvSW5kZXg6IG51bWJlclxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZW1vdmVHcm91cENvbnRyb2xBY3Rpb248VFZhbHVlPiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1JFTU9WRV9DT05UUk9MJyA9ICduZ3J4L2Zvcm1zL1JFTU9WRV9DT05UUk9MJztcclxuICByZWFkb25seSB0eXBlID0gUmVtb3ZlR3JvdXBDb250cm9sQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZToga2V5b2YgVFZhbHVlLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTZXRVc2VyRGVmaW5lZFByb3BlcnR5QWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvU0VUX1VTRVJfREVGSU5FRF9QUk9QRVJUWScgPSAnbmdyeC9mb3Jtcy9TRVRfVVNFUl9ERUZJTkVEX1BST1BFUlRZJztcclxuICByZWFkb25seSB0eXBlID0gU2V0VXNlckRlZmluZWRQcm9wZXJ0eUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcclxuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZTogYW55LFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXNldEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1JFU0VUJyA9ICduZ3J4L2Zvcm1zL1JFU0VUJztcclxuICByZWFkb25seSB0eXBlID0gUmVzZXRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25zPFRWYWx1ZT4gPVxyXG4gIHwgU2V0VmFsdWVBY3Rpb248VFZhbHVlPlxyXG4gIHwgU2V0RXJyb3JzQWN0aW9uXHJcbiAgfCBTZXRBc3luY0Vycm9yQWN0aW9uXHJcbiAgfCBDbGVhckFzeW5jRXJyb3JBY3Rpb25cclxuICB8IFN0YXJ0QXN5bmNWYWxpZGF0aW9uQWN0aW9uXHJcbiAgfCBNYXJrQXNEaXJ0eUFjdGlvblxyXG4gIHwgTWFya0FzUHJpc3RpbmVBY3Rpb25cclxuICB8IEVuYWJsZUFjdGlvblxyXG4gIHwgRGlzYWJsZUFjdGlvblxyXG4gIHwgTWFya0FzVG91Y2hlZEFjdGlvblxyXG4gIHwgTWFya0FzVW50b3VjaGVkQWN0aW9uXHJcbiAgfCBGb2N1c0FjdGlvblxyXG4gIHwgVW5mb2N1c0FjdGlvblxyXG4gIHwgTWFya0FzU3VibWl0dGVkQWN0aW9uXHJcbiAgfCBNYXJrQXNVbnN1Ym1pdHRlZEFjdGlvblxyXG4gIHwgKFRWYWx1ZSBleHRlbmRzIEtleVZhbHVlID8gQWRkR3JvdXBDb250cm9sQWN0aW9uPFRWYWx1ZT4gOiBuZXZlcilcclxuICB8IFJlbW92ZUdyb3VwQ29udHJvbEFjdGlvbjxUVmFsdWU+XHJcbiAgfCBBZGRBcnJheUNvbnRyb2xBY3Rpb248YW55PlxyXG4gIHwgUmVtb3ZlQXJyYXlDb250cm9sQWN0aW9uXHJcbiAgfCBTZXRVc2VyRGVmaW5lZFByb3BlcnR5QWN0aW9uXHJcbiAgfCBSZXNldEFjdGlvblxyXG4gIHwgU3dhcEFycmF5Q29udHJvbEFjdGlvblxyXG4gIHwgTW92ZUFycmF5Q29udHJvbEFjdGlvblxyXG4gIDtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc05ncnhGb3Jtc0FjdGlvbihhY3Rpb246IEFjdGlvbikge1xyXG4gIHJldHVybiAhIWFjdGlvbi50eXBlICYmIGFjdGlvbi50eXBlLnN0YXJ0c1dpdGgoJ25ncngvZm9ybXMvJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBTExfTkdSWF9GT1JNU19BQ1RJT05fVFlQRVM6IEFjdGlvbnM8YW55PlsndHlwZSddW10gPSBbXHJcbiAgU2V0VmFsdWVBY3Rpb24uVFlQRSxcclxuICBTZXRFcnJvcnNBY3Rpb24uVFlQRSxcclxuICBTZXRBc3luY0Vycm9yQWN0aW9uLlRZUEUsXHJcbiAgQ2xlYXJBc3luY0Vycm9yQWN0aW9uLlRZUEUsXHJcbiAgU3RhcnRBc3luY1ZhbGlkYXRpb25BY3Rpb24uVFlQRSxcclxuICBNYXJrQXNEaXJ0eUFjdGlvbi5UWVBFLFxyXG4gIE1hcmtBc1ByaXN0aW5lQWN0aW9uLlRZUEUsXHJcbiAgRW5hYmxlQWN0aW9uLlRZUEUsXHJcbiAgRGlzYWJsZUFjdGlvbi5UWVBFLFxyXG4gIE1hcmtBc1RvdWNoZWRBY3Rpb24uVFlQRSxcclxuICBNYXJrQXNVbnRvdWNoZWRBY3Rpb24uVFlQRSxcclxuICBGb2N1c0FjdGlvbi5UWVBFLFxyXG4gIFVuZm9jdXNBY3Rpb24uVFlQRSxcclxuICBNYXJrQXNTdWJtaXR0ZWRBY3Rpb24uVFlQRSxcclxuICBNYXJrQXNVbnN1Ym1pdHRlZEFjdGlvbi5UWVBFLFxyXG4gIEFkZEdyb3VwQ29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIFJlbW92ZUdyb3VwQ29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIEFkZEFycmF5Q29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIFJlbW92ZUFycmF5Q29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIFNldFVzZXJEZWZpbmVkUHJvcGVydHlBY3Rpb24uVFlQRSxcclxuICBSZXNldEFjdGlvbi5UWVBFLFxyXG4gIFN3YXBBcnJheUNvbnRyb2xBY3Rpb24uVFlQRSxcclxuICBNb3ZlQXJyYXlDb250cm9sQWN0aW9uLlRZUEUsXHJcbl07XHJcbiJdfQ==