@senior-agronegocio/angular-components 0.0.70-origination → 0.0.71-origination
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-agronegocio-angular-components.umd.js +114 -5
- package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
- package/bundles/senior-agronegocio-angular-components.umd.min.js +1 -1
- package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
- package/common/agro-regex.constant.d.ts +10 -0
- package/esm2015/common/agro-regex.constant.js +11 -1
- package/esm2015/form-validator/agro-form-validator.js +94 -6
- package/esm5/common/agro-regex.constant.js +11 -1
- package/esm5/form-validator/agro-form-validator.js +106 -6
- package/fesm2015/senior-agronegocio-angular-components.js +103 -5
- package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
- package/fesm5/senior-agronegocio-angular-components.js +115 -6
- package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
- package/form-validator/agro-form-validator.d.ts +14 -0
- package/package.json +1 -1
|
@@ -139,4 +139,14 @@ export declare const AGRO_REGEX: {
|
|
|
139
139
|
* Validação se todos os dígitos são iguais
|
|
140
140
|
*/
|
|
141
141
|
isAllDigitsEqual: RegExp;
|
|
142
|
+
/**
|
|
143
|
+
* Validação de Placa de Veículo do Mercosul
|
|
144
|
+
* Formato: ABC1D23
|
|
145
|
+
*/
|
|
146
|
+
isMercosulLicensePlate: RegExp;
|
|
147
|
+
/**
|
|
148
|
+
* Validação de Placa de Veículo Antiga
|
|
149
|
+
* Formato: AAA-0000
|
|
150
|
+
*/
|
|
151
|
+
isOldLicensePlate: RegExp;
|
|
142
152
|
};
|
|
@@ -139,5 +139,15 @@ export const AGRO_REGEX = {
|
|
|
139
139
|
* Validação se todos os dígitos são iguais
|
|
140
140
|
*/
|
|
141
141
|
isAllDigitsEqual: /^(.)\1+$/,
|
|
142
|
+
/**
|
|
143
|
+
* Validação de Placa de Veículo do Mercosul
|
|
144
|
+
* Formato: ABC1D23
|
|
145
|
+
*/
|
|
146
|
+
isMercosulLicensePlate: /^[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}$/,
|
|
147
|
+
/**
|
|
148
|
+
* Validação de Placa de Veículo Antiga
|
|
149
|
+
* Formato: AAA-0000
|
|
150
|
+
*/
|
|
151
|
+
isOldLicensePlate: /^[A-Z]{3}[0-9]{4}$/
|
|
142
152
|
};
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1yZWdleC5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcmVnZXguY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLDRCQUE0QjtJQUVyQzs7T0FFRztJQUNILGVBQWUsRUFBRSxZQUFZO0lBRTdCOztPQUVHO0lBQ0gsZUFBZSxFQUFFLGFBQWE7SUFFOUI7O09BRUc7SUFDSCxlQUFlLEVBQUUsT0FBTztJQUV4Qjs7T0FFRztJQUNILE9BQU8sRUFBRSx1QkFBdUI7SUFFaEM7O09BRUc7SUFDSCxRQUFRLEVBQUUsV0FBVztJQUVyQjs7T0FFRztJQUNILE1BQU0sRUFBRSw0RkFBNEY7SUFFcEc7O09BRUc7SUFDSCxRQUFRLEVBQUUsU0FBUztJQUVuQjs7T0FFRztJQUNILFNBQVMsRUFBRSxhQUFhO0lBRXhCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLHNDQUFzQztJQUV0RDs7T0FFRztJQUNILGFBQWEsRUFBRSx3QkFBd0I7SUFFdkM7O09BRUc7SUFDSCxNQUFNLEVBQUUscUJBQXFCO0lBRTdCOztPQUVHO0lBQ0gsTUFBTSxFQUFFLDRCQUE0QjtJQUVwQzs7T0FFRztJQUNILFVBQVUsRUFBRSw4Q0FBOEM7SUFFMUQ7O09BRUc7SUFDSCxLQUFLLEVBQUUsd0RBQXdEO0lBRS9EOztPQUVHO0lBQ0gsV0FBVyxFQUFFLGdCQUFnQjtJQUU3Qjs7T0FFRztJQUNILFFBQVEsRUFBRSx3QkFBd0I7SUFFbEM7O09BRUc7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7T0FFRztJQUNILGNBQWMsRUFBRSxnQkFBZ0I7SUFFaEM7O09BRUc7SUFDSCxNQUFNLEVBQUUsY0FBYztJQUV0Qjs7T0FFRztJQUNILFlBQVksRUFBRSwyQkFBMkI7SUFFekM7O09BRUc7SUFDSCxhQUFhLEVBQUUsZ0JBQWdCO0lBRS9COztPQUVHO0lBQ0gsVUFBVSxFQUFFLG1CQUFtQjtJQUUvQjs7T0FFRztJQUNILFlBQVksRUFBRSx5Q0FBeUM7SUFFdkQ7O09BRUc7SUFDSCxTQUFTLEVBQUUsMkNBQTJDO0lBRXREOztPQUVHO0lBQ0gsb0JBQW9CLEVBQUUsdUJBQXVCO0lBRTdDOztPQUVHO0lBQ0gsZ0JBQWdCLEVBQUUsc0VBQXNFO0lBRXhGOztPQUVHO0lBQ0gsWUFBWSxFQUFFLGFBQWE7SUFFM0I7O09BRUc7SUFDSCxZQUFZLEVBQUUsbUNBQW1DO0lBRWpEOztPQUVHO0lBQ0gsVUFBVSxFQUFFLHFDQUFxQztJQUVqRDs7T0FFRztJQUNILFdBQVcsRUFBRSxxREFBcUQ7SUFFbEU7O09BRUc7SUFDSCxZQUFZLEVBQUUsMkNBQTJDO0lBRXpEOztPQUVHO0lBQ0gsc0JBQXNCLEVBQUUsMEJBQTBCO0lBRWxEOztPQUVHO0lBQ0gsS0FBSyxFQUFFLHFCQUFxQjtJQUU1Qjs7T0FFRztJQUNILGdCQUFnQixFQUFFLFVBQVU7SUFFNUI7OztPQUdHO0lBQ0gsc0JBQXNCLEVBQUUsb0NBQW9DO0lBRzVEOzs7T0FHRztJQUNILGlCQUFpQixFQUFFLG9CQUFvQjtDQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFHUk9fUkVHRVggPSB7XHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEUtbWFpbFxyXG4gICAgICovXHJcbiAgICBpc0VtYWlsOiAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm9zIEludGVpcm9zIFBvc2l0aXZvc1xyXG4gICAgICovXHJcbiAgICBwb3NpdGl2ZUludGVnZXI6IC9eWzEtOV1cXGQqJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvcyBEZWNpbWFpcyBQb3NpdGl2b3NcclxuICAgICAqL1xyXG4gICAgcG9zaXRpdmVEZWNpbWFsOiAvXlxcZCpcXC4/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgc3RyaW5nIHF1ZSBjb25zaXN0ZSBhcGVuYXMgZW0gZXNwYcOnb3MgZW0gYnJhbmNvIG91IGVzdMOhIHZhemlhLlxyXG4gICAgICovXHJcbiAgICBvbmx5QmxhbmtTcGFjZXM6IC9eXFxzKiQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQ0VQIChDw7NkaWdvIFBvc3RhbClcclxuICAgICAqL1xyXG4gICAgemlwQ29kZTogL15cXGR7OH0kfF5cXGR7NX0tXFxkezN9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTdHJpbmcgKHF1YWxxdWVyIGNhcmFjdGVyZSlcclxuICAgICAqL1xyXG4gICAgaXNTdHJpbmc6IC9eW1xcc1xcU10qJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVVUlEXHJcbiAgICAgKi9cclxuICAgIGlzVVVJRDogL15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS01XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvXHJcbiAgICAgKi9cclxuICAgIGlzTnVtYmVyOiAvXi0/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBEZWNpbWFsXHJcbiAgICAgKi9cclxuICAgIGlzRGVjaW1hbDogL15cXGQqXFwuP1xcZCskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFBsYWNhIGRlIFZlw61jdWxvXHJcbiAgICAgKi9cclxuICAgIGlzTGljZW5zZVBsYXRlOiAvXltBLVphLXowLTldezEsN30tP1tBLVphLXowLTldezEsN30kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgVGVsZWZvbmVcclxuICAgICAqL1xyXG4gICAgaXNQaG9uZU51bWJlcjogL15cXCs/XFxkezEsNH0tP1xcZHs2LDExfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRGF0YSAoRm9ybWF0byBZWVlZLU1NLUREKVxyXG4gICAgICovXHJcbiAgICBpc0RhdGU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgKEZvcm1hdG8gSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzVGltZTogL14oMFxcZHwxXFxkfDJbMC0zXSk6WzAtNV1cXGQkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIERhdGEgZSBIb3JhIChGb3JtYXRvIFlZWVktTU0tREQgSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzRGF0ZVRpbWU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0gKDBcXGR8MVxcZHwyWzAtM10pOlswLTVdXFxkJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVUkxcclxuICAgICAqL1xyXG4gICAgaXNVUkw6IC9eKGh0dHB8aHR0cHMpOlxcL1xcLyhbXFx3LV0rXFwuKStbXFx3LV0rKFxcL1tcXHctIC4vPyUmPV0qKT8kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhOdW1iZXI6IC9eWzAtOWEtZkEtRl0rJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBCYXNlNjRcclxuICAgICAqL1xyXG4gICAgaXNCYXNlNjQ6IC9eW2EtekEtWjAtOSsvXSs9ezAsMn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gKDMgYSAyMCBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lOiAvXlxcd3szLDIwfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQWxmYW51bcOpcmljb1xyXG4gICAgICovXHJcbiAgICBpc0FscGhhbnVtZXJpYzogL15bYS16QS1aMC05XSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFNsdWcgKGxldHJhcyBtaW7DunNjdWxhcywgbsO6bWVyb3MgZSB0cmHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1NsdWc6IC9eW2EtejAtOS1dKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBkZSBDYXJ0w6NvIGRlIENyw6lkaXRvXHJcbiAgICAgKi9cclxuICAgIGlzQ3JlZGl0Q2FyZDogL15cXGR7NH0tXFxkezR9LVxcZHs0fS1cXGR7NH0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhhZGVjaW1hbDogL15bMC05YS1mQS1GXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE1vZWRhXHJcbiAgICAgKi9cclxuICAgIGlzQ3VycmVuY3k6IC9eXFxkKyhcXC5cXGR7MSwyfSk/JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQb3JjZW50YWdlbVxyXG4gICAgICovXHJcbiAgICBpc1BlcmNlbnRhZ2U6IC9eKDEwMChcXC4wezEsMn0pP3xbMS05XT9cXGQoXFwuXFxkezEsMn0pPykkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFRhZyBIVE1MIFNpbXBsZXNcclxuICAgICAqL1xyXG4gICAgaXNIVE1MVGFnOiAvXjwoW2Etel0rKShbXjxdKykqKD86PiguKik8XFwvXFwxPnxcXHMrXFwvPikkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gY29tIEVzcGHDp29zICgzIGEgMjAgY2FyYWN0ZXJlcyBhbGZhbnVtw6lyaWNvcyBlIGVzcGHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lV2l0aFNwYWNlczogL15bYS16QS1aMC05XyBdezMsMjB9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTZW5oYSBGb3J0ZSAobcOtbmltbyA4IGNhcmFjdGVyZXMsIHVtYSBsZXRyYSBtaW7DunNjdWxhLCB1bWEgbGV0cmEgbWFpw7pzY3VsYSwgdW0gbsO6bWVybyBlIHVtIGNhcmFjdGVyZSBlc3BlY2lhbClcclxuICAgICAqL1xyXG4gICAgaXNTdHJvbmdQYXNzd29yZDogL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbQCQhJSo/Jl0pW0EtWmEtelxcZEAkISUqPyZdezgsfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgU3RyaW5nIEFsZmFiw6l0aWNhXHJcbiAgICAgKi9cclxuICAgIGlzQWxwaGFiZXRpYzogL15bYS16QS1aXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgbm8gRm9ybWF0byBkZSAxMiBIb3Jhc1xyXG4gICAgICovXHJcbiAgICBpc1RpbWUxMkhvdXI6IC9eKDA/WzEtOV18MVswLTJdKTpcXGR7Mn0gKEFNfFBNKSQvaSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIExhdGl0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTGF0aXR1ZGU6IC9eWy0rXT8oWzEtOF0/XFxkKFxcLlxcZCspP3w5MChcXC4wKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTG9uZ2l0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTG9uZ2l0dWRlOiAvXlstK10/KDE4MChcXC4wKyk/fCgoMVswLTddXFxkKXwoWzEtOV0/XFxkKSkoXFwuXFxkKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRW5kZXJlw6dvIE1BQ1xyXG4gICAgICovXHJcbiAgICBpc01BQ0FkZHJlc3M6IC9eKFswLTlBLUZhLWZdezJ9WzotXSl7NX0oWzAtOUEtRmEtZl17Mn0pJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBEYXRhIGRlIEV4cGlyYcOnw6NvIGRlIENhcnTDo28gZGUgQ3LDqWRpdG9cclxuICAgICAqL1xyXG4gICAgaXNDcmVkaXRDYXJkRXhwaXJhdGlvbjogL14oMFsxLTldfDFbMC0yXSlcXC9cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgU2VndXJvIFNvY2lhbCAoU1NOKVxyXG4gICAgICovXHJcbiAgICBpc1NTTjogL15cXGR7M30tXFxkezJ9LVxcZHs0fSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gc2UgdG9kb3Mgb3MgZMOtZ2l0b3Mgc8OjbyBpZ3VhaXNcclxuICAgICAqL1xyXG4gICAgaXNBbGxEaWdpdHNFcXVhbDogL14oLilcXDErJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQbGFjYSBkZSBWZcOtY3VsbyBkbyBNZXJjb3N1bFxyXG4gICAgICogRm9ybWF0bzogQUJDMUQyM1xyXG4gICAgICovXHJcbiAgICBpc01lcmNvc3VsTGljZW5zZVBsYXRlOiAvXltBLVpdezN9WzAtOV17MX1bQS1aXXsxfVswLTldezJ9JC8sXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgUGxhY2EgZGUgVmXDrWN1bG8gQW50aWdhXHJcbiAgICAgKiBGb3JtYXRvOiBBQUEtMDAwMFxyXG4gICAgICovXHJcbiAgICBpc09sZExpY2Vuc2VQbGF0ZTogL15bQS1aXXszfVswLTldezR9JC9cclxuICB9O1xyXG4iXX0=
|
|
@@ -178,13 +178,14 @@ export class AgroFormValidator {
|
|
|
178
178
|
*/
|
|
179
179
|
static checkValueBetween(minorFormControl, targetFormControl, majorFormControl) {
|
|
180
180
|
const checkValue = (control) => {
|
|
181
|
-
var _a, _b, _c
|
|
181
|
+
var _a, _b, _c;
|
|
182
182
|
const formGroup = control;
|
|
183
183
|
const valueA = (_a = formGroup.get(minorFormControl)) === null || _a === void 0 ? void 0 : _a.value;
|
|
184
184
|
const valueB = (_b = formGroup.get(targetFormControl)) === null || _b === void 0 ? void 0 : _b.value;
|
|
185
185
|
const valueC = (_c = formGroup.get(majorFormControl)) === null || _c === void 0 ? void 0 : _c.value;
|
|
186
186
|
const methodName = 'checkValueBetween';
|
|
187
|
-
|
|
187
|
+
const areNumbers = [valueA, valueB, valueC].every(v => v !== null && v !== undefined);
|
|
188
|
+
if (areNumbers) {
|
|
188
189
|
if (valueB < valueA || valueB > valueC) {
|
|
189
190
|
const targetControl = formGroup.get(targetFormControl);
|
|
190
191
|
if (targetControl) {
|
|
@@ -192,10 +193,12 @@ export class AgroFormValidator {
|
|
|
192
193
|
}
|
|
193
194
|
return { [methodName]: true };
|
|
194
195
|
}
|
|
195
|
-
else
|
|
196
|
+
else {
|
|
196
197
|
const targetControl = formGroup.get(targetFormControl);
|
|
197
|
-
if (targetControl) {
|
|
198
|
-
targetControl.
|
|
198
|
+
if (targetControl === null || targetControl === void 0 ? void 0 : targetControl.hasError(methodName)) {
|
|
199
|
+
const errors = Object.assign({}, targetControl.errors);
|
|
200
|
+
delete errors[methodName];
|
|
201
|
+
targetControl.setErrors(Object.keys(errors).length ? errors : null);
|
|
199
202
|
}
|
|
200
203
|
}
|
|
201
204
|
}
|
|
@@ -225,5 +228,90 @@ export class AgroFormValidator {
|
|
|
225
228
|
};
|
|
226
229
|
return objectProperty;
|
|
227
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Valida se o campo é um CPF (Cadastro de Pessoa Física) válido.
|
|
233
|
+
*/
|
|
234
|
+
static CPFValidator() {
|
|
235
|
+
const cpfVal = (control) => {
|
|
236
|
+
const cpf = (control.value || '').replace(/[^\d]/g, '');
|
|
237
|
+
if (!cpf) {
|
|
238
|
+
return null; // Não valida campo vazio, use Validators.required junto se quiser obrigatoriedade
|
|
239
|
+
}
|
|
240
|
+
if (cpf.length !== 11) {
|
|
241
|
+
return { cpfValidator: true };
|
|
242
|
+
}
|
|
243
|
+
// Verifica se todos os dígitos são iguais (ex.: 11111111111)
|
|
244
|
+
if (/^(\d)\1{10}$/.test(cpf)) {
|
|
245
|
+
return { cpfValidator: true };
|
|
246
|
+
}
|
|
247
|
+
// Validação dos dígitos verificadores
|
|
248
|
+
const calcCheckDigit = (cpfSlice, factor) => {
|
|
249
|
+
let total = 0;
|
|
250
|
+
for (const digit of cpfSlice) {
|
|
251
|
+
total += parseInt(digit, 10) * factor--;
|
|
252
|
+
}
|
|
253
|
+
const remainder = total % 11;
|
|
254
|
+
return remainder < 2 ? 0 : 11 - remainder;
|
|
255
|
+
};
|
|
256
|
+
const digit1 = calcCheckDigit(cpf.substring(0, 9), 10);
|
|
257
|
+
const digit2 = calcCheckDigit(cpf.substring(0, 9) + digit1, 11);
|
|
258
|
+
const isValid = digit1 === parseInt(cpf.charAt(9), 10) &&
|
|
259
|
+
digit2 === parseInt(cpf.charAt(10), 10);
|
|
260
|
+
return isValid ? null : { cpfValidator: true };
|
|
261
|
+
};
|
|
262
|
+
return cpfVal;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Validator de CNPJ (Cadastro Nacional da Pessoa Jurídica).
|
|
266
|
+
* @returns
|
|
267
|
+
*/
|
|
268
|
+
CNPJValidator() {
|
|
269
|
+
return (control) => {
|
|
270
|
+
var _a;
|
|
271
|
+
const value = (_a = control.value) === null || _a === void 0 ? void 0 : _a.replace(/\D/g, '');
|
|
272
|
+
if (!value || value.length !== 14) {
|
|
273
|
+
return { cnpjValidator: true };
|
|
274
|
+
}
|
|
275
|
+
// Verifica CNPJs com todos os dígitos iguais (inválidos)
|
|
276
|
+
if (/^(\d)\1{13}$/.test(value)) {
|
|
277
|
+
return { cnpjValidator: true };
|
|
278
|
+
}
|
|
279
|
+
const validateCheckDigit = (cnpj, length) => {
|
|
280
|
+
const weights = length === 12
|
|
281
|
+
? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
|
|
282
|
+
: [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
283
|
+
const sum = cnpj
|
|
284
|
+
.slice(0, length)
|
|
285
|
+
.split('')
|
|
286
|
+
.reduce((acc, digit, index) => {
|
|
287
|
+
return acc + parseInt(digit, 10) * weights[index];
|
|
288
|
+
}, 0);
|
|
289
|
+
const remainder = sum % 11;
|
|
290
|
+
return remainder < 2 ? 0 : 11 - remainder;
|
|
291
|
+
};
|
|
292
|
+
const firstCheckDigit = validateCheckDigit(value, 12);
|
|
293
|
+
const secondCheckDigit = validateCheckDigit(value, 13);
|
|
294
|
+
if (firstCheckDigit !== parseInt(value.charAt(12), 10) ||
|
|
295
|
+
secondCheckDigit !== parseInt(value.charAt(13), 10)) {
|
|
296
|
+
return { cnpjValidator: true };
|
|
297
|
+
}
|
|
298
|
+
return null; // válido
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Valida se a placa do veículo é válida.
|
|
303
|
+
* @returns
|
|
304
|
+
*/
|
|
305
|
+
licensePlateValidator() {
|
|
306
|
+
return (control) => {
|
|
307
|
+
const value = (control.value || '').toUpperCase().trim().replace(/-/g, '');
|
|
308
|
+
if (!value) {
|
|
309
|
+
return null; // Campo vazio não é responsabilidade desse validador
|
|
310
|
+
}
|
|
311
|
+
const isValid = AGRO_REGEX.isMercosulLicensePlate.test(value) ||
|
|
312
|
+
AGRO_REGEX.isOldLicensePlate.test(value);
|
|
313
|
+
return isValid ? null : { licensePlateInvalid: true };
|
|
314
|
+
};
|
|
315
|
+
}
|
|
228
316
|
}
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1mb3JtLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiZm9ybS12YWxpZGF0b3IvYWdyby1mb3JtLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWhFLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUI7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUF3QjtRQUNqRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDbkM7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFHRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsY0FBa0M7UUFDakUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUF3QixFQUFpQyxFQUFFO1lBQzVFLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxNQUFN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QUUsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQUNGLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRGF0ZUNvbXBhcmlzb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvZGF0ZS1jb21wYXJpc29uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEFHUk9fUkVHRVggfSBmcm9tICcuLi9jb21tb24vYWdyby1yZWdleC5jb25zdGFudCc7XHJcbmltcG9ydCB7IE51bWJlckNvbXBhcmlzb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvbnVtYmVyLWNvbXBhcmlzb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICcuLi9jb21tb24vYWdyby1vYmplY3QtdXRpbHMuY2xhc3MnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9Gb3JtVmFsaWRhdG9yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBwYXJhIGNoZWNhciBzZSBvIGNhbXBvIMOpIHVtIGUtbWFpbFxyXG4gICAgICpcclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiB0aGlzLm15Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICogICAgIEVNQUlMX0ZJRUxEOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBZ3JvRm9ybVZhbGlkYXRvci5lbWFpbFZhbGlkYXRvcl1dXHJcbiAgICAgKiB9KTtcclxuICAgICAqIEBwYXJhbSBjb250cm9sXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGVtYWlsVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcclxuICAgICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiAhQUdST19SRUdFWC5pc0VtYWlsLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBlbWFpbFZhbGlkYXRvcjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgZW1haWxWYWxpZGF0b3I6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXBsaXF1ZSBlc3NlIHZhbGlkYWRvciBlbSB1bSBjYW1wbyBkbyB0aXBvIERhdGUsIHBhcmEgdmVyaWZpY2FyIHNlIGEgZGF0YSBzZWxlY2lvbmFkYSDDqSBtYWlvciBvdSBtZW5vciBxdWUgYSBkYXRhIGF0dWFsLlxyXG4gICAgICpcclxuICAgICAqIFV0aWxpemUgbyBwYXLDom1ldHJvIGNvbXBhcmlzb25UeXBlIHBhcmEgZGVmaW5pciBzZSBhIGRhdGEgc2VsZWNpb25hZGEgZGV2ZSBzZXIgbWFpb3Igb3UgbWVub3IgcXVlIGEgZGF0YSBhdHVhbC5cclxuICAgICAqIEEgdmFsaWRhw6fDo28gc2Vyw6EgYXRyYXbDqXMgZG8gZW51bSBEYXRlQ29tcGFyaXNvblR5cGUuXHJcbiAgICAgKlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIHRoaXMubXlGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgKiAgICAgTk9NRV9DQU1QTzogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQWdyb0Zvcm1WYWxpZGF0b3IuY29tcGFyZURhdGVXaXRoVG9kYXkoRGF0ZUNvbXBhcmlzb25UeXBlLmdyZWF0aGVyVGhhbildXVxyXG4gICAgICogfSk7XHJcbiAgICAgKiBAcGFyYW0gY29tcGFyaXNvblR5cGVcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZURhdGVXaXRoVG9kYXkoY29tcGFyaXNvblR5cGU6IERhdGVDb21wYXJpc29uVHlwZSk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICBjb25zdCBjb21wYXJlRGF0ZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnZGF0ZUNvbXBhcmlzb25Ub2RheSc7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb25kaXRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgW0RhdGVDb21wYXJpc29uVHlwZS5ncmVhdGhlclRoYW5dOiBzZWxlY3RlZERhdGUgPD0gY3VycmVudERhdGUsXHJcbiAgICAgICAgICAgICAgICBbRGF0ZUNvbXBhcmlzb25UeXBlLmxlc3NUaGFuXTogc2VsZWN0ZWREYXRlID49IGN1cnJlbnREYXRlXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uc1tjb21wYXJpc29uVHlwZV0pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IFttZXRob2ROYW1lXTogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyYSBkb2lzIGNhbXBvcyBkbyB0aXBvIERhdGUsIHZlcmlmaWNhbmRvIHNlIG8gY2FtcG8gQSDDqSBtYWlvciBxdWUgbyBjYW1wbyBCLiBTZSBBIGZvciBtYWlvciBxdWUgQiwgZW50w6NvXHJcbiAgICAgKiBvIGNhbXBvIEEgw6kgaW52YWxpZGFkby4gQ2FzbyBjb250csOhcmlvLCBvIGNhbXBvIEEgw6kgdmFsaWRhZG8uXHJcbiAgICAgKlxyXG4gICAgICogQXBsaXF1ZSBlc3NlIGNhbXBvIG5vIEZvcm1Hcm91cCwgcGFzc2FuZG8gb3Mgbm9tZXMgZG9zIGNhbXBvcyBxdWUgZGVzZWphIGNvbXBhcmFyLlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIHRoaXMubXlGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIE5PTUVfQ0FNUE9fZGF0ZUE6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIE5PTUVfQ0FNUE9fZGF0ZUI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgICAgICB9LCB7IHZhbGlkYXRvcjogQWdyb0Zvcm1WYWxpZGF0b3IuZGF0ZUNvbXBhcmlzb25WYWxpZGF0b3IoJ05PTUVfQ0FNUE9fZGF0ZUEnLCAnTk9NRV9DQU1QT19kYXRlQicpIH0pO1xyXG4gICAgICogQHBhcmFtIGNvbnRyb2xOYW1lQVxyXG4gICAgICogQHBhcmFtIGNvbnRyb2xOYW1lQlxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjb21wYXJlRGF0ZVdpdGhPdGhlckRhdGVGaWVsZChjb250cm9sTmFtZUE6IHN0cmluZywgY29udHJvbE5hbWVCOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgY29uc3QgY29tcGFyZURhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgY29uc3QgZGF0ZUEgPSBmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lQSk/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBkYXRlQiA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVCKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnY29tcGFyZURhdGVXaXRoT3RoZXJEYXRlRmllbGQnO1xyXG4gICAgICAgICAgICBpZiAoZGF0ZUEgJiYgZGF0ZUIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVBT2JqID0gbmV3IERhdGUoZGF0ZUEpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUJPYmogPSBuZXcgRGF0ZShkYXRlQik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZUFPYmogPCBkYXRlQk9iaikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVBKT8uc2V0RXJyb3JzKHsgW21ldGhvZE5hbWVdOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IFttZXRob2ROYW1lXTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lQSk/Lmhhc0Vycm9yKG1ldGhvZE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldChjb250cm9sTmFtZUEpPy5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY29tcGFyZURhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3IgcGFyYSBjaGVjYXIgc2UgbyBjYW1wbyDDqSB1bSBuw7ptZXJvIGRlIHRlbGVmb25lIGRlIGFjb3JkbyBjb20gdW1hIG3DoXNjYXJhIGluZm9ybWFkYS5cclxuICAgICAqXHJcbiAgICAgKiBAZXhhbXBsZVxyXG4gICAgICogdGhpcy5teUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAqICAgICBURUxFRk9ORV9GSUVMRDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQWdyb0Zvcm1WYWxpZGF0b3IucGhvbmVWYWxpZGF0b3IoJyg5OSkgOTk5OS05OTk5JyldXVxyXG4gICAgICogfSk7XHJcbiAgICAgKiBAcGFyYW0gbWFza1xyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBwaG9uZVZhbGlkYXRvcihtYXNrOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgY29uc3QgcGhvbmVDb250cm9sVmFsaWRhdGlvbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAncGhvbmVWYWxpZGF0b3InO1xyXG4gICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke21hc2sucmVwbGFjZSgvOS9nLCAnXFxcXGQnKS5yZXBsYWNlKC9cXCgvZywgJ1xcXFwoJykucmVwbGFjZSgvXFwpL2csICdcXFxcKScpLnJlcGxhY2UoLy0vZywgJ1xcXFwtJyl9JGApO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiAhcmVnZXgudGVzdChjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBbbWV0aG9kTmFtZV06IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbbWV0aG9kTmFtZV06IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gcGhvbmVDb250cm9sVmFsaWRhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBwYXJhIGNoZWNhciBzZSB1bSBjYW1wbyBkZSBuw7ptZXJvcyDDqSBtYWlvciBvdSBtZW5vciBxdWUgb3V0cm8gY2FtcG8uXHJcbiAgICAgKlxyXG4gICAgICogQXBsaXF1ZSBlc3NlIHZhbGlkYXRvciBubyBGb3JtR3JvdXAsIHBhc3NhbmRvIG9zIG5vbWVzIGRvcyBjYW1wb3MgcXVlIGRlc2VqYSBjb21wYXJhci5cclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiB0aGlzLm15Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICogICAgIE5VTUVST19BOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICogICAgIE5VTUVST19COiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgKiB9LCB7IHZhbGlkYXRvcjogQWdyb0Zvcm1WYWxpZGF0b3IuY29tcGFyZU51bWJlckZpZWxkcygnTlVNRVJPX0EnLCAnTlVNRVJPX0InLCBOdW1iZXJDb21wYXJpc29uVHlwZS5FUVVBTFMpIH0pO1xyXG4gICAgICpcclxuICAgICAqIE5lc3RlIGNhc28sIGEgdmVyaWZpY2HDp8OjbyBzZXLDoSBzZSBvIE5VTUVST19BIMOpIGlndWFsIGFvIE5VTUVSQl9CLlxyXG4gICAgICogQHBhcmFtIGNvbnRyb2xOYW1lQVxyXG4gICAgICogQHBhcmFtIGNvbnRyb2xOYW1lQlxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjb21wYXJlTnVtYmVyRmllbGRzKGNvbnRyb2xOYW1lQTogc3RyaW5nLCBjb250cm9sTmFtZUI6IHN0cmluZywgY29tcGFyaXNvbk1ldGhvZDogTnVtYmVyQ29tcGFyaXNvblR5cGUpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgY29uc3QgY29tcGFyZU51bWJlciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZUEpPy52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVCKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnY29tcGFyZU51bWJlckZpZWxkcyc7XHJcbiAgICAgICAgICAgIGlmIChudW1iZXJBICYmIG51bWJlckIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yVHlwZSA9IE51bWJlckNvbXBhcmlzb25UeXBlW2NvbXBhcmlzb25NZXRob2RdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JDb25kaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgW051bWJlckNvbXBhcmlzb25UeXBlLkVRVUFMU106IG51bWJlckEgIT09IG51bWJlckIsXHJcbiAgICAgICAgICAgICAgICAgICAgW051bWJlckNvbXBhcmlzb25UeXBlLkdSRUFURVJfVEhBTl06IG51bWJlckEgPD0gbnVtYmVyQixcclxuICAgICAgICAgICAgICAgICAgICBbTnVtYmVyQ29tcGFyaXNvblR5cGUuTEVTU19USEFOXTogbnVtYmVyQSA+PSBudW1iZXJCLFxyXG4gICAgICAgICAgICAgICAgICAgIFtOdW1iZXJDb21wYXJpc29uVHlwZS5HUkVBVEVSX1RIQU5fT1JfRVFVQUxdOiBudW1iZXJBIDwgbnVtYmVyQixcclxuICAgICAgICAgICAgICAgICAgICBbTnVtYmVyQ29tcGFyaXNvblR5cGUuTEVTU19USEFOX09SX0VRVUFMXTogbnVtYmVyQSA+IG51bWJlckIsXHJcbiAgICAgICAgICAgICAgICAgICAgW051bWJlckNvbXBhcmlzb25UeXBlLk5PVF9FUVVBTFNdOiBudW1iZXJBID09PSBudW1iZXJCXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlcnJvckNvbmRpdGlvbltjb21wYXJpc29uTWV0aG9kXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xBID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZUEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sQSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sQS5zZXRFcnJvcnMoeyBbbWV0aG9kTmFtZV06IGNvbXBhcmlzb25NZXRob2QgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IFttZXRob2ROYW1lXTogZXJyb3JUeXBlIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVBKT8uaGFzRXJyb3IobWV0aG9kTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sQSA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVBKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbEEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbEEuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjb21wYXJlTnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIHBhcmEgY2hlY2FyIHNlIHVtIHZhbG9yIGVzdMOhIGVudHJlIG9zIGRlbWFpcyB2YWxvcmVzIGRlIHRyw6pzIGZvcm1Db250cm9scy5cclxuICAgICAqXHJcbiAgICAgKiBBcGxpcXVlIGVzc2UgdmFsaWRhdG9yIG5vIEZvcm1Hcm91cCwgcGFzc2FuZG8gb3Mgbm9tZXMgZG9zIHRyw6pzIGZvcm1Db250cm9scyBxdWUgZGVzZWphIGNvbXBhcmFyLlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIHRoaXMubXlGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgKiAgICAgbWlub3JGb3JtQ29udHJvbDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAqICAgICB0YXJnZXRGb3JtQ29udHJvbDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAqICAgICBtYWpvckZvcm1Db250cm9sOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgKiB9LCB7IHZhbGlkYXRvcjogQWdyb0Zvcm1WYWxpZGF0b3IuY2hlY2tWYWx1ZUJldHdlZW4oJ21pbm9yRm9ybUNvbnRyb2wnLCAndGFyZ2V0Rm9ybUNvbnRyb2wnLCAnbWFqb3JGb3JtQ29udHJvbCcpIH0pO1xyXG4gICAgICpcclxuICAgICAqIE5lc3RlIGNhc28sIGEgdmVyaWZpY2HDp8OjbyBzZXLDoSBzZSBvIHRhcmdldEZvcm1Db250cm9sIGVzdMOhIGVudHJlIG8gbWlub3JGb3JtQ29udHJvbCBlIG8gbWFqb3JGb3JtQ29udHJvbC5cclxuICAgICAqIEBwYXJhbSBtaW5vckZvcm1Db250cm9sXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0Rm9ybUNvbnRyb2xcclxuICAgICAqIEBwYXJhbSBtYWpvckZvcm1Db250cm9sXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrVmFsdWVCZXR3ZWVuKG1pbm9yRm9ybUNvbnRyb2w6IHN0cmluZywgdGFyZ2V0Rm9ybUNvbnRyb2w6IHN0cmluZywgbWFqb3JGb3JtQ29udHJvbDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrVmFsdWUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVBID0gZm9ybUdyb3VwLmdldChtaW5vckZvcm1Db250cm9sKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQiA9IGZvcm1Hcm91cC5nZXQodGFyZ2V0Rm9ybUNvbnRyb2wpPy52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVDID0gZm9ybUdyb3VwLmdldChtYWpvckZvcm1Db250cm9sKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnY2hlY2tWYWx1ZUJldHdlZW4nO1xyXG4gICAgICAgICAgICBpZiAodmFsdWVBICYmIHZhbHVlQiAmJiB2YWx1ZUMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZUIgPCB2YWx1ZUEgfHwgdmFsdWVCID4gdmFsdWVDKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IGZvcm1Hcm91cC5nZXQodGFyZ2V0Rm9ybUNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRDb250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldENvbnRyb2wuc2V0RXJyb3JzKHsgW21ldGhvZE5hbWVdOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBbbWV0aG9kTmFtZV06IHRydWUgfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUdyb3VwLmdldCh0YXJnZXRGb3JtQ29udHJvbCk/Lmhhc0Vycm9yKG1ldGhvZE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IGZvcm1Hcm91cC5nZXQodGFyZ2V0Rm9ybUNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRDb250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldENvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjaGVja1ZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIHBhcmEgY2hlY2FyIHNlIG8gY2FtcG8gw6kgdW0gb2JqZXRvIGUgc2UgcG9zc3VpIHVtYSBwcm9wcmllZGFkZSBlc3BlY8OtZmljYS5cclxuICAgICAqXHJcbiAgICAgKiBAZXhhbXBsZVxyXG4gICAgICogdGhpcy5teUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAqICAgICBPQkpFVE9fRklFTEQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFncm9Gb3JtVmFsaWRhdG9yLm9iamVjdFByb3BlcnR5VmFsaWRhdG9yKCdwcm9wcmllZGFkZScpXV1cclxuICAgICAqIH0pO1xyXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZVxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBvYmplY3RQcm9wZXJ0eVZhbGlkYXRvcihwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICBjb25zdCBvYmplY3RQcm9wZXJ0eSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAnb2JqZWN0UHJvcGVydHknO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNPYmplY3QoY29udHJvbC52YWx1ZSkgJiYgT2JqZWN0VXRpbHMuY29udGFpbnNQcm9wZXJ0eShjb250cm9sLnZhbHVlLCBwcm9wZXJ0eU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgW21ldGhvZE5hbWVdOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4geyBbbWV0aG9kTmFtZV06IHRydWUgfTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBvYmplY3RQcm9wZXJ0eTtcclxuICAgIH1cclxuXHJcblxyXG59Il19
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1mb3JtLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiZm9ybS12YWxpZGF0b3IvYWdyby1mb3JtLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWhFLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUI7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUF3QjtRQUNqRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDbkM7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFHRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsY0FBa0M7UUFDakUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUF3QixFQUFpQyxFQUFFO1lBQzVFLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxNQUFN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SUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERhdGVDb21wYXJpc29uVHlwZSB9IGZyb20gJy4uL2VudW1zL2RhdGUtY29tcGFyaXNvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBBR1JPX1JFR0VYIH0gZnJvbSAnLi4vY29tbW9uL2Fncm8tcmVnZXguY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBOdW1iZXJDb21wYXJpc29uVHlwZSB9IGZyb20gJy4uL2VudW1zL251bWJlci1jb21wYXJpc29uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnLi4vY29tbW9uL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBZ3JvRm9ybVZhbGlkYXRvciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3IgcGFyYSBjaGVjYXIgc2UgbyBjYW1wbyDDqSB1bSBlLW1haWxcclxuICAgICAqXHJcbiAgICAgKiBAZXhhbXBsZVxyXG4gICAgICogdGhpcy5teUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAqICAgICBFTUFJTF9GSUVMRDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQWdyb0Zvcm1WYWxpZGF0b3IuZW1haWxWYWxpZGF0b3JdXVxyXG4gICAgICogfSk7XHJcbiAgICAgKiBAcGFyYW0gY29udHJvbFxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBlbWFpbFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgIUFHUk9fUkVHRVguaXNFbWFpbC50ZXN0KGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgZW1haWxWYWxpZGF0b3I6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGVtYWlsVmFsaWRhdG9yOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFwbGlxdWUgZXNzZSB2YWxpZGFkb3IgZW0gdW0gY2FtcG8gZG8gdGlwbyBEYXRlLCBwYXJhIHZlcmlmaWNhciBzZSBhIGRhdGEgc2VsZWNpb25hZGEgw6kgbWFpb3Igb3UgbWVub3IgcXVlIGEgZGF0YSBhdHVhbC5cclxuICAgICAqXHJcbiAgICAgKiBVdGlsaXplIG8gcGFyw6JtZXRybyBjb21wYXJpc29uVHlwZSBwYXJhIGRlZmluaXIgc2UgYSBkYXRhIHNlbGVjaW9uYWRhIGRldmUgc2VyIG1haW9yIG91IG1lbm9yIHF1ZSBhIGRhdGEgYXR1YWwuXHJcbiAgICAgKiBBIHZhbGlkYcOnw6NvIHNlcsOhIGF0cmF2w6lzIGRvIGVudW0gRGF0ZUNvbXBhcmlzb25UeXBlLlxyXG4gICAgICpcclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiB0aGlzLm15Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICogICAgIE5PTUVfQ0FNUE86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFncm9Gb3JtVmFsaWRhdG9yLmNvbXBhcmVEYXRlV2l0aFRvZGF5KERhdGVDb21wYXJpc29uVHlwZS5ncmVhdGhlclRoYW4pXV1cclxuICAgICAqIH0pO1xyXG4gICAgICogQHBhcmFtIGNvbXBhcmlzb25UeXBlXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhcmVEYXRlV2l0aFRvZGF5KGNvbXBhcmlzb25UeXBlOiBEYXRlQ29tcGFyaXNvblR5cGUpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgY29uc3QgY29tcGFyZURhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gJ2RhdGVDb21wYXJpc29uVG9kYXknO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZShjb250cm9sLnZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgIFtEYXRlQ29tcGFyaXNvblR5cGUuZ3JlYXRoZXJUaGFuXTogc2VsZWN0ZWREYXRlIDw9IGN1cnJlbnREYXRlLFxyXG4gICAgICAgICAgICAgICAgW0RhdGVDb21wYXJpc29uVHlwZS5sZXNzVGhhbl06IHNlbGVjdGVkRGF0ZSA+PSBjdXJyZW50RGF0ZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbnNbY29tcGFyaXNvblR5cGVdKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbbWV0aG9kTmFtZV06IHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjb21wYXJlRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXBhcmEgZG9pcyBjYW1wb3MgZG8gdGlwbyBEYXRlLCB2ZXJpZmljYW5kbyBzZSBvIGNhbXBvIEEgw6kgbWFpb3IgcXVlIG8gY2FtcG8gQi4gU2UgQSBmb3IgbWFpb3IgcXVlIEIsIGVudMOjb1xyXG4gICAgICogbyBjYW1wbyBBIMOpIGludmFsaWRhZG8uIENhc28gY29udHLDoXJpbywgbyBjYW1wbyBBIMOpIHZhbGlkYWRvLlxyXG4gICAgICpcclxuICAgICAqIEFwbGlxdWUgZXNzZSBjYW1wbyBubyBGb3JtR3JvdXAsIHBhc3NhbmRvIG9zIG5vbWVzIGRvcyBjYW1wb3MgcXVlIGRlc2VqYSBjb21wYXJhci5cclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiB0aGlzLm15Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBOT01FX0NBTVBPX2RhdGVBOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBOT01FX0NBTVBPX2RhdGVCOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgICAgfSwgeyB2YWxpZGF0b3I6IEFncm9Gb3JtVmFsaWRhdG9yLmRhdGVDb21wYXJpc29uVmFsaWRhdG9yKCdOT01FX0NBTVBPX2RhdGVBJywgJ05PTUVfQ0FNUE9fZGF0ZUInKSB9KTtcclxuICAgICAqIEBwYXJhbSBjb250cm9sTmFtZUFcclxuICAgICAqIEBwYXJhbSBjb250cm9sTmFtZUJcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZURhdGVXaXRoT3RoZXJEYXRlRmllbGQoY29udHJvbE5hbWVBOiBzdHJpbmcsIGNvbnRyb2xOYW1lQjogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXBhcmVEYXRlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGVBID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZUEpPy52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgZGF0ZUIgPSBmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lQik/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gJ2NvbXBhcmVEYXRlV2l0aE90aGVyRGF0ZUZpZWxkJztcclxuICAgICAgICAgICAgaWYgKGRhdGVBICYmIGRhdGVCKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlQU9iaiA9IG5ldyBEYXRlKGRhdGVBKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVCT2JqID0gbmV3IERhdGUoZGF0ZUIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGVBT2JqIDwgZGF0ZUJPYmopIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lQSk/LnNldEVycm9ycyh7IFttZXRob2ROYW1lXTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBbbWV0aG9kTmFtZV06IHRydWUgfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUdyb3VwLmdldChjb250cm9sTmFtZUEpPy5oYXNFcnJvcihtZXRob2ROYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVBKT8uc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIHBhcmEgY2hlY2FyIHNlIG8gY2FtcG8gw6kgdW0gbsO6bWVybyBkZSB0ZWxlZm9uZSBkZSBhY29yZG8gY29tIHVtYSBtw6FzY2FyYSBpbmZvcm1hZGEuXHJcbiAgICAgKlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIHRoaXMubXlGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgKiAgICAgVEVMRUZPTkVfRklFTEQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFncm9Gb3JtVmFsaWRhdG9yLnBob25lVmFsaWRhdG9yKCcoOTkpIDk5OTktOTk5OScpXV1cclxuICAgICAqIH0pO1xyXG4gICAgICogQHBhcmFtIG1hc2tcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcGhvbmVWYWxpZGF0b3IobWFzazogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGNvbnN0IHBob25lQ29udHJvbFZhbGlkYXRpb24gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gJ3Bob25lVmFsaWRhdG9yJztcclxuICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeJHttYXNrLnJlcGxhY2UoLzkvZywgJ1xcXFxkJykucmVwbGFjZSgvXFwoL2csICdcXFxcKCcpLnJlcGxhY2UoL1xcKS9nLCAnXFxcXCknKS5yZXBsYWNlKC8tL2csICdcXFxcLScpfSRgKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgIXJlZ2V4LnRlc3QoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgW21ldGhvZE5hbWVdOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW21ldGhvZE5hbWVdOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHBob25lQ29udHJvbFZhbGlkYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3IgcGFyYSBjaGVjYXIgc2UgdW0gY2FtcG8gZGUgbsO6bWVyb3Mgw6kgbWFpb3Igb3UgbWVub3IgcXVlIG91dHJvIGNhbXBvLlxyXG4gICAgICpcclxuICAgICAqIEFwbGlxdWUgZXNzZSB2YWxpZGF0b3Igbm8gRm9ybUdyb3VwLCBwYXNzYW5kbyBvcyBub21lcyBkb3MgY2FtcG9zIHF1ZSBkZXNlamEgY29tcGFyYXIuXHJcbiAgICAgKiBAZXhhbXBsZVxyXG4gICAgICogdGhpcy5teUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAqICAgICBOVU1FUk9fQTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAqICAgICBOVU1FUk9fQjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgICogfSwgeyB2YWxpZGF0b3I6IEFncm9Gb3JtVmFsaWRhdG9yLmNvbXBhcmVOdW1iZXJGaWVsZHMoJ05VTUVST19BJywgJ05VTUVST19CJywgTnVtYmVyQ29tcGFyaXNvblR5cGUuRVFVQUxTKSB9KTtcclxuICAgICAqXHJcbiAgICAgKiBOZXN0ZSBjYXNvLCBhIHZlcmlmaWNhw6fDo28gc2Vyw6Egc2UgbyBOVU1FUk9fQSDDqSBpZ3VhbCBhbyBOVU1FUkJfQi5cclxuICAgICAqIEBwYXJhbSBjb250cm9sTmFtZUFcclxuICAgICAqIEBwYXJhbSBjb250cm9sTmFtZUJcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZU51bWJlckZpZWxkcyhjb250cm9sTmFtZUE6IHN0cmluZywgY29udHJvbE5hbWVCOiBzdHJpbmcsIGNvbXBhcmlzb25NZXRob2Q6IE51bWJlckNvbXBhcmlzb25UeXBlKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXBhcmVOdW1iZXIgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQSA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVBKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bWJlckIgPSBmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lQik/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gJ2NvbXBhcmVOdW1iZXJGaWVsZHMnO1xyXG4gICAgICAgICAgICBpZiAobnVtYmVyQSAmJiBudW1iZXJCKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvclR5cGUgPSBOdW1iZXJDb21wYXJpc29uVHlwZVtjb21wYXJpc29uTWV0aG9kXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yQ29uZGl0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIFtOdW1iZXJDb21wYXJpc29uVHlwZS5FUVVBTFNdOiBudW1iZXJBICE9PSBudW1iZXJCLFxyXG4gICAgICAgICAgICAgICAgICAgIFtOdW1iZXJDb21wYXJpc29uVHlwZS5HUkVBVEVSX1RIQU5dOiBudW1iZXJBIDw9IG51bWJlckIsXHJcbiAgICAgICAgICAgICAgICAgICAgW051bWJlckNvbXBhcmlzb25UeXBlLkxFU1NfVEhBTl06IG51bWJlckEgPj0gbnVtYmVyQixcclxuICAgICAgICAgICAgICAgICAgICBbTnVtYmVyQ29tcGFyaXNvblR5cGUuR1JFQVRFUl9USEFOX09SX0VRVUFMXTogbnVtYmVyQSA8IG51bWJlckIsXHJcbiAgICAgICAgICAgICAgICAgICAgW051bWJlckNvbXBhcmlzb25UeXBlLkxFU1NfVEhBTl9PUl9FUVVBTF06IG51bWJlckEgPiBudW1iZXJCLFxyXG4gICAgICAgICAgICAgICAgICAgIFtOdW1iZXJDb21wYXJpc29uVHlwZS5OT1RfRVFVQUxTXTogbnVtYmVyQSA9PT0gbnVtYmVyQlxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JDb25kaXRpb25bY29tcGFyaXNvbk1ldGhvZF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sQSA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWVBKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbEEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbEEuc2V0RXJyb3JzKHsgW21ldGhvZE5hbWVdOiBjb21wYXJpc29uTWV0aG9kIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBbbWV0aG9kTmFtZV06IGVycm9yVHlwZSB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lQSk/Lmhhc0Vycm9yKG1ldGhvZE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbEEgPSBmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lQSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xBKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xBLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY29tcGFyZU51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBwYXJhIGNoZWNhciBzZSB1bSB2YWxvciBlc3TDoSBlbnRyZSBvcyBkZW1haXMgdmFsb3JlcyBkZSB0csOqcyBmb3JtQ29udHJvbHMuXHJcbiAgICAgKlxyXG4gICAgICogQXBsaXF1ZSBlc3NlIHZhbGlkYXRvciBubyBGb3JtR3JvdXAsIHBhc3NhbmRvIG9zIG5vbWVzIGRvcyB0csOqcyBmb3JtQ29udHJvbHMgcXVlIGRlc2VqYSBjb21wYXJhci5cclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiB0aGlzLm15Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICogICAgIG1pbm9yRm9ybUNvbnRyb2w6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgKiAgICAgdGFyZ2V0Rm9ybUNvbnRyb2w6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgKiAgICAgbWFqb3JGb3JtQ29udHJvbDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgICogfSwgeyB2YWxpZGF0b3I6IEFncm9Gb3JtVmFsaWRhdG9yLmNoZWNrVmFsdWVCZXR3ZWVuKCdtaW5vckZvcm1Db250cm9sJywgJ3RhcmdldEZvcm1Db250cm9sJywgJ21ham9yRm9ybUNvbnRyb2wnKSB9KTtcclxuICAgICAqXHJcbiAgICAgKiBOZXN0ZSBjYXNvLCBhIHZlcmlmaWNhw6fDo28gc2Vyw6Egc2UgbyB0YXJnZXRGb3JtQ29udHJvbCBlc3TDoSBlbnRyZSBvIG1pbm9yRm9ybUNvbnRyb2wgZSBvIG1ham9yRm9ybUNvbnRyb2wuXHJcbiAgICAgKiBAcGFyYW0gbWlub3JGb3JtQ29udHJvbFxyXG4gICAgICogQHBhcmFtIHRhcmdldEZvcm1Db250cm9sXHJcbiAgICAgKiBAcGFyYW0gbWFqb3JGb3JtQ29udHJvbFxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja1ZhbHVlQmV0d2VlbihtaW5vckZvcm1Db250cm9sOiBzdHJpbmcsIHRhcmdldEZvcm1Db250cm9sOiBzdHJpbmcsIG1ham9yRm9ybUNvbnRyb2w6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICBjb25zdCBjaGVja1ZhbHVlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQSA9IGZvcm1Hcm91cC5nZXQobWlub3JGb3JtQ29udHJvbCk/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZUIgPSBmb3JtR3JvdXAuZ2V0KHRhcmdldEZvcm1Db250cm9sKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQyA9IGZvcm1Hcm91cC5nZXQobWFqb3JGb3JtQ29udHJvbCk/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gJ2NoZWNrVmFsdWVCZXR3ZWVuJztcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGFyZU51bWJlcnMgPSBbdmFsdWVBLCB2YWx1ZUIsIHZhbHVlQ10uZXZlcnkodiA9PiB2ICE9PSBudWxsICYmIHYgIT09IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXJlTnVtYmVycykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlQiA8IHZhbHVlQSB8fCB2YWx1ZUIgPiB2YWx1ZUMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gZm9ybUdyb3VwLmdldCh0YXJnZXRGb3JtQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldENvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5zZXRFcnJvcnMoeyBbbWV0aG9kTmFtZV06IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IFttZXRob2ROYW1lXTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRDb250cm9sID0gZm9ybUdyb3VwLmdldCh0YXJnZXRGb3JtQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldENvbnRyb2w/Lmhhc0Vycm9yKG1ldGhvZE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHsgLi4udGFyZ2V0Q29udHJvbC5lcnJvcnMgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVycm9yc1ttZXRob2ROYW1lXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29udHJvbC5zZXRFcnJvcnMoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPyBlcnJvcnMgOiBudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY2hlY2tWYWx1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3IgcGFyYSBjaGVjYXIgc2UgbyBjYW1wbyDDqSB1bSBvYmpldG8gZSBzZSBwb3NzdWkgdW1hIHByb3ByaWVkYWRlIGVzcGVjw61maWNhLlxyXG4gICAgICpcclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiB0aGlzLm15Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICogICAgIE9CSkVUT19GSUVMRDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQWdyb0Zvcm1WYWxpZGF0b3Iub2JqZWN0UHJvcGVydHlWYWxpZGF0b3IoJ3Byb3ByaWVkYWRlJyldXVxyXG4gICAgICogfSk7XHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG9iamVjdFByb3BlcnR5VmFsaWRhdG9yKHByb3BlcnR5TmFtZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGNvbnN0IG9iamVjdFByb3BlcnR5ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9ICdvYmplY3RQcm9wZXJ0eSc7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc09iamVjdChjb250cm9sLnZhbHVlKSAmJiBPYmplY3RVdGlscy5jb250YWluc1Byb3BlcnR5KGNvbnRyb2wudmFsdWUsIHByb3BlcnR5TmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBbbWV0aG9kTmFtZV06IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IFttZXRob2ROYW1lXTogdHJ1ZSB9O1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdFByb3BlcnR5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhIHNlIG8gY2FtcG8gw6kgdW0gQ1BGIChDYWRhc3RybyBkZSBQZXNzb2EgRsOtc2ljYSkgdsOhbGlkby5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBDUEZWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIGNvbnN0IGNwZlZhbCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNwZiA9IChjb250cm9sLnZhbHVlIHx8ICcnKS5yZXBsYWNlKC9bXlxcZF0vZywgJycpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFjcGYpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBOw6NvIHZhbGlkYSBjYW1wbyB2YXppbywgdXNlIFZhbGlkYXRvcnMucmVxdWlyZWQganVudG8gc2UgcXVpc2VyIG9icmlnYXRvcmllZGFkZVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY3BmLmxlbmd0aCAhPT0gMTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNwZlZhbGlkYXRvcjogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBWZXJpZmljYSBzZSB0b2RvcyBvcyBkw61naXRvcyBzw6NvIGlndWFpcyAoZXguOiAxMTExMTExMTExMSlcclxuICAgICAgICAgICAgaWYgKC9eKFxcZClcXDF7MTB9JC8udGVzdChjcGYpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjcGZWYWxpZGF0b3I6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gVmFsaWRhw6fDo28gZG9zIGTDrWdpdG9zIHZlcmlmaWNhZG9yZXNcclxuICAgICAgICAgICAgY29uc3QgY2FsY0NoZWNrRGlnaXQgPSAoY3BmU2xpY2U6IHN0cmluZywgZmFjdG9yOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRpZ2l0IG9mIGNwZlNsaWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gcGFyc2VJbnQoZGlnaXQsIDEwKSAqIGZhY3Rvci0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVtYWluZGVyID0gdG90YWwgJSAxMTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZW1haW5kZXIgPCAyID8gMCA6IDExIC0gcmVtYWluZGVyO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZGlnaXQxID0gY2FsY0NoZWNrRGlnaXQoY3BmLnN1YnN0cmluZygwLCA5KSwgMTApO1xyXG4gICAgICAgICAgICBjb25zdCBkaWdpdDIgPSBjYWxjQ2hlY2tEaWdpdChjcGYuc3Vic3RyaW5nKDAsIDkpICsgZGlnaXQxLCAxMSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gZGlnaXQxID09PSBwYXJzZUludChjcGYuY2hhckF0KDkpLCAxMCkgJiZcclxuICAgICAgICAgICAgICAgIGRpZ2l0MiA9PT0gcGFyc2VJbnQoY3BmLmNoYXJBdCgxMCksIDEwKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgY3BmVmFsaWRhdG9yOiB0cnVlIH07XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY3BmVmFsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yIGRlIENOUEogKENhZGFzdHJvIE5hY2lvbmFsIGRhIFBlc3NvYSBKdXLDrWRpY2EpLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIENOUEpWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU/LnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCAhPT0gMTQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpWYWxpZGF0b3I6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gVmVyaWZpY2EgQ05QSnMgY29tIHRvZG9zIG9zIGTDrWdpdG9zIGlndWFpcyAoaW52w6FsaWRvcylcclxuICAgICAgICAgICAgaWYgKC9eKFxcZClcXDF7MTN9JC8udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpWYWxpZGF0b3I6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVDaGVja0RpZ2l0ID0gKGNucGo6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpOiBudW1iZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2VpZ2h0cyA9IGxlbmd0aCA9PT0gMTJcclxuICAgICAgICAgICAgICAgICAgICA/IFs1LCA0LCAzLCAyLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyXVxyXG4gICAgICAgICAgICAgICAgICAgIDogWzYsIDUsIDQsIDMsIDIsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDJdO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1bSA9IGNucGpcclxuICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgbGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnJylcclxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhY2MsIGRpZ2l0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjICsgcGFyc2VJbnQoZGlnaXQsIDEwKSAqIHdlaWdodHNbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIDApO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbmRlciA9IHN1bSAlIDExO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbWFpbmRlciA8IDIgPyAwIDogMTEgLSByZW1haW5kZXI7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjb25zdCBmaXJzdENoZWNrRGlnaXQgPSB2YWxpZGF0ZUNoZWNrRGlnaXQodmFsdWUsIDEyKTtcclxuICAgICAgICAgICAgY29uc3Qgc2Vjb25kQ2hlY2tEaWdpdCA9IHZhbGlkYXRlQ2hlY2tEaWdpdCh2YWx1ZSwgMTMpO1xyXG5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZmlyc3RDaGVja0RpZ2l0ICE9PSBwYXJzZUludCh2YWx1ZS5jaGFyQXQoMTIpLCAxMCkgfHxcclxuICAgICAgICAgICAgICAgIHNlY29uZENoZWNrRGlnaXQgIT09IHBhcnNlSW50KHZhbHVlLmNoYXJBdCgxMyksIDEwKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpWYWxpZGF0b3I6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIHbDoWxpZG9cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYSBzZSBhIHBsYWNhIGRvIHZlw61jdWxvIMOpIHbDoWxpZGEuXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgbGljZW5zZVBsYXRlVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAoY29udHJvbC52YWx1ZSB8fCAnJykudG9VcHBlckNhc2UoKS50cmltKCkucmVwbGFjZSgvLS9nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gQ2FtcG8gdmF6aW8gbsOjbyDDqSByZXNwb25zYWJpbGlkYWRlIGRlc3NlIHZhbGlkYWRvclxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gQUdST19SRUdFWC5pc01lcmNvc3VsTGljZW5zZVBsYXRlLnRlc3QodmFsdWUpIHx8XHJcbiAgICAgICAgICAgICAgICBBR1JPX1JFR0VYLmlzT2xkTGljZW5zZVBsYXRlLnRlc3QodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyBsaWNlbnNlUGxhdGVJbnZhbGlkOiB0cnVlIH07XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcblxyXG5cclxufSJdfQ==
|
|
@@ -139,5 +139,15 @@ export var AGRO_REGEX = {
|
|
|
139
139
|
* Validação se todos os dígitos são iguais
|
|
140
140
|
*/
|
|
141
141
|
isAllDigitsEqual: /^(.)\1+$/,
|
|
142
|
+
/**
|
|
143
|
+
* Validação de Placa de Veículo do Mercosul
|
|
144
|
+
* Formato: ABC1D23
|
|
145
|
+
*/
|
|
146
|
+
isMercosulLicensePlate: /^[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}$/,
|
|
147
|
+
/**
|
|
148
|
+
* Validação de Placa de Veículo Antiga
|
|
149
|
+
* Formato: AAA-0000
|
|
150
|
+
*/
|
|
151
|
+
isOldLicensePlate: /^[A-Z]{3}[0-9]{4}$/
|
|
142
152
|
};
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1yZWdleC5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcmVnZXguY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sVUFBVSxHQUFHO0lBQ3RCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLDRCQUE0QjtJQUVyQzs7T0FFRztJQUNILGVBQWUsRUFBRSxZQUFZO0lBRTdCOztPQUVHO0lBQ0gsZUFBZSxFQUFFLGFBQWE7SUFFOUI7O09BRUc7SUFDSCxlQUFlLEVBQUUsT0FBTztJQUV4Qjs7T0FFRztJQUNILE9BQU8sRUFBRSx1QkFBdUI7SUFFaEM7O09BRUc7SUFDSCxRQUFRLEVBQUUsV0FBVztJQUVyQjs7T0FFRztJQUNILE1BQU0sRUFBRSw0RkFBNEY7SUFFcEc7O09BRUc7SUFDSCxRQUFRLEVBQUUsU0FBUztJQUVuQjs7T0FFRztJQUNILFNBQVMsRUFBRSxhQUFhO0lBRXhCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLHNDQUFzQztJQUV0RDs7T0FFRztJQUNILGFBQWEsRUFBRSx3QkFBd0I7SUFFdkM7O09BRUc7SUFDSCxNQUFNLEVBQUUscUJBQXFCO0lBRTdCOztPQUVHO0lBQ0gsTUFBTSxFQUFFLDRCQUE0QjtJQUVwQzs7T0FFRztJQUNILFVBQVUsRUFBRSw4Q0FBOEM7SUFFMUQ7O09BRUc7SUFDSCxLQUFLLEVBQUUsd0RBQXdEO0lBRS9EOztPQUVHO0lBQ0gsV0FBVyxFQUFFLGdCQUFnQjtJQUU3Qjs7T0FFRztJQUNILFFBQVEsRUFBRSx3QkFBd0I7SUFFbEM7O09BRUc7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7T0FFRztJQUNILGNBQWMsRUFBRSxnQkFBZ0I7SUFFaEM7O09BRUc7SUFDSCxNQUFNLEVBQUUsY0FBYztJQUV0Qjs7T0FFRztJQUNILFlBQVksRUFBRSwyQkFBMkI7SUFFekM7O09BRUc7SUFDSCxhQUFhLEVBQUUsZ0JBQWdCO0lBRS9COztPQUVHO0lBQ0gsVUFBVSxFQUFFLG1CQUFtQjtJQUUvQjs7T0FFRztJQUNILFlBQVksRUFBRSx5Q0FBeUM7SUFFdkQ7O09BRUc7SUFDSCxTQUFTLEVBQUUsMkNBQTJDO0lBRXREOztPQUVHO0lBQ0gsb0JBQW9CLEVBQUUsdUJBQXVCO0lBRTdDOztPQUVHO0lBQ0gsZ0JBQWdCLEVBQUUsc0VBQXNFO0lBRXhGOztPQUVHO0lBQ0gsWUFBWSxFQUFFLGFBQWE7SUFFM0I7O09BRUc7SUFDSCxZQUFZLEVBQUUsbUNBQW1DO0lBRWpEOztPQUVHO0lBQ0gsVUFBVSxFQUFFLHFDQUFxQztJQUVqRDs7T0FFRztJQUNILFdBQVcsRUFBRSxxREFBcUQ7SUFFbEU7O09BRUc7SUFDSCxZQUFZLEVBQUUsMkNBQTJDO0lBRXpEOztPQUVHO0lBQ0gsc0JBQXNCLEVBQUUsMEJBQTBCO0lBRWxEOztPQUVHO0lBQ0gsS0FBSyxFQUFFLHFCQUFxQjtJQUU1Qjs7T0FFRztJQUNILGdCQUFnQixFQUFFLFVBQVU7SUFFNUI7OztPQUdHO0lBQ0gsc0JBQXNCLEVBQUUsb0NBQW9DO0lBRzVEOzs7T0FHRztJQUNILGlCQUFpQixFQUFFLG9CQUFvQjtDQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFHUk9fUkVHRVggPSB7XHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEUtbWFpbFxyXG4gICAgICovXHJcbiAgICBpc0VtYWlsOiAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm9zIEludGVpcm9zIFBvc2l0aXZvc1xyXG4gICAgICovXHJcbiAgICBwb3NpdGl2ZUludGVnZXI6IC9eWzEtOV1cXGQqJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvcyBEZWNpbWFpcyBQb3NpdGl2b3NcclxuICAgICAqL1xyXG4gICAgcG9zaXRpdmVEZWNpbWFsOiAvXlxcZCpcXC4/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgc3RyaW5nIHF1ZSBjb25zaXN0ZSBhcGVuYXMgZW0gZXNwYcOnb3MgZW0gYnJhbmNvIG91IGVzdMOhIHZhemlhLlxyXG4gICAgICovXHJcbiAgICBvbmx5QmxhbmtTcGFjZXM6IC9eXFxzKiQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQ0VQIChDw7NkaWdvIFBvc3RhbClcclxuICAgICAqL1xyXG4gICAgemlwQ29kZTogL15cXGR7OH0kfF5cXGR7NX0tXFxkezN9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTdHJpbmcgKHF1YWxxdWVyIGNhcmFjdGVyZSlcclxuICAgICAqL1xyXG4gICAgaXNTdHJpbmc6IC9eW1xcc1xcU10qJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVVUlEXHJcbiAgICAgKi9cclxuICAgIGlzVVVJRDogL15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS01XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBOw7ptZXJvXHJcbiAgICAgKi9cclxuICAgIGlzTnVtYmVyOiAvXi0/XFxkKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBEZWNpbWFsXHJcbiAgICAgKi9cclxuICAgIGlzRGVjaW1hbDogL15cXGQqXFwuP1xcZCskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFBsYWNhIGRlIFZlw61jdWxvXHJcbiAgICAgKi9cclxuICAgIGlzTGljZW5zZVBsYXRlOiAvXltBLVphLXowLTldezEsN30tP1tBLVphLXowLTldezEsN30kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgVGVsZWZvbmVcclxuICAgICAqL1xyXG4gICAgaXNQaG9uZU51bWJlcjogL15cXCs/XFxkezEsNH0tP1xcZHs2LDExfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRGF0YSAoRm9ybWF0byBZWVlZLU1NLUREKVxyXG4gICAgICovXHJcbiAgICBpc0RhdGU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgKEZvcm1hdG8gSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzVGltZTogL14oMFxcZHwxXFxkfDJbMC0zXSk6WzAtNV1cXGQkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIERhdGEgZSBIb3JhIChGb3JtYXRvIFlZWVktTU0tREQgSEg6bW0pXHJcbiAgICAgKi9cclxuICAgIGlzRGF0ZVRpbWU6IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0gKDBcXGR8MVxcZHwyWzAtM10pOlswLTVdXFxkJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBVUkxcclxuICAgICAqL1xyXG4gICAgaXNVUkw6IC9eKGh0dHB8aHR0cHMpOlxcL1xcLyhbXFx3LV0rXFwuKStbXFx3LV0rKFxcL1tcXHctIC4vPyUmPV0qKT8kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhOdW1iZXI6IC9eWzAtOWEtZkEtRl0rJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBCYXNlNjRcclxuICAgICAqL1xyXG4gICAgaXNCYXNlNjQ6IC9eW2EtekEtWjAtOSsvXSs9ezAsMn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gKDMgYSAyMCBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lOiAvXlxcd3szLDIwfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgQWxmYW51bcOpcmljb1xyXG4gICAgICovXHJcbiAgICBpc0FscGhhbnVtZXJpYzogL15bYS16QS1aMC05XSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFNsdWcgKGxldHJhcyBtaW7DunNjdWxhcywgbsO6bWVyb3MgZSB0cmHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1NsdWc6IC9eW2EtejAtOS1dKyQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTsO6bWVybyBkZSBDYXJ0w6NvIGRlIENyw6lkaXRvXHJcbiAgICAgKi9cclxuICAgIGlzQ3JlZGl0Q2FyZDogL15cXGR7NH0tXFxkezR9LVxcZHs0fS1cXGR7NH0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gSGV4YWRlY2ltYWxcclxuICAgICAqL1xyXG4gICAgaXNIZXhhZGVjaW1hbDogL15bMC05YS1mQS1GXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE1vZWRhXHJcbiAgICAgKi9cclxuICAgIGlzQ3VycmVuY3k6IC9eXFxkKyhcXC5cXGR7MSwyfSk/JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQb3JjZW50YWdlbVxyXG4gICAgICovXHJcbiAgICBpc1BlcmNlbnRhZ2U6IC9eKDEwMChcXC4wezEsMn0pP3xbMS05XT9cXGQoXFwuXFxkezEsMn0pPykkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIFRhZyBIVE1MIFNpbXBsZXNcclxuICAgICAqL1xyXG4gICAgaXNIVE1MVGFnOiAvXjwoW2Etel0rKShbXjxdKykqKD86PiguKik8XFwvXFwxPnxcXHMrXFwvPikkLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE5vbWUgZGUgVXN1w6FyaW8gY29tIEVzcGHDp29zICgzIGEgMjAgY2FyYWN0ZXJlcyBhbGZhbnVtw6lyaWNvcyBlIGVzcGHDp29zKVxyXG4gICAgICovXHJcbiAgICBpc1VzZXJuYW1lV2l0aFNwYWNlczogL15bYS16QS1aMC05XyBdezMsMjB9JC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBTZW5oYSBGb3J0ZSAobcOtbmltbyA4IGNhcmFjdGVyZXMsIHVtYSBsZXRyYSBtaW7DunNjdWxhLCB1bWEgbGV0cmEgbWFpw7pzY3VsYSwgdW0gbsO6bWVybyBlIHVtIGNhcmFjdGVyZSBlc3BlY2lhbClcclxuICAgICAqL1xyXG4gICAgaXNTdHJvbmdQYXNzd29yZDogL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbQCQhJSo/Jl0pW0EtWmEtelxcZEAkISUqPyZdezgsfSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgU3RyaW5nIEFsZmFiw6l0aWNhXHJcbiAgICAgKi9cclxuICAgIGlzQWxwaGFiZXRpYzogL15bYS16QS1aXSskLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIEhvcmEgbm8gRm9ybWF0byBkZSAxMiBIb3Jhc1xyXG4gICAgICovXHJcbiAgICBpc1RpbWUxMkhvdXI6IC9eKDA/WzEtOV18MVswLTJdKTpcXGR7Mn0gKEFNfFBNKSQvaSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIExhdGl0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTGF0aXR1ZGU6IC9eWy0rXT8oWzEtOF0/XFxkKFxcLlxcZCspP3w5MChcXC4wKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgTG9uZ2l0dWRlXHJcbiAgICAgKi9cclxuICAgIGlzTG9uZ2l0dWRlOiAvXlstK10/KDE4MChcXC4wKyk/fCgoMVswLTddXFxkKXwoWzEtOV0/XFxkKSkoXFwuXFxkKyk/KSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgRW5kZXJlw6dvIE1BQ1xyXG4gICAgICovXHJcbiAgICBpc01BQ0FkZHJlc3M6IC9eKFswLTlBLUZhLWZdezJ9WzotXSl7NX0oWzAtOUEtRmEtZl17Mn0pJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBEYXRhIGRlIEV4cGlyYcOnw6NvIGRlIENhcnTDo28gZGUgQ3LDqWRpdG9cclxuICAgICAqL1xyXG4gICAgaXNDcmVkaXRDYXJkRXhwaXJhdGlvbjogL14oMFsxLTldfDFbMC0yXSlcXC9cXGR7Mn0kLyxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gZGUgU2VndXJvIFNvY2lhbCAoU1NOKVxyXG4gICAgICovXHJcbiAgICBpc1NTTjogL15cXGR7M30tXFxkezJ9LVxcZHs0fSQvLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gc2UgdG9kb3Mgb3MgZMOtZ2l0b3Mgc8OjbyBpZ3VhaXNcclxuICAgICAqL1xyXG4gICAgaXNBbGxEaWdpdHNFcXVhbDogL14oLilcXDErJC8sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGHDp8OjbyBkZSBQbGFjYSBkZSBWZcOtY3VsbyBkbyBNZXJjb3N1bFxyXG4gICAgICogRm9ybWF0bzogQUJDMUQyM1xyXG4gICAgICovXHJcbiAgICBpc01lcmNvc3VsTGljZW5zZVBsYXRlOiAvXltBLVpdezN9WzAtOV17MX1bQS1aXXsxfVswLTldezJ9JC8sXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhw6fDo28gZGUgUGxhY2EgZGUgVmXDrWN1bG8gQW50aWdhXHJcbiAgICAgKiBGb3JtYXRvOiBBQUEtMDAwMFxyXG4gICAgICovXHJcbiAgICBpc09sZExpY2Vuc2VQbGF0ZTogL15bQS1aXXszfVswLTldezR9JC9cclxuICB9O1xyXG4iXX0=
|